diff --git a/v3_ci4/vendor/autoload.php b/v3_ci4/vendor/autoload.php deleted file mode 100644 index 5f06d1d..0000000 --- a/v3_ci4/vendor/autoload.php +++ /dev/null @@ -1,22 +0,0 @@ -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if ( - (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) - || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) - ) { - return include("phpvfscomposer://" . __DIR__ . '/..'.'/friendsofphp/php-cs-fixer/php-cs-fixer'); - } -} - -return include __DIR__ . '/..'.'/friendsofphp/php-cs-fixer/php-cs-fixer'; diff --git a/v3_ci4/vendor/bin/php-cs-fixer.bat b/v3_ci4/vendor/bin/php-cs-fixer.bat deleted file mode 100644 index 83db5d5..0000000 --- a/v3_ci4/vendor/bin/php-cs-fixer.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/php-cs-fixer -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/v3_ci4/vendor/bin/php-parse b/v3_ci4/vendor/bin/php-parse deleted file mode 100644 index 61566e6..0000000 --- a/v3_ci4/vendor/bin/php-parse +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env php -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if ( - (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) - || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) - ) { - return include("phpvfscomposer://" . __DIR__ . '/..'.'/nikic/php-parser/bin/php-parse'); - } -} - -return include __DIR__ . '/..'.'/nikic/php-parser/bin/php-parse'; diff --git a/v3_ci4/vendor/bin/php-parse.bat b/v3_ci4/vendor/bin/php-parse.bat deleted file mode 100644 index 2c5096d..0000000 --- a/v3_ci4/vendor/bin/php-parse.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/php-parse -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/v3_ci4/vendor/bin/phpunit b/v3_ci4/vendor/bin/phpunit deleted file mode 100644 index b5b530a..0000000 --- a/v3_ci4/vendor/bin/phpunit +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env php -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = 'phpvfscomposer://'.$this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - $data = str_replace('__DIR__', var_export(dirname($this->realpath), true), $data); - $data = str_replace('__FILE__', var_export($this->realpath, true), $data); - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if ( - (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) - || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) - ) { - return include("phpvfscomposer://" . __DIR__ . '/..'.'/phpunit/phpunit/phpunit'); - } -} - -return include __DIR__ . '/..'.'/phpunit/phpunit/phpunit'; diff --git a/v3_ci4/vendor/bin/phpunit.bat b/v3_ci4/vendor/bin/phpunit.bat deleted file mode 100644 index 2a070cd..0000000 --- a/v3_ci4/vendor/bin/phpunit.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/phpunit -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/v3_ci4/vendor/clue/ndjson-react/.github/FUNDING.yml b/v3_ci4/vendor/clue/ndjson-react/.github/FUNDING.yml deleted file mode 100644 index 9c09fb8..0000000 --- a/v3_ci4/vendor/clue/ndjson-react/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -github: clue -custom: https://clue.engineering/support diff --git a/v3_ci4/vendor/clue/ndjson-react/CHANGELOG.md b/v3_ci4/vendor/clue/ndjson-react/CHANGELOG.md deleted file mode 100644 index bc4faf6..0000000 --- a/v3_ci4/vendor/clue/ndjson-react/CHANGELOG.md +++ /dev/null @@ -1,75 +0,0 @@ -# Changelog - -## 1.3.0 (2022-12-23) - -* Feature: Add support for PHP 8.1 and PHP 8.2. - (#31 by @clue and #30 by @SimonFring) - -* Feature: Check type of incoming `data` before trying to decode NDJSON. - (#29 by @SimonFrings) - -* Improve documentation and examples and update to new [default loop](https://reactphp.org/event-loop/#loop). - (#26 by @clue, #27 by @SimonFrings and #25 by @PaulRotmann) - -* Improve test suite, report failed assertions and ensure 100% code coverage. - (#32 and #33 by @clue and #28 by @SimonFrings) - -## 1.2.0 (2020-12-09) - -* Improve test suite and add `.gitattributes` to exclude dev files from exports. - Add PHP 8 support, update to PHPUnit 9 and simplify test setup. - (#18 by @clue and #19, #22 and #23 by @SimonFrings) - -## 1.1.0 (2020-02-04) - -* Feature: Improve error reporting and add parsing error message to Exception and - ignore `JSON_THROW_ON_ERROR` option (available as of PHP 7.3). - (#14 by @clue) - -* Feature: Add bechmarking script and import all global function references. - (#16 by @clue) - -* Improve documentation and add NDJSON format description and - add support / sponsorship info. - (#12 and #17 by @clue) - -* Improve test suite to run tests on PHP 7.4 and simplify test matrix and - apply minor code style adjustments to make phpstan happy. - (#13 and #15 by @clue) - -## 1.0.0 (2018-05-17) - -* First stable release, now following SemVer - -* Improve documentation and usage examples - -> Contains no other changes, so it's actually fully compatible with the v0.1.2 release. - -## 0.1.2 (2018-05-11) - -* Feature: Limit buffer size to 64 KiB by default. - (#10 by @clue) - -* Feature: Forward compatiblity with EventLoop v0.5 and upcoming v1.0. - (#8 by @clue) - -* Fix: Return bool `false` if encoding fails due to invalid value to pause source. - (#9 by @clue) - -* Improve test suite by supporting PHPUnit v6 and test against legacy PHP 5.3 through PHP 7.2. - (#7 by @clue) - -* Update project homepage. - (#11 by @clue) - -## 0.1.1 (2017-05-22) - -* Feature: Forward compatibility with Stream v0.7, v0.6, v0.5 and upcoming v1.0 (while keeping BC) - (#6 by @thklein) - -* Improved test suite by adding PHPUnit to `require-dev` - (#5 by @thklein) - -## 0.1.0 (2016-11-24) - -* First tagged release diff --git a/v3_ci4/vendor/clue/ndjson-react/LICENSE b/v3_ci4/vendor/clue/ndjson-react/LICENSE deleted file mode 100644 index 7baae8e..0000000 --- a/v3_ci4/vendor/clue/ndjson-react/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Christian Lück - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/clue/ndjson-react/README.md b/v3_ci4/vendor/clue/ndjson-react/README.md deleted file mode 100644 index 0ca4eab..0000000 --- a/v3_ci4/vendor/clue/ndjson-react/README.md +++ /dev/null @@ -1,365 +0,0 @@ -# clue/reactphp-ndjson - -[![CI status](https://github.com/clue/reactphp-ndjson/actions/workflows/ci.yml/badge.svg)](https://github.com/clue/reactphp-ndjson/actions) -[![installs on Packagist](https://img.shields.io/packagist/dt/clue/ndjson-react?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/clue/ndjson-react) -[![code coverage](https://img.shields.io/badge/code%20coverage-100%25-success)](#tests) - -Streaming newline-delimited JSON ([NDJSON](http://ndjson.org/)) parser and encoder for [ReactPHP](https://reactphp.org/). - -[NDJSON](http://ndjson.org/) can be used to store multiple JSON records in a -file to store any kind of (uniform) structured data, such as a list of user -objects or log entries. It uses a simple newline character between each -individual record and as such can be both used for efficient persistence and -simple append-style operations. This also allows it to be used in a streaming -context, such as a simple inter-process communication (IPC) protocol or for a -remote procedure call (RPC) mechanism. This library provides a simple -streaming API to process very large NDJSON files with thousands or even millions -of rows efficiently without having to load the whole file into memory at once. - -* **Standard interfaces** - - Allows easy integration with existing higher-level components by implementing - ReactPHP's standard streaming interfaces. -* **Lightweight, SOLID design** - - Provides a thin abstraction that is [*just good enough*](https://en.wikipedia.org/wiki/Principle_of_good_enough) - and does not get in your way. - Builds on top of well-tested components and well-established concepts instead of reinventing the wheel. -* **Good test coverage** - - Comes with an [automated tests suite](#tests) and is regularly tested in the *real world*. - -**Table of contents** - -* [Support us](#support-us) -* [NDJSON format](#ndjson-format) -* [Usage](#usage) - * [Decoder](#decoder) - * [Encoder](#encoder) -* [Install](#install) -* [Tests](#tests) -* [License](#license) -* [More](#more) - -## Support us - -We invest a lot of time developing, maintaining, and updating our awesome -open-source projects. You can help us sustain this high-quality of our work by -[becoming a sponsor on GitHub](https://github.com/sponsors/clue). Sponsors get -numerous benefits in return, see our [sponsoring page](https://github.com/sponsors/clue) -for details. - -Let's take these projects to the next level together! 🚀 - -## NDJSON format - -NDJSON ("Newline-Delimited JSON" or sometimes referred to as "JSON lines") is a -very simple text-based format for storing a large number of records, such as a -list of user records or log entries. - -```JSON -{"name":"Alice","age":30,"comment":"Yes, I like cheese"} -{"name":"Bob","age":50,"comment":"Hello\nWorld!"} -``` - -If you understand JSON and you're now looking at this newline-delimited JSON for -the first time, you should already know everything you need to know to -understand NDJSON: As the name implies, this format essentially consists of -individual lines where each individual line is any valid JSON text and each line -is delimited with a newline character. - -This example uses a list of user objects where each user has some arbitrary -properties. This can easily be adjusted for many different use cases, such as -storing for example products instead of users, assigning additional properties -or having a significantly larger number of records. You can edit NDJSON files in -any text editor or use them in a streaming context where individual records -should be processed. Unlike normal JSON files, adding a new log entry to this -NDJSON file does not require modification of this file's structure (note there's -no "outer array" to be modified). This makes it a perfect fit for a streaming -context, for line-oriented CLI tools (such as `grep` and others) or for a logging -context where you want to append records at a later time. Additionally, this -also allows it to be used in a streaming context, such as a simple inter-process -communication (IPC) protocol or for a remote procedure call (RPC) mechanism. - -The newline character at the end of each line allows for some really simple -*framing* (detecting individual records). While each individual line is valid -JSON, the complete file as a whole is technically no longer valid JSON, because -it contains multiple JSON texts. This implies that for example calling PHP's -`json_decode()` on this complete input would fail because it would try to parse -multiple records at once. Likewise, using "pretty printing" JSON -(`JSON_PRETTY_PRINT`) is not allowed because each JSON text is limited to exactly -one line. On the other hand, values containing newline characters (such as the -`comment` property in the above example) do not cause issues because each newline -within a JSON string will be represented by a `\n` instead. - -One common alternative to NDJSON would be Comma-Separated Values (CSV). -If you want to process CSV files, you may want to take a look at the related -project [clue/reactphp-csv](https://github.com/clue/reactphp-csv) instead: - -``` -name,age,comment -Alice,30,"Yes, I like cheese" -Bob,50,"Hello -World!" -``` - -CSV may look slightly simpler, but this simplicity comes at a price. CSV is -limited to untyped, two-dimensional data, so there's no standard way of storing -any nested structures or to differentiate a boolean value from a string or -integer. Field names are sometimes used, sometimes they're not -(application-dependant). Inconsistent handling for fields that contain -separators such as `,` or spaces or line breaks (see the `comment` field above) -introduce additional complexity and its text encoding is usually undefined, -Unicode (or UTF-8) is unlikely to be supported and CSV files often use ISO -8859-1 encoding or some variant (again application-dependant). - -While NDJSON helps avoiding many of CSV's shortcomings, it is still a -(relatively) young format while CSV files have been used in production systems -for decades. This means that if you want to interface with an existing system, -you may have to rely on the format that's already supported. If you're building -a new system, using NDJSON is an excellent choice as it provides a flexible way -to process individual records using a common text-based format that can include -any kind of structured data. - -## Usage - -### Decoder - -The `Decoder` (parser) class can be used to make sure you only get back -complete, valid JSON elements when reading from a stream. -It wraps a given -[`ReadableStreamInterface`](https://github.com/reactphp/stream#readablestreaminterface) -and exposes its data through the same interface, but emits the JSON elements -as parsed values instead of just chunks of strings: - -``` -{"name":"test","active":true} -{"name":"hello w\u00f6rld","active":true} -``` - -```php -$stdin = new React\Stream\ReadableResourceStream(STDIN); - -$ndjson = new Clue\React\NDJson\Decoder($stdin); - -$ndjson->on('data', function ($data) { - // $data is a parsed element from the JSON stream - // line 1: $data = (object)array('name' => 'test', 'active' => true); - // line 2: $data = (object)array('name' => 'hello wörld', 'active' => true); - var_dump($data); -}); -``` - -ReactPHP's streams emit chunks of data strings and make no assumption about their lengths. -These chunks do not necessarily represent complete JSON elements, as an -element may be broken up into multiple chunks. -This class reassembles these elements by buffering incomplete ones. - -The `Decoder` supports the same optional parameters as the underlying -[`json_decode()`](https://www.php.net/manual/en/function.json-decode.php) function. -This means that, by default, JSON objects will be emitted as a `stdClass`. -This behavior can be controlled through the optional constructor parameters: - -```php -$ndjson = new Clue\React\NDJson\Decoder($stdin, true); - -$ndjson->on('data', function ($data) { - // JSON objects will be emitted as assoc arrays now -}); -``` - -Additionally, the `Decoder` limits the maximum buffer size (maximum line -length) to avoid buffer overflows due to malformed user input. Usually, there -should be no need to change this value, unless you know you're dealing with some -unreasonably long lines. It accepts an additional argument if you want to change -this from the default of 64 KiB: - -```php -$ndjson = new Clue\React\NDJson\Decoder($stdin, false, 512, 0, 64 * 1024); -``` - -If the underlying stream emits an `error` event or the plain stream contains -any data that does not represent a valid NDJson stream, -it will emit an `error` event and then `close` the input stream: - -```php -$ndjson->on('error', function (Exception $error) { - // an error occured, stream will close next -}); -``` - -If the underlying stream emits an `end` event, it will flush any incomplete -data from the buffer, thus either possibly emitting a final `data` event -followed by an `end` event on success or an `error` event for -incomplete/invalid JSON data as above: - -```php -$ndjson->on('end', function () { - // stream successfully ended, stream will close next -}); -``` - -If either the underlying stream or the `Decoder` is closed, it will forward -the `close` event: - -```php -$ndjson->on('close', function () { - // stream closed - // possibly after an "end" event or due to an "error" event -}); -``` - -The `close(): void` method can be used to explicitly close the `Decoder` and -its underlying stream: - -```php -$ndjson->close(); -``` - -The `pipe(WritableStreamInterface $dest, array $options = array(): WritableStreamInterface` -method can be used to forward all data to the given destination stream. -Please note that the `Decoder` emits decoded/parsed data events, while many -(most?) writable streams expect only data chunks: - -```php -$ndjson->pipe($logger); -``` - -For more details, see ReactPHP's -[`ReadableStreamInterface`](https://github.com/reactphp/stream#readablestreaminterface). - -### Encoder - -The `Encoder` (serializer) class can be used to make sure anything you write to -a stream ends up as valid JSON elements in the resulting NDJSON stream. -It wraps a given -[`WritableStreamInterface`](https://github.com/reactphp/stream#writablestreaminterface) -and accepts its data through the same interface, but handles any data as complete -JSON elements instead of just chunks of strings: - -```php -$stdout = new React\Stream\WritableResourceStream(STDOUT); - -$ndjson = new Clue\React\NDJson\Encoder($stdout); - -$ndjson->write(array('name' => 'test', 'active' => true)); -$ndjson->write(array('name' => 'hello wörld', 'active' => true)); -``` -``` -{"name":"test","active":true} -{"name":"hello w\u00f6rld","active":true} -``` - -The `Encoder` supports the same parameters as the underlying -[`json_encode()`](https://www.php.net/manual/en/function.json-encode.php) function. -This means that, by default, Unicode characters will be escaped in the output. -This behavior can be controlled through the optional constructor parameters: - -```php -$ndjson = new Clue\React\NDJson\Encoder($stdout, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - -$ndjson->write('hello wörld'); -``` -``` -"hello wörld" -``` - -Note that trying to pass the `JSON_PRETTY_PRINT` option will yield an -`InvalidArgumentException` because it is not compatible with NDJSON. - -If the underlying stream emits an `error` event or the given data contains -any data that can not be represented as a valid NDJSON stream, -it will emit an `error` event and then `close` the input stream: - -```php -$ndjson->on('error', function (Exception $error) { - // an error occured, stream will close next -}); -``` - -If either the underlying stream or the `Encoder` is closed, it will forward -the `close` event: - -```php -$ndjson->on('close', function () { - // stream closed - // possibly after an "end" event or due to an "error" event -}); -``` - -The `end(mixed $data = null): void` method can be used to optionally emit -any final data and then soft-close the `Encoder` and its underlying stream: - -```php -$ndjson->end(); -``` - -The `close(): void` method can be used to explicitly close the `Encoder` and -its underlying stream: - -```php -$ndjson->close(); -``` - -For more details, see ReactPHP's -[`WritableStreamInterface`](https://github.com/reactphp/stream#writablestreaminterface). - -## Install - -The recommended way to install this library is [through Composer](https://getcomposer.org/). -[New to Composer?](https://getcomposer.org/doc/00-intro.md) - -This project follows [SemVer](https://semver.org/). -This will install the latest supported version: - -```bash -composer require clue/ndjson-react:^1.3 -``` - -See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades. - -This project aims to run on any platform and thus does not require any PHP -extensions and supports running on legacy PHP 5.3 through current PHP 8+ and -HHVM. -It's *highly recommended to use the latest supported PHP version* for this project. - -## Tests - -To run the test suite, you first need to clone this repo and then install all -dependencies [through Composer](https://getcomposer.org/): - -```bash -composer install -``` - -To run the test suite, go to the project root and run: - -```bash -vendor/bin/phpunit -``` - -## License - -This project is released under the permissive [MIT license](LICENSE). - -> Did you know that I offer custom development services and issuing invoices for - sponsorships of releases and for contributions? Contact me (@clue) for details. - -## More - -* If you want to learn more about processing streams of data, refer to the documentation of - the underlying [react/stream](https://github.com/reactphp/stream) component. - -* If you want to process compressed NDJSON files (`.ndjson.gz` file extension), - you may want to use [clue/reactphp-zlib](https://github.com/clue/reactphp-zlib) - on the compressed input stream before passing the decompressed stream to the NDJSON decoder. - -* If you want to create compressed NDJSON files (`.ndjson.gz` file extension), - you may want to use [clue/reactphp-zlib](https://github.com/clue/reactphp-zlib) - on the resulting NDJSON encoder output stream before passing the compressed - stream to the file output stream. - -* If you want to concurrently process the records from your NDJSON stream, - you may want to use [clue/reactphp-flux](https://github.com/clue/reactphp-flux) - to concurrently process many (but not too many) records at once. - -* If you want to process structured data in the more common text-based format, - you may want to use [clue/reactphp-csv](https://github.com/clue/reactphp-csv) - to process Comma-Separated-Values (CSV) files (`.csv` file extension). diff --git a/v3_ci4/vendor/clue/ndjson-react/composer.json b/v3_ci4/vendor/clue/ndjson-react/composer.json deleted file mode 100644 index 01a4b85..0000000 --- a/v3_ci4/vendor/clue/ndjson-react/composer.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "clue/ndjson-react", - "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", - "keywords": ["NDJSON", "newline", "JSON", "jsonlines", "streaming", "ReactPHP"], - "homepage": "https://github.com/clue/reactphp-ndjson", - "license": "MIT", - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering" - } - ], - "require": { - "php": ">=5.3", - "react/stream": "^1.2" - }, - "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", - "react/event-loop": "^1.2" - }, - "autoload": { - "psr-4": { - "Clue\\React\\NDJson\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Clue\\Tests\\React\\NDJson\\": "tests/" - } - } -} diff --git a/v3_ci4/vendor/clue/ndjson-react/src/Decoder.php b/v3_ci4/vendor/clue/ndjson-react/src/Decoder.php deleted file mode 100644 index 876ff2b..0000000 --- a/v3_ci4/vendor/clue/ndjson-react/src/Decoder.php +++ /dev/null @@ -1,166 +0,0 @@ -input = $input; - - if (!$input->isReadable()) { - $this->close(); - return; - } - - $this->assoc = $assoc; - $this->depth = $depth; - $this->options = $options; - $this->maxlength = $maxlength; - - $this->input->on('data', array($this, 'handleData')); - $this->input->on('end', array($this, 'handleEnd')); - $this->input->on('error', array($this, 'handleError')); - $this->input->on('close', array($this, 'close')); - } - - public function isReadable() - { - return !$this->closed; - } - - public function close() - { - if ($this->closed) { - return; - } - - $this->closed = true; - $this->buffer = ''; - - $this->input->close(); - - $this->emit('close'); - $this->removeAllListeners(); - } - - public function pause() - { - $this->input->pause(); - } - - public function resume() - { - $this->input->resume(); - } - - public function pipe(WritableStreamInterface $dest, array $options = array()) - { - Util::pipe($this, $dest, $options); - - return $dest; - } - - /** @internal */ - public function handleData($data) - { - if (!\is_string($data)) { - $this->handleError(new \UnexpectedValueException('Expected stream to emit string, but got ' . \gettype($data))); - return; - } - - $this->buffer .= $data; - - // keep parsing while a newline has been found - while (($newline = \strpos($this->buffer, "\n")) !== false && $newline <= $this->maxlength) { - // read data up until newline and remove from buffer - $data = (string)\substr($this->buffer, 0, $newline); - $this->buffer = (string)\substr($this->buffer, $newline + 1); - - // decode data with options given in ctor - // @codeCoverageIgnoreStart - if ($this->options === 0) { - $data = \json_decode($data, $this->assoc, $this->depth); - } else { - assert(\PHP_VERSION_ID >= 50400); - $data = \json_decode($data, $this->assoc, $this->depth, $this->options); - } - // @codeCoverageIgnoreEnd - - // abort stream if decoding failed - if ($data === null && \json_last_error() !== \JSON_ERROR_NONE) { - // @codeCoverageIgnoreStart - if (\PHP_VERSION_ID > 50500) { - $errstr = \json_last_error_msg(); - } elseif (\json_last_error() === \JSON_ERROR_SYNTAX) { - $errstr = 'Syntax error'; - } else { - $errstr = 'Unknown error'; - } - // @codeCoverageIgnoreEnd - return $this->handleError(new \RuntimeException('Unable to decode JSON: ' . $errstr, \json_last_error())); - } - - $this->emit('data', array($data)); - } - - if (isset($this->buffer[$this->maxlength])) { - $this->handleError(new \OverflowException('Buffer size exceeded')); - } - } - - /** @internal */ - public function handleEnd() - { - if ($this->buffer !== '') { - $this->handleData("\n"); - } - - if (!$this->closed) { - $this->emit('end'); - $this->close(); - } - } - - /** @internal */ - public function handleError(\Exception $error) - { - $this->emit('error', array($error)); - $this->close(); - } -} diff --git a/v3_ci4/vendor/clue/ndjson-react/src/Encoder.php b/v3_ci4/vendor/clue/ndjson-react/src/Encoder.php deleted file mode 100644 index 30d5c31..0000000 --- a/v3_ci4/vendor/clue/ndjson-react/src/Encoder.php +++ /dev/null @@ -1,144 +0,0 @@ -output = $output; - - if (!$output->isWritable()) { - $this->close(); - return; - } - - $this->options = $options; - $this->depth = $depth; - - $this->output->on('drain', array($this, 'handleDrain')); - $this->output->on('error', array($this, 'handleError')); - $this->output->on('close', array($this, 'close')); - } - - public function write($data) - { - if ($this->closed) { - return false; - } - - // we have to handle PHP warnings for legacy PHP < 5.5 - // certain values (such as INF etc.) emit a warning, but still encode successfully - // @codeCoverageIgnoreStart - if (\PHP_VERSION_ID < 50500) { - $errstr = null; - \set_error_handler(function ($_, $error) use (&$errstr) { - $errstr = $error; - }); - - // encode data with options given in ctor (depth not supported) - $data = \json_encode($data, $this->options); - - // always check error code and match missing error messages - \restore_error_handler(); - $errno = \json_last_error(); - if (\defined('JSON_ERROR_UTF8') && $errno === \JSON_ERROR_UTF8) { - // const JSON_ERROR_UTF8 added in PHP 5.3.3, but no error message assigned in legacy PHP < 5.5 - // this overrides PHP 5.3.14 only: https://3v4l.org/IGP8Z#v5314 - $errstr = 'Malformed UTF-8 characters, possibly incorrectly encoded'; - } elseif ($errno !== \JSON_ERROR_NONE && $errstr === null) { - // error number present, but no error message applicable - $errstr = 'Unknown error'; - } - - // abort stream if encoding fails - if ($errno !== \JSON_ERROR_NONE || $errstr !== null) { - $this->handleError(new \RuntimeException('Unable to encode JSON: ' . $errstr, $errno)); - return false; - } - } else { - // encode data with options given in ctor - $data = \json_encode($data, $this->options, $this->depth); - - // abort stream if encoding fails - if ($data === false && \json_last_error() !== \JSON_ERROR_NONE) { - $this->handleError(new \RuntimeException('Unable to encode JSON: ' . \json_last_error_msg(), \json_last_error())); - return false; - } - } - // @codeCoverageIgnoreEnd - - return $this->output->write($data . "\n"); - } - - public function end($data = null) - { - if ($data !== null) { - $this->write($data); - } - - $this->output->end(); - } - - public function isWritable() - { - return !$this->closed; - } - - public function close() - { - if ($this->closed) { - return; - } - - $this->closed = true; - $this->output->close(); - - $this->emit('close'); - $this->removeAllListeners(); - } - - /** @internal */ - public function handleDrain() - { - $this->emit('drain'); - } - - /** @internal */ - public function handleError(\Exception $error) - { - $this->emit('error', array($error)); - $this->close(); - } -} diff --git a/v3_ci4/vendor/codeigniter/coding-standard/CHANGELOG.md b/v3_ci4/vendor/codeigniter/coding-standard/CHANGELOG.md deleted file mode 100644 index 88fe515..0000000 --- a/v3_ci4/vendor/codeigniter/coding-standard/CHANGELOG.md +++ /dev/null @@ -1,251 +0,0 @@ -# Changelog - -All notable changes to this library will be documented in this file. - -This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v1.9.2](https://github.com/CodeIgniter/coding-standard/compare/v1.9.1...v1.9.2) - 2026-04-12 - -- Bump to php-cs-fixer v3.95 -- Security harden the workflows - -## [v1.9.1](https://github.com/CodeIgniter/coding-standard/compare/v1.9.0...v1.9.1) - 2026-02-17 - -- Set `other` option of `phpdoc_line_span` to `null` for now - -## [v1.9.0](https://github.com/CodeIgniter/coding-standard/compare/v1.8.9...v1.9.0) - 2026-02-17 - -- Add new fixers of php-cs-fixer v3.93 -- Enable new options of `phpdoc_line_span` -- Rename configs -- Bump to PHP 8.2 -- Cleanup workflows - -## [v1.8.9](https://github.com/CodeIgniter/coding-standard/compare/v1.8.8...v1.8.9) - 2025-12-12 - -- Bump dependencies - -## [v1.8.8](https://github.com/CodeIgniter/coding-standard/compare/v1.8.7...v1.8.8) - 2025-09-27 - -- Add but disable`phpdoc_tag_no_named_arguments` -- Add `modifier_keywords` fixer -- Add `@const` to `phpdoc_no_alias_tag` - -## [v1.8.7](https://github.com/CodeIgniter/coding-standard/compare/v1.8.6...v1.8.7) - 2025-07-18 - -- Enable `no_useless_printf` fixer - -## [v1.8.6](https://github.com/CodeIgniter/coding-standard/compare/v1.8.5...v1.8.6) - 2025-07-05 - -- Bump to php-cs-fixer v3.76 -- Test on PHP 8.4 - -## [v1.8.5](https://github.com/CodeIgniter/coding-standard/compare/v1.8.4...v1.8.5) - 2025-05-02 - -- Enable `import_symbols` option in `fully_qualified_strict_types` -- Fix `staticMethod.internalClass` error - -## [v1.8.4](https://github.com/CodeIgniter/coding-standard/compare/v1.8.3...v1.8.4) - 2025-02-23 - -- Update badges -- Enable `php_unit_data_provider_method_order` fixer -- Bump php-cs-fixer to v3.70 -- Enable `modernize_stripos` option in `modernize_strpos` fixer - -## [v1.8.3](https://github.com/CodeIgniter/coding-standard/compare/v1.8.2...v1.8.3) - 2025-01-13 - -- Bump to php-cs-fixer v3.67 and cs-config v3.25 -- Add `@phpstan-ignore` to ignored tags of `comment_to_phpdoc` -- Add `general_attribute_remove` fixer -- Enable `get_class_to_class_keyword` -- Add more elements to `trailing_comma_in_multiline` - -## [v1.8.2](https://github.com/CodeIgniter/coding-standard/compare/v1.8.1...v1.8.2) - 2024-11-20 - -- Add `case` to ordered_class_elements order -- Bump to phpstan 2.0 - -## [v1.8.1](https://github.com/CodeIgniter/coding-standard/compare/v1.8.0...v1.8.1) - 2024-08-05 - -- Add `keep_annotations` option for `php_unit_attributes` -- Add `php_unit_assert_new_names` fixer -- Bump dependencies - -## [v1.8.0](https://github.com/CodeIgniter/coding-standard/compare/v1.7.16...v1.8.0) - 2024-06-16 - -- Enable rules for PHP 8.1 (#20) - -## [v1.7.16](https://github.com/CodeIgniter/coding-standard/compare/v1.7.15...v1.7.16) - 2024-05-18 - -- Disable `php_unit_attributes` for now -- Fix cs-config to v3.18 for now -- Disable `ordered_attributes` for PHP <8.0 - -## [v1.7.15](https://github.com/CodeIgniter/coding-standard/compare/v1.7.14...v1.7.15) - 2024-03-24 - -- Remove deprecated option of `nullable_type_declaration_for_default_null_value` - -## [v1.7.14](https://github.com/CodeIgniter/coding-standard/compare/v1.7.13...v1.7.14) - 2024-02-25 - -- Bump php-cs-fixer to v3.49 -- Enable `string_implicit_backslashes` fixer -- Add/remove property-read and property-write -- Enable `phpdoc_list_type` -- Bump to php-cs-fixer v3.50 -- Enable `allow_hidden_params` option -- also align `@phpstan-type` and `@phpstan-var` -- Enable `phpdoc_array_type` - -## [v1.7.13](https://github.com/CodeIgniter/coding-standard/compare/v1.7.12...v1.7.13) - 2024-01-27 - -- Update GHA workflows -- Bump to php-cs-fixer v3.47 -- Disable all new rules in v3.47 -- Apply new options to `phpdoc_align` fixer -- Bump actions/cache from 3 to 4 (#17) - -## [v1.7.12](https://github.com/CodeIgniter/coding-standard/compare/v1.7.11...v1.7.12) - 2023-12-29 - -- Bump php-cs-fixer to v3.43 -- Enable other options of `fully_qualified_strict_types` -- Disable `class_keyword` -- Disable option for `statement_indentation` -- Use default for option of `unary_operator_spaces` - -## [v1.7.11](https://github.com/CodeIgniter/coding-standard/compare/v1.7.10...v1.7.11) - 2023-10-13 - -- Bump to php-cs-fixer v3.35 - -## [v1.7.10](https://github.com/CodeIgniter/coding-standard/compare/v1.7.9...v1.7.10) - 2023-10-01 - -- Bump to php-cs-fixer v3.34 -- Bump to php-cs-fixer v3.30 -- Fix tag name in release - -## [v1.7.9](https://github.com/CodeIgniter/coding-standard/compare/v1.7.8...v1.7.9) - 2023-09-18 - -- Update release.yml -- Add `long_to_shorthand_operator` (#13) -- Bump actions/checkout from 3 to 4 (#12) - -## [v1.7.8](https://github.com/CodeIgniter/coding-standard/compare/v1.7.7...v1.7.8) - 2023-08-30 - -- Add `case_sensitive` option to order fixers - -## [v1.7.7](https://github.com/CodeIgniter/coding-standard/compare/v1.7.6...v1.7.7) - 2023-08-15 - -- Specify force option for `php_unit_data_provider_static` fixer - -## [v1.7.6](https://github.com/CodeIgniter/coding-standard/compare/v1.7.5...v1.7.6) - 2023-08-15 - -- Enable 'php_unit_data_provider_static' -- Add new fixers in php-cs-fixer v3.23 -- Add `yield_from_array_to_yields` -- Enable `php_unit_data_provider_name` -- Use all available checked tokens for `no_extra_blank_lines` -- Configure `php_unit_data_provider_return_type` -- Remove parallel.timeout in phpstan.neon.dist - -## [v1.7.5](https://github.com/CodeIgniter/coding-standard/compare/v1.7.4...v1.7.5) - 2023-07-15 - -- Configure new fixers in php-cs-fixer v3.20 - -## [v1.7.4](https://github.com/CodeIgniter/coding-standard/compare/v1.7.3...v1.7.4) - 2023-06-19 - -- Bump php-cs-fixer to v3.18 -- fix: ruleset deprecated on `v3.18` (#10) -- Add case_sensitive option to ordered_class_elements -- Add missing rules - -## [v1.7.3](https://github.com/CodeIgniter/coding-standard/compare/v1.7.2...v1.7.3) - 2023-05-05 - -- Replace `single_space_after_construct` with `single_space_around_construct` -- Remove deprecated `braces` rules -- Bump php-cs-fixer to v3.16 - -## [v1.7.2](https://github.com/CodeIgniter/coding-standard/compare/v1.7.1...v1.7.2) - 2023-03-05 - -- Bump php-cs-fixer to v3.14 - -## [v1.7.1](https://github.com/CodeIgniter/coding-standard/compare/v1.7.0...v1.7.1) - 2022-12-22 - -- Fix php-cs-fixer version to 3.13.0 - -## [v1.7.0](https://github.com/CodeIgniter/coding-standard/compare/v1.6.2...v1.7.0) - 2022-11-01 - -- Bump php-cs-fixer to v3.13 -- Add 'case_sensitive' option to 'general_phpdoc_annotation_remove' -- Add 'closure_fn_spacing' option to 'function_declaration' - -## [v1.6.2](https://github.com/CodeIgniter/coding-standard/compare/v1.6.1...v1.6.2) - 2022-10-30 - -- Grouped `runTestsInSeparateProcess`, `runInSeparateProcess`, `preserveGlobalState` together - -## [v1.6.1](https://github.com/CodeIgniter/coding-standard/compare/v1.6.0...v1.6.1) - 2022-10-20 - -- Changed `@internal` description of class CodeIgniter4 to avoid warnings in phpstorm - -## [v1.6.0](https://github.com/CodeIgniter/coding-standard/compare/v1.5.0...v1.6.0) - 2022-10-15 - -- Bump php-cs-fixer version to v3.12 minimum -- Enable `no_useless_concat_operator` -- Update action workflows - -## [v1.5.0](https://github.com/CodeIgniter/coding-standard/compare/v1.4.0...v1.5.0) - 2022-09-13 - -- Enable `ensure_single_space` option of `whitespace_after_comma_in_array` -- Use the `space_multiple_catch` option of `types_spaces` -- Fix multi-lines -- Add `group_to_single_imports` option to `single_import_per_statement` -- chore: fix editorconfig (#4) -- docs: add CONTRIBUTING.md (#3) -- Enable `date_time_create_from_format_call` -- Add options to `new_with_braces` -- Add `order` option to `phpdoc_order` -- Add the `trailing_comma_single_line` option to `function_declaration` -- Enable `curly_braces_position` -- Enable `single_line_comment_spacing` -- Enable `no_trailing_comma_in_singleline` -- Normalize composer.json -- Add "static analysis" Composer keyword (#2) -- Add `inline_constructor_arguments` option to `class_definition` -- Enable `statement_indentation` -- Enable `no_useless_nullsafe_operator` -- Enable `no_multiple_statements_per_line` -- Enable `control_structure_braces` -- Enable `blank_line_between_import_groups` -- Remove deprecated fixers -- Configure `groups` option in `phpdoc_separation` rule -- Bump php-cs-fixer version - -## [v1.4.0](https://github.com/CodeIgniter/coding-standard/compare/v1.3.0...v1.4.0) - 2022-02-09 - -- Permit use of latest php-cs-fixer v3.6.0 - -## [v1.3.0](https://github.com/CodeIgniter/coding-standard/compare/v1.2.0...v1.3.0) - 2022-01-15 - -- Fix GHA workflows -- Bump versions - - PHP 7.4 minimum - - friendsofphp/php-cs-fixer v3.4.0 - - phpstan/phpstan v1.0 minimum -- Enable `ordered_class_elements` rule -- Enable `global_namespace_import` rule (#1) -- Use `GITHUB_TOKEN` so that secrets can be passed to PRs - -## [v1.2.0](https://github.com/CodeIgniter/coding-standard/compare/v1.1.0...v1.2.0) - 2021-10-18 - -- Bump `friendsofphp/php-cs-fixer` to v3.2 minimum -- Change behavior of `class_attributes_separation` rule -- Add support for new fixers added in php-cs-fixer v3.2.0 -- Enable `no_alternative_syntax` rule - -## [v1.1.0](https://github.com/CodeIgniter/coding-standard/compare/v1.0.0...v1.1.0) - 2021-08-31 - -- Bump to `friendsofphp/php-cs-fixer` v3.1.0 -- Fix release script -- Bump to `nexusphp/cs-config` v3.3.0 - -## [v1.0.0](https://github.com/CodeIgniter/coding-standard/releases/tag/v1.0.0) - 2021-08-29 - -Initial release. diff --git a/v3_ci4/vendor/codeigniter/coding-standard/CONTRIBUTING.md b/v3_ci4/vendor/codeigniter/coding-standard/CONTRIBUTING.md deleted file mode 100644 index 36bbe53..0000000 --- a/v3_ci4/vendor/codeigniter/coding-standard/CONTRIBUTING.md +++ /dev/null @@ -1,10 +0,0 @@ -# Contributing to CodeIgniter Coding Standard - -CodeIgniter Coding Standard is a community driven project and accepts contributions of -code and documentation from the community. - -If you'd like to contribute, please read the [Contributing to CodeIgniter](https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/README.md) -guide in the [main repository](https://github.com/codeigniter4/CodeIgniter4). - -If you are going to contribute to this repository, please report bugs or send PRs -to this repository instead of the main repository. diff --git a/v3_ci4/vendor/codeigniter/coding-standard/LICENSE b/v3_ci4/vendor/codeigniter/coding-standard/LICENSE deleted file mode 100644 index b19eae2..0000000 --- a/v3_ci4/vendor/codeigniter/coding-standard/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 CodeIgniter Foundation and John Paul E. Balandan, CPA - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/v3_ci4/vendor/codeigniter/coding-standard/README.md b/v3_ci4/vendor/codeigniter/coding-standard/README.md deleted file mode 100644 index 5c0c2fc..0000000 --- a/v3_ci4/vendor/codeigniter/coding-standard/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# CodeIgniter Coding Standard - -[![Unit Tests](https://github.com/CodeIgniter/coding-standard/actions/workflows/test-phpunit.yml/badge.svg)](https://github.com/CodeIgniter/coding-standard/actions/workflows/test-phpunit.yml) -[![Coding Standards](https://github.com/CodeIgniter/coding-standard/actions/workflows/test-coding-standards.yml/badge.svg)](https://github.com/CodeIgniter/coding-standard/actions/workflows/test-coding-standards.yml) -[![PHPStan Static Analysis](https://github.com/CodeIgniter/coding-standard/actions/workflows/test-phpstan.yml/badge.svg)](https://github.com/CodeIgniter/coding-standard/actions/workflows/test-phpstan.yml) -[![PHPStan level](https://img.shields.io/badge/PHPStan-max%20level-brightgreen)](phpstan.neon.dist) -[![Coverage Status](https://coveralls.io/repos/github/CodeIgniter/coding-standard/badge.svg?branch=develop)](https://coveralls.io/github/CodeIgniter/coding-standard?branch=develop) -[![Latest Stable Version](http://poser.pugx.org/codeigniter/coding-standard/v)](//packagist.org/packages/codeigniter/coding-standard) -[![License](https://img.shields.io/github/license/codeigniter/coding-standard)](LICENSE) -[![Total Downloads](http://poser.pugx.org/codeigniter/coding-standard/downloads)](//packagist.org/packages/codeigniter/coding-standard) - -This library holds the official coding standards of CodeIgniter based -on [PHP CS Fixer][1] and powered by [Nexus CS Config][2]. - -## Installation - -You can add this library as a local, per-project dependency to your project -using [Composer](https://getcomposer.org/): - - composer require codeigniter/coding-standard - -If you only need this library during development, for instance to run your project's test suite, -then you should add it as a development-time dependency: - - composer require --dev codeigniter/coding-standard - -## Setup - -To start, let us create a `.php-cs-fixer.dist.php` file at the root of your project. - -```php -forProjects(); - -``` - -This minimal setup will return a default instance of `PhpCsFixer\Config` containing all rules applicable -for the CodeIgniter organization. - -Then, in your terminal, run the following command: - -```console -$ vendor/bin/php-cs-fixer fix --verbose -``` - -## Adding License Headers - -The default setup will not configure a license header in files. License headers can be especially useful -for library authors to assert copyright. To add license headers in your PHP files, you can simply provide -your name and name of library. Optionally, you can also provide your email and starting license year. - -```diff - forProjects(); -+return Factory::create(new CodeIgniter4())->forLibrary( -+ 'CodeIgniter 4 framework', -+ 'CodeIgniter Foundation', -+ 'admin@codeigniter.com', -+ 2021, -+); - -``` - -## Providing Overriding Rules and Options - -The list of enabled rules can be found in the [`CodeIgniter\CodingStandard\CodeIgniter4`][3] class. If you -feel the rule is not applicable to you or you want to modify it, you can do so by providing an array of -overriding rules to the second parameter of `Factory::create()`. - -Similarly, you can further modify the `PhpCsFixer\Config` instance returned by using the available options. -All available options are fully supported by [Nexus CS Config][2] and abstracted by simply providing an -array of key-value pairs in the third parameter of `Factory::create()`. - -```diff - forProjects(); -+return Factory::create(new CodeIgniter4(), [], [ -+ 'usingCache' => false, -+])->forProjects(); - -``` - -You can check out this library's own [`.php-cs-fixer.dist.php`][4] for inspiration on how it is done. -For more detailed documentation on all available options, you can check [here][2]. - -## Contributing - -All forms of contributions are welcome! - -Since the rules here will be propagated and used within the CodeIgniter organization, all proposed rules -and modifications to existing rules should have a proof-of-concept (POC) PR sent first to -the [CodeIgniter4][5] repository with possible changes to the code styles applied there. Once accepted -there, you can send in a PR here to apply those rules. - -## License - -This work is open-sourced under the MIT license. - -[1]: https://github.com/FriendsOfPHP/PHP-CS-Fixer -[2]: https://github.com/NexusPHP/cs-config -[3]: src/CodeIgniter4.php -[4]: .php-cs-fixer.dist.php -[5]: https://github.com/codeigniter4/CodeIgniter4 diff --git a/v3_ci4/vendor/codeigniter/coding-standard/composer.json b/v3_ci4/vendor/codeigniter/coding-standard/composer.json deleted file mode 100644 index d016f98..0000000 --- a/v3_ci4/vendor/codeigniter/coding-standard/composer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "codeigniter/coding-standard", - "description": "Official Coding Standards for CodeIgniter based on PHP CS Fixer", - "license": "MIT", - "type": "library", - "keywords": [ - "phpcs", - "static analysis" - ], - "authors": [ - { - "name": "John Paul E. Balandan, CPA", - "email": "paulbalandan@gmail.com" - } - ], - "support": { - "forum": "http://forum.codeigniter.com/", - "source": "https://github.com/CodeIgniter/coding-standard", - "slack": "https://codeigniterchat.slack.com" - }, - "require": { - "php": "^8.2", - "ext-tokenizer": "*", - "friendsofphp/php-cs-fixer": "^3.95", - "nexusphp/cs-config": "^3.28" - }, - "require-dev": { - "nexusphp/tachycardia": "^2.4", - "phpstan/phpstan": "^2.1", - "phpunit/phpunit": "^11.5 || ^12.5" - }, - "minimum-stability": "dev", - "prefer-stable": true, - "autoload": { - "psr-4": { - "CodeIgniter\\CodingStandard\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "CodeIgniter\\CodingStandard\\Tests\\": "tests/" - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - } -} diff --git a/v3_ci4/vendor/codeigniter/coding-standard/src/CodeIgniter4.php b/v3_ci4/vendor/codeigniter/coding-standard/src/CodeIgniter4.php deleted file mode 100644 index 98b5175..0000000 --- a/v3_ci4/vendor/codeigniter/coding-standard/src/CodeIgniter4.php +++ /dev/null @@ -1,736 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\CodingStandard; - -use Nexus\CsConfig\Ruleset\AbstractRuleset; - -/** - * Defines the ruleset used for the CodeIgniter4 organization. - * - * {@internal Use of this class is not covered by the backward compatibility promise for CodeIgniter4.} - */ -final class CodeIgniter4 extends AbstractRuleset -{ - public function __construct() - { - $this->name = 'CodeIgniter4 Coding Standards'; - - $this->rules = [ - 'align_multiline_comment' => ['comment_type' => 'phpdocs_only'], - 'array_indentation' => true, - 'array_push' => true, - 'array_syntax' => ['syntax' => 'short'], - 'assign_null_coalescing_to_coalesce_equal' => true, - 'attribute_block_no_spaces' => true, - 'attribute_empty_parentheses' => false, - 'backtick_to_shell_exec' => true, - 'binary_operator_spaces' => [ - 'default' => 'single_space', - 'operators' => [ - '=' => 'align_single_space_minimal', - '=>' => 'align_single_space_minimal', - '||' => 'align_single_space_minimal', - '.=' => 'align_single_space_minimal', - ], - ], - 'blank_line_after_namespace' => true, - 'blank_line_after_opening_tag' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'case', - 'continue', - 'declare', - 'default', - 'do', - 'exit', - 'for', - 'foreach', - 'goto', - 'return', - 'switch', - 'throw', - 'try', - 'while', - 'yield', - 'yield_from', - ], - ], - 'blank_line_between_import_groups' => true, - 'blank_lines_before_namespace' => [ - 'min_line_breaks' => 2, - 'max_line_breaks' => 2, - ], - 'braces_position' => [ - 'control_structures_opening_brace' => 'same_line', - 'functions_opening_brace' => 'next_line_unless_newline_at_signature_end', - 'anonymous_functions_opening_brace' => 'same_line', - 'classes_opening_brace' => 'next_line_unless_newline_at_signature_end', - 'anonymous_classes_opening_brace' => 'same_line', - 'allow_single_line_empty_anonymous_classes' => true, - 'allow_single_line_anonymous_functions' => true, - ], - 'cast_spaces' => ['space' => 'single'], - 'class_attributes_separation' => [ - 'elements' => [ - 'const' => 'none', - 'property' => 'none', - 'method' => 'one', - 'trait_import' => 'none', - ], - ], - 'class_definition' => [ - 'multi_line_extends_each_single_line' => true, - 'single_item_single_line' => true, - 'single_line' => true, - 'space_before_parenthesis' => true, - 'inline_constructor_arguments' => true, - ], - 'class_keyword' => false, - 'class_reference_name_casing' => true, - 'clean_namespace' => true, - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'combine_nested_dirname' => true, - 'comment_to_phpdoc' => [ - 'ignored_tags' => [ - 'todo', - 'codeCoverageIgnore', - 'codeCoverageIgnoreStart', - 'codeCoverageIgnoreEnd', - 'phpstan-ignore', - 'phpstan-ignore-line', - 'phpstan-ignore-next-line', - ], - ], - 'compact_nullable_type_declaration' => true, - 'concat_space' => ['spacing' => 'one'], - 'constant_case' => ['case' => 'lower'], - 'control_structure_braces' => true, - 'control_structure_continuation_position' => ['position' => 'same_line'], - 'date_time_create_from_format_call' => true, - 'date_time_immutable' => false, - 'declare_equal_normalize' => ['space' => 'none'], - 'declare_parentheses' => true, - 'declare_strict_types' => false, - 'dir_constant' => true, - 'doctrine_annotation_array_assignment' => false, - 'doctrine_annotation_braces' => false, - 'doctrine_annotation_indentation' => false, - 'doctrine_annotation_spaces' => false, - 'echo_tag_syntax' => [ - 'format' => 'short', - 'long_function' => 'echo', - 'shorten_simple_statements_only' => false, - ], - 'elseif' => true, - 'empty_loop_body' => ['style' => 'braces'], - 'empty_loop_condition' => ['style' => 'while'], - 'encoding' => true, - 'ereg_to_preg' => true, - 'error_suppression' => [ - 'mute_deprecation_error' => true, - 'noise_remaining_usages' => false, - 'noise_remaining_usages_exclude' => [], - ], - 'explicit_indirect_variable' => true, - 'explicit_string_variable' => true, - 'final_class' => false, - 'final_internal_class' => [ - 'exclude' => ['no-final'], - 'include' => ['internal'], - 'consider_absent_docblock_as_internal_class' => false, - ], - 'final_public_method_for_abstract_class' => false, - 'fopen_flag_order' => true, - 'fopen_flags' => ['b_mode' => true], - 'full_opening_tag' => true, - 'fully_qualified_strict_types' => [ - 'import_symbols' => true, - 'leading_backslash_in_global_namespace' => false, - 'phpdoc_tags' => [ - 'param', - 'phpstan-param', - 'phpstan-property', - 'phpstan-property-read', - 'phpstan-property-write', - 'phpstan-return', - 'phpstan-var', - 'property', - 'property-read', - 'property-write', - 'psalm-param', - 'psalm-property', - 'psalm-property-read', - 'psalm-property-write', - 'psalm-return', - 'psalm-var', - 'return', - 'throws', - 'var', - ], - ], - 'function_declaration' => [ - 'closure_function_spacing' => 'one', - 'closure_fn_spacing' => 'one', - 'trailing_comma_single_line' => false, - ], - 'function_to_constant' => [ - 'functions' => [ - 'get_called_class', - 'get_class', - 'get_class_this', - 'php_sapi_name', - 'phpversion', - 'pi', - ], - ], - 'general_attribute_remove' => ['attributes' => []], - 'general_phpdoc_annotation_remove' => [ - 'annotations' => [ - 'author', - 'package', - 'subpackage', - ], - 'case_sensitive' => false, - ], - 'general_phpdoc_tag_rename' => [ - 'case_sensitive' => false, - 'fix_annotation' => true, - 'fix_inline' => true, - 'replacements' => ['inheritDocs' => 'inheritDoc'], - ], - 'get_class_to_class_keyword' => true, - 'global_namespace_import' => [ - 'import_constants' => false, - 'import_functions' => false, - 'import_classes' => true, - ], - 'group_import' => false, - 'header_comment' => false, // false by default - 'heredoc_closing_marker' => false, - 'heredoc_indentation' => ['indentation' => 'start_plus_one'], - 'heredoc_to_nowdoc' => true, - 'implode_call' => true, - 'include' => true, - 'increment_style' => ['style' => 'post'], - 'indentation_type' => true, - 'integer_literal_case' => true, - 'is_null' => true, - 'lambda_not_used_import' => true, - 'line_ending' => true, - 'linebreak_after_opening_tag' => true, - 'list_syntax' => ['syntax' => 'short'], - 'logical_operators' => true, - 'long_to_shorthand_operator' => true, - 'lowercase_cast' => true, - 'lowercase_keywords' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'magic_method_casing' => true, - 'mb_str_functions' => false, - 'method_argument_space' => [ - 'keep_multiple_spaces_after_comma' => false, - 'on_multiline' => 'ensure_fully_multiline', - 'after_heredoc' => false, - 'attribute_placement' => 'standalone', - ], - 'method_chaining_indentation' => true, - 'modern_serialization_methods' => true, - 'modernize_strpos' => ['modernize_stripos' => true], - 'modernize_types_casting' => true, - 'modifier_keywords' => ['elements' => ['const', 'method', 'property']], - 'multiline_comment_opening_closing' => true, - 'multiline_promoted_properties' => false, - 'multiline_string_to_heredoc' => false, - 'multiline_whitespace_before_semicolons' => ['strategy' => 'no_multi_line'], - 'native_constant_invocation' => false, - 'native_function_casing' => true, - 'native_function_invocation' => false, - 'native_type_declaration_casing' => true, - 'new_expression_parentheses' => ['use_parentheses' => true], - 'new_with_parentheses' => [ - 'named_class' => true, - 'anonymous_class' => true, - ], - 'no_alias_functions' => ['sets' => ['@all']], - 'no_alias_language_construct_call' => true, - 'no_alternative_syntax' => ['fix_non_monolithic_code' => false], - 'no_binary_string' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_break_comment' => ['comment_text' => 'no break'], - 'no_closing_tag' => true, - 'no_empty_comment' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => [ - 'tokens' => [ - 'attribute', - 'break', - 'case', - 'continue', - 'curly_brace_block', - 'default', - 'extra', - 'parenthesis_brace_block', - 'return', - 'square_brace_block', - 'switch', - 'throw', - 'use', - ], - ], - 'no_homoglyph_names' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'echo'], - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_multiple_statements_per_line' => true, - 'no_null_property_initialization' => true, - 'no_php4_constructor' => true, - 'no_redundant_readonly_property' => true, - 'no_short_bool_cast' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_space_around_double_colon' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_around_offset' => ['positions' => ['inside', 'outside']], - 'no_superfluous_elseif' => true, - 'no_superfluous_phpdoc_tags' => [ - 'allow_hidden_params' => true, - 'allow_mixed' => true, - 'allow_unused_params' => true, - 'remove_inheritdoc' => false, - ], - 'no_trailing_comma_in_singleline' => [ - 'elements' => [ - 'arguments', - 'array_destructuring', - 'array', - 'group_import', - ], - ], - 'no_trailing_whitespace' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_trailing_whitespace_in_string' => true, - 'no_unneeded_braces' => ['namespaces' => true], - 'no_unneeded_control_parentheses' => [ - 'statements' => [ - 'break', - 'clone', - 'continue', - 'echo_print', - 'return', - 'switch_case', - 'yield', - ], - ], - 'no_unneeded_final_method' => ['private_methods' => true], - 'no_unneeded_import_alias' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unset_cast' => true, - 'no_unset_on_property' => false, - 'no_unused_imports' => true, - 'no_useless_concat_operator' => ['juggle_simple_strings' => true], - 'no_useless_else' => true, - 'no_useless_nullsafe_operator' => true, - 'no_useless_printf' => true, - 'no_useless_return' => true, - 'no_useless_sprintf' => true, - 'no_whitespace_before_comma_in_array' => ['after_heredoc' => true], - 'no_whitespace_in_blank_line' => true, - 'no_whitespace_in_empty_array' => true, - 'non_printable_character' => ['use_escape_sequences_in_strings' => true], - 'normalize_index_brace' => true, - 'not_operator_with_space' => false, - 'not_operator_with_successor_space' => true, - 'nullable_type_declaration' => ['syntax' => 'question_mark'], - 'nullable_type_declaration_for_default_null_value' => true, - 'numeric_literal_separator' => false, - 'object_operator_without_whitespace' => true, - 'octal_notation' => false, // requires 8.1+ - 'operator_linebreak' => ['only_booleans' => true, 'position' => 'beginning'], - 'ordered_attributes' => ['order' => [], 'sort_algorithm' => 'alpha'], - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', - 'case', - 'constant', - 'property', - 'method', - ], - 'sort_algorithm' => 'none', - 'case_sensitive' => false, - ], - 'ordered_imports' => [ - 'sort_algorithm' => 'alpha', - 'imports_order' => ['class', 'function', 'const'], - 'case_sensitive' => false, - ], - 'ordered_interfaces' => false, - 'ordered_traits' => false, - 'ordered_types' => [ - 'null_adjustment' => 'always_last', - 'sort_algorithm' => 'alpha', - 'case_sensitive' => false, - ], - 'php_unit_assert_new_names' => true, - 'php_unit_attributes' => [ - 'keep_annotations' => false, - ], - 'php_unit_construct' => [ - 'assertions' => [ - 'assertSame', - 'assertEquals', - 'assertNotEquals', - 'assertNotSame', - ], - ], - 'php_unit_data_provider_method_order' => [ - 'placement' => 'after', - ], - 'php_unit_data_provider_name' => [ - 'prefix' => 'provide', - 'suffix' => '', - ], - 'php_unit_data_provider_return_type' => true, - 'php_unit_data_provider_static' => ['force' => true], - 'php_unit_dedicate_assert' => ['target' => 'newest'], - 'php_unit_dedicate_assert_internal_type' => ['target' => 'newest'], - 'php_unit_expectation' => ['target' => 'newest'], - 'php_unit_fqcn_annotation' => true, - 'php_unit_internal_class' => ['types' => ['normal', 'final']], - 'php_unit_method_casing' => ['case' => 'camel_case'], - 'php_unit_mock' => ['target' => 'newest'], - 'php_unit_mock_short_will_return' => true, - 'php_unit_namespaced' => ['target' => 'newest'], - 'php_unit_no_expectation_annotation' => [ - 'target' => 'newest', - 'use_class_const' => true, - ], - 'php_unit_set_up_tear_down_visibility' => true, - 'php_unit_size_class' => false, - 'php_unit_strict' => [ - 'assertions' => [ - 'assertAttributeEquals', - 'assertAttributeNotEquals', - 'assertEquals', - 'assertNotEquals', - ], - ], - 'php_unit_test_annotation' => ['style' => 'prefix'], - 'php_unit_test_case_static_method_calls' => [ - 'call_type' => 'this', - 'methods' => [], - 'target' => '11.0', - ], - 'php_unit_test_class_requires_covers' => false, - 'phpdoc_add_missing_param_annotation' => ['only_untyped' => true], - 'phpdoc_align' => [ - 'align' => 'vertical', - 'spacing' => 1, - 'tags' => [ - 'method', - 'param', - 'phpstan-assert', - 'phpstan-assert-if-true', - 'phpstan-assert-if-false', - 'phpstan-param', - 'phpstan-property', - 'phpstan-return', - 'phpstan-type', - 'phpstan-var', - 'property', - 'property-read', - 'property-write', - 'return', - 'throws', - 'type', - 'var', - ], - ], - 'phpdoc_annotation_without_dot' => false, - 'phpdoc_array_type' => true, - 'phpdoc_indent' => true, - 'phpdoc_inline_tag_normalizer' => [ - 'tags' => [ - 'example', - 'id', - 'internal', - 'inheritdoc', - 'inheritdocs', - 'link', - 'source', - 'toc', - 'tutorial', - ], - ], - 'phpdoc_line_span' => [ - 'case' => 'multi', - 'class' => 'multi', - 'const' => 'multi', - 'function' => 'multi', - 'method' => 'multi', - 'other' => 'single', - 'property' => 'multi', - 'trait_import' => 'multi', - ], - 'phpdoc_list_type' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_alias_tag' => [ - 'replacements' => [ - 'const' => 'var', - 'link' => 'see', - 'type' => 'var', - ], - ], - 'phpdoc_no_duplicate_types' => true, - 'phpdoc_no_empty_return' => false, - 'phpdoc_no_package' => true, - 'phpdoc_no_useless_inheritdoc' => true, - 'phpdoc_order' => [ - 'order' => ['param', 'return', 'throws'], - ], - 'phpdoc_order_by_value' => [ - 'annotations' => [ - 'author', - 'covers', - 'coversNothing', - 'dataProvider', - 'depends', - 'group', - 'internal', - 'method', - 'property', - 'property-read', - 'property-write', - 'requires', - 'throws', - 'uses', - ], - ], - 'phpdoc_param_order' => false, - 'phpdoc_readonly_class_comment_to_keyword' => false, - 'phpdoc_return_self_reference' => [ - 'replacements' => [ - 'this' => '$this', - '@this' => '$this', - '$self' => 'self', - '@self' => 'self', - '$static' => 'static', - '@static' => 'static', - ], - ], - 'phpdoc_scalar' => [ - 'types' => [ - 'boolean', - 'callback', - 'double', - 'integer', - 'real', - 'str', - ], - ], - 'phpdoc_separation' => [ - 'groups' => [ - ['immutable', 'psalm-immutable'], - ['param', 'phpstan-param', 'psalm-param'], - ['phpstan-pure', 'psalm-pure'], - ['readonly', 'psalm-readonly'], - ['return', 'phpstan-return', 'psalm-return'], - ['runTestsInSeparateProcess', 'runInSeparateProcess', 'preserveGlobalState'], - ['template', 'phpstan-template', 'psalm-template'], - ['template-covariant', 'phpstan-template-covariant', 'psalm-template-covariant'], - ['phpstan-type', 'psalm-type'], - ['var', 'phpstan-var', 'psalm-var'], - ], - 'skip_unlisted_annotations' => true, - ], - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_summary' => false, - 'phpdoc_tag_casing' => ['tags' => ['inheritDoc']], - 'phpdoc_tag_no_named_arguments' => false, - 'phpdoc_tag_type' => ['tags' => ['inheritDoc' => 'inline']], - 'phpdoc_to_comment' => false, - 'phpdoc_to_param_type' => false, - 'phpdoc_to_property_type' => false, - 'phpdoc_to_return_type' => false, - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_types' => [ - 'groups' => ['simple', 'alias', 'meta'], - 'exclude' => [], - ], - 'phpdoc_types_order' => [ - 'null_adjustment' => 'always_last', - 'sort_algorithm' => 'alpha', - 'case_sensitive' => false, - ], - 'phpdoc_var_annotation_correct_order' => true, - 'phpdoc_var_without_name' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'psr_autoloading' => ['dir' => null], - 'random_api_migration' => [ - 'replacements' => [ - 'getrandmax' => 'mt_getrandmax', - 'rand' => 'mt_rand', - 'srand' => 'mt_srand', - ], - ], - 'regular_callable_call' => true, - 'return_assignment' => ['skip_named_var_tags' => true], - 'return_to_yield_from' => false, - 'return_type_declaration' => ['space_before' => 'none'], - 'self_accessor' => false, - 'self_static_accessor' => true, - 'semicolon_after_instruction' => false, - 'set_type_to_cast' => true, - 'short_scalar_cast' => true, - 'simple_to_complex_string_variable' => true, - 'simplified_if_return' => true, - 'simplified_null_return' => false, - 'single_blank_line_at_eof' => true, - 'single_class_element_per_statement' => ['elements' => ['const', 'property']], - 'single_import_per_statement' => ['group_to_single_imports' => true], - 'single_line_after_imports' => true, - 'single_line_comment_spacing' => true, - 'single_line_comment_style' => ['comment_types' => ['asterisk', 'hash']], - 'single_line_empty_body' => false, - 'single_line_throw' => false, - 'single_quote' => ['strings_containing_single_quote_chars' => false], - 'single_space_around_construct' => [ - 'constructs_contain_a_single_space' => ['yield_from'], - 'constructs_preceded_by_a_single_space' => ['use_lambda'], - 'constructs_followed_by_a_single_space' => [ - 'abstract', - 'as', - 'attribute', - 'break', - 'case', - 'catch', - 'class', - 'clone', - 'comment', - 'const', - 'const_import', - 'continue', - 'do', - 'echo', - 'else', - 'elseif', - 'enum', - 'extends', - 'final', - 'finally', - 'for', - 'foreach', - 'function', - 'function_import', - 'global', - 'goto', - 'if', - 'implements', - 'include', - 'include_once', - 'instanceof', - 'insteadof', - 'interface', - 'match', - 'named_argument', - 'namespace', - 'new', - 'open_tag_with_echo', - 'php_doc', - 'php_open', - 'print', - 'private', - 'protected', - 'public', - 'readonly', - 'require', - 'require_once', - 'return', - 'static', - 'switch', - 'throw', - 'trait', - 'try', - 'type_colon', - 'use', - 'use_lambda', - 'use_trait', - 'var', - 'while', - 'yield', - 'yield_from', - ], - ], - 'single_trait_insert_per_statement' => true, - 'space_after_semicolon' => ['remove_in_empty_for_expressions' => true], - 'spaces_inside_parentheses' => ['space' => 'none'], - 'standardize_increment' => true, - 'standardize_not_equals' => true, - 'statement_indentation' => ['stick_comment_to_next_continuous_control_statement' => false], - 'static_lambda' => true, - 'static_private_method' => false, - 'strict_comparison' => true, - 'strict_param' => true, - 'string_implicit_backslashes' => [ - 'double_quoted' => 'escape', - 'heredoc' => 'escape', - 'single_quoted' => 'ignore', - ], - 'string_length_to_empty' => true, - 'string_line_ending' => true, - 'stringable_for_to_string' => false, - 'switch_case_semicolon_to_colon' => true, - 'switch_case_space' => true, - 'switch_continue_to_break' => true, - 'ternary_operator_spaces' => true, - 'ternary_to_elvis_operator' => true, - 'ternary_to_null_coalescing' => true, - 'trailing_comma_in_multiline' => [ - 'after_heredoc' => true, - 'elements' => [ - 'arguments', - 'array_destructuring', - 'arrays', - 'match', - 'parameters', - ], - ], - 'trim_array_spaces' => true, - 'type_declaration_spaces' => ['elements' => ['function', 'property']], - 'types_spaces' => [ - 'space' => 'none', - 'space_multiple_catch' => 'none', - ], - 'unary_operator_spaces' => ['only_dec_inc' => false], - 'use_arrow_functions' => true, - 'void_return' => false, // changes method signature - 'whitespace_after_comma_in_array' => ['ensure_single_space' => true], - 'yield_from_array_to_yields' => false, - 'yoda_style' => [ - 'equal' => false, - 'identical' => null, - 'less_and_greater' => false, - 'always_move_variable' => false, - ], - ]; - - $this->requiredPHPVersion = 80100; - - $this->autoActivateIsRiskyAllowed = true; - } -} diff --git a/v3_ci4/vendor/composer/ClassLoader.php b/v3_ci4/vendor/composer/ClassLoader.php deleted file mode 100644 index 7824d8f..0000000 --- a/v3_ci4/vendor/composer/ClassLoader.php +++ /dev/null @@ -1,579 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var string|null */ - private $vendorDir; - - // PSR-4 - /** - * @var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var list - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * List of PSR-0 prefixes - * - * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) - * - * @var array>> - */ - private $prefixesPsr0 = array(); - /** - * @var list - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var array - */ - private $missingClasses = array(); - - /** @var string|null */ - private $apcuPrefix; - - /** - * @var array - */ - private static $registeredLoaders = array(); - - /** - * @param string|null $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return array> - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return list - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return list - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return array Array of classname => path - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders keyed by their corresponding vendor directories. - * - * @return array - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/v3_ci4/vendor/composer/InstalledVersions.php b/v3_ci4/vendor/composer/InstalledVersions.php deleted file mode 100644 index 2052022..0000000 --- a/v3_ci4/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,396 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to - * @internal - */ - private static $selfDir = null; - - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null - */ - private static $installed; - - /** - * @var bool - */ - private static $installedIsLocalDir; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints((string) $constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - - // when using reload, we disable the duplicate protection to ensure that self::$installed data is - // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, - // so we have to assume it does not, and that may result in duplicate data being returned when listing - // all installed packages for example - self::$installedIsLocalDir = false; - } - - /** - * @return string - */ - private static function getSelfDir() - { - if (self::$selfDir === null) { - self::$selfDir = strtr(__DIR__, '\\', '/'); - } - - return self::$selfDir; - } - - /** - * @return array[] - * @psalm-return list}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - $copiedLocalDir = false; - - if (self::$canGetVendors) { - $selfDir = self::getSelfDir(); - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - $vendorDir = strtr($vendorDir, '\\', '/'); - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require $vendorDir.'/composer/installed.php'; - self::$installedByVendor[$vendorDir] = $required; - $installed[] = $required; - if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { - self::$installed = $required; - self::$installedIsLocalDir = true; - } - } - if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { - $copiedLocalDir = true; - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require __DIR__ . '/installed.php'; - self::$installed = $required; - } else { - self::$installed = array(); - } - } - - if (self::$installed !== array() && !$copiedLocalDir) { - $installed[] = self::$installed; - } - - return $installed; - } -} diff --git a/v3_ci4/vendor/composer/LICENSE b/v3_ci4/vendor/composer/LICENSE deleted file mode 100644 index f27399a..0000000 --- a/v3_ci4/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/v3_ci4/vendor/composer/autoload_classmap.php b/v3_ci4/vendor/composer/autoload_classmap.php deleted file mode 100644 index a5085de..0000000 --- a/v3_ci4/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,4356 +0,0 @@ - $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', - 'Clue\\React\\NDJson\\Decoder' => $vendorDir . '/clue/ndjson-react/src/Decoder.php', - 'Clue\\React\\NDJson\\Encoder' => $vendorDir . '/clue/ndjson-react/src/Encoder.php', - 'CodeIgniter\\API\\ApiException' => $baseDir . '/system/API/ApiException.php', - 'CodeIgniter\\API\\BaseTransformer' => $baseDir . '/system/API/BaseTransformer.php', - 'CodeIgniter\\API\\ResponseTrait' => $baseDir . '/system/API/ResponseTrait.php', - 'CodeIgniter\\API\\TransformerInterface' => $baseDir . '/system/API/TransformerInterface.php', - 'CodeIgniter\\Autoloader\\Autoloader' => $baseDir . '/system/Autoloader/Autoloader.php', - 'CodeIgniter\\Autoloader\\FileLocator' => $baseDir . '/system/Autoloader/FileLocator.php', - 'CodeIgniter\\Autoloader\\FileLocatorCached' => $baseDir . '/system/Autoloader/FileLocatorCached.php', - 'CodeIgniter\\Autoloader\\FileLocatorInterface' => $baseDir . '/system/Autoloader/FileLocatorInterface.php', - 'CodeIgniter\\BaseModel' => $baseDir . '/system/BaseModel.php', - 'CodeIgniter\\Boot' => $baseDir . '/system/Boot.php', - 'CodeIgniter\\CLI\\BaseCommand' => $baseDir . '/system/CLI/BaseCommand.php', - 'CodeIgniter\\CLI\\CLI' => $baseDir . '/system/CLI/CLI.php', - 'CodeIgniter\\CLI\\Commands' => $baseDir . '/system/CLI/Commands.php', - 'CodeIgniter\\CLI\\Console' => $baseDir . '/system/CLI/Console.php', - 'CodeIgniter\\CLI\\Exceptions\\CLIException' => $baseDir . '/system/CLI/Exceptions/CLIException.php', - 'CodeIgniter\\CLI\\GeneratorTrait' => $baseDir . '/system/CLI/GeneratorTrait.php', - 'CodeIgniter\\CLI\\InputOutput' => $baseDir . '/system/CLI/InputOutput.php', - 'CodeIgniter\\CLI\\SignalTrait' => $baseDir . '/system/CLI/SignalTrait.php', - 'CodeIgniter\\Cache\\CacheFactory' => $baseDir . '/system/Cache/CacheFactory.php', - 'CodeIgniter\\Cache\\CacheInterface' => $baseDir . '/system/Cache/CacheInterface.php', - 'CodeIgniter\\Cache\\Exceptions\\CacheException' => $baseDir . '/system/Cache/Exceptions/CacheException.php', - 'CodeIgniter\\Cache\\FactoriesCache' => $baseDir . '/system/Cache/FactoriesCache.php', - 'CodeIgniter\\Cache\\FactoriesCache\\FileVarExportHandler' => $baseDir . '/system/Cache/FactoriesCache/FileVarExportHandler.php', - 'CodeIgniter\\Cache\\Handlers\\ApcuHandler' => $baseDir . '/system/Cache/Handlers/ApcuHandler.php', - 'CodeIgniter\\Cache\\Handlers\\BaseHandler' => $baseDir . '/system/Cache/Handlers/BaseHandler.php', - 'CodeIgniter\\Cache\\Handlers\\DummyHandler' => $baseDir . '/system/Cache/Handlers/DummyHandler.php', - 'CodeIgniter\\Cache\\Handlers\\FileHandler' => $baseDir . '/system/Cache/Handlers/FileHandler.php', - 'CodeIgniter\\Cache\\Handlers\\MemcachedHandler' => $baseDir . '/system/Cache/Handlers/MemcachedHandler.php', - 'CodeIgniter\\Cache\\Handlers\\PredisHandler' => $baseDir . '/system/Cache/Handlers/PredisHandler.php', - 'CodeIgniter\\Cache\\Handlers\\RedisHandler' => $baseDir . '/system/Cache/Handlers/RedisHandler.php', - 'CodeIgniter\\Cache\\Handlers\\WincacheHandler' => $baseDir . '/system/Cache/Handlers/WincacheHandler.php', - 'CodeIgniter\\Cache\\ResponseCache' => $baseDir . '/system/Cache/ResponseCache.php', - 'CodeIgniter\\CodeIgniter' => $baseDir . '/system/CodeIgniter.php', - 'CodeIgniter\\CodingStandard\\CodeIgniter4' => $vendorDir . '/codeigniter/coding-standard/src/CodeIgniter4.php', - 'CodeIgniter\\Commands\\Cache\\ClearCache' => $baseDir . '/system/Commands/Cache/ClearCache.php', - 'CodeIgniter\\Commands\\Cache\\InfoCache' => $baseDir . '/system/Commands/Cache/InfoCache.php', - 'CodeIgniter\\Commands\\Database\\CreateDatabase' => $baseDir . '/system/Commands/Database/CreateDatabase.php', - 'CodeIgniter\\Commands\\Database\\Migrate' => $baseDir . '/system/Commands/Database/Migrate.php', - 'CodeIgniter\\Commands\\Database\\MigrateRefresh' => $baseDir . '/system/Commands/Database/MigrateRefresh.php', - 'CodeIgniter\\Commands\\Database\\MigrateRollback' => $baseDir . '/system/Commands/Database/MigrateRollback.php', - 'CodeIgniter\\Commands\\Database\\MigrateStatus' => $baseDir . '/system/Commands/Database/MigrateStatus.php', - 'CodeIgniter\\Commands\\Database\\Seed' => $baseDir . '/system/Commands/Database/Seed.php', - 'CodeIgniter\\Commands\\Database\\ShowTableInfo' => $baseDir . '/system/Commands/Database/ShowTableInfo.php', - 'CodeIgniter\\Commands\\Encryption\\GenerateKey' => $baseDir . '/system/Commands/Encryption/GenerateKey.php', - 'CodeIgniter\\Commands\\Generators\\CellGenerator' => $baseDir . '/system/Commands/Generators/CellGenerator.php', - 'CodeIgniter\\Commands\\Generators\\CommandGenerator' => $baseDir . '/system/Commands/Generators/CommandGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ConfigGenerator' => $baseDir . '/system/Commands/Generators/ConfigGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ControllerGenerator' => $baseDir . '/system/Commands/Generators/ControllerGenerator.php', - 'CodeIgniter\\Commands\\Generators\\EntityGenerator' => $baseDir . '/system/Commands/Generators/EntityGenerator.php', - 'CodeIgniter\\Commands\\Generators\\FilterGenerator' => $baseDir . '/system/Commands/Generators/FilterGenerator.php', - 'CodeIgniter\\Commands\\Generators\\MigrationGenerator' => $baseDir . '/system/Commands/Generators/MigrationGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ModelGenerator' => $baseDir . '/system/Commands/Generators/ModelGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ScaffoldGenerator' => $baseDir . '/system/Commands/Generators/ScaffoldGenerator.php', - 'CodeIgniter\\Commands\\Generators\\SeederGenerator' => $baseDir . '/system/Commands/Generators/SeederGenerator.php', - 'CodeIgniter\\Commands\\Generators\\TestGenerator' => $baseDir . '/system/Commands/Generators/TestGenerator.php', - 'CodeIgniter\\Commands\\Generators\\TransformerGenerator' => $baseDir . '/system/Commands/Generators/TransformerGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ValidationGenerator' => $baseDir . '/system/Commands/Generators/ValidationGenerator.php', - 'CodeIgniter\\Commands\\Help' => $baseDir . '/system/Commands/Help.php', - 'CodeIgniter\\Commands\\Housekeeping\\ClearDebugbar' => $baseDir . '/system/Commands/Housekeeping/ClearDebugbar.php', - 'CodeIgniter\\Commands\\Housekeeping\\ClearLogs' => $baseDir . '/system/Commands/Housekeeping/ClearLogs.php', - 'CodeIgniter\\Commands\\ListCommands' => $baseDir . '/system/Commands/ListCommands.php', - 'CodeIgniter\\Commands\\Server\\Serve' => $baseDir . '/system/Commands/Server/Serve.php', - 'CodeIgniter\\Commands\\Translation\\LocalizationFinder' => $baseDir . '/system/Commands/Translation/LocalizationFinder.php', - 'CodeIgniter\\Commands\\Translation\\LocalizationSync' => $baseDir . '/system/Commands/Translation/LocalizationSync.php', - 'CodeIgniter\\Commands\\Utilities\\ConfigCheck' => $baseDir . '/system/Commands/Utilities/ConfigCheck.php', - 'CodeIgniter\\Commands\\Utilities\\Environment' => $baseDir . '/system/Commands/Utilities/Environment.php', - 'CodeIgniter\\Commands\\Utilities\\FilterCheck' => $baseDir . '/system/Commands/Utilities/FilterCheck.php', - 'CodeIgniter\\Commands\\Utilities\\Namespaces' => $baseDir . '/system/Commands/Utilities/Namespaces.php', - 'CodeIgniter\\Commands\\Utilities\\Optimize' => $baseDir . '/system/Commands/Utilities/Optimize.php', - 'CodeIgniter\\Commands\\Utilities\\PhpIniCheck' => $baseDir . '/system/Commands/Utilities/PhpIniCheck.php', - 'CodeIgniter\\Commands\\Utilities\\Publish' => $baseDir . '/system/Commands/Utilities/Publish.php', - 'CodeIgniter\\Commands\\Utilities\\Routes' => $baseDir . '/system/Commands/Utilities/Routes.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\AutoRouteCollector' => $baseDir . '/system/Commands/Utilities/Routes/AutoRouteCollector.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\AutoRouterImproved\\AutoRouteCollector' => $baseDir . '/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\AutoRouterImproved\\ControllerMethodReader' => $baseDir . '/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\ControllerFinder' => $baseDir . '/system/Commands/Utilities/Routes/ControllerFinder.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\ControllerMethodReader' => $baseDir . '/system/Commands/Utilities/Routes/ControllerMethodReader.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\FilterCollector' => $baseDir . '/system/Commands/Utilities/Routes/FilterCollector.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\FilterFinder' => $baseDir . '/system/Commands/Utilities/Routes/FilterFinder.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\SampleURIGenerator' => $baseDir . '/system/Commands/Utilities/Routes/SampleURIGenerator.php', - 'CodeIgniter\\Commands\\Worker\\WorkerInstall' => $baseDir . '/system/Commands/Worker/WorkerInstall.php', - 'CodeIgniter\\Commands\\Worker\\WorkerUninstall' => $baseDir . '/system/Commands/Worker/WorkerUninstall.php', - 'CodeIgniter\\ComposerScripts' => $baseDir . '/system/ComposerScripts.php', - 'CodeIgniter\\Config\\AutoloadConfig' => $baseDir . '/system/Config/AutoloadConfig.php', - 'CodeIgniter\\Config\\BaseConfig' => $baseDir . '/system/Config/BaseConfig.php', - 'CodeIgniter\\Config\\BaseService' => $baseDir . '/system/Config/BaseService.php', - 'CodeIgniter\\Config\\DotEnv' => $baseDir . '/system/Config/DotEnv.php', - 'CodeIgniter\\Config\\Factories' => $baseDir . '/system/Config/Factories.php', - 'CodeIgniter\\Config\\Factory' => $baseDir . '/system/Config/Factory.php', - 'CodeIgniter\\Config\\Filters' => $baseDir . '/system/Config/Filters.php', - 'CodeIgniter\\Config\\ForeignCharacters' => $baseDir . '/system/Config/ForeignCharacters.php', - 'CodeIgniter\\Config\\Publisher' => $baseDir . '/system/Config/Publisher.php', - 'CodeIgniter\\Config\\Routing' => $baseDir . '/system/Config/Routing.php', - 'CodeIgniter\\Config\\Services' => $baseDir . '/system/Config/Services.php', - 'CodeIgniter\\Config\\View' => $baseDir . '/system/Config/View.php', - 'CodeIgniter\\Controller' => $baseDir . '/system/Controller.php', - 'CodeIgniter\\Cookie\\CloneableCookieInterface' => $baseDir . '/system/Cookie/CloneableCookieInterface.php', - 'CodeIgniter\\Cookie\\Cookie' => $baseDir . '/system/Cookie/Cookie.php', - 'CodeIgniter\\Cookie\\CookieInterface' => $baseDir . '/system/Cookie/CookieInterface.php', - 'CodeIgniter\\Cookie\\CookieStore' => $baseDir . '/system/Cookie/CookieStore.php', - 'CodeIgniter\\Cookie\\Exceptions\\CookieException' => $baseDir . '/system/Cookie/Exceptions/CookieException.php', - 'CodeIgniter\\DataCaster\\Cast\\ArrayCast' => $baseDir . '/system/DataCaster/Cast/ArrayCast.php', - 'CodeIgniter\\DataCaster\\Cast\\BaseCast' => $baseDir . '/system/DataCaster/Cast/BaseCast.php', - 'CodeIgniter\\DataCaster\\Cast\\BooleanCast' => $baseDir . '/system/DataCaster/Cast/BooleanCast.php', - 'CodeIgniter\\DataCaster\\Cast\\CSVCast' => $baseDir . '/system/DataCaster/Cast/CSVCast.php', - 'CodeIgniter\\DataCaster\\Cast\\CastInterface' => $baseDir . '/system/DataCaster/Cast/CastInterface.php', - 'CodeIgniter\\DataCaster\\Cast\\DatetimeCast' => $baseDir . '/system/DataCaster/Cast/DatetimeCast.php', - 'CodeIgniter\\DataCaster\\Cast\\EnumCast' => $baseDir . '/system/DataCaster/Cast/EnumCast.php', - 'CodeIgniter\\DataCaster\\Cast\\FloatCast' => $baseDir . '/system/DataCaster/Cast/FloatCast.php', - 'CodeIgniter\\DataCaster\\Cast\\IntBoolCast' => $baseDir . '/system/DataCaster/Cast/IntBoolCast.php', - 'CodeIgniter\\DataCaster\\Cast\\IntegerCast' => $baseDir . '/system/DataCaster/Cast/IntegerCast.php', - 'CodeIgniter\\DataCaster\\Cast\\JsonCast' => $baseDir . '/system/DataCaster/Cast/JsonCast.php', - 'CodeIgniter\\DataCaster\\Cast\\TimestampCast' => $baseDir . '/system/DataCaster/Cast/TimestampCast.php', - 'CodeIgniter\\DataCaster\\Cast\\URICast' => $baseDir . '/system/DataCaster/Cast/URICast.php', - 'CodeIgniter\\DataCaster\\DataCaster' => $baseDir . '/system/DataCaster/DataCaster.php', - 'CodeIgniter\\DataCaster\\Exceptions\\CastException' => $baseDir . '/system/DataCaster/Exceptions/CastException.php', - 'CodeIgniter\\DataConverter\\DataConverter' => $baseDir . '/system/DataConverter/DataConverter.php', - 'CodeIgniter\\Database\\BaseBuilder' => $baseDir . '/system/Database/BaseBuilder.php', - 'CodeIgniter\\Database\\BaseConnection' => $baseDir . '/system/Database/BaseConnection.php', - 'CodeIgniter\\Database\\BasePreparedQuery' => $baseDir . '/system/Database/BasePreparedQuery.php', - 'CodeIgniter\\Database\\BaseResult' => $baseDir . '/system/Database/BaseResult.php', - 'CodeIgniter\\Database\\BaseUtils' => $baseDir . '/system/Database/BaseUtils.php', - 'CodeIgniter\\Database\\Config' => $baseDir . '/system/Database/Config.php', - 'CodeIgniter\\Database\\ConnectionInterface' => $baseDir . '/system/Database/ConnectionInterface.php', - 'CodeIgniter\\Database\\Database' => $baseDir . '/system/Database/Database.php', - 'CodeIgniter\\Database\\Exceptions\\DataException' => $baseDir . '/system/Database/Exceptions/DataException.php', - 'CodeIgniter\\Database\\Exceptions\\DatabaseException' => $baseDir . '/system/Database/Exceptions/DatabaseException.php', - 'CodeIgniter\\Database\\Exceptions\\ExceptionInterface' => $baseDir . '/system/Database/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\Database\\Forge' => $baseDir . '/system/Database/Forge.php', - 'CodeIgniter\\Database\\Migration' => $baseDir . '/system/Database/Migration.php', - 'CodeIgniter\\Database\\MigrationRunner' => $baseDir . '/system/Database/MigrationRunner.php', - 'CodeIgniter\\Database\\MySQLi\\Builder' => $baseDir . '/system/Database/MySQLi/Builder.php', - 'CodeIgniter\\Database\\MySQLi\\Connection' => $baseDir . '/system/Database/MySQLi/Connection.php', - 'CodeIgniter\\Database\\MySQLi\\Forge' => $baseDir . '/system/Database/MySQLi/Forge.php', - 'CodeIgniter\\Database\\MySQLi\\PreparedQuery' => $baseDir . '/system/Database/MySQLi/PreparedQuery.php', - 'CodeIgniter\\Database\\MySQLi\\Result' => $baseDir . '/system/Database/MySQLi/Result.php', - 'CodeIgniter\\Database\\MySQLi\\Utils' => $baseDir . '/system/Database/MySQLi/Utils.php', - 'CodeIgniter\\Database\\OCI8\\Builder' => $baseDir . '/system/Database/OCI8/Builder.php', - 'CodeIgniter\\Database\\OCI8\\Connection' => $baseDir . '/system/Database/OCI8/Connection.php', - 'CodeIgniter\\Database\\OCI8\\Forge' => $baseDir . '/system/Database/OCI8/Forge.php', - 'CodeIgniter\\Database\\OCI8\\PreparedQuery' => $baseDir . '/system/Database/OCI8/PreparedQuery.php', - 'CodeIgniter\\Database\\OCI8\\Result' => $baseDir . '/system/Database/OCI8/Result.php', - 'CodeIgniter\\Database\\OCI8\\Utils' => $baseDir . '/system/Database/OCI8/Utils.php', - 'CodeIgniter\\Database\\Postgre\\Builder' => $baseDir . '/system/Database/Postgre/Builder.php', - 'CodeIgniter\\Database\\Postgre\\Connection' => $baseDir . '/system/Database/Postgre/Connection.php', - 'CodeIgniter\\Database\\Postgre\\Forge' => $baseDir . '/system/Database/Postgre/Forge.php', - 'CodeIgniter\\Database\\Postgre\\PreparedQuery' => $baseDir . '/system/Database/Postgre/PreparedQuery.php', - 'CodeIgniter\\Database\\Postgre\\Result' => $baseDir . '/system/Database/Postgre/Result.php', - 'CodeIgniter\\Database\\Postgre\\Utils' => $baseDir . '/system/Database/Postgre/Utils.php', - 'CodeIgniter\\Database\\PreparedQueryInterface' => $baseDir . '/system/Database/PreparedQueryInterface.php', - 'CodeIgniter\\Database\\Query' => $baseDir . '/system/Database/Query.php', - 'CodeIgniter\\Database\\QueryInterface' => $baseDir . '/system/Database/QueryInterface.php', - 'CodeIgniter\\Database\\RawSql' => $baseDir . '/system/Database/RawSql.php', - 'CodeIgniter\\Database\\ResultInterface' => $baseDir . '/system/Database/ResultInterface.php', - 'CodeIgniter\\Database\\SQLSRV\\Builder' => $baseDir . '/system/Database/SQLSRV/Builder.php', - 'CodeIgniter\\Database\\SQLSRV\\Connection' => $baseDir . '/system/Database/SQLSRV/Connection.php', - 'CodeIgniter\\Database\\SQLSRV\\Forge' => $baseDir . '/system/Database/SQLSRV/Forge.php', - 'CodeIgniter\\Database\\SQLSRV\\PreparedQuery' => $baseDir . '/system/Database/SQLSRV/PreparedQuery.php', - 'CodeIgniter\\Database\\SQLSRV\\Result' => $baseDir . '/system/Database/SQLSRV/Result.php', - 'CodeIgniter\\Database\\SQLSRV\\Utils' => $baseDir . '/system/Database/SQLSRV/Utils.php', - 'CodeIgniter\\Database\\SQLite3\\Builder' => $baseDir . '/system/Database/SQLite3/Builder.php', - 'CodeIgniter\\Database\\SQLite3\\Connection' => $baseDir . '/system/Database/SQLite3/Connection.php', - 'CodeIgniter\\Database\\SQLite3\\Forge' => $baseDir . '/system/Database/SQLite3/Forge.php', - 'CodeIgniter\\Database\\SQLite3\\PreparedQuery' => $baseDir . '/system/Database/SQLite3/PreparedQuery.php', - 'CodeIgniter\\Database\\SQLite3\\Result' => $baseDir . '/system/Database/SQLite3/Result.php', - 'CodeIgniter\\Database\\SQLite3\\Table' => $baseDir . '/system/Database/SQLite3/Table.php', - 'CodeIgniter\\Database\\SQLite3\\Utils' => $baseDir . '/system/Database/SQLite3/Utils.php', - 'CodeIgniter\\Database\\Seeder' => $baseDir . '/system/Database/Seeder.php', - 'CodeIgniter\\Database\\TableName' => $baseDir . '/system/Database/TableName.php', - 'CodeIgniter\\Debug\\BaseExceptionHandler' => $baseDir . '/system/Debug/BaseExceptionHandler.php', - 'CodeIgniter\\Debug\\ExceptionHandler' => $baseDir . '/system/Debug/ExceptionHandler.php', - 'CodeIgniter\\Debug\\ExceptionHandlerInterface' => $baseDir . '/system/Debug/ExceptionHandlerInterface.php', - 'CodeIgniter\\Debug\\Exceptions' => $baseDir . '/system/Debug/Exceptions.php', - 'CodeIgniter\\Debug\\Iterator' => $baseDir . '/system/Debug/Iterator.php', - 'CodeIgniter\\Debug\\Timer' => $baseDir . '/system/Debug/Timer.php', - 'CodeIgniter\\Debug\\Toolbar' => $baseDir . '/system/Debug/Toolbar.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\BaseCollector' => $baseDir . '/system/Debug/Toolbar/Collectors/BaseCollector.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Config' => $baseDir . '/system/Debug/Toolbar/Collectors/Config.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Database' => $baseDir . '/system/Debug/Toolbar/Collectors/Database.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Events' => $baseDir . '/system/Debug/Toolbar/Collectors/Events.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Files' => $baseDir . '/system/Debug/Toolbar/Collectors/Files.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\History' => $baseDir . '/system/Debug/Toolbar/Collectors/History.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Logs' => $baseDir . '/system/Debug/Toolbar/Collectors/Logs.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Routes' => $baseDir . '/system/Debug/Toolbar/Collectors/Routes.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Timers' => $baseDir . '/system/Debug/Toolbar/Collectors/Timers.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Views' => $baseDir . '/system/Debug/Toolbar/Collectors/Views.php', - 'CodeIgniter\\Email\\Email' => $baseDir . '/system/Email/Email.php', - 'CodeIgniter\\Encryption\\EncrypterInterface' => $baseDir . '/system/Encryption/EncrypterInterface.php', - 'CodeIgniter\\Encryption\\Encryption' => $baseDir . '/system/Encryption/Encryption.php', - 'CodeIgniter\\Encryption\\Exceptions\\EncryptionException' => $baseDir . '/system/Encryption/Exceptions/EncryptionException.php', - 'CodeIgniter\\Encryption\\Handlers\\BaseHandler' => $baseDir . '/system/Encryption/Handlers/BaseHandler.php', - 'CodeIgniter\\Encryption\\Handlers\\OpenSSLHandler' => $baseDir . '/system/Encryption/Handlers/OpenSSLHandler.php', - 'CodeIgniter\\Encryption\\Handlers\\SodiumHandler' => $baseDir . '/system/Encryption/Handlers/SodiumHandler.php', - 'CodeIgniter\\Encryption\\KeyRotationDecorator' => $baseDir . '/system/Encryption/KeyRotationDecorator.php', - 'CodeIgniter\\Entity\\Cast\\ArrayCast' => $baseDir . '/system/Entity/Cast/ArrayCast.php', - 'CodeIgniter\\Entity\\Cast\\BaseCast' => $baseDir . '/system/Entity/Cast/BaseCast.php', - 'CodeIgniter\\Entity\\Cast\\BooleanCast' => $baseDir . '/system/Entity/Cast/BooleanCast.php', - 'CodeIgniter\\Entity\\Cast\\CSVCast' => $baseDir . '/system/Entity/Cast/CSVCast.php', - 'CodeIgniter\\Entity\\Cast\\CastInterface' => $baseDir . '/system/Entity/Cast/CastInterface.php', - 'CodeIgniter\\Entity\\Cast\\DatetimeCast' => $baseDir . '/system/Entity/Cast/DatetimeCast.php', - 'CodeIgniter\\Entity\\Cast\\EnumCast' => $baseDir . '/system/Entity/Cast/EnumCast.php', - 'CodeIgniter\\Entity\\Cast\\FloatCast' => $baseDir . '/system/Entity/Cast/FloatCast.php', - 'CodeIgniter\\Entity\\Cast\\IntBoolCast' => $baseDir . '/system/Entity/Cast/IntBoolCast.php', - 'CodeIgniter\\Entity\\Cast\\IntegerCast' => $baseDir . '/system/Entity/Cast/IntegerCast.php', - 'CodeIgniter\\Entity\\Cast\\JsonCast' => $baseDir . '/system/Entity/Cast/JsonCast.php', - 'CodeIgniter\\Entity\\Cast\\ObjectCast' => $baseDir . '/system/Entity/Cast/ObjectCast.php', - 'CodeIgniter\\Entity\\Cast\\StringCast' => $baseDir . '/system/Entity/Cast/StringCast.php', - 'CodeIgniter\\Entity\\Cast\\TimestampCast' => $baseDir . '/system/Entity/Cast/TimestampCast.php', - 'CodeIgniter\\Entity\\Cast\\URICast' => $baseDir . '/system/Entity/Cast/URICast.php', - 'CodeIgniter\\Entity\\Entity' => $baseDir . '/system/Entity/Entity.php', - 'CodeIgniter\\Entity\\Exceptions\\CastException' => $baseDir . '/system/Entity/Exceptions/CastException.php', - 'CodeIgniter\\Events\\Events' => $baseDir . '/system/Events/Events.php', - 'CodeIgniter\\Exceptions\\BadFunctionCallException' => $baseDir . '/system/Exceptions/BadFunctionCallException.php', - 'CodeIgniter\\Exceptions\\BadMethodCallException' => $baseDir . '/system/Exceptions/BadMethodCallException.php', - 'CodeIgniter\\Exceptions\\ConfigException' => $baseDir . '/system/Exceptions/ConfigException.php', - 'CodeIgniter\\Exceptions\\CriticalError' => $baseDir . '/system/Exceptions/CriticalError.php', - 'CodeIgniter\\Exceptions\\DebugTraceableTrait' => $baseDir . '/system/Exceptions/DebugTraceableTrait.php', - 'CodeIgniter\\Exceptions\\DownloadException' => $baseDir . '/system/Exceptions/DownloadException.php', - 'CodeIgniter\\Exceptions\\ExceptionInterface' => $baseDir . '/system/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\Exceptions\\FrameworkException' => $baseDir . '/system/Exceptions/FrameworkException.php', - 'CodeIgniter\\Exceptions\\HTTPExceptionInterface' => $baseDir . '/system/Exceptions/HTTPExceptionInterface.php', - 'CodeIgniter\\Exceptions\\HasExitCodeInterface' => $baseDir . '/system/Exceptions/HasExitCodeInterface.php', - 'CodeIgniter\\Exceptions\\InvalidArgumentException' => $baseDir . '/system/Exceptions/InvalidArgumentException.php', - 'CodeIgniter\\Exceptions\\LogicException' => $baseDir . '/system/Exceptions/LogicException.php', - 'CodeIgniter\\Exceptions\\ModelException' => $baseDir . '/system/Exceptions/ModelException.php', - 'CodeIgniter\\Exceptions\\PageNotFoundException' => $baseDir . '/system/Exceptions/PageNotFoundException.php', - 'CodeIgniter\\Exceptions\\RuntimeException' => $baseDir . '/system/Exceptions/RuntimeException.php', - 'CodeIgniter\\Exceptions\\TestException' => $baseDir . '/system/Exceptions/TestException.php', - 'CodeIgniter\\Files\\Exceptions\\ExceptionInterface' => $baseDir . '/system/Files/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\Files\\Exceptions\\FileException' => $baseDir . '/system/Files/Exceptions/FileException.php', - 'CodeIgniter\\Files\\Exceptions\\FileNotFoundException' => $baseDir . '/system/Files/Exceptions/FileNotFoundException.php', - 'CodeIgniter\\Files\\File' => $baseDir . '/system/Files/File.php', - 'CodeIgniter\\Files\\FileCollection' => $baseDir . '/system/Files/FileCollection.php', - 'CodeIgniter\\Files\\FileSizeUnit' => $baseDir . '/system/Files/FileSizeUnit.php', - 'CodeIgniter\\Filters\\CSRF' => $baseDir . '/system/Filters/CSRF.php', - 'CodeIgniter\\Filters\\Cors' => $baseDir . '/system/Filters/Cors.php', - 'CodeIgniter\\Filters\\DebugToolbar' => $baseDir . '/system/Filters/DebugToolbar.php', - 'CodeIgniter\\Filters\\Exceptions\\FilterException' => $baseDir . '/system/Filters/Exceptions/FilterException.php', - 'CodeIgniter\\Filters\\FilterInterface' => $baseDir . '/system/Filters/FilterInterface.php', - 'CodeIgniter\\Filters\\Filters' => $baseDir . '/system/Filters/Filters.php', - 'CodeIgniter\\Filters\\ForceHTTPS' => $baseDir . '/system/Filters/ForceHTTPS.php', - 'CodeIgniter\\Filters\\Honeypot' => $baseDir . '/system/Filters/Honeypot.php', - 'CodeIgniter\\Filters\\InvalidChars' => $baseDir . '/system/Filters/InvalidChars.php', - 'CodeIgniter\\Filters\\PageCache' => $baseDir . '/system/Filters/PageCache.php', - 'CodeIgniter\\Filters\\PerformanceMetrics' => $baseDir . '/system/Filters/PerformanceMetrics.php', - 'CodeIgniter\\Filters\\SecureHeaders' => $baseDir . '/system/Filters/SecureHeaders.php', - 'CodeIgniter\\Format\\Exceptions\\FormatException' => $baseDir . '/system/Format/Exceptions/FormatException.php', - 'CodeIgniter\\Format\\Format' => $baseDir . '/system/Format/Format.php', - 'CodeIgniter\\Format\\FormatterInterface' => $baseDir . '/system/Format/FormatterInterface.php', - 'CodeIgniter\\Format\\JSONFormatter' => $baseDir . '/system/Format/JSONFormatter.php', - 'CodeIgniter\\Format\\XMLFormatter' => $baseDir . '/system/Format/XMLFormatter.php', - 'CodeIgniter\\HTTP\\CLIRequest' => $baseDir . '/system/HTTP/CLIRequest.php', - 'CodeIgniter\\HTTP\\CURLRequest' => $baseDir . '/system/HTTP/CURLRequest.php', - 'CodeIgniter\\HTTP\\ContentSecurityPolicy' => $baseDir . '/system/HTTP/ContentSecurityPolicy.php', - 'CodeIgniter\\HTTP\\Cors' => $baseDir . '/system/HTTP/Cors.php', - 'CodeIgniter\\HTTP\\DownloadResponse' => $baseDir . '/system/HTTP/DownloadResponse.php', - 'CodeIgniter\\HTTP\\Exceptions\\BadRequestException' => $baseDir . '/system/HTTP/Exceptions/BadRequestException.php', - 'CodeIgniter\\HTTP\\Exceptions\\ExceptionInterface' => $baseDir . '/system/HTTP/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\HTTP\\Exceptions\\HTTPException' => $baseDir . '/system/HTTP/Exceptions/HTTPException.php', - 'CodeIgniter\\HTTP\\Exceptions\\RedirectException' => $baseDir . '/system/HTTP/Exceptions/RedirectException.php', - 'CodeIgniter\\HTTP\\Files\\FileCollection' => $baseDir . '/system/HTTP/Files/FileCollection.php', - 'CodeIgniter\\HTTP\\Files\\UploadedFile' => $baseDir . '/system/HTTP/Files/UploadedFile.php', - 'CodeIgniter\\HTTP\\Files\\UploadedFileInterface' => $baseDir . '/system/HTTP/Files/UploadedFileInterface.php', - 'CodeIgniter\\HTTP\\Header' => $baseDir . '/system/HTTP/Header.php', - 'CodeIgniter\\HTTP\\IncomingRequest' => $baseDir . '/system/HTTP/IncomingRequest.php', - 'CodeIgniter\\HTTP\\Message' => $baseDir . '/system/HTTP/Message.php', - 'CodeIgniter\\HTTP\\MessageInterface' => $baseDir . '/system/HTTP/MessageInterface.php', - 'CodeIgniter\\HTTP\\MessageTrait' => $baseDir . '/system/HTTP/MessageTrait.php', - 'CodeIgniter\\HTTP\\Method' => $baseDir . '/system/HTTP/Method.php', - 'CodeIgniter\\HTTP\\Negotiate' => $baseDir . '/system/HTTP/Negotiate.php', - 'CodeIgniter\\HTTP\\OutgoingRequest' => $baseDir . '/system/HTTP/OutgoingRequest.php', - 'CodeIgniter\\HTTP\\OutgoingRequestInterface' => $baseDir . '/system/HTTP/OutgoingRequestInterface.php', - 'CodeIgniter\\HTTP\\RedirectResponse' => $baseDir . '/system/HTTP/RedirectResponse.php', - 'CodeIgniter\\HTTP\\Request' => $baseDir . '/system/HTTP/Request.php', - 'CodeIgniter\\HTTP\\RequestInterface' => $baseDir . '/system/HTTP/RequestInterface.php', - 'CodeIgniter\\HTTP\\RequestTrait' => $baseDir . '/system/HTTP/RequestTrait.php', - 'CodeIgniter\\HTTP\\ResponsableInterface' => $baseDir . '/system/HTTP/ResponsableInterface.php', - 'CodeIgniter\\HTTP\\Response' => $baseDir . '/system/HTTP/Response.php', - 'CodeIgniter\\HTTP\\ResponseInterface' => $baseDir . '/system/HTTP/ResponseInterface.php', - 'CodeIgniter\\HTTP\\ResponseTrait' => $baseDir . '/system/HTTP/ResponseTrait.php', - 'CodeIgniter\\HTTP\\SiteURI' => $baseDir . '/system/HTTP/SiteURI.php', - 'CodeIgniter\\HTTP\\SiteURIFactory' => $baseDir . '/system/HTTP/SiteURIFactory.php', - 'CodeIgniter\\HTTP\\URI' => $baseDir . '/system/HTTP/URI.php', - 'CodeIgniter\\HTTP\\UserAgent' => $baseDir . '/system/HTTP/UserAgent.php', - 'CodeIgniter\\Helpers\\Array\\ArrayHelper' => $baseDir . '/system/Helpers/Array/ArrayHelper.php', - 'CodeIgniter\\Honeypot\\Exceptions\\HoneypotException' => $baseDir . '/system/Honeypot/Exceptions/HoneypotException.php', - 'CodeIgniter\\Honeypot\\Honeypot' => $baseDir . '/system/Honeypot/Honeypot.php', - 'CodeIgniter\\HotReloader\\DirectoryHasher' => $baseDir . '/system/HotReloader/DirectoryHasher.php', - 'CodeIgniter\\HotReloader\\HotReloader' => $baseDir . '/system/HotReloader/HotReloader.php', - 'CodeIgniter\\HotReloader\\IteratorFilter' => $baseDir . '/system/HotReloader/IteratorFilter.php', - 'CodeIgniter\\I18n\\Exceptions\\I18nException' => $baseDir . '/system/I18n/Exceptions/I18nException.php', - 'CodeIgniter\\I18n\\Time' => $baseDir . '/system/I18n/Time.php', - 'CodeIgniter\\I18n\\TimeDifference' => $baseDir . '/system/I18n/TimeDifference.php', - 'CodeIgniter\\I18n\\TimeLegacy' => $baseDir . '/system/I18n/TimeLegacy.php', - 'CodeIgniter\\I18n\\TimeTrait' => $baseDir . '/system/I18n/TimeTrait.php', - 'CodeIgniter\\Images\\Exceptions\\ImageException' => $baseDir . '/system/Images/Exceptions/ImageException.php', - 'CodeIgniter\\Images\\Handlers\\BaseHandler' => $baseDir . '/system/Images/Handlers/BaseHandler.php', - 'CodeIgniter\\Images\\Handlers\\GDHandler' => $baseDir . '/system/Images/Handlers/GDHandler.php', - 'CodeIgniter\\Images\\Handlers\\ImageMagickHandler' => $baseDir . '/system/Images/Handlers/ImageMagickHandler.php', - 'CodeIgniter\\Images\\Image' => $baseDir . '/system/Images/Image.php', - 'CodeIgniter\\Images\\ImageHandlerInterface' => $baseDir . '/system/Images/ImageHandlerInterface.php', - 'CodeIgniter\\Language\\Language' => $baseDir . '/system/Language/Language.php', - 'CodeIgniter\\Log\\Exceptions\\LogException' => $baseDir . '/system/Log/Exceptions/LogException.php', - 'CodeIgniter\\Log\\Handlers\\BaseHandler' => $baseDir . '/system/Log/Handlers/BaseHandler.php', - 'CodeIgniter\\Log\\Handlers\\ChromeLoggerHandler' => $baseDir . '/system/Log/Handlers/ChromeLoggerHandler.php', - 'CodeIgniter\\Log\\Handlers\\ErrorlogHandler' => $baseDir . '/system/Log/Handlers/ErrorlogHandler.php', - 'CodeIgniter\\Log\\Handlers\\FileHandler' => $baseDir . '/system/Log/Handlers/FileHandler.php', - 'CodeIgniter\\Log\\Handlers\\HandlerInterface' => $baseDir . '/system/Log/Handlers/HandlerInterface.php', - 'CodeIgniter\\Log\\Logger' => $baseDir . '/system/Log/Logger.php', - 'CodeIgniter\\Model' => $baseDir . '/system/Model.php', - 'CodeIgniter\\Modules\\Modules' => $baseDir . '/system/Modules/Modules.php', - 'CodeIgniter\\Pager\\Exceptions\\PagerException' => $baseDir . '/system/Pager/Exceptions/PagerException.php', - 'CodeIgniter\\Pager\\Pager' => $baseDir . '/system/Pager/Pager.php', - 'CodeIgniter\\Pager\\PagerInterface' => $baseDir . '/system/Pager/PagerInterface.php', - 'CodeIgniter\\Pager\\PagerRenderer' => $baseDir . '/system/Pager/PagerRenderer.php', - 'CodeIgniter\\Publisher\\ContentReplacer' => $baseDir . '/system/Publisher/ContentReplacer.php', - 'CodeIgniter\\Publisher\\Exceptions\\PublisherException' => $baseDir . '/system/Publisher/Exceptions/PublisherException.php', - 'CodeIgniter\\Publisher\\Publisher' => $baseDir . '/system/Publisher/Publisher.php', - 'CodeIgniter\\RESTful\\BaseResource' => $baseDir . '/system/RESTful/BaseResource.php', - 'CodeIgniter\\RESTful\\ResourceController' => $baseDir . '/system/RESTful/ResourceController.php', - 'CodeIgniter\\RESTful\\ResourcePresenter' => $baseDir . '/system/RESTful/ResourcePresenter.php', - 'CodeIgniter\\Router\\Attributes\\Cache' => $baseDir . '/system/Router/Attributes/Cache.php', - 'CodeIgniter\\Router\\Attributes\\Filter' => $baseDir . '/system/Router/Attributes/Filter.php', - 'CodeIgniter\\Router\\Attributes\\Restrict' => $baseDir . '/system/Router/Attributes/Restrict.php', - 'CodeIgniter\\Router\\Attributes\\RouteAttributeInterface' => $baseDir . '/system/Router/Attributes/RouteAttributeInterface.php', - 'CodeIgniter\\Router\\AutoRouter' => $baseDir . '/system/Router/AutoRouter.php', - 'CodeIgniter\\Router\\AutoRouterImproved' => $baseDir . '/system/Router/AutoRouterImproved.php', - 'CodeIgniter\\Router\\AutoRouterInterface' => $baseDir . '/system/Router/AutoRouterInterface.php', - 'CodeIgniter\\Router\\DefinedRouteCollector' => $baseDir . '/system/Router/DefinedRouteCollector.php', - 'CodeIgniter\\Router\\Exceptions\\ExceptionInterface' => $baseDir . '/system/Router/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\Router\\Exceptions\\MethodNotFoundException' => $baseDir . '/system/Router/Exceptions/MethodNotFoundException.php', - 'CodeIgniter\\Router\\Exceptions\\RouterException' => $baseDir . '/system/Router/Exceptions/RouterException.php', - 'CodeIgniter\\Router\\RouteCollection' => $baseDir . '/system/Router/RouteCollection.php', - 'CodeIgniter\\Router\\RouteCollectionInterface' => $baseDir . '/system/Router/RouteCollectionInterface.php', - 'CodeIgniter\\Router\\Router' => $baseDir . '/system/Router/Router.php', - 'CodeIgniter\\Router\\RouterInterface' => $baseDir . '/system/Router/RouterInterface.php', - 'CodeIgniter\\Security\\CheckPhpIni' => $baseDir . '/system/Security/CheckPhpIni.php', - 'CodeIgniter\\Security\\Exceptions\\SecurityException' => $baseDir . '/system/Security/Exceptions/SecurityException.php', - 'CodeIgniter\\Security\\Security' => $baseDir . '/system/Security/Security.php', - 'CodeIgniter\\Security\\SecurityInterface' => $baseDir . '/system/Security/SecurityInterface.php', - 'CodeIgniter\\Session\\Exceptions\\SessionException' => $baseDir . '/system/Session/Exceptions/SessionException.php', - 'CodeIgniter\\Session\\Handlers\\ArrayHandler' => $baseDir . '/system/Session/Handlers/ArrayHandler.php', - 'CodeIgniter\\Session\\Handlers\\BaseHandler' => $baseDir . '/system/Session/Handlers/BaseHandler.php', - 'CodeIgniter\\Session\\Handlers\\DatabaseHandler' => $baseDir . '/system/Session/Handlers/DatabaseHandler.php', - 'CodeIgniter\\Session\\Handlers\\Database\\MySQLiHandler' => $baseDir . '/system/Session/Handlers/Database/MySQLiHandler.php', - 'CodeIgniter\\Session\\Handlers\\Database\\PostgreHandler' => $baseDir . '/system/Session/Handlers/Database/PostgreHandler.php', - 'CodeIgniter\\Session\\Handlers\\FileHandler' => $baseDir . '/system/Session/Handlers/FileHandler.php', - 'CodeIgniter\\Session\\Handlers\\MemcachedHandler' => $baseDir . '/system/Session/Handlers/MemcachedHandler.php', - 'CodeIgniter\\Session\\Handlers\\RedisHandler' => $baseDir . '/system/Session/Handlers/RedisHandler.php', - 'CodeIgniter\\Session\\PersistsConnection' => $baseDir . '/system/Session/PersistsConnection.php', - 'CodeIgniter\\Session\\Session' => $baseDir . '/system/Session/Session.php', - 'CodeIgniter\\Session\\SessionInterface' => $baseDir . '/system/Session/SessionInterface.php', - 'CodeIgniter\\Superglobals' => $baseDir . '/system/Superglobals.php', - 'CodeIgniter\\Test\\CIUnitTestCase' => $baseDir . '/system/Test/CIUnitTestCase.php', - 'CodeIgniter\\Test\\ConfigFromArrayTrait' => $baseDir . '/system/Test/ConfigFromArrayTrait.php', - 'CodeIgniter\\Test\\Constraints\\SeeInDatabase' => $baseDir . '/system/Test/Constraints/SeeInDatabase.php', - 'CodeIgniter\\Test\\ControllerTestTrait' => $baseDir . '/system/Test/ControllerTestTrait.php', - 'CodeIgniter\\Test\\DOMParser' => $baseDir . '/system/Test/DOMParser.php', - 'CodeIgniter\\Test\\DatabaseTestTrait' => $baseDir . '/system/Test/DatabaseTestTrait.php', - 'CodeIgniter\\Test\\Fabricator' => $baseDir . '/system/Test/Fabricator.php', - 'CodeIgniter\\Test\\FeatureTestTrait' => $baseDir . '/system/Test/FeatureTestTrait.php', - 'CodeIgniter\\Test\\FilterTestTrait' => $baseDir . '/system/Test/FilterTestTrait.php', - 'CodeIgniter\\Test\\Filters\\CITestStreamFilter' => $baseDir . '/system/Test/Filters/CITestStreamFilter.php', - 'CodeIgniter\\Test\\IniTestTrait' => $baseDir . '/system/Test/IniTestTrait.php', - 'CodeIgniter\\Test\\Interfaces\\FabricatorModel' => $baseDir . '/system/Test/Interfaces/FabricatorModel.php', - 'CodeIgniter\\Test\\Mock\\MockAppConfig' => $baseDir . '/system/Test/Mock/MockAppConfig.php', - 'CodeIgniter\\Test\\Mock\\MockAutoload' => $baseDir . '/system/Test/Mock/MockAutoload.php', - 'CodeIgniter\\Test\\Mock\\MockBuilder' => $baseDir . '/system/Test/Mock/MockBuilder.php', - 'CodeIgniter\\Test\\Mock\\MockCLIConfig' => $baseDir . '/system/Test/Mock/MockCLIConfig.php', - 'CodeIgniter\\Test\\Mock\\MockCURLRequest' => $baseDir . '/system/Test/Mock/MockCURLRequest.php', - 'CodeIgniter\\Test\\Mock\\MockCache' => $baseDir . '/system/Test/Mock/MockCache.php', - 'CodeIgniter\\Test\\Mock\\MockCodeIgniter' => $baseDir . '/system/Test/Mock/MockCodeIgniter.php', - 'CodeIgniter\\Test\\Mock\\MockConnection' => $baseDir . '/system/Test/Mock/MockConnection.php', - 'CodeIgniter\\Test\\Mock\\MockEmail' => $baseDir . '/system/Test/Mock/MockEmail.php', - 'CodeIgniter\\Test\\Mock\\MockEvents' => $baseDir . '/system/Test/Mock/MockEvents.php', - 'CodeIgniter\\Test\\Mock\\MockFileLogger' => $baseDir . '/system/Test/Mock/MockFileLogger.php', - 'CodeIgniter\\Test\\Mock\\MockIncomingRequest' => $baseDir . '/system/Test/Mock/MockIncomingRequest.php', - 'CodeIgniter\\Test\\Mock\\MockInputOutput' => $baseDir . '/system/Test/Mock/MockInputOutput.php', - 'CodeIgniter\\Test\\Mock\\MockLanguage' => $baseDir . '/system/Test/Mock/MockLanguage.php', - 'CodeIgniter\\Test\\Mock\\MockLogger' => $baseDir . '/system/Test/Mock/MockLogger.php', - 'CodeIgniter\\Test\\Mock\\MockQuery' => $baseDir . '/system/Test/Mock/MockQuery.php', - 'CodeIgniter\\Test\\Mock\\MockResourceController' => $baseDir . '/system/Test/Mock/MockResourceController.php', - 'CodeIgniter\\Test\\Mock\\MockResourcePresenter' => $baseDir . '/system/Test/Mock/MockResourcePresenter.php', - 'CodeIgniter\\Test\\Mock\\MockResponse' => $baseDir . '/system/Test/Mock/MockResponse.php', - 'CodeIgniter\\Test\\Mock\\MockResult' => $baseDir . '/system/Test/Mock/MockResult.php', - 'CodeIgniter\\Test\\Mock\\MockSecurity' => $baseDir . '/system/Test/Mock/MockSecurity.php', - 'CodeIgniter\\Test\\Mock\\MockServices' => $baseDir . '/system/Test/Mock/MockServices.php', - 'CodeIgniter\\Test\\Mock\\MockSession' => $baseDir . '/system/Test/Mock/MockSession.php', - 'CodeIgniter\\Test\\Mock\\MockTable' => $baseDir . '/system/Test/Mock/MockTable.php', - 'CodeIgniter\\Test\\PhpStreamWrapper' => $baseDir . '/system/Test/PhpStreamWrapper.php', - 'CodeIgniter\\Test\\ReflectionHelper' => $baseDir . '/system/Test/ReflectionHelper.php', - 'CodeIgniter\\Test\\StreamFilterTrait' => $baseDir . '/system/Test/StreamFilterTrait.php', - 'CodeIgniter\\Test\\TestLogger' => $baseDir . '/system/Test/TestLogger.php', - 'CodeIgniter\\Test\\TestResponse' => $baseDir . '/system/Test/TestResponse.php', - 'CodeIgniter\\Test\\Utilities\\NativeHeadersStack' => $baseDir . '/system/Test/Utilities/NativeHeadersStack.php', - 'CodeIgniter\\Throttle\\Throttler' => $baseDir . '/system/Throttle/Throttler.php', - 'CodeIgniter\\Throttle\\ThrottlerInterface' => $baseDir . '/system/Throttle/ThrottlerInterface.php', - 'CodeIgniter\\Traits\\ConditionalTrait' => $baseDir . '/system/Traits/ConditionalTrait.php', - 'CodeIgniter\\Traits\\PropertiesTrait' => $baseDir . '/system/Traits/PropertiesTrait.php', - 'CodeIgniter\\Typography\\Typography' => $baseDir . '/system/Typography/Typography.php', - 'CodeIgniter\\Validation\\CreditCardRules' => $baseDir . '/system/Validation/CreditCardRules.php', - 'CodeIgniter\\Validation\\DotArrayFilter' => $baseDir . '/system/Validation/DotArrayFilter.php', - 'CodeIgniter\\Validation\\Exceptions\\ValidationException' => $baseDir . '/system/Validation/Exceptions/ValidationException.php', - 'CodeIgniter\\Validation\\FileRules' => $baseDir . '/system/Validation/FileRules.php', - 'CodeIgniter\\Validation\\FormatRules' => $baseDir . '/system/Validation/FormatRules.php', - 'CodeIgniter\\Validation\\Rules' => $baseDir . '/system/Validation/Rules.php', - 'CodeIgniter\\Validation\\StrictRules\\CreditCardRules' => $baseDir . '/system/Validation/StrictRules/CreditCardRules.php', - 'CodeIgniter\\Validation\\StrictRules\\FileRules' => $baseDir . '/system/Validation/StrictRules/FileRules.php', - 'CodeIgniter\\Validation\\StrictRules\\FormatRules' => $baseDir . '/system/Validation/StrictRules/FormatRules.php', - 'CodeIgniter\\Validation\\StrictRules\\Rules' => $baseDir . '/system/Validation/StrictRules/Rules.php', - 'CodeIgniter\\Validation\\Validation' => $baseDir . '/system/Validation/Validation.php', - 'CodeIgniter\\Validation\\ValidationInterface' => $baseDir . '/system/Validation/ValidationInterface.php', - 'CodeIgniter\\View\\Cell' => $baseDir . '/system/View/Cell.php', - 'CodeIgniter\\View\\Cells\\Cell' => $baseDir . '/system/View/Cells/Cell.php', - 'CodeIgniter\\View\\Exceptions\\ViewException' => $baseDir . '/system/View/Exceptions/ViewException.php', - 'CodeIgniter\\View\\Filters' => $baseDir . '/system/View/Filters.php', - 'CodeIgniter\\View\\Parser' => $baseDir . '/system/View/Parser.php', - 'CodeIgniter\\View\\Plugins' => $baseDir . '/system/View/Plugins.php', - 'CodeIgniter\\View\\RendererInterface' => $baseDir . '/system/View/RendererInterface.php', - 'CodeIgniter\\View\\Table' => $baseDir . '/system/View/Table.php', - 'CodeIgniter\\View\\View' => $baseDir . '/system/View/View.php', - 'CodeIgniter\\View\\ViewDecoratorInterface' => $baseDir . '/system/View/ViewDecoratorInterface.php', - 'CodeIgniter\\View\\ViewDecoratorTrait' => $baseDir . '/system/View/ViewDecoratorTrait.php', - 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', - 'Composer\\Pcre\\MatchAllResult' => $vendorDir . '/composer/pcre/src/MatchAllResult.php', - 'Composer\\Pcre\\MatchAllStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchAllStrictGroupsResult.php', - 'Composer\\Pcre\\MatchAllWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchAllWithOffsetsResult.php', - 'Composer\\Pcre\\MatchResult' => $vendorDir . '/composer/pcre/src/MatchResult.php', - 'Composer\\Pcre\\MatchStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchStrictGroupsResult.php', - 'Composer\\Pcre\\MatchWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchWithOffsetsResult.php', - 'Composer\\Pcre\\PHPStan\\InvalidRegexPatternRule' => $vendorDir . '/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php', - 'Composer\\Pcre\\PHPStan\\PregMatchFlags' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchFlags.php', - 'Composer\\Pcre\\PHPStan\\PregMatchParameterOutTypeExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php', - 'Composer\\Pcre\\PHPStan\\PregMatchTypeSpecifyingExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php', - 'Composer\\Pcre\\PHPStan\\PregReplaceCallbackClosureTypeExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php', - 'Composer\\Pcre\\PHPStan\\UnsafeStrictGroupsCallRule' => $vendorDir . '/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php', - 'Composer\\Pcre\\PcreException' => $vendorDir . '/composer/pcre/src/PcreException.php', - 'Composer\\Pcre\\Preg' => $vendorDir . '/composer/pcre/src/Preg.php', - 'Composer\\Pcre\\Regex' => $vendorDir . '/composer/pcre/src/Regex.php', - 'Composer\\Pcre\\ReplaceResult' => $vendorDir . '/composer/pcre/src/ReplaceResult.php', - 'Composer\\Pcre\\UnexpectedNullMatchException' => $vendorDir . '/composer/pcre/src/UnexpectedNullMatchException.php', - 'Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php', - 'Composer\\Semver\\CompilingMatcher' => $vendorDir . '/composer/semver/src/CompilingMatcher.php', - 'Composer\\Semver\\Constraint\\Bound' => $vendorDir . '/composer/semver/src/Constraint/Bound.php', - 'Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php', - 'Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php', - 'Composer\\Semver\\Constraint\\MatchAllConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchAllConstraint.php', - 'Composer\\Semver\\Constraint\\MatchNoneConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchNoneConstraint.php', - 'Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php', - 'Composer\\Semver\\Interval' => $vendorDir . '/composer/semver/src/Interval.php', - 'Composer\\Semver\\Intervals' => $vendorDir . '/composer/semver/src/Intervals.php', - 'Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php', - 'Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php', - 'Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php', - 'Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php', - 'Composer\\XdebugHandler\\Status' => $vendorDir . '/composer/xdebug-handler/src/Status.php', - 'Composer\\XdebugHandler\\XdebugHandler' => $vendorDir . '/composer/xdebug-handler/src/XdebugHandler.php', - 'DeepCopy\\DeepCopy' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php', - 'DeepCopy\\Exception\\CloneException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php', - 'DeepCopy\\Exception\\PropertyException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php', - 'DeepCopy\\Filter\\ChainableFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/ChainableFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', - 'DeepCopy\\Filter\\Filter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php', - 'DeepCopy\\Filter\\KeepFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php', - 'DeepCopy\\Filter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php', - 'DeepCopy\\Filter\\SetNullFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php', - 'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php', - 'DeepCopy\\Matcher\\Matcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php', - 'DeepCopy\\Matcher\\PropertyMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php', - 'DeepCopy\\Matcher\\PropertyNameMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php', - 'DeepCopy\\Matcher\\PropertyTypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php', - 'DeepCopy\\Reflection\\ReflectionHelper' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php', - 'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php', - 'DeepCopy\\TypeFilter\\Date\\DatePeriodFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DatePeriodFilter.php', - 'DeepCopy\\TypeFilter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php', - 'DeepCopy\\TypeFilter\\ShallowCopyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', - 'DeepCopy\\TypeFilter\\TypeFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', - 'DeepCopy\\TypeMatcher\\TypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', - 'Deprecated' => $vendorDir . '/symfony/polyfill-php84/Resources/stubs/Deprecated.php', - 'Ergebnis\\AgentDetector\\Detector' => $vendorDir . '/ergebnis/agent-detector/src/Detector.php', - 'Evenement\\EventEmitter' => $vendorDir . '/evenement/evenement/src/EventEmitter.php', - 'Evenement\\EventEmitterInterface' => $vendorDir . '/evenement/evenement/src/EventEmitterInterface.php', - 'Evenement\\EventEmitterTrait' => $vendorDir . '/evenement/evenement/src/EventEmitterTrait.php', - 'Faker\\Calculator\\Ean' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Ean.php', - 'Faker\\Calculator\\Iban' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Iban.php', - 'Faker\\Calculator\\Inn' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Inn.php', - 'Faker\\Calculator\\Isbn' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Isbn.php', - 'Faker\\Calculator\\Luhn' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/Luhn.php', - 'Faker\\Calculator\\TCNo' => $vendorDir . '/fakerphp/faker/src/Faker/Calculator/TCNo.php', - 'Faker\\ChanceGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/ChanceGenerator.php', - 'Faker\\Container\\Container' => $vendorDir . '/fakerphp/faker/src/Faker/Container/Container.php', - 'Faker\\Container\\ContainerBuilder' => $vendorDir . '/fakerphp/faker/src/Faker/Container/ContainerBuilder.php', - 'Faker\\Container\\ContainerException' => $vendorDir . '/fakerphp/faker/src/Faker/Container/ContainerException.php', - 'Faker\\Container\\ContainerInterface' => $vendorDir . '/fakerphp/faker/src/Faker/Container/ContainerInterface.php', - 'Faker\\Container\\NotInContainerException' => $vendorDir . '/fakerphp/faker/src/Faker/Container/NotInContainerException.php', - 'Faker\\Core\\Barcode' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Barcode.php', - 'Faker\\Core\\Blood' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Blood.php', - 'Faker\\Core\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Color.php', - 'Faker\\Core\\Coordinates' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Coordinates.php', - 'Faker\\Core\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Core/DateTime.php', - 'Faker\\Core\\File' => $vendorDir . '/fakerphp/faker/src/Faker/Core/File.php', - 'Faker\\Core\\Number' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Number.php', - 'Faker\\Core\\Uuid' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Uuid.php', - 'Faker\\Core\\Version' => $vendorDir . '/fakerphp/faker/src/Faker/Core/Version.php', - 'Faker\\DefaultGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/DefaultGenerator.php', - 'Faker\\Documentor' => $vendorDir . '/fakerphp/faker/src/Faker/Documentor.php', - 'Faker\\Extension\\AddressExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/AddressExtension.php', - 'Faker\\Extension\\BarcodeExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/BarcodeExtension.php', - 'Faker\\Extension\\BloodExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/BloodExtension.php', - 'Faker\\Extension\\ColorExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/ColorExtension.php', - 'Faker\\Extension\\CompanyExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/CompanyExtension.php', - 'Faker\\Extension\\CountryExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/CountryExtension.php', - 'Faker\\Extension\\DateTimeExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/DateTimeExtension.php', - 'Faker\\Extension\\Extension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/Extension.php', - 'Faker\\Extension\\ExtensionNotFound' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/ExtensionNotFound.php', - 'Faker\\Extension\\FileExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/FileExtension.php', - 'Faker\\Extension\\GeneratorAwareExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/GeneratorAwareExtension.php', - 'Faker\\Extension\\GeneratorAwareExtensionTrait' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/GeneratorAwareExtensionTrait.php', - 'Faker\\Extension\\Helper' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/Helper.php', - 'Faker\\Extension\\NumberExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/NumberExtension.php', - 'Faker\\Extension\\PersonExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/PersonExtension.php', - 'Faker\\Extension\\PhoneNumberExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/PhoneNumberExtension.php', - 'Faker\\Extension\\UuidExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/UuidExtension.php', - 'Faker\\Extension\\VersionExtension' => $vendorDir . '/fakerphp/faker/src/Faker/Extension/VersionExtension.php', - 'Faker\\Factory' => $vendorDir . '/fakerphp/faker/src/Faker/Factory.php', - 'Faker\\Generator' => $vendorDir . '/fakerphp/faker/src/Faker/Generator.php', - 'Faker\\Guesser\\Name' => $vendorDir . '/fakerphp/faker/src/Faker/Guesser/Name.php', - 'Faker\\ORM\\CakePHP\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php', - 'Faker\\ORM\\CakePHP\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/CakePHP/EntityPopulator.php', - 'Faker\\ORM\\CakePHP\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/CakePHP/Populator.php', - 'Faker\\ORM\\Doctrine\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php', - 'Faker\\ORM\\Doctrine\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Doctrine/EntityPopulator.php', - 'Faker\\ORM\\Doctrine\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php', - 'Faker\\ORM\\Mandango\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Mandango/ColumnTypeGuesser.php', - 'Faker\\ORM\\Mandango\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Mandango/EntityPopulator.php', - 'Faker\\ORM\\Mandango\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Mandango/Populator.php', - 'Faker\\ORM\\Propel2\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel2/ColumnTypeGuesser.php', - 'Faker\\ORM\\Propel2\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel2/EntityPopulator.php', - 'Faker\\ORM\\Propel2\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel2/Populator.php', - 'Faker\\ORM\\Propel\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel/ColumnTypeGuesser.php', - 'Faker\\ORM\\Propel\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel/EntityPopulator.php', - 'Faker\\ORM\\Propel\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Propel/Populator.php', - 'Faker\\ORM\\Spot\\ColumnTypeGuesser' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Spot/ColumnTypeGuesser.php', - 'Faker\\ORM\\Spot\\EntityPopulator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Spot/EntityPopulator.php', - 'Faker\\ORM\\Spot\\Populator' => $vendorDir . '/fakerphp/faker/src/Faker/ORM/Spot/Populator.php', - 'Faker\\Provider\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Address.php', - 'Faker\\Provider\\Barcode' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Barcode.php', - 'Faker\\Provider\\Base' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Base.php', - 'Faker\\Provider\\Biased' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Biased.php', - 'Faker\\Provider\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Color.php', - 'Faker\\Provider\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Company.php', - 'Faker\\Provider\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/DateTime.php', - 'Faker\\Provider\\File' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/File.php', - 'Faker\\Provider\\HtmlLorem' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/HtmlLorem.php', - 'Faker\\Provider\\Image' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Image.php', - 'Faker\\Provider\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Internet.php', - 'Faker\\Provider\\Lorem' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Lorem.php', - 'Faker\\Provider\\Medical' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Medical.php', - 'Faker\\Provider\\Miscellaneous' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Miscellaneous.php', - 'Faker\\Provider\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Payment.php', - 'Faker\\Provider\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Person.php', - 'Faker\\Provider\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/PhoneNumber.php', - 'Faker\\Provider\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Text.php', - 'Faker\\Provider\\UserAgent' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/UserAgent.php', - 'Faker\\Provider\\Uuid' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/Uuid.php', - 'Faker\\Provider\\ar_EG\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Address.php', - 'Faker\\Provider\\ar_EG\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Color.php', - 'Faker\\Provider\\ar_EG\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Company.php', - 'Faker\\Provider\\ar_EG\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Internet.php', - 'Faker\\Provider\\ar_EG\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Payment.php', - 'Faker\\Provider\\ar_EG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Person.php', - 'Faker\\Provider\\ar_EG\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_EG/Text.php', - 'Faker\\Provider\\ar_JO\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Address.php', - 'Faker\\Provider\\ar_JO\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Company.php', - 'Faker\\Provider\\ar_JO\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Internet.php', - 'Faker\\Provider\\ar_JO\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Person.php', - 'Faker\\Provider\\ar_JO\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_JO/Text.php', - 'Faker\\Provider\\ar_SA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Address.php', - 'Faker\\Provider\\ar_SA\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Color.php', - 'Faker\\Provider\\ar_SA\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Company.php', - 'Faker\\Provider\\ar_SA\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Internet.php', - 'Faker\\Provider\\ar_SA\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Payment.php', - 'Faker\\Provider\\ar_SA\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Person.php', - 'Faker\\Provider\\ar_SA\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ar_SA/Text.php', - 'Faker\\Provider\\at_AT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/at_AT/Payment.php', - 'Faker\\Provider\\bg_BG\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bg_BG/Internet.php', - 'Faker\\Provider\\bg_BG\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bg_BG/Payment.php', - 'Faker\\Provider\\bg_BG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bg_BG/Person.php', - 'Faker\\Provider\\bg_BG\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bg_BG/PhoneNumber.php', - 'Faker\\Provider\\bn_BD\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/Address.php', - 'Faker\\Provider\\bn_BD\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/Company.php', - 'Faker\\Provider\\bn_BD\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/Person.php', - 'Faker\\Provider\\bn_BD\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/PhoneNumber.php', - 'Faker\\Provider\\bn_BD\\Utils' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/bn_BD/Utils.php', - 'Faker\\Provider\\cs_CZ\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Address.php', - 'Faker\\Provider\\cs_CZ\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Company.php', - 'Faker\\Provider\\cs_CZ\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/DateTime.php', - 'Faker\\Provider\\cs_CZ\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Internet.php', - 'Faker\\Provider\\cs_CZ\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Payment.php', - 'Faker\\Provider\\cs_CZ\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Person.php', - 'Faker\\Provider\\cs_CZ\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/PhoneNumber.php', - 'Faker\\Provider\\cs_CZ\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Text.php', - 'Faker\\Provider\\da_DK\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Address.php', - 'Faker\\Provider\\da_DK\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Company.php', - 'Faker\\Provider\\da_DK\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Internet.php', - 'Faker\\Provider\\da_DK\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Payment.php', - 'Faker\\Provider\\da_DK\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/Person.php', - 'Faker\\Provider\\da_DK\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/da_DK/PhoneNumber.php', - 'Faker\\Provider\\de_AT\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Address.php', - 'Faker\\Provider\\de_AT\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Company.php', - 'Faker\\Provider\\de_AT\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Internet.php', - 'Faker\\Provider\\de_AT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Payment.php', - 'Faker\\Provider\\de_AT\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Person.php', - 'Faker\\Provider\\de_AT\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/PhoneNumber.php', - 'Faker\\Provider\\de_AT\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_AT/Text.php', - 'Faker\\Provider\\de_CH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Address.php', - 'Faker\\Provider\\de_CH\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Company.php', - 'Faker\\Provider\\de_CH\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Internet.php', - 'Faker\\Provider\\de_CH\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Payment.php', - 'Faker\\Provider\\de_CH\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Person.php', - 'Faker\\Provider\\de_CH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/PhoneNumber.php', - 'Faker\\Provider\\de_CH\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_CH/Text.php', - 'Faker\\Provider\\de_DE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Address.php', - 'Faker\\Provider\\de_DE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Company.php', - 'Faker\\Provider\\de_DE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Internet.php', - 'Faker\\Provider\\de_DE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Payment.php', - 'Faker\\Provider\\de_DE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Person.php', - 'Faker\\Provider\\de_DE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/PhoneNumber.php', - 'Faker\\Provider\\de_DE\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/de_DE/Text.php', - 'Faker\\Provider\\el_CY\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Address.php', - 'Faker\\Provider\\el_CY\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Company.php', - 'Faker\\Provider\\el_CY\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Internet.php', - 'Faker\\Provider\\el_CY\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Payment.php', - 'Faker\\Provider\\el_CY\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/Person.php', - 'Faker\\Provider\\el_CY\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_CY/PhoneNumber.php', - 'Faker\\Provider\\el_GR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Address.php', - 'Faker\\Provider\\el_GR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Company.php', - 'Faker\\Provider\\el_GR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Payment.php', - 'Faker\\Provider\\el_GR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Person.php', - 'Faker\\Provider\\el_GR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/PhoneNumber.php', - 'Faker\\Provider\\el_GR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/el_GR/Text.php', - 'Faker\\Provider\\en_AU\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_AU/Address.php', - 'Faker\\Provider\\en_AU\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_AU/Internet.php', - 'Faker\\Provider\\en_AU\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_AU/PhoneNumber.php', - 'Faker\\Provider\\en_CA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_CA/Address.php', - 'Faker\\Provider\\en_CA\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_CA/PhoneNumber.php', - 'Faker\\Provider\\en_GB\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Address.php', - 'Faker\\Provider\\en_GB\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Company.php', - 'Faker\\Provider\\en_GB\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Internet.php', - 'Faker\\Provider\\en_GB\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Payment.php', - 'Faker\\Provider\\en_GB\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/Person.php', - 'Faker\\Provider\\en_GB\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_GB/PhoneNumber.php', - 'Faker\\Provider\\en_HK\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_HK/Address.php', - 'Faker\\Provider\\en_HK\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_HK/Internet.php', - 'Faker\\Provider\\en_HK\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_HK/PhoneNumber.php', - 'Faker\\Provider\\en_IN\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_IN/Address.php', - 'Faker\\Provider\\en_IN\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_IN/Internet.php', - 'Faker\\Provider\\en_IN\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_IN/Person.php', - 'Faker\\Provider\\en_IN\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_IN/PhoneNumber.php', - 'Faker\\Provider\\en_NG\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NG/Address.php', - 'Faker\\Provider\\en_NG\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NG/Internet.php', - 'Faker\\Provider\\en_NG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NG/Person.php', - 'Faker\\Provider\\en_NG\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NG/PhoneNumber.php', - 'Faker\\Provider\\en_NZ\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NZ/Address.php', - 'Faker\\Provider\\en_NZ\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NZ/Internet.php', - 'Faker\\Provider\\en_NZ\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_NZ/PhoneNumber.php', - 'Faker\\Provider\\en_PH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_PH/Address.php', - 'Faker\\Provider\\en_PH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_PH/PhoneNumber.php', - 'Faker\\Provider\\en_SG\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_SG/Address.php', - 'Faker\\Provider\\en_SG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_SG/Person.php', - 'Faker\\Provider\\en_SG\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_SG/PhoneNumber.php', - 'Faker\\Provider\\en_UG\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_UG/Address.php', - 'Faker\\Provider\\en_UG\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_UG/Internet.php', - 'Faker\\Provider\\en_UG\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_UG/Person.php', - 'Faker\\Provider\\en_UG\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_UG/PhoneNumber.php', - 'Faker\\Provider\\en_US\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Address.php', - 'Faker\\Provider\\en_US\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Company.php', - 'Faker\\Provider\\en_US\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Payment.php', - 'Faker\\Provider\\en_US\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Person.php', - 'Faker\\Provider\\en_US\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/PhoneNumber.php', - 'Faker\\Provider\\en_US\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_US/Text.php', - 'Faker\\Provider\\en_ZA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/Address.php', - 'Faker\\Provider\\en_ZA\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/Company.php', - 'Faker\\Provider\\en_ZA\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/Internet.php', - 'Faker\\Provider\\en_ZA\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/Person.php', - 'Faker\\Provider\\en_ZA\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/en_ZA/PhoneNumber.php', - 'Faker\\Provider\\es_AR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_AR/Address.php', - 'Faker\\Provider\\es_AR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_AR/Company.php', - 'Faker\\Provider\\es_AR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_AR/Person.php', - 'Faker\\Provider\\es_AR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_AR/PhoneNumber.php', - 'Faker\\Provider\\es_ES\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Address.php', - 'Faker\\Provider\\es_ES\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Color.php', - 'Faker\\Provider\\es_ES\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Company.php', - 'Faker\\Provider\\es_ES\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Internet.php', - 'Faker\\Provider\\es_ES\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Payment.php', - 'Faker\\Provider\\es_ES\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Person.php', - 'Faker\\Provider\\es_ES\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/PhoneNumber.php', - 'Faker\\Provider\\es_ES\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_ES/Text.php', - 'Faker\\Provider\\es_PE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_PE/Address.php', - 'Faker\\Provider\\es_PE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_PE/Company.php', - 'Faker\\Provider\\es_PE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_PE/Person.php', - 'Faker\\Provider\\es_PE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_PE/PhoneNumber.php', - 'Faker\\Provider\\es_VE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/Address.php', - 'Faker\\Provider\\es_VE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/Company.php', - 'Faker\\Provider\\es_VE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/Internet.php', - 'Faker\\Provider\\es_VE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/Person.php', - 'Faker\\Provider\\es_VE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/es_VE/PhoneNumber.php', - 'Faker\\Provider\\et_EE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/et_EE/Person.php', - 'Faker\\Provider\\fa_IR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Address.php', - 'Faker\\Provider\\fa_IR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Company.php', - 'Faker\\Provider\\fa_IR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Internet.php', - 'Faker\\Provider\\fa_IR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Person.php', - 'Faker\\Provider\\fa_IR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/PhoneNumber.php', - 'Faker\\Provider\\fa_IR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fa_IR/Text.php', - 'Faker\\Provider\\fi_FI\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Address.php', - 'Faker\\Provider\\fi_FI\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Company.php', - 'Faker\\Provider\\fi_FI\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Internet.php', - 'Faker\\Provider\\fi_FI\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Payment.php', - 'Faker\\Provider\\fi_FI\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/Person.php', - 'Faker\\Provider\\fi_FI\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fi_FI/PhoneNumber.php', - 'Faker\\Provider\\fr_BE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Address.php', - 'Faker\\Provider\\fr_BE\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Color.php', - 'Faker\\Provider\\fr_BE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Company.php', - 'Faker\\Provider\\fr_BE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Internet.php', - 'Faker\\Provider\\fr_BE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Payment.php', - 'Faker\\Provider\\fr_BE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/Person.php', - 'Faker\\Provider\\fr_BE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_BE/PhoneNumber.php', - 'Faker\\Provider\\fr_CA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Address.php', - 'Faker\\Provider\\fr_CA\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Color.php', - 'Faker\\Provider\\fr_CA\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Company.php', - 'Faker\\Provider\\fr_CA\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Person.php', - 'Faker\\Provider\\fr_CA\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CA/Text.php', - 'Faker\\Provider\\fr_CH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Address.php', - 'Faker\\Provider\\fr_CH\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Color.php', - 'Faker\\Provider\\fr_CH\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Company.php', - 'Faker\\Provider\\fr_CH\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Internet.php', - 'Faker\\Provider\\fr_CH\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Payment.php', - 'Faker\\Provider\\fr_CH\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Person.php', - 'Faker\\Provider\\fr_CH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/PhoneNumber.php', - 'Faker\\Provider\\fr_CH\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_CH/Text.php', - 'Faker\\Provider\\fr_FR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Address.php', - 'Faker\\Provider\\fr_FR\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Color.php', - 'Faker\\Provider\\fr_FR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Company.php', - 'Faker\\Provider\\fr_FR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Internet.php', - 'Faker\\Provider\\fr_FR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Payment.php', - 'Faker\\Provider\\fr_FR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Person.php', - 'Faker\\Provider\\fr_FR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php', - 'Faker\\Provider\\fr_FR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/fr_FR/Text.php', - 'Faker\\Provider\\he_IL\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/Address.php', - 'Faker\\Provider\\he_IL\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/Company.php', - 'Faker\\Provider\\he_IL\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/Payment.php', - 'Faker\\Provider\\he_IL\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/Person.php', - 'Faker\\Provider\\he_IL\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/he_IL/PhoneNumber.php', - 'Faker\\Provider\\hr_HR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/Address.php', - 'Faker\\Provider\\hr_HR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/Company.php', - 'Faker\\Provider\\hr_HR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/Payment.php', - 'Faker\\Provider\\hr_HR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/Person.php', - 'Faker\\Provider\\hr_HR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hr_HR/PhoneNumber.php', - 'Faker\\Provider\\hu_HU\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Address.php', - 'Faker\\Provider\\hu_HU\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Company.php', - 'Faker\\Provider\\hu_HU\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Payment.php', - 'Faker\\Provider\\hu_HU\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Person.php', - 'Faker\\Provider\\hu_HU\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/PhoneNumber.php', - 'Faker\\Provider\\hu_HU\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hu_HU/Text.php', - 'Faker\\Provider\\hy_AM\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Address.php', - 'Faker\\Provider\\hy_AM\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Color.php', - 'Faker\\Provider\\hy_AM\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Company.php', - 'Faker\\Provider\\hy_AM\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Internet.php', - 'Faker\\Provider\\hy_AM\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/Person.php', - 'Faker\\Provider\\hy_AM\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/hy_AM/PhoneNumber.php', - 'Faker\\Provider\\id_ID\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Address.php', - 'Faker\\Provider\\id_ID\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Color.php', - 'Faker\\Provider\\id_ID\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Company.php', - 'Faker\\Provider\\id_ID\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Internet.php', - 'Faker\\Provider\\id_ID\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/Person.php', - 'Faker\\Provider\\id_ID\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/id_ID/PhoneNumber.php', - 'Faker\\Provider\\is_IS\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Address.php', - 'Faker\\Provider\\is_IS\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Company.php', - 'Faker\\Provider\\is_IS\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Internet.php', - 'Faker\\Provider\\is_IS\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Payment.php', - 'Faker\\Provider\\is_IS\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/Person.php', - 'Faker\\Provider\\is_IS\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/is_IS/PhoneNumber.php', - 'Faker\\Provider\\it_CH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Address.php', - 'Faker\\Provider\\it_CH\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Company.php', - 'Faker\\Provider\\it_CH\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Internet.php', - 'Faker\\Provider\\it_CH\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Payment.php', - 'Faker\\Provider\\it_CH\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Person.php', - 'Faker\\Provider\\it_CH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/PhoneNumber.php', - 'Faker\\Provider\\it_CH\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_CH/Text.php', - 'Faker\\Provider\\it_IT\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Address.php', - 'Faker\\Provider\\it_IT\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Company.php', - 'Faker\\Provider\\it_IT\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Internet.php', - 'Faker\\Provider\\it_IT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Payment.php', - 'Faker\\Provider\\it_IT\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Person.php', - 'Faker\\Provider\\it_IT\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/PhoneNumber.php', - 'Faker\\Provider\\it_IT\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/it_IT/Text.php', - 'Faker\\Provider\\ja_JP\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Address.php', - 'Faker\\Provider\\ja_JP\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Company.php', - 'Faker\\Provider\\ja_JP\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Internet.php', - 'Faker\\Provider\\ja_JP\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Person.php', - 'Faker\\Provider\\ja_JP\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/PhoneNumber.php', - 'Faker\\Provider\\ja_JP\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ja_JP/Text.php', - 'Faker\\Provider\\ka_GE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Address.php', - 'Faker\\Provider\\ka_GE\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Color.php', - 'Faker\\Provider\\ka_GE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Company.php', - 'Faker\\Provider\\ka_GE\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/DateTime.php', - 'Faker\\Provider\\ka_GE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Internet.php', - 'Faker\\Provider\\ka_GE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Payment.php', - 'Faker\\Provider\\ka_GE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Person.php', - 'Faker\\Provider\\ka_GE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/PhoneNumber.php', - 'Faker\\Provider\\ka_GE\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ka_GE/Text.php', - 'Faker\\Provider\\kk_KZ\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Address.php', - 'Faker\\Provider\\kk_KZ\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Color.php', - 'Faker\\Provider\\kk_KZ\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Company.php', - 'Faker\\Provider\\kk_KZ\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Internet.php', - 'Faker\\Provider\\kk_KZ\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Payment.php', - 'Faker\\Provider\\kk_KZ\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Person.php', - 'Faker\\Provider\\kk_KZ\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/PhoneNumber.php', - 'Faker\\Provider\\kk_KZ\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Text.php', - 'Faker\\Provider\\ko_KR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Address.php', - 'Faker\\Provider\\ko_KR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Company.php', - 'Faker\\Provider\\ko_KR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Internet.php', - 'Faker\\Provider\\ko_KR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Person.php', - 'Faker\\Provider\\ko_KR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/PhoneNumber.php', - 'Faker\\Provider\\ko_KR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ko_KR/Text.php', - 'Faker\\Provider\\lt_LT\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Address.php', - 'Faker\\Provider\\lt_LT\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Company.php', - 'Faker\\Provider\\lt_LT\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Internet.php', - 'Faker\\Provider\\lt_LT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Payment.php', - 'Faker\\Provider\\lt_LT\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/Person.php', - 'Faker\\Provider\\lt_LT\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lt_LT/PhoneNumber.php', - 'Faker\\Provider\\lv_LV\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Address.php', - 'Faker\\Provider\\lv_LV\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Color.php', - 'Faker\\Provider\\lv_LV\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Internet.php', - 'Faker\\Provider\\lv_LV\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Payment.php', - 'Faker\\Provider\\lv_LV\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/Person.php', - 'Faker\\Provider\\lv_LV\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/lv_LV/PhoneNumber.php', - 'Faker\\Provider\\me_ME\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/Address.php', - 'Faker\\Provider\\me_ME\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/Company.php', - 'Faker\\Provider\\me_ME\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/Payment.php', - 'Faker\\Provider\\me_ME\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/Person.php', - 'Faker\\Provider\\me_ME\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/me_ME/PhoneNumber.php', - 'Faker\\Provider\\mn_MN\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/mn_MN/Person.php', - 'Faker\\Provider\\mn_MN\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/mn_MN/PhoneNumber.php', - 'Faker\\Provider\\ms_MY\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Address.php', - 'Faker\\Provider\\ms_MY\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Company.php', - 'Faker\\Provider\\ms_MY\\Miscellaneous' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Miscellaneous.php', - 'Faker\\Provider\\ms_MY\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Payment.php', - 'Faker\\Provider\\ms_MY\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/Person.php', - 'Faker\\Provider\\ms_MY\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ms_MY/PhoneNumber.php', - 'Faker\\Provider\\nb_NO\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/Address.php', - 'Faker\\Provider\\nb_NO\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/Company.php', - 'Faker\\Provider\\nb_NO\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/Payment.php', - 'Faker\\Provider\\nb_NO\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/Person.php', - 'Faker\\Provider\\nb_NO\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nb_NO/PhoneNumber.php', - 'Faker\\Provider\\ne_NP\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/Address.php', - 'Faker\\Provider\\ne_NP\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/Internet.php', - 'Faker\\Provider\\ne_NP\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/Payment.php', - 'Faker\\Provider\\ne_NP\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/Person.php', - 'Faker\\Provider\\ne_NP\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ne_NP/PhoneNumber.php', - 'Faker\\Provider\\nl_BE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Address.php', - 'Faker\\Provider\\nl_BE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Company.php', - 'Faker\\Provider\\nl_BE\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Internet.php', - 'Faker\\Provider\\nl_BE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Payment.php', - 'Faker\\Provider\\nl_BE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Person.php', - 'Faker\\Provider\\nl_BE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/PhoneNumber.php', - 'Faker\\Provider\\nl_BE\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_BE/Text.php', - 'Faker\\Provider\\nl_NL\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Address.php', - 'Faker\\Provider\\nl_NL\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Color.php', - 'Faker\\Provider\\nl_NL\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Company.php', - 'Faker\\Provider\\nl_NL\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Internet.php', - 'Faker\\Provider\\nl_NL\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Payment.php', - 'Faker\\Provider\\nl_NL\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Person.php', - 'Faker\\Provider\\nl_NL\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/PhoneNumber.php', - 'Faker\\Provider\\nl_NL\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/nl_NL/Text.php', - 'Faker\\Provider\\pl_PL\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Address.php', - 'Faker\\Provider\\pl_PL\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Color.php', - 'Faker\\Provider\\pl_PL\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Company.php', - 'Faker\\Provider\\pl_PL\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Internet.php', - 'Faker\\Provider\\pl_PL\\LicensePlate' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/LicensePlate.php', - 'Faker\\Provider\\pl_PL\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Payment.php', - 'Faker\\Provider\\pl_PL\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Person.php', - 'Faker\\Provider\\pl_PL\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/PhoneNumber.php', - 'Faker\\Provider\\pl_PL\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pl_PL/Text.php', - 'Faker\\Provider\\pt_BR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Address.php', - 'Faker\\Provider\\pt_BR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Company.php', - 'Faker\\Provider\\pt_BR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Internet.php', - 'Faker\\Provider\\pt_BR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Payment.php', - 'Faker\\Provider\\pt_BR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Person.php', - 'Faker\\Provider\\pt_BR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/PhoneNumber.php', - 'Faker\\Provider\\pt_BR\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_BR/Text.php', - 'Faker\\Provider\\pt_PT\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Address.php', - 'Faker\\Provider\\pt_PT\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Company.php', - 'Faker\\Provider\\pt_PT\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Internet.php', - 'Faker\\Provider\\pt_PT\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Payment.php', - 'Faker\\Provider\\pt_PT\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/Person.php', - 'Faker\\Provider\\pt_PT\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/pt_PT/PhoneNumber.php', - 'Faker\\Provider\\ro_MD\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/Address.php', - 'Faker\\Provider\\ro_MD\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/Payment.php', - 'Faker\\Provider\\ro_MD\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/Person.php', - 'Faker\\Provider\\ro_MD\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/PhoneNumber.php', - 'Faker\\Provider\\ro_MD\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_MD/Text.php', - 'Faker\\Provider\\ro_RO\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/Address.php', - 'Faker\\Provider\\ro_RO\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/Payment.php', - 'Faker\\Provider\\ro_RO\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/Person.php', - 'Faker\\Provider\\ro_RO\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/PhoneNumber.php', - 'Faker\\Provider\\ro_RO\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ro_RO/Text.php', - 'Faker\\Provider\\ru_RU\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Address.php', - 'Faker\\Provider\\ru_RU\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Color.php', - 'Faker\\Provider\\ru_RU\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Company.php', - 'Faker\\Provider\\ru_RU\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Internet.php', - 'Faker\\Provider\\ru_RU\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Payment.php', - 'Faker\\Provider\\ru_RU\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Person.php', - 'Faker\\Provider\\ru_RU\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/PhoneNumber.php', - 'Faker\\Provider\\ru_RU\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/ru_RU/Text.php', - 'Faker\\Provider\\sk_SK\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Address.php', - 'Faker\\Provider\\sk_SK\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Company.php', - 'Faker\\Provider\\sk_SK\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Internet.php', - 'Faker\\Provider\\sk_SK\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Payment.php', - 'Faker\\Provider\\sk_SK\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/Person.php', - 'Faker\\Provider\\sk_SK\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sk_SK/PhoneNumber.php', - 'Faker\\Provider\\sl_SI\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Address.php', - 'Faker\\Provider\\sl_SI\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Company.php', - 'Faker\\Provider\\sl_SI\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Internet.php', - 'Faker\\Provider\\sl_SI\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Payment.php', - 'Faker\\Provider\\sl_SI\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/Person.php', - 'Faker\\Provider\\sl_SI\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sl_SI/PhoneNumber.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Address.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Payment.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Person.php', - 'Faker\\Provider\\sr_Latn_RS\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Address.php', - 'Faker\\Provider\\sr_Latn_RS\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Payment.php', - 'Faker\\Provider\\sr_Latn_RS\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Person.php', - 'Faker\\Provider\\sr_RS\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_RS/Address.php', - 'Faker\\Provider\\sr_RS\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_RS/Payment.php', - 'Faker\\Provider\\sr_RS\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sr_RS/Person.php', - 'Faker\\Provider\\sv_SE\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Address.php', - 'Faker\\Provider\\sv_SE\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Company.php', - 'Faker\\Provider\\sv_SE\\Municipality' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Municipality.php', - 'Faker\\Provider\\sv_SE\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Payment.php', - 'Faker\\Provider\\sv_SE\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/Person.php', - 'Faker\\Provider\\sv_SE\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/sv_SE/PhoneNumber.php', - 'Faker\\Provider\\th_TH\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Address.php', - 'Faker\\Provider\\th_TH\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Color.php', - 'Faker\\Provider\\th_TH\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Company.php', - 'Faker\\Provider\\th_TH\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Internet.php', - 'Faker\\Provider\\th_TH\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Payment.php', - 'Faker\\Provider\\th_TH\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/Person.php', - 'Faker\\Provider\\th_TH\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/th_TH/PhoneNumber.php', - 'Faker\\Provider\\tr_TR\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Address.php', - 'Faker\\Provider\\tr_TR\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Color.php', - 'Faker\\Provider\\tr_TR\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Company.php', - 'Faker\\Provider\\tr_TR\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/DateTime.php', - 'Faker\\Provider\\tr_TR\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Internet.php', - 'Faker\\Provider\\tr_TR\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Payment.php', - 'Faker\\Provider\\tr_TR\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/Person.php', - 'Faker\\Provider\\tr_TR\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/tr_TR/PhoneNumber.php', - 'Faker\\Provider\\uk_UA\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Address.php', - 'Faker\\Provider\\uk_UA\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Color.php', - 'Faker\\Provider\\uk_UA\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Company.php', - 'Faker\\Provider\\uk_UA\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Internet.php', - 'Faker\\Provider\\uk_UA\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Payment.php', - 'Faker\\Provider\\uk_UA\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Person.php', - 'Faker\\Provider\\uk_UA\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/PhoneNumber.php', - 'Faker\\Provider\\uk_UA\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/uk_UA/Text.php', - 'Faker\\Provider\\vi_VN\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/Address.php', - 'Faker\\Provider\\vi_VN\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/Color.php', - 'Faker\\Provider\\vi_VN\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/Internet.php', - 'Faker\\Provider\\vi_VN\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/Person.php', - 'Faker\\Provider\\vi_VN\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/vi_VN/PhoneNumber.php', - 'Faker\\Provider\\zh_CN\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Address.php', - 'Faker\\Provider\\zh_CN\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Color.php', - 'Faker\\Provider\\zh_CN\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Company.php', - 'Faker\\Provider\\zh_CN\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/DateTime.php', - 'Faker\\Provider\\zh_CN\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Internet.php', - 'Faker\\Provider\\zh_CN\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Payment.php', - 'Faker\\Provider\\zh_CN\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/Person.php', - 'Faker\\Provider\\zh_CN\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_CN/PhoneNumber.php', - 'Faker\\Provider\\zh_TW\\Address' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Address.php', - 'Faker\\Provider\\zh_TW\\Color' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Color.php', - 'Faker\\Provider\\zh_TW\\Company' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Company.php', - 'Faker\\Provider\\zh_TW\\DateTime' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/DateTime.php', - 'Faker\\Provider\\zh_TW\\Internet' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Internet.php', - 'Faker\\Provider\\zh_TW\\Payment' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Payment.php', - 'Faker\\Provider\\zh_TW\\Person' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Person.php', - 'Faker\\Provider\\zh_TW\\PhoneNumber' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/PhoneNumber.php', - 'Faker\\Provider\\zh_TW\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Text.php', - 'Faker\\UniqueGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/UniqueGenerator.php', - 'Faker\\ValidGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/ValidGenerator.php', - 'Fidry\\CpuCoreCounter\\CpuCoreCounter' => $vendorDir . '/fidry/cpu-core-counter/src/CpuCoreCounter.php', - 'Fidry\\CpuCoreCounter\\Diagnoser' => $vendorDir . '/fidry/cpu-core-counter/src/Diagnoser.php', - 'Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php', - 'Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php', - 'Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php', - 'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\LscpuLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\LscpuPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php', - 'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => $vendorDir . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php', - 'Fidry\\CpuCoreCounter\\ParallelisationResult' => $vendorDir . '/fidry/cpu-core-counter/src/ParallelisationResult.php', - 'Kint\\CallFinder' => $vendorDir . '/kint-php/kint/src/CallFinder.php', - 'Kint\\FacadeInterface' => $vendorDir . '/kint-php/kint/src/FacadeInterface.php', - 'Kint\\Kint' => $vendorDir . '/kint-php/kint/src/Kint.php', - 'Kint\\Parser\\AbstractPlugin' => $vendorDir . '/kint-php/kint/src/Parser/AbstractPlugin.php', - 'Kint\\Parser\\ArrayLimitPlugin' => $vendorDir . '/kint-php/kint/src/Parser/ArrayLimitPlugin.php', - 'Kint\\Parser\\ArrayObjectPlugin' => $vendorDir . '/kint-php/kint/src/Parser/ArrayObjectPlugin.php', - 'Kint\\Parser\\Base64Plugin' => $vendorDir . '/kint-php/kint/src/Parser/Base64Plugin.php', - 'Kint\\Parser\\BinaryPlugin' => $vendorDir . '/kint-php/kint/src/Parser/BinaryPlugin.php', - 'Kint\\Parser\\BlacklistPlugin' => $vendorDir . '/kint-php/kint/src/Parser/BlacklistPlugin.php', - 'Kint\\Parser\\ClassHooksPlugin' => $vendorDir . '/kint-php/kint/src/Parser/ClassHooksPlugin.php', - 'Kint\\Parser\\ClassMethodsPlugin' => $vendorDir . '/kint-php/kint/src/Parser/ClassMethodsPlugin.php', - 'Kint\\Parser\\ClassStaticsPlugin' => $vendorDir . '/kint-php/kint/src/Parser/ClassStaticsPlugin.php', - 'Kint\\Parser\\ClassStringsPlugin' => $vendorDir . '/kint-php/kint/src/Parser/ClassStringsPlugin.php', - 'Kint\\Parser\\ClosurePlugin' => $vendorDir . '/kint-php/kint/src/Parser/ClosurePlugin.php', - 'Kint\\Parser\\ColorPlugin' => $vendorDir . '/kint-php/kint/src/Parser/ColorPlugin.php', - 'Kint\\Parser\\ConstructablePluginInterface' => $vendorDir . '/kint-php/kint/src/Parser/ConstructablePluginInterface.php', - 'Kint\\Parser\\DateTimePlugin' => $vendorDir . '/kint-php/kint/src/Parser/DateTimePlugin.php', - 'Kint\\Parser\\DomPlugin' => $vendorDir . '/kint-php/kint/src/Parser/DomPlugin.php', - 'Kint\\Parser\\EnumPlugin' => $vendorDir . '/kint-php/kint/src/Parser/EnumPlugin.php', - 'Kint\\Parser\\FsPathPlugin' => $vendorDir . '/kint-php/kint/src/Parser/FsPathPlugin.php', - 'Kint\\Parser\\HtmlPlugin' => $vendorDir . '/kint-php/kint/src/Parser/HtmlPlugin.php', - 'Kint\\Parser\\IteratorPlugin' => $vendorDir . '/kint-php/kint/src/Parser/IteratorPlugin.php', - 'Kint\\Parser\\JsonPlugin' => $vendorDir . '/kint-php/kint/src/Parser/JsonPlugin.php', - 'Kint\\Parser\\MicrotimePlugin' => $vendorDir . '/kint-php/kint/src/Parser/MicrotimePlugin.php', - 'Kint\\Parser\\MysqliPlugin' => $vendorDir . '/kint-php/kint/src/Parser/MysqliPlugin.php', - 'Kint\\Parser\\Parser' => $vendorDir . '/kint-php/kint/src/Parser/Parser.php', - 'Kint\\Parser\\PluginBeginInterface' => $vendorDir . '/kint-php/kint/src/Parser/PluginBeginInterface.php', - 'Kint\\Parser\\PluginCompleteInterface' => $vendorDir . '/kint-php/kint/src/Parser/PluginCompleteInterface.php', - 'Kint\\Parser\\PluginInterface' => $vendorDir . '/kint-php/kint/src/Parser/PluginInterface.php', - 'Kint\\Parser\\ProfilePlugin' => $vendorDir . '/kint-php/kint/src/Parser/ProfilePlugin.php', - 'Kint\\Parser\\ProxyPlugin' => $vendorDir . '/kint-php/kint/src/Parser/ProxyPlugin.php', - 'Kint\\Parser\\SerializePlugin' => $vendorDir . '/kint-php/kint/src/Parser/SerializePlugin.php', - 'Kint\\Parser\\SimpleXMLElementPlugin' => $vendorDir . '/kint-php/kint/src/Parser/SimpleXMLElementPlugin.php', - 'Kint\\Parser\\SplFileInfoPlugin' => $vendorDir . '/kint-php/kint/src/Parser/SplFileInfoPlugin.php', - 'Kint\\Parser\\StreamPlugin' => $vendorDir . '/kint-php/kint/src/Parser/StreamPlugin.php', - 'Kint\\Parser\\TablePlugin' => $vendorDir . '/kint-php/kint/src/Parser/TablePlugin.php', - 'Kint\\Parser\\ThrowablePlugin' => $vendorDir . '/kint-php/kint/src/Parser/ThrowablePlugin.php', - 'Kint\\Parser\\TimestampPlugin' => $vendorDir . '/kint-php/kint/src/Parser/TimestampPlugin.php', - 'Kint\\Parser\\ToStringPlugin' => $vendorDir . '/kint-php/kint/src/Parser/ToStringPlugin.php', - 'Kint\\Parser\\TracePlugin' => $vendorDir . '/kint-php/kint/src/Parser/TracePlugin.php', - 'Kint\\Parser\\XmlPlugin' => $vendorDir . '/kint-php/kint/src/Parser/XmlPlugin.php', - 'Kint\\Renderer\\AbstractRenderer' => $vendorDir . '/kint-php/kint/src/Renderer/AbstractRenderer.php', - 'Kint\\Renderer\\AssetRendererTrait' => $vendorDir . '/kint-php/kint/src/Renderer/AssetRendererTrait.php', - 'Kint\\Renderer\\CliRenderer' => $vendorDir . '/kint-php/kint/src/Renderer/CliRenderer.php', - 'Kint\\Renderer\\ConstructableRendererInterface' => $vendorDir . '/kint-php/kint/src/Renderer/ConstructableRendererInterface.php', - 'Kint\\Renderer\\PlainRenderer' => $vendorDir . '/kint-php/kint/src/Renderer/PlainRenderer.php', - 'Kint\\Renderer\\RendererInterface' => $vendorDir . '/kint-php/kint/src/Renderer/RendererInterface.php', - 'Kint\\Renderer\\RichRenderer' => $vendorDir . '/kint-php/kint/src/Renderer/RichRenderer.php', - 'Kint\\Renderer\\Rich\\AbstractPlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/AbstractPlugin.php', - 'Kint\\Renderer\\Rich\\BinaryPlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/BinaryPlugin.php', - 'Kint\\Renderer\\Rich\\CallableDefinitionPlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/CallableDefinitionPlugin.php', - 'Kint\\Renderer\\Rich\\CallablePlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/CallablePlugin.php', - 'Kint\\Renderer\\Rich\\ColorPlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/ColorPlugin.php', - 'Kint\\Renderer\\Rich\\LockPlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/LockPlugin.php', - 'Kint\\Renderer\\Rich\\MicrotimePlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/MicrotimePlugin.php', - 'Kint\\Renderer\\Rich\\PluginInterface' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/PluginInterface.php', - 'Kint\\Renderer\\Rich\\ProfilePlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/ProfilePlugin.php', - 'Kint\\Renderer\\Rich\\SourcePlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/SourcePlugin.php', - 'Kint\\Renderer\\Rich\\TabPluginInterface' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/TabPluginInterface.php', - 'Kint\\Renderer\\Rich\\TablePlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/TablePlugin.php', - 'Kint\\Renderer\\Rich\\TraceFramePlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/TraceFramePlugin.php', - 'Kint\\Renderer\\Rich\\ValuePluginInterface' => $vendorDir . '/kint-php/kint/src/Renderer/Rich/ValuePluginInterface.php', - 'Kint\\Renderer\\TextRenderer' => $vendorDir . '/kint-php/kint/src/Renderer/TextRenderer.php', - 'Kint\\Renderer\\Text\\AbstractPlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Text/AbstractPlugin.php', - 'Kint\\Renderer\\Text\\LockPlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Text/LockPlugin.php', - 'Kint\\Renderer\\Text\\MicrotimePlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Text/MicrotimePlugin.php', - 'Kint\\Renderer\\Text\\PluginInterface' => $vendorDir . '/kint-php/kint/src/Renderer/Text/PluginInterface.php', - 'Kint\\Renderer\\Text\\SplFileInfoPlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Text/SplFileInfoPlugin.php', - 'Kint\\Renderer\\Text\\TracePlugin' => $vendorDir . '/kint-php/kint/src/Renderer/Text/TracePlugin.php', - 'Kint\\Utils' => $vendorDir . '/kint-php/kint/src/Utils.php', - 'Kint\\Value\\AbstractValue' => $vendorDir . '/kint-php/kint/src/Value/AbstractValue.php', - 'Kint\\Value\\ArrayValue' => $vendorDir . '/kint-php/kint/src/Value/ArrayValue.php', - 'Kint\\Value\\ClosedResourceValue' => $vendorDir . '/kint-php/kint/src/Value/ClosedResourceValue.php', - 'Kint\\Value\\ClosureValue' => $vendorDir . '/kint-php/kint/src/Value/ClosureValue.php', - 'Kint\\Value\\ColorValue' => $vendorDir . '/kint-php/kint/src/Value/ColorValue.php', - 'Kint\\Value\\Context\\ArrayContext' => $vendorDir . '/kint-php/kint/src/Value/Context/ArrayContext.php', - 'Kint\\Value\\Context\\BaseContext' => $vendorDir . '/kint-php/kint/src/Value/Context/BaseContext.php', - 'Kint\\Value\\Context\\ClassConstContext' => $vendorDir . '/kint-php/kint/src/Value/Context/ClassConstContext.php', - 'Kint\\Value\\Context\\ClassDeclaredContext' => $vendorDir . '/kint-php/kint/src/Value/Context/ClassDeclaredContext.php', - 'Kint\\Value\\Context\\ClassOwnedContext' => $vendorDir . '/kint-php/kint/src/Value/Context/ClassOwnedContext.php', - 'Kint\\Value\\Context\\ContextInterface' => $vendorDir . '/kint-php/kint/src/Value/Context/ContextInterface.php', - 'Kint\\Value\\Context\\DoubleAccessMemberContext' => $vendorDir . '/kint-php/kint/src/Value/Context/DoubleAccessMemberContext.php', - 'Kint\\Value\\Context\\MethodContext' => $vendorDir . '/kint-php/kint/src/Value/Context/MethodContext.php', - 'Kint\\Value\\Context\\PropertyContext' => $vendorDir . '/kint-php/kint/src/Value/Context/PropertyContext.php', - 'Kint\\Value\\Context\\StaticPropertyContext' => $vendorDir . '/kint-php/kint/src/Value/Context/StaticPropertyContext.php', - 'Kint\\Value\\DateTimeValue' => $vendorDir . '/kint-php/kint/src/Value/DateTimeValue.php', - 'Kint\\Value\\DeclaredCallableBag' => $vendorDir . '/kint-php/kint/src/Value/DeclaredCallableBag.php', - 'Kint\\Value\\DomNodeListValue' => $vendorDir . '/kint-php/kint/src/Value/DomNodeListValue.php', - 'Kint\\Value\\DomNodeValue' => $vendorDir . '/kint-php/kint/src/Value/DomNodeValue.php', - 'Kint\\Value\\EnumValue' => $vendorDir . '/kint-php/kint/src/Value/EnumValue.php', - 'Kint\\Value\\FixedWidthValue' => $vendorDir . '/kint-php/kint/src/Value/FixedWidthValue.php', - 'Kint\\Value\\FunctionValue' => $vendorDir . '/kint-php/kint/src/Value/FunctionValue.php', - 'Kint\\Value\\InstanceValue' => $vendorDir . '/kint-php/kint/src/Value/InstanceValue.php', - 'Kint\\Value\\MethodValue' => $vendorDir . '/kint-php/kint/src/Value/MethodValue.php', - 'Kint\\Value\\MicrotimeValue' => $vendorDir . '/kint-php/kint/src/Value/MicrotimeValue.php', - 'Kint\\Value\\ParameterBag' => $vendorDir . '/kint-php/kint/src/Value/ParameterBag.php', - 'Kint\\Value\\ParameterHoldingTrait' => $vendorDir . '/kint-php/kint/src/Value/ParameterHoldingTrait.php', - 'Kint\\Value\\Representation\\AbstractRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/AbstractRepresentation.php', - 'Kint\\Value\\Representation\\BinaryRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/BinaryRepresentation.php', - 'Kint\\Value\\Representation\\CallableDefinitionRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/CallableDefinitionRepresentation.php', - 'Kint\\Value\\Representation\\ColorRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/ColorRepresentation.php', - 'Kint\\Value\\Representation\\ContainerRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/ContainerRepresentation.php', - 'Kint\\Value\\Representation\\MicrotimeRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/MicrotimeRepresentation.php', - 'Kint\\Value\\Representation\\ProfileRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/ProfileRepresentation.php', - 'Kint\\Value\\Representation\\RepresentationInterface' => $vendorDir . '/kint-php/kint/src/Value/Representation/RepresentationInterface.php', - 'Kint\\Value\\Representation\\SourceRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/SourceRepresentation.php', - 'Kint\\Value\\Representation\\SplFileInfoRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/SplFileInfoRepresentation.php', - 'Kint\\Value\\Representation\\StringRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/StringRepresentation.php', - 'Kint\\Value\\Representation\\TableRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/TableRepresentation.php', - 'Kint\\Value\\Representation\\ValueRepresentation' => $vendorDir . '/kint-php/kint/src/Value/Representation/ValueRepresentation.php', - 'Kint\\Value\\ResourceValue' => $vendorDir . '/kint-php/kint/src/Value/ResourceValue.php', - 'Kint\\Value\\SimpleXMLElementValue' => $vendorDir . '/kint-php/kint/src/Value/SimpleXMLElementValue.php', - 'Kint\\Value\\SplFileInfoValue' => $vendorDir . '/kint-php/kint/src/Value/SplFileInfoValue.php', - 'Kint\\Value\\StreamValue' => $vendorDir . '/kint-php/kint/src/Value/StreamValue.php', - 'Kint\\Value\\StringValue' => $vendorDir . '/kint-php/kint/src/Value/StringValue.php', - 'Kint\\Value\\ThrowableValue' => $vendorDir . '/kint-php/kint/src/Value/ThrowableValue.php', - 'Kint\\Value\\TraceFrameValue' => $vendorDir . '/kint-php/kint/src/Value/TraceFrameValue.php', - 'Kint\\Value\\TraceValue' => $vendorDir . '/kint-php/kint/src/Value/TraceValue.php', - 'Kint\\Value\\UninitializedValue' => $vendorDir . '/kint-php/kint/src/Value/UninitializedValue.php', - 'Kint\\Value\\UnknownValue' => $vendorDir . '/kint-php/kint/src/Value/UnknownValue.php', - 'Kint\\Value\\VirtualValue' => $vendorDir . '/kint-php/kint/src/Value/VirtualValue.php', - 'Laminas\\Escaper\\Escaper' => $vendorDir . '/laminas/laminas-escaper/src/Escaper.php', - 'Laminas\\Escaper\\EscaperInterface' => $vendorDir . '/laminas/laminas-escaper/src/EscaperInterface.php', - 'Laminas\\Escaper\\Exception\\ExceptionInterface' => $vendorDir . '/laminas/laminas-escaper/src/Exception/ExceptionInterface.php', - 'Laminas\\Escaper\\Exception\\InvalidArgumentException' => $vendorDir . '/laminas/laminas-escaper/src/Exception/InvalidArgumentException.php', - 'Laminas\\Escaper\\Exception\\RuntimeException' => $vendorDir . '/laminas/laminas-escaper/src/Exception/RuntimeException.php', - 'Nexus\\CsConfig\\Factory' => $vendorDir . '/nexusphp/cs-config/src/Factory.php', - 'Nexus\\CsConfig\\FixerGenerator' => $vendorDir . '/nexusphp/cs-config/src/FixerGenerator.php', - 'Nexus\\CsConfig\\Fixer\\AbstractCustomFixer' => $vendorDir . '/nexusphp/cs-config/src/Fixer/AbstractCustomFixer.php', - 'Nexus\\CsConfig\\Fixer\\Comment\\NoCodeSeparatorCommentFixer' => $vendorDir . '/nexusphp/cs-config/src/Fixer/Comment/NoCodeSeparatorCommentFixer.php', - 'Nexus\\CsConfig\\Fixer\\Comment\\SpaceAfterCommentStartFixer' => $vendorDir . '/nexusphp/cs-config/src/Fixer/Comment/SpaceAfterCommentStartFixer.php', - 'Nexus\\CsConfig\\Ruleset\\AbstractRuleset' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/AbstractRuleset.php', - 'Nexus\\CsConfig\\Ruleset\\ConfigurableAllowedUnsupportedPhpVersionRulesetInterface' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/ConfigurableAllowedUnsupportedPhpVersionRulesetInterface.php', - 'Nexus\\CsConfig\\Ruleset\\Nexus81' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/Nexus81.php', - 'Nexus\\CsConfig\\Ruleset\\Nexus82' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/Nexus82.php', - 'Nexus\\CsConfig\\Ruleset\\Nexus83' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/Nexus83.php', - 'Nexus\\CsConfig\\Ruleset\\Nexus84' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/Nexus84.php', - 'Nexus\\CsConfig\\Ruleset\\RulesetInterface' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/RulesetInterface.php', - 'Nexus\\CsConfig\\Test\\AbstractCustomFixerTestCase' => $vendorDir . '/nexusphp/cs-config/src/Test/AbstractCustomFixerTestCase.php', - 'Nexus\\CsConfig\\Test\\AbstractRulesetTestCase' => $vendorDir . '/nexusphp/cs-config/src/Test/AbstractRulesetTestCase.php', - 'Nexus\\CsConfig\\Test\\FixerProvider' => $vendorDir . '/nexusphp/cs-config/src/Test/FixerProvider.php', - 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'PHPUnit\\Event\\Application\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/Finished.php', - 'PHPUnit\\Event\\Application\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/FinishedSubscriber.php', - 'PHPUnit\\Event\\Application\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/Started.php', - 'PHPUnit\\Event\\Application\\StartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Application/StartedSubscriber.php', - 'PHPUnit\\Event\\Code\\ClassMethod' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ClassMethod.php', - 'PHPUnit\\Event\\Code\\ComparisonFailure' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php', - 'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php', - 'PHPUnit\\Event\\Code\\IssueTrigger\\Code' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Issue/Code.php', - 'PHPUnit\\Event\\Code\\IssueTrigger\\IssueTrigger' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Issue/IssueTrigger.php', - 'PHPUnit\\Event\\Code\\NoTestCaseObjectOnCallStackException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php', - 'PHPUnit\\Event\\Code\\Phpt' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php', - 'PHPUnit\\Event\\Code\\Test' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Test.php', - 'PHPUnit\\Event\\Code\\TestCollection' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php', - 'PHPUnit\\Event\\Code\\TestCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestCollectionIterator.php', - 'PHPUnit\\Event\\Code\\TestDox' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestDox.php', - 'PHPUnit\\Event\\Code\\TestDoxBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestDoxBuilder.php', - 'PHPUnit\\Event\\Code\\TestMethod' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestMethod.php', - 'PHPUnit\\Event\\Code\\TestMethodBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php', - 'PHPUnit\\Event\\Code\\Throwable' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Throwable.php', - 'PHPUnit\\Event\\Code\\ThrowableBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php', - 'PHPUnit\\Event\\CollectingDispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/CollectingDispatcher.php', - 'PHPUnit\\Event\\DeferringDispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php', - 'PHPUnit\\Event\\DirectDispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php', - 'PHPUnit\\Event\\Dispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/Dispatcher.php', - 'PHPUnit\\Event\\DispatchingEmitter' => $vendorDir . '/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php', - 'PHPUnit\\Event\\Emitter' => $vendorDir . '/phpunit/phpunit/src/Event/Emitter/Emitter.php', - 'PHPUnit\\Event\\Event' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Event.php', - 'PHPUnit\\Event\\EventAlreadyAssignedException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/EventAlreadyAssignedException.php', - 'PHPUnit\\Event\\EventCollection' => $vendorDir . '/phpunit/phpunit/src/Event/Events/EventCollection.php', - 'PHPUnit\\Event\\EventCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Event/Events/EventCollectionIterator.php', - 'PHPUnit\\Event\\EventFacadeIsSealedException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/EventFacadeIsSealedException.php', - 'PHPUnit\\Event\\Exception' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/Exception.php', - 'PHPUnit\\Event\\Facade' => $vendorDir . '/phpunit/phpunit/src/Event/Facade.php', - 'PHPUnit\\Event\\InvalidArgumentException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/InvalidArgumentException.php', - 'PHPUnit\\Event\\InvalidEventException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/InvalidEventException.php', - 'PHPUnit\\Event\\InvalidSubscriberException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/InvalidSubscriberException.php', - 'PHPUnit\\Event\\MapError' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/MapError.php', - 'PHPUnit\\Event\\NoPreviousThrowableException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoPreviousThrowableException.php', - 'PHPUnit\\Event\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/RuntimeException.php', - 'PHPUnit\\Event\\Runtime\\OperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Runtime/OperatingSystem.php', - 'PHPUnit\\Event\\Runtime\\PHP' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Runtime/PHP.php', - 'PHPUnit\\Event\\Runtime\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Runtime/PHPUnit.php', - 'PHPUnit\\Event\\Runtime\\Runtime' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Runtime/Runtime.php', - 'PHPUnit\\Event\\SubscribableDispatcher' => $vendorDir . '/phpunit/phpunit/src/Event/Dispatcher/SubscribableDispatcher.php', - 'PHPUnit\\Event\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Subscriber.php', - 'PHPUnit\\Event\\SubscriberTypeAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/SubscriberTypeAlreadyRegisteredException.php', - 'PHPUnit\\Event\\Telemetry\\Duration' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php', - 'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatus' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatus.php', - 'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\HRTime' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php', - 'PHPUnit\\Event\\Telemetry\\Info' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php', - 'PHPUnit\\Event\\Telemetry\\MemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php', - 'PHPUnit\\Event\\Telemetry\\MemoryUsage' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php', - 'PHPUnit\\Event\\Telemetry\\Php81GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\Php83GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\Snapshot' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php', - 'PHPUnit\\Event\\Telemetry\\StopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php', - 'PHPUnit\\Event\\Telemetry\\System' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php', - 'PHPUnit\\Event\\Telemetry\\SystemMemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php', - 'PHPUnit\\Event\\Telemetry\\SystemStopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php', - 'PHPUnit\\Event\\Telemetry\\SystemStopWatchWithOffset' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php', - 'PHPUnit\\Event\\TestData\\DataFromDataProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/DataFromDataProvider.php', - 'PHPUnit\\Event\\TestData\\DataFromTestDependency' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/DataFromTestDependency.php', - 'PHPUnit\\Event\\TestData\\NoDataSetFromDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoDataSetFromDataProviderException.php', - 'PHPUnit\\Event\\TestData\\TestData' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestData.php', - 'PHPUnit\\Event\\TestData\\TestDataCollection' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestDataCollection.php', - 'PHPUnit\\Event\\TestData\\TestDataCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestDataCollectionIterator.php', - 'PHPUnit\\Event\\TestRunner\\BootstrapFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinished.php', - 'PHPUnit\\Event\\TestRunner\\BootstrapFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ChildProcessFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ChildProcessFinished.php', - 'PHPUnit\\Event\\TestRunner\\ChildProcessFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ChildProcessFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ChildProcessStarted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ChildProcessStarted.php', - 'PHPUnit\\Event\\TestRunner\\ChildProcessStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ChildProcessStartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Configured' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Configured.php', - 'PHPUnit\\Event\\TestRunner\\ConfiguredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ConfiguredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\DeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggered.php', - 'PHPUnit\\Event\\TestRunner\\DeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\EventFacadeSealed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealed.php', - 'PHPUnit\\Event\\TestRunner\\EventFacadeSealedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionAborted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAborted.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionAbortedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAbortedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinished.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionStarted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionBootstrapped' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionBootstrapped.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionBootstrappedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionBootstrappedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPhar' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPhar.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPharSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPharSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Finished.php', - 'PHPUnit\\Event\\TestRunner\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/FinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabled.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabledSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabled.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabledSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggered.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Started.php', - 'PHPUnit\\Event\\TestRunner\\StartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/StartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\WarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php', - 'PHPUnit\\Event\\TestRunner\\WarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Filtered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Filtered.php', - 'PHPUnit\\Event\\TestSuite\\FilteredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/FilteredSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Finished.php', - 'PHPUnit\\Event\\TestSuite\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/FinishedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Loaded' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Loaded.php', - 'PHPUnit\\Event\\TestSuite\\LoadedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/LoadedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Skipped' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Skipped.php', - 'PHPUnit\\Event\\TestSuite\\SkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/SkippedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Sorted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Sorted.php', - 'PHPUnit\\Event\\TestSuite\\SortedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/SortedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/Started.php', - 'PHPUnit\\Event\\TestSuite\\StartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestSuite/StartedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuite.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteForTestClass' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestClass.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteForTestMethodWithDataProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestMethodWithDataProvider.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteWithName' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteWithName.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\ComparatorRegistered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php', - 'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php', - 'PHPUnit\\Event\\Test\\ConsideredRisky' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php', - 'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalled.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\DeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\ErrorTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php', - 'PHPUnit\\Event\\Test\\ErrorTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\Errored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Errored.php', - 'PHPUnit\\Event\\Test\\ErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/ErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\Failed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Failed.php', - 'PHPUnit\\Event\\Test\\FailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/FailedSubscriber.php', - 'PHPUnit\\Event\\Test\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Finished.php', - 'PHPUnit\\Event\\Test\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/FinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\MarkedIncomplete' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncomplete.php', - 'PHPUnit\\Event\\Test\\MarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncompleteSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForTraitCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForTraitCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\NoComparisonFailureException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoComparisonFailureException.php', - 'PHPUnit\\Event\\Test\\NoticeTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php', - 'PHPUnit\\Event\\Test\\NoticeTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PartialMockObjectCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreated.php', - 'PHPUnit\\Event\\Test\\PartialMockObjectCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\Passed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Passed.php', - 'PHPUnit\\Event\\Test\\PassedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/PassedSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpDeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\PhpDeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpNoticeTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggered.php', - 'PHPUnit\\Event\\Test\\PhpNoticeTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpWarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggered.php', - 'PHPUnit\\Event\\Test\\PhpWarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitDeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitDeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitErrorTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitErrorTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitWarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitWarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php', - 'PHPUnit\\Event\\Test\\PostConditionCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionErrored.php', - 'PHPUnit\\Event\\Test\\PostConditionErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php', - 'PHPUnit\\Event\\Test\\PostConditionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php', - 'PHPUnit\\Event\\Test\\PreConditionCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionErrored.php', - 'PHPUnit\\Event\\Test\\PreConditionErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php', - 'PHPUnit\\Event\\Test\\PreConditionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreparationFailed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailed.php', - 'PHPUnit\\Event\\Test\\PreparationFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreparationStarted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStarted.php', - 'PHPUnit\\Event\\Test\\PreparationStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStartedSubscriber.php', - 'PHPUnit\\Event\\Test\\Prepared' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Prepared.php', - 'PHPUnit\\Event\\Test\\PreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparedSubscriber.php', - 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutput' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php', - 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutputSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutputSubscriber.php', - 'PHPUnit\\Event\\Test\\Skipped' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php', - 'PHPUnit\\Event\\Test\\SkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Outcome/SkippedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestProxyCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php', - 'PHPUnit\\Event\\Test\\TestProxyCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestStubCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php', - 'PHPUnit\\Event\\Test\\TestStubCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreated' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php', - 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreatedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\WarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggered.php', - 'PHPUnit\\Event\\Test\\WarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Tracer\\Tracer' => $vendorDir . '/phpunit/phpunit/src/Event/Tracer.php', - 'PHPUnit\\Event\\TypeMap' => $vendorDir . '/phpunit/phpunit/src/Event/TypeMap.php', - 'PHPUnit\\Event\\UnknownEventException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/UnknownEventException.php', - 'PHPUnit\\Event\\UnknownEventTypeException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/UnknownEventTypeException.php', - 'PHPUnit\\Event\\UnknownSubscriberException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/UnknownSubscriberException.php', - 'PHPUnit\\Event\\UnknownSubscriberTypeException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/UnknownSubscriberTypeException.php', - 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', - 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php', - 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php', - 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php', - 'PHPUnit\\Framework\\Attributes\\After' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/After.php', - 'PHPUnit\\Framework\\Attributes\\AfterClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/AfterClass.php', - 'PHPUnit\\Framework\\Attributes\\BackupGlobals' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/BackupGlobals.php', - 'PHPUnit\\Framework\\Attributes\\BackupStaticProperties' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/BackupStaticProperties.php', - 'PHPUnit\\Framework\\Attributes\\Before' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Before.php', - 'PHPUnit\\Framework\\Attributes\\BeforeClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/BeforeClass.php', - 'PHPUnit\\Framework\\Attributes\\CoversClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversClass.php', - 'PHPUnit\\Framework\\Attributes\\CoversFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversFunction.php', - 'PHPUnit\\Framework\\Attributes\\CoversMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversMethod.php', - 'PHPUnit\\Framework\\Attributes\\CoversNothing' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversNothing.php', - 'PHPUnit\\Framework\\Attributes\\CoversTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/CoversTrait.php', - 'PHPUnit\\Framework\\Attributes\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DataProvider.php', - 'PHPUnit\\Framework\\Attributes\\DataProviderExternal' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DataProviderExternal.php', - 'PHPUnit\\Framework\\Attributes\\Depends' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Depends.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternal' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsExternal.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternalUsingDeepClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsExternalUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternalUsingShallowClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsExternalUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClass.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClassUsingDeepClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClassUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClassUsingShallowClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClassUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsUsingDeepClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsUsingShallowClone' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DependsUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DisableReturnValueGenerationForTestDoubles' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DisableReturnValueGenerationForTestDoubles.php', - 'PHPUnit\\Framework\\Attributes\\DoesNotPerformAssertions' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/DoesNotPerformAssertions.php', - 'PHPUnit\\Framework\\Attributes\\ExcludeGlobalVariableFromBackup' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/ExcludeGlobalVariableFromBackup.php', - 'PHPUnit\\Framework\\Attributes\\ExcludeStaticPropertyFromBackup' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/ExcludeStaticPropertyFromBackup.php', - 'PHPUnit\\Framework\\Attributes\\Group' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Group.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreDeprecations' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnoreDeprecations.php', - 'PHPUnit\\Framework\\Attributes\\IgnorePhpunitDeprecations' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnorePhpunitDeprecations.php', - 'PHPUnit\\Framework\\Attributes\\Large' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Large.php', - 'PHPUnit\\Framework\\Attributes\\Medium' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Medium.php', - 'PHPUnit\\Framework\\Attributes\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php', - 'PHPUnit\\Framework\\Attributes\\PreCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PreCondition.php', - 'PHPUnit\\Framework\\Attributes\\PreserveGlobalState' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PreserveGlobalState.php', - 'PHPUnit\\Framework\\Attributes\\RequiresFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresFunction.php', - 'PHPUnit\\Framework\\Attributes\\RequiresMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresMethod.php', - 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystem.php', - 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystemFamily' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystemFamily.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhp' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhp.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpExtension' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpExtension.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpunit' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpunit.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpunitExtension' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpunitExtension.php', - 'PHPUnit\\Framework\\Attributes\\RequiresSetting' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RequiresSetting.php', - 'PHPUnit\\Framework\\Attributes\\RunClassInSeparateProcess' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RunClassInSeparateProcess.php', - 'PHPUnit\\Framework\\Attributes\\RunInSeparateProcess' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RunInSeparateProcess.php', - 'PHPUnit\\Framework\\Attributes\\RunTestsInSeparateProcesses' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/RunTestsInSeparateProcesses.php', - 'PHPUnit\\Framework\\Attributes\\Small' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Small.php', - 'PHPUnit\\Framework\\Attributes\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Test.php', - 'PHPUnit\\Framework\\Attributes\\TestDox' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/TestDox.php', - 'PHPUnit\\Framework\\Attributes\\TestWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/TestWith.php', - 'PHPUnit\\Framework\\Attributes\\TestWithJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/TestWithJson.php', - 'PHPUnit\\Framework\\Attributes\\Ticket' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php', - 'PHPUnit\\Framework\\Attributes\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php', - 'PHPUnit\\Framework\\Attributes\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php', - 'PHPUnit\\Framework\\Attributes\\UsesMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesMethod.php', - 'PHPUnit\\Framework\\Attributes\\UsesTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesTrait.php', - 'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php', - 'PHPUnit\\Framework\\ChildProcessResultProcessor' => $vendorDir . '/phpunit/phpunit/src/Framework/TestRunner/ChildProcessResultProcessor.php', - 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php', - 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php', - 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php', - 'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', - 'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php', - 'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php', - 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php', - 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageIsOrContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageMatchesRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php', - 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php', - 'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', - 'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php', - 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php', - 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php', - 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php', - 'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php', - 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php', - 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php', - 'PHPUnit\\Framework\\Constraint\\IsList' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/IsList.php', - 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php', - 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php', - 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php', - 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php', - 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php', - 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php', - 'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', - 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php', - 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php', - 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php', - 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php', - 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php', - 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php', - 'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php', - 'PHPUnit\\Framework\\Constraint\\Operator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php', - 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php', - 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php', - 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php', - 'PHPUnit\\Framework\\Constraint\\StringEqualsStringIgnoringLineEndings' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringEqualsStringIgnoringLineEndings.php', - 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php', - 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php', - 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php', - 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', - 'PHPUnit\\Framework\\EmptyStringException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php', - 'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Exception.php', - 'PHPUnit\\Framework\\ExecutionOrderDependency' => $vendorDir . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php', - 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php', - 'PHPUnit\\Framework\\GeneratorNotSupportedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php', - 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTest.php', - 'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTestError.php', - 'PHPUnit\\Framework\\InvalidArgumentException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php', - 'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php', - 'PHPUnit\\Framework\\InvalidDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php', - 'PHPUnit\\Framework\\InvalidDependencyException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php', - 'PHPUnit\\Framework\\IsolatedTestRunner' => $vendorDir . '/phpunit/phpunit/src/Framework/TestRunner/IsolatedTestRunner.php', - 'PHPUnit\\Framework\\IsolatedTestRunnerRegistry' => $vendorDir . '/phpunit/phpunit/src/Framework/TestRunner/IsolatedTestRunnerRegistry.php', - 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Identity.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationMocker.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationStubber.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php', - 'PHPUnit\\Framework\\MockObject\\CannotCloneTestDoubleForReadonlyClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotCloneTestDoubleForReadonlyClassException.php', - 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php', - 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php', - 'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\ErrorCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ErrorCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\GeneratedAsMockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/GeneratedAsMockObject.php', - 'PHPUnit\\Framework\\MockObject\\GeneratedAsTestStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/GeneratedAsTestStub.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\CannotUseAddMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/CannotUseAddMethodsException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\HookedProperty' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedProperty.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\HookedPropertyGenerator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedPropertyGenerator.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockType' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\OriginalConstructorInvocationRequiredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\SoapExtensionNotAvailableException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownInterfaceException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownInterfaceException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTraitException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php', - 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php', - 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php', - 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/InvocationHandler.php', - 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php', - 'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Matcher.php', - 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php', - 'PHPUnit\\Framework\\MockObject\\Method' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/Method.php', - 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/MethodNameConstraint.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', - 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php', - 'PHPUnit\\Framework\\MockObject\\MockObjectApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php', - 'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php', - 'PHPUnit\\Framework\\MockObject\\MutableStubApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MutableStubApi.php', - 'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php', - 'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\ReturnValueGenerator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/ReturnValueGenerator.php', - 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyInvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyParameters.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvocationOrder.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastOnce.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtMostCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/MethodName.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/Parameters.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/ParametersRule.php', - 'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Runtime\\PropertyGetHook' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/PropertyHook/PropertyGetHook.php', - 'PHPUnit\\Framework\\MockObject\\Runtime\\PropertyHook' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/PropertyHook/PropertyHook.php', - 'PHPUnit\\Framework\\MockObject\\Runtime\\PropertySetHook' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/PropertyHook/PropertySetHook.php', - 'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/Stub.php', - 'PHPUnit\\Framework\\MockObject\\StubApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/StubApi.php', - 'PHPUnit\\Framework\\MockObject\\StubInternal' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/StubInternal.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnArgument.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnCallback.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnReference.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnSelf.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnStub.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnValueMap.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Stub.php', - 'PHPUnit\\Framework\\MockObject\\TestDoubleState' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/TestDoubleState.php', - 'PHPUnit\\Framework\\NativeType' => $vendorDir . '/phpunit/phpunit/src/Framework/NativeType.php', - 'PHPUnit\\Framework\\NoChildTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php', - 'PHPUnit\\Framework\\PhptAssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php', - 'PHPUnit\\Framework\\ProcessIsolationException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php', - 'PHPUnit\\Framework\\Reorderable' => $vendorDir . '/phpunit/phpunit/src/Framework/Reorderable.php', - 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', - 'PHPUnit\\Framework\\SeparateProcessTestRunner' => $vendorDir . '/phpunit/phpunit/src/Framework/TestRunner/SeparateProcessTestRunner.php', - 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTest.php', - 'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTestSuiteError.php', - 'PHPUnit\\Framework\\SkippedWithMessageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedWithMessageException.php', - 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php', - 'PHPUnit\\Framework\\TestBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/TestBuilder.php', - 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php', - 'PHPUnit\\Framework\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php', - 'PHPUnit\\Framework\\TestSize\\Known' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Known.php', - 'PHPUnit\\Framework\\TestSize\\Large' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Large.php', - 'PHPUnit\\Framework\\TestSize\\Medium' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Medium.php', - 'PHPUnit\\Framework\\TestSize\\Small' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Small.php', - 'PHPUnit\\Framework\\TestSize\\TestSize' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/TestSize.php', - 'PHPUnit\\Framework\\TestSize\\Unknown' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSize/Unknown.php', - 'PHPUnit\\Framework\\TestStatus\\Deprecation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Deprecation.php', - 'PHPUnit\\Framework\\TestStatus\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Error.php', - 'PHPUnit\\Framework\\TestStatus\\Failure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Failure.php', - 'PHPUnit\\Framework\\TestStatus\\Incomplete' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Incomplete.php', - 'PHPUnit\\Framework\\TestStatus\\Known' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Known.php', - 'PHPUnit\\Framework\\TestStatus\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Notice.php', - 'PHPUnit\\Framework\\TestStatus\\Risky' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Risky.php', - 'PHPUnit\\Framework\\TestStatus\\Skipped' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Skipped.php', - 'PHPUnit\\Framework\\TestStatus\\Success' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Success.php', - 'PHPUnit\\Framework\\TestStatus\\TestStatus' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/TestStatus.php', - 'PHPUnit\\Framework\\TestStatus\\Unknown' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Unknown.php', - 'PHPUnit\\Framework\\TestStatus\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Warning.php', - 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php', - 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', - 'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php', - 'PHPUnit\\Framework\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php', - 'PHPUnit\\Logging\\EventLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/EventLogger.php', - 'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php', - 'PHPUnit\\Logging\\JUnit\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparationFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationFailedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparationStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationStartedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPrintedUnexpectedOutputSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPrintedUnexpectedOutputSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestRunnerExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TeamCityLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php', - 'PHPUnit\\Logging\\TeamCity\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestRunnerExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteBeforeFirstTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteBeforeFirstTestMethodErroredSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\HtmlRenderer' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php', - 'PHPUnit\\Logging\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php', - 'PHPUnit\\Logging\\TestDox\\PlainTextRenderer' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php', - 'PHPUnit\\Logging\\TestDox\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestPassedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollection' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollector' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php', - 'PHPUnit\\Logging\\TestDox\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\Metadata\\After' => $vendorDir . '/phpunit/phpunit/src/Metadata/After.php', - 'PHPUnit\\Metadata\\AfterClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/AfterClass.php', - 'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php', - 'PHPUnit\\Metadata\\Annotation\\Parser\\Registry' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php', - 'PHPUnit\\Metadata\\AnnotationsAreNotSupportedForInternalClassesException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php', - 'PHPUnit\\Metadata\\Api\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php', - 'PHPUnit\\Metadata\\Api\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/DataProvider.php', - 'PHPUnit\\Metadata\\Api\\Dependencies' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/Dependencies.php', - 'PHPUnit\\Metadata\\Api\\Groups' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/Groups.php', - 'PHPUnit\\Metadata\\Api\\HookMethods' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/HookMethods.php', - 'PHPUnit\\Metadata\\Api\\Requirements' => $vendorDir . '/phpunit/phpunit/src/Metadata/Api/Requirements.php', - 'PHPUnit\\Metadata\\BackupGlobals' => $vendorDir . '/phpunit/phpunit/src/Metadata/BackupGlobals.php', - 'PHPUnit\\Metadata\\BackupStaticProperties' => $vendorDir . '/phpunit/phpunit/src/Metadata/BackupStaticProperties.php', - 'PHPUnit\\Metadata\\Before' => $vendorDir . '/phpunit/phpunit/src/Metadata/Before.php', - 'PHPUnit\\Metadata\\BeforeClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/BeforeClass.php', - 'PHPUnit\\Metadata\\Covers' => $vendorDir . '/phpunit/phpunit/src/Metadata/Covers.php', - 'PHPUnit\\Metadata\\CoversClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversClass.php', - 'PHPUnit\\Metadata\\CoversDefaultClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversDefaultClass.php', - 'PHPUnit\\Metadata\\CoversFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversFunction.php', - 'PHPUnit\\Metadata\\CoversMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversMethod.php', - 'PHPUnit\\Metadata\\CoversNothing' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversNothing.php', - 'PHPUnit\\Metadata\\CoversTrait' => $vendorDir . '/phpunit/phpunit/src/Metadata/CoversTrait.php', - 'PHPUnit\\Metadata\\DataProvider' => $vendorDir . '/phpunit/phpunit/src/Metadata/DataProvider.php', - 'PHPUnit\\Metadata\\DependsOnClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/DependsOnClass.php', - 'PHPUnit\\Metadata\\DependsOnMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/DependsOnMethod.php', - 'PHPUnit\\Metadata\\DisableReturnValueGenerationForTestDoubles' => $vendorDir . '/phpunit/phpunit/src/Metadata/DisableReturnValueGenerationForTestDoubles.php', - 'PHPUnit\\Metadata\\DoesNotPerformAssertions' => $vendorDir . '/phpunit/phpunit/src/Metadata/DoesNotPerformAssertions.php', - 'PHPUnit\\Metadata\\Exception' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/Exception.php', - 'PHPUnit\\Metadata\\ExcludeGlobalVariableFromBackup' => $vendorDir . '/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php', - 'PHPUnit\\Metadata\\ExcludeStaticPropertyFromBackup' => $vendorDir . '/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php', - 'PHPUnit\\Metadata\\Group' => $vendorDir . '/phpunit/phpunit/src/Metadata/Group.php', - 'PHPUnit\\Metadata\\IgnoreDeprecations' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnoreDeprecations.php', - 'PHPUnit\\Metadata\\IgnorePhpunitDeprecations' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnorePhpunitDeprecations.php', - 'PHPUnit\\Metadata\\InvalidAttributeException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/InvalidAttributeException.php', - 'PHPUnit\\Metadata\\InvalidVersionRequirementException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php', - 'PHPUnit\\Metadata\\Metadata' => $vendorDir . '/phpunit/phpunit/src/Metadata/Metadata.php', - 'PHPUnit\\Metadata\\MetadataCollection' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollection.php', - 'PHPUnit\\Metadata\\MetadataCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php', - 'PHPUnit\\Metadata\\NoVersionRequirementException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php', - 'PHPUnit\\Metadata\\Parser\\AnnotationParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php', - 'PHPUnit\\Metadata\\Parser\\AttributeParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php', - 'PHPUnit\\Metadata\\Parser\\CachingParser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/CachingParser.php', - 'PHPUnit\\Metadata\\Parser\\Parser' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Parser.php', - 'PHPUnit\\Metadata\\Parser\\ParserChain' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/ParserChain.php', - 'PHPUnit\\Metadata\\Parser\\Registry' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Registry.php', - 'PHPUnit\\Metadata\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Metadata/PostCondition.php', - 'PHPUnit\\Metadata\\PreCondition' => $vendorDir . '/phpunit/phpunit/src/Metadata/PreCondition.php', - 'PHPUnit\\Metadata\\PreserveGlobalState' => $vendorDir . '/phpunit/phpunit/src/Metadata/PreserveGlobalState.php', - 'PHPUnit\\Metadata\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php', - 'PHPUnit\\Metadata\\RequiresFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresFunction.php', - 'PHPUnit\\Metadata\\RequiresMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresMethod.php', - 'PHPUnit\\Metadata\\RequiresOperatingSystem' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php', - 'PHPUnit\\Metadata\\RequiresOperatingSystemFamily' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystemFamily.php', - 'PHPUnit\\Metadata\\RequiresPhp' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresPhp.php', - 'PHPUnit\\Metadata\\RequiresPhpExtension' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresPhpExtension.php', - 'PHPUnit\\Metadata\\RequiresPhpunit' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresPhpunit.php', - 'PHPUnit\\Metadata\\RequiresPhpunitExtension' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresPhpunitExtension.php', - 'PHPUnit\\Metadata\\RequiresSetting' => $vendorDir . '/phpunit/phpunit/src/Metadata/RequiresSetting.php', - 'PHPUnit\\Metadata\\RunClassInSeparateProcess' => $vendorDir . '/phpunit/phpunit/src/Metadata/RunClassInSeparateProcess.php', - 'PHPUnit\\Metadata\\RunInSeparateProcess' => $vendorDir . '/phpunit/phpunit/src/Metadata/RunInSeparateProcess.php', - 'PHPUnit\\Metadata\\RunTestsInSeparateProcesses' => $vendorDir . '/phpunit/phpunit/src/Metadata/RunTestsInSeparateProcesses.php', - 'PHPUnit\\Metadata\\Test' => $vendorDir . '/phpunit/phpunit/src/Metadata/Test.php', - 'PHPUnit\\Metadata\\TestDox' => $vendorDir . '/phpunit/phpunit/src/Metadata/TestDox.php', - 'PHPUnit\\Metadata\\TestWith' => $vendorDir . '/phpunit/phpunit/src/Metadata/TestWith.php', - 'PHPUnit\\Metadata\\Uses' => $vendorDir . '/phpunit/phpunit/src/Metadata/Uses.php', - 'PHPUnit\\Metadata\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesClass.php', - 'PHPUnit\\Metadata\\UsesDefaultClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesDefaultClass.php', - 'PHPUnit\\Metadata\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesFunction.php', - 'PHPUnit\\Metadata\\UsesMethod' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesMethod.php', - 'PHPUnit\\Metadata\\UsesTrait' => $vendorDir . '/phpunit/phpunit/src/Metadata/UsesTrait.php', - 'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php', - 'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php', - 'PHPUnit\\Metadata\\Version\\Requirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/Requirement.php', - 'PHPUnit\\Metadata\\WithoutErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Metadata/WithoutErrorHandler.php', - 'PHPUnit\\Runner\\Baseline\\Baseline' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Baseline.php', - 'PHPUnit\\Runner\\Baseline\\CannotLoadBaselineException' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php', - 'PHPUnit\\Runner\\Baseline\\CannotWriteBaselineException' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Exception/CannotWriteBaselineException.php', - 'PHPUnit\\Runner\\Baseline\\FileDoesNotHaveLineException' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php', - 'PHPUnit\\Runner\\Baseline\\Generator' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Generator.php', - 'PHPUnit\\Runner\\Baseline\\Issue' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Issue.php', - 'PHPUnit\\Runner\\Baseline\\Reader' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Reader.php', - 'PHPUnit\\Runner\\Baseline\\RelativePathCalculator' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php', - 'PHPUnit\\Runner\\Baseline\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\Writer' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Writer.php', - 'PHPUnit\\Runner\\ClassCannotBeFoundException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php', - 'PHPUnit\\Runner\\ClassDoesNotExtendTestCaseException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php', - 'PHPUnit\\Runner\\ClassIsAbstractException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php', - 'PHPUnit\\Runner\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Runner/CodeCoverage.php', - 'PHPUnit\\Runner\\CodeCoverageFileExistsException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/CodeCoverageFileExistsException.php', - 'PHPUnit\\Runner\\DeprecationCollector\\Collector' => $vendorDir . '/phpunit/phpunit/src/Runner/DeprecationCollector/Collector.php', - 'PHPUnit\\Runner\\DeprecationCollector\\Facade' => $vendorDir . '/phpunit/phpunit/src/Runner/DeprecationCollector/Facade.php', - 'PHPUnit\\Runner\\DeprecationCollector\\InIsolationCollector' => $vendorDir . '/phpunit/phpunit/src/Runner/DeprecationCollector/InIsolationCollector.php', - 'PHPUnit\\Runner\\DeprecationCollector\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\DeprecationCollector\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Runner\\DeprecationCollector\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Runner\\DirectoryDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/DirectoryDoesNotExistException.php', - 'PHPUnit\\Runner\\ErrorException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ErrorException.php', - 'PHPUnit\\Runner\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/ErrorHandler.php', - 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/Exception.php', - 'PHPUnit\\Runner\\Extension\\Extension' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/Extension.php', - 'PHPUnit\\Runner\\Extension\\ExtensionBootstrapper' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php', - 'PHPUnit\\Runner\\Extension\\Facade' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/Facade.php', - 'PHPUnit\\Runner\\Extension\\ParameterCollection' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ParameterCollection.php', - 'PHPUnit\\Runner\\Extension\\PharLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php', - 'PHPUnit\\Runner\\FileDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php', - 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\ExcludeNameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeNameFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php', - 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\IncludeNameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeNameFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\TestIdFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php', - 'PHPUnit\\Runner\\GarbageCollection\\ExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\ExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\GarbageCollectionHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php', - 'PHPUnit\\Runner\\GarbageCollection\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Runner\\HookMethod' => $vendorDir . '/phpunit/phpunit/src/Runner/HookMethod/HookMethod.php', - 'PHPUnit\\Runner\\HookMethodCollection' => $vendorDir . '/phpunit/phpunit/src/Runner/HookMethod/HookMethodCollection.php', - 'PHPUnit\\Runner\\InvalidOrderException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php', - 'PHPUnit\\Runner\\InvalidPhptFileException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php', - 'PHPUnit\\Runner\\ParameterDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php', - 'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php', - 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PHPT/PhptTestCase.php', - 'PHPUnit\\Runner\\ResultCache\\DefaultResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\NullResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCacheHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCacheId' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/ResultCacheId.php', - 'PHPUnit\\Runner\\ResultCache\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', - 'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', - 'PHPUnit\\Runner\\UnsupportedPhptSectionException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php', - 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php', - 'PHPUnit\\TestRunner\\IssueFilter' => $vendorDir . '/phpunit/phpunit/src/Runner/IssueFilter.php', - 'PHPUnit\\TestRunner\\TestResult\\AfterTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/AfterTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\BeforeTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\Collector' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Collector.php', - 'PHPUnit\\TestRunner\\TestResult\\ExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\Facade' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Facade.php', - 'PHPUnit\\TestRunner\\TestResult\\Issues\\Issue' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Issue.php', - 'PHPUnit\\TestRunner\\TestResult\\PassedTests' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/PassedTests.php', - 'PHPUnit\\TestRunner\\TestResult\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/TestResult.php', - 'PHPUnit\\TestRunner\\TestResult\\TestRunnerTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestRunnerTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\TextUI\\Application' => $vendorDir . '/phpunit/phpunit/src/TextUI/Application.php', - 'PHPUnit\\TextUI\\CannotOpenSocketException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/CannotOpenSocketException.php', - 'PHPUnit\\TextUI\\CliArguments\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php', - 'PHPUnit\\TextUI\\CliArguments\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php', - 'PHPUnit\\TextUI\\CliArguments\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php', - 'PHPUnit\\TextUI\\CliArguments\\XmlConfigurationFileFinder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php', - 'PHPUnit\\TextUI\\Command\\AtLeastVersionCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php', - 'PHPUnit\\TextUI\\Command\\CheckPhpConfigurationCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/CheckPhpConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Command.php', - 'PHPUnit\\TextUI\\Command\\GenerateConfigurationCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\ListGroupsCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestFilesCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestFilesCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestSuitesCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestsAsTextCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestsAsXmlCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php', - 'PHPUnit\\TextUI\\Command\\MigrateConfigurationCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\Result' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Result.php', - 'PHPUnit\\TextUI\\Command\\ShowHelpCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php', - 'PHPUnit\\TextUI\\Command\\ShowVersionCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php', - 'PHPUnit\\TextUI\\Command\\VersionCheckCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php', - 'PHPUnit\\TextUI\\Command\\WarmCodeCoverageCacheCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php', - 'PHPUnit\\TextUI\\Configuration\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Builder.php', - 'PHPUnit\\TextUI\\Configuration\\CodeCoverageFilterRegistry' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php', - 'PHPUnit\\TextUI\\Configuration\\CodeCoverageReportNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Configuration.php', - 'PHPUnit\\TextUI\\Configuration\\ConfigurationCannotBeBuiltException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php', - 'PHPUnit\\TextUI\\Configuration\\Constant' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Constant.php', - 'PHPUnit\\TextUI\\Configuration\\ConstantCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollection.php', - 'PHPUnit\\TextUI\\Configuration\\ConstantCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Directory.php', - 'PHPUnit\\TextUI\\Configuration\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrap' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrap.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrapCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollection.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrapCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\File' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/File.php', - 'PHPUnit\\TextUI\\Configuration\\FileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollection.php', - 'PHPUnit\\TextUI\\Configuration\\FileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectory.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\FilterNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Group' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php', - 'PHPUnit\\TextUI\\Configuration\\GroupCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php', - 'PHPUnit\\TextUI\\Configuration\\GroupCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\IniSetting' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php', - 'PHPUnit\\TextUI\\Configuration\\IniSettingCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php', - 'PHPUnit\\TextUI\\Configuration\\IniSettingCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\LoggingNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Merger' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Merger.php', - 'PHPUnit\\TextUI\\Configuration\\NoBaselineException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php', - 'PHPUnit\\TextUI\\Configuration\\NoBootstrapException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCacheDirectoryException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\NoConfigurationFileException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCoverageCacheDirectoryException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCustomCssFileException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php', - 'PHPUnit\\TextUI\\Configuration\\NoDefaultTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php', - 'PHPUnit\\TextUI\\Configuration\\NoPharExtensionDirectoryException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php', - 'PHPUnit\\TextUI\\Configuration\\PhpHandler' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php', - 'PHPUnit\\TextUI\\Configuration\\Registry' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Registry.php', - 'PHPUnit\\TextUI\\Configuration\\Source' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php', - 'PHPUnit\\TextUI\\Configuration\\SourceFilter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php', - 'PHPUnit\\TextUI\\Configuration\\SourceMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php', - 'PHPUnit\\TextUI\\Configuration\\SpecificDeprecationToStopOnNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/SpecificDeprecationToStopOnNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\TestFile' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFile.php', - 'PHPUnit\\TextUI\\Configuration\\TestFileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestFileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Variable' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Variable.php', - 'PHPUnit\\TextUI\\Configuration\\VariableCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php', - 'PHPUnit\\TextUI\\Configuration\\VariableCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php', - 'PHPUnit\\TextUI\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/Exception.php', - 'PHPUnit\\TextUI\\Help' => $vendorDir . '/phpunit/phpunit/src/TextUI/Help.php', - 'PHPUnit\\TextUI\\InvalidSocketException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php', - 'PHPUnit\\TextUI\\Output\\DefaultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\BeforeTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\ProgressPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSuiteSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\UnexpectedOutputPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/UnexpectedOutputPrinter.php', - 'PHPUnit\\TextUI\\Output\\Facade' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Facade.php', - 'PHPUnit\\TextUI\\Output\\NullPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php', - 'PHPUnit\\TextUI\\Output\\Printer' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php', - 'PHPUnit\\TextUI\\Output\\SummaryPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php', - 'PHPUnit\\TextUI\\Output\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php', - 'PHPUnit\\TextUI\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php', - 'PHPUnit\\TextUI\\ShellExitCodeCalculator' => $vendorDir . '/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php', - 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php', - 'PHPUnit\\TextUI\\TestFileNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php', - 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', - 'PHPUnit\\TextUI\\TestSuiteFilterProcessor' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CannotFindSchemaException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\DefaultConfiguration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\FailedSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCacheDirectoryAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\LoadedFromFileConfiguration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveCoverageDirectoriesToSource' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutTodoAnnotatedTestsAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheResultFileAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveConversionToExceptionsAttributes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCoverageElementCacheDirectoryAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCoverageElementProcessUncoveredFilesAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveListeners' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLoggingElements' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveNoInteractionAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemovePrinterAttributes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveRegisterMockObjectsFromTestArgumentsRecursivelyAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveRegisterMockObjectsFromTestArgumentsRecursivelyAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveTestDoxGroupsElement' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveTestSuiteLoaderAttributes' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveVerboseAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameBackupStaticAttributesAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameBeStrictAboutCoversAnnotationAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameForceCoversAnnotationAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ReplaceRestrictDeprecationsWithIgnoreDeprecations' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ReplaceRestrictDeprecationsWithIgnoreDeprecations.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetector' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaFinder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SnapshotNodeList' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SuccessfulSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php', - 'PHPUnit\\Util\\Cloner' => $vendorDir . '/phpunit/phpunit/src/Util/Cloner.php', - 'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php', - 'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/Exception.php', - 'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.php', - 'PHPUnit\\Util\\Exporter' => $vendorDir . '/phpunit/phpunit/src/Util/Exporter.php', - 'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php', - 'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php', - 'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php', - 'PHPUnit\\Util\\Http\\Downloader' => $vendorDir . '/phpunit/phpunit/src/Util/Http/Downloader.php', - 'PHPUnit\\Util\\Http\\PhpDownloader' => $vendorDir . '/phpunit/phpunit/src/Util/Http/PhpDownloader.php', - 'PHPUnit\\Util\\InvalidDirectoryException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php', - 'PHPUnit\\Util\\InvalidJsonException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php', - 'PHPUnit\\Util\\InvalidVersionOperatorException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php', - 'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php', - 'PHPUnit\\Util\\PHP\\DefaultJobRunner' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultJobRunner.php', - 'PHPUnit\\Util\\PHP\\Job' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Job.php', - 'PHPUnit\\Util\\PHP\\JobRunner' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/JobRunner.php', - 'PHPUnit\\Util\\PHP\\JobRunnerRegistry' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/JobRunnerRegistry.php', - 'PHPUnit\\Util\\PHP\\PhpProcessException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/PhpProcessException.php', - 'PHPUnit\\Util\\PHP\\Result' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Result.php', - 'PHPUnit\\Util\\Reflection' => $vendorDir . '/phpunit/phpunit/src/Util/Reflection.php', - 'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php', - 'PHPUnit\\Util\\ThrowableToStringMapper' => $vendorDir . '/phpunit/phpunit/src/Util/ThrowableToStringMapper.php', - 'PHPUnit\\Util\\VersionComparisonOperator' => $vendorDir . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php', - 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Xml.php', - 'PHPUnit\\Util\\Xml\\Loader' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Loader.php', - 'PHPUnit\\Util\\Xml\\XmlException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/XmlException.php', - 'Pdo\\Dblib' => $vendorDir . '/symfony/polyfill-php84/Resources/stubs/Pdo/Dblib.php', - 'Pdo\\Firebird' => $vendorDir . '/symfony/polyfill-php84/Resources/stubs/Pdo/Firebird.php', - 'Pdo\\Mysql' => $vendorDir . '/symfony/polyfill-php84/Resources/stubs/Pdo/Mysql.php', - 'Pdo\\Odbc' => $vendorDir . '/symfony/polyfill-php84/Resources/stubs/Pdo/Odbc.php', - 'Pdo\\Pgsql' => $vendorDir . '/symfony/polyfill-php84/Resources/stubs/Pdo/Pgsql.php', - 'Pdo\\Sqlite' => $vendorDir . '/symfony/polyfill-php84/Resources/stubs/Pdo/Sqlite.php', - 'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php', - 'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php', - 'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php', - 'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php', - 'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php', - 'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php', - 'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php', - 'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php', - 'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php', - 'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php', - 'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php', - 'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php', - 'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php', - 'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php', - 'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php', - 'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php', - 'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php', - 'PharIo\\Manifest\\ElementCollectionException' => $vendorDir . '/phar-io/manifest/src/exceptions/ElementCollectionException.php', - 'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php', - 'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php', - 'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php', - 'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php', - 'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php', - 'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php', - 'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php', - 'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php', - 'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php', - 'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php', - 'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php', - 'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php', - 'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php', - 'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php', - 'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php', - 'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php', - 'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php', - 'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php', - 'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php', - 'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php', - 'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php', - 'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php', - 'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php', - 'PharIo\\Manifest\\NoEmailAddressException' => $vendorDir . '/phar-io/manifest/src/exceptions/NoEmailAddressException.php', - 'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php', - 'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php', - 'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php', - 'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php', - 'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php', - 'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php', - 'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php', - 'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php', - 'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php', - 'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AbstractVersionConstraint.php', - 'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php', - 'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AnyVersionConstraint.php', - 'PharIo\\Version\\BuildMetaData' => $vendorDir . '/phar-io/version/src/BuildMetaData.php', - 'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/ExactVersionConstraint.php', - 'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/exceptions/Exception.php', - 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php', - 'PharIo\\Version\\InvalidPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php', - 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidVersionException.php', - 'PharIo\\Version\\NoBuildMetaDataException' => $vendorDir . '/phar-io/version/src/exceptions/NoBuildMetaDataException.php', - 'PharIo\\Version\\NoPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php', - 'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php', - 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php', - 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', - 'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php', - 'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php', - 'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php', - 'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/VersionConstraint.php', - 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php', - 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php', - 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php', - 'PhpCsFixer\\AbstractDoctrineAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php', - 'PhpCsFixer\\AbstractFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFixer.php', - 'PhpCsFixer\\AbstractFopenFlagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php', - 'PhpCsFixer\\AbstractFunctionReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php', - 'PhpCsFixer\\AbstractNoUselessElseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php', - 'PhpCsFixer\\AbstractPhpdocToTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php', - 'PhpCsFixer\\AbstractPhpdocTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php', - 'PhpCsFixer\\AbstractProxyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php', - 'PhpCsFixer\\Cache\\Cache' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Cache.php', - 'PhpCsFixer\\Cache\\CacheInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php', - 'PhpCsFixer\\Cache\\CacheManagerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php', - 'PhpCsFixer\\Cache\\Directory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Directory.php', - 'PhpCsFixer\\Cache\\DirectoryInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php', - 'PhpCsFixer\\Cache\\FileCacheManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php', - 'PhpCsFixer\\Cache\\FileHandler' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php', - 'PhpCsFixer\\Cache\\FileHandlerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php', - 'PhpCsFixer\\Cache\\NullCacheManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php', - 'PhpCsFixer\\Cache\\Signature' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Signature.php', - 'PhpCsFixer\\Cache\\SignatureInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php', - 'PhpCsFixer\\ComposerJsonReader' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ComposerJsonReader.php', - 'PhpCsFixer\\Config' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Config.php', - 'PhpCsFixer\\ConfigInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigInterface.php', - 'PhpCsFixer\\Config\\NullRuleCustomisationPolicy' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Config/NullRuleCustomisationPolicy.php', - 'PhpCsFixer\\Config\\RuleCustomisationPolicyAwareConfigInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyAwareConfigInterface.php', - 'PhpCsFixer\\Config\\RuleCustomisationPolicyInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyInterface.php', - 'PhpCsFixer\\ConfigurationException\\InvalidConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\InvalidFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\InvalidForEnvFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\RequiredFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\UnresolvableAutoRuleSetConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/UnresolvableAutoRuleSetConfigurationException.php', - 'PhpCsFixer\\Console\\Application' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Application.php', - 'PhpCsFixer\\Console\\Command\\CheckCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php', - 'PhpCsFixer\\Console\\Command\\DescribeCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php', - 'PhpCsFixer\\Console\\Command\\DescribeNameNotFoundException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php', - 'PhpCsFixer\\Console\\Command\\FixCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php', - 'PhpCsFixer\\Console\\Command\\FixCommandExitStatusCalculator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php', - 'PhpCsFixer\\Console\\Command\\HelpCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php', - 'PhpCsFixer\\Console\\Command\\InitCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/InitCommand.php', - 'PhpCsFixer\\Console\\Command\\ListFilesCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php', - 'PhpCsFixer\\Console\\Command\\ListRulesCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/ListRulesCommand.php', - 'PhpCsFixer\\Console\\Command\\ListSetsCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php', - 'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php', - 'PhpCsFixer\\Console\\Command\\WorkerCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/WorkerCommand.php', - 'PhpCsFixer\\Console\\ConfigurationResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php', - 'PhpCsFixer\\Console\\Output\\ErrorOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php', - 'PhpCsFixer\\Console\\Output\\OutputContext' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php', - 'PhpCsFixer\\Console\\Output\\Progress\\DotsOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\NullOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\PercentageBarOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputType' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\CheckstyleReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\GitlabReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\JsonReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\JunitReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReportSummary' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\TextReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\XmlReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\JsonReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\ReportSummary' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\ReporterFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\ReporterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\TextReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/TextReporter.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\JsonReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReportSummary' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\TextReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php', - 'PhpCsFixer\\Console\\SelfUpdate\\GithubClient' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php', - 'PhpCsFixer\\Console\\SelfUpdate\\GithubClientInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php', - 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionChecker' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php', - 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionCheckerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php', - 'PhpCsFixer\\Console\\WarningsDetector' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php', - 'PhpCsFixer\\CustomRulesetsAwareConfigInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/CustomRulesetsAwareConfigInterface.php', - 'PhpCsFixer\\Differ\\DiffConsoleFormatter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php', - 'PhpCsFixer\\Differ\\DifferInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php', - 'PhpCsFixer\\Differ\\FullDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php', - 'PhpCsFixer\\Differ\\NullDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php', - 'PhpCsFixer\\Differ\\UnifiedDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php', - 'PhpCsFixer\\DocBlock\\Annotation' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php', - 'PhpCsFixer\\DocBlock\\DocBlock' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php', - 'PhpCsFixer\\DocBlock\\Line' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Line.php', - 'PhpCsFixer\\DocBlock\\ShortDescription' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php', - 'PhpCsFixer\\DocBlock\\Tag' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php', - 'PhpCsFixer\\DocBlock\\TagComparator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php', - 'PhpCsFixer\\DocBlock\\TypeExpression' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php', - 'PhpCsFixer\\Doctrine\\Annotation\\DocLexer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php', - 'PhpCsFixer\\Doctrine\\Annotation\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php', - 'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php', - 'PhpCsFixer\\Documentation\\DocumentationLocator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php', - 'PhpCsFixer\\Documentation\\DocumentationTag' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTag.php', - 'PhpCsFixer\\Documentation\\DocumentationTagGenerator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagGenerator.php', - 'PhpCsFixer\\Documentation\\DocumentationTagType' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagType.php', - 'PhpCsFixer\\Documentation\\FixerDocumentGenerator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php', - 'PhpCsFixer\\Documentation\\RstUtils' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/RstUtils.php', - 'PhpCsFixer\\Documentation\\RuleSetDocumentationGenerator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/RuleSetDocumentationGenerator.php', - 'PhpCsFixer\\Error\\Error' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Error/Error.php', - 'PhpCsFixer\\Error\\ErrorsManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php', - 'PhpCsFixer\\Error\\SourceExceptionFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Error/SourceExceptionFactory.php', - 'PhpCsFixer\\ExecutorWithoutErrorHandler' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandler.php', - 'PhpCsFixer\\ExecutorWithoutErrorHandlerException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandlerException.php', - 'PhpCsFixer\\FileReader' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FileReader.php', - 'PhpCsFixer\\FileRemoval' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FileRemoval.php', - 'PhpCsFixer\\Finder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Finder.php', - 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOptionBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php', - 'PhpCsFixer\\FixerConfiguration\\AllowedValueSubset' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php', - 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php', - 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionSorter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionSorter.php', - 'PhpCsFixer\\FixerConfiguration\\InvalidOptionsForEnvException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php', - 'PhpCsFixer\\FixerDefinition\\CodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php', - 'PhpCsFixer\\FixerDefinition\\CodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php', - 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\FixerDefinition' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php', - 'PhpCsFixer\\FixerDefinition\\FixerDefinitionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecification' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php', - 'PhpCsFixer\\FixerFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFactory.php', - 'PhpCsFixer\\FixerNameValidator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php', - 'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php', - 'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php', - 'PhpCsFixer\\Fixer\\AbstractShortOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractShortOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\ArrayPushFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ArrayPushFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\BacktickToShellExecFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\EregToPregFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\MbStrFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\ModernizeStrposFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoAliasFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoAliasLanguageConstructCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasLanguageConstructCallFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoMixedEchoPrintFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\PowToExponentiationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\RandomApiMigrationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\SetTypeToCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\ArraySyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoMultilineWhitespaceAroundDoubleArrowFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceInEmptyArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceInEmptyArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\ReturnToYieldFromFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeBlockNoSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeBlockNoSpacesFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\GeneralAttributeRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/GeneralAttributeRemoveFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\OrderedAttributesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\CurlyBracesPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NoMultipleStatementsPerLineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NoTrailingCommaInSinglelineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NumericLiteralSeparatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\OctalNotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\PsrAutoloadingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\SingleLineEmptyBodyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\ClassReferenceNameCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\IntegerLiteralCaseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\LowercaseKeywordsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\LowercaseStaticReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\MagicConstantCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\MagicMethodCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionTypeDeclarationCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeTypeDeclarationCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\CastSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\LowercaseCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\ModernizeTypesCastingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\NoShortBoolCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\NoUnsetCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\ShortScalarCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ClassAttributesSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ClassDefinitionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalInternalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalPublicMethodForAbstractClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ModernSerializationMethodsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModernSerializationMethodsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ModifierKeywordsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModifierKeywordsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoBlankLinesAfterClassOpeningFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoNullPropertyInitializationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoPhp4ConstructorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoRedundantReadonlyPropertyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoRedundantReadonlyPropertyFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoUnneededFinalMethodFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTraitsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\PhpdocReadonlyClassCommentToKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/PhpdocReadonlyClassCommentToKeywordFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SingleClassElementPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SingleTraitInsertPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\StaticPrivateMethodFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StaticPrivateMethodFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\StringableForToStringFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StringableForToStringFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\VisibilityRequiredFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php', - 'PhpCsFixer\\Fixer\\ClassUsage\\DateTimeImmutableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\CommentToPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\HeaderCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\MultilineCommentOpeningClosingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\NoEmptyCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\NoTrailingWhitespaceInCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentSpacingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentSpacingFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php', - 'PhpCsFixer\\Fixer\\ConfigurableFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php', - 'PhpCsFixer\\Fixer\\ConfigurableFixerTrait' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerTrait.php', - 'PhpCsFixer\\Fixer\\ConstantNotation\\NativeConstantInvocationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureContinuationPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureContinuationPositionFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ElseifFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopBodyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopBodyFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopConditionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopConditionFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\IncludeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoAlternativeSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoBreakCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoSuperfluousElseifFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoTrailingCommaInListCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededControlParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededCurlyBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUselessElseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SimplifiedIfReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SimplifiedIfReturnFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSemicolonToColonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchContinueToBreakFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchContinueToBreakFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\TrailingCommaInMultilineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\YodaStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php', - 'PhpCsFixer\\Fixer\\DeprecatedFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php', - 'PhpCsFixer\\Fixer\\DocBlockAnnotationTrait' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DocBlockAnnotationTrait.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationArrayAssignmentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php', - 'PhpCsFixer\\Fixer\\ExperimentalFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ExperimentalFixerInterface.php', - 'PhpCsFixer\\Fixer\\FixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\CombineNestedDirnameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\DateTimeCreateFromFormatCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/DateTimeCreateFromFormatCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionTypehintSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\ImplodeCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\LambdaNotUsedImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/LambdaNotUsedImportFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\MethodArgumentSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\MultilinePromotedPropertiesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MultilinePromotedPropertiesFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NativeFunctionInvocationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoSpacesAfterFunctionNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoTrailingCommaInSinglelineFunctionCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoTrailingCommaInSinglelineFunctionCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUnreachableDefaultArgumentValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUselessPrintfFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessPrintfFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUselessSprintfFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessSprintfFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NullableTypeDeclarationForDefaultNullValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToParamTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToPropertyTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToPropertyTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToReturnTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\RegularCallableCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/RegularCallableCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\ReturnTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\SingleLineThrowFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\StaticLambdaFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\UseArrowFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/UseArrowFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\VoidReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php', - 'PhpCsFixer\\Fixer\\Import\\FullyQualifiedStrictTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php', - 'PhpCsFixer\\Fixer\\Import\\GlobalNamespaceImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php', - 'PhpCsFixer\\Fixer\\Import\\GroupImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GroupImportFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoLeadingImportSlashFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoUnneededImportAliasFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnneededImportAliasFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoUnusedImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php', - 'PhpCsFixer\\Fixer\\Import\\OrderedImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php', - 'PhpCsFixer\\Fixer\\Import\\SingleImportPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\Import\\SingleLineAfterImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php', - 'PhpCsFixer\\Fixer\\IndentationTrait' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/IndentationTrait.php', - 'PhpCsFixer\\Fixer\\InternalFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/InternalFixerInterface.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveIssetsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveUnsetsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareEqualNormalizeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DirConstantFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ErrorSuppressionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ExplicitIndirectVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\FunctionToConstantFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\GetClassToClassKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\NullableTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAfterConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAroundConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php', - 'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\CleanNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\SingleBlankLineBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\Naming\\NoHomoglyphNamesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\AssignNullCoalescingToCoalesceEqualFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AssignNullCoalescingToCoalesceEqualFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\BinaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\ConcatSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\IncrementStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\LogicalOperatorsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\LongToShorthandOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LongToShorthandOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewExpressionParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewExpressionParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewWithBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewWithParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoSpaceAroundDoubleColonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoSpaceAroundDoubleColonFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoUselessConcatOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessConcatOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoUselessNullsafeOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessNullsafeOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSuccessorSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\ObjectOperatorWithoutWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\OperatorLinebreakFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/OperatorLinebreakFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\StandardizeIncrementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\StandardizeNotEqualsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryToElvisOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToElvisOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryToNullCoalescingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\UnaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\BlankLineAfterOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\EchoTagSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/EchoTagSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\FullOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\LinebreakAfterOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\NoClosingTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAssertNewNamesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAssertNewNamesFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAttributesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAttributesFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderMethodOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderMethodOrderFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertInternalTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitExpectationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitFqcnAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitInternalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMethodCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockShortWillReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNamespacedFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNoExpectationAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSetUpTearDownVisibilityFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSizeClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitStrictFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTargetVersion' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestCaseStaticMethodCallsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestClassRequiresCoversFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\AlignMultilineCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocAnnotationRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocTagRenameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocTagRenameFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoBlankLinesAfterPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoEmptyPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoSuperfluousPhpdocTagsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAddMissingParamAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAlignFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAnnotationWithoutDotFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocArrayTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocArrayTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocIndentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocInlineTagNormalizerFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagNormalizerFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocLineSpanFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocListTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocListTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAccessFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAliasTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoDuplicateTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoDuplicateTypesFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoEmptyReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoPackageFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderByValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocParamOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSingleLineVarSpacingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSummaryFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagCasingFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagNoNamedArgumentsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagNoNamedArgumentsFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocToCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimConsecutiveBlankLineSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesNoDuplicatesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesNoDuplicatesFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarAnnotationCorrectOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarWithoutNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\NoUselessReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\ReturnAssignmentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\SimplifiedNullReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\MultilineWhitespaceBeforeSemicolonsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\NoEmptyStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\NoSinglelineWhitespaceBeforeSemicolonsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\SemicolonAfterInstructionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\SpaceAfterSemicolonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\DeclareStrictTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\StrictComparisonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\StrictParamFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\ExplicitStringVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\HeredocClosingMarkerFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocClosingMarkerFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\HeredocToNowdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\MultilineStringToHeredocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/MultilineStringToHeredocFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\NoBinaryStringFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\NoTrailingWhitespaceInStringFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\SimpleToComplexStringVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\SingleQuoteFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringImplicitBackslashesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringImplicitBackslashesFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringLengthToEmptyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLengthToEmptyFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringLineEndingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\ArrayIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBeforeStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBetweenImportGroupsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBetweenImportGroupsFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypehintFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\HeredocIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\IndentationTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\LineEndingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\MethodChainingIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraBlankLinesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesAroundOffsetFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesInsideParenthesisFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\SpacesInsideParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\StatementIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php', - 'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php', - 'PhpCsFixer\\Future' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Future.php', - 'PhpCsFixer\\Hasher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Hasher.php', - 'PhpCsFixer\\Linter\\CachingLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php', - 'PhpCsFixer\\Linter\\Linter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php', - 'PhpCsFixer\\Linter\\LinterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php', - 'PhpCsFixer\\Linter\\LintingException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LintingException.php', - 'PhpCsFixer\\Linter\\LintingResultInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php', - 'PhpCsFixer\\Linter\\ProcessLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php', - 'PhpCsFixer\\Linter\\ProcessLinterProcessBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php', - 'PhpCsFixer\\Linter\\ProcessLintingResult' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php', - 'PhpCsFixer\\Linter\\TokenizerLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php', - 'PhpCsFixer\\Linter\\TokenizerLintingResult' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php', - 'PhpCsFixer\\Linter\\UnavailableLinterException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php', - 'PhpCsFixer\\ParallelAwareConfigInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ParallelAwareConfigInterface.php', - 'PhpCsFixer\\PharChecker' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PharChecker.php', - 'PhpCsFixer\\PharCheckerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php', - 'PhpCsFixer\\Preg' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Preg.php', - 'PhpCsFixer\\PregException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PregException.php', - 'PhpCsFixer\\RuleSetNameValidator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSetNameValidator.php', - 'PhpCsFixer\\RuleSet\\AbstractMajorMinorDeprecationSetDefinition' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMajorMinorDeprecationSetDefinition.php', - 'PhpCsFixer\\RuleSet\\AbstractMigrationSetDefinition' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMigrationSetDefinition.php', - 'PhpCsFixer\\RuleSet\\AbstractRuleSetDefinition' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractRuleSetDefinition.php', - 'PhpCsFixer\\RuleSet\\AutomaticMigrationSetTrait' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticMigrationSetTrait.php', - 'PhpCsFixer\\RuleSet\\AutomaticRuleSetDefinitionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticRuleSetDefinitionInterface.php', - 'PhpCsFixer\\RuleSet\\DeprecatedRuleSetDefinitionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDefinitionInterface.php', - 'PhpCsFixer\\RuleSet\\InternalRuleSetDefinitionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/InternalRuleSetDefinitionInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSet.php', - 'PhpCsFixer\\RuleSet\\RuleSetDefinitionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetDefinitionInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSetInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSets' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoPHPMigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoPHPMigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoPHPUnitMigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPUnitMigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\DoctrineAnnotationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS10RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS10Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS20RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS20Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS30RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS30Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS3x0RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS3x0Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCSRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCSSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP54MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP56MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP56MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP5x4MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x4MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP5x6MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x6MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP73MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP73MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x0MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x0MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x1MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x1MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x3MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x3MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x4MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x4MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP84MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP84MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP85MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP85MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x0MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x0MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x1MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x1MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x2MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x2MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x3MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x3MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x4MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x4MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x5MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x5MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit100MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit10x0MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit10x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit11x0MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit11x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit30MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit32MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit35MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit3x0MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit3x2MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x2MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit3x5MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x5MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit43MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit43MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit48MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit48MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit4x3MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x3MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit4x8MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x8MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit50MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit50MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit52MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit52MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit54MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit54MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit55MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit55MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit56MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit56MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit57MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit57MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x0MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x2MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x2MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x4MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x4MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x5MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x5MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x6MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x6MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x7MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x7MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit60MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit60MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit6x0MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit6x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit75MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit75MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit7x5MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit7x5MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit84MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit84MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit8x4MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit8x4MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit91MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit91MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit9x1MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit9x1MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR12RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR12Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR1Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR1Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR2Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR2Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php', - 'PhpCsFixer\\Runner\\Event\\AnalysisStarted' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Event/AnalysisStarted.php', - 'PhpCsFixer\\Runner\\Event\\FileProcessed' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Event/FileProcessed.php', - 'PhpCsFixer\\Runner\\FileCachingLintingFileIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingFileIterator.php', - 'PhpCsFixer\\Runner\\FileFilterIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php', - 'PhpCsFixer\\Runner\\LintingFileIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/LintingFileIterator.php', - 'PhpCsFixer\\Runner\\LintingResultAwareFileIteratorInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/LintingResultAwareFileIteratorInterface.php', - 'PhpCsFixer\\Runner\\Parallel\\ParallelAction' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelAction.php', - 'PhpCsFixer\\Runner\\Parallel\\ParallelConfig' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfig.php', - 'PhpCsFixer\\Runner\\Parallel\\ParallelConfigFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfigFactory.php', - 'PhpCsFixer\\Runner\\Parallel\\ParallelisationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelisationException.php', - 'PhpCsFixer\\Runner\\Parallel\\Process' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/Process.php', - 'PhpCsFixer\\Runner\\Parallel\\ProcessFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessFactory.php', - 'PhpCsFixer\\Runner\\Parallel\\ProcessIdentifier' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessIdentifier.php', - 'PhpCsFixer\\Runner\\Parallel\\ProcessPool' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessPool.php', - 'PhpCsFixer\\Runner\\Parallel\\ProcessUtils' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessUtils.php', - 'PhpCsFixer\\Runner\\Parallel\\WorkerException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/WorkerException.php', - 'PhpCsFixer\\Runner\\Runner' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Runner.php', - 'PhpCsFixer\\Runner\\RunnerConfig' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/RunnerConfig.php', - 'PhpCsFixer\\StdinFileInfo' => $vendorDir . '/friendsofphp/php-cs-fixer/src/StdinFileInfo.php', - 'PhpCsFixer\\Tokenizer\\AbstractTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php', - 'PhpCsFixer\\Tokenizer\\AbstractTypeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTypeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\AlternativeSyntaxAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AlternativeSyntaxAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AbstractControlCaseStructuresAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AttributeAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AttributeAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\CaseAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DataProviderAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DefaultAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\EnumAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\MatchAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceUseAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\SwitchAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/SwitchAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\TypeAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ArgumentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\AttributeAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AttributeAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\BlocksAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\FixerAnnotationAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FixerAnnotationAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\FullyQualifiedNameAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FullyQualifiedNameAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespacesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\PhpUnitTestCaseAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/PhpUnitTestCaseAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\RangeAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/RangeAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ReferenceAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ReferenceAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\CT' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php', - 'PhpCsFixer\\Tokenizer\\FCT' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/FCT.php', - 'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php', - 'PhpCsFixer\\Tokenizer\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php', - 'PhpCsFixer\\Tokenizer\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php', - 'PhpCsFixer\\Tokenizer\\TokensAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\TransformerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ArrayTypehintTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\AttributeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/AttributeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\BraceTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ConstructorPromotionTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\DisjunctiveNormalFormTypeParenthesisTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\FirstClassCallableTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NameQualifiedTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NamedArgumentTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamedArgumentTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NamespaceOperatorTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NullableTypeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ReturnRefTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\SquareBraceTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeAlternationTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeColonTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeIntersectionTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeIntersectionTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\UseTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\WhitespacyCommentTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformers' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformers.php', - 'PhpCsFixer\\ToolInfo' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ToolInfo.php', - 'PhpCsFixer\\ToolInfoInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php', - 'PhpCsFixer\\UnsupportedPhpVersionAllowedConfigInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/UnsupportedPhpVersionAllowedConfigInterface.php', - 'PhpCsFixer\\Utils' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Utils.php', - 'PhpCsFixer\\WhitespacesFixerConfig' => $vendorDir . '/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php', - 'PhpCsFixer\\WordMatcher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/WordMatcher.php', - 'PhpParser\\Builder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder.php', - 'PhpParser\\BuilderFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', - 'PhpParser\\BuilderHelpers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', - 'PhpParser\\Builder\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', - 'PhpParser\\Builder\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', - 'PhpParser\\Builder\\Declaration' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', - 'PhpParser\\Builder\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', - 'PhpParser\\Builder\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', - 'PhpParser\\Builder\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', - 'PhpParser\\Builder\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', - 'PhpParser\\Builder\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', - 'PhpParser\\Builder\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', - 'PhpParser\\Builder\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', - 'PhpParser\\Builder\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', - 'PhpParser\\Builder\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', - 'PhpParser\\Builder\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', - 'PhpParser\\Builder\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', - 'PhpParser\\Builder\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', - 'PhpParser\\Builder\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', - 'PhpParser\\Comment' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment.php', - 'PhpParser\\Comment\\Doc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', - 'PhpParser\\ConstExprEvaluationException' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', - 'PhpParser\\ConstExprEvaluator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', - 'PhpParser\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Error.php', - 'PhpParser\\ErrorHandler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', - 'PhpParser\\ErrorHandler\\Collecting' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', - 'PhpParser\\ErrorHandler\\Throwing' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', - 'PhpParser\\Internal\\DiffElem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', - 'PhpParser\\Internal\\Differ' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', - 'PhpParser\\Internal\\PrintableNewAnonClassNode' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', - 'PhpParser\\Internal\\TokenPolyfill' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php', - 'PhpParser\\Internal\\TokenStream' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', - 'PhpParser\\JsonDecoder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', - 'PhpParser\\Lexer' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer.php', - 'PhpParser\\Lexer\\Emulative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', - 'PhpParser\\Lexer\\TokenEmulator\\AsymmetricVisibilityTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\PipeOperatorEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\PropertyTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\VoidCastEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php', - 'PhpParser\\Modifiers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Modifiers.php', - 'PhpParser\\NameContext' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NameContext.php', - 'PhpParser\\Node' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node.php', - 'PhpParser\\NodeAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', - 'PhpParser\\NodeDumper' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', - 'PhpParser\\NodeFinder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', - 'PhpParser\\NodeTraverser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', - 'PhpParser\\NodeTraverserInterface' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', - 'PhpParser\\NodeVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', - 'PhpParser\\NodeVisitorAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', - 'PhpParser\\NodeVisitor\\CloningVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', - 'PhpParser\\NodeVisitor\\CommentAnnotatingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php', - 'PhpParser\\NodeVisitor\\FindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', - 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', - 'PhpParser\\NodeVisitor\\NameResolver' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', - 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', - 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', - 'PhpParser\\Node\\Arg' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', - 'PhpParser\\Node\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php', - 'PhpParser\\Node\\Attribute' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', - 'PhpParser\\Node\\AttributeGroup' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', - 'PhpParser\\Node\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php', - 'PhpParser\\Node\\ComplexType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', - 'PhpParser\\Node\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', - 'PhpParser\\Node\\DeclareItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php', - 'PhpParser\\Node\\Expr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', - 'PhpParser\\Node\\Expr\\ArrayDimFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', - 'PhpParser\\Node\\Expr\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', - 'PhpParser\\Node\\Expr\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', - 'PhpParser\\Node\\Expr\\ArrowFunction' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', - 'PhpParser\\Node\\Expr\\Assign' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', - 'PhpParser\\Node\\Expr\\AssignOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\AssignRef' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', - 'PhpParser\\Node\\Expr\\BinaryOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Pipe' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', - 'PhpParser\\Node\\Expr\\BitwiseNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', - 'PhpParser\\Node\\Expr\\BooleanNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', - 'PhpParser\\Node\\Expr\\CallLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', - 'PhpParser\\Node\\Expr\\Cast' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', - 'PhpParser\\Node\\Expr\\Cast\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', - 'PhpParser\\Node\\Expr\\Cast\\Bool_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', - 'PhpParser\\Node\\Expr\\Cast\\Double' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', - 'PhpParser\\Node\\Expr\\Cast\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', - 'PhpParser\\Node\\Expr\\Cast\\Object_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', - 'PhpParser\\Node\\Expr\\Cast\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', - 'PhpParser\\Node\\Expr\\Cast\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', - 'PhpParser\\Node\\Expr\\Cast\\Void_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Void_.php', - 'PhpParser\\Node\\Expr\\ClassConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', - 'PhpParser\\Node\\Expr\\Clone_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', - 'PhpParser\\Node\\Expr\\Closure' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', - 'PhpParser\\Node\\Expr\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', - 'PhpParser\\Node\\Expr\\ConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', - 'PhpParser\\Node\\Expr\\Empty_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', - 'PhpParser\\Node\\Expr\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', - 'PhpParser\\Node\\Expr\\ErrorSuppress' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', - 'PhpParser\\Node\\Expr\\Eval_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', - 'PhpParser\\Node\\Expr\\Exit_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', - 'PhpParser\\Node\\Expr\\FuncCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', - 'PhpParser\\Node\\Expr\\Include_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', - 'PhpParser\\Node\\Expr\\Instanceof_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', - 'PhpParser\\Node\\Expr\\Isset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', - 'PhpParser\\Node\\Expr\\List_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', - 'PhpParser\\Node\\Expr\\Match_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', - 'PhpParser\\Node\\Expr\\MethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', - 'PhpParser\\Node\\Expr\\New_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', - 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', - 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', - 'PhpParser\\Node\\Expr\\PostDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', - 'PhpParser\\Node\\Expr\\PostInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', - 'PhpParser\\Node\\Expr\\PreDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', - 'PhpParser\\Node\\Expr\\PreInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', - 'PhpParser\\Node\\Expr\\Print_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', - 'PhpParser\\Node\\Expr\\PropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', - 'PhpParser\\Node\\Expr\\ShellExec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', - 'PhpParser\\Node\\Expr\\StaticCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', - 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', - 'PhpParser\\Node\\Expr\\Ternary' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', - 'PhpParser\\Node\\Expr\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', - 'PhpParser\\Node\\Expr\\UnaryMinus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', - 'PhpParser\\Node\\Expr\\UnaryPlus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', - 'PhpParser\\Node\\Expr\\Variable' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', - 'PhpParser\\Node\\Expr\\YieldFrom' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', - 'PhpParser\\Node\\Expr\\Yield_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', - 'PhpParser\\Node\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', - 'PhpParser\\Node\\Identifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', - 'PhpParser\\Node\\InterpolatedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php', - 'PhpParser\\Node\\IntersectionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', - 'PhpParser\\Node\\MatchArm' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', - 'PhpParser\\Node\\Name' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name.php', - 'PhpParser\\Node\\Name\\FullyQualified' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', - 'PhpParser\\Node\\Name\\Relative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', - 'PhpParser\\Node\\NullableType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', - 'PhpParser\\Node\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Param.php', - 'PhpParser\\Node\\PropertyHook' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php', - 'PhpParser\\Node\\PropertyItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php', - 'PhpParser\\Node\\Scalar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', - 'PhpParser\\Node\\Scalar\\DNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', - 'PhpParser\\Node\\Scalar\\Encapsed' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', - 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', - 'PhpParser\\Node\\Scalar\\Float_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php', - 'PhpParser\\Node\\Scalar\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php', - 'PhpParser\\Node\\Scalar\\InterpolatedString' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php', - 'PhpParser\\Node\\Scalar\\LNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', - 'PhpParser\\Node\\Scalar\\MagicConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\File' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', - 'PhpParser\\Node\\Scalar\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', - 'PhpParser\\Node\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/StaticVar.php', - 'PhpParser\\Node\\Stmt' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', - 'PhpParser\\Node\\Stmt\\Block' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php', - 'PhpParser\\Node\\Stmt\\Break_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', - 'PhpParser\\Node\\Stmt\\Case_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', - 'PhpParser\\Node\\Stmt\\Catch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', - 'PhpParser\\Node\\Stmt\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', - 'PhpParser\\Node\\Stmt\\ClassLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', - 'PhpParser\\Node\\Stmt\\ClassMethod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', - 'PhpParser\\Node\\Stmt\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', - 'PhpParser\\Node\\Stmt\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', - 'PhpParser\\Node\\Stmt\\Continue_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', - 'PhpParser\\Node\\Stmt\\DeclareDeclare' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', - 'PhpParser\\Node\\Stmt\\Declare_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', - 'PhpParser\\Node\\Stmt\\Do_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', - 'PhpParser\\Node\\Stmt\\Echo_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', - 'PhpParser\\Node\\Stmt\\ElseIf_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', - 'PhpParser\\Node\\Stmt\\Else_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', - 'PhpParser\\Node\\Stmt\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', - 'PhpParser\\Node\\Stmt\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', - 'PhpParser\\Node\\Stmt\\Expression' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', - 'PhpParser\\Node\\Stmt\\Finally_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', - 'PhpParser\\Node\\Stmt\\For_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', - 'PhpParser\\Node\\Stmt\\Foreach_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', - 'PhpParser\\Node\\Stmt\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', - 'PhpParser\\Node\\Stmt\\Global_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', - 'PhpParser\\Node\\Stmt\\Goto_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', - 'PhpParser\\Node\\Stmt\\GroupUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', - 'PhpParser\\Node\\Stmt\\HaltCompiler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', - 'PhpParser\\Node\\Stmt\\If_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', - 'PhpParser\\Node\\Stmt\\InlineHTML' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', - 'PhpParser\\Node\\Stmt\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', - 'PhpParser\\Node\\Stmt\\Label' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', - 'PhpParser\\Node\\Stmt\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', - 'PhpParser\\Node\\Stmt\\Nop' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', - 'PhpParser\\Node\\Stmt\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', - 'PhpParser\\Node\\Stmt\\PropertyProperty' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', - 'PhpParser\\Node\\Stmt\\Return_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', - 'PhpParser\\Node\\Stmt\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', - 'PhpParser\\Node\\Stmt\\Static_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', - 'PhpParser\\Node\\Stmt\\Switch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', - 'PhpParser\\Node\\Stmt\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', - 'PhpParser\\Node\\Stmt\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', - 'PhpParser\\Node\\Stmt\\TryCatch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', - 'PhpParser\\Node\\Stmt\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', - 'PhpParser\\Node\\Stmt\\UseUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', - 'PhpParser\\Node\\Stmt\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', - 'PhpParser\\Node\\Stmt\\While_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', - 'PhpParser\\Node\\UnionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', - 'PhpParser\\Node\\UseItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UseItem.php', - 'PhpParser\\Node\\VarLikeIdentifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', - 'PhpParser\\Node\\VariadicPlaceholder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', - 'PhpParser\\Parser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser.php', - 'PhpParser\\ParserAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', - 'PhpParser\\ParserFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', - 'PhpParser\\Parser\\Php7' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', - 'PhpParser\\Parser\\Php8' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php8.php', - 'PhpParser\\PhpVersion' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PhpVersion.php', - 'PhpParser\\PrettyPrinter' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter.php', - 'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', - 'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', - 'PhpParser\\Token' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Token.php', - 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'Predis\\Autoloader' => $vendorDir . '/predis/predis/src/Autoloader.php', - 'Predis\\Client' => $vendorDir . '/predis/predis/src/Client.php', - 'Predis\\ClientConfiguration' => $vendorDir . '/predis/predis/src/ClientConfiguration.php', - 'Predis\\ClientContextInterface' => $vendorDir . '/predis/predis/src/ClientContextInterface.php', - 'Predis\\ClientException' => $vendorDir . '/predis/predis/src/ClientException.php', - 'Predis\\ClientInterface' => $vendorDir . '/predis/predis/src/ClientInterface.php', - 'Predis\\Cluster\\ClusterStrategy' => $vendorDir . '/predis/predis/src/Cluster/ClusterStrategy.php', - 'Predis\\Cluster\\Distributor\\DistributorInterface' => $vendorDir . '/predis/predis/src/Cluster/Distributor/DistributorInterface.php', - 'Predis\\Cluster\\Distributor\\EmptyRingException' => $vendorDir . '/predis/predis/src/Cluster/Distributor/EmptyRingException.php', - 'Predis\\Cluster\\Distributor\\HashRing' => $vendorDir . '/predis/predis/src/Cluster/Distributor/HashRing.php', - 'Predis\\Cluster\\Distributor\\KetamaRing' => $vendorDir . '/predis/predis/src/Cluster/Distributor/KetamaRing.php', - 'Predis\\Cluster\\Hash\\CRC16' => $vendorDir . '/predis/predis/src/Cluster/Hash/CRC16.php', - 'Predis\\Cluster\\Hash\\HashGeneratorInterface' => $vendorDir . '/predis/predis/src/Cluster/Hash/HashGeneratorInterface.php', - 'Predis\\Cluster\\NullSlotRange' => $vendorDir . '/predis/predis/src/Cluster/NullSlotRange.php', - 'Predis\\Cluster\\PredisStrategy' => $vendorDir . '/predis/predis/src/Cluster/PredisStrategy.php', - 'Predis\\Cluster\\RedisStrategy' => $vendorDir . '/predis/predis/src/Cluster/RedisStrategy.php', - 'Predis\\Cluster\\SimpleSlotMap' => $vendorDir . '/predis/predis/src/Cluster/SimpleSlotMap.php', - 'Predis\\Cluster\\SlotMap' => $vendorDir . '/predis/predis/src/Cluster/SlotMap.php', - 'Predis\\Cluster\\SlotRange' => $vendorDir . '/predis/predis/src/Cluster/SlotRange.php', - 'Predis\\Cluster\\StrategyInterface' => $vendorDir . '/predis/predis/src/Cluster/StrategyInterface.php', - 'Predis\\Collection\\Iterator\\CursorBasedIterator' => $vendorDir . '/predis/predis/src/Collection/Iterator/CursorBasedIterator.php', - 'Predis\\Collection\\Iterator\\HashKey' => $vendorDir . '/predis/predis/src/Collection/Iterator/HashKey.php', - 'Predis\\Collection\\Iterator\\Keyspace' => $vendorDir . '/predis/predis/src/Collection/Iterator/Keyspace.php', - 'Predis\\Collection\\Iterator\\ListKey' => $vendorDir . '/predis/predis/src/Collection/Iterator/ListKey.php', - 'Predis\\Collection\\Iterator\\SetKey' => $vendorDir . '/predis/predis/src/Collection/Iterator/SetKey.php', - 'Predis\\Collection\\Iterator\\SortedSetKey' => $vendorDir . '/predis/predis/src/Collection/Iterator/SortedSetKey.php', - 'Predis\\Command\\Argument\\ArrayableArgument' => $vendorDir . '/predis/predis/src/Command/Argument/ArrayableArgument.php', - 'Predis\\Command\\Argument\\Geospatial\\AbstractBy' => $vendorDir . '/predis/predis/src/Command/Argument/Geospatial/AbstractBy.php', - 'Predis\\Command\\Argument\\Geospatial\\ByBox' => $vendorDir . '/predis/predis/src/Command/Argument/Geospatial/ByBox.php', - 'Predis\\Command\\Argument\\Geospatial\\ByInterface' => $vendorDir . '/predis/predis/src/Command/Argument/Geospatial/ByInterface.php', - 'Predis\\Command\\Argument\\Geospatial\\ByRadius' => $vendorDir . '/predis/predis/src/Command/Argument/Geospatial/ByRadius.php', - 'Predis\\Command\\Argument\\Geospatial\\FromInterface' => $vendorDir . '/predis/predis/src/Command/Argument/Geospatial/FromInterface.php', - 'Predis\\Command\\Argument\\Geospatial\\FromLonLat' => $vendorDir . '/predis/predis/src/Command/Argument/Geospatial/FromLonLat.php', - 'Predis\\Command\\Argument\\Geospatial\\FromMember' => $vendorDir . '/predis/predis/src/Command/Argument/Geospatial/FromMember.php', - 'Predis\\Command\\Argument\\Search\\AggregateArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/AggregateArguments.php', - 'Predis\\Command\\Argument\\Search\\AlterArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/AlterArguments.php', - 'Predis\\Command\\Argument\\Search\\CommonArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/CommonArguments.php', - 'Predis\\Command\\Argument\\Search\\CreateArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/CreateArguments.php', - 'Predis\\Command\\Argument\\Search\\CursorArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/CursorArguments.php', - 'Predis\\Command\\Argument\\Search\\DropArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/DropArguments.php', - 'Predis\\Command\\Argument\\Search\\ExplainArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/ExplainArguments.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\Combine\\BaseCombine' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/BaseCombine.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\Combine\\LinearCombineConfig' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/LinearCombineConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\Combine\\RRFCombineConfig' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/RRFCombineConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\HybridSearchQuery' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/HybridSearchQuery.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\Reducer' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/Reducer.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\ScorerConfig' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/ScorerConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\SearchConfig' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/SearchConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\VectorSearch\\BaseVectorSearchConfig' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/BaseVectorSearchConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\VectorSearch\\KNNVectorSearchConfig' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/KNNVectorSearchConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\VectorSearch\\RangeVectorSearchConfig' => $vendorDir . '/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/RangeVectorSearchConfig.php', - 'Predis\\Command\\Argument\\Search\\ProfileArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/ProfileArguments.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\AbstractField' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SchemaFields/AbstractField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\FieldInterface' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SchemaFields/FieldInterface.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\GeoField' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SchemaFields/GeoField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\GeoShapeField' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SchemaFields/GeoShapeField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\NumericField' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SchemaFields/NumericField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\TagField' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SchemaFields/TagField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\TextField' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SchemaFields/TextField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\VectorField' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SchemaFields/VectorField.php', - 'Predis\\Command\\Argument\\Search\\SearchArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SearchArguments.php', - 'Predis\\Command\\Argument\\Search\\SpellcheckArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SpellcheckArguments.php', - 'Predis\\Command\\Argument\\Search\\SugAddArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SugAddArguments.php', - 'Predis\\Command\\Argument\\Search\\SugGetArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SugGetArguments.php', - 'Predis\\Command\\Argument\\Search\\SynUpdateArguments' => $vendorDir . '/predis/predis/src/Command/Argument/Search/SynUpdateArguments.php', - 'Predis\\Command\\Argument\\Server\\LimitInterface' => $vendorDir . '/predis/predis/src/Command/Argument/Server/LimitInterface.php', - 'Predis\\Command\\Argument\\Server\\LimitOffsetCount' => $vendorDir . '/predis/predis/src/Command/Argument/Server/LimitOffsetCount.php', - 'Predis\\Command\\Argument\\Server\\To' => $vendorDir . '/predis/predis/src/Command/Argument/Server/To.php', - 'Predis\\Command\\Argument\\Stream\\XInfoStreamOptions' => $vendorDir . '/predis/predis/src/Command/Argument/Stream/XInfoStreamOptions.php', - 'Predis\\Command\\Argument\\TimeSeries\\AddArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/AddArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\AlterArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/AlterArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\CommonArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/CommonArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\CreateArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/CreateArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\DecrByArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/DecrByArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\GetArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/GetArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\IncrByArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/IncrByArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\InfoArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/InfoArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\MGetArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/MGetArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\MRangeArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/MRangeArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\RangeArguments' => $vendorDir . '/predis/predis/src/Command/Argument/TimeSeries/RangeArguments.php', - 'Predis\\Command\\Command' => $vendorDir . '/predis/predis/src/Command/Command.php', - 'Predis\\Command\\CommandInterface' => $vendorDir . '/predis/predis/src/Command/CommandInterface.php', - 'Predis\\Command\\Container\\ACL' => $vendorDir . '/predis/predis/src/Command/Container/ACL.php', - 'Predis\\Command\\Container\\AbstractContainer' => $vendorDir . '/predis/predis/src/Command/Container/AbstractContainer.php', - 'Predis\\Command\\Container\\CLIENT' => $vendorDir . '/predis/predis/src/Command/Container/CLIENT.php', - 'Predis\\Command\\Container\\CLUSTER' => $vendorDir . '/predis/predis/src/Command/Container/CLUSTER.php', - 'Predis\\Command\\Container\\ContainerFactory' => $vendorDir . '/predis/predis/src/Command/Container/ContainerFactory.php', - 'Predis\\Command\\Container\\ContainerInterface' => $vendorDir . '/predis/predis/src/Command/Container/ContainerInterface.php', - 'Predis\\Command\\Container\\FUNCTIONS' => $vendorDir . '/predis/predis/src/Command/Container/FUNCTIONS.php', - 'Predis\\Command\\Container\\HOTKEYS' => $vendorDir . '/predis/predis/src/Command/Container/HOTKEYS.php', - 'Predis\\Command\\Container\\Json\\JSONDEBUG' => $vendorDir . '/predis/predis/src/Command/Container/Json/JSONDEBUG.php', - 'Predis\\Command\\Container\\Search\\FTCONFIG' => $vendorDir . '/predis/predis/src/Command/Container/Search/FTCONFIG.php', - 'Predis\\Command\\Container\\Search\\FTCURSOR' => $vendorDir . '/predis/predis/src/Command/Container/Search/FTCURSOR.php', - 'Predis\\Command\\Container\\XGROUP' => $vendorDir . '/predis/predis/src/Command/Container/XGROUP.php', - 'Predis\\Command\\Container\\XINFO' => $vendorDir . '/predis/predis/src/Command/Container/XINFO.php', - 'Predis\\Command\\Factory' => $vendorDir . '/predis/predis/src/Command/Factory.php', - 'Predis\\Command\\FactoryInterface' => $vendorDir . '/predis/predis/src/Command/FactoryInterface.php', - 'Predis\\Command\\PrefixableCommand' => $vendorDir . '/predis/predis/src/Command/PrefixableCommand.php', - 'Predis\\Command\\PrefixableCommandInterface' => $vendorDir . '/predis/predis/src/Command/PrefixableCommandInterface.php', - 'Predis\\Command\\Processor\\KeyPrefixProcessor' => $vendorDir . '/predis/predis/src/Command/Processor/KeyPrefixProcessor.php', - 'Predis\\Command\\Processor\\ProcessorChain' => $vendorDir . '/predis/predis/src/Command/Processor/ProcessorChain.php', - 'Predis\\Command\\Processor\\ProcessorInterface' => $vendorDir . '/predis/predis/src/Command/Processor/ProcessorInterface.php', - 'Predis\\Command\\RawCommand' => $vendorDir . '/predis/predis/src/Command/RawCommand.php', - 'Predis\\Command\\RawFactory' => $vendorDir . '/predis/predis/src/Command/RawFactory.php', - 'Predis\\Command\\RedisFactory' => $vendorDir . '/predis/predis/src/Command/RedisFactory.php', - 'Predis\\Command\\Redis\\ACL' => $vendorDir . '/predis/predis/src/Command/Redis/ACL.php', - 'Predis\\Command\\Redis\\APPEND' => $vendorDir . '/predis/predis/src/Command/Redis/APPEND.php', - 'Predis\\Command\\Redis\\ARCOUNT' => $vendorDir . '/predis/predis/src/Command/Redis/ARCOUNT.php', - 'Predis\\Command\\Redis\\ARDEL' => $vendorDir . '/predis/predis/src/Command/Redis/ARDEL.php', - 'Predis\\Command\\Redis\\ARDELRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/ARDELRANGE.php', - 'Predis\\Command\\Redis\\ARGET' => $vendorDir . '/predis/predis/src/Command/Redis/ARGET.php', - 'Predis\\Command\\Redis\\ARGETRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/ARGETRANGE.php', - 'Predis\\Command\\Redis\\ARGREP' => $vendorDir . '/predis/predis/src/Command/Redis/ARGREP.php', - 'Predis\\Command\\Redis\\ARINFO' => $vendorDir . '/predis/predis/src/Command/Redis/ARINFO.php', - 'Predis\\Command\\Redis\\ARINSERT' => $vendorDir . '/predis/predis/src/Command/Redis/ARINSERT.php', - 'Predis\\Command\\Redis\\ARLASTITEMS' => $vendorDir . '/predis/predis/src/Command/Redis/ARLASTITEMS.php', - 'Predis\\Command\\Redis\\ARLEN' => $vendorDir . '/predis/predis/src/Command/Redis/ARLEN.php', - 'Predis\\Command\\Redis\\ARMGET' => $vendorDir . '/predis/predis/src/Command/Redis/ARMGET.php', - 'Predis\\Command\\Redis\\ARMSET' => $vendorDir . '/predis/predis/src/Command/Redis/ARMSET.php', - 'Predis\\Command\\Redis\\ARNEXT' => $vendorDir . '/predis/predis/src/Command/Redis/ARNEXT.php', - 'Predis\\Command\\Redis\\AROP' => $vendorDir . '/predis/predis/src/Command/Redis/AROP.php', - 'Predis\\Command\\Redis\\ARRING' => $vendorDir . '/predis/predis/src/Command/Redis/ARRING.php', - 'Predis\\Command\\Redis\\ARSCAN' => $vendorDir . '/predis/predis/src/Command/Redis/ARSCAN.php', - 'Predis\\Command\\Redis\\ARSEEK' => $vendorDir . '/predis/predis/src/Command/Redis/ARSEEK.php', - 'Predis\\Command\\Redis\\ARSET' => $vendorDir . '/predis/predis/src/Command/Redis/ARSET.php', - 'Predis\\Command\\Redis\\AUTH' => $vendorDir . '/predis/predis/src/Command/Redis/AUTH.php', - 'Predis\\Command\\Redis\\AbstractCommand\\BZPOPBase' => $vendorDir . '/predis/predis/src/Command/Redis/AbstractCommand/BZPOPBase.php', - 'Predis\\Command\\Redis\\BGREWRITEAOF' => $vendorDir . '/predis/predis/src/Command/Redis/BGREWRITEAOF.php', - 'Predis\\Command\\Redis\\BGSAVE' => $vendorDir . '/predis/predis/src/Command/Redis/BGSAVE.php', - 'Predis\\Command\\Redis\\BITCOUNT' => $vendorDir . '/predis/predis/src/Command/Redis/BITCOUNT.php', - 'Predis\\Command\\Redis\\BITFIELD' => $vendorDir . '/predis/predis/src/Command/Redis/BITFIELD.php', - 'Predis\\Command\\Redis\\BITFIELD_RO' => $vendorDir . '/predis/predis/src/Command/Redis/BITFIELD_RO.php', - 'Predis\\Command\\Redis\\BITOP' => $vendorDir . '/predis/predis/src/Command/Redis/BITOP.php', - 'Predis\\Command\\Redis\\BITPOS' => $vendorDir . '/predis/predis/src/Command/Redis/BITPOS.php', - 'Predis\\Command\\Redis\\BLMOVE' => $vendorDir . '/predis/predis/src/Command/Redis/BLMOVE.php', - 'Predis\\Command\\Redis\\BLMPOP' => $vendorDir . '/predis/predis/src/Command/Redis/BLMPOP.php', - 'Predis\\Command\\Redis\\BLPOP' => $vendorDir . '/predis/predis/src/Command/Redis/BLPOP.php', - 'Predis\\Command\\Redis\\BRPOP' => $vendorDir . '/predis/predis/src/Command/Redis/BRPOP.php', - 'Predis\\Command\\Redis\\BRPOPLPUSH' => $vendorDir . '/predis/predis/src/Command/Redis/BRPOPLPUSH.php', - 'Predis\\Command\\Redis\\BZMPOP' => $vendorDir . '/predis/predis/src/Command/Redis/BZMPOP.php', - 'Predis\\Command\\Redis\\BZPOPMAX' => $vendorDir . '/predis/predis/src/Command/Redis/BZPOPMAX.php', - 'Predis\\Command\\Redis\\BZPOPMIN' => $vendorDir . '/predis/predis/src/Command/Redis/BZPOPMIN.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFADD' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFADD.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFEXISTS' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFEXISTS.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFINFO' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFINFO.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFINSERT' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFINSERT.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFLOADCHUNK' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFLOADCHUNK.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFMADD' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFMADD.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFMEXISTS' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFMEXISTS.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFRESERVE' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFRESERVE.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFSCANDUMP' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFSCANDUMP.php', - 'Predis\\Command\\Redis\\CLIENT' => $vendorDir . '/predis/predis/src/Command/Redis/CLIENT.php', - 'Predis\\Command\\Redis\\CLUSTER' => $vendorDir . '/predis/predis/src/Command/Redis/CLUSTER.php', - 'Predis\\Command\\Redis\\COMMAND' => $vendorDir . '/predis/predis/src/Command/Redis/COMMAND.php', - 'Predis\\Command\\Redis\\CONFIG' => $vendorDir . '/predis/predis/src/Command/Redis/CONFIG.php', - 'Predis\\Command\\Redis\\COPY' => $vendorDir . '/predis/predis/src/Command/Redis/COPY.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSINCRBY' => $vendorDir . '/predis/predis/src/Command/Redis/CountMinSketch/CMSINCRBY.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSINFO' => $vendorDir . '/predis/predis/src/Command/Redis/CountMinSketch/CMSINFO.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSINITBYDIM' => $vendorDir . '/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYDIM.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSINITBYPROB' => $vendorDir . '/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYPROB.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSMERGE' => $vendorDir . '/predis/predis/src/Command/Redis/CountMinSketch/CMSMERGE.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSQUERY' => $vendorDir . '/predis/predis/src/Command/Redis/CountMinSketch/CMSQUERY.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFADD' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFADD.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFADDNX' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFADDNX.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFCOUNT' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFCOUNT.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFDEL' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFDEL.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFEXISTS' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFEXISTS.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFINFO' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFINFO.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFINSERT' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFINSERT.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFINSERTNX' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFINSERTNX.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFLOADCHUNK' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFLOADCHUNK.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFMEXISTS' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFMEXISTS.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFRESERVE' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFRESERVE.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFSCANDUMP' => $vendorDir . '/predis/predis/src/Command/Redis/CuckooFilter/CFSCANDUMP.php', - 'Predis\\Command\\Redis\\DBSIZE' => $vendorDir . '/predis/predis/src/Command/Redis/DBSIZE.php', - 'Predis\\Command\\Redis\\DECR' => $vendorDir . '/predis/predis/src/Command/Redis/DECR.php', - 'Predis\\Command\\Redis\\DECRBY' => $vendorDir . '/predis/predis/src/Command/Redis/DECRBY.php', - 'Predis\\Command\\Redis\\DEL' => $vendorDir . '/predis/predis/src/Command/Redis/DEL.php', - 'Predis\\Command\\Redis\\DELEX' => $vendorDir . '/predis/predis/src/Command/Redis/DELEX.php', - 'Predis\\Command\\Redis\\DIGEST' => $vendorDir . '/predis/predis/src/Command/Redis/DIGEST.php', - 'Predis\\Command\\Redis\\DISCARD' => $vendorDir . '/predis/predis/src/Command/Redis/DISCARD.php', - 'Predis\\Command\\Redis\\DUMP' => $vendorDir . '/predis/predis/src/Command/Redis/DUMP.php', - 'Predis\\Command\\Redis\\ECHO_' => $vendorDir . '/predis/predis/src/Command/Redis/ECHO_.php', - 'Predis\\Command\\Redis\\EVALSHA' => $vendorDir . '/predis/predis/src/Command/Redis/EVALSHA.php', - 'Predis\\Command\\Redis\\EVALSHA_RO' => $vendorDir . '/predis/predis/src/Command/Redis/EVALSHA_RO.php', - 'Predis\\Command\\Redis\\EVAL_' => $vendorDir . '/predis/predis/src/Command/Redis/EVAL_.php', - 'Predis\\Command\\Redis\\EVAL_RO' => $vendorDir . '/predis/predis/src/Command/Redis/EVAL_RO.php', - 'Predis\\Command\\Redis\\EXEC' => $vendorDir . '/predis/predis/src/Command/Redis/EXEC.php', - 'Predis\\Command\\Redis\\EXISTS' => $vendorDir . '/predis/predis/src/Command/Redis/EXISTS.php', - 'Predis\\Command\\Redis\\EXPIRE' => $vendorDir . '/predis/predis/src/Command/Redis/EXPIRE.php', - 'Predis\\Command\\Redis\\EXPIREAT' => $vendorDir . '/predis/predis/src/Command/Redis/EXPIREAT.php', - 'Predis\\Command\\Redis\\EXPIRETIME' => $vendorDir . '/predis/predis/src/Command/Redis/EXPIRETIME.php', - 'Predis\\Command\\Redis\\FAILOVER' => $vendorDir . '/predis/predis/src/Command/Redis/FAILOVER.php', - 'Predis\\Command\\Redis\\FCALL' => $vendorDir . '/predis/predis/src/Command/Redis/FCALL.php', - 'Predis\\Command\\Redis\\FCALL_RO' => $vendorDir . '/predis/predis/src/Command/Redis/FCALL_RO.php', - 'Predis\\Command\\Redis\\FLUSHALL' => $vendorDir . '/predis/predis/src/Command/Redis/FLUSHALL.php', - 'Predis\\Command\\Redis\\FLUSHDB' => $vendorDir . '/predis/predis/src/Command/Redis/FLUSHDB.php', - 'Predis\\Command\\Redis\\FUNCTIONS' => $vendorDir . '/predis/predis/src/Command/Redis/FUNCTIONS.php', - 'Predis\\Command\\Redis\\GEOADD' => $vendorDir . '/predis/predis/src/Command/Redis/GEOADD.php', - 'Predis\\Command\\Redis\\GEODIST' => $vendorDir . '/predis/predis/src/Command/Redis/GEODIST.php', - 'Predis\\Command\\Redis\\GEOHASH' => $vendorDir . '/predis/predis/src/Command/Redis/GEOHASH.php', - 'Predis\\Command\\Redis\\GEOPOS' => $vendorDir . '/predis/predis/src/Command/Redis/GEOPOS.php', - 'Predis\\Command\\Redis\\GEORADIUS' => $vendorDir . '/predis/predis/src/Command/Redis/GEORADIUS.php', - 'Predis\\Command\\Redis\\GEORADIUSBYMEMBER' => $vendorDir . '/predis/predis/src/Command/Redis/GEORADIUSBYMEMBER.php', - 'Predis\\Command\\Redis\\GEOSEARCH' => $vendorDir . '/predis/predis/src/Command/Redis/GEOSEARCH.php', - 'Predis\\Command\\Redis\\GEOSEARCHSTORE' => $vendorDir . '/predis/predis/src/Command/Redis/GEOSEARCHSTORE.php', - 'Predis\\Command\\Redis\\GET' => $vendorDir . '/predis/predis/src/Command/Redis/GET.php', - 'Predis\\Command\\Redis\\GETBIT' => $vendorDir . '/predis/predis/src/Command/Redis/GETBIT.php', - 'Predis\\Command\\Redis\\GETDEL' => $vendorDir . '/predis/predis/src/Command/Redis/GETDEL.php', - 'Predis\\Command\\Redis\\GETEX' => $vendorDir . '/predis/predis/src/Command/Redis/GETEX.php', - 'Predis\\Command\\Redis\\GETRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/GETRANGE.php', - 'Predis\\Command\\Redis\\GETSET' => $vendorDir . '/predis/predis/src/Command/Redis/GETSET.php', - 'Predis\\Command\\Redis\\HDEL' => $vendorDir . '/predis/predis/src/Command/Redis/HDEL.php', - 'Predis\\Command\\Redis\\HEXISTS' => $vendorDir . '/predis/predis/src/Command/Redis/HEXISTS.php', - 'Predis\\Command\\Redis\\HEXPIRE' => $vendorDir . '/predis/predis/src/Command/Redis/HEXPIRE.php', - 'Predis\\Command\\Redis\\HEXPIREAT' => $vendorDir . '/predis/predis/src/Command/Redis/HEXPIREAT.php', - 'Predis\\Command\\Redis\\HEXPIRETIME' => $vendorDir . '/predis/predis/src/Command/Redis/HEXPIRETIME.php', - 'Predis\\Command\\Redis\\HGET' => $vendorDir . '/predis/predis/src/Command/Redis/HGET.php', - 'Predis\\Command\\Redis\\HGETALL' => $vendorDir . '/predis/predis/src/Command/Redis/HGETALL.php', - 'Predis\\Command\\Redis\\HGETDEL' => $vendorDir . '/predis/predis/src/Command/Redis/HGETDEL.php', - 'Predis\\Command\\Redis\\HGETEX' => $vendorDir . '/predis/predis/src/Command/Redis/HGETEX.php', - 'Predis\\Command\\Redis\\HINCRBY' => $vendorDir . '/predis/predis/src/Command/Redis/HINCRBY.php', - 'Predis\\Command\\Redis\\HINCRBYFLOAT' => $vendorDir . '/predis/predis/src/Command/Redis/HINCRBYFLOAT.php', - 'Predis\\Command\\Redis\\HKEYS' => $vendorDir . '/predis/predis/src/Command/Redis/HKEYS.php', - 'Predis\\Command\\Redis\\HLEN' => $vendorDir . '/predis/predis/src/Command/Redis/HLEN.php', - 'Predis\\Command\\Redis\\HMGET' => $vendorDir . '/predis/predis/src/Command/Redis/HMGET.php', - 'Predis\\Command\\Redis\\HMSET' => $vendorDir . '/predis/predis/src/Command/Redis/HMSET.php', - 'Predis\\Command\\Redis\\HOTKEYS' => $vendorDir . '/predis/predis/src/Command/Redis/HOTKEYS.php', - 'Predis\\Command\\Redis\\HPERSIST' => $vendorDir . '/predis/predis/src/Command/Redis/HPERSIST.php', - 'Predis\\Command\\Redis\\HPEXPIRE' => $vendorDir . '/predis/predis/src/Command/Redis/HPEXPIRE.php', - 'Predis\\Command\\Redis\\HPEXPIREAT' => $vendorDir . '/predis/predis/src/Command/Redis/HPEXPIREAT.php', - 'Predis\\Command\\Redis\\HPEXPIRETIME' => $vendorDir . '/predis/predis/src/Command/Redis/HPEXPIRETIME.php', - 'Predis\\Command\\Redis\\HPTTL' => $vendorDir . '/predis/predis/src/Command/Redis/HPTTL.php', - 'Predis\\Command\\Redis\\HRANDFIELD' => $vendorDir . '/predis/predis/src/Command/Redis/HRANDFIELD.php', - 'Predis\\Command\\Redis\\HSCAN' => $vendorDir . '/predis/predis/src/Command/Redis/HSCAN.php', - 'Predis\\Command\\Redis\\HSET' => $vendorDir . '/predis/predis/src/Command/Redis/HSET.php', - 'Predis\\Command\\Redis\\HSETEX' => $vendorDir . '/predis/predis/src/Command/Redis/HSETEX.php', - 'Predis\\Command\\Redis\\HSETNX' => $vendorDir . '/predis/predis/src/Command/Redis/HSETNX.php', - 'Predis\\Command\\Redis\\HSTRLEN' => $vendorDir . '/predis/predis/src/Command/Redis/HSTRLEN.php', - 'Predis\\Command\\Redis\\HTTL' => $vendorDir . '/predis/predis/src/Command/Redis/HTTL.php', - 'Predis\\Command\\Redis\\HVALS' => $vendorDir . '/predis/predis/src/Command/Redis/HVALS.php', - 'Predis\\Command\\Redis\\INCR' => $vendorDir . '/predis/predis/src/Command/Redis/INCR.php', - 'Predis\\Command\\Redis\\INCRBY' => $vendorDir . '/predis/predis/src/Command/Redis/INCRBY.php', - 'Predis\\Command\\Redis\\INCRBYFLOAT' => $vendorDir . '/predis/predis/src/Command/Redis/INCRBYFLOAT.php', - 'Predis\\Command\\Redis\\INCREX' => $vendorDir . '/predis/predis/src/Command/Redis/INCREX.php', - 'Predis\\Command\\Redis\\INFO' => $vendorDir . '/predis/predis/src/Command/Redis/INFO.php', - 'Predis\\Command\\Redis\\Json\\JSONARRAPPEND' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONARRAPPEND.php', - 'Predis\\Command\\Redis\\Json\\JSONARRINDEX' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONARRINDEX.php', - 'Predis\\Command\\Redis\\Json\\JSONARRINSERT' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONARRINSERT.php', - 'Predis\\Command\\Redis\\Json\\JSONARRLEN' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONARRLEN.php', - 'Predis\\Command\\Redis\\Json\\JSONARRPOP' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONARRPOP.php', - 'Predis\\Command\\Redis\\Json\\JSONARRTRIM' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONARRTRIM.php', - 'Predis\\Command\\Redis\\Json\\JSONCLEAR' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONCLEAR.php', - 'Predis\\Command\\Redis\\Json\\JSONDEBUG' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONDEBUG.php', - 'Predis\\Command\\Redis\\Json\\JSONDEL' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONDEL.php', - 'Predis\\Command\\Redis\\Json\\JSONFORGET' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONFORGET.php', - 'Predis\\Command\\Redis\\Json\\JSONGET' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONGET.php', - 'Predis\\Command\\Redis\\Json\\JSONMERGE' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONMERGE.php', - 'Predis\\Command\\Redis\\Json\\JSONMGET' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONMGET.php', - 'Predis\\Command\\Redis\\Json\\JSONMSET' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONMSET.php', - 'Predis\\Command\\Redis\\Json\\JSONNUMINCRBY' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONNUMINCRBY.php', - 'Predis\\Command\\Redis\\Json\\JSONOBJKEYS' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONOBJKEYS.php', - 'Predis\\Command\\Redis\\Json\\JSONOBJLEN' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONOBJLEN.php', - 'Predis\\Command\\Redis\\Json\\JSONRESP' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONRESP.php', - 'Predis\\Command\\Redis\\Json\\JSONSET' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONSET.php', - 'Predis\\Command\\Redis\\Json\\JSONSTRAPPEND' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONSTRAPPEND.php', - 'Predis\\Command\\Redis\\Json\\JSONSTRLEN' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONSTRLEN.php', - 'Predis\\Command\\Redis\\Json\\JSONTOGGLE' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONTOGGLE.php', - 'Predis\\Command\\Redis\\Json\\JSONTYPE' => $vendorDir . '/predis/predis/src/Command/Redis/Json/JSONTYPE.php', - 'Predis\\Command\\Redis\\KEYS' => $vendorDir . '/predis/predis/src/Command/Redis/KEYS.php', - 'Predis\\Command\\Redis\\LASTSAVE' => $vendorDir . '/predis/predis/src/Command/Redis/LASTSAVE.php', - 'Predis\\Command\\Redis\\LCS' => $vendorDir . '/predis/predis/src/Command/Redis/LCS.php', - 'Predis\\Command\\Redis\\LINDEX' => $vendorDir . '/predis/predis/src/Command/Redis/LINDEX.php', - 'Predis\\Command\\Redis\\LINSERT' => $vendorDir . '/predis/predis/src/Command/Redis/LINSERT.php', - 'Predis\\Command\\Redis\\LLEN' => $vendorDir . '/predis/predis/src/Command/Redis/LLEN.php', - 'Predis\\Command\\Redis\\LMOVE' => $vendorDir . '/predis/predis/src/Command/Redis/LMOVE.php', - 'Predis\\Command\\Redis\\LMPOP' => $vendorDir . '/predis/predis/src/Command/Redis/LMPOP.php', - 'Predis\\Command\\Redis\\LPOP' => $vendorDir . '/predis/predis/src/Command/Redis/LPOP.php', - 'Predis\\Command\\Redis\\LPUSH' => $vendorDir . '/predis/predis/src/Command/Redis/LPUSH.php', - 'Predis\\Command\\Redis\\LPUSHX' => $vendorDir . '/predis/predis/src/Command/Redis/LPUSHX.php', - 'Predis\\Command\\Redis\\LRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/LRANGE.php', - 'Predis\\Command\\Redis\\LREM' => $vendorDir . '/predis/predis/src/Command/Redis/LREM.php', - 'Predis\\Command\\Redis\\LSET' => $vendorDir . '/predis/predis/src/Command/Redis/LSET.php', - 'Predis\\Command\\Redis\\LTRIM' => $vendorDir . '/predis/predis/src/Command/Redis/LTRIM.php', - 'Predis\\Command\\Redis\\MGET' => $vendorDir . '/predis/predis/src/Command/Redis/MGET.php', - 'Predis\\Command\\Redis\\MIGRATE' => $vendorDir . '/predis/predis/src/Command/Redis/MIGRATE.php', - 'Predis\\Command\\Redis\\MONITOR' => $vendorDir . '/predis/predis/src/Command/Redis/MONITOR.php', - 'Predis\\Command\\Redis\\MOVE' => $vendorDir . '/predis/predis/src/Command/Redis/MOVE.php', - 'Predis\\Command\\Redis\\MSET' => $vendorDir . '/predis/predis/src/Command/Redis/MSET.php', - 'Predis\\Command\\Redis\\MSETEX' => $vendorDir . '/predis/predis/src/Command/Redis/MSETEX.php', - 'Predis\\Command\\Redis\\MSETNX' => $vendorDir . '/predis/predis/src/Command/Redis/MSETNX.php', - 'Predis\\Command\\Redis\\MULTI' => $vendorDir . '/predis/predis/src/Command/Redis/MULTI.php', - 'Predis\\Command\\Redis\\OBJECT_' => $vendorDir . '/predis/predis/src/Command/Redis/OBJECT_.php', - 'Predis\\Command\\Redis\\PERSIST' => $vendorDir . '/predis/predis/src/Command/Redis/PERSIST.php', - 'Predis\\Command\\Redis\\PEXPIRE' => $vendorDir . '/predis/predis/src/Command/Redis/PEXPIRE.php', - 'Predis\\Command\\Redis\\PEXPIREAT' => $vendorDir . '/predis/predis/src/Command/Redis/PEXPIREAT.php', - 'Predis\\Command\\Redis\\PEXPIRETIME' => $vendorDir . '/predis/predis/src/Command/Redis/PEXPIRETIME.php', - 'Predis\\Command\\Redis\\PFADD' => $vendorDir . '/predis/predis/src/Command/Redis/PFADD.php', - 'Predis\\Command\\Redis\\PFCOUNT' => $vendorDir . '/predis/predis/src/Command/Redis/PFCOUNT.php', - 'Predis\\Command\\Redis\\PFMERGE' => $vendorDir . '/predis/predis/src/Command/Redis/PFMERGE.php', - 'Predis\\Command\\Redis\\PING' => $vendorDir . '/predis/predis/src/Command/Redis/PING.php', - 'Predis\\Command\\Redis\\PSETEX' => $vendorDir . '/predis/predis/src/Command/Redis/PSETEX.php', - 'Predis\\Command\\Redis\\PSUBSCRIBE' => $vendorDir . '/predis/predis/src/Command/Redis/PSUBSCRIBE.php', - 'Predis\\Command\\Redis\\PTTL' => $vendorDir . '/predis/predis/src/Command/Redis/PTTL.php', - 'Predis\\Command\\Redis\\PUBLISH' => $vendorDir . '/predis/predis/src/Command/Redis/PUBLISH.php', - 'Predis\\Command\\Redis\\PUBSUB' => $vendorDir . '/predis/predis/src/Command/Redis/PUBSUB.php', - 'Predis\\Command\\Redis\\PUNSUBSCRIBE' => $vendorDir . '/predis/predis/src/Command/Redis/PUNSUBSCRIBE.php', - 'Predis\\Command\\Redis\\QUIT' => $vendorDir . '/predis/predis/src/Command/Redis/QUIT.php', - 'Predis\\Command\\Redis\\RANDOMKEY' => $vendorDir . '/predis/predis/src/Command/Redis/RANDOMKEY.php', - 'Predis\\Command\\Redis\\RENAME' => $vendorDir . '/predis/predis/src/Command/Redis/RENAME.php', - 'Predis\\Command\\Redis\\RENAMENX' => $vendorDir . '/predis/predis/src/Command/Redis/RENAMENX.php', - 'Predis\\Command\\Redis\\RESTORE' => $vendorDir . '/predis/predis/src/Command/Redis/RESTORE.php', - 'Predis\\Command\\Redis\\RPOP' => $vendorDir . '/predis/predis/src/Command/Redis/RPOP.php', - 'Predis\\Command\\Redis\\RPOPLPUSH' => $vendorDir . '/predis/predis/src/Command/Redis/RPOPLPUSH.php', - 'Predis\\Command\\Redis\\RPUSH' => $vendorDir . '/predis/predis/src/Command/Redis/RPUSH.php', - 'Predis\\Command\\Redis\\RPUSHX' => $vendorDir . '/predis/predis/src/Command/Redis/RPUSHX.php', - 'Predis\\Command\\Redis\\SADD' => $vendorDir . '/predis/predis/src/Command/Redis/SADD.php', - 'Predis\\Command\\Redis\\SAVE' => $vendorDir . '/predis/predis/src/Command/Redis/SAVE.php', - 'Predis\\Command\\Redis\\SCAN' => $vendorDir . '/predis/predis/src/Command/Redis/SCAN.php', - 'Predis\\Command\\Redis\\SCARD' => $vendorDir . '/predis/predis/src/Command/Redis/SCARD.php', - 'Predis\\Command\\Redis\\SCRIPT' => $vendorDir . '/predis/predis/src/Command/Redis/SCRIPT.php', - 'Predis\\Command\\Redis\\SDIFF' => $vendorDir . '/predis/predis/src/Command/Redis/SDIFF.php', - 'Predis\\Command\\Redis\\SDIFFSTORE' => $vendorDir . '/predis/predis/src/Command/Redis/SDIFFSTORE.php', - 'Predis\\Command\\Redis\\SELECT' => $vendorDir . '/predis/predis/src/Command/Redis/SELECT.php', - 'Predis\\Command\\Redis\\SENTINEL' => $vendorDir . '/predis/predis/src/Command/Redis/SENTINEL.php', - 'Predis\\Command\\Redis\\SET' => $vendorDir . '/predis/predis/src/Command/Redis/SET.php', - 'Predis\\Command\\Redis\\SETBIT' => $vendorDir . '/predis/predis/src/Command/Redis/SETBIT.php', - 'Predis\\Command\\Redis\\SETEX' => $vendorDir . '/predis/predis/src/Command/Redis/SETEX.php', - 'Predis\\Command\\Redis\\SETNX' => $vendorDir . '/predis/predis/src/Command/Redis/SETNX.php', - 'Predis\\Command\\Redis\\SETRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/SETRANGE.php', - 'Predis\\Command\\Redis\\SHUTDOWN' => $vendorDir . '/predis/predis/src/Command/Redis/SHUTDOWN.php', - 'Predis\\Command\\Redis\\SINTER' => $vendorDir . '/predis/predis/src/Command/Redis/SINTER.php', - 'Predis\\Command\\Redis\\SINTERCARD' => $vendorDir . '/predis/predis/src/Command/Redis/SINTERCARD.php', - 'Predis\\Command\\Redis\\SINTERSTORE' => $vendorDir . '/predis/predis/src/Command/Redis/SINTERSTORE.php', - 'Predis\\Command\\Redis\\SISMEMBER' => $vendorDir . '/predis/predis/src/Command/Redis/SISMEMBER.php', - 'Predis\\Command\\Redis\\SLAVEOF' => $vendorDir . '/predis/predis/src/Command/Redis/SLAVEOF.php', - 'Predis\\Command\\Redis\\SLOWLOG' => $vendorDir . '/predis/predis/src/Command/Redis/SLOWLOG.php', - 'Predis\\Command\\Redis\\SMEMBERS' => $vendorDir . '/predis/predis/src/Command/Redis/SMEMBERS.php', - 'Predis\\Command\\Redis\\SMISMEMBER' => $vendorDir . '/predis/predis/src/Command/Redis/SMISMEMBER.php', - 'Predis\\Command\\Redis\\SMOVE' => $vendorDir . '/predis/predis/src/Command/Redis/SMOVE.php', - 'Predis\\Command\\Redis\\SORT' => $vendorDir . '/predis/predis/src/Command/Redis/SORT.php', - 'Predis\\Command\\Redis\\SORT_RO' => $vendorDir . '/predis/predis/src/Command/Redis/SORT_RO.php', - 'Predis\\Command\\Redis\\SPOP' => $vendorDir . '/predis/predis/src/Command/Redis/SPOP.php', - 'Predis\\Command\\Redis\\SPUBLISH' => $vendorDir . '/predis/predis/src/Command/Redis/SPUBLISH.php', - 'Predis\\Command\\Redis\\SRANDMEMBER' => $vendorDir . '/predis/predis/src/Command/Redis/SRANDMEMBER.php', - 'Predis\\Command\\Redis\\SREM' => $vendorDir . '/predis/predis/src/Command/Redis/SREM.php', - 'Predis\\Command\\Redis\\SSCAN' => $vendorDir . '/predis/predis/src/Command/Redis/SSCAN.php', - 'Predis\\Command\\Redis\\SSUBSCRIBE' => $vendorDir . '/predis/predis/src/Command/Redis/SSUBSCRIBE.php', - 'Predis\\Command\\Redis\\STRLEN' => $vendorDir . '/predis/predis/src/Command/Redis/STRLEN.php', - 'Predis\\Command\\Redis\\SUBSCRIBE' => $vendorDir . '/predis/predis/src/Command/Redis/SUBSCRIBE.php', - 'Predis\\Command\\Redis\\SUBSTR' => $vendorDir . '/predis/predis/src/Command/Redis/SUBSTR.php', - 'Predis\\Command\\Redis\\SUNION' => $vendorDir . '/predis/predis/src/Command/Redis/SUNION.php', - 'Predis\\Command\\Redis\\SUNIONSTORE' => $vendorDir . '/predis/predis/src/Command/Redis/SUNIONSTORE.php', - 'Predis\\Command\\Redis\\SUNSUBSCRIBE' => $vendorDir . '/predis/predis/src/Command/Redis/SUNSUBSCRIBE.php', - 'Predis\\Command\\Redis\\Search\\FTAGGREGATE' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTAGGREGATE.php', - 'Predis\\Command\\Redis\\Search\\FTALIASADD' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTALIASADD.php', - 'Predis\\Command\\Redis\\Search\\FTALIASDEL' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTALIASDEL.php', - 'Predis\\Command\\Redis\\Search\\FTALIASUPDATE' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTALIASUPDATE.php', - 'Predis\\Command\\Redis\\Search\\FTALTER' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTALTER.php', - 'Predis\\Command\\Redis\\Search\\FTCONFIG' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTCONFIG.php', - 'Predis\\Command\\Redis\\Search\\FTCREATE' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTCREATE.php', - 'Predis\\Command\\Redis\\Search\\FTCURSOR' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTCURSOR.php', - 'Predis\\Command\\Redis\\Search\\FTDICTADD' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTDICTADD.php', - 'Predis\\Command\\Redis\\Search\\FTDICTDEL' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTDICTDEL.php', - 'Predis\\Command\\Redis\\Search\\FTDICTDUMP' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTDICTDUMP.php', - 'Predis\\Command\\Redis\\Search\\FTDROPINDEX' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTDROPINDEX.php', - 'Predis\\Command\\Redis\\Search\\FTEXPLAIN' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTEXPLAIN.php', - 'Predis\\Command\\Redis\\Search\\FTHYBRID' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTHYBRID.php', - 'Predis\\Command\\Redis\\Search\\FTINFO' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTINFO.php', - 'Predis\\Command\\Redis\\Search\\FTPROFILE' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTPROFILE.php', - 'Predis\\Command\\Redis\\Search\\FTSEARCH' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTSEARCH.php', - 'Predis\\Command\\Redis\\Search\\FTSPELLCHECK' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTSPELLCHECK.php', - 'Predis\\Command\\Redis\\Search\\FTSUGADD' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTSUGADD.php', - 'Predis\\Command\\Redis\\Search\\FTSUGDEL' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTSUGDEL.php', - 'Predis\\Command\\Redis\\Search\\FTSUGGET' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTSUGGET.php', - 'Predis\\Command\\Redis\\Search\\FTSUGLEN' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTSUGLEN.php', - 'Predis\\Command\\Redis\\Search\\FTSYNDUMP' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTSYNDUMP.php', - 'Predis\\Command\\Redis\\Search\\FTSYNUPDATE' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTSYNUPDATE.php', - 'Predis\\Command\\Redis\\Search\\FTTAGVALS' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FTTAGVALS.php', - 'Predis\\Command\\Redis\\Search\\FT_LIST' => $vendorDir . '/predis/predis/src/Command/Redis/Search/FT_LIST.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTADD' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTADD.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTBYRANK' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTBYRANK.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTBYREVRANK' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTBYREVRANK.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTCDF' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTCDF.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTCREATE' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTCREATE.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTINFO' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTINFO.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTMAX' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTMAX.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTMERGE' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTMERGE.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTMIN' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTMIN.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTQUANTILE' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTQUANTILE.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTRANK' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTRANK.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTRESET' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTRESET.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTREVRANK' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTREVRANK.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTTRIMMED_MEAN' => $vendorDir . '/predis/predis/src/Command/Redis/TDigest/TDIGESTTRIMMED_MEAN.php', - 'Predis\\Command\\Redis\\TIME' => $vendorDir . '/predis/predis/src/Command/Redis/TIME.php', - 'Predis\\Command\\Redis\\TOUCH' => $vendorDir . '/predis/predis/src/Command/Redis/TOUCH.php', - 'Predis\\Command\\Redis\\TTL' => $vendorDir . '/predis/predis/src/Command/Redis/TTL.php', - 'Predis\\Command\\Redis\\TYPE' => $vendorDir . '/predis/predis/src/Command/Redis/TYPE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSADD' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSADD.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSALTER' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSALTER.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSCREATE' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSCREATE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSCREATERULE' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSCREATERULE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSDECRBY' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSDECRBY.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSDEL' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSDEL.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSDELETERULE' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSDELETERULE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSGET' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSGET.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSINCRBY' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSINCRBY.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSINFO' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSINFO.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSMADD' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSMADD.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSMGET' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSMGET.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSMRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSMRANGE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSMREVRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSMREVRANGE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSQUERYINDEX' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSQUERYINDEX.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSRANGE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSREVRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/TimeSeries/TSREVRANGE.php', - 'Predis\\Command\\Redis\\TopK\\TOPKADD' => $vendorDir . '/predis/predis/src/Command/Redis/TopK/TOPKADD.php', - 'Predis\\Command\\Redis\\TopK\\TOPKINCRBY' => $vendorDir . '/predis/predis/src/Command/Redis/TopK/TOPKINCRBY.php', - 'Predis\\Command\\Redis\\TopK\\TOPKINFO' => $vendorDir . '/predis/predis/src/Command/Redis/TopK/TOPKINFO.php', - 'Predis\\Command\\Redis\\TopK\\TOPKLIST' => $vendorDir . '/predis/predis/src/Command/Redis/TopK/TOPKLIST.php', - 'Predis\\Command\\Redis\\TopK\\TOPKQUERY' => $vendorDir . '/predis/predis/src/Command/Redis/TopK/TOPKQUERY.php', - 'Predis\\Command\\Redis\\TopK\\TOPKRESERVE' => $vendorDir . '/predis/predis/src/Command/Redis/TopK/TOPKRESERVE.php', - 'Predis\\Command\\Redis\\UNLINK' => $vendorDir . '/predis/predis/src/Command/Redis/UNLINK.php', - 'Predis\\Command\\Redis\\UNSUBSCRIBE' => $vendorDir . '/predis/predis/src/Command/Redis/UNSUBSCRIBE.php', - 'Predis\\Command\\Redis\\UNWATCH' => $vendorDir . '/predis/predis/src/Command/Redis/UNWATCH.php', - 'Predis\\Command\\Redis\\Utils\\CommandUtility' => $vendorDir . '/predis/predis/src/Command/Redis/Utils/CommandUtility.php', - 'Predis\\Command\\Redis\\Utils\\VectorUtility' => $vendorDir . '/predis/predis/src/Command/Redis/Utils/VectorUtility.php', - 'Predis\\Command\\Redis\\VADD' => $vendorDir . '/predis/predis/src/Command/Redis/VADD.php', - 'Predis\\Command\\Redis\\VCARD' => $vendorDir . '/predis/predis/src/Command/Redis/VCARD.php', - 'Predis\\Command\\Redis\\VDIM' => $vendorDir . '/predis/predis/src/Command/Redis/VDIM.php', - 'Predis\\Command\\Redis\\VEMB' => $vendorDir . '/predis/predis/src/Command/Redis/VEMB.php', - 'Predis\\Command\\Redis\\VGETATTR' => $vendorDir . '/predis/predis/src/Command/Redis/VGETATTR.php', - 'Predis\\Command\\Redis\\VINFO' => $vendorDir . '/predis/predis/src/Command/Redis/VINFO.php', - 'Predis\\Command\\Redis\\VLINKS' => $vendorDir . '/predis/predis/src/Command/Redis/VLINKS.php', - 'Predis\\Command\\Redis\\VRANDMEMBER' => $vendorDir . '/predis/predis/src/Command/Redis/VRANDMEMBER.php', - 'Predis\\Command\\Redis\\VRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/VRANGE.php', - 'Predis\\Command\\Redis\\VREM' => $vendorDir . '/predis/predis/src/Command/Redis/VREM.php', - 'Predis\\Command\\Redis\\VSETATTR' => $vendorDir . '/predis/predis/src/Command/Redis/VSETATTR.php', - 'Predis\\Command\\Redis\\VSIM' => $vendorDir . '/predis/predis/src/Command/Redis/VSIM.php', - 'Predis\\Command\\Redis\\WAITAOF' => $vendorDir . '/predis/predis/src/Command/Redis/WAITAOF.php', - 'Predis\\Command\\Redis\\WATCH' => $vendorDir . '/predis/predis/src/Command/Redis/WATCH.php', - 'Predis\\Command\\Redis\\XACK' => $vendorDir . '/predis/predis/src/Command/Redis/XACK.php', - 'Predis\\Command\\Redis\\XACKDEL' => $vendorDir . '/predis/predis/src/Command/Redis/XACKDEL.php', - 'Predis\\Command\\Redis\\XADD' => $vendorDir . '/predis/predis/src/Command/Redis/XADD.php', - 'Predis\\Command\\Redis\\XAUTOCLAIM' => $vendorDir . '/predis/predis/src/Command/Redis/XAUTOCLAIM.php', - 'Predis\\Command\\Redis\\XCFGSET' => $vendorDir . '/predis/predis/src/Command/Redis/XCFGSET.php', - 'Predis\\Command\\Redis\\XCLAIM' => $vendorDir . '/predis/predis/src/Command/Redis/XCLAIM.php', - 'Predis\\Command\\Redis\\XDEL' => $vendorDir . '/predis/predis/src/Command/Redis/XDEL.php', - 'Predis\\Command\\Redis\\XDELEX' => $vendorDir . '/predis/predis/src/Command/Redis/XDELEX.php', - 'Predis\\Command\\Redis\\XGROUP' => $vendorDir . '/predis/predis/src/Command/Redis/XGROUP.php', - 'Predis\\Command\\Redis\\XINFO' => $vendorDir . '/predis/predis/src/Command/Redis/XINFO.php', - 'Predis\\Command\\Redis\\XLEN' => $vendorDir . '/predis/predis/src/Command/Redis/XLEN.php', - 'Predis\\Command\\Redis\\XNACK' => $vendorDir . '/predis/predis/src/Command/Redis/XNACK.php', - 'Predis\\Command\\Redis\\XPENDING' => $vendorDir . '/predis/predis/src/Command/Redis/XPENDING.php', - 'Predis\\Command\\Redis\\XRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/XRANGE.php', - 'Predis\\Command\\Redis\\XREAD' => $vendorDir . '/predis/predis/src/Command/Redis/XREAD.php', - 'Predis\\Command\\Redis\\XREADGROUP' => $vendorDir . '/predis/predis/src/Command/Redis/XREADGROUP.php', - 'Predis\\Command\\Redis\\XREADGROUP_CLAIM' => $vendorDir . '/predis/predis/src/Command/Redis/XREADGROUP_CLAIM.php', - 'Predis\\Command\\Redis\\XREVRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/XREVRANGE.php', - 'Predis\\Command\\Redis\\XSETID' => $vendorDir . '/predis/predis/src/Command/Redis/XSETID.php', - 'Predis\\Command\\Redis\\XTRIM' => $vendorDir . '/predis/predis/src/Command/Redis/XTRIM.php', - 'Predis\\Command\\Redis\\ZADD' => $vendorDir . '/predis/predis/src/Command/Redis/ZADD.php', - 'Predis\\Command\\Redis\\ZCARD' => $vendorDir . '/predis/predis/src/Command/Redis/ZCARD.php', - 'Predis\\Command\\Redis\\ZCOUNT' => $vendorDir . '/predis/predis/src/Command/Redis/ZCOUNT.php', - 'Predis\\Command\\Redis\\ZDIFF' => $vendorDir . '/predis/predis/src/Command/Redis/ZDIFF.php', - 'Predis\\Command\\Redis\\ZDIFFSTORE' => $vendorDir . '/predis/predis/src/Command/Redis/ZDIFFSTORE.php', - 'Predis\\Command\\Redis\\ZINCRBY' => $vendorDir . '/predis/predis/src/Command/Redis/ZINCRBY.php', - 'Predis\\Command\\Redis\\ZINTER' => $vendorDir . '/predis/predis/src/Command/Redis/ZINTER.php', - 'Predis\\Command\\Redis\\ZINTERCARD' => $vendorDir . '/predis/predis/src/Command/Redis/ZINTERCARD.php', - 'Predis\\Command\\Redis\\ZINTERSTORE' => $vendorDir . '/predis/predis/src/Command/Redis/ZINTERSTORE.php', - 'Predis\\Command\\Redis\\ZLEXCOUNT' => $vendorDir . '/predis/predis/src/Command/Redis/ZLEXCOUNT.php', - 'Predis\\Command\\Redis\\ZMPOP' => $vendorDir . '/predis/predis/src/Command/Redis/ZMPOP.php', - 'Predis\\Command\\Redis\\ZMSCORE' => $vendorDir . '/predis/predis/src/Command/Redis/ZMSCORE.php', - 'Predis\\Command\\Redis\\ZPOPMAX' => $vendorDir . '/predis/predis/src/Command/Redis/ZPOPMAX.php', - 'Predis\\Command\\Redis\\ZPOPMIN' => $vendorDir . '/predis/predis/src/Command/Redis/ZPOPMIN.php', - 'Predis\\Command\\Redis\\ZRANDMEMBER' => $vendorDir . '/predis/predis/src/Command/Redis/ZRANDMEMBER.php', - 'Predis\\Command\\Redis\\ZRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/ZRANGE.php', - 'Predis\\Command\\Redis\\ZRANGEBYLEX' => $vendorDir . '/predis/predis/src/Command/Redis/ZRANGEBYLEX.php', - 'Predis\\Command\\Redis\\ZRANGEBYSCORE' => $vendorDir . '/predis/predis/src/Command/Redis/ZRANGEBYSCORE.php', - 'Predis\\Command\\Redis\\ZRANGESTORE' => $vendorDir . '/predis/predis/src/Command/Redis/ZRANGESTORE.php', - 'Predis\\Command\\Redis\\ZRANK' => $vendorDir . '/predis/predis/src/Command/Redis/ZRANK.php', - 'Predis\\Command\\Redis\\ZREM' => $vendorDir . '/predis/predis/src/Command/Redis/ZREM.php', - 'Predis\\Command\\Redis\\ZREMRANGEBYLEX' => $vendorDir . '/predis/predis/src/Command/Redis/ZREMRANGEBYLEX.php', - 'Predis\\Command\\Redis\\ZREMRANGEBYRANK' => $vendorDir . '/predis/predis/src/Command/Redis/ZREMRANGEBYRANK.php', - 'Predis\\Command\\Redis\\ZREMRANGEBYSCORE' => $vendorDir . '/predis/predis/src/Command/Redis/ZREMRANGEBYSCORE.php', - 'Predis\\Command\\Redis\\ZREVRANGE' => $vendorDir . '/predis/predis/src/Command/Redis/ZREVRANGE.php', - 'Predis\\Command\\Redis\\ZREVRANGEBYLEX' => $vendorDir . '/predis/predis/src/Command/Redis/ZREVRANGEBYLEX.php', - 'Predis\\Command\\Redis\\ZREVRANGEBYSCORE' => $vendorDir . '/predis/predis/src/Command/Redis/ZREVRANGEBYSCORE.php', - 'Predis\\Command\\Redis\\ZREVRANK' => $vendorDir . '/predis/predis/src/Command/Redis/ZREVRANK.php', - 'Predis\\Command\\Redis\\ZSCAN' => $vendorDir . '/predis/predis/src/Command/Redis/ZSCAN.php', - 'Predis\\Command\\Redis\\ZSCORE' => $vendorDir . '/predis/predis/src/Command/Redis/ZSCORE.php', - 'Predis\\Command\\Redis\\ZUNION' => $vendorDir . '/predis/predis/src/Command/Redis/ZUNION.php', - 'Predis\\Command\\Redis\\ZUNIONSTORE' => $vendorDir . '/predis/predis/src/Command/Redis/ZUNIONSTORE.php', - 'Predis\\Command\\ScriptCommand' => $vendorDir . '/predis/predis/src/Command/ScriptCommand.php', - 'Predis\\Command\\Traits\\Aggregate' => $vendorDir . '/predis/predis/src/Command/Traits/Aggregate.php', - 'Predis\\Command\\Traits\\BitByte' => $vendorDir . '/predis/predis/src/Command/Traits/BitByte.php', - 'Predis\\Command\\Traits\\BloomFilters\\BucketSize' => $vendorDir . '/predis/predis/src/Command/Traits/BloomFilters/BucketSize.php', - 'Predis\\Command\\Traits\\BloomFilters\\Capacity' => $vendorDir . '/predis/predis/src/Command/Traits/BloomFilters/Capacity.php', - 'Predis\\Command\\Traits\\BloomFilters\\Error' => $vendorDir . '/predis/predis/src/Command/Traits/BloomFilters/Error.php', - 'Predis\\Command\\Traits\\BloomFilters\\Expansion' => $vendorDir . '/predis/predis/src/Command/Traits/BloomFilters/Expansion.php', - 'Predis\\Command\\Traits\\BloomFilters\\Items' => $vendorDir . '/predis/predis/src/Command/Traits/BloomFilters/Items.php', - 'Predis\\Command\\Traits\\BloomFilters\\MaxIterations' => $vendorDir . '/predis/predis/src/Command/Traits/BloomFilters/MaxIterations.php', - 'Predis\\Command\\Traits\\BloomFilters\\NoCreate' => $vendorDir . '/predis/predis/src/Command/Traits/BloomFilters/NoCreate.php', - 'Predis\\Command\\Traits\\By\\ByArgument' => $vendorDir . '/predis/predis/src/Command/Traits/By/ByArgument.php', - 'Predis\\Command\\Traits\\By\\ByLexByScore' => $vendorDir . '/predis/predis/src/Command/Traits/By/ByLexByScore.php', - 'Predis\\Command\\Traits\\By\\GeoBy' => $vendorDir . '/predis/predis/src/Command/Traits/By/GeoBy.php', - 'Predis\\Command\\Traits\\Count' => $vendorDir . '/predis/predis/src/Command/Traits/Count.php', - 'Predis\\Command\\Traits\\DB' => $vendorDir . '/predis/predis/src/Command/Traits/DB.php', - 'Predis\\Command\\Traits\\Expire\\ExpireOptions' => $vendorDir . '/predis/predis/src/Command/Traits/Expire/ExpireOptions.php', - 'Predis\\Command\\Traits\\From\\GeoFrom' => $vendorDir . '/predis/predis/src/Command/Traits/From/GeoFrom.php', - 'Predis\\Command\\Traits\\Get\\Get' => $vendorDir . '/predis/predis/src/Command/Traits/Get/Get.php', - 'Predis\\Command\\Traits\\Json\\Indent' => $vendorDir . '/predis/predis/src/Command/Traits/Json/Indent.php', - 'Predis\\Command\\Traits\\Json\\Newline' => $vendorDir . '/predis/predis/src/Command/Traits/Json/Newline.php', - 'Predis\\Command\\Traits\\Json\\NxXxArgument' => $vendorDir . '/predis/predis/src/Command/Traits/Json/NxXxArgument.php', - 'Predis\\Command\\Traits\\Json\\Space' => $vendorDir . '/predis/predis/src/Command/Traits/Json/Space.php', - 'Predis\\Command\\Traits\\Keys' => $vendorDir . '/predis/predis/src/Command/Traits/Keys.php', - 'Predis\\Command\\Traits\\LeftRight' => $vendorDir . '/predis/predis/src/Command/Traits/LeftRight.php', - 'Predis\\Command\\Traits\\Limit\\Limit' => $vendorDir . '/predis/predis/src/Command/Traits/Limit/Limit.php', - 'Predis\\Command\\Traits\\Limit\\LimitObject' => $vendorDir . '/predis/predis/src/Command/Traits/Limit/LimitObject.php', - 'Predis\\Command\\Traits\\MinMaxModifier' => $vendorDir . '/predis/predis/src/Command/Traits/MinMaxModifier.php', - 'Predis\\Command\\Traits\\Replace' => $vendorDir . '/predis/predis/src/Command/Traits/Replace.php', - 'Predis\\Command\\Traits\\Rev' => $vendorDir . '/predis/predis/src/Command/Traits/Rev.php', - 'Predis\\Command\\Traits\\Sorting' => $vendorDir . '/predis/predis/src/Command/Traits/Sorting.php', - 'Predis\\Command\\Traits\\Storedist' => $vendorDir . '/predis/predis/src/Command/Traits/Storedist.php', - 'Predis\\Command\\Traits\\Timeout' => $vendorDir . '/predis/predis/src/Command/Traits/Timeout.php', - 'Predis\\Command\\Traits\\To\\ServerTo' => $vendorDir . '/predis/predis/src/Command/Traits/To/ServerTo.php', - 'Predis\\Command\\Traits\\Weights' => $vendorDir . '/predis/predis/src/Command/Traits/Weights.php', - 'Predis\\Command\\Traits\\With\\WithCoord' => $vendorDir . '/predis/predis/src/Command/Traits/With/WithCoord.php', - 'Predis\\Command\\Traits\\With\\WithDist' => $vendorDir . '/predis/predis/src/Command/Traits/With/WithDist.php', - 'Predis\\Command\\Traits\\With\\WithHash' => $vendorDir . '/predis/predis/src/Command/Traits/With/WithHash.php', - 'Predis\\Command\\Traits\\With\\WithScores' => $vendorDir . '/predis/predis/src/Command/Traits/With/WithScores.php', - 'Predis\\Command\\Traits\\With\\WithValues' => $vendorDir . '/predis/predis/src/Command/Traits/With/WithValues.php', - 'Predis\\CommunicationException' => $vendorDir . '/predis/predis/src/CommunicationException.php', - 'Predis\\Configuration\\OptionInterface' => $vendorDir . '/predis/predis/src/Configuration/OptionInterface.php', - 'Predis\\Configuration\\Option\\Aggregate' => $vendorDir . '/predis/predis/src/Configuration/Option/Aggregate.php', - 'Predis\\Configuration\\Option\\CRC16' => $vendorDir . '/predis/predis/src/Configuration/Option/CRC16.php', - 'Predis\\Configuration\\Option\\Cluster' => $vendorDir . '/predis/predis/src/Configuration/Option/Cluster.php', - 'Predis\\Configuration\\Option\\Commands' => $vendorDir . '/predis/predis/src/Configuration/Option/Commands.php', - 'Predis\\Configuration\\Option\\Connections' => $vendorDir . '/predis/predis/src/Configuration/Option/Connections.php', - 'Predis\\Configuration\\Option\\Exceptions' => $vendorDir . '/predis/predis/src/Configuration/Option/Exceptions.php', - 'Predis\\Configuration\\Option\\Prefix' => $vendorDir . '/predis/predis/src/Configuration/Option/Prefix.php', - 'Predis\\Configuration\\Option\\Replication' => $vendorDir . '/predis/predis/src/Configuration/Option/Replication.php', - 'Predis\\Configuration\\Option\\UpstreamDriver' => $vendorDir . '/predis/predis/src/Configuration/Option/UpstreamDriver.php', - 'Predis\\Configuration\\Options' => $vendorDir . '/predis/predis/src/Configuration/Options.php', - 'Predis\\Configuration\\OptionsInterface' => $vendorDir . '/predis/predis/src/Configuration/OptionsInterface.php', - 'Predis\\Connection\\AbstractAggregateConnection' => $vendorDir . '/predis/predis/src/Connection/AbstractAggregateConnection.php', - 'Predis\\Connection\\AbstractConnection' => $vendorDir . '/predis/predis/src/Connection/AbstractConnection.php', - 'Predis\\Connection\\AggregateConnectionInterface' => $vendorDir . '/predis/predis/src/Connection/AggregateConnectionInterface.php', - 'Predis\\Connection\\Cluster\\ClusterInterface' => $vendorDir . '/predis/predis/src/Connection/Cluster/ClusterInterface.php', - 'Predis\\Connection\\Cluster\\PredisCluster' => $vendorDir . '/predis/predis/src/Connection/Cluster/PredisCluster.php', - 'Predis\\Connection\\Cluster\\RedisCluster' => $vendorDir . '/predis/predis/src/Connection/Cluster/RedisCluster.php', - 'Predis\\Connection\\CompositeConnectionInterface' => $vendorDir . '/predis/predis/src/Connection/CompositeConnectionInterface.php', - 'Predis\\Connection\\CompositeStreamConnection' => $vendorDir . '/predis/predis/src/Connection/CompositeStreamConnection.php', - 'Predis\\Connection\\ConnectionException' => $vendorDir . '/predis/predis/src/Connection/ConnectionException.php', - 'Predis\\Connection\\ConnectionInterface' => $vendorDir . '/predis/predis/src/Connection/ConnectionInterface.php', - 'Predis\\Connection\\Factory' => $vendorDir . '/predis/predis/src/Connection/Factory.php', - 'Predis\\Connection\\FactoryInterface' => $vendorDir . '/predis/predis/src/Connection/FactoryInterface.php', - 'Predis\\Connection\\NodeConnectionInterface' => $vendorDir . '/predis/predis/src/Connection/NodeConnectionInterface.php', - 'Predis\\Connection\\Parameters' => $vendorDir . '/predis/predis/src/Connection/Parameters.php', - 'Predis\\Connection\\ParametersInterface' => $vendorDir . '/predis/predis/src/Connection/ParametersInterface.php', - 'Predis\\Connection\\RelayConnection' => $vendorDir . '/predis/predis/src/Connection/RelayConnection.php', - 'Predis\\Connection\\RelayFactory' => $vendorDir . '/predis/predis/src/Connection/RelayFactory.php', - 'Predis\\Connection\\RelayMethods' => $vendorDir . '/predis/predis/src/Connection/RelayMethods.php', - 'Predis\\Connection\\Replication\\MasterSlaveReplication' => $vendorDir . '/predis/predis/src/Connection/Replication/MasterSlaveReplication.php', - 'Predis\\Connection\\Replication\\ReplicationInterface' => $vendorDir . '/predis/predis/src/Connection/Replication/ReplicationInterface.php', - 'Predis\\Connection\\Replication\\SentinelReplication' => $vendorDir . '/predis/predis/src/Connection/Replication/SentinelReplication.php', - 'Predis\\Connection\\Resource\\Exception\\StreamInitException' => $vendorDir . '/predis/predis/src/Connection/Resource/Exception/StreamInitException.php', - 'Predis\\Connection\\Resource\\Stream' => $vendorDir . '/predis/predis/src/Connection/Resource/Stream.php', - 'Predis\\Connection\\Resource\\StreamFactory' => $vendorDir . '/predis/predis/src/Connection/Resource/StreamFactory.php', - 'Predis\\Connection\\Resource\\StreamFactoryInterface' => $vendorDir . '/predis/predis/src/Connection/Resource/StreamFactoryInterface.php', - 'Predis\\Connection\\StreamConnection' => $vendorDir . '/predis/predis/src/Connection/StreamConnection.php', - 'Predis\\Consumer\\AbstractConsumer' => $vendorDir . '/predis/predis/src/Consumer/AbstractConsumer.php', - 'Predis\\Consumer\\AbstractDispatcherLoop' => $vendorDir . '/predis/predis/src/Consumer/AbstractDispatcherLoop.php', - 'Predis\\Consumer\\ConsumerInterface' => $vendorDir . '/predis/predis/src/Consumer/ConsumerInterface.php', - 'Predis\\Consumer\\DispatcherLoopInterface' => $vendorDir . '/predis/predis/src/Consumer/DispatcherLoopInterface.php', - 'Predis\\Consumer\\PubSub\\Consumer' => $vendorDir . '/predis/predis/src/Consumer/PubSub/Consumer.php', - 'Predis\\Consumer\\PubSub\\DispatcherLoop' => $vendorDir . '/predis/predis/src/Consumer/PubSub/DispatcherLoop.php', - 'Predis\\Consumer\\PubSub\\RelayConsumer' => $vendorDir . '/predis/predis/src/Consumer/PubSub/RelayConsumer.php', - 'Predis\\Consumer\\PubSub\\SubscriptionContext' => $vendorDir . '/predis/predis/src/Consumer/PubSub/SubscriptionContext.php', - 'Predis\\Consumer\\Push\\Consumer' => $vendorDir . '/predis/predis/src/Consumer/Push/Consumer.php', - 'Predis\\Consumer\\Push\\DispatcherLoop' => $vendorDir . '/predis/predis/src/Consumer/Push/DispatcherLoop.php', - 'Predis\\Consumer\\Push\\PushNotificationException' => $vendorDir . '/predis/predis/src/Consumer/Push/PushNotificationException.php', - 'Predis\\Consumer\\Push\\PushResponse' => $vendorDir . '/predis/predis/src/Consumer/Push/PushResponse.php', - 'Predis\\Consumer\\Push\\PushResponseInterface' => $vendorDir . '/predis/predis/src/Consumer/Push/PushResponseInterface.php', - 'Predis\\Monitor\\Consumer' => $vendorDir . '/predis/predis/src/Monitor/Consumer.php', - 'Predis\\NotSupportedException' => $vendorDir . '/predis/predis/src/NotSupportedException.php', - 'Predis\\Pipeline\\Atomic' => $vendorDir . '/predis/predis/src/Pipeline/Atomic.php', - 'Predis\\Pipeline\\ConnectionErrorProof' => $vendorDir . '/predis/predis/src/Pipeline/ConnectionErrorProof.php', - 'Predis\\Pipeline\\FireAndForget' => $vendorDir . '/predis/predis/src/Pipeline/FireAndForget.php', - 'Predis\\Pipeline\\Pipeline' => $vendorDir . '/predis/predis/src/Pipeline/Pipeline.php', - 'Predis\\Pipeline\\RelayAtomic' => $vendorDir . '/predis/predis/src/Pipeline/RelayAtomic.php', - 'Predis\\Pipeline\\RelayPipeline' => $vendorDir . '/predis/predis/src/Pipeline/RelayPipeline.php', - 'Predis\\PredisException' => $vendorDir . '/predis/predis/src/PredisException.php', - 'Predis\\Protocol\\Parser\\ParserStrategyResolver' => $vendorDir . '/predis/predis/src/Protocol/Parser/ParserStrategyResolver.php', - 'Predis\\Protocol\\Parser\\ParserStrategyResolverInterface' => $vendorDir . '/predis/predis/src/Protocol/Parser/ParserStrategyResolverInterface.php', - 'Predis\\Protocol\\Parser\\Strategy\\ParserStrategyInterface' => $vendorDir . '/predis/predis/src/Protocol/Parser/Strategy/ParserStrategyInterface.php', - 'Predis\\Protocol\\Parser\\Strategy\\Resp2Strategy' => $vendorDir . '/predis/predis/src/Protocol/Parser/Strategy/Resp2Strategy.php', - 'Predis\\Protocol\\Parser\\Strategy\\Resp3Strategy' => $vendorDir . '/predis/predis/src/Protocol/Parser/Strategy/Resp3Strategy.php', - 'Predis\\Protocol\\Parser\\UnexpectedTypeException' => $vendorDir . '/predis/predis/src/Protocol/Parser/UnexpectedTypeException.php', - 'Predis\\Protocol\\ProtocolException' => $vendorDir . '/predis/predis/src/Protocol/ProtocolException.php', - 'Predis\\Protocol\\ProtocolProcessorInterface' => $vendorDir . '/predis/predis/src/Protocol/ProtocolProcessorInterface.php', - 'Predis\\Protocol\\RequestSerializerInterface' => $vendorDir . '/predis/predis/src/Protocol/RequestSerializerInterface.php', - 'Predis\\Protocol\\ResponseReaderInterface' => $vendorDir . '/predis/predis/src/Protocol/ResponseReaderInterface.php', - 'Predis\\Protocol\\Text\\CompositeProtocolProcessor' => $vendorDir . '/predis/predis/src/Protocol/Text/CompositeProtocolProcessor.php', - 'Predis\\Protocol\\Text\\Handler\\BulkResponse' => $vendorDir . '/predis/predis/src/Protocol/Text/Handler/BulkResponse.php', - 'Predis\\Protocol\\Text\\Handler\\ErrorResponse' => $vendorDir . '/predis/predis/src/Protocol/Text/Handler/ErrorResponse.php', - 'Predis\\Protocol\\Text\\Handler\\IntegerResponse' => $vendorDir . '/predis/predis/src/Protocol/Text/Handler/IntegerResponse.php', - 'Predis\\Protocol\\Text\\Handler\\MultiBulkResponse' => $vendorDir . '/predis/predis/src/Protocol/Text/Handler/MultiBulkResponse.php', - 'Predis\\Protocol\\Text\\Handler\\ResponseHandlerInterface' => $vendorDir . '/predis/predis/src/Protocol/Text/Handler/ResponseHandlerInterface.php', - 'Predis\\Protocol\\Text\\Handler\\StatusResponse' => $vendorDir . '/predis/predis/src/Protocol/Text/Handler/StatusResponse.php', - 'Predis\\Protocol\\Text\\Handler\\StreamableMultiBulkResponse' => $vendorDir . '/predis/predis/src/Protocol/Text/Handler/StreamableMultiBulkResponse.php', - 'Predis\\Protocol\\Text\\ProtocolProcessor' => $vendorDir . '/predis/predis/src/Protocol/Text/ProtocolProcessor.php', - 'Predis\\Protocol\\Text\\RequestSerializer' => $vendorDir . '/predis/predis/src/Protocol/Text/RequestSerializer.php', - 'Predis\\Protocol\\Text\\ResponseReader' => $vendorDir . '/predis/predis/src/Protocol/Text/ResponseReader.php', - 'Predis\\Replication\\MissingMasterException' => $vendorDir . '/predis/predis/src/Replication/MissingMasterException.php', - 'Predis\\Replication\\ReplicationStrategy' => $vendorDir . '/predis/predis/src/Replication/ReplicationStrategy.php', - 'Predis\\Replication\\RoleException' => $vendorDir . '/predis/predis/src/Replication/RoleException.php', - 'Predis\\Response\\Error' => $vendorDir . '/predis/predis/src/Response/Error.php', - 'Predis\\Response\\ErrorInterface' => $vendorDir . '/predis/predis/src/Response/ErrorInterface.php', - 'Predis\\Response\\Iterator\\MultiBulk' => $vendorDir . '/predis/predis/src/Response/Iterator/MultiBulk.php', - 'Predis\\Response\\Iterator\\MultiBulkIterator' => $vendorDir . '/predis/predis/src/Response/Iterator/MultiBulkIterator.php', - 'Predis\\Response\\Iterator\\MultiBulkTuple' => $vendorDir . '/predis/predis/src/Response/Iterator/MultiBulkTuple.php', - 'Predis\\Response\\ResponseInterface' => $vendorDir . '/predis/predis/src/Response/ResponseInterface.php', - 'Predis\\Response\\ServerException' => $vendorDir . '/predis/predis/src/Response/ServerException.php', - 'Predis\\Response\\Status' => $vendorDir . '/predis/predis/src/Response/Status.php', - 'Predis\\Retry\\Retry' => $vendorDir . '/predis/predis/src/Retry/Retry.php', - 'Predis\\Retry\\Strategy\\EqualBackoff' => $vendorDir . '/predis/predis/src/Retry/Strategy/EqualBackoff.php', - 'Predis\\Retry\\Strategy\\ExponentialBackoff' => $vendorDir . '/predis/predis/src/Retry/Strategy/ExponentialBackoff.php', - 'Predis\\Retry\\Strategy\\NoBackoff' => $vendorDir . '/predis/predis/src/Retry/Strategy/NoBackoff.php', - 'Predis\\Retry\\Strategy\\RetryStrategyInterface' => $vendorDir . '/predis/predis/src/Retry/Strategy/RetryStrategyInterface.php', - 'Predis\\Session\\Handler' => $vendorDir . '/predis/predis/src/Session/Handler.php', - 'Predis\\TimeoutException' => $vendorDir . '/predis/predis/src/TimeoutException.php', - 'Predis\\Transaction\\AbortedMultiExecException' => $vendorDir . '/predis/predis/src/Transaction/AbortedMultiExecException.php', - 'Predis\\Transaction\\Exception\\TransactionException' => $vendorDir . '/predis/predis/src/Transaction/Exception/TransactionException.php', - 'Predis\\Transaction\\MultiExec' => $vendorDir . '/predis/predis/src/Transaction/MultiExec.php', - 'Predis\\Transaction\\MultiExecState' => $vendorDir . '/predis/predis/src/Transaction/MultiExecState.php', - 'Predis\\Transaction\\Response\\BypassTransactionResponse' => $vendorDir . '/predis/predis/src/Transaction/Response/BypassTransactionResponse.php', - 'Predis\\Transaction\\Strategy\\ClusterConnectionStrategy' => $vendorDir . '/predis/predis/src/Transaction/Strategy/ClusterConnectionStrategy.php', - 'Predis\\Transaction\\Strategy\\ConnectionStrategyResolver' => $vendorDir . '/predis/predis/src/Transaction/Strategy/ConnectionStrategyResolver.php', - 'Predis\\Transaction\\Strategy\\NodeConnectionStrategy' => $vendorDir . '/predis/predis/src/Transaction/Strategy/NodeConnectionStrategy.php', - 'Predis\\Transaction\\Strategy\\NonClusterConnectionStrategy' => $vendorDir . '/predis/predis/src/Transaction/Strategy/NonClusterConnectionStrategy.php', - 'Predis\\Transaction\\Strategy\\ReplicationConnectionStrategy' => $vendorDir . '/predis/predis/src/Transaction/Strategy/ReplicationConnectionStrategy.php', - 'Predis\\Transaction\\Strategy\\StrategyInterface' => $vendorDir . '/predis/predis/src/Transaction/Strategy/StrategyInterface.php', - 'Predis\\Transaction\\Strategy\\StrategyResolverInterface' => $vendorDir . '/predis/predis/src/Transaction/Strategy/StrategyResolverInterface.php', - 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', - 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', - 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', - 'Psr\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/psr/event-dispatcher/src/EventDispatcherInterface.php', - 'Psr\\EventDispatcher\\ListenerProviderInterface' => $vendorDir . '/psr/event-dispatcher/src/ListenerProviderInterface.php', - 'Psr\\EventDispatcher\\StoppableEventInterface' => $vendorDir . '/psr/event-dispatcher/src/StoppableEventInterface.php', - 'Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php', - 'Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php', - 'Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php', - 'Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php', - 'Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php', - 'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php', - 'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php', - 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/src/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/src/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/src/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/src/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/src/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/src/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/src/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/src/NullLogger.php', - 'React\\Cache\\ArrayCache' => $vendorDir . '/react/cache/src/ArrayCache.php', - 'React\\Cache\\CacheInterface' => $vendorDir . '/react/cache/src/CacheInterface.php', - 'React\\ChildProcess\\Process' => $vendorDir . '/react/child-process/src/Process.php', - 'React\\Dns\\BadServerException' => $vendorDir . '/react/dns/src/BadServerException.php', - 'React\\Dns\\Config\\Config' => $vendorDir . '/react/dns/src/Config/Config.php', - 'React\\Dns\\Config\\HostsFile' => $vendorDir . '/react/dns/src/Config/HostsFile.php', - 'React\\Dns\\Model\\Message' => $vendorDir . '/react/dns/src/Model/Message.php', - 'React\\Dns\\Model\\Record' => $vendorDir . '/react/dns/src/Model/Record.php', - 'React\\Dns\\Protocol\\BinaryDumper' => $vendorDir . '/react/dns/src/Protocol/BinaryDumper.php', - 'React\\Dns\\Protocol\\Parser' => $vendorDir . '/react/dns/src/Protocol/Parser.php', - 'React\\Dns\\Query\\CachingExecutor' => $vendorDir . '/react/dns/src/Query/CachingExecutor.php', - 'React\\Dns\\Query\\CancellationException' => $vendorDir . '/react/dns/src/Query/CancellationException.php', - 'React\\Dns\\Query\\CoopExecutor' => $vendorDir . '/react/dns/src/Query/CoopExecutor.php', - 'React\\Dns\\Query\\ExecutorInterface' => $vendorDir . '/react/dns/src/Query/ExecutorInterface.php', - 'React\\Dns\\Query\\FallbackExecutor' => $vendorDir . '/react/dns/src/Query/FallbackExecutor.php', - 'React\\Dns\\Query\\HostsFileExecutor' => $vendorDir . '/react/dns/src/Query/HostsFileExecutor.php', - 'React\\Dns\\Query\\Query' => $vendorDir . '/react/dns/src/Query/Query.php', - 'React\\Dns\\Query\\RetryExecutor' => $vendorDir . '/react/dns/src/Query/RetryExecutor.php', - 'React\\Dns\\Query\\SelectiveTransportExecutor' => $vendorDir . '/react/dns/src/Query/SelectiveTransportExecutor.php', - 'React\\Dns\\Query\\TcpTransportExecutor' => $vendorDir . '/react/dns/src/Query/TcpTransportExecutor.php', - 'React\\Dns\\Query\\TimeoutException' => $vendorDir . '/react/dns/src/Query/TimeoutException.php', - 'React\\Dns\\Query\\TimeoutExecutor' => $vendorDir . '/react/dns/src/Query/TimeoutExecutor.php', - 'React\\Dns\\Query\\UdpTransportExecutor' => $vendorDir . '/react/dns/src/Query/UdpTransportExecutor.php', - 'React\\Dns\\RecordNotFoundException' => $vendorDir . '/react/dns/src/RecordNotFoundException.php', - 'React\\Dns\\Resolver\\Factory' => $vendorDir . '/react/dns/src/Resolver/Factory.php', - 'React\\Dns\\Resolver\\Resolver' => $vendorDir . '/react/dns/src/Resolver/Resolver.php', - 'React\\Dns\\Resolver\\ResolverInterface' => $vendorDir . '/react/dns/src/Resolver/ResolverInterface.php', - 'React\\EventLoop\\ExtEvLoop' => $vendorDir . '/react/event-loop/src/ExtEvLoop.php', - 'React\\EventLoop\\ExtEventLoop' => $vendorDir . '/react/event-loop/src/ExtEventLoop.php', - 'React\\EventLoop\\ExtLibevLoop' => $vendorDir . '/react/event-loop/src/ExtLibevLoop.php', - 'React\\EventLoop\\ExtLibeventLoop' => $vendorDir . '/react/event-loop/src/ExtLibeventLoop.php', - 'React\\EventLoop\\ExtUvLoop' => $vendorDir . '/react/event-loop/src/ExtUvLoop.php', - 'React\\EventLoop\\Factory' => $vendorDir . '/react/event-loop/src/Factory.php', - 'React\\EventLoop\\Loop' => $vendorDir . '/react/event-loop/src/Loop.php', - 'React\\EventLoop\\LoopInterface' => $vendorDir . '/react/event-loop/src/LoopInterface.php', - 'React\\EventLoop\\SignalsHandler' => $vendorDir . '/react/event-loop/src/SignalsHandler.php', - 'React\\EventLoop\\StreamSelectLoop' => $vendorDir . '/react/event-loop/src/StreamSelectLoop.php', - 'React\\EventLoop\\Tick\\FutureTickQueue' => $vendorDir . '/react/event-loop/src/Tick/FutureTickQueue.php', - 'React\\EventLoop\\TimerInterface' => $vendorDir . '/react/event-loop/src/TimerInterface.php', - 'React\\EventLoop\\Timer\\Timer' => $vendorDir . '/react/event-loop/src/Timer/Timer.php', - 'React\\EventLoop\\Timer\\Timers' => $vendorDir . '/react/event-loop/src/Timer/Timers.php', - 'React\\Promise\\Deferred' => $vendorDir . '/react/promise/src/Deferred.php', - 'React\\Promise\\Exception\\CompositeException' => $vendorDir . '/react/promise/src/Exception/CompositeException.php', - 'React\\Promise\\Exception\\LengthException' => $vendorDir . '/react/promise/src/Exception/LengthException.php', - 'React\\Promise\\Internal\\CancellationQueue' => $vendorDir . '/react/promise/src/Internal/CancellationQueue.php', - 'React\\Promise\\Internal\\FulfilledPromise' => $vendorDir . '/react/promise/src/Internal/FulfilledPromise.php', - 'React\\Promise\\Internal\\RejectedPromise' => $vendorDir . '/react/promise/src/Internal/RejectedPromise.php', - 'React\\Promise\\Promise' => $vendorDir . '/react/promise/src/Promise.php', - 'React\\Promise\\PromiseInterface' => $vendorDir . '/react/promise/src/PromiseInterface.php', - 'React\\Socket\\Connection' => $vendorDir . '/react/socket/src/Connection.php', - 'React\\Socket\\ConnectionInterface' => $vendorDir . '/react/socket/src/ConnectionInterface.php', - 'React\\Socket\\Connector' => $vendorDir . '/react/socket/src/Connector.php', - 'React\\Socket\\ConnectorInterface' => $vendorDir . '/react/socket/src/ConnectorInterface.php', - 'React\\Socket\\DnsConnector' => $vendorDir . '/react/socket/src/DnsConnector.php', - 'React\\Socket\\FdServer' => $vendorDir . '/react/socket/src/FdServer.php', - 'React\\Socket\\FixedUriConnector' => $vendorDir . '/react/socket/src/FixedUriConnector.php', - 'React\\Socket\\HappyEyeBallsConnectionBuilder' => $vendorDir . '/react/socket/src/HappyEyeBallsConnectionBuilder.php', - 'React\\Socket\\HappyEyeBallsConnector' => $vendorDir . '/react/socket/src/HappyEyeBallsConnector.php', - 'React\\Socket\\LimitingServer' => $vendorDir . '/react/socket/src/LimitingServer.php', - 'React\\Socket\\SecureConnector' => $vendorDir . '/react/socket/src/SecureConnector.php', - 'React\\Socket\\SecureServer' => $vendorDir . '/react/socket/src/SecureServer.php', - 'React\\Socket\\Server' => $vendorDir . '/react/socket/src/Server.php', - 'React\\Socket\\ServerInterface' => $vendorDir . '/react/socket/src/ServerInterface.php', - 'React\\Socket\\SocketServer' => $vendorDir . '/react/socket/src/SocketServer.php', - 'React\\Socket\\StreamEncryption' => $vendorDir . '/react/socket/src/StreamEncryption.php', - 'React\\Socket\\TcpConnector' => $vendorDir . '/react/socket/src/TcpConnector.php', - 'React\\Socket\\TcpServer' => $vendorDir . '/react/socket/src/TcpServer.php', - 'React\\Socket\\TimeoutConnector' => $vendorDir . '/react/socket/src/TimeoutConnector.php', - 'React\\Socket\\UnixConnector' => $vendorDir . '/react/socket/src/UnixConnector.php', - 'React\\Socket\\UnixServer' => $vendorDir . '/react/socket/src/UnixServer.php', - 'React\\Stream\\CompositeStream' => $vendorDir . '/react/stream/src/CompositeStream.php', - 'React\\Stream\\DuplexResourceStream' => $vendorDir . '/react/stream/src/DuplexResourceStream.php', - 'React\\Stream\\DuplexStreamInterface' => $vendorDir . '/react/stream/src/DuplexStreamInterface.php', - 'React\\Stream\\ReadableResourceStream' => $vendorDir . '/react/stream/src/ReadableResourceStream.php', - 'React\\Stream\\ReadableStreamInterface' => $vendorDir . '/react/stream/src/ReadableStreamInterface.php', - 'React\\Stream\\ThroughStream' => $vendorDir . '/react/stream/src/ThroughStream.php', - 'React\\Stream\\Util' => $vendorDir . '/react/stream/src/Util.php', - 'React\\Stream\\WritableResourceStream' => $vendorDir . '/react/stream/src/WritableResourceStream.php', - 'React\\Stream\\WritableStreamInterface' => $vendorDir . '/react/stream/src/WritableStreamInterface.php', - 'ReflectionConstant' => $vendorDir . '/symfony/polyfill-php84/Resources/stubs/ReflectionConstant.php', - 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', - 'RoundingMode' => $vendorDir . '/symfony/polyfill-php84/Resources/stubs/RoundingMode.php', - 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', - 'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php', - 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', - 'SebastianBergmann\\CliParser\\Parser' => $vendorDir . '/sebastian/cli-parser/src/Parser.php', - 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php', - 'SebastianBergmann\\CliParser\\UnknownOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php', - 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php', - 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', - 'SebastianBergmann\\CodeCoverage\\Data\\ProcessedCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php', - 'SebastianBergmann\\CodeCoverage\\Data\\RawCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php', - 'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Selector.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/XdebugDriver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php', - 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php', - 'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php', - 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php', - 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php', - 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => $vendorDir . '/phpunit/php-code-coverage/src/Node/CrapIndex.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php', - 'SebastianBergmann\\CodeCoverage\\ParserException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ParserException.php', - 'SebastianBergmann\\CodeCoverage\\ReflectionException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php', - 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Cobertura.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Colors' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Colors.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\CustomCssFile' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/CustomCssFile.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', - 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Thresholds' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Thresholds.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Known' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Known.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Large' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Large.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Medium' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Medium.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Small' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Small.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\TestSize' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/TestSize.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Unknown' => $vendorDir . '/phpunit/php-code-coverage/src/TestSize/Unknown.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Failure' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/Failure.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Known' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/Known.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Success' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/Success.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\TestStatus' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/TestStatus.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Unknown' => $vendorDir . '/phpunit/php-code-coverage/src/TestStatus/Unknown.php', - 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', - 'SebastianBergmann\\CodeCoverage\\Util\\DirectoryCouldNotBeCreatedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Filesystem.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Percentage.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Xml' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Xml.php', - 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php', - 'SebastianBergmann\\CodeCoverage\\XmlException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XmlException.php', - 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', - 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => $vendorDir . '/sebastian/code-unit/src/ClassMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\ClassUnit' => $vendorDir . '/sebastian/code-unit/src/ClassUnit.php', - 'SebastianBergmann\\CodeUnit\\CodeUnit' => $vendorDir . '/sebastian/code-unit/src/CodeUnit.php', - 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollection.php', - 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php', - 'SebastianBergmann\\CodeUnit\\Exception' => $vendorDir . '/sebastian/code-unit/src/exceptions/Exception.php', - 'SebastianBergmann\\CodeUnit\\FileUnit' => $vendorDir . '/sebastian/code-unit/src/FileUnit.php', - 'SebastianBergmann\\CodeUnit\\FunctionUnit' => $vendorDir . '/sebastian/code-unit/src/FunctionUnit.php', - 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceUnit.php', - 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php', - 'SebastianBergmann\\CodeUnit\\Mapper' => $vendorDir . '/sebastian/code-unit/src/Mapper.php', - 'SebastianBergmann\\CodeUnit\\NoTraitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/NoTraitException.php', - 'SebastianBergmann\\CodeUnit\\ReflectionException' => $vendorDir . '/sebastian/code-unit/src/exceptions/ReflectionException.php', - 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => $vendorDir . '/sebastian/code-unit/src/TraitMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\TraitUnit' => $vendorDir . '/sebastian/code-unit/src/TraitUnit.php', - 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', - 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', - 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', - 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php', - 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php', - 'SebastianBergmann\\Comparator\\EnumerationComparator' => $vendorDir . '/sebastian/comparator/src/EnumerationComparator.php', - 'SebastianBergmann\\Comparator\\Exception' => $vendorDir . '/sebastian/comparator/src/exceptions/Exception.php', - 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php', - 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php', - 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php', - 'SebastianBergmann\\Comparator\\NumberComparator' => $vendorDir . '/sebastian/comparator/src/NumberComparator.php', - 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php', - 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php', - 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php', - 'SebastianBergmann\\Comparator\\RuntimeException' => $vendorDir . '/sebastian/comparator/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php', - 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php', - 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php', - 'SebastianBergmann\\Complexity\\Calculator' => $vendorDir . '/sebastian/complexity/src/Calculator.php', - 'SebastianBergmann\\Complexity\\Complexity' => $vendorDir . '/sebastian/complexity/src/Complexity/Complexity.php', - 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php', - 'SebastianBergmann\\Complexity\\ComplexityCollection' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollection.php', - 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php', - 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php', - 'SebastianBergmann\\Complexity\\Exception' => $vendorDir . '/sebastian/complexity/src/Exception/Exception.php', - 'SebastianBergmann\\Complexity\\RuntimeException' => $vendorDir . '/sebastian/complexity/src/Exception/RuntimeException.php', - 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php', - 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php', - 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', - 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php', - 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php', - 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', - 'SebastianBergmann\\FileIterator\\ExcludeIterator' => $vendorDir . '/phpunit/php-file-iterator/src/ExcludeIterator.php', - 'SebastianBergmann\\FileIterator\\Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', - 'SebastianBergmann\\FileIterator\\Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', - 'SebastianBergmann\\FileIterator\\Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php', - 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php', - 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php', - 'SebastianBergmann\\GlobalState\\ExcludeList' => $vendorDir . '/sebastian/global-state/src/ExcludeList.php', - 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', - 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', - 'SebastianBergmann\\Invoker\\Exception' => $vendorDir . '/phpunit/php-invoker/src/exceptions/Exception.php', - 'SebastianBergmann\\Invoker\\Invoker' => $vendorDir . '/phpunit/php-invoker/src/Invoker.php', - 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php', - 'SebastianBergmann\\Invoker\\TimeoutException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/TimeoutException.php', - 'SebastianBergmann\\LinesOfCode\\Counter' => $vendorDir . '/sebastian/lines-of-code/src/Counter.php', - 'SebastianBergmann\\LinesOfCode\\Exception' => $vendorDir . '/sebastian/lines-of-code/src/Exception/Exception.php', - 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php', - 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => $vendorDir . '/sebastian/lines-of-code/src/LineCountingVisitor.php', - 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => $vendorDir . '/sebastian/lines-of-code/src/LinesOfCode.php', - 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php', - 'SebastianBergmann\\LinesOfCode\\RuntimeException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/RuntimeException.php', - 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php', - 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php', - 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php', - 'SebastianBergmann\\Template\\Exception' => $vendorDir . '/phpunit/php-text-template/src/exceptions/Exception.php', - 'SebastianBergmann\\Template\\InvalidArgumentException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php', - 'SebastianBergmann\\Template\\RuntimeException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\Template\\Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', - 'SebastianBergmann\\Timer\\Duration' => $vendorDir . '/phpunit/php-timer/src/Duration.php', - 'SebastianBergmann\\Timer\\Exception' => $vendorDir . '/phpunit/php-timer/src/exceptions/Exception.php', - 'SebastianBergmann\\Timer\\NoActiveTimerException' => $vendorDir . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php', - 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => $vendorDir . '/phpunit/php-timer/src/ResourceUsageFormatter.php', - 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => $vendorDir . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php', - 'SebastianBergmann\\Timer\\Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', - 'SebastianBergmann\\Type\\CallableType' => $vendorDir . '/sebastian/type/src/type/CallableType.php', - 'SebastianBergmann\\Type\\Exception' => $vendorDir . '/sebastian/type/src/exception/Exception.php', - 'SebastianBergmann\\Type\\FalseType' => $vendorDir . '/sebastian/type/src/type/FalseType.php', - 'SebastianBergmann\\Type\\GenericObjectType' => $vendorDir . '/sebastian/type/src/type/GenericObjectType.php', - 'SebastianBergmann\\Type\\IntersectionType' => $vendorDir . '/sebastian/type/src/type/IntersectionType.php', - 'SebastianBergmann\\Type\\IterableType' => $vendorDir . '/sebastian/type/src/type/IterableType.php', - 'SebastianBergmann\\Type\\MixedType' => $vendorDir . '/sebastian/type/src/type/MixedType.php', - 'SebastianBergmann\\Type\\NeverType' => $vendorDir . '/sebastian/type/src/type/NeverType.php', - 'SebastianBergmann\\Type\\NullType' => $vendorDir . '/sebastian/type/src/type/NullType.php', - 'SebastianBergmann\\Type\\ObjectType' => $vendorDir . '/sebastian/type/src/type/ObjectType.php', - 'SebastianBergmann\\Type\\Parameter' => $vendorDir . '/sebastian/type/src/Parameter.php', - 'SebastianBergmann\\Type\\ReflectionMapper' => $vendorDir . '/sebastian/type/src/ReflectionMapper.php', - 'SebastianBergmann\\Type\\RuntimeException' => $vendorDir . '/sebastian/type/src/exception/RuntimeException.php', - 'SebastianBergmann\\Type\\SimpleType' => $vendorDir . '/sebastian/type/src/type/SimpleType.php', - 'SebastianBergmann\\Type\\StaticType' => $vendorDir . '/sebastian/type/src/type/StaticType.php', - 'SebastianBergmann\\Type\\TrueType' => $vendorDir . '/sebastian/type/src/type/TrueType.php', - 'SebastianBergmann\\Type\\Type' => $vendorDir . '/sebastian/type/src/type/Type.php', - 'SebastianBergmann\\Type\\TypeName' => $vendorDir . '/sebastian/type/src/TypeName.php', - 'SebastianBergmann\\Type\\UnionType' => $vendorDir . '/sebastian/type/src/type/UnionType.php', - 'SebastianBergmann\\Type\\UnknownType' => $vendorDir . '/sebastian/type/src/type/UnknownType.php', - 'SebastianBergmann\\Type\\VoidType' => $vendorDir . '/sebastian/type/src/type/VoidType.php', - 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', - 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', - 'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php', - 'Symfony\\Component\\Console\\Attribute\\Argument' => $vendorDir . '/symfony/console/Attribute/Argument.php', - 'Symfony\\Component\\Console\\Attribute\\AsCommand' => $vendorDir . '/symfony/console/Attribute/AsCommand.php', - 'Symfony\\Component\\Console\\Attribute\\Ask' => $vendorDir . '/symfony/console/Attribute/Ask.php', - 'Symfony\\Component\\Console\\Attribute\\Interact' => $vendorDir . '/symfony/console/Attribute/Interact.php', - 'Symfony\\Component\\Console\\Attribute\\InteractiveAttributeInterface' => $vendorDir . '/symfony/console/Attribute/InteractiveAttributeInterface.php', - 'Symfony\\Component\\Console\\Attribute\\MapInput' => $vendorDir . '/symfony/console/Attribute/MapInput.php', - 'Symfony\\Component\\Console\\Attribute\\Option' => $vendorDir . '/symfony/console/Attribute/Option.php', - 'Symfony\\Component\\Console\\Attribute\\Reflection\\ReflectionMember' => $vendorDir . '/symfony/console/Attribute/Reflection/ReflectionMember.php', - 'Symfony\\Component\\Console\\CI\\GithubActionReporter' => $vendorDir . '/symfony/console/CI/GithubActionReporter.php', - 'Symfony\\Component\\Console\\Color' => $vendorDir . '/symfony/console/Color.php', - 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php', - 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php', - 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php', - 'Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php', - 'Symfony\\Component\\Console\\Command\\CompleteCommand' => $vendorDir . '/symfony/console/Command/CompleteCommand.php', - 'Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => $vendorDir . '/symfony/console/Command/DumpCompletionCommand.php', - 'Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php', - 'Symfony\\Component\\Console\\Command\\InvokableCommand' => $vendorDir . '/symfony/console/Command/InvokableCommand.php', - 'Symfony\\Component\\Console\\Command\\LazyCommand' => $vendorDir . '/symfony/console/Command/LazyCommand.php', - 'Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php', - 'Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php', - 'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => $vendorDir . '/symfony/console/Command/SignalableCommandInterface.php', - 'Symfony\\Component\\Console\\Command\\TraceableCommand' => $vendorDir . '/symfony/console/Command/TraceableCommand.php', - 'Symfony\\Component\\Console\\Completion\\CompletionInput' => $vendorDir . '/symfony/console/Completion/CompletionInput.php', - 'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => $vendorDir . '/symfony/console/Completion/CompletionSuggestions.php', - 'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/BashCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => $vendorDir . '/symfony/console/Completion/Output/CompletionOutputInterface.php', - 'Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/FishCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/ZshCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Suggestion' => $vendorDir . '/symfony/console/Completion/Suggestion.php', - 'Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php', - 'Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php', - 'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => $vendorDir . '/symfony/console/DataCollector/CommandDataCollector.php', - 'Symfony\\Component\\Console\\Debug\\CliRequest' => $vendorDir . '/symfony/console/Debug/CliRequest.php', - 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', - 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php', - 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php', - 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => $vendorDir . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php', - 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php', - 'Symfony\\Component\\Console\\Event\\ConsoleAlarmEvent' => $vendorDir . '/symfony/console/Event/ConsoleAlarmEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => $vendorDir . '/symfony/console/Event/ConsoleCommandEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => $vendorDir . '/symfony/console/Event/ConsoleErrorEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => $vendorDir . '/symfony/console/Event/ConsoleEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => $vendorDir . '/symfony/console/Event/ConsoleSignalEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => $vendorDir . '/symfony/console/Event/ConsoleTerminateEvent.php', - 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php', - 'Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php', - 'Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php', - 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => $vendorDir . '/symfony/console/Exception/RunCommandFailedException.php', - 'Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php', - 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php', - 'Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php', - 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php', - 'Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php', - 'Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php', - 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php', - 'Symfony\\Component\\Console\\Helper\\OutputWrapper' => $vendorDir . '/symfony/console/Helper/OutputWrapper.php', - 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php', - 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php', - 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php', - 'Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php', - 'Symfony\\Component\\Console\\Helper\\TableCellStyle' => $vendorDir . '/symfony/console/Helper/TableCellStyle.php', - 'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php', - 'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php', - 'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php', - 'Symfony\\Component\\Console\\Helper\\TerminalInputHelper' => $vendorDir . '/symfony/console/Helper/TerminalInputHelper.php', - 'Symfony\\Component\\Console\\Helper\\TreeHelper' => $vendorDir . '/symfony/console/Helper/TreeHelper.php', - 'Symfony\\Component\\Console\\Helper\\TreeNode' => $vendorDir . '/symfony/console/Helper/TreeNode.php', - 'Symfony\\Component\\Console\\Helper\\TreeStyle' => $vendorDir . '/symfony/console/Helper/TreeStyle.php', - 'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php', - 'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php', - 'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php', - 'Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php', - 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php', - 'Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php', - 'Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php', - 'Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php', - 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php', - 'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php', - 'Symfony\\Component\\Console\\Interaction\\Interaction' => $vendorDir . '/symfony/console/Interaction/Interaction.php', - 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => $vendorDir . '/symfony/console/Messenger/RunCommandContext.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => $vendorDir . '/symfony/console/Messenger/RunCommandMessage.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => $vendorDir . '/symfony/console/Messenger/RunCommandMessageHandler.php', - 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => $vendorDir . '/symfony/console/Output/AnsiColorMode.php', - 'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php', - 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php', - 'Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php', - 'Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php', - 'Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php', - 'Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php', - 'Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => $vendorDir . '/symfony/console/Output/TrimmedBufferOutput.php', - 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php', - 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php', - 'Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => $vendorDir . '/symfony/console/SignalRegistry/SignalMap.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => $vendorDir . '/symfony/console/SignalRegistry/SignalRegistry.php', - 'Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php', - 'Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php', - 'Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php', - 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php', - 'Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php', - 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => $vendorDir . '/symfony/console/Tester/ApplicationTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => $vendorDir . '/symfony/console/Tester/CommandCompletionTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandTester' => $vendorDir . '/symfony/console/Tester/CommandTester.php', - 'Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => $vendorDir . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', - 'Symfony\\Component\\Console\\Tester\\TesterTrait' => $vendorDir . '/symfony/console/Tester/TesterTrait.php', - 'Symfony\\Component\\EventDispatcher\\Attribute\\AsEventListener' => $vendorDir . '/symfony/event-dispatcher/Attribute/AsEventListener.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => $vendorDir . '/symfony/event-dispatcher/Debug/WrappedListener.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/EventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/EventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/symfony/event-dispatcher/EventSubscriberInterface.php', - 'Symfony\\Component\\EventDispatcher\\GenericEvent' => $vendorDir . '/symfony/event-dispatcher/GenericEvent.php', - 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', - 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/filesystem/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => $vendorDir . '/symfony/filesystem/Exception/RuntimeException.php', - 'Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php', - 'Symfony\\Component\\Filesystem\\Path' => $vendorDir . '/symfony/filesystem/Path.php', - 'Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php', - 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php', - 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php', - 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php', - 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php', - 'Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php', - 'Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php', - 'Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php', - 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\LazyIterator' => $vendorDir . '/symfony/finder/Iterator/LazyIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => $vendorDir . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', - 'Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php', - 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => $vendorDir . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => $vendorDir . '/symfony/options-resolver/Exception/AccessException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/options-resolver/Exception/ExceptionInterface.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/MissingOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => $vendorDir . '/symfony/options-resolver/Exception/NoConfigurationException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => $vendorDir . '/symfony/options-resolver/Exception/NoSuchOptionException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => $vendorDir . '/symfony/options-resolver/Exception/OptionDefinitionException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/UndefinedOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => $vendorDir . '/symfony/options-resolver/OptionConfigurator.php', - 'Symfony\\Component\\OptionsResolver\\Options' => $vendorDir . '/symfony/options-resolver/Options.php', - 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => $vendorDir . '/symfony/options-resolver/OptionsResolver.php', - 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessStartFailedException' => $vendorDir . '/symfony/process/Exception/ProcessStartFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php', - 'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => $vendorDir . '/symfony/process/Exception/RunProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php', - 'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php', - 'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => $vendorDir . '/symfony/process/Messenger/RunProcessContext.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => $vendorDir . '/symfony/process/Messenger/RunProcessMessage.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => $vendorDir . '/symfony/process/Messenger/RunProcessMessageHandler.php', - 'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php', - 'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php', - 'Symfony\\Component\\Process\\PhpSubprocess' => $vendorDir . '/symfony/process/PhpSubprocess.php', - 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php', - 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php', - 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php', - 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php', - 'Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php', - 'Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php', - 'Symfony\\Component\\Stopwatch\\Section' => $vendorDir . '/symfony/stopwatch/Section.php', - 'Symfony\\Component\\Stopwatch\\Stopwatch' => $vendorDir . '/symfony/stopwatch/Stopwatch.php', - 'Symfony\\Component\\Stopwatch\\StopwatchEvent' => $vendorDir . '/symfony/stopwatch/StopwatchEvent.php', - 'Symfony\\Component\\Stopwatch\\StopwatchPeriod' => $vendorDir . '/symfony/stopwatch/StopwatchPeriod.php', - 'Symfony\\Component\\String\\AbstractString' => $vendorDir . '/symfony/string/AbstractString.php', - 'Symfony\\Component\\String\\AbstractUnicodeString' => $vendorDir . '/symfony/string/AbstractUnicodeString.php', - 'Symfony\\Component\\String\\ByteString' => $vendorDir . '/symfony/string/ByteString.php', - 'Symfony\\Component\\String\\CodePointString' => $vendorDir . '/symfony/string/CodePointString.php', - 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/string/Exception/ExceptionInterface.php', - 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/string/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\String\\Exception\\RuntimeException' => $vendorDir . '/symfony/string/Exception/RuntimeException.php', - 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => $vendorDir . '/symfony/string/Inflector/EnglishInflector.php', - 'Symfony\\Component\\String\\Inflector\\FrenchInflector' => $vendorDir . '/symfony/string/Inflector/FrenchInflector.php', - 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => $vendorDir . '/symfony/string/Inflector/InflectorInterface.php', - 'Symfony\\Component\\String\\Inflector\\SpanishInflector' => $vendorDir . '/symfony/string/Inflector/SpanishInflector.php', - 'Symfony\\Component\\String\\LazyString' => $vendorDir . '/symfony/string/LazyString.php', - 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => $vendorDir . '/symfony/string/Slugger/AsciiSlugger.php', - 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => $vendorDir . '/symfony/string/Slugger/SluggerInterface.php', - 'Symfony\\Component\\String\\TruncateMode' => $vendorDir . '/symfony/string/TruncateMode.php', - 'Symfony\\Component\\String\\UnicodeString' => $vendorDir . '/symfony/string/UnicodeString.php', - 'Symfony\\Contracts\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher-contracts/Event.php', - 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', - 'Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php', - 'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php', - 'Symfony\\Contracts\\Service\\ContainerAwareInterface' => $vendorDir . '/symfony/service-contracts/ContainerAwareInterface.php', - 'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php', - 'Symfony\\Contracts\\Service\\ServiceCollectionInterface' => $vendorDir . '/symfony/service-contracts/ServiceCollectionInterface.php', - 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php', - 'Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php', - 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php', - 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => $vendorDir . '/symfony/polyfill-intl-grapheme/Grapheme.php', - 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php', - 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php', - 'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php', - 'Symfony\\Polyfill\\Php80\\PhpToken' => $vendorDir . '/symfony/polyfill-php80/PhpToken.php', - 'Symfony\\Polyfill\\Php81\\Php81' => $vendorDir . '/symfony/polyfill-php81/Php81.php', - 'Symfony\\Polyfill\\Php84\\Php84' => $vendorDir . '/symfony/polyfill-php84/Php84.php', - 'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php', - 'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php', - 'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php', - 'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php', - 'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php', - 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php', - 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php', - 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php', - 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', - 'org\\bovigo\\vfs\\DotDirectory' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/DotDirectory.php', - 'org\\bovigo\\vfs\\Quota' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/Quota.php', - 'org\\bovigo\\vfs\\content\\FileContent' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/content/FileContent.php', - 'org\\bovigo\\vfs\\content\\LargeFileContent' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/content/LargeFileContent.php', - 'org\\bovigo\\vfs\\content\\SeekableFileContent' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/content/SeekableFileContent.php', - 'org\\bovigo\\vfs\\content\\StringBasedFileContent' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/content/StringBasedFileContent.php', - 'org\\bovigo\\vfs\\vfsStream' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStream.php', - 'org\\bovigo\\vfs\\vfsStreamAbstractContent' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamAbstractContent.php', - 'org\\bovigo\\vfs\\vfsStreamBlock' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamBlock.php', - 'org\\bovigo\\vfs\\vfsStreamContainer' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamContainer.php', - 'org\\bovigo\\vfs\\vfsStreamContainerIterator' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamContainerIterator.php', - 'org\\bovigo\\vfs\\vfsStreamContent' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamContent.php', - 'org\\bovigo\\vfs\\vfsStreamDirectory' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamDirectory.php', - 'org\\bovigo\\vfs\\vfsStreamException' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamException.php', - 'org\\bovigo\\vfs\\vfsStreamFile' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamFile.php', - 'org\\bovigo\\vfs\\vfsStreamWrapper' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamWrapper.php', - 'org\\bovigo\\vfs\\visitor\\vfsStreamAbstractVisitor' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamAbstractVisitor.php', - 'org\\bovigo\\vfs\\visitor\\vfsStreamPrintVisitor' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitor.php', - 'org\\bovigo\\vfs\\visitor\\vfsStreamStructureVisitor' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitor.php', - 'org\\bovigo\\vfs\\visitor\\vfsStreamVisitor' => $vendorDir . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamVisitor.php', - 'staabm\\SideEffectsDetector\\SideEffect' => $vendorDir . '/staabm/side-effects-detector/lib/SideEffect.php', - 'staabm\\SideEffectsDetector\\SideEffectsDetector' => $vendorDir . '/staabm/side-effects-detector/lib/SideEffectsDetector.php', -); diff --git a/v3_ci4/vendor/composer/autoload_files.php b/v3_ci4/vendor/composer/autoload_files.php deleted file mode 100644 index 1a6b4f5..0000000 --- a/v3_ci4/vendor/composer/autoload_files.php +++ /dev/null @@ -1,22 +0,0 @@ - $vendorDir . '/symfony/deprecation-contracts/function.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', - 'ad155f8f1cf0d418fe49e248db8c661b' => $vendorDir . '/react/promise/src/functions_include.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', - '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', - 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', - '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', - '9d2b9fc6db0f153a0a149fefb182415e' => $vendorDir . '/symfony/polyfill-php84/bootstrap.php', - '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', - '3917c79c5052b270641b5a200963dbc2' => $vendorDir . '/kint-php/kint/init.php', - 'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php', -); diff --git a/v3_ci4/vendor/composer/autoload_namespaces.php b/v3_ci4/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 5c24fb5..0000000 --- a/v3_ci4/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,10 +0,0 @@ - array($vendorDir . '/mikey179/vfsstream/src/main/php'), -); diff --git a/v3_ci4/vendor/composer/autoload_psr4.php b/v3_ci4/vendor/composer/autoload_psr4.php deleted file mode 100644 index 3c42692..0000000 --- a/v3_ci4/vendor/composer/autoload_psr4.php +++ /dev/null @@ -1,54 +0,0 @@ - array($vendorDir . '/symfony/polyfill-php84'), - 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'), - 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), - 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), - 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), - 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), - 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'), - 'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'), - 'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'), - 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), - 'Symfony\\Component\\OptionsResolver\\' => array($vendorDir . '/symfony/options-resolver'), - 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), - 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), - 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), - 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), - 'React\\Stream\\' => array($vendorDir . '/react/stream/src'), - 'React\\Socket\\' => array($vendorDir . '/react/socket/src'), - 'React\\Promise\\' => array($vendorDir . '/react/promise/src'), - 'React\\EventLoop\\' => array($vendorDir . '/react/event-loop/src'), - 'React\\Dns\\' => array($vendorDir . '/react/dns/src'), - 'React\\ChildProcess\\' => array($vendorDir . '/react/child-process/src'), - 'React\\Cache\\' => array($vendorDir . '/react/cache/src'), - 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'), - 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), - 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), - 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), - 'Predis\\' => array($vendorDir . '/predis/predis/src'), - 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), - 'PhpCsFixer\\' => array($vendorDir . '/friendsofphp/php-cs-fixer/src'), - 'Nexus\\CsConfig\\' => array($vendorDir . '/nexusphp/cs-config/src'), - 'Laminas\\Escaper\\' => array($vendorDir . '/laminas/laminas-escaper/src'), - 'Kint\\' => array($vendorDir . '/kint-php/kint/src'), - 'Fidry\\CpuCoreCounter\\' => array($vendorDir . '/fidry/cpu-core-counter/src'), - 'Faker\\' => array($vendorDir . '/fakerphp/faker/src/Faker'), - 'Evenement\\' => array($vendorDir . '/evenement/evenement/src'), - 'Ergebnis\\AgentDetector\\' => array($vendorDir . '/ergebnis/agent-detector/src'), - 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), - 'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'), - 'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), - 'Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'), - 'CodeIgniter\\CodingStandard\\' => array($vendorDir . '/codeigniter/coding-standard/src'), - 'CodeIgniter\\' => array($baseDir . '/system'), - 'Clue\\React\\NDJson\\' => array($vendorDir . '/clue/ndjson-react/src'), -); diff --git a/v3_ci4/vendor/composer/autoload_real.php b/v3_ci4/vendor/composer/autoload_real.php deleted file mode 100644 index c87c8e6..0000000 --- a/v3_ci4/vendor/composer/autoload_real.php +++ /dev/null @@ -1,50 +0,0 @@ -register(true); - - $filesToLoad = \Composer\Autoload\ComposerStaticInitc05219cdb593cfd83731ced9b4908c07::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); - } - - return $loader; - } -} diff --git a/v3_ci4/vendor/composer/autoload_static.php b/v3_ci4/vendor/composer/autoload_static.php deleted file mode 100644 index de704d2..0000000 --- a/v3_ci4/vendor/composer/autoload_static.php +++ /dev/null @@ -1,4656 +0,0 @@ - __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', - 'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', - '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', - 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', - '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', - '9d2b9fc6db0f153a0a149fefb182415e' => __DIR__ . '/..' . '/symfony/polyfill-php84/bootstrap.php', - '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', - '3917c79c5052b270641b5a200963dbc2' => __DIR__ . '/..' . '/kint-php/kint/init.php', - 'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php', - ); - - public static $prefixLengthsPsr4 = array ( - 'S' => - array ( - 'Symfony\\Polyfill\\Php84\\' => 23, - 'Symfony\\Polyfill\\Php81\\' => 23, - 'Symfony\\Polyfill\\Php80\\' => 23, - 'Symfony\\Polyfill\\Mbstring\\' => 26, - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, - 'Symfony\\Polyfill\\Ctype\\' => 23, - 'Symfony\\Contracts\\Service\\' => 26, - 'Symfony\\Contracts\\EventDispatcher\\' => 34, - 'Symfony\\Component\\String\\' => 25, - 'Symfony\\Component\\Stopwatch\\' => 28, - 'Symfony\\Component\\Process\\' => 26, - 'Symfony\\Component\\OptionsResolver\\' => 34, - 'Symfony\\Component\\Finder\\' => 25, - 'Symfony\\Component\\Filesystem\\' => 29, - 'Symfony\\Component\\EventDispatcher\\' => 34, - 'Symfony\\Component\\Console\\' => 26, - ), - 'R' => - array ( - 'React\\Stream\\' => 13, - 'React\\Socket\\' => 13, - 'React\\Promise\\' => 14, - 'React\\EventLoop\\' => 16, - 'React\\Dns\\' => 10, - 'React\\ChildProcess\\' => 19, - 'React\\Cache\\' => 12, - ), - 'P' => - array ( - 'Psr\\Log\\' => 8, - 'Psr\\Http\\Message\\' => 17, - 'Psr\\EventDispatcher\\' => 20, - 'Psr\\Container\\' => 14, - 'Predis\\' => 7, - 'PhpParser\\' => 10, - 'PhpCsFixer\\' => 11, - ), - 'N' => - array ( - 'Nexus\\CsConfig\\' => 15, - ), - 'L' => - array ( - 'Laminas\\Escaper\\' => 16, - ), - 'K' => - array ( - 'Kint\\' => 5, - ), - 'F' => - array ( - 'Fidry\\CpuCoreCounter\\' => 21, - 'Faker\\' => 6, - ), - 'E' => - array ( - 'Evenement\\' => 10, - 'Ergebnis\\AgentDetector\\' => 23, - ), - 'D' => - array ( - 'DeepCopy\\' => 9, - ), - 'C' => - array ( - 'Composer\\XdebugHandler\\' => 23, - 'Composer\\Semver\\' => 16, - 'Composer\\Pcre\\' => 14, - 'CodeIgniter\\CodingStandard\\' => 27, - 'CodeIgniter\\' => 12, - 'Clue\\React\\NDJson\\' => 18, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Symfony\\Polyfill\\Php84\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php84', - ), - 'Symfony\\Polyfill\\Php81\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php81', - ), - 'Symfony\\Polyfill\\Php80\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', - ), - 'Symfony\\Polyfill\\Mbstring\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', - ), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', - ), - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', - ), - 'Symfony\\Polyfill\\Ctype\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', - ), - 'Symfony\\Contracts\\Service\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/service-contracts', - ), - 'Symfony\\Contracts\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts', - ), - 'Symfony\\Component\\String\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/string', - ), - 'Symfony\\Component\\Stopwatch\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/stopwatch', - ), - 'Symfony\\Component\\Process\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/process', - ), - 'Symfony\\Component\\OptionsResolver\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/options-resolver', - ), - 'Symfony\\Component\\Finder\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/finder', - ), - 'Symfony\\Component\\Filesystem\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/filesystem', - ), - 'Symfony\\Component\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', - ), - 'Symfony\\Component\\Console\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/console', - ), - 'React\\Stream\\' => - array ( - 0 => __DIR__ . '/..' . '/react/stream/src', - ), - 'React\\Socket\\' => - array ( - 0 => __DIR__ . '/..' . '/react/socket/src', - ), - 'React\\Promise\\' => - array ( - 0 => __DIR__ . '/..' . '/react/promise/src', - ), - 'React\\EventLoop\\' => - array ( - 0 => __DIR__ . '/..' . '/react/event-loop/src', - ), - 'React\\Dns\\' => - array ( - 0 => __DIR__ . '/..' . '/react/dns/src', - ), - 'React\\ChildProcess\\' => - array ( - 0 => __DIR__ . '/..' . '/react/child-process/src', - ), - 'React\\Cache\\' => - array ( - 0 => __DIR__ . '/..' . '/react/cache/src', - ), - 'Psr\\Log\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/log/src', - ), - 'Psr\\Http\\Message\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-message/src', - ), - 'Psr\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src', - ), - 'Psr\\Container\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/container/src', - ), - 'Predis\\' => - array ( - 0 => __DIR__ . '/..' . '/predis/predis/src', - ), - 'PhpParser\\' => - array ( - 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser', - ), - 'PhpCsFixer\\' => - array ( - 0 => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src', - ), - 'Nexus\\CsConfig\\' => - array ( - 0 => __DIR__ . '/..' . '/nexusphp/cs-config/src', - ), - 'Laminas\\Escaper\\' => - array ( - 0 => __DIR__ . '/..' . '/laminas/laminas-escaper/src', - ), - 'Kint\\' => - array ( - 0 => __DIR__ . '/..' . '/kint-php/kint/src', - ), - 'Fidry\\CpuCoreCounter\\' => - array ( - 0 => __DIR__ . '/..' . '/fidry/cpu-core-counter/src', - ), - 'Faker\\' => - array ( - 0 => __DIR__ . '/..' . '/fakerphp/faker/src/Faker', - ), - 'Evenement\\' => - array ( - 0 => __DIR__ . '/..' . '/evenement/evenement/src', - ), - 'Ergebnis\\AgentDetector\\' => - array ( - 0 => __DIR__ . '/..' . '/ergebnis/agent-detector/src', - ), - 'DeepCopy\\' => - array ( - 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy', - ), - 'Composer\\XdebugHandler\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/xdebug-handler/src', - ), - 'Composer\\Semver\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/semver/src', - ), - 'Composer\\Pcre\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/pcre/src', - ), - 'CodeIgniter\\CodingStandard\\' => - array ( - 0 => __DIR__ . '/..' . '/codeigniter/coding-standard/src', - ), - 'CodeIgniter\\' => - array ( - 0 => __DIR__ . '/../..' . '/system', - ), - 'Clue\\React\\NDJson\\' => - array ( - 0 => __DIR__ . '/..' . '/clue/ndjson-react/src', - ), - ); - - public static $prefixesPsr0 = array ( - 'o' => - array ( - 'org\\bovigo\\vfs\\' => - array ( - 0 => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php', - ), - ), - ); - - public static $classMap = array ( - 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', - 'Clue\\React\\NDJson\\Decoder' => __DIR__ . '/..' . '/clue/ndjson-react/src/Decoder.php', - 'Clue\\React\\NDJson\\Encoder' => __DIR__ . '/..' . '/clue/ndjson-react/src/Encoder.php', - 'CodeIgniter\\API\\ApiException' => __DIR__ . '/../..' . '/system/API/ApiException.php', - 'CodeIgniter\\API\\BaseTransformer' => __DIR__ . '/../..' . '/system/API/BaseTransformer.php', - 'CodeIgniter\\API\\ResponseTrait' => __DIR__ . '/../..' . '/system/API/ResponseTrait.php', - 'CodeIgniter\\API\\TransformerInterface' => __DIR__ . '/../..' . '/system/API/TransformerInterface.php', - 'CodeIgniter\\Autoloader\\Autoloader' => __DIR__ . '/../..' . '/system/Autoloader/Autoloader.php', - 'CodeIgniter\\Autoloader\\FileLocator' => __DIR__ . '/../..' . '/system/Autoloader/FileLocator.php', - 'CodeIgniter\\Autoloader\\FileLocatorCached' => __DIR__ . '/../..' . '/system/Autoloader/FileLocatorCached.php', - 'CodeIgniter\\Autoloader\\FileLocatorInterface' => __DIR__ . '/../..' . '/system/Autoloader/FileLocatorInterface.php', - 'CodeIgniter\\BaseModel' => __DIR__ . '/../..' . '/system/BaseModel.php', - 'CodeIgniter\\Boot' => __DIR__ . '/../..' . '/system/Boot.php', - 'CodeIgniter\\CLI\\BaseCommand' => __DIR__ . '/../..' . '/system/CLI/BaseCommand.php', - 'CodeIgniter\\CLI\\CLI' => __DIR__ . '/../..' . '/system/CLI/CLI.php', - 'CodeIgniter\\CLI\\Commands' => __DIR__ . '/../..' . '/system/CLI/Commands.php', - 'CodeIgniter\\CLI\\Console' => __DIR__ . '/../..' . '/system/CLI/Console.php', - 'CodeIgniter\\CLI\\Exceptions\\CLIException' => __DIR__ . '/../..' . '/system/CLI/Exceptions/CLIException.php', - 'CodeIgniter\\CLI\\GeneratorTrait' => __DIR__ . '/../..' . '/system/CLI/GeneratorTrait.php', - 'CodeIgniter\\CLI\\InputOutput' => __DIR__ . '/../..' . '/system/CLI/InputOutput.php', - 'CodeIgniter\\CLI\\SignalTrait' => __DIR__ . '/../..' . '/system/CLI/SignalTrait.php', - 'CodeIgniter\\Cache\\CacheFactory' => __DIR__ . '/../..' . '/system/Cache/CacheFactory.php', - 'CodeIgniter\\Cache\\CacheInterface' => __DIR__ . '/../..' . '/system/Cache/CacheInterface.php', - 'CodeIgniter\\Cache\\Exceptions\\CacheException' => __DIR__ . '/../..' . '/system/Cache/Exceptions/CacheException.php', - 'CodeIgniter\\Cache\\FactoriesCache' => __DIR__ . '/../..' . '/system/Cache/FactoriesCache.php', - 'CodeIgniter\\Cache\\FactoriesCache\\FileVarExportHandler' => __DIR__ . '/../..' . '/system/Cache/FactoriesCache/FileVarExportHandler.php', - 'CodeIgniter\\Cache\\Handlers\\ApcuHandler' => __DIR__ . '/../..' . '/system/Cache/Handlers/ApcuHandler.php', - 'CodeIgniter\\Cache\\Handlers\\BaseHandler' => __DIR__ . '/../..' . '/system/Cache/Handlers/BaseHandler.php', - 'CodeIgniter\\Cache\\Handlers\\DummyHandler' => __DIR__ . '/../..' . '/system/Cache/Handlers/DummyHandler.php', - 'CodeIgniter\\Cache\\Handlers\\FileHandler' => __DIR__ . '/../..' . '/system/Cache/Handlers/FileHandler.php', - 'CodeIgniter\\Cache\\Handlers\\MemcachedHandler' => __DIR__ . '/../..' . '/system/Cache/Handlers/MemcachedHandler.php', - 'CodeIgniter\\Cache\\Handlers\\PredisHandler' => __DIR__ . '/../..' . '/system/Cache/Handlers/PredisHandler.php', - 'CodeIgniter\\Cache\\Handlers\\RedisHandler' => __DIR__ . '/../..' . '/system/Cache/Handlers/RedisHandler.php', - 'CodeIgniter\\Cache\\Handlers\\WincacheHandler' => __DIR__ . '/../..' . '/system/Cache/Handlers/WincacheHandler.php', - 'CodeIgniter\\Cache\\ResponseCache' => __DIR__ . '/../..' . '/system/Cache/ResponseCache.php', - 'CodeIgniter\\CodeIgniter' => __DIR__ . '/../..' . '/system/CodeIgniter.php', - 'CodeIgniter\\CodingStandard\\CodeIgniter4' => __DIR__ . '/..' . '/codeigniter/coding-standard/src/CodeIgniter4.php', - 'CodeIgniter\\Commands\\Cache\\ClearCache' => __DIR__ . '/../..' . '/system/Commands/Cache/ClearCache.php', - 'CodeIgniter\\Commands\\Cache\\InfoCache' => __DIR__ . '/../..' . '/system/Commands/Cache/InfoCache.php', - 'CodeIgniter\\Commands\\Database\\CreateDatabase' => __DIR__ . '/../..' . '/system/Commands/Database/CreateDatabase.php', - 'CodeIgniter\\Commands\\Database\\Migrate' => __DIR__ . '/../..' . '/system/Commands/Database/Migrate.php', - 'CodeIgniter\\Commands\\Database\\MigrateRefresh' => __DIR__ . '/../..' . '/system/Commands/Database/MigrateRefresh.php', - 'CodeIgniter\\Commands\\Database\\MigrateRollback' => __DIR__ . '/../..' . '/system/Commands/Database/MigrateRollback.php', - 'CodeIgniter\\Commands\\Database\\MigrateStatus' => __DIR__ . '/../..' . '/system/Commands/Database/MigrateStatus.php', - 'CodeIgniter\\Commands\\Database\\Seed' => __DIR__ . '/../..' . '/system/Commands/Database/Seed.php', - 'CodeIgniter\\Commands\\Database\\ShowTableInfo' => __DIR__ . '/../..' . '/system/Commands/Database/ShowTableInfo.php', - 'CodeIgniter\\Commands\\Encryption\\GenerateKey' => __DIR__ . '/../..' . '/system/Commands/Encryption/GenerateKey.php', - 'CodeIgniter\\Commands\\Generators\\CellGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/CellGenerator.php', - 'CodeIgniter\\Commands\\Generators\\CommandGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/CommandGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ConfigGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/ConfigGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ControllerGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/ControllerGenerator.php', - 'CodeIgniter\\Commands\\Generators\\EntityGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/EntityGenerator.php', - 'CodeIgniter\\Commands\\Generators\\FilterGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/FilterGenerator.php', - 'CodeIgniter\\Commands\\Generators\\MigrationGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/MigrationGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ModelGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/ModelGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ScaffoldGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/ScaffoldGenerator.php', - 'CodeIgniter\\Commands\\Generators\\SeederGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/SeederGenerator.php', - 'CodeIgniter\\Commands\\Generators\\TestGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/TestGenerator.php', - 'CodeIgniter\\Commands\\Generators\\TransformerGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/TransformerGenerator.php', - 'CodeIgniter\\Commands\\Generators\\ValidationGenerator' => __DIR__ . '/../..' . '/system/Commands/Generators/ValidationGenerator.php', - 'CodeIgniter\\Commands\\Help' => __DIR__ . '/../..' . '/system/Commands/Help.php', - 'CodeIgniter\\Commands\\Housekeeping\\ClearDebugbar' => __DIR__ . '/../..' . '/system/Commands/Housekeeping/ClearDebugbar.php', - 'CodeIgniter\\Commands\\Housekeeping\\ClearLogs' => __DIR__ . '/../..' . '/system/Commands/Housekeeping/ClearLogs.php', - 'CodeIgniter\\Commands\\ListCommands' => __DIR__ . '/../..' . '/system/Commands/ListCommands.php', - 'CodeIgniter\\Commands\\Server\\Serve' => __DIR__ . '/../..' . '/system/Commands/Server/Serve.php', - 'CodeIgniter\\Commands\\Translation\\LocalizationFinder' => __DIR__ . '/../..' . '/system/Commands/Translation/LocalizationFinder.php', - 'CodeIgniter\\Commands\\Translation\\LocalizationSync' => __DIR__ . '/../..' . '/system/Commands/Translation/LocalizationSync.php', - 'CodeIgniter\\Commands\\Utilities\\ConfigCheck' => __DIR__ . '/../..' . '/system/Commands/Utilities/ConfigCheck.php', - 'CodeIgniter\\Commands\\Utilities\\Environment' => __DIR__ . '/../..' . '/system/Commands/Utilities/Environment.php', - 'CodeIgniter\\Commands\\Utilities\\FilterCheck' => __DIR__ . '/../..' . '/system/Commands/Utilities/FilterCheck.php', - 'CodeIgniter\\Commands\\Utilities\\Namespaces' => __DIR__ . '/../..' . '/system/Commands/Utilities/Namespaces.php', - 'CodeIgniter\\Commands\\Utilities\\Optimize' => __DIR__ . '/../..' . '/system/Commands/Utilities/Optimize.php', - 'CodeIgniter\\Commands\\Utilities\\PhpIniCheck' => __DIR__ . '/../..' . '/system/Commands/Utilities/PhpIniCheck.php', - 'CodeIgniter\\Commands\\Utilities\\Publish' => __DIR__ . '/../..' . '/system/Commands/Utilities/Publish.php', - 'CodeIgniter\\Commands\\Utilities\\Routes' => __DIR__ . '/../..' . '/system/Commands/Utilities/Routes.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\AutoRouteCollector' => __DIR__ . '/../..' . '/system/Commands/Utilities/Routes/AutoRouteCollector.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\AutoRouterImproved\\AutoRouteCollector' => __DIR__ . '/../..' . '/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\AutoRouterImproved\\ControllerMethodReader' => __DIR__ . '/../..' . '/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\ControllerFinder' => __DIR__ . '/../..' . '/system/Commands/Utilities/Routes/ControllerFinder.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\ControllerMethodReader' => __DIR__ . '/../..' . '/system/Commands/Utilities/Routes/ControllerMethodReader.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\FilterCollector' => __DIR__ . '/../..' . '/system/Commands/Utilities/Routes/FilterCollector.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\FilterFinder' => __DIR__ . '/../..' . '/system/Commands/Utilities/Routes/FilterFinder.php', - 'CodeIgniter\\Commands\\Utilities\\Routes\\SampleURIGenerator' => __DIR__ . '/../..' . '/system/Commands/Utilities/Routes/SampleURIGenerator.php', - 'CodeIgniter\\Commands\\Worker\\WorkerInstall' => __DIR__ . '/../..' . '/system/Commands/Worker/WorkerInstall.php', - 'CodeIgniter\\Commands\\Worker\\WorkerUninstall' => __DIR__ . '/../..' . '/system/Commands/Worker/WorkerUninstall.php', - 'CodeIgniter\\ComposerScripts' => __DIR__ . '/../..' . '/system/ComposerScripts.php', - 'CodeIgniter\\Config\\AutoloadConfig' => __DIR__ . '/../..' . '/system/Config/AutoloadConfig.php', - 'CodeIgniter\\Config\\BaseConfig' => __DIR__ . '/../..' . '/system/Config/BaseConfig.php', - 'CodeIgniter\\Config\\BaseService' => __DIR__ . '/../..' . '/system/Config/BaseService.php', - 'CodeIgniter\\Config\\DotEnv' => __DIR__ . '/../..' . '/system/Config/DotEnv.php', - 'CodeIgniter\\Config\\Factories' => __DIR__ . '/../..' . '/system/Config/Factories.php', - 'CodeIgniter\\Config\\Factory' => __DIR__ . '/../..' . '/system/Config/Factory.php', - 'CodeIgniter\\Config\\Filters' => __DIR__ . '/../..' . '/system/Config/Filters.php', - 'CodeIgniter\\Config\\ForeignCharacters' => __DIR__ . '/../..' . '/system/Config/ForeignCharacters.php', - 'CodeIgniter\\Config\\Publisher' => __DIR__ . '/../..' . '/system/Config/Publisher.php', - 'CodeIgniter\\Config\\Routing' => __DIR__ . '/../..' . '/system/Config/Routing.php', - 'CodeIgniter\\Config\\Services' => __DIR__ . '/../..' . '/system/Config/Services.php', - 'CodeIgniter\\Config\\View' => __DIR__ . '/../..' . '/system/Config/View.php', - 'CodeIgniter\\Controller' => __DIR__ . '/../..' . '/system/Controller.php', - 'CodeIgniter\\Cookie\\CloneableCookieInterface' => __DIR__ . '/../..' . '/system/Cookie/CloneableCookieInterface.php', - 'CodeIgniter\\Cookie\\Cookie' => __DIR__ . '/../..' . '/system/Cookie/Cookie.php', - 'CodeIgniter\\Cookie\\CookieInterface' => __DIR__ . '/../..' . '/system/Cookie/CookieInterface.php', - 'CodeIgniter\\Cookie\\CookieStore' => __DIR__ . '/../..' . '/system/Cookie/CookieStore.php', - 'CodeIgniter\\Cookie\\Exceptions\\CookieException' => __DIR__ . '/../..' . '/system/Cookie/Exceptions/CookieException.php', - 'CodeIgniter\\DataCaster\\Cast\\ArrayCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/ArrayCast.php', - 'CodeIgniter\\DataCaster\\Cast\\BaseCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/BaseCast.php', - 'CodeIgniter\\DataCaster\\Cast\\BooleanCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/BooleanCast.php', - 'CodeIgniter\\DataCaster\\Cast\\CSVCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/CSVCast.php', - 'CodeIgniter\\DataCaster\\Cast\\CastInterface' => __DIR__ . '/../..' . '/system/DataCaster/Cast/CastInterface.php', - 'CodeIgniter\\DataCaster\\Cast\\DatetimeCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/DatetimeCast.php', - 'CodeIgniter\\DataCaster\\Cast\\EnumCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/EnumCast.php', - 'CodeIgniter\\DataCaster\\Cast\\FloatCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/FloatCast.php', - 'CodeIgniter\\DataCaster\\Cast\\IntBoolCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/IntBoolCast.php', - 'CodeIgniter\\DataCaster\\Cast\\IntegerCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/IntegerCast.php', - 'CodeIgniter\\DataCaster\\Cast\\JsonCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/JsonCast.php', - 'CodeIgniter\\DataCaster\\Cast\\TimestampCast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/TimestampCast.php', - 'CodeIgniter\\DataCaster\\Cast\\URICast' => __DIR__ . '/../..' . '/system/DataCaster/Cast/URICast.php', - 'CodeIgniter\\DataCaster\\DataCaster' => __DIR__ . '/../..' . '/system/DataCaster/DataCaster.php', - 'CodeIgniter\\DataCaster\\Exceptions\\CastException' => __DIR__ . '/../..' . '/system/DataCaster/Exceptions/CastException.php', - 'CodeIgniter\\DataConverter\\DataConverter' => __DIR__ . '/../..' . '/system/DataConverter/DataConverter.php', - 'CodeIgniter\\Database\\BaseBuilder' => __DIR__ . '/../..' . '/system/Database/BaseBuilder.php', - 'CodeIgniter\\Database\\BaseConnection' => __DIR__ . '/../..' . '/system/Database/BaseConnection.php', - 'CodeIgniter\\Database\\BasePreparedQuery' => __DIR__ . '/../..' . '/system/Database/BasePreparedQuery.php', - 'CodeIgniter\\Database\\BaseResult' => __DIR__ . '/../..' . '/system/Database/BaseResult.php', - 'CodeIgniter\\Database\\BaseUtils' => __DIR__ . '/../..' . '/system/Database/BaseUtils.php', - 'CodeIgniter\\Database\\Config' => __DIR__ . '/../..' . '/system/Database/Config.php', - 'CodeIgniter\\Database\\ConnectionInterface' => __DIR__ . '/../..' . '/system/Database/ConnectionInterface.php', - 'CodeIgniter\\Database\\Database' => __DIR__ . '/../..' . '/system/Database/Database.php', - 'CodeIgniter\\Database\\Exceptions\\DataException' => __DIR__ . '/../..' . '/system/Database/Exceptions/DataException.php', - 'CodeIgniter\\Database\\Exceptions\\DatabaseException' => __DIR__ . '/../..' . '/system/Database/Exceptions/DatabaseException.php', - 'CodeIgniter\\Database\\Exceptions\\ExceptionInterface' => __DIR__ . '/../..' . '/system/Database/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\Database\\Forge' => __DIR__ . '/../..' . '/system/Database/Forge.php', - 'CodeIgniter\\Database\\Migration' => __DIR__ . '/../..' . '/system/Database/Migration.php', - 'CodeIgniter\\Database\\MigrationRunner' => __DIR__ . '/../..' . '/system/Database/MigrationRunner.php', - 'CodeIgniter\\Database\\MySQLi\\Builder' => __DIR__ . '/../..' . '/system/Database/MySQLi/Builder.php', - 'CodeIgniter\\Database\\MySQLi\\Connection' => __DIR__ . '/../..' . '/system/Database/MySQLi/Connection.php', - 'CodeIgniter\\Database\\MySQLi\\Forge' => __DIR__ . '/../..' . '/system/Database/MySQLi/Forge.php', - 'CodeIgniter\\Database\\MySQLi\\PreparedQuery' => __DIR__ . '/../..' . '/system/Database/MySQLi/PreparedQuery.php', - 'CodeIgniter\\Database\\MySQLi\\Result' => __DIR__ . '/../..' . '/system/Database/MySQLi/Result.php', - 'CodeIgniter\\Database\\MySQLi\\Utils' => __DIR__ . '/../..' . '/system/Database/MySQLi/Utils.php', - 'CodeIgniter\\Database\\OCI8\\Builder' => __DIR__ . '/../..' . '/system/Database/OCI8/Builder.php', - 'CodeIgniter\\Database\\OCI8\\Connection' => __DIR__ . '/../..' . '/system/Database/OCI8/Connection.php', - 'CodeIgniter\\Database\\OCI8\\Forge' => __DIR__ . '/../..' . '/system/Database/OCI8/Forge.php', - 'CodeIgniter\\Database\\OCI8\\PreparedQuery' => __DIR__ . '/../..' . '/system/Database/OCI8/PreparedQuery.php', - 'CodeIgniter\\Database\\OCI8\\Result' => __DIR__ . '/../..' . '/system/Database/OCI8/Result.php', - 'CodeIgniter\\Database\\OCI8\\Utils' => __DIR__ . '/../..' . '/system/Database/OCI8/Utils.php', - 'CodeIgniter\\Database\\Postgre\\Builder' => __DIR__ . '/../..' . '/system/Database/Postgre/Builder.php', - 'CodeIgniter\\Database\\Postgre\\Connection' => __DIR__ . '/../..' . '/system/Database/Postgre/Connection.php', - 'CodeIgniter\\Database\\Postgre\\Forge' => __DIR__ . '/../..' . '/system/Database/Postgre/Forge.php', - 'CodeIgniter\\Database\\Postgre\\PreparedQuery' => __DIR__ . '/../..' . '/system/Database/Postgre/PreparedQuery.php', - 'CodeIgniter\\Database\\Postgre\\Result' => __DIR__ . '/../..' . '/system/Database/Postgre/Result.php', - 'CodeIgniter\\Database\\Postgre\\Utils' => __DIR__ . '/../..' . '/system/Database/Postgre/Utils.php', - 'CodeIgniter\\Database\\PreparedQueryInterface' => __DIR__ . '/../..' . '/system/Database/PreparedQueryInterface.php', - 'CodeIgniter\\Database\\Query' => __DIR__ . '/../..' . '/system/Database/Query.php', - 'CodeIgniter\\Database\\QueryInterface' => __DIR__ . '/../..' . '/system/Database/QueryInterface.php', - 'CodeIgniter\\Database\\RawSql' => __DIR__ . '/../..' . '/system/Database/RawSql.php', - 'CodeIgniter\\Database\\ResultInterface' => __DIR__ . '/../..' . '/system/Database/ResultInterface.php', - 'CodeIgniter\\Database\\SQLSRV\\Builder' => __DIR__ . '/../..' . '/system/Database/SQLSRV/Builder.php', - 'CodeIgniter\\Database\\SQLSRV\\Connection' => __DIR__ . '/../..' . '/system/Database/SQLSRV/Connection.php', - 'CodeIgniter\\Database\\SQLSRV\\Forge' => __DIR__ . '/../..' . '/system/Database/SQLSRV/Forge.php', - 'CodeIgniter\\Database\\SQLSRV\\PreparedQuery' => __DIR__ . '/../..' . '/system/Database/SQLSRV/PreparedQuery.php', - 'CodeIgniter\\Database\\SQLSRV\\Result' => __DIR__ . '/../..' . '/system/Database/SQLSRV/Result.php', - 'CodeIgniter\\Database\\SQLSRV\\Utils' => __DIR__ . '/../..' . '/system/Database/SQLSRV/Utils.php', - 'CodeIgniter\\Database\\SQLite3\\Builder' => __DIR__ . '/../..' . '/system/Database/SQLite3/Builder.php', - 'CodeIgniter\\Database\\SQLite3\\Connection' => __DIR__ . '/../..' . '/system/Database/SQLite3/Connection.php', - 'CodeIgniter\\Database\\SQLite3\\Forge' => __DIR__ . '/../..' . '/system/Database/SQLite3/Forge.php', - 'CodeIgniter\\Database\\SQLite3\\PreparedQuery' => __DIR__ . '/../..' . '/system/Database/SQLite3/PreparedQuery.php', - 'CodeIgniter\\Database\\SQLite3\\Result' => __DIR__ . '/../..' . '/system/Database/SQLite3/Result.php', - 'CodeIgniter\\Database\\SQLite3\\Table' => __DIR__ . '/../..' . '/system/Database/SQLite3/Table.php', - 'CodeIgniter\\Database\\SQLite3\\Utils' => __DIR__ . '/../..' . '/system/Database/SQLite3/Utils.php', - 'CodeIgniter\\Database\\Seeder' => __DIR__ . '/../..' . '/system/Database/Seeder.php', - 'CodeIgniter\\Database\\TableName' => __DIR__ . '/../..' . '/system/Database/TableName.php', - 'CodeIgniter\\Debug\\BaseExceptionHandler' => __DIR__ . '/../..' . '/system/Debug/BaseExceptionHandler.php', - 'CodeIgniter\\Debug\\ExceptionHandler' => __DIR__ . '/../..' . '/system/Debug/ExceptionHandler.php', - 'CodeIgniter\\Debug\\ExceptionHandlerInterface' => __DIR__ . '/../..' . '/system/Debug/ExceptionHandlerInterface.php', - 'CodeIgniter\\Debug\\Exceptions' => __DIR__ . '/../..' . '/system/Debug/Exceptions.php', - 'CodeIgniter\\Debug\\Iterator' => __DIR__ . '/../..' . '/system/Debug/Iterator.php', - 'CodeIgniter\\Debug\\Timer' => __DIR__ . '/../..' . '/system/Debug/Timer.php', - 'CodeIgniter\\Debug\\Toolbar' => __DIR__ . '/../..' . '/system/Debug/Toolbar.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\BaseCollector' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/BaseCollector.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Config' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/Config.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Database' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/Database.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Events' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/Events.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Files' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/Files.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\History' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/History.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Logs' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/Logs.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Routes' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/Routes.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Timers' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/Timers.php', - 'CodeIgniter\\Debug\\Toolbar\\Collectors\\Views' => __DIR__ . '/../..' . '/system/Debug/Toolbar/Collectors/Views.php', - 'CodeIgniter\\Email\\Email' => __DIR__ . '/../..' . '/system/Email/Email.php', - 'CodeIgniter\\Encryption\\EncrypterInterface' => __DIR__ . '/../..' . '/system/Encryption/EncrypterInterface.php', - 'CodeIgniter\\Encryption\\Encryption' => __DIR__ . '/../..' . '/system/Encryption/Encryption.php', - 'CodeIgniter\\Encryption\\Exceptions\\EncryptionException' => __DIR__ . '/../..' . '/system/Encryption/Exceptions/EncryptionException.php', - 'CodeIgniter\\Encryption\\Handlers\\BaseHandler' => __DIR__ . '/../..' . '/system/Encryption/Handlers/BaseHandler.php', - 'CodeIgniter\\Encryption\\Handlers\\OpenSSLHandler' => __DIR__ . '/../..' . '/system/Encryption/Handlers/OpenSSLHandler.php', - 'CodeIgniter\\Encryption\\Handlers\\SodiumHandler' => __DIR__ . '/../..' . '/system/Encryption/Handlers/SodiumHandler.php', - 'CodeIgniter\\Encryption\\KeyRotationDecorator' => __DIR__ . '/../..' . '/system/Encryption/KeyRotationDecorator.php', - 'CodeIgniter\\Entity\\Cast\\ArrayCast' => __DIR__ . '/../..' . '/system/Entity/Cast/ArrayCast.php', - 'CodeIgniter\\Entity\\Cast\\BaseCast' => __DIR__ . '/../..' . '/system/Entity/Cast/BaseCast.php', - 'CodeIgniter\\Entity\\Cast\\BooleanCast' => __DIR__ . '/../..' . '/system/Entity/Cast/BooleanCast.php', - 'CodeIgniter\\Entity\\Cast\\CSVCast' => __DIR__ . '/../..' . '/system/Entity/Cast/CSVCast.php', - 'CodeIgniter\\Entity\\Cast\\CastInterface' => __DIR__ . '/../..' . '/system/Entity/Cast/CastInterface.php', - 'CodeIgniter\\Entity\\Cast\\DatetimeCast' => __DIR__ . '/../..' . '/system/Entity/Cast/DatetimeCast.php', - 'CodeIgniter\\Entity\\Cast\\EnumCast' => __DIR__ . '/../..' . '/system/Entity/Cast/EnumCast.php', - 'CodeIgniter\\Entity\\Cast\\FloatCast' => __DIR__ . '/../..' . '/system/Entity/Cast/FloatCast.php', - 'CodeIgniter\\Entity\\Cast\\IntBoolCast' => __DIR__ . '/../..' . '/system/Entity/Cast/IntBoolCast.php', - 'CodeIgniter\\Entity\\Cast\\IntegerCast' => __DIR__ . '/../..' . '/system/Entity/Cast/IntegerCast.php', - 'CodeIgniter\\Entity\\Cast\\JsonCast' => __DIR__ . '/../..' . '/system/Entity/Cast/JsonCast.php', - 'CodeIgniter\\Entity\\Cast\\ObjectCast' => __DIR__ . '/../..' . '/system/Entity/Cast/ObjectCast.php', - 'CodeIgniter\\Entity\\Cast\\StringCast' => __DIR__ . '/../..' . '/system/Entity/Cast/StringCast.php', - 'CodeIgniter\\Entity\\Cast\\TimestampCast' => __DIR__ . '/../..' . '/system/Entity/Cast/TimestampCast.php', - 'CodeIgniter\\Entity\\Cast\\URICast' => __DIR__ . '/../..' . '/system/Entity/Cast/URICast.php', - 'CodeIgniter\\Entity\\Entity' => __DIR__ . '/../..' . '/system/Entity/Entity.php', - 'CodeIgniter\\Entity\\Exceptions\\CastException' => __DIR__ . '/../..' . '/system/Entity/Exceptions/CastException.php', - 'CodeIgniter\\Events\\Events' => __DIR__ . '/../..' . '/system/Events/Events.php', - 'CodeIgniter\\Exceptions\\BadFunctionCallException' => __DIR__ . '/../..' . '/system/Exceptions/BadFunctionCallException.php', - 'CodeIgniter\\Exceptions\\BadMethodCallException' => __DIR__ . '/../..' . '/system/Exceptions/BadMethodCallException.php', - 'CodeIgniter\\Exceptions\\ConfigException' => __DIR__ . '/../..' . '/system/Exceptions/ConfigException.php', - 'CodeIgniter\\Exceptions\\CriticalError' => __DIR__ . '/../..' . '/system/Exceptions/CriticalError.php', - 'CodeIgniter\\Exceptions\\DebugTraceableTrait' => __DIR__ . '/../..' . '/system/Exceptions/DebugTraceableTrait.php', - 'CodeIgniter\\Exceptions\\DownloadException' => __DIR__ . '/../..' . '/system/Exceptions/DownloadException.php', - 'CodeIgniter\\Exceptions\\ExceptionInterface' => __DIR__ . '/../..' . '/system/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\Exceptions\\FrameworkException' => __DIR__ . '/../..' . '/system/Exceptions/FrameworkException.php', - 'CodeIgniter\\Exceptions\\HTTPExceptionInterface' => __DIR__ . '/../..' . '/system/Exceptions/HTTPExceptionInterface.php', - 'CodeIgniter\\Exceptions\\HasExitCodeInterface' => __DIR__ . '/../..' . '/system/Exceptions/HasExitCodeInterface.php', - 'CodeIgniter\\Exceptions\\InvalidArgumentException' => __DIR__ . '/../..' . '/system/Exceptions/InvalidArgumentException.php', - 'CodeIgniter\\Exceptions\\LogicException' => __DIR__ . '/../..' . '/system/Exceptions/LogicException.php', - 'CodeIgniter\\Exceptions\\ModelException' => __DIR__ . '/../..' . '/system/Exceptions/ModelException.php', - 'CodeIgniter\\Exceptions\\PageNotFoundException' => __DIR__ . '/../..' . '/system/Exceptions/PageNotFoundException.php', - 'CodeIgniter\\Exceptions\\RuntimeException' => __DIR__ . '/../..' . '/system/Exceptions/RuntimeException.php', - 'CodeIgniter\\Exceptions\\TestException' => __DIR__ . '/../..' . '/system/Exceptions/TestException.php', - 'CodeIgniter\\Files\\Exceptions\\ExceptionInterface' => __DIR__ . '/../..' . '/system/Files/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\Files\\Exceptions\\FileException' => __DIR__ . '/../..' . '/system/Files/Exceptions/FileException.php', - 'CodeIgniter\\Files\\Exceptions\\FileNotFoundException' => __DIR__ . '/../..' . '/system/Files/Exceptions/FileNotFoundException.php', - 'CodeIgniter\\Files\\File' => __DIR__ . '/../..' . '/system/Files/File.php', - 'CodeIgniter\\Files\\FileCollection' => __DIR__ . '/../..' . '/system/Files/FileCollection.php', - 'CodeIgniter\\Files\\FileSizeUnit' => __DIR__ . '/../..' . '/system/Files/FileSizeUnit.php', - 'CodeIgniter\\Filters\\CSRF' => __DIR__ . '/../..' . '/system/Filters/CSRF.php', - 'CodeIgniter\\Filters\\Cors' => __DIR__ . '/../..' . '/system/Filters/Cors.php', - 'CodeIgniter\\Filters\\DebugToolbar' => __DIR__ . '/../..' . '/system/Filters/DebugToolbar.php', - 'CodeIgniter\\Filters\\Exceptions\\FilterException' => __DIR__ . '/../..' . '/system/Filters/Exceptions/FilterException.php', - 'CodeIgniter\\Filters\\FilterInterface' => __DIR__ . '/../..' . '/system/Filters/FilterInterface.php', - 'CodeIgniter\\Filters\\Filters' => __DIR__ . '/../..' . '/system/Filters/Filters.php', - 'CodeIgniter\\Filters\\ForceHTTPS' => __DIR__ . '/../..' . '/system/Filters/ForceHTTPS.php', - 'CodeIgniter\\Filters\\Honeypot' => __DIR__ . '/../..' . '/system/Filters/Honeypot.php', - 'CodeIgniter\\Filters\\InvalidChars' => __DIR__ . '/../..' . '/system/Filters/InvalidChars.php', - 'CodeIgniter\\Filters\\PageCache' => __DIR__ . '/../..' . '/system/Filters/PageCache.php', - 'CodeIgniter\\Filters\\PerformanceMetrics' => __DIR__ . '/../..' . '/system/Filters/PerformanceMetrics.php', - 'CodeIgniter\\Filters\\SecureHeaders' => __DIR__ . '/../..' . '/system/Filters/SecureHeaders.php', - 'CodeIgniter\\Format\\Exceptions\\FormatException' => __DIR__ . '/../..' . '/system/Format/Exceptions/FormatException.php', - 'CodeIgniter\\Format\\Format' => __DIR__ . '/../..' . '/system/Format/Format.php', - 'CodeIgniter\\Format\\FormatterInterface' => __DIR__ . '/../..' . '/system/Format/FormatterInterface.php', - 'CodeIgniter\\Format\\JSONFormatter' => __DIR__ . '/../..' . '/system/Format/JSONFormatter.php', - 'CodeIgniter\\Format\\XMLFormatter' => __DIR__ . '/../..' . '/system/Format/XMLFormatter.php', - 'CodeIgniter\\HTTP\\CLIRequest' => __DIR__ . '/../..' . '/system/HTTP/CLIRequest.php', - 'CodeIgniter\\HTTP\\CURLRequest' => __DIR__ . '/../..' . '/system/HTTP/CURLRequest.php', - 'CodeIgniter\\HTTP\\ContentSecurityPolicy' => __DIR__ . '/../..' . '/system/HTTP/ContentSecurityPolicy.php', - 'CodeIgniter\\HTTP\\Cors' => __DIR__ . '/../..' . '/system/HTTP/Cors.php', - 'CodeIgniter\\HTTP\\DownloadResponse' => __DIR__ . '/../..' . '/system/HTTP/DownloadResponse.php', - 'CodeIgniter\\HTTP\\Exceptions\\BadRequestException' => __DIR__ . '/../..' . '/system/HTTP/Exceptions/BadRequestException.php', - 'CodeIgniter\\HTTP\\Exceptions\\ExceptionInterface' => __DIR__ . '/../..' . '/system/HTTP/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\HTTP\\Exceptions\\HTTPException' => __DIR__ . '/../..' . '/system/HTTP/Exceptions/HTTPException.php', - 'CodeIgniter\\HTTP\\Exceptions\\RedirectException' => __DIR__ . '/../..' . '/system/HTTP/Exceptions/RedirectException.php', - 'CodeIgniter\\HTTP\\Files\\FileCollection' => __DIR__ . '/../..' . '/system/HTTP/Files/FileCollection.php', - 'CodeIgniter\\HTTP\\Files\\UploadedFile' => __DIR__ . '/../..' . '/system/HTTP/Files/UploadedFile.php', - 'CodeIgniter\\HTTP\\Files\\UploadedFileInterface' => __DIR__ . '/../..' . '/system/HTTP/Files/UploadedFileInterface.php', - 'CodeIgniter\\HTTP\\Header' => __DIR__ . '/../..' . '/system/HTTP/Header.php', - 'CodeIgniter\\HTTP\\IncomingRequest' => __DIR__ . '/../..' . '/system/HTTP/IncomingRequest.php', - 'CodeIgniter\\HTTP\\Message' => __DIR__ . '/../..' . '/system/HTTP/Message.php', - 'CodeIgniter\\HTTP\\MessageInterface' => __DIR__ . '/../..' . '/system/HTTP/MessageInterface.php', - 'CodeIgniter\\HTTP\\MessageTrait' => __DIR__ . '/../..' . '/system/HTTP/MessageTrait.php', - 'CodeIgniter\\HTTP\\Method' => __DIR__ . '/../..' . '/system/HTTP/Method.php', - 'CodeIgniter\\HTTP\\Negotiate' => __DIR__ . '/../..' . '/system/HTTP/Negotiate.php', - 'CodeIgniter\\HTTP\\OutgoingRequest' => __DIR__ . '/../..' . '/system/HTTP/OutgoingRequest.php', - 'CodeIgniter\\HTTP\\OutgoingRequestInterface' => __DIR__ . '/../..' . '/system/HTTP/OutgoingRequestInterface.php', - 'CodeIgniter\\HTTP\\RedirectResponse' => __DIR__ . '/../..' . '/system/HTTP/RedirectResponse.php', - 'CodeIgniter\\HTTP\\Request' => __DIR__ . '/../..' . '/system/HTTP/Request.php', - 'CodeIgniter\\HTTP\\RequestInterface' => __DIR__ . '/../..' . '/system/HTTP/RequestInterface.php', - 'CodeIgniter\\HTTP\\RequestTrait' => __DIR__ . '/../..' . '/system/HTTP/RequestTrait.php', - 'CodeIgniter\\HTTP\\ResponsableInterface' => __DIR__ . '/../..' . '/system/HTTP/ResponsableInterface.php', - 'CodeIgniter\\HTTP\\Response' => __DIR__ . '/../..' . '/system/HTTP/Response.php', - 'CodeIgniter\\HTTP\\ResponseInterface' => __DIR__ . '/../..' . '/system/HTTP/ResponseInterface.php', - 'CodeIgniter\\HTTP\\ResponseTrait' => __DIR__ . '/../..' . '/system/HTTP/ResponseTrait.php', - 'CodeIgniter\\HTTP\\SiteURI' => __DIR__ . '/../..' . '/system/HTTP/SiteURI.php', - 'CodeIgniter\\HTTP\\SiteURIFactory' => __DIR__ . '/../..' . '/system/HTTP/SiteURIFactory.php', - 'CodeIgniter\\HTTP\\URI' => __DIR__ . '/../..' . '/system/HTTP/URI.php', - 'CodeIgniter\\HTTP\\UserAgent' => __DIR__ . '/../..' . '/system/HTTP/UserAgent.php', - 'CodeIgniter\\Helpers\\Array\\ArrayHelper' => __DIR__ . '/../..' . '/system/Helpers/Array/ArrayHelper.php', - 'CodeIgniter\\Honeypot\\Exceptions\\HoneypotException' => __DIR__ . '/../..' . '/system/Honeypot/Exceptions/HoneypotException.php', - 'CodeIgniter\\Honeypot\\Honeypot' => __DIR__ . '/../..' . '/system/Honeypot/Honeypot.php', - 'CodeIgniter\\HotReloader\\DirectoryHasher' => __DIR__ . '/../..' . '/system/HotReloader/DirectoryHasher.php', - 'CodeIgniter\\HotReloader\\HotReloader' => __DIR__ . '/../..' . '/system/HotReloader/HotReloader.php', - 'CodeIgniter\\HotReloader\\IteratorFilter' => __DIR__ . '/../..' . '/system/HotReloader/IteratorFilter.php', - 'CodeIgniter\\I18n\\Exceptions\\I18nException' => __DIR__ . '/../..' . '/system/I18n/Exceptions/I18nException.php', - 'CodeIgniter\\I18n\\Time' => __DIR__ . '/../..' . '/system/I18n/Time.php', - 'CodeIgniter\\I18n\\TimeDifference' => __DIR__ . '/../..' . '/system/I18n/TimeDifference.php', - 'CodeIgniter\\I18n\\TimeLegacy' => __DIR__ . '/../..' . '/system/I18n/TimeLegacy.php', - 'CodeIgniter\\I18n\\TimeTrait' => __DIR__ . '/../..' . '/system/I18n/TimeTrait.php', - 'CodeIgniter\\Images\\Exceptions\\ImageException' => __DIR__ . '/../..' . '/system/Images/Exceptions/ImageException.php', - 'CodeIgniter\\Images\\Handlers\\BaseHandler' => __DIR__ . '/../..' . '/system/Images/Handlers/BaseHandler.php', - 'CodeIgniter\\Images\\Handlers\\GDHandler' => __DIR__ . '/../..' . '/system/Images/Handlers/GDHandler.php', - 'CodeIgniter\\Images\\Handlers\\ImageMagickHandler' => __DIR__ . '/../..' . '/system/Images/Handlers/ImageMagickHandler.php', - 'CodeIgniter\\Images\\Image' => __DIR__ . '/../..' . '/system/Images/Image.php', - 'CodeIgniter\\Images\\ImageHandlerInterface' => __DIR__ . '/../..' . '/system/Images/ImageHandlerInterface.php', - 'CodeIgniter\\Language\\Language' => __DIR__ . '/../..' . '/system/Language/Language.php', - 'CodeIgniter\\Log\\Exceptions\\LogException' => __DIR__ . '/../..' . '/system/Log/Exceptions/LogException.php', - 'CodeIgniter\\Log\\Handlers\\BaseHandler' => __DIR__ . '/../..' . '/system/Log/Handlers/BaseHandler.php', - 'CodeIgniter\\Log\\Handlers\\ChromeLoggerHandler' => __DIR__ . '/../..' . '/system/Log/Handlers/ChromeLoggerHandler.php', - 'CodeIgniter\\Log\\Handlers\\ErrorlogHandler' => __DIR__ . '/../..' . '/system/Log/Handlers/ErrorlogHandler.php', - 'CodeIgniter\\Log\\Handlers\\FileHandler' => __DIR__ . '/../..' . '/system/Log/Handlers/FileHandler.php', - 'CodeIgniter\\Log\\Handlers\\HandlerInterface' => __DIR__ . '/../..' . '/system/Log/Handlers/HandlerInterface.php', - 'CodeIgniter\\Log\\Logger' => __DIR__ . '/../..' . '/system/Log/Logger.php', - 'CodeIgniter\\Model' => __DIR__ . '/../..' . '/system/Model.php', - 'CodeIgniter\\Modules\\Modules' => __DIR__ . '/../..' . '/system/Modules/Modules.php', - 'CodeIgniter\\Pager\\Exceptions\\PagerException' => __DIR__ . '/../..' . '/system/Pager/Exceptions/PagerException.php', - 'CodeIgniter\\Pager\\Pager' => __DIR__ . '/../..' . '/system/Pager/Pager.php', - 'CodeIgniter\\Pager\\PagerInterface' => __DIR__ . '/../..' . '/system/Pager/PagerInterface.php', - 'CodeIgniter\\Pager\\PagerRenderer' => __DIR__ . '/../..' . '/system/Pager/PagerRenderer.php', - 'CodeIgniter\\Publisher\\ContentReplacer' => __DIR__ . '/../..' . '/system/Publisher/ContentReplacer.php', - 'CodeIgniter\\Publisher\\Exceptions\\PublisherException' => __DIR__ . '/../..' . '/system/Publisher/Exceptions/PublisherException.php', - 'CodeIgniter\\Publisher\\Publisher' => __DIR__ . '/../..' . '/system/Publisher/Publisher.php', - 'CodeIgniter\\RESTful\\BaseResource' => __DIR__ . '/../..' . '/system/RESTful/BaseResource.php', - 'CodeIgniter\\RESTful\\ResourceController' => __DIR__ . '/../..' . '/system/RESTful/ResourceController.php', - 'CodeIgniter\\RESTful\\ResourcePresenter' => __DIR__ . '/../..' . '/system/RESTful/ResourcePresenter.php', - 'CodeIgniter\\Router\\Attributes\\Cache' => __DIR__ . '/../..' . '/system/Router/Attributes/Cache.php', - 'CodeIgniter\\Router\\Attributes\\Filter' => __DIR__ . '/../..' . '/system/Router/Attributes/Filter.php', - 'CodeIgniter\\Router\\Attributes\\Restrict' => __DIR__ . '/../..' . '/system/Router/Attributes/Restrict.php', - 'CodeIgniter\\Router\\Attributes\\RouteAttributeInterface' => __DIR__ . '/../..' . '/system/Router/Attributes/RouteAttributeInterface.php', - 'CodeIgniter\\Router\\AutoRouter' => __DIR__ . '/../..' . '/system/Router/AutoRouter.php', - 'CodeIgniter\\Router\\AutoRouterImproved' => __DIR__ . '/../..' . '/system/Router/AutoRouterImproved.php', - 'CodeIgniter\\Router\\AutoRouterInterface' => __DIR__ . '/../..' . '/system/Router/AutoRouterInterface.php', - 'CodeIgniter\\Router\\DefinedRouteCollector' => __DIR__ . '/../..' . '/system/Router/DefinedRouteCollector.php', - 'CodeIgniter\\Router\\Exceptions\\ExceptionInterface' => __DIR__ . '/../..' . '/system/Router/Exceptions/ExceptionInterface.php', - 'CodeIgniter\\Router\\Exceptions\\MethodNotFoundException' => __DIR__ . '/../..' . '/system/Router/Exceptions/MethodNotFoundException.php', - 'CodeIgniter\\Router\\Exceptions\\RouterException' => __DIR__ . '/../..' . '/system/Router/Exceptions/RouterException.php', - 'CodeIgniter\\Router\\RouteCollection' => __DIR__ . '/../..' . '/system/Router/RouteCollection.php', - 'CodeIgniter\\Router\\RouteCollectionInterface' => __DIR__ . '/../..' . '/system/Router/RouteCollectionInterface.php', - 'CodeIgniter\\Router\\Router' => __DIR__ . '/../..' . '/system/Router/Router.php', - 'CodeIgniter\\Router\\RouterInterface' => __DIR__ . '/../..' . '/system/Router/RouterInterface.php', - 'CodeIgniter\\Security\\CheckPhpIni' => __DIR__ . '/../..' . '/system/Security/CheckPhpIni.php', - 'CodeIgniter\\Security\\Exceptions\\SecurityException' => __DIR__ . '/../..' . '/system/Security/Exceptions/SecurityException.php', - 'CodeIgniter\\Security\\Security' => __DIR__ . '/../..' . '/system/Security/Security.php', - 'CodeIgniter\\Security\\SecurityInterface' => __DIR__ . '/../..' . '/system/Security/SecurityInterface.php', - 'CodeIgniter\\Session\\Exceptions\\SessionException' => __DIR__ . '/../..' . '/system/Session/Exceptions/SessionException.php', - 'CodeIgniter\\Session\\Handlers\\ArrayHandler' => __DIR__ . '/../..' . '/system/Session/Handlers/ArrayHandler.php', - 'CodeIgniter\\Session\\Handlers\\BaseHandler' => __DIR__ . '/../..' . '/system/Session/Handlers/BaseHandler.php', - 'CodeIgniter\\Session\\Handlers\\DatabaseHandler' => __DIR__ . '/../..' . '/system/Session/Handlers/DatabaseHandler.php', - 'CodeIgniter\\Session\\Handlers\\Database\\MySQLiHandler' => __DIR__ . '/../..' . '/system/Session/Handlers/Database/MySQLiHandler.php', - 'CodeIgniter\\Session\\Handlers\\Database\\PostgreHandler' => __DIR__ . '/../..' . '/system/Session/Handlers/Database/PostgreHandler.php', - 'CodeIgniter\\Session\\Handlers\\FileHandler' => __DIR__ . '/../..' . '/system/Session/Handlers/FileHandler.php', - 'CodeIgniter\\Session\\Handlers\\MemcachedHandler' => __DIR__ . '/../..' . '/system/Session/Handlers/MemcachedHandler.php', - 'CodeIgniter\\Session\\Handlers\\RedisHandler' => __DIR__ . '/../..' . '/system/Session/Handlers/RedisHandler.php', - 'CodeIgniter\\Session\\PersistsConnection' => __DIR__ . '/../..' . '/system/Session/PersistsConnection.php', - 'CodeIgniter\\Session\\Session' => __DIR__ . '/../..' . '/system/Session/Session.php', - 'CodeIgniter\\Session\\SessionInterface' => __DIR__ . '/../..' . '/system/Session/SessionInterface.php', - 'CodeIgniter\\Superglobals' => __DIR__ . '/../..' . '/system/Superglobals.php', - 'CodeIgniter\\Test\\CIUnitTestCase' => __DIR__ . '/../..' . '/system/Test/CIUnitTestCase.php', - 'CodeIgniter\\Test\\ConfigFromArrayTrait' => __DIR__ . '/../..' . '/system/Test/ConfigFromArrayTrait.php', - 'CodeIgniter\\Test\\Constraints\\SeeInDatabase' => __DIR__ . '/../..' . '/system/Test/Constraints/SeeInDatabase.php', - 'CodeIgniter\\Test\\ControllerTestTrait' => __DIR__ . '/../..' . '/system/Test/ControllerTestTrait.php', - 'CodeIgniter\\Test\\DOMParser' => __DIR__ . '/../..' . '/system/Test/DOMParser.php', - 'CodeIgniter\\Test\\DatabaseTestTrait' => __DIR__ . '/../..' . '/system/Test/DatabaseTestTrait.php', - 'CodeIgniter\\Test\\Fabricator' => __DIR__ . '/../..' . '/system/Test/Fabricator.php', - 'CodeIgniter\\Test\\FeatureTestTrait' => __DIR__ . '/../..' . '/system/Test/FeatureTestTrait.php', - 'CodeIgniter\\Test\\FilterTestTrait' => __DIR__ . '/../..' . '/system/Test/FilterTestTrait.php', - 'CodeIgniter\\Test\\Filters\\CITestStreamFilter' => __DIR__ . '/../..' . '/system/Test/Filters/CITestStreamFilter.php', - 'CodeIgniter\\Test\\IniTestTrait' => __DIR__ . '/../..' . '/system/Test/IniTestTrait.php', - 'CodeIgniter\\Test\\Interfaces\\FabricatorModel' => __DIR__ . '/../..' . '/system/Test/Interfaces/FabricatorModel.php', - 'CodeIgniter\\Test\\Mock\\MockAppConfig' => __DIR__ . '/../..' . '/system/Test/Mock/MockAppConfig.php', - 'CodeIgniter\\Test\\Mock\\MockAutoload' => __DIR__ . '/../..' . '/system/Test/Mock/MockAutoload.php', - 'CodeIgniter\\Test\\Mock\\MockBuilder' => __DIR__ . '/../..' . '/system/Test/Mock/MockBuilder.php', - 'CodeIgniter\\Test\\Mock\\MockCLIConfig' => __DIR__ . '/../..' . '/system/Test/Mock/MockCLIConfig.php', - 'CodeIgniter\\Test\\Mock\\MockCURLRequest' => __DIR__ . '/../..' . '/system/Test/Mock/MockCURLRequest.php', - 'CodeIgniter\\Test\\Mock\\MockCache' => __DIR__ . '/../..' . '/system/Test/Mock/MockCache.php', - 'CodeIgniter\\Test\\Mock\\MockCodeIgniter' => __DIR__ . '/../..' . '/system/Test/Mock/MockCodeIgniter.php', - 'CodeIgniter\\Test\\Mock\\MockConnection' => __DIR__ . '/../..' . '/system/Test/Mock/MockConnection.php', - 'CodeIgniter\\Test\\Mock\\MockEmail' => __DIR__ . '/../..' . '/system/Test/Mock/MockEmail.php', - 'CodeIgniter\\Test\\Mock\\MockEvents' => __DIR__ . '/../..' . '/system/Test/Mock/MockEvents.php', - 'CodeIgniter\\Test\\Mock\\MockFileLogger' => __DIR__ . '/../..' . '/system/Test/Mock/MockFileLogger.php', - 'CodeIgniter\\Test\\Mock\\MockIncomingRequest' => __DIR__ . '/../..' . '/system/Test/Mock/MockIncomingRequest.php', - 'CodeIgniter\\Test\\Mock\\MockInputOutput' => __DIR__ . '/../..' . '/system/Test/Mock/MockInputOutput.php', - 'CodeIgniter\\Test\\Mock\\MockLanguage' => __DIR__ . '/../..' . '/system/Test/Mock/MockLanguage.php', - 'CodeIgniter\\Test\\Mock\\MockLogger' => __DIR__ . '/../..' . '/system/Test/Mock/MockLogger.php', - 'CodeIgniter\\Test\\Mock\\MockQuery' => __DIR__ . '/../..' . '/system/Test/Mock/MockQuery.php', - 'CodeIgniter\\Test\\Mock\\MockResourceController' => __DIR__ . '/../..' . '/system/Test/Mock/MockResourceController.php', - 'CodeIgniter\\Test\\Mock\\MockResourcePresenter' => __DIR__ . '/../..' . '/system/Test/Mock/MockResourcePresenter.php', - 'CodeIgniter\\Test\\Mock\\MockResponse' => __DIR__ . '/../..' . '/system/Test/Mock/MockResponse.php', - 'CodeIgniter\\Test\\Mock\\MockResult' => __DIR__ . '/../..' . '/system/Test/Mock/MockResult.php', - 'CodeIgniter\\Test\\Mock\\MockSecurity' => __DIR__ . '/../..' . '/system/Test/Mock/MockSecurity.php', - 'CodeIgniter\\Test\\Mock\\MockServices' => __DIR__ . '/../..' . '/system/Test/Mock/MockServices.php', - 'CodeIgniter\\Test\\Mock\\MockSession' => __DIR__ . '/../..' . '/system/Test/Mock/MockSession.php', - 'CodeIgniter\\Test\\Mock\\MockTable' => __DIR__ . '/../..' . '/system/Test/Mock/MockTable.php', - 'CodeIgniter\\Test\\PhpStreamWrapper' => __DIR__ . '/../..' . '/system/Test/PhpStreamWrapper.php', - 'CodeIgniter\\Test\\ReflectionHelper' => __DIR__ . '/../..' . '/system/Test/ReflectionHelper.php', - 'CodeIgniter\\Test\\StreamFilterTrait' => __DIR__ . '/../..' . '/system/Test/StreamFilterTrait.php', - 'CodeIgniter\\Test\\TestLogger' => __DIR__ . '/../..' . '/system/Test/TestLogger.php', - 'CodeIgniter\\Test\\TestResponse' => __DIR__ . '/../..' . '/system/Test/TestResponse.php', - 'CodeIgniter\\Test\\Utilities\\NativeHeadersStack' => __DIR__ . '/../..' . '/system/Test/Utilities/NativeHeadersStack.php', - 'CodeIgniter\\Throttle\\Throttler' => __DIR__ . '/../..' . '/system/Throttle/Throttler.php', - 'CodeIgniter\\Throttle\\ThrottlerInterface' => __DIR__ . '/../..' . '/system/Throttle/ThrottlerInterface.php', - 'CodeIgniter\\Traits\\ConditionalTrait' => __DIR__ . '/../..' . '/system/Traits/ConditionalTrait.php', - 'CodeIgniter\\Traits\\PropertiesTrait' => __DIR__ . '/../..' . '/system/Traits/PropertiesTrait.php', - 'CodeIgniter\\Typography\\Typography' => __DIR__ . '/../..' . '/system/Typography/Typography.php', - 'CodeIgniter\\Validation\\CreditCardRules' => __DIR__ . '/../..' . '/system/Validation/CreditCardRules.php', - 'CodeIgniter\\Validation\\DotArrayFilter' => __DIR__ . '/../..' . '/system/Validation/DotArrayFilter.php', - 'CodeIgniter\\Validation\\Exceptions\\ValidationException' => __DIR__ . '/../..' . '/system/Validation/Exceptions/ValidationException.php', - 'CodeIgniter\\Validation\\FileRules' => __DIR__ . '/../..' . '/system/Validation/FileRules.php', - 'CodeIgniter\\Validation\\FormatRules' => __DIR__ . '/../..' . '/system/Validation/FormatRules.php', - 'CodeIgniter\\Validation\\Rules' => __DIR__ . '/../..' . '/system/Validation/Rules.php', - 'CodeIgniter\\Validation\\StrictRules\\CreditCardRules' => __DIR__ . '/../..' . '/system/Validation/StrictRules/CreditCardRules.php', - 'CodeIgniter\\Validation\\StrictRules\\FileRules' => __DIR__ . '/../..' . '/system/Validation/StrictRules/FileRules.php', - 'CodeIgniter\\Validation\\StrictRules\\FormatRules' => __DIR__ . '/../..' . '/system/Validation/StrictRules/FormatRules.php', - 'CodeIgniter\\Validation\\StrictRules\\Rules' => __DIR__ . '/../..' . '/system/Validation/StrictRules/Rules.php', - 'CodeIgniter\\Validation\\Validation' => __DIR__ . '/../..' . '/system/Validation/Validation.php', - 'CodeIgniter\\Validation\\ValidationInterface' => __DIR__ . '/../..' . '/system/Validation/ValidationInterface.php', - 'CodeIgniter\\View\\Cell' => __DIR__ . '/../..' . '/system/View/Cell.php', - 'CodeIgniter\\View\\Cells\\Cell' => __DIR__ . '/../..' . '/system/View/Cells/Cell.php', - 'CodeIgniter\\View\\Exceptions\\ViewException' => __DIR__ . '/../..' . '/system/View/Exceptions/ViewException.php', - 'CodeIgniter\\View\\Filters' => __DIR__ . '/../..' . '/system/View/Filters.php', - 'CodeIgniter\\View\\Parser' => __DIR__ . '/../..' . '/system/View/Parser.php', - 'CodeIgniter\\View\\Plugins' => __DIR__ . '/../..' . '/system/View/Plugins.php', - 'CodeIgniter\\View\\RendererInterface' => __DIR__ . '/../..' . '/system/View/RendererInterface.php', - 'CodeIgniter\\View\\Table' => __DIR__ . '/../..' . '/system/View/Table.php', - 'CodeIgniter\\View\\View' => __DIR__ . '/../..' . '/system/View/View.php', - 'CodeIgniter\\View\\ViewDecoratorInterface' => __DIR__ . '/../..' . '/system/View/ViewDecoratorInterface.php', - 'CodeIgniter\\View\\ViewDecoratorTrait' => __DIR__ . '/../..' . '/system/View/ViewDecoratorTrait.php', - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'Composer\\Pcre\\MatchAllResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllResult.php', - 'Composer\\Pcre\\MatchAllStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllStrictGroupsResult.php', - 'Composer\\Pcre\\MatchAllWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllWithOffsetsResult.php', - 'Composer\\Pcre\\MatchResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchResult.php', - 'Composer\\Pcre\\MatchStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchStrictGroupsResult.php', - 'Composer\\Pcre\\MatchWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchWithOffsetsResult.php', - 'Composer\\Pcre\\PHPStan\\InvalidRegexPatternRule' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php', - 'Composer\\Pcre\\PHPStan\\PregMatchFlags' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchFlags.php', - 'Composer\\Pcre\\PHPStan\\PregMatchParameterOutTypeExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php', - 'Composer\\Pcre\\PHPStan\\PregMatchTypeSpecifyingExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php', - 'Composer\\Pcre\\PHPStan\\PregReplaceCallbackClosureTypeExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php', - 'Composer\\Pcre\\PHPStan\\UnsafeStrictGroupsCallRule' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php', - 'Composer\\Pcre\\PcreException' => __DIR__ . '/..' . '/composer/pcre/src/PcreException.php', - 'Composer\\Pcre\\Preg' => __DIR__ . '/..' . '/composer/pcre/src/Preg.php', - 'Composer\\Pcre\\Regex' => __DIR__ . '/..' . '/composer/pcre/src/Regex.php', - 'Composer\\Pcre\\ReplaceResult' => __DIR__ . '/..' . '/composer/pcre/src/ReplaceResult.php', - 'Composer\\Pcre\\UnexpectedNullMatchException' => __DIR__ . '/..' . '/composer/pcre/src/UnexpectedNullMatchException.php', - 'Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php', - 'Composer\\Semver\\CompilingMatcher' => __DIR__ . '/..' . '/composer/semver/src/CompilingMatcher.php', - 'Composer\\Semver\\Constraint\\Bound' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Bound.php', - 'Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php', - 'Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php', - 'Composer\\Semver\\Constraint\\MatchAllConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchAllConstraint.php', - 'Composer\\Semver\\Constraint\\MatchNoneConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchNoneConstraint.php', - 'Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php', - 'Composer\\Semver\\Interval' => __DIR__ . '/..' . '/composer/semver/src/Interval.php', - 'Composer\\Semver\\Intervals' => __DIR__ . '/..' . '/composer/semver/src/Intervals.php', - 'Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php', - 'Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php', - 'Composer\\XdebugHandler\\PhpConfig' => __DIR__ . '/..' . '/composer/xdebug-handler/src/PhpConfig.php', - 'Composer\\XdebugHandler\\Process' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Process.php', - 'Composer\\XdebugHandler\\Status' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Status.php', - 'Composer\\XdebugHandler\\XdebugHandler' => __DIR__ . '/..' . '/composer/xdebug-handler/src/XdebugHandler.php', - 'DeepCopy\\DeepCopy' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php', - 'DeepCopy\\Exception\\CloneException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php', - 'DeepCopy\\Exception\\PropertyException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php', - 'DeepCopy\\Filter\\ChainableFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/ChainableFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', - 'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', - 'DeepCopy\\Filter\\Filter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php', - 'DeepCopy\\Filter\\KeepFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php', - 'DeepCopy\\Filter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php', - 'DeepCopy\\Filter\\SetNullFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php', - 'DeepCopy\\Matcher\\Doctrine\\DoctrineProxyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php', - 'DeepCopy\\Matcher\\Matcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php', - 'DeepCopy\\Matcher\\PropertyMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php', - 'DeepCopy\\Matcher\\PropertyNameMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php', - 'DeepCopy\\Matcher\\PropertyTypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php', - 'DeepCopy\\Reflection\\ReflectionHelper' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php', - 'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php', - 'DeepCopy\\TypeFilter\\Date\\DatePeriodFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DatePeriodFilter.php', - 'DeepCopy\\TypeFilter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php', - 'DeepCopy\\TypeFilter\\ShallowCopyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedList' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php', - 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', - 'DeepCopy\\TypeFilter\\TypeFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', - 'DeepCopy\\TypeMatcher\\TypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', - 'Deprecated' => __DIR__ . '/..' . '/symfony/polyfill-php84/Resources/stubs/Deprecated.php', - 'Ergebnis\\AgentDetector\\Detector' => __DIR__ . '/..' . '/ergebnis/agent-detector/src/Detector.php', - 'Evenement\\EventEmitter' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitter.php', - 'Evenement\\EventEmitterInterface' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitterInterface.php', - 'Evenement\\EventEmitterTrait' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitterTrait.php', - 'Faker\\Calculator\\Ean' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Ean.php', - 'Faker\\Calculator\\Iban' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Iban.php', - 'Faker\\Calculator\\Inn' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Inn.php', - 'Faker\\Calculator\\Isbn' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Isbn.php', - 'Faker\\Calculator\\Luhn' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/Luhn.php', - 'Faker\\Calculator\\TCNo' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Calculator/TCNo.php', - 'Faker\\ChanceGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ChanceGenerator.php', - 'Faker\\Container\\Container' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/Container.php', - 'Faker\\Container\\ContainerBuilder' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/ContainerBuilder.php', - 'Faker\\Container\\ContainerException' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/ContainerException.php', - 'Faker\\Container\\ContainerInterface' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/ContainerInterface.php', - 'Faker\\Container\\NotInContainerException' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Container/NotInContainerException.php', - 'Faker\\Core\\Barcode' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Barcode.php', - 'Faker\\Core\\Blood' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Blood.php', - 'Faker\\Core\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Color.php', - 'Faker\\Core\\Coordinates' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Coordinates.php', - 'Faker\\Core\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/DateTime.php', - 'Faker\\Core\\File' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/File.php', - 'Faker\\Core\\Number' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Number.php', - 'Faker\\Core\\Uuid' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Uuid.php', - 'Faker\\Core\\Version' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Core/Version.php', - 'Faker\\DefaultGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/DefaultGenerator.php', - 'Faker\\Documentor' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Documentor.php', - 'Faker\\Extension\\AddressExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/AddressExtension.php', - 'Faker\\Extension\\BarcodeExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/BarcodeExtension.php', - 'Faker\\Extension\\BloodExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/BloodExtension.php', - 'Faker\\Extension\\ColorExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/ColorExtension.php', - 'Faker\\Extension\\CompanyExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/CompanyExtension.php', - 'Faker\\Extension\\CountryExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/CountryExtension.php', - 'Faker\\Extension\\DateTimeExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/DateTimeExtension.php', - 'Faker\\Extension\\Extension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/Extension.php', - 'Faker\\Extension\\ExtensionNotFound' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/ExtensionNotFound.php', - 'Faker\\Extension\\FileExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/FileExtension.php', - 'Faker\\Extension\\GeneratorAwareExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/GeneratorAwareExtension.php', - 'Faker\\Extension\\GeneratorAwareExtensionTrait' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/GeneratorAwareExtensionTrait.php', - 'Faker\\Extension\\Helper' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/Helper.php', - 'Faker\\Extension\\NumberExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/NumberExtension.php', - 'Faker\\Extension\\PersonExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/PersonExtension.php', - 'Faker\\Extension\\PhoneNumberExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/PhoneNumberExtension.php', - 'Faker\\Extension\\UuidExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/UuidExtension.php', - 'Faker\\Extension\\VersionExtension' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Extension/VersionExtension.php', - 'Faker\\Factory' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Factory.php', - 'Faker\\Generator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Generator.php', - 'Faker\\Guesser\\Name' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Guesser/Name.php', - 'Faker\\ORM\\CakePHP\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php', - 'Faker\\ORM\\CakePHP\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/CakePHP/EntityPopulator.php', - 'Faker\\ORM\\CakePHP\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/CakePHP/Populator.php', - 'Faker\\ORM\\Doctrine\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php', - 'Faker\\ORM\\Doctrine\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Doctrine/EntityPopulator.php', - 'Faker\\ORM\\Doctrine\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php', - 'Faker\\ORM\\Mandango\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Mandango/ColumnTypeGuesser.php', - 'Faker\\ORM\\Mandango\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Mandango/EntityPopulator.php', - 'Faker\\ORM\\Mandango\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Mandango/Populator.php', - 'Faker\\ORM\\Propel2\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel2/ColumnTypeGuesser.php', - 'Faker\\ORM\\Propel2\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel2/EntityPopulator.php', - 'Faker\\ORM\\Propel2\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel2/Populator.php', - 'Faker\\ORM\\Propel\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel/ColumnTypeGuesser.php', - 'Faker\\ORM\\Propel\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel/EntityPopulator.php', - 'Faker\\ORM\\Propel\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Propel/Populator.php', - 'Faker\\ORM\\Spot\\ColumnTypeGuesser' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Spot/ColumnTypeGuesser.php', - 'Faker\\ORM\\Spot\\EntityPopulator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Spot/EntityPopulator.php', - 'Faker\\ORM\\Spot\\Populator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ORM/Spot/Populator.php', - 'Faker\\Provider\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Address.php', - 'Faker\\Provider\\Barcode' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Barcode.php', - 'Faker\\Provider\\Base' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Base.php', - 'Faker\\Provider\\Biased' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Biased.php', - 'Faker\\Provider\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Color.php', - 'Faker\\Provider\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Company.php', - 'Faker\\Provider\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/DateTime.php', - 'Faker\\Provider\\File' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/File.php', - 'Faker\\Provider\\HtmlLorem' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/HtmlLorem.php', - 'Faker\\Provider\\Image' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Image.php', - 'Faker\\Provider\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Internet.php', - 'Faker\\Provider\\Lorem' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Lorem.php', - 'Faker\\Provider\\Medical' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Medical.php', - 'Faker\\Provider\\Miscellaneous' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Miscellaneous.php', - 'Faker\\Provider\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Payment.php', - 'Faker\\Provider\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Person.php', - 'Faker\\Provider\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/PhoneNumber.php', - 'Faker\\Provider\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Text.php', - 'Faker\\Provider\\UserAgent' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/UserAgent.php', - 'Faker\\Provider\\Uuid' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/Uuid.php', - 'Faker\\Provider\\ar_EG\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Address.php', - 'Faker\\Provider\\ar_EG\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Color.php', - 'Faker\\Provider\\ar_EG\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Company.php', - 'Faker\\Provider\\ar_EG\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Internet.php', - 'Faker\\Provider\\ar_EG\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Payment.php', - 'Faker\\Provider\\ar_EG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Person.php', - 'Faker\\Provider\\ar_EG\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_EG/Text.php', - 'Faker\\Provider\\ar_JO\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Address.php', - 'Faker\\Provider\\ar_JO\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Company.php', - 'Faker\\Provider\\ar_JO\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Internet.php', - 'Faker\\Provider\\ar_JO\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Person.php', - 'Faker\\Provider\\ar_JO\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_JO/Text.php', - 'Faker\\Provider\\ar_SA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Address.php', - 'Faker\\Provider\\ar_SA\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Color.php', - 'Faker\\Provider\\ar_SA\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Company.php', - 'Faker\\Provider\\ar_SA\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Internet.php', - 'Faker\\Provider\\ar_SA\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Payment.php', - 'Faker\\Provider\\ar_SA\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Person.php', - 'Faker\\Provider\\ar_SA\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ar_SA/Text.php', - 'Faker\\Provider\\at_AT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/at_AT/Payment.php', - 'Faker\\Provider\\bg_BG\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bg_BG/Internet.php', - 'Faker\\Provider\\bg_BG\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bg_BG/Payment.php', - 'Faker\\Provider\\bg_BG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bg_BG/Person.php', - 'Faker\\Provider\\bg_BG\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bg_BG/PhoneNumber.php', - 'Faker\\Provider\\bn_BD\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/Address.php', - 'Faker\\Provider\\bn_BD\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/Company.php', - 'Faker\\Provider\\bn_BD\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/Person.php', - 'Faker\\Provider\\bn_BD\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/PhoneNumber.php', - 'Faker\\Provider\\bn_BD\\Utils' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/bn_BD/Utils.php', - 'Faker\\Provider\\cs_CZ\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Address.php', - 'Faker\\Provider\\cs_CZ\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Company.php', - 'Faker\\Provider\\cs_CZ\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/DateTime.php', - 'Faker\\Provider\\cs_CZ\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Internet.php', - 'Faker\\Provider\\cs_CZ\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Payment.php', - 'Faker\\Provider\\cs_CZ\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Person.php', - 'Faker\\Provider\\cs_CZ\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/PhoneNumber.php', - 'Faker\\Provider\\cs_CZ\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/cs_CZ/Text.php', - 'Faker\\Provider\\da_DK\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Address.php', - 'Faker\\Provider\\da_DK\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Company.php', - 'Faker\\Provider\\da_DK\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Internet.php', - 'Faker\\Provider\\da_DK\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Payment.php', - 'Faker\\Provider\\da_DK\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/Person.php', - 'Faker\\Provider\\da_DK\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/da_DK/PhoneNumber.php', - 'Faker\\Provider\\de_AT\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Address.php', - 'Faker\\Provider\\de_AT\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Company.php', - 'Faker\\Provider\\de_AT\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Internet.php', - 'Faker\\Provider\\de_AT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Payment.php', - 'Faker\\Provider\\de_AT\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Person.php', - 'Faker\\Provider\\de_AT\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/PhoneNumber.php', - 'Faker\\Provider\\de_AT\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_AT/Text.php', - 'Faker\\Provider\\de_CH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Address.php', - 'Faker\\Provider\\de_CH\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Company.php', - 'Faker\\Provider\\de_CH\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Internet.php', - 'Faker\\Provider\\de_CH\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Payment.php', - 'Faker\\Provider\\de_CH\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Person.php', - 'Faker\\Provider\\de_CH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/PhoneNumber.php', - 'Faker\\Provider\\de_CH\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_CH/Text.php', - 'Faker\\Provider\\de_DE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Address.php', - 'Faker\\Provider\\de_DE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Company.php', - 'Faker\\Provider\\de_DE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Internet.php', - 'Faker\\Provider\\de_DE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Payment.php', - 'Faker\\Provider\\de_DE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Person.php', - 'Faker\\Provider\\de_DE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/PhoneNumber.php', - 'Faker\\Provider\\de_DE\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/de_DE/Text.php', - 'Faker\\Provider\\el_CY\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Address.php', - 'Faker\\Provider\\el_CY\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Company.php', - 'Faker\\Provider\\el_CY\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Internet.php', - 'Faker\\Provider\\el_CY\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Payment.php', - 'Faker\\Provider\\el_CY\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/Person.php', - 'Faker\\Provider\\el_CY\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_CY/PhoneNumber.php', - 'Faker\\Provider\\el_GR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Address.php', - 'Faker\\Provider\\el_GR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Company.php', - 'Faker\\Provider\\el_GR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Payment.php', - 'Faker\\Provider\\el_GR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Person.php', - 'Faker\\Provider\\el_GR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/PhoneNumber.php', - 'Faker\\Provider\\el_GR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/el_GR/Text.php', - 'Faker\\Provider\\en_AU\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_AU/Address.php', - 'Faker\\Provider\\en_AU\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_AU/Internet.php', - 'Faker\\Provider\\en_AU\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_AU/PhoneNumber.php', - 'Faker\\Provider\\en_CA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_CA/Address.php', - 'Faker\\Provider\\en_CA\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_CA/PhoneNumber.php', - 'Faker\\Provider\\en_GB\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Address.php', - 'Faker\\Provider\\en_GB\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Company.php', - 'Faker\\Provider\\en_GB\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Internet.php', - 'Faker\\Provider\\en_GB\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Payment.php', - 'Faker\\Provider\\en_GB\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/Person.php', - 'Faker\\Provider\\en_GB\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_GB/PhoneNumber.php', - 'Faker\\Provider\\en_HK\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_HK/Address.php', - 'Faker\\Provider\\en_HK\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_HK/Internet.php', - 'Faker\\Provider\\en_HK\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_HK/PhoneNumber.php', - 'Faker\\Provider\\en_IN\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_IN/Address.php', - 'Faker\\Provider\\en_IN\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_IN/Internet.php', - 'Faker\\Provider\\en_IN\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_IN/Person.php', - 'Faker\\Provider\\en_IN\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_IN/PhoneNumber.php', - 'Faker\\Provider\\en_NG\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NG/Address.php', - 'Faker\\Provider\\en_NG\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NG/Internet.php', - 'Faker\\Provider\\en_NG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NG/Person.php', - 'Faker\\Provider\\en_NG\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NG/PhoneNumber.php', - 'Faker\\Provider\\en_NZ\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NZ/Address.php', - 'Faker\\Provider\\en_NZ\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NZ/Internet.php', - 'Faker\\Provider\\en_NZ\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_NZ/PhoneNumber.php', - 'Faker\\Provider\\en_PH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_PH/Address.php', - 'Faker\\Provider\\en_PH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_PH/PhoneNumber.php', - 'Faker\\Provider\\en_SG\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_SG/Address.php', - 'Faker\\Provider\\en_SG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_SG/Person.php', - 'Faker\\Provider\\en_SG\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_SG/PhoneNumber.php', - 'Faker\\Provider\\en_UG\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_UG/Address.php', - 'Faker\\Provider\\en_UG\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_UG/Internet.php', - 'Faker\\Provider\\en_UG\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_UG/Person.php', - 'Faker\\Provider\\en_UG\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_UG/PhoneNumber.php', - 'Faker\\Provider\\en_US\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Address.php', - 'Faker\\Provider\\en_US\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Company.php', - 'Faker\\Provider\\en_US\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Payment.php', - 'Faker\\Provider\\en_US\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Person.php', - 'Faker\\Provider\\en_US\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/PhoneNumber.php', - 'Faker\\Provider\\en_US\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_US/Text.php', - 'Faker\\Provider\\en_ZA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/Address.php', - 'Faker\\Provider\\en_ZA\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/Company.php', - 'Faker\\Provider\\en_ZA\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/Internet.php', - 'Faker\\Provider\\en_ZA\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/Person.php', - 'Faker\\Provider\\en_ZA\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/en_ZA/PhoneNumber.php', - 'Faker\\Provider\\es_AR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_AR/Address.php', - 'Faker\\Provider\\es_AR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_AR/Company.php', - 'Faker\\Provider\\es_AR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_AR/Person.php', - 'Faker\\Provider\\es_AR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_AR/PhoneNumber.php', - 'Faker\\Provider\\es_ES\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Address.php', - 'Faker\\Provider\\es_ES\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Color.php', - 'Faker\\Provider\\es_ES\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Company.php', - 'Faker\\Provider\\es_ES\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Internet.php', - 'Faker\\Provider\\es_ES\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Payment.php', - 'Faker\\Provider\\es_ES\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Person.php', - 'Faker\\Provider\\es_ES\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/PhoneNumber.php', - 'Faker\\Provider\\es_ES\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_ES/Text.php', - 'Faker\\Provider\\es_PE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_PE/Address.php', - 'Faker\\Provider\\es_PE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_PE/Company.php', - 'Faker\\Provider\\es_PE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_PE/Person.php', - 'Faker\\Provider\\es_PE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_PE/PhoneNumber.php', - 'Faker\\Provider\\es_VE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/Address.php', - 'Faker\\Provider\\es_VE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/Company.php', - 'Faker\\Provider\\es_VE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/Internet.php', - 'Faker\\Provider\\es_VE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/Person.php', - 'Faker\\Provider\\es_VE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/es_VE/PhoneNumber.php', - 'Faker\\Provider\\et_EE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/et_EE/Person.php', - 'Faker\\Provider\\fa_IR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Address.php', - 'Faker\\Provider\\fa_IR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Company.php', - 'Faker\\Provider\\fa_IR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Internet.php', - 'Faker\\Provider\\fa_IR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Person.php', - 'Faker\\Provider\\fa_IR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/PhoneNumber.php', - 'Faker\\Provider\\fa_IR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fa_IR/Text.php', - 'Faker\\Provider\\fi_FI\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Address.php', - 'Faker\\Provider\\fi_FI\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Company.php', - 'Faker\\Provider\\fi_FI\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Internet.php', - 'Faker\\Provider\\fi_FI\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Payment.php', - 'Faker\\Provider\\fi_FI\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/Person.php', - 'Faker\\Provider\\fi_FI\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fi_FI/PhoneNumber.php', - 'Faker\\Provider\\fr_BE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Address.php', - 'Faker\\Provider\\fr_BE\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Color.php', - 'Faker\\Provider\\fr_BE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Company.php', - 'Faker\\Provider\\fr_BE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Internet.php', - 'Faker\\Provider\\fr_BE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Payment.php', - 'Faker\\Provider\\fr_BE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/Person.php', - 'Faker\\Provider\\fr_BE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_BE/PhoneNumber.php', - 'Faker\\Provider\\fr_CA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Address.php', - 'Faker\\Provider\\fr_CA\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Color.php', - 'Faker\\Provider\\fr_CA\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Company.php', - 'Faker\\Provider\\fr_CA\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Person.php', - 'Faker\\Provider\\fr_CA\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CA/Text.php', - 'Faker\\Provider\\fr_CH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Address.php', - 'Faker\\Provider\\fr_CH\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Color.php', - 'Faker\\Provider\\fr_CH\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Company.php', - 'Faker\\Provider\\fr_CH\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Internet.php', - 'Faker\\Provider\\fr_CH\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Payment.php', - 'Faker\\Provider\\fr_CH\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Person.php', - 'Faker\\Provider\\fr_CH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/PhoneNumber.php', - 'Faker\\Provider\\fr_CH\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_CH/Text.php', - 'Faker\\Provider\\fr_FR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Address.php', - 'Faker\\Provider\\fr_FR\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Color.php', - 'Faker\\Provider\\fr_FR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Company.php', - 'Faker\\Provider\\fr_FR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Internet.php', - 'Faker\\Provider\\fr_FR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Payment.php', - 'Faker\\Provider\\fr_FR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Person.php', - 'Faker\\Provider\\fr_FR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php', - 'Faker\\Provider\\fr_FR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/fr_FR/Text.php', - 'Faker\\Provider\\he_IL\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/Address.php', - 'Faker\\Provider\\he_IL\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/Company.php', - 'Faker\\Provider\\he_IL\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/Payment.php', - 'Faker\\Provider\\he_IL\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/Person.php', - 'Faker\\Provider\\he_IL\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/he_IL/PhoneNumber.php', - 'Faker\\Provider\\hr_HR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/Address.php', - 'Faker\\Provider\\hr_HR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/Company.php', - 'Faker\\Provider\\hr_HR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/Payment.php', - 'Faker\\Provider\\hr_HR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/Person.php', - 'Faker\\Provider\\hr_HR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hr_HR/PhoneNumber.php', - 'Faker\\Provider\\hu_HU\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Address.php', - 'Faker\\Provider\\hu_HU\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Company.php', - 'Faker\\Provider\\hu_HU\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Payment.php', - 'Faker\\Provider\\hu_HU\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Person.php', - 'Faker\\Provider\\hu_HU\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/PhoneNumber.php', - 'Faker\\Provider\\hu_HU\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hu_HU/Text.php', - 'Faker\\Provider\\hy_AM\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Address.php', - 'Faker\\Provider\\hy_AM\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Color.php', - 'Faker\\Provider\\hy_AM\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Company.php', - 'Faker\\Provider\\hy_AM\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Internet.php', - 'Faker\\Provider\\hy_AM\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/Person.php', - 'Faker\\Provider\\hy_AM\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/hy_AM/PhoneNumber.php', - 'Faker\\Provider\\id_ID\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Address.php', - 'Faker\\Provider\\id_ID\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Color.php', - 'Faker\\Provider\\id_ID\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Company.php', - 'Faker\\Provider\\id_ID\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Internet.php', - 'Faker\\Provider\\id_ID\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/Person.php', - 'Faker\\Provider\\id_ID\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/id_ID/PhoneNumber.php', - 'Faker\\Provider\\is_IS\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Address.php', - 'Faker\\Provider\\is_IS\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Company.php', - 'Faker\\Provider\\is_IS\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Internet.php', - 'Faker\\Provider\\is_IS\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Payment.php', - 'Faker\\Provider\\is_IS\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/Person.php', - 'Faker\\Provider\\is_IS\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/is_IS/PhoneNumber.php', - 'Faker\\Provider\\it_CH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Address.php', - 'Faker\\Provider\\it_CH\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Company.php', - 'Faker\\Provider\\it_CH\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Internet.php', - 'Faker\\Provider\\it_CH\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Payment.php', - 'Faker\\Provider\\it_CH\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Person.php', - 'Faker\\Provider\\it_CH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/PhoneNumber.php', - 'Faker\\Provider\\it_CH\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_CH/Text.php', - 'Faker\\Provider\\it_IT\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Address.php', - 'Faker\\Provider\\it_IT\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Company.php', - 'Faker\\Provider\\it_IT\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Internet.php', - 'Faker\\Provider\\it_IT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Payment.php', - 'Faker\\Provider\\it_IT\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Person.php', - 'Faker\\Provider\\it_IT\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/PhoneNumber.php', - 'Faker\\Provider\\it_IT\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/it_IT/Text.php', - 'Faker\\Provider\\ja_JP\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Address.php', - 'Faker\\Provider\\ja_JP\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Company.php', - 'Faker\\Provider\\ja_JP\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Internet.php', - 'Faker\\Provider\\ja_JP\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Person.php', - 'Faker\\Provider\\ja_JP\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/PhoneNumber.php', - 'Faker\\Provider\\ja_JP\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ja_JP/Text.php', - 'Faker\\Provider\\ka_GE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Address.php', - 'Faker\\Provider\\ka_GE\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Color.php', - 'Faker\\Provider\\ka_GE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Company.php', - 'Faker\\Provider\\ka_GE\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/DateTime.php', - 'Faker\\Provider\\ka_GE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Internet.php', - 'Faker\\Provider\\ka_GE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Payment.php', - 'Faker\\Provider\\ka_GE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Person.php', - 'Faker\\Provider\\ka_GE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/PhoneNumber.php', - 'Faker\\Provider\\ka_GE\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ka_GE/Text.php', - 'Faker\\Provider\\kk_KZ\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Address.php', - 'Faker\\Provider\\kk_KZ\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Color.php', - 'Faker\\Provider\\kk_KZ\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Company.php', - 'Faker\\Provider\\kk_KZ\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Internet.php', - 'Faker\\Provider\\kk_KZ\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Payment.php', - 'Faker\\Provider\\kk_KZ\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Person.php', - 'Faker\\Provider\\kk_KZ\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/PhoneNumber.php', - 'Faker\\Provider\\kk_KZ\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/kk_KZ/Text.php', - 'Faker\\Provider\\ko_KR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Address.php', - 'Faker\\Provider\\ko_KR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Company.php', - 'Faker\\Provider\\ko_KR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Internet.php', - 'Faker\\Provider\\ko_KR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Person.php', - 'Faker\\Provider\\ko_KR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/PhoneNumber.php', - 'Faker\\Provider\\ko_KR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ko_KR/Text.php', - 'Faker\\Provider\\lt_LT\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Address.php', - 'Faker\\Provider\\lt_LT\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Company.php', - 'Faker\\Provider\\lt_LT\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Internet.php', - 'Faker\\Provider\\lt_LT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Payment.php', - 'Faker\\Provider\\lt_LT\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/Person.php', - 'Faker\\Provider\\lt_LT\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lt_LT/PhoneNumber.php', - 'Faker\\Provider\\lv_LV\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Address.php', - 'Faker\\Provider\\lv_LV\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Color.php', - 'Faker\\Provider\\lv_LV\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Internet.php', - 'Faker\\Provider\\lv_LV\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Payment.php', - 'Faker\\Provider\\lv_LV\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/Person.php', - 'Faker\\Provider\\lv_LV\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/lv_LV/PhoneNumber.php', - 'Faker\\Provider\\me_ME\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/Address.php', - 'Faker\\Provider\\me_ME\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/Company.php', - 'Faker\\Provider\\me_ME\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/Payment.php', - 'Faker\\Provider\\me_ME\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/Person.php', - 'Faker\\Provider\\me_ME\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/me_ME/PhoneNumber.php', - 'Faker\\Provider\\mn_MN\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/mn_MN/Person.php', - 'Faker\\Provider\\mn_MN\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/mn_MN/PhoneNumber.php', - 'Faker\\Provider\\ms_MY\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Address.php', - 'Faker\\Provider\\ms_MY\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Company.php', - 'Faker\\Provider\\ms_MY\\Miscellaneous' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Miscellaneous.php', - 'Faker\\Provider\\ms_MY\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Payment.php', - 'Faker\\Provider\\ms_MY\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/Person.php', - 'Faker\\Provider\\ms_MY\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ms_MY/PhoneNumber.php', - 'Faker\\Provider\\nb_NO\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/Address.php', - 'Faker\\Provider\\nb_NO\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/Company.php', - 'Faker\\Provider\\nb_NO\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/Payment.php', - 'Faker\\Provider\\nb_NO\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/Person.php', - 'Faker\\Provider\\nb_NO\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nb_NO/PhoneNumber.php', - 'Faker\\Provider\\ne_NP\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/Address.php', - 'Faker\\Provider\\ne_NP\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/Internet.php', - 'Faker\\Provider\\ne_NP\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/Payment.php', - 'Faker\\Provider\\ne_NP\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/Person.php', - 'Faker\\Provider\\ne_NP\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ne_NP/PhoneNumber.php', - 'Faker\\Provider\\nl_BE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Address.php', - 'Faker\\Provider\\nl_BE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Company.php', - 'Faker\\Provider\\nl_BE\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Internet.php', - 'Faker\\Provider\\nl_BE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Payment.php', - 'Faker\\Provider\\nl_BE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Person.php', - 'Faker\\Provider\\nl_BE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/PhoneNumber.php', - 'Faker\\Provider\\nl_BE\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_BE/Text.php', - 'Faker\\Provider\\nl_NL\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Address.php', - 'Faker\\Provider\\nl_NL\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Color.php', - 'Faker\\Provider\\nl_NL\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Company.php', - 'Faker\\Provider\\nl_NL\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Internet.php', - 'Faker\\Provider\\nl_NL\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Payment.php', - 'Faker\\Provider\\nl_NL\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Person.php', - 'Faker\\Provider\\nl_NL\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/PhoneNumber.php', - 'Faker\\Provider\\nl_NL\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/nl_NL/Text.php', - 'Faker\\Provider\\pl_PL\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Address.php', - 'Faker\\Provider\\pl_PL\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Color.php', - 'Faker\\Provider\\pl_PL\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Company.php', - 'Faker\\Provider\\pl_PL\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Internet.php', - 'Faker\\Provider\\pl_PL\\LicensePlate' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/LicensePlate.php', - 'Faker\\Provider\\pl_PL\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Payment.php', - 'Faker\\Provider\\pl_PL\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Person.php', - 'Faker\\Provider\\pl_PL\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/PhoneNumber.php', - 'Faker\\Provider\\pl_PL\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pl_PL/Text.php', - 'Faker\\Provider\\pt_BR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Address.php', - 'Faker\\Provider\\pt_BR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Company.php', - 'Faker\\Provider\\pt_BR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Internet.php', - 'Faker\\Provider\\pt_BR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Payment.php', - 'Faker\\Provider\\pt_BR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Person.php', - 'Faker\\Provider\\pt_BR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/PhoneNumber.php', - 'Faker\\Provider\\pt_BR\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_BR/Text.php', - 'Faker\\Provider\\pt_PT\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Address.php', - 'Faker\\Provider\\pt_PT\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Company.php', - 'Faker\\Provider\\pt_PT\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Internet.php', - 'Faker\\Provider\\pt_PT\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Payment.php', - 'Faker\\Provider\\pt_PT\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/Person.php', - 'Faker\\Provider\\pt_PT\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/pt_PT/PhoneNumber.php', - 'Faker\\Provider\\ro_MD\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/Address.php', - 'Faker\\Provider\\ro_MD\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/Payment.php', - 'Faker\\Provider\\ro_MD\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/Person.php', - 'Faker\\Provider\\ro_MD\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/PhoneNumber.php', - 'Faker\\Provider\\ro_MD\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_MD/Text.php', - 'Faker\\Provider\\ro_RO\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/Address.php', - 'Faker\\Provider\\ro_RO\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/Payment.php', - 'Faker\\Provider\\ro_RO\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/Person.php', - 'Faker\\Provider\\ro_RO\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/PhoneNumber.php', - 'Faker\\Provider\\ro_RO\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ro_RO/Text.php', - 'Faker\\Provider\\ru_RU\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Address.php', - 'Faker\\Provider\\ru_RU\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Color.php', - 'Faker\\Provider\\ru_RU\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Company.php', - 'Faker\\Provider\\ru_RU\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Internet.php', - 'Faker\\Provider\\ru_RU\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Payment.php', - 'Faker\\Provider\\ru_RU\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Person.php', - 'Faker\\Provider\\ru_RU\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/PhoneNumber.php', - 'Faker\\Provider\\ru_RU\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/ru_RU/Text.php', - 'Faker\\Provider\\sk_SK\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Address.php', - 'Faker\\Provider\\sk_SK\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Company.php', - 'Faker\\Provider\\sk_SK\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Internet.php', - 'Faker\\Provider\\sk_SK\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Payment.php', - 'Faker\\Provider\\sk_SK\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/Person.php', - 'Faker\\Provider\\sk_SK\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sk_SK/PhoneNumber.php', - 'Faker\\Provider\\sl_SI\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Address.php', - 'Faker\\Provider\\sl_SI\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Company.php', - 'Faker\\Provider\\sl_SI\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Internet.php', - 'Faker\\Provider\\sl_SI\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Payment.php', - 'Faker\\Provider\\sl_SI\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/Person.php', - 'Faker\\Provider\\sl_SI\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sl_SI/PhoneNumber.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Address.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Payment.php', - 'Faker\\Provider\\sr_Cyrl_RS\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Cyrl_RS/Person.php', - 'Faker\\Provider\\sr_Latn_RS\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Address.php', - 'Faker\\Provider\\sr_Latn_RS\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Payment.php', - 'Faker\\Provider\\sr_Latn_RS\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_Latn_RS/Person.php', - 'Faker\\Provider\\sr_RS\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_RS/Address.php', - 'Faker\\Provider\\sr_RS\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_RS/Payment.php', - 'Faker\\Provider\\sr_RS\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sr_RS/Person.php', - 'Faker\\Provider\\sv_SE\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Address.php', - 'Faker\\Provider\\sv_SE\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Company.php', - 'Faker\\Provider\\sv_SE\\Municipality' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Municipality.php', - 'Faker\\Provider\\sv_SE\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Payment.php', - 'Faker\\Provider\\sv_SE\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/Person.php', - 'Faker\\Provider\\sv_SE\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/sv_SE/PhoneNumber.php', - 'Faker\\Provider\\th_TH\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Address.php', - 'Faker\\Provider\\th_TH\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Color.php', - 'Faker\\Provider\\th_TH\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Company.php', - 'Faker\\Provider\\th_TH\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Internet.php', - 'Faker\\Provider\\th_TH\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Payment.php', - 'Faker\\Provider\\th_TH\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/Person.php', - 'Faker\\Provider\\th_TH\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/th_TH/PhoneNumber.php', - 'Faker\\Provider\\tr_TR\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Address.php', - 'Faker\\Provider\\tr_TR\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Color.php', - 'Faker\\Provider\\tr_TR\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Company.php', - 'Faker\\Provider\\tr_TR\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/DateTime.php', - 'Faker\\Provider\\tr_TR\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Internet.php', - 'Faker\\Provider\\tr_TR\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Payment.php', - 'Faker\\Provider\\tr_TR\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/Person.php', - 'Faker\\Provider\\tr_TR\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/tr_TR/PhoneNumber.php', - 'Faker\\Provider\\uk_UA\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Address.php', - 'Faker\\Provider\\uk_UA\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Color.php', - 'Faker\\Provider\\uk_UA\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Company.php', - 'Faker\\Provider\\uk_UA\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Internet.php', - 'Faker\\Provider\\uk_UA\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Payment.php', - 'Faker\\Provider\\uk_UA\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Person.php', - 'Faker\\Provider\\uk_UA\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/PhoneNumber.php', - 'Faker\\Provider\\uk_UA\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/uk_UA/Text.php', - 'Faker\\Provider\\vi_VN\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/Address.php', - 'Faker\\Provider\\vi_VN\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/Color.php', - 'Faker\\Provider\\vi_VN\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/Internet.php', - 'Faker\\Provider\\vi_VN\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/Person.php', - 'Faker\\Provider\\vi_VN\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/vi_VN/PhoneNumber.php', - 'Faker\\Provider\\zh_CN\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Address.php', - 'Faker\\Provider\\zh_CN\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Color.php', - 'Faker\\Provider\\zh_CN\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Company.php', - 'Faker\\Provider\\zh_CN\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/DateTime.php', - 'Faker\\Provider\\zh_CN\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Internet.php', - 'Faker\\Provider\\zh_CN\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Payment.php', - 'Faker\\Provider\\zh_CN\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/Person.php', - 'Faker\\Provider\\zh_CN\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_CN/PhoneNumber.php', - 'Faker\\Provider\\zh_TW\\Address' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Address.php', - 'Faker\\Provider\\zh_TW\\Color' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Color.php', - 'Faker\\Provider\\zh_TW\\Company' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Company.php', - 'Faker\\Provider\\zh_TW\\DateTime' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/DateTime.php', - 'Faker\\Provider\\zh_TW\\Internet' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Internet.php', - 'Faker\\Provider\\zh_TW\\Payment' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Payment.php', - 'Faker\\Provider\\zh_TW\\Person' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Person.php', - 'Faker\\Provider\\zh_TW\\PhoneNumber' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/PhoneNumber.php', - 'Faker\\Provider\\zh_TW\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Text.php', - 'Faker\\UniqueGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/UniqueGenerator.php', - 'Faker\\ValidGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ValidGenerator.php', - 'Fidry\\CpuCoreCounter\\CpuCoreCounter' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/CpuCoreCounter.php', - 'Fidry\\CpuCoreCounter\\Diagnoser' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Diagnoser.php', - 'Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php', - 'Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php', - 'Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php', - 'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\LscpuLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\LscpuPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php', - 'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php', - 'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php', - 'Fidry\\CpuCoreCounter\\ParallelisationResult' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/ParallelisationResult.php', - 'Kint\\CallFinder' => __DIR__ . '/..' . '/kint-php/kint/src/CallFinder.php', - 'Kint\\FacadeInterface' => __DIR__ . '/..' . '/kint-php/kint/src/FacadeInterface.php', - 'Kint\\Kint' => __DIR__ . '/..' . '/kint-php/kint/src/Kint.php', - 'Kint\\Parser\\AbstractPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/AbstractPlugin.php', - 'Kint\\Parser\\ArrayLimitPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ArrayLimitPlugin.php', - 'Kint\\Parser\\ArrayObjectPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ArrayObjectPlugin.php', - 'Kint\\Parser\\Base64Plugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/Base64Plugin.php', - 'Kint\\Parser\\BinaryPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/BinaryPlugin.php', - 'Kint\\Parser\\BlacklistPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/BlacklistPlugin.php', - 'Kint\\Parser\\ClassHooksPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ClassHooksPlugin.php', - 'Kint\\Parser\\ClassMethodsPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ClassMethodsPlugin.php', - 'Kint\\Parser\\ClassStaticsPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ClassStaticsPlugin.php', - 'Kint\\Parser\\ClassStringsPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ClassStringsPlugin.php', - 'Kint\\Parser\\ClosurePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ClosurePlugin.php', - 'Kint\\Parser\\ColorPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ColorPlugin.php', - 'Kint\\Parser\\ConstructablePluginInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ConstructablePluginInterface.php', - 'Kint\\Parser\\DateTimePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/DateTimePlugin.php', - 'Kint\\Parser\\DomPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/DomPlugin.php', - 'Kint\\Parser\\EnumPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/EnumPlugin.php', - 'Kint\\Parser\\FsPathPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/FsPathPlugin.php', - 'Kint\\Parser\\HtmlPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/HtmlPlugin.php', - 'Kint\\Parser\\IteratorPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/IteratorPlugin.php', - 'Kint\\Parser\\JsonPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/JsonPlugin.php', - 'Kint\\Parser\\MicrotimePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/MicrotimePlugin.php', - 'Kint\\Parser\\MysqliPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/MysqliPlugin.php', - 'Kint\\Parser\\Parser' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/Parser.php', - 'Kint\\Parser\\PluginBeginInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/PluginBeginInterface.php', - 'Kint\\Parser\\PluginCompleteInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/PluginCompleteInterface.php', - 'Kint\\Parser\\PluginInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/PluginInterface.php', - 'Kint\\Parser\\ProfilePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ProfilePlugin.php', - 'Kint\\Parser\\ProxyPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ProxyPlugin.php', - 'Kint\\Parser\\SerializePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/SerializePlugin.php', - 'Kint\\Parser\\SimpleXMLElementPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/SimpleXMLElementPlugin.php', - 'Kint\\Parser\\SplFileInfoPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/SplFileInfoPlugin.php', - 'Kint\\Parser\\StreamPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/StreamPlugin.php', - 'Kint\\Parser\\TablePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/TablePlugin.php', - 'Kint\\Parser\\ThrowablePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ThrowablePlugin.php', - 'Kint\\Parser\\TimestampPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/TimestampPlugin.php', - 'Kint\\Parser\\ToStringPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/ToStringPlugin.php', - 'Kint\\Parser\\TracePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/TracePlugin.php', - 'Kint\\Parser\\XmlPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Parser/XmlPlugin.php', - 'Kint\\Renderer\\AbstractRenderer' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/AbstractRenderer.php', - 'Kint\\Renderer\\AssetRendererTrait' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/AssetRendererTrait.php', - 'Kint\\Renderer\\CliRenderer' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/CliRenderer.php', - 'Kint\\Renderer\\ConstructableRendererInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/ConstructableRendererInterface.php', - 'Kint\\Renderer\\PlainRenderer' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/PlainRenderer.php', - 'Kint\\Renderer\\RendererInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/RendererInterface.php', - 'Kint\\Renderer\\RichRenderer' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/RichRenderer.php', - 'Kint\\Renderer\\Rich\\AbstractPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/AbstractPlugin.php', - 'Kint\\Renderer\\Rich\\BinaryPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/BinaryPlugin.php', - 'Kint\\Renderer\\Rich\\CallableDefinitionPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/CallableDefinitionPlugin.php', - 'Kint\\Renderer\\Rich\\CallablePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/CallablePlugin.php', - 'Kint\\Renderer\\Rich\\ColorPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/ColorPlugin.php', - 'Kint\\Renderer\\Rich\\LockPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/LockPlugin.php', - 'Kint\\Renderer\\Rich\\MicrotimePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/MicrotimePlugin.php', - 'Kint\\Renderer\\Rich\\PluginInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/PluginInterface.php', - 'Kint\\Renderer\\Rich\\ProfilePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/ProfilePlugin.php', - 'Kint\\Renderer\\Rich\\SourcePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/SourcePlugin.php', - 'Kint\\Renderer\\Rich\\TabPluginInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/TabPluginInterface.php', - 'Kint\\Renderer\\Rich\\TablePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/TablePlugin.php', - 'Kint\\Renderer\\Rich\\TraceFramePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/TraceFramePlugin.php', - 'Kint\\Renderer\\Rich\\ValuePluginInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Rich/ValuePluginInterface.php', - 'Kint\\Renderer\\TextRenderer' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/TextRenderer.php', - 'Kint\\Renderer\\Text\\AbstractPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Text/AbstractPlugin.php', - 'Kint\\Renderer\\Text\\LockPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Text/LockPlugin.php', - 'Kint\\Renderer\\Text\\MicrotimePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Text/MicrotimePlugin.php', - 'Kint\\Renderer\\Text\\PluginInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Text/PluginInterface.php', - 'Kint\\Renderer\\Text\\SplFileInfoPlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Text/SplFileInfoPlugin.php', - 'Kint\\Renderer\\Text\\TracePlugin' => __DIR__ . '/..' . '/kint-php/kint/src/Renderer/Text/TracePlugin.php', - 'Kint\\Utils' => __DIR__ . '/..' . '/kint-php/kint/src/Utils.php', - 'Kint\\Value\\AbstractValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/AbstractValue.php', - 'Kint\\Value\\ArrayValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/ArrayValue.php', - 'Kint\\Value\\ClosedResourceValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/ClosedResourceValue.php', - 'Kint\\Value\\ClosureValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/ClosureValue.php', - 'Kint\\Value\\ColorValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/ColorValue.php', - 'Kint\\Value\\Context\\ArrayContext' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/ArrayContext.php', - 'Kint\\Value\\Context\\BaseContext' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/BaseContext.php', - 'Kint\\Value\\Context\\ClassConstContext' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/ClassConstContext.php', - 'Kint\\Value\\Context\\ClassDeclaredContext' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/ClassDeclaredContext.php', - 'Kint\\Value\\Context\\ClassOwnedContext' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/ClassOwnedContext.php', - 'Kint\\Value\\Context\\ContextInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/ContextInterface.php', - 'Kint\\Value\\Context\\DoubleAccessMemberContext' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/DoubleAccessMemberContext.php', - 'Kint\\Value\\Context\\MethodContext' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/MethodContext.php', - 'Kint\\Value\\Context\\PropertyContext' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/PropertyContext.php', - 'Kint\\Value\\Context\\StaticPropertyContext' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Context/StaticPropertyContext.php', - 'Kint\\Value\\DateTimeValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/DateTimeValue.php', - 'Kint\\Value\\DeclaredCallableBag' => __DIR__ . '/..' . '/kint-php/kint/src/Value/DeclaredCallableBag.php', - 'Kint\\Value\\DomNodeListValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/DomNodeListValue.php', - 'Kint\\Value\\DomNodeValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/DomNodeValue.php', - 'Kint\\Value\\EnumValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/EnumValue.php', - 'Kint\\Value\\FixedWidthValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/FixedWidthValue.php', - 'Kint\\Value\\FunctionValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/FunctionValue.php', - 'Kint\\Value\\InstanceValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/InstanceValue.php', - 'Kint\\Value\\MethodValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/MethodValue.php', - 'Kint\\Value\\MicrotimeValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/MicrotimeValue.php', - 'Kint\\Value\\ParameterBag' => __DIR__ . '/..' . '/kint-php/kint/src/Value/ParameterBag.php', - 'Kint\\Value\\ParameterHoldingTrait' => __DIR__ . '/..' . '/kint-php/kint/src/Value/ParameterHoldingTrait.php', - 'Kint\\Value\\Representation\\AbstractRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/AbstractRepresentation.php', - 'Kint\\Value\\Representation\\BinaryRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/BinaryRepresentation.php', - 'Kint\\Value\\Representation\\CallableDefinitionRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/CallableDefinitionRepresentation.php', - 'Kint\\Value\\Representation\\ColorRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/ColorRepresentation.php', - 'Kint\\Value\\Representation\\ContainerRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/ContainerRepresentation.php', - 'Kint\\Value\\Representation\\MicrotimeRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/MicrotimeRepresentation.php', - 'Kint\\Value\\Representation\\ProfileRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/ProfileRepresentation.php', - 'Kint\\Value\\Representation\\RepresentationInterface' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/RepresentationInterface.php', - 'Kint\\Value\\Representation\\SourceRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/SourceRepresentation.php', - 'Kint\\Value\\Representation\\SplFileInfoRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/SplFileInfoRepresentation.php', - 'Kint\\Value\\Representation\\StringRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/StringRepresentation.php', - 'Kint\\Value\\Representation\\TableRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/TableRepresentation.php', - 'Kint\\Value\\Representation\\ValueRepresentation' => __DIR__ . '/..' . '/kint-php/kint/src/Value/Representation/ValueRepresentation.php', - 'Kint\\Value\\ResourceValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/ResourceValue.php', - 'Kint\\Value\\SimpleXMLElementValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/SimpleXMLElementValue.php', - 'Kint\\Value\\SplFileInfoValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/SplFileInfoValue.php', - 'Kint\\Value\\StreamValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/StreamValue.php', - 'Kint\\Value\\StringValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/StringValue.php', - 'Kint\\Value\\ThrowableValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/ThrowableValue.php', - 'Kint\\Value\\TraceFrameValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/TraceFrameValue.php', - 'Kint\\Value\\TraceValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/TraceValue.php', - 'Kint\\Value\\UninitializedValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/UninitializedValue.php', - 'Kint\\Value\\UnknownValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/UnknownValue.php', - 'Kint\\Value\\VirtualValue' => __DIR__ . '/..' . '/kint-php/kint/src/Value/VirtualValue.php', - 'Laminas\\Escaper\\Escaper' => __DIR__ . '/..' . '/laminas/laminas-escaper/src/Escaper.php', - 'Laminas\\Escaper\\EscaperInterface' => __DIR__ . '/..' . '/laminas/laminas-escaper/src/EscaperInterface.php', - 'Laminas\\Escaper\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/laminas/laminas-escaper/src/Exception/ExceptionInterface.php', - 'Laminas\\Escaper\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/laminas/laminas-escaper/src/Exception/InvalidArgumentException.php', - 'Laminas\\Escaper\\Exception\\RuntimeException' => __DIR__ . '/..' . '/laminas/laminas-escaper/src/Exception/RuntimeException.php', - 'Nexus\\CsConfig\\Factory' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Factory.php', - 'Nexus\\CsConfig\\FixerGenerator' => __DIR__ . '/..' . '/nexusphp/cs-config/src/FixerGenerator.php', - 'Nexus\\CsConfig\\Fixer\\AbstractCustomFixer' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Fixer/AbstractCustomFixer.php', - 'Nexus\\CsConfig\\Fixer\\Comment\\NoCodeSeparatorCommentFixer' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Fixer/Comment/NoCodeSeparatorCommentFixer.php', - 'Nexus\\CsConfig\\Fixer\\Comment\\SpaceAfterCommentStartFixer' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Fixer/Comment/SpaceAfterCommentStartFixer.php', - 'Nexus\\CsConfig\\Ruleset\\AbstractRuleset' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/AbstractRuleset.php', - 'Nexus\\CsConfig\\Ruleset\\ConfigurableAllowedUnsupportedPhpVersionRulesetInterface' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/ConfigurableAllowedUnsupportedPhpVersionRulesetInterface.php', - 'Nexus\\CsConfig\\Ruleset\\Nexus81' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/Nexus81.php', - 'Nexus\\CsConfig\\Ruleset\\Nexus82' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/Nexus82.php', - 'Nexus\\CsConfig\\Ruleset\\Nexus83' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/Nexus83.php', - 'Nexus\\CsConfig\\Ruleset\\Nexus84' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/Nexus84.php', - 'Nexus\\CsConfig\\Ruleset\\RulesetInterface' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/RulesetInterface.php', - 'Nexus\\CsConfig\\Test\\AbstractCustomFixerTestCase' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Test/AbstractCustomFixerTestCase.php', - 'Nexus\\CsConfig\\Test\\AbstractRulesetTestCase' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Test/AbstractRulesetTestCase.php', - 'Nexus\\CsConfig\\Test\\FixerProvider' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Test/FixerProvider.php', - 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'PHPUnit\\Event\\Application\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/Finished.php', - 'PHPUnit\\Event\\Application\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/FinishedSubscriber.php', - 'PHPUnit\\Event\\Application\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/Started.php', - 'PHPUnit\\Event\\Application\\StartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Application/StartedSubscriber.php', - 'PHPUnit\\Event\\Code\\ClassMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ClassMethod.php', - 'PHPUnit\\Event\\Code\\ComparisonFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php', - 'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php', - 'PHPUnit\\Event\\Code\\IssueTrigger\\Code' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Issue/Code.php', - 'PHPUnit\\Event\\Code\\IssueTrigger\\IssueTrigger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Issue/IssueTrigger.php', - 'PHPUnit\\Event\\Code\\NoTestCaseObjectOnCallStackException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php', - 'PHPUnit\\Event\\Code\\Phpt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php', - 'PHPUnit\\Event\\Code\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Test.php', - 'PHPUnit\\Event\\Code\\TestCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php', - 'PHPUnit\\Event\\Code\\TestCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestCollectionIterator.php', - 'PHPUnit\\Event\\Code\\TestDox' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestDox.php', - 'PHPUnit\\Event\\Code\\TestDoxBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestDoxBuilder.php', - 'PHPUnit\\Event\\Code\\TestMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestMethod.php', - 'PHPUnit\\Event\\Code\\TestMethodBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php', - 'PHPUnit\\Event\\Code\\Throwable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Throwable.php', - 'PHPUnit\\Event\\Code\\ThrowableBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php', - 'PHPUnit\\Event\\CollectingDispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/CollectingDispatcher.php', - 'PHPUnit\\Event\\DeferringDispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php', - 'PHPUnit\\Event\\DirectDispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php', - 'PHPUnit\\Event\\Dispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/Dispatcher.php', - 'PHPUnit\\Event\\DispatchingEmitter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php', - 'PHPUnit\\Event\\Emitter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Emitter/Emitter.php', - 'PHPUnit\\Event\\Event' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Event.php', - 'PHPUnit\\Event\\EventAlreadyAssignedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/EventAlreadyAssignedException.php', - 'PHPUnit\\Event\\EventCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/EventCollection.php', - 'PHPUnit\\Event\\EventCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/EventCollectionIterator.php', - 'PHPUnit\\Event\\EventFacadeIsSealedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/EventFacadeIsSealedException.php', - 'PHPUnit\\Event\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/Exception.php', - 'PHPUnit\\Event\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Facade.php', - 'PHPUnit\\Event\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/InvalidArgumentException.php', - 'PHPUnit\\Event\\InvalidEventException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/InvalidEventException.php', - 'PHPUnit\\Event\\InvalidSubscriberException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/InvalidSubscriberException.php', - 'PHPUnit\\Event\\MapError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/MapError.php', - 'PHPUnit\\Event\\NoPreviousThrowableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoPreviousThrowableException.php', - 'PHPUnit\\Event\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/RuntimeException.php', - 'PHPUnit\\Event\\Runtime\\OperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Runtime/OperatingSystem.php', - 'PHPUnit\\Event\\Runtime\\PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Runtime/PHP.php', - 'PHPUnit\\Event\\Runtime\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Runtime/PHPUnit.php', - 'PHPUnit\\Event\\Runtime\\Runtime' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Runtime/Runtime.php', - 'PHPUnit\\Event\\SubscribableDispatcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Dispatcher/SubscribableDispatcher.php', - 'PHPUnit\\Event\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Subscriber.php', - 'PHPUnit\\Event\\SubscriberTypeAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/SubscriberTypeAlreadyRegisteredException.php', - 'PHPUnit\\Event\\Telemetry\\Duration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php', - 'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatus' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatus.php', - 'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\HRTime' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php', - 'PHPUnit\\Event\\Telemetry\\Info' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php', - 'PHPUnit\\Event\\Telemetry\\MemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php', - 'PHPUnit\\Event\\Telemetry\\MemoryUsage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php', - 'PHPUnit\\Event\\Telemetry\\Php81GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\Php83GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php', - 'PHPUnit\\Event\\Telemetry\\Snapshot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php', - 'PHPUnit\\Event\\Telemetry\\StopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php', - 'PHPUnit\\Event\\Telemetry\\System' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php', - 'PHPUnit\\Event\\Telemetry\\SystemMemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemMemoryMeter.php', - 'PHPUnit\\Event\\Telemetry\\SystemStopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatch.php', - 'PHPUnit\\Event\\Telemetry\\SystemStopWatchWithOffset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/SystemStopWatchWithOffset.php', - 'PHPUnit\\Event\\TestData\\DataFromDataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/DataFromDataProvider.php', - 'PHPUnit\\Event\\TestData\\DataFromTestDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/DataFromTestDependency.php', - 'PHPUnit\\Event\\TestData\\NoDataSetFromDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoDataSetFromDataProviderException.php', - 'PHPUnit\\Event\\TestData\\TestData' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestData.php', - 'PHPUnit\\Event\\TestData\\TestDataCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestDataCollection.php', - 'PHPUnit\\Event\\TestData\\TestDataCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestData/TestDataCollectionIterator.php', - 'PHPUnit\\Event\\TestRunner\\BootstrapFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinished.php', - 'PHPUnit\\Event\\TestRunner\\BootstrapFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ChildProcessFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ChildProcessFinished.php', - 'PHPUnit\\Event\\TestRunner\\ChildProcessFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ChildProcessFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ChildProcessStarted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ChildProcessStarted.php', - 'PHPUnit\\Event\\TestRunner\\ChildProcessStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ChildProcessStartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Configured' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Configured.php', - 'PHPUnit\\Event\\TestRunner\\ConfiguredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ConfiguredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\DeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggered.php', - 'PHPUnit\\Event\\TestRunner\\DeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\EventFacadeSealed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealed.php', - 'PHPUnit\\Event\\TestRunner\\EventFacadeSealedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionAborted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAborted.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionAbortedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAbortedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinished.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionStarted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php', - 'PHPUnit\\Event\\TestRunner\\ExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionBootstrapped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionBootstrapped.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionBootstrappedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionBootstrappedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPhar' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPhar.php', - 'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPharSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPharSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Finished.php', - 'PHPUnit\\Event\\TestRunner\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/FinishedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabled.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabledSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabled.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabledSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggered.php', - 'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Started.php', - 'PHPUnit\\Event\\TestRunner\\StartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/StartedSubscriber.php', - 'PHPUnit\\Event\\TestRunner\\WarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php', - 'PHPUnit\\Event\\TestRunner\\WarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Filtered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Filtered.php', - 'PHPUnit\\Event\\TestSuite\\FilteredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/FilteredSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Finished.php', - 'PHPUnit\\Event\\TestSuite\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/FinishedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Loaded' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Loaded.php', - 'PHPUnit\\Event\\TestSuite\\LoadedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/LoadedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Skipped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Skipped.php', - 'PHPUnit\\Event\\TestSuite\\SkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/SkippedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Sorted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Sorted.php', - 'PHPUnit\\Event\\TestSuite\\SortedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/SortedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/Started.php', - 'PHPUnit\\Event\\TestSuite\\StartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestSuite/StartedSubscriber.php', - 'PHPUnit\\Event\\TestSuite\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuite.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteForTestClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestClass.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteForTestMethodWithDataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestMethodWithDataProvider.php', - 'PHPUnit\\Event\\TestSuite\\TestSuiteWithName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteWithName.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\AfterLastTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\AfterTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodErrored.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php', - 'PHPUnit\\Event\\Test\\BeforeTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\ComparatorRegistered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php', - 'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php', - 'PHPUnit\\Event\\Test\\ConsideredRisky' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php', - 'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalled.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php', - 'PHPUnit\\Event\\Test\\DataProviderMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\DeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\ErrorTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php', - 'PHPUnit\\Event\\Test\\ErrorTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\Errored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Errored.php', - 'PHPUnit\\Event\\Test\\ErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/ErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\Failed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Failed.php', - 'PHPUnit\\Event\\Test\\FailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/FailedSubscriber.php', - 'PHPUnit\\Event\\Test\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Finished.php', - 'PHPUnit\\Event\\Test\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/FinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\MarkedIncomplete' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncomplete.php', - 'PHPUnit\\Event\\Test\\MarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncompleteSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForAbstractClassCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForIntersectionOfInterfacesCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectForTraitCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectForTraitCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php', - 'PHPUnit\\Event\\Test\\MockObjectFromWsdlCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\NoComparisonFailureException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoComparisonFailureException.php', - 'PHPUnit\\Event\\Test\\NoticeTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php', - 'PHPUnit\\Event\\Test\\NoticeTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PartialMockObjectCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreated.php', - 'PHPUnit\\Event\\Test\\PartialMockObjectCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\Passed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Passed.php', - 'PHPUnit\\Event\\Test\\PassedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/PassedSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpDeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\PhpDeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpNoticeTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggered.php', - 'PHPUnit\\Event\\Test\\PhpNoticeTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpWarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggered.php', - 'PHPUnit\\Event\\Test\\PhpWarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitDeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitDeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitErrorTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitErrorTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PhpunitWarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggered.php', - 'PHPUnit\\Event\\Test\\PhpunitWarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php', - 'PHPUnit\\Event\\Test\\PostConditionCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionErrored.php', - 'PHPUnit\\Event\\Test\\PostConditionErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\PostConditionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php', - 'PHPUnit\\Event\\Test\\PostConditionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php', - 'PHPUnit\\Event\\Test\\PreConditionCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalledSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionErrored.php', - 'PHPUnit\\Event\\Test\\PreConditionErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionErroredSubscriber.php', - 'PHPUnit\\Event\\Test\\PreConditionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php', - 'PHPUnit\\Event\\Test\\PreConditionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinishedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreparationFailed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailed.php', - 'PHPUnit\\Event\\Test\\PreparationFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailedSubscriber.php', - 'PHPUnit\\Event\\Test\\PreparationStarted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStarted.php', - 'PHPUnit\\Event\\Test\\PreparationStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStartedSubscriber.php', - 'PHPUnit\\Event\\Test\\Prepared' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Prepared.php', - 'PHPUnit\\Event\\Test\\PreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparedSubscriber.php', - 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutput' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php', - 'PHPUnit\\Event\\Test\\PrintedUnexpectedOutputSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutputSubscriber.php', - 'PHPUnit\\Event\\Test\\Skipped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php', - 'PHPUnit\\Event\\Test\\SkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Outcome/SkippedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestProxyCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php', - 'PHPUnit\\Event\\Test\\TestProxyCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestStubCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php', - 'PHPUnit\\Event\\Test\\TestStubCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php', - 'PHPUnit\\Event\\Test\\TestStubForIntersectionOfInterfacesCreatedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreatedSubscriber.php', - 'PHPUnit\\Event\\Test\\WarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggered.php', - 'PHPUnit\\Event\\Test\\WarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggeredSubscriber.php', - 'PHPUnit\\Event\\Tracer\\Tracer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Tracer.php', - 'PHPUnit\\Event\\TypeMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/TypeMap.php', - 'PHPUnit\\Event\\UnknownEventException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/UnknownEventException.php', - 'PHPUnit\\Event\\UnknownEventTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/UnknownEventTypeException.php', - 'PHPUnit\\Event\\UnknownSubscriberException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/UnknownSubscriberException.php', - 'PHPUnit\\Event\\UnknownSubscriberTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/UnknownSubscriberTypeException.php', - 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php', - 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php', - 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php', - 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php', - 'PHPUnit\\Framework\\Attributes\\After' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/After.php', - 'PHPUnit\\Framework\\Attributes\\AfterClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/AfterClass.php', - 'PHPUnit\\Framework\\Attributes\\BackupGlobals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/BackupGlobals.php', - 'PHPUnit\\Framework\\Attributes\\BackupStaticProperties' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/BackupStaticProperties.php', - 'PHPUnit\\Framework\\Attributes\\Before' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Before.php', - 'PHPUnit\\Framework\\Attributes\\BeforeClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/BeforeClass.php', - 'PHPUnit\\Framework\\Attributes\\CoversClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversClass.php', - 'PHPUnit\\Framework\\Attributes\\CoversFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversFunction.php', - 'PHPUnit\\Framework\\Attributes\\CoversMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversMethod.php', - 'PHPUnit\\Framework\\Attributes\\CoversNothing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversNothing.php', - 'PHPUnit\\Framework\\Attributes\\CoversTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/CoversTrait.php', - 'PHPUnit\\Framework\\Attributes\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DataProvider.php', - 'PHPUnit\\Framework\\Attributes\\DataProviderExternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DataProviderExternal.php', - 'PHPUnit\\Framework\\Attributes\\Depends' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Depends.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsExternal.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternalUsingDeepClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsExternalUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsExternalUsingShallowClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsExternalUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClass.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClassUsingDeepClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClassUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsOnClassUsingShallowClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsOnClassUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsUsingDeepClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsUsingDeepClone.php', - 'PHPUnit\\Framework\\Attributes\\DependsUsingShallowClone' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DependsUsingShallowClone.php', - 'PHPUnit\\Framework\\Attributes\\DisableReturnValueGenerationForTestDoubles' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DisableReturnValueGenerationForTestDoubles.php', - 'PHPUnit\\Framework\\Attributes\\DoesNotPerformAssertions' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/DoesNotPerformAssertions.php', - 'PHPUnit\\Framework\\Attributes\\ExcludeGlobalVariableFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/ExcludeGlobalVariableFromBackup.php', - 'PHPUnit\\Framework\\Attributes\\ExcludeStaticPropertyFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/ExcludeStaticPropertyFromBackup.php', - 'PHPUnit\\Framework\\Attributes\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Group.php', - 'PHPUnit\\Framework\\Attributes\\IgnoreDeprecations' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnoreDeprecations.php', - 'PHPUnit\\Framework\\Attributes\\IgnorePhpunitDeprecations' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnorePhpunitDeprecations.php', - 'PHPUnit\\Framework\\Attributes\\Large' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Large.php', - 'PHPUnit\\Framework\\Attributes\\Medium' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Medium.php', - 'PHPUnit\\Framework\\Attributes\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php', - 'PHPUnit\\Framework\\Attributes\\PreCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PreCondition.php', - 'PHPUnit\\Framework\\Attributes\\PreserveGlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PreserveGlobalState.php', - 'PHPUnit\\Framework\\Attributes\\RequiresFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresFunction.php', - 'PHPUnit\\Framework\\Attributes\\RequiresMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresMethod.php', - 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystem.php', - 'PHPUnit\\Framework\\Attributes\\RequiresOperatingSystemFamily' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresOperatingSystemFamily.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhp.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpExtension.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpunit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpunit.php', - 'PHPUnit\\Framework\\Attributes\\RequiresPhpunitExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresPhpunitExtension.php', - 'PHPUnit\\Framework\\Attributes\\RequiresSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RequiresSetting.php', - 'PHPUnit\\Framework\\Attributes\\RunClassInSeparateProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RunClassInSeparateProcess.php', - 'PHPUnit\\Framework\\Attributes\\RunInSeparateProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RunInSeparateProcess.php', - 'PHPUnit\\Framework\\Attributes\\RunTestsInSeparateProcesses' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/RunTestsInSeparateProcesses.php', - 'PHPUnit\\Framework\\Attributes\\Small' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Small.php', - 'PHPUnit\\Framework\\Attributes\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Test.php', - 'PHPUnit\\Framework\\Attributes\\TestDox' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/TestDox.php', - 'PHPUnit\\Framework\\Attributes\\TestWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/TestWith.php', - 'PHPUnit\\Framework\\Attributes\\TestWithJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/TestWithJson.php', - 'PHPUnit\\Framework\\Attributes\\Ticket' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php', - 'PHPUnit\\Framework\\Attributes\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php', - 'PHPUnit\\Framework\\Attributes\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php', - 'PHPUnit\\Framework\\Attributes\\UsesMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesMethod.php', - 'PHPUnit\\Framework\\Attributes\\UsesTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesTrait.php', - 'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php', - 'PHPUnit\\Framework\\ChildProcessResultProcessor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestRunner/ChildProcessResultProcessor.php', - 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php', - 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php', - 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php', - 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php', - 'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', - 'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php', - 'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php', - 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php', - 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageIsOrContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php', - 'PHPUnit\\Framework\\Constraint\\ExceptionMessageMatchesRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php', - 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php', - 'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', - 'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php', - 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php', - 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php', - 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php', - 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php', - 'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php', - 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php', - 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php', - 'PHPUnit\\Framework\\Constraint\\IsList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/IsList.php', - 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php', - 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php', - 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php', - 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php', - 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php', - 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php', - 'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', - 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php', - 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php', - 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php', - 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php', - 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php', - 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php', - 'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php', - 'PHPUnit\\Framework\\Constraint\\Operator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php', - 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php', - 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php', - 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php', - 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php', - 'PHPUnit\\Framework\\Constraint\\StringEqualsStringIgnoringLineEndings' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringEqualsStringIgnoringLineEndings.php', - 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php', - 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php', - 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php', - 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', - 'PHPUnit\\Framework\\EmptyStringException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php', - 'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Exception.php', - 'PHPUnit\\Framework\\ExecutionOrderDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php', - 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php', - 'PHPUnit\\Framework\\GeneratorNotSupportedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php', - 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTest.php', - 'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Incomplete/IncompleteTestError.php', - 'PHPUnit\\Framework\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php', - 'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php', - 'PHPUnit\\Framework\\InvalidDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php', - 'PHPUnit\\Framework\\InvalidDependencyException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php', - 'PHPUnit\\Framework\\IsolatedTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestRunner/IsolatedTestRunner.php', - 'PHPUnit\\Framework\\IsolatedTestRunnerRegistry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestRunner/IsolatedTestRunnerRegistry.php', - 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Identity.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationMocker.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationStubber.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php', - 'PHPUnit\\Framework\\MockObject\\CannotCloneTestDoubleForReadonlyClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotCloneTestDoubleForReadonlyClassException.php', - 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php', - 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php', - 'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\ErrorCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ErrorCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\GeneratedAsMockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/GeneratedAsMockObject.php', - 'PHPUnit\\Framework\\MockObject\\GeneratedAsTestStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/GeneratedAsTestStub.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\CannotUseAddMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/CannotUseAddMethodsException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\HookedProperty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedProperty.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\HookedPropertyGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/HookedPropertyGenerator.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\MockType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\OriginalConstructorInvocationRequiredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\SoapExtensionNotAvailableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownInterfaceException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownInterfaceException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTraitException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php', - 'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php', - 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php', - 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php', - 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/InvocationHandler.php', - 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php', - 'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Matcher.php', - 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php', - 'PHPUnit\\Framework\\MockObject\\Method' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/Method.php', - 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/MethodNameConstraint.php', - 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', - 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php', - 'PHPUnit\\Framework\\MockObject\\MockObjectApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php', - 'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php', - 'PHPUnit\\Framework\\MockObject\\MutableStubApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MutableStubApi.php', - 'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php', - 'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php', - 'PHPUnit\\Framework\\MockObject\\ReturnValueGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/ReturnValueGenerator.php', - 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyInvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyParameters.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvocationOrder.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastOnce.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtMostCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedCount.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/MethodName.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/Parameters.php', - 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/ParametersRule.php', - 'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', - 'PHPUnit\\Framework\\MockObject\\Runtime\\PropertyGetHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/PropertyHook/PropertyGetHook.php', - 'PHPUnit\\Framework\\MockObject\\Runtime\\PropertyHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/PropertyHook/PropertyHook.php', - 'PHPUnit\\Framework\\MockObject\\Runtime\\PropertySetHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/PropertyHook/PropertySetHook.php', - 'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/Stub.php', - 'PHPUnit\\Framework\\MockObject\\StubApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/StubApi.php', - 'PHPUnit\\Framework\\MockObject\\StubInternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/StubInternal.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Exception.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnArgument.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnCallback.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnReference.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnSelf.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnStub.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnValueMap.php', - 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Stub.php', - 'PHPUnit\\Framework\\MockObject\\TestDoubleState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/TestDoubleState.php', - 'PHPUnit\\Framework\\NativeType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/NativeType.php', - 'PHPUnit\\Framework\\NoChildTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php', - 'PHPUnit\\Framework\\PhptAssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php', - 'PHPUnit\\Framework\\ProcessIsolationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php', - 'PHPUnit\\Framework\\Reorderable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Reorderable.php', - 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php', - 'PHPUnit\\Framework\\SeparateProcessTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestRunner/SeparateProcessTestRunner.php', - 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTest.php', - 'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedTestSuiteError.php', - 'PHPUnit\\Framework\\SkippedWithMessageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Skipped/SkippedWithMessageException.php', - 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php', - 'PHPUnit\\Framework\\TestBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestBuilder.php', - 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php', - 'PHPUnit\\Framework\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php', - 'PHPUnit\\Framework\\TestSize\\Known' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Known.php', - 'PHPUnit\\Framework\\TestSize\\Large' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Large.php', - 'PHPUnit\\Framework\\TestSize\\Medium' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Medium.php', - 'PHPUnit\\Framework\\TestSize\\Small' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Small.php', - 'PHPUnit\\Framework\\TestSize\\TestSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/TestSize.php', - 'PHPUnit\\Framework\\TestSize\\Unknown' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSize/Unknown.php', - 'PHPUnit\\Framework\\TestStatus\\Deprecation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Deprecation.php', - 'PHPUnit\\Framework\\TestStatus\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Error.php', - 'PHPUnit\\Framework\\TestStatus\\Failure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Failure.php', - 'PHPUnit\\Framework\\TestStatus\\Incomplete' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Incomplete.php', - 'PHPUnit\\Framework\\TestStatus\\Known' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Known.php', - 'PHPUnit\\Framework\\TestStatus\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Notice.php', - 'PHPUnit\\Framework\\TestStatus\\Risky' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Risky.php', - 'PHPUnit\\Framework\\TestStatus\\Skipped' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Skipped.php', - 'PHPUnit\\Framework\\TestStatus\\Success' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Success.php', - 'PHPUnit\\Framework\\TestStatus\\TestStatus' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/TestStatus.php', - 'PHPUnit\\Framework\\TestStatus\\Unknown' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Unknown.php', - 'PHPUnit\\Framework\\TestStatus\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Warning.php', - 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php', - 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php', - 'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php', - 'PHPUnit\\Framework\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php', - 'PHPUnit\\Logging\\EventLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/EventLogger.php', - 'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php', - 'PHPUnit\\Logging\\JUnit\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparationFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationFailedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparationStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationStartedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestPrintedUnexpectedOutputSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPrintedUnexpectedOutputSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestRunnerExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Logging\\JUnit\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TeamCityLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php', - 'PHPUnit\\Logging\\TeamCity\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestRunnerExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteBeforeFirstTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteBeforeFirstTestMethodErroredSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\Logging\\TeamCity\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\HtmlRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php', - 'PHPUnit\\Logging\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php', - 'PHPUnit\\Logging\\TestDox\\PlainTextRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php', - 'PHPUnit\\Logging\\TestDox\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestPassedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php', - 'PHPUnit\\Logging\\TestDox\\TestResultCollector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php', - 'PHPUnit\\Logging\\TestDox\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\Metadata\\After' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/After.php', - 'PHPUnit\\Metadata\\AfterClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/AfterClass.php', - 'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php', - 'PHPUnit\\Metadata\\Annotation\\Parser\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php', - 'PHPUnit\\Metadata\\AnnotationsAreNotSupportedForInternalClassesException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php', - 'PHPUnit\\Metadata\\Api\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php', - 'PHPUnit\\Metadata\\Api\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/DataProvider.php', - 'PHPUnit\\Metadata\\Api\\Dependencies' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/Dependencies.php', - 'PHPUnit\\Metadata\\Api\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/Groups.php', - 'PHPUnit\\Metadata\\Api\\HookMethods' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/HookMethods.php', - 'PHPUnit\\Metadata\\Api\\Requirements' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Api/Requirements.php', - 'PHPUnit\\Metadata\\BackupGlobals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BackupGlobals.php', - 'PHPUnit\\Metadata\\BackupStaticProperties' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BackupStaticProperties.php', - 'PHPUnit\\Metadata\\Before' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Before.php', - 'PHPUnit\\Metadata\\BeforeClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/BeforeClass.php', - 'PHPUnit\\Metadata\\Covers' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Covers.php', - 'PHPUnit\\Metadata\\CoversClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversClass.php', - 'PHPUnit\\Metadata\\CoversDefaultClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversDefaultClass.php', - 'PHPUnit\\Metadata\\CoversFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversFunction.php', - 'PHPUnit\\Metadata\\CoversMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversMethod.php', - 'PHPUnit\\Metadata\\CoversNothing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversNothing.php', - 'PHPUnit\\Metadata\\CoversTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/CoversTrait.php', - 'PHPUnit\\Metadata\\DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DataProvider.php', - 'PHPUnit\\Metadata\\DependsOnClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DependsOnClass.php', - 'PHPUnit\\Metadata\\DependsOnMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DependsOnMethod.php', - 'PHPUnit\\Metadata\\DisableReturnValueGenerationForTestDoubles' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DisableReturnValueGenerationForTestDoubles.php', - 'PHPUnit\\Metadata\\DoesNotPerformAssertions' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/DoesNotPerformAssertions.php', - 'PHPUnit\\Metadata\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/Exception.php', - 'PHPUnit\\Metadata\\ExcludeGlobalVariableFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php', - 'PHPUnit\\Metadata\\ExcludeStaticPropertyFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php', - 'PHPUnit\\Metadata\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Group.php', - 'PHPUnit\\Metadata\\IgnoreDeprecations' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnoreDeprecations.php', - 'PHPUnit\\Metadata\\IgnorePhpunitDeprecations' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnorePhpunitDeprecations.php', - 'PHPUnit\\Metadata\\InvalidAttributeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/InvalidAttributeException.php', - 'PHPUnit\\Metadata\\InvalidVersionRequirementException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php', - 'PHPUnit\\Metadata\\Metadata' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Metadata.php', - 'PHPUnit\\Metadata\\MetadataCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollection.php', - 'PHPUnit\\Metadata\\MetadataCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php', - 'PHPUnit\\Metadata\\NoVersionRequirementException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php', - 'PHPUnit\\Metadata\\Parser\\AnnotationParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php', - 'PHPUnit\\Metadata\\Parser\\AttributeParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php', - 'PHPUnit\\Metadata\\Parser\\CachingParser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/CachingParser.php', - 'PHPUnit\\Metadata\\Parser\\Parser' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Parser.php', - 'PHPUnit\\Metadata\\Parser\\ParserChain' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/ParserChain.php', - 'PHPUnit\\Metadata\\Parser\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Registry.php', - 'PHPUnit\\Metadata\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PostCondition.php', - 'PHPUnit\\Metadata\\PreCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PreCondition.php', - 'PHPUnit\\Metadata\\PreserveGlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/PreserveGlobalState.php', - 'PHPUnit\\Metadata\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php', - 'PHPUnit\\Metadata\\RequiresFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresFunction.php', - 'PHPUnit\\Metadata\\RequiresMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresMethod.php', - 'PHPUnit\\Metadata\\RequiresOperatingSystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php', - 'PHPUnit\\Metadata\\RequiresOperatingSystemFamily' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresOperatingSystemFamily.php', - 'PHPUnit\\Metadata\\RequiresPhp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresPhp.php', - 'PHPUnit\\Metadata\\RequiresPhpExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresPhpExtension.php', - 'PHPUnit\\Metadata\\RequiresPhpunit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresPhpunit.php', - 'PHPUnit\\Metadata\\RequiresPhpunitExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresPhpunitExtension.php', - 'PHPUnit\\Metadata\\RequiresSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RequiresSetting.php', - 'PHPUnit\\Metadata\\RunClassInSeparateProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RunClassInSeparateProcess.php', - 'PHPUnit\\Metadata\\RunInSeparateProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RunInSeparateProcess.php', - 'PHPUnit\\Metadata\\RunTestsInSeparateProcesses' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/RunTestsInSeparateProcesses.php', - 'PHPUnit\\Metadata\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Test.php', - 'PHPUnit\\Metadata\\TestDox' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/TestDox.php', - 'PHPUnit\\Metadata\\TestWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/TestWith.php', - 'PHPUnit\\Metadata\\Uses' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Uses.php', - 'PHPUnit\\Metadata\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesClass.php', - 'PHPUnit\\Metadata\\UsesDefaultClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesDefaultClass.php', - 'PHPUnit\\Metadata\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesFunction.php', - 'PHPUnit\\Metadata\\UsesMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesMethod.php', - 'PHPUnit\\Metadata\\UsesTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/UsesTrait.php', - 'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php', - 'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php', - 'PHPUnit\\Metadata\\Version\\Requirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/Requirement.php', - 'PHPUnit\\Metadata\\WithoutErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/WithoutErrorHandler.php', - 'PHPUnit\\Runner\\Baseline\\Baseline' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Baseline.php', - 'PHPUnit\\Runner\\Baseline\\CannotLoadBaselineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php', - 'PHPUnit\\Runner\\Baseline\\CannotWriteBaselineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Exception/CannotWriteBaselineException.php', - 'PHPUnit\\Runner\\Baseline\\FileDoesNotHaveLineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php', - 'PHPUnit\\Runner\\Baseline\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Generator.php', - 'PHPUnit\\Runner\\Baseline\\Issue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Issue.php', - 'PHPUnit\\Runner\\Baseline\\Reader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Reader.php', - 'PHPUnit\\Runner\\Baseline\\RelativePathCalculator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php', - 'PHPUnit\\Runner\\Baseline\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\Runner\\Baseline\\Writer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Writer.php', - 'PHPUnit\\Runner\\ClassCannotBeFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php', - 'PHPUnit\\Runner\\ClassDoesNotExtendTestCaseException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php', - 'PHPUnit\\Runner\\ClassIsAbstractException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php', - 'PHPUnit\\Runner\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/CodeCoverage.php', - 'PHPUnit\\Runner\\CodeCoverageFileExistsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/CodeCoverageFileExistsException.php', - 'PHPUnit\\Runner\\DeprecationCollector\\Collector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DeprecationCollector/Collector.php', - 'PHPUnit\\Runner\\DeprecationCollector\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DeprecationCollector/Facade.php', - 'PHPUnit\\Runner\\DeprecationCollector\\InIsolationCollector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DeprecationCollector/InIsolationCollector.php', - 'PHPUnit\\Runner\\DeprecationCollector\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\DeprecationCollector\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Runner\\DeprecationCollector\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\Runner\\DirectoryDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/DirectoryDoesNotExistException.php', - 'PHPUnit\\Runner\\ErrorException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ErrorException.php', - 'PHPUnit\\Runner\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ErrorHandler.php', - 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/Exception.php', - 'PHPUnit\\Runner\\Extension\\Extension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/Extension.php', - 'PHPUnit\\Runner\\Extension\\ExtensionBootstrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php', - 'PHPUnit\\Runner\\Extension\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/Facade.php', - 'PHPUnit\\Runner\\Extension\\ParameterCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ParameterCollection.php', - 'PHPUnit\\Runner\\Extension\\PharLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php', - 'PHPUnit\\Runner\\FileDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php', - 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\ExcludeNameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeNameFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php', - 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\IncludeNameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeNameFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php', - 'PHPUnit\\Runner\\Filter\\TestIdFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php', - 'PHPUnit\\Runner\\GarbageCollection\\ExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\ExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\GarbageCollectionHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php', - 'PHPUnit\\Runner\\GarbageCollection\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\GarbageCollection\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Runner\\HookMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/HookMethod/HookMethod.php', - 'PHPUnit\\Runner\\HookMethodCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/HookMethod/HookMethodCollection.php', - 'PHPUnit\\Runner\\InvalidOrderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php', - 'PHPUnit\\Runner\\InvalidPhptFileException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php', - 'PHPUnit\\Runner\\ParameterDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php', - 'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php', - 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PHPT/PhptTestCase.php', - 'PHPUnit\\Runner\\ResultCache\\DefaultResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\NullResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCacheHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php', - 'PHPUnit\\Runner\\ResultCache\\ResultCacheId' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/ResultCacheId.php', - 'PHPUnit\\Runner\\ResultCache\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\Runner\\ResultCache\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', - 'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', - 'PHPUnit\\Runner\\UnsupportedPhptSectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php', - 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php', - 'PHPUnit\\TestRunner\\IssueFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/IssueFilter.php', - 'PHPUnit\\TestRunner\\TestResult\\AfterTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/AfterTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\BeforeTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\Collector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Collector.php', - 'PHPUnit\\TestRunner\\TestResult\\ExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Facade.php', - 'PHPUnit\\TestRunner\\TestResult\\Issues\\Issue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Issue.php', - 'PHPUnit\\TestRunner\\TestResult\\PassedTests' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/PassedTests.php', - 'PHPUnit\\TestRunner\\TestResult\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/TestResult.php', - 'PHPUnit\\TestRunner\\TestResult\\TestRunnerTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestRunnerTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\TestRunner\\TestResult\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\TextUI\\Application' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Application.php', - 'PHPUnit\\TextUI\\CannotOpenSocketException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/CannotOpenSocketException.php', - 'PHPUnit\\TextUI\\CliArguments\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php', - 'PHPUnit\\TextUI\\CliArguments\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php', - 'PHPUnit\\TextUI\\CliArguments\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php', - 'PHPUnit\\TextUI\\CliArguments\\XmlConfigurationFileFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php', - 'PHPUnit\\TextUI\\Command\\AtLeastVersionCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php', - 'PHPUnit\\TextUI\\Command\\CheckPhpConfigurationCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/CheckPhpConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Command.php', - 'PHPUnit\\TextUI\\Command\\GenerateConfigurationCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\ListGroupsCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestFilesCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestFilesCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestSuitesCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestsAsTextCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php', - 'PHPUnit\\TextUI\\Command\\ListTestsAsXmlCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php', - 'PHPUnit\\TextUI\\Command\\MigrateConfigurationCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php', - 'PHPUnit\\TextUI\\Command\\Result' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Result.php', - 'PHPUnit\\TextUI\\Command\\ShowHelpCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php', - 'PHPUnit\\TextUI\\Command\\ShowVersionCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php', - 'PHPUnit\\TextUI\\Command\\VersionCheckCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php', - 'PHPUnit\\TextUI\\Command\\WarmCodeCoverageCacheCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php', - 'PHPUnit\\TextUI\\Configuration\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Builder.php', - 'PHPUnit\\TextUI\\Configuration\\CodeCoverageFilterRegistry' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php', - 'PHPUnit\\TextUI\\Configuration\\CodeCoverageReportNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Configuration.php', - 'PHPUnit\\TextUI\\Configuration\\ConfigurationCannotBeBuiltException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php', - 'PHPUnit\\TextUI\\Configuration\\Constant' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Constant.php', - 'PHPUnit\\TextUI\\Configuration\\ConstantCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollection.php', - 'PHPUnit\\TextUI\\Configuration\\ConstantCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Directory.php', - 'PHPUnit\\TextUI\\Configuration\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrap' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrap.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrapCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollection.php', - 'PHPUnit\\TextUI\\Configuration\\ExtensionBootstrapCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\File' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/File.php', - 'PHPUnit\\TextUI\\Configuration\\FileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollection.php', - 'PHPUnit\\TextUI\\Configuration\\FileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectory.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\FilterDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\FilterNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php', - 'PHPUnit\\TextUI\\Configuration\\GroupCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php', - 'PHPUnit\\TextUI\\Configuration\\GroupCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\IniSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php', - 'PHPUnit\\TextUI\\Configuration\\IniSettingCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php', - 'PHPUnit\\TextUI\\Configuration\\IniSettingCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\LoggingNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\Merger' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Merger.php', - 'PHPUnit\\TextUI\\Configuration\\NoBaselineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php', - 'PHPUnit\\TextUI\\Configuration\\NoBootstrapException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCacheDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\NoConfigurationFileException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCoverageCacheDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\NoCustomCssFileException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php', - 'PHPUnit\\TextUI\\Configuration\\NoDefaultTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php', - 'PHPUnit\\TextUI\\Configuration\\NoPharExtensionDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php', - 'PHPUnit\\TextUI\\Configuration\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php', - 'PHPUnit\\TextUI\\Configuration\\PhpHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php', - 'PHPUnit\\TextUI\\Configuration\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Registry.php', - 'PHPUnit\\TextUI\\Configuration\\Source' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php', - 'PHPUnit\\TextUI\\Configuration\\SourceFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php', - 'PHPUnit\\TextUI\\Configuration\\SourceMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php', - 'PHPUnit\\TextUI\\Configuration\\SpecificDeprecationToStopOnNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/SpecificDeprecationToStopOnNotConfiguredException.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\TestFile' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFile.php', - 'PHPUnit\\TextUI\\Configuration\\TestFileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestFileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollection.php', - 'PHPUnit\\TextUI\\Configuration\\TestSuiteCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollectionIterator.php', - 'PHPUnit\\TextUI\\Configuration\\Variable' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Variable.php', - 'PHPUnit\\TextUI\\Configuration\\VariableCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php', - 'PHPUnit\\TextUI\\Configuration\\VariableCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php', - 'PHPUnit\\TextUI\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/Exception.php', - 'PHPUnit\\TextUI\\Help' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Help.php', - 'PHPUnit\\TextUI\\InvalidSocketException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php', - 'PHPUnit\\TextUI\\Output\\DefaultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\BeforeTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\ProgressPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSuiteSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSuiteSkippedSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php', - 'PHPUnit\\TextUI\\Output\\Default\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php', - 'PHPUnit\\TextUI\\Output\\Default\\UnexpectedOutputPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/UnexpectedOutputPrinter.php', - 'PHPUnit\\TextUI\\Output\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Facade.php', - 'PHPUnit\\TextUI\\Output\\NullPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php', - 'PHPUnit\\TextUI\\Output\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php', - 'PHPUnit\\TextUI\\Output\\SummaryPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php', - 'PHPUnit\\TextUI\\Output\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php', - 'PHPUnit\\TextUI\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php', - 'PHPUnit\\TextUI\\ShellExitCodeCalculator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php', - 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php', - 'PHPUnit\\TextUI\\TestFileNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php', - 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php', - 'PHPUnit\\TextUI\\TestSuiteFilterProcessor' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CannotFindSchemaException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\DefaultConfiguration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\FailedSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCacheDirectoryAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\LoadedFromFileConfiguration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveCoverageDirectoriesToSource' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutTodoAnnotatedTestsAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheResultFileAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveConversionToExceptionsAttributes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCoverageElementCacheDirectoryAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCoverageElementProcessUncoveredFilesAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveListeners' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLoggingElements' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveNoInteractionAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemovePrinterAttributes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveRegisterMockObjectsFromTestArgumentsRecursivelyAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveRegisterMockObjectsFromTestArgumentsRecursivelyAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveTestDoxGroupsElement' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveTestSuiteLoaderAttributes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveVerboseAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameBackupStaticAttributesAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameBeStrictAboutCoversAnnotationAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\RenameForceCoversAnnotationAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ReplaceRestrictDeprecationsWithIgnoreDeprecations' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ReplaceRestrictDeprecationsWithIgnoreDeprecations.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetector' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SnapshotNodeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\SuccessfulSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php', - 'PHPUnit\\Util\\Cloner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Cloner.php', - 'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php', - 'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/Exception.php', - 'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.php', - 'PHPUnit\\Util\\Exporter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exporter.php', - 'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php', - 'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php', - 'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php', - 'PHPUnit\\Util\\Http\\Downloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Http/Downloader.php', - 'PHPUnit\\Util\\Http\\PhpDownloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Http/PhpDownloader.php', - 'PHPUnit\\Util\\InvalidDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php', - 'PHPUnit\\Util\\InvalidJsonException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php', - 'PHPUnit\\Util\\InvalidVersionOperatorException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php', - 'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php', - 'PHPUnit\\Util\\PHP\\DefaultJobRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultJobRunner.php', - 'PHPUnit\\Util\\PHP\\Job' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Job.php', - 'PHPUnit\\Util\\PHP\\JobRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/JobRunner.php', - 'PHPUnit\\Util\\PHP\\JobRunnerRegistry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/JobRunnerRegistry.php', - 'PHPUnit\\Util\\PHP\\PhpProcessException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/PhpProcessException.php', - 'PHPUnit\\Util\\PHP\\Result' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Result.php', - 'PHPUnit\\Util\\Reflection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Reflection.php', - 'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php', - 'PHPUnit\\Util\\ThrowableToStringMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ThrowableToStringMapper.php', - 'PHPUnit\\Util\\VersionComparisonOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php', - 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Xml.php', - 'PHPUnit\\Util\\Xml\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Loader.php', - 'PHPUnit\\Util\\Xml\\XmlException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/XmlException.php', - 'Pdo\\Dblib' => __DIR__ . '/..' . '/symfony/polyfill-php84/Resources/stubs/Pdo/Dblib.php', - 'Pdo\\Firebird' => __DIR__ . '/..' . '/symfony/polyfill-php84/Resources/stubs/Pdo/Firebird.php', - 'Pdo\\Mysql' => __DIR__ . '/..' . '/symfony/polyfill-php84/Resources/stubs/Pdo/Mysql.php', - 'Pdo\\Odbc' => __DIR__ . '/..' . '/symfony/polyfill-php84/Resources/stubs/Pdo/Odbc.php', - 'Pdo\\Pgsql' => __DIR__ . '/..' . '/symfony/polyfill-php84/Resources/stubs/Pdo/Pgsql.php', - 'Pdo\\Sqlite' => __DIR__ . '/..' . '/symfony/polyfill-php84/Resources/stubs/Pdo/Sqlite.php', - 'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php', - 'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php', - 'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php', - 'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php', - 'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php', - 'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php', - 'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php', - 'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php', - 'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php', - 'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php', - 'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php', - 'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php', - 'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php', - 'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php', - 'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php', - 'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php', - 'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php', - 'PharIo\\Manifest\\ElementCollectionException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ElementCollectionException.php', - 'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php', - 'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php', - 'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php', - 'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php', - 'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php', - 'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php', - 'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php', - 'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php', - 'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php', - 'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php', - 'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php', - 'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php', - 'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php', - 'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php', - 'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php', - 'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php', - 'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php', - 'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php', - 'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php', - 'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php', - 'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php', - 'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php', - 'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php', - 'PharIo\\Manifest\\NoEmailAddressException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/NoEmailAddressException.php', - 'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php', - 'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php', - 'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php', - 'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php', - 'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php', - 'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php', - 'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php', - 'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php', - 'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php', - 'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AbstractVersionConstraint.php', - 'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php', - 'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AnyVersionConstraint.php', - 'PharIo\\Version\\BuildMetaData' => __DIR__ . '/..' . '/phar-io/version/src/BuildMetaData.php', - 'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/ExactVersionConstraint.php', - 'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/Exception.php', - 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php', - 'PharIo\\Version\\InvalidPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php', - 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidVersionException.php', - 'PharIo\\Version\\NoBuildMetaDataException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/NoBuildMetaDataException.php', - 'PharIo\\Version\\NoPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php', - 'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php', - 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php', - 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', - 'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php', - 'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php', - 'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php', - 'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/VersionConstraint.php', - 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php', - 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php', - 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php', - 'PhpCsFixer\\AbstractDoctrineAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php', - 'PhpCsFixer\\AbstractFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFixer.php', - 'PhpCsFixer\\AbstractFopenFlagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php', - 'PhpCsFixer\\AbstractFunctionReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php', - 'PhpCsFixer\\AbstractNoUselessElseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php', - 'PhpCsFixer\\AbstractPhpdocToTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php', - 'PhpCsFixer\\AbstractPhpdocTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php', - 'PhpCsFixer\\AbstractProxyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php', - 'PhpCsFixer\\Cache\\Cache' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Cache.php', - 'PhpCsFixer\\Cache\\CacheInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php', - 'PhpCsFixer\\Cache\\CacheManagerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php', - 'PhpCsFixer\\Cache\\Directory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Directory.php', - 'PhpCsFixer\\Cache\\DirectoryInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php', - 'PhpCsFixer\\Cache\\FileCacheManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php', - 'PhpCsFixer\\Cache\\FileHandler' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php', - 'PhpCsFixer\\Cache\\FileHandlerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php', - 'PhpCsFixer\\Cache\\NullCacheManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php', - 'PhpCsFixer\\Cache\\Signature' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Signature.php', - 'PhpCsFixer\\Cache\\SignatureInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php', - 'PhpCsFixer\\ComposerJsonReader' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ComposerJsonReader.php', - 'PhpCsFixer\\Config' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Config.php', - 'PhpCsFixer\\ConfigInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigInterface.php', - 'PhpCsFixer\\Config\\NullRuleCustomisationPolicy' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Config/NullRuleCustomisationPolicy.php', - 'PhpCsFixer\\Config\\RuleCustomisationPolicyAwareConfigInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyAwareConfigInterface.php', - 'PhpCsFixer\\Config\\RuleCustomisationPolicyInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyInterface.php', - 'PhpCsFixer\\ConfigurationException\\InvalidConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\InvalidFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\InvalidForEnvFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\RequiredFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\UnresolvableAutoRuleSetConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/UnresolvableAutoRuleSetConfigurationException.php', - 'PhpCsFixer\\Console\\Application' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Application.php', - 'PhpCsFixer\\Console\\Command\\CheckCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php', - 'PhpCsFixer\\Console\\Command\\DescribeCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php', - 'PhpCsFixer\\Console\\Command\\DescribeNameNotFoundException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php', - 'PhpCsFixer\\Console\\Command\\FixCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php', - 'PhpCsFixer\\Console\\Command\\FixCommandExitStatusCalculator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php', - 'PhpCsFixer\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php', - 'PhpCsFixer\\Console\\Command\\InitCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/InitCommand.php', - 'PhpCsFixer\\Console\\Command\\ListFilesCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php', - 'PhpCsFixer\\Console\\Command\\ListRulesCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/ListRulesCommand.php', - 'PhpCsFixer\\Console\\Command\\ListSetsCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php', - 'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php', - 'PhpCsFixer\\Console\\Command\\WorkerCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/WorkerCommand.php', - 'PhpCsFixer\\Console\\ConfigurationResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php', - 'PhpCsFixer\\Console\\Output\\ErrorOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php', - 'PhpCsFixer\\Console\\Output\\OutputContext' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php', - 'PhpCsFixer\\Console\\Output\\Progress\\DotsOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\NullOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\PercentageBarOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputType' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\CheckstyleReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\GitlabReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\JsonReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\JunitReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReportSummary' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\TextReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\XmlReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\JsonReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\ReportSummary' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\ReporterFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\ReporterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\ListRulesReport\\TextReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/TextReporter.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\JsonReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReportSummary' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\TextReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php', - 'PhpCsFixer\\Console\\SelfUpdate\\GithubClient' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php', - 'PhpCsFixer\\Console\\SelfUpdate\\GithubClientInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php', - 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionChecker' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php', - 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionCheckerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php', - 'PhpCsFixer\\Console\\WarningsDetector' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php', - 'PhpCsFixer\\CustomRulesetsAwareConfigInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/CustomRulesetsAwareConfigInterface.php', - 'PhpCsFixer\\Differ\\DiffConsoleFormatter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php', - 'PhpCsFixer\\Differ\\DifferInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php', - 'PhpCsFixer\\Differ\\FullDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php', - 'PhpCsFixer\\Differ\\NullDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php', - 'PhpCsFixer\\Differ\\UnifiedDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php', - 'PhpCsFixer\\DocBlock\\Annotation' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php', - 'PhpCsFixer\\DocBlock\\DocBlock' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php', - 'PhpCsFixer\\DocBlock\\Line' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Line.php', - 'PhpCsFixer\\DocBlock\\ShortDescription' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php', - 'PhpCsFixer\\DocBlock\\Tag' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php', - 'PhpCsFixer\\DocBlock\\TagComparator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php', - 'PhpCsFixer\\DocBlock\\TypeExpression' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php', - 'PhpCsFixer\\Doctrine\\Annotation\\DocLexer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php', - 'PhpCsFixer\\Doctrine\\Annotation\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php', - 'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php', - 'PhpCsFixer\\Documentation\\DocumentationLocator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php', - 'PhpCsFixer\\Documentation\\DocumentationTag' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTag.php', - 'PhpCsFixer\\Documentation\\DocumentationTagGenerator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagGenerator.php', - 'PhpCsFixer\\Documentation\\DocumentationTagType' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagType.php', - 'PhpCsFixer\\Documentation\\FixerDocumentGenerator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php', - 'PhpCsFixer\\Documentation\\RstUtils' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/RstUtils.php', - 'PhpCsFixer\\Documentation\\RuleSetDocumentationGenerator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/RuleSetDocumentationGenerator.php', - 'PhpCsFixer\\Error\\Error' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Error/Error.php', - 'PhpCsFixer\\Error\\ErrorsManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php', - 'PhpCsFixer\\Error\\SourceExceptionFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Error/SourceExceptionFactory.php', - 'PhpCsFixer\\ExecutorWithoutErrorHandler' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandler.php', - 'PhpCsFixer\\ExecutorWithoutErrorHandlerException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandlerException.php', - 'PhpCsFixer\\FileReader' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FileReader.php', - 'PhpCsFixer\\FileRemoval' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FileRemoval.php', - 'PhpCsFixer\\Finder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Finder.php', - 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOptionBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php', - 'PhpCsFixer\\FixerConfiguration\\AllowedValueSubset' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php', - 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php', - 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionSorter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionSorter.php', - 'PhpCsFixer\\FixerConfiguration\\InvalidOptionsForEnvException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php', - 'PhpCsFixer\\FixerDefinition\\CodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php', - 'PhpCsFixer\\FixerDefinition\\CodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php', - 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\FixerDefinition' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php', - 'PhpCsFixer\\FixerDefinition\\FixerDefinitionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecification' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php', - 'PhpCsFixer\\FixerFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFactory.php', - 'PhpCsFixer\\FixerNameValidator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php', - 'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php', - 'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php', - 'PhpCsFixer\\Fixer\\AbstractShortOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractShortOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\ArrayPushFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ArrayPushFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\BacktickToShellExecFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\EregToPregFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\MbStrFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\ModernizeStrposFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoAliasFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoAliasLanguageConstructCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasLanguageConstructCallFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoMixedEchoPrintFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\PowToExponentiationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\RandomApiMigrationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\SetTypeToCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\ArraySyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoMultilineWhitespaceAroundDoubleArrowFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceInEmptyArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceInEmptyArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\ReturnToYieldFromFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeBlockNoSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeBlockNoSpacesFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\GeneralAttributeRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/GeneralAttributeRemoveFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\OrderedAttributesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\CurlyBracesPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NoMultipleStatementsPerLineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NoTrailingCommaInSinglelineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NumericLiteralSeparatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\OctalNotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\PsrAutoloadingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\SingleLineEmptyBodyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\ClassReferenceNameCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\IntegerLiteralCaseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\LowercaseKeywordsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\LowercaseStaticReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\MagicConstantCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\MagicMethodCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionTypeDeclarationCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeTypeDeclarationCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\CastSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\LowercaseCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\ModernizeTypesCastingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\NoShortBoolCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\NoUnsetCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\ShortScalarCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ClassAttributesSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ClassDefinitionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalInternalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalPublicMethodForAbstractClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ModernSerializationMethodsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModernSerializationMethodsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ModifierKeywordsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModifierKeywordsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoBlankLinesAfterClassOpeningFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoNullPropertyInitializationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoPhp4ConstructorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoRedundantReadonlyPropertyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoRedundantReadonlyPropertyFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoUnneededFinalMethodFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTraitsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\PhpdocReadonlyClassCommentToKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/PhpdocReadonlyClassCommentToKeywordFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SingleClassElementPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SingleTraitInsertPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\StaticPrivateMethodFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StaticPrivateMethodFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\StringableForToStringFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StringableForToStringFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\VisibilityRequiredFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php', - 'PhpCsFixer\\Fixer\\ClassUsage\\DateTimeImmutableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\CommentToPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\HeaderCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\MultilineCommentOpeningClosingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\NoEmptyCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\NoTrailingWhitespaceInCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentSpacingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentSpacingFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php', - 'PhpCsFixer\\Fixer\\ConfigurableFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php', - 'PhpCsFixer\\Fixer\\ConfigurableFixerTrait' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerTrait.php', - 'PhpCsFixer\\Fixer\\ConstantNotation\\NativeConstantInvocationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureContinuationPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureContinuationPositionFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ElseifFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopBodyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopBodyFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopConditionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopConditionFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\IncludeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoAlternativeSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoBreakCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoSuperfluousElseifFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoTrailingCommaInListCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededControlParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededCurlyBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUselessElseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SimplifiedIfReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SimplifiedIfReturnFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSemicolonToColonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchContinueToBreakFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchContinueToBreakFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\TrailingCommaInMultilineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\YodaStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php', - 'PhpCsFixer\\Fixer\\DeprecatedFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php', - 'PhpCsFixer\\Fixer\\DocBlockAnnotationTrait' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DocBlockAnnotationTrait.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationArrayAssignmentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php', - 'PhpCsFixer\\Fixer\\ExperimentalFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ExperimentalFixerInterface.php', - 'PhpCsFixer\\Fixer\\FixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\CombineNestedDirnameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\DateTimeCreateFromFormatCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/DateTimeCreateFromFormatCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionTypehintSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\ImplodeCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\LambdaNotUsedImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/LambdaNotUsedImportFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\MethodArgumentSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\MultilinePromotedPropertiesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MultilinePromotedPropertiesFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NativeFunctionInvocationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoSpacesAfterFunctionNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoTrailingCommaInSinglelineFunctionCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoTrailingCommaInSinglelineFunctionCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUnreachableDefaultArgumentValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUselessPrintfFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessPrintfFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUselessSprintfFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessSprintfFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NullableTypeDeclarationForDefaultNullValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToParamTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToPropertyTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToPropertyTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToReturnTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\RegularCallableCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/RegularCallableCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\ReturnTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\SingleLineThrowFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\StaticLambdaFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\UseArrowFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/UseArrowFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\VoidReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php', - 'PhpCsFixer\\Fixer\\Import\\FullyQualifiedStrictTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php', - 'PhpCsFixer\\Fixer\\Import\\GlobalNamespaceImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php', - 'PhpCsFixer\\Fixer\\Import\\GroupImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GroupImportFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoLeadingImportSlashFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoUnneededImportAliasFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnneededImportAliasFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoUnusedImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php', - 'PhpCsFixer\\Fixer\\Import\\OrderedImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php', - 'PhpCsFixer\\Fixer\\Import\\SingleImportPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\Import\\SingleLineAfterImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php', - 'PhpCsFixer\\Fixer\\IndentationTrait' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/IndentationTrait.php', - 'PhpCsFixer\\Fixer\\InternalFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/InternalFixerInterface.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveIssetsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveUnsetsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareEqualNormalizeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DirConstantFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ErrorSuppressionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ExplicitIndirectVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\FunctionToConstantFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\GetClassToClassKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\NullableTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAfterConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAroundConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php', - 'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\CleanNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\SingleBlankLineBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\Naming\\NoHomoglyphNamesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\AssignNullCoalescingToCoalesceEqualFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AssignNullCoalescingToCoalesceEqualFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\BinaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\ConcatSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\IncrementStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\LogicalOperatorsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\LongToShorthandOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LongToShorthandOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewExpressionParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewExpressionParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewWithBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewWithParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoSpaceAroundDoubleColonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoSpaceAroundDoubleColonFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoUselessConcatOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessConcatOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoUselessNullsafeOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessNullsafeOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSuccessorSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\ObjectOperatorWithoutWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\OperatorLinebreakFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/OperatorLinebreakFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\StandardizeIncrementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\StandardizeNotEqualsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryToElvisOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToElvisOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryToNullCoalescingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\UnaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\BlankLineAfterOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\EchoTagSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/EchoTagSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\FullOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\LinebreakAfterOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\NoClosingTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAssertNewNamesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAssertNewNamesFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAttributesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAttributesFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderMethodOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderMethodOrderFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertInternalTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitExpectationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitFqcnAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitInternalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMethodCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockShortWillReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNamespacedFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNoExpectationAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSetUpTearDownVisibilityFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSizeClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitStrictFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTargetVersion' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestCaseStaticMethodCallsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestClassRequiresCoversFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\AlignMultilineCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocAnnotationRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocTagRenameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocTagRenameFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoBlankLinesAfterPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoEmptyPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoSuperfluousPhpdocTagsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAddMissingParamAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAlignFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAnnotationWithoutDotFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocArrayTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocArrayTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocIndentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocInlineTagNormalizerFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagNormalizerFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocLineSpanFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocListTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocListTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAccessFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAliasTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoDuplicateTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoDuplicateTypesFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoEmptyReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoPackageFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderByValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocParamOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSingleLineVarSpacingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSummaryFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagCasingFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagNoNamedArgumentsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagNoNamedArgumentsFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocToCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimConsecutiveBlankLineSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesNoDuplicatesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesNoDuplicatesFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarAnnotationCorrectOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarWithoutNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\NoUselessReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\ReturnAssignmentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\SimplifiedNullReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\MultilineWhitespaceBeforeSemicolonsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\NoEmptyStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\NoSinglelineWhitespaceBeforeSemicolonsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\SemicolonAfterInstructionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\SpaceAfterSemicolonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\DeclareStrictTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\StrictComparisonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\StrictParamFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\ExplicitStringVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\HeredocClosingMarkerFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocClosingMarkerFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\HeredocToNowdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\MultilineStringToHeredocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/MultilineStringToHeredocFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\NoBinaryStringFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\NoTrailingWhitespaceInStringFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\SimpleToComplexStringVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\SingleQuoteFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringImplicitBackslashesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringImplicitBackslashesFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringLengthToEmptyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLengthToEmptyFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringLineEndingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\ArrayIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBeforeStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBetweenImportGroupsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBetweenImportGroupsFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypehintFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\HeredocIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\IndentationTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\LineEndingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\MethodChainingIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraBlankLinesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesAroundOffsetFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesInsideParenthesisFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\SpacesInsideParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\StatementIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php', - 'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php', - 'PhpCsFixer\\Future' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Future.php', - 'PhpCsFixer\\Hasher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Hasher.php', - 'PhpCsFixer\\Linter\\CachingLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php', - 'PhpCsFixer\\Linter\\Linter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php', - 'PhpCsFixer\\Linter\\LinterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php', - 'PhpCsFixer\\Linter\\LintingException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LintingException.php', - 'PhpCsFixer\\Linter\\LintingResultInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php', - 'PhpCsFixer\\Linter\\ProcessLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php', - 'PhpCsFixer\\Linter\\ProcessLinterProcessBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php', - 'PhpCsFixer\\Linter\\ProcessLintingResult' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php', - 'PhpCsFixer\\Linter\\TokenizerLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php', - 'PhpCsFixer\\Linter\\TokenizerLintingResult' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php', - 'PhpCsFixer\\Linter\\UnavailableLinterException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php', - 'PhpCsFixer\\ParallelAwareConfigInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ParallelAwareConfigInterface.php', - 'PhpCsFixer\\PharChecker' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PharChecker.php', - 'PhpCsFixer\\PharCheckerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php', - 'PhpCsFixer\\Preg' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Preg.php', - 'PhpCsFixer\\PregException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PregException.php', - 'PhpCsFixer\\RuleSetNameValidator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSetNameValidator.php', - 'PhpCsFixer\\RuleSet\\AbstractMajorMinorDeprecationSetDefinition' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMajorMinorDeprecationSetDefinition.php', - 'PhpCsFixer\\RuleSet\\AbstractMigrationSetDefinition' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMigrationSetDefinition.php', - 'PhpCsFixer\\RuleSet\\AbstractRuleSetDefinition' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractRuleSetDefinition.php', - 'PhpCsFixer\\RuleSet\\AutomaticMigrationSetTrait' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticMigrationSetTrait.php', - 'PhpCsFixer\\RuleSet\\AutomaticRuleSetDefinitionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticRuleSetDefinitionInterface.php', - 'PhpCsFixer\\RuleSet\\DeprecatedRuleSetDefinitionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDefinitionInterface.php', - 'PhpCsFixer\\RuleSet\\InternalRuleSetDefinitionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/InternalRuleSetDefinitionInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSet.php', - 'PhpCsFixer\\RuleSet\\RuleSetDefinitionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetDefinitionInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSetInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSets' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoPHPMigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoPHPMigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoPHPUnitMigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPUnitMigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\AutoSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\DoctrineAnnotationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS10RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS10Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS20RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS20Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS30RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS30Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS3x0RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS3x0Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCSRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCSSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP54MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP56MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP56MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP5x4MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x4MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP5x6MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x6MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP73MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP73MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x0MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x0MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x1MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x1MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x3MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x3MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x4MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP7x4MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP84MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP84MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP85MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP85MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x0MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x0MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x1MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x1MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x2MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x2MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x3MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x3MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x4MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x4MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x5MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP8x5MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit100MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit10x0MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit10x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit11x0MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit11x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit30MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit32MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit35MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit3x0MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit3x2MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x2MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit3x5MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x5MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit43MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit43MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit48MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit48MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit4x3MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x3MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit4x8MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x8MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit50MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit50MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit52MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit52MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit54MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit54MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit55MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit55MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit56MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit56MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit57MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit57MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x0MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x2MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x2MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x4MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x4MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x5MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x5MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x6MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x6MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit5x7MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x7MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit60MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit60MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit6x0MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit6x0MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit75MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit75MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit7x5MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit7x5MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit84MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit84MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit8x4MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit8x4MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit91MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit91MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit9x1MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit9x1MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR12RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR12Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR1Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR1Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR2Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR2Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php', - 'PhpCsFixer\\Runner\\Event\\AnalysisStarted' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Event/AnalysisStarted.php', - 'PhpCsFixer\\Runner\\Event\\FileProcessed' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Event/FileProcessed.php', - 'PhpCsFixer\\Runner\\FileCachingLintingFileIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingFileIterator.php', - 'PhpCsFixer\\Runner\\FileFilterIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php', - 'PhpCsFixer\\Runner\\LintingFileIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/LintingFileIterator.php', - 'PhpCsFixer\\Runner\\LintingResultAwareFileIteratorInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/LintingResultAwareFileIteratorInterface.php', - 'PhpCsFixer\\Runner\\Parallel\\ParallelAction' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelAction.php', - 'PhpCsFixer\\Runner\\Parallel\\ParallelConfig' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfig.php', - 'PhpCsFixer\\Runner\\Parallel\\ParallelConfigFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfigFactory.php', - 'PhpCsFixer\\Runner\\Parallel\\ParallelisationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelisationException.php', - 'PhpCsFixer\\Runner\\Parallel\\Process' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/Process.php', - 'PhpCsFixer\\Runner\\Parallel\\ProcessFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessFactory.php', - 'PhpCsFixer\\Runner\\Parallel\\ProcessIdentifier' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessIdentifier.php', - 'PhpCsFixer\\Runner\\Parallel\\ProcessPool' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessPool.php', - 'PhpCsFixer\\Runner\\Parallel\\ProcessUtils' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessUtils.php', - 'PhpCsFixer\\Runner\\Parallel\\WorkerException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Parallel/WorkerException.php', - 'PhpCsFixer\\Runner\\Runner' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Runner.php', - 'PhpCsFixer\\Runner\\RunnerConfig' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/RunnerConfig.php', - 'PhpCsFixer\\StdinFileInfo' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/StdinFileInfo.php', - 'PhpCsFixer\\Tokenizer\\AbstractTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php', - 'PhpCsFixer\\Tokenizer\\AbstractTypeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTypeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\AlternativeSyntaxAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AlternativeSyntaxAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AbstractControlCaseStructuresAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AttributeAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AttributeAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\CaseAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DataProviderAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DefaultAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\EnumAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\MatchAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceUseAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\SwitchAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/SwitchAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\TypeAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ArgumentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\AttributeAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AttributeAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\BlocksAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\FixerAnnotationAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FixerAnnotationAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\FullyQualifiedNameAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FullyQualifiedNameAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespacesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\PhpUnitTestCaseAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/PhpUnitTestCaseAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\RangeAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/RangeAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ReferenceAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ReferenceAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\CT' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php', - 'PhpCsFixer\\Tokenizer\\FCT' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/FCT.php', - 'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php', - 'PhpCsFixer\\Tokenizer\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php', - 'PhpCsFixer\\Tokenizer\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php', - 'PhpCsFixer\\Tokenizer\\TokensAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\TransformerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ArrayTypehintTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\AttributeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/AttributeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\BraceTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ConstructorPromotionTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\DisjunctiveNormalFormTypeParenthesisTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\FirstClassCallableTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NameQualifiedTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NamedArgumentTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamedArgumentTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NamespaceOperatorTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NullableTypeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ReturnRefTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\SquareBraceTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeAlternationTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeColonTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeIntersectionTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeIntersectionTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\UseTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\WhitespacyCommentTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformers' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformers.php', - 'PhpCsFixer\\ToolInfo' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ToolInfo.php', - 'PhpCsFixer\\ToolInfoInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php', - 'PhpCsFixer\\UnsupportedPhpVersionAllowedConfigInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/UnsupportedPhpVersionAllowedConfigInterface.php', - 'PhpCsFixer\\Utils' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Utils.php', - 'PhpCsFixer\\WhitespacesFixerConfig' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php', - 'PhpCsFixer\\WordMatcher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/WordMatcher.php', - 'PhpParser\\Builder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder.php', - 'PhpParser\\BuilderFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', - 'PhpParser\\BuilderHelpers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', - 'PhpParser\\Builder\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', - 'PhpParser\\Builder\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', - 'PhpParser\\Builder\\Declaration' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', - 'PhpParser\\Builder\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', - 'PhpParser\\Builder\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', - 'PhpParser\\Builder\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', - 'PhpParser\\Builder\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', - 'PhpParser\\Builder\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', - 'PhpParser\\Builder\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', - 'PhpParser\\Builder\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', - 'PhpParser\\Builder\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', - 'PhpParser\\Builder\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', - 'PhpParser\\Builder\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', - 'PhpParser\\Builder\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', - 'PhpParser\\Builder\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', - 'PhpParser\\Builder\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', - 'PhpParser\\Comment' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment.php', - 'PhpParser\\Comment\\Doc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', - 'PhpParser\\ConstExprEvaluationException' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', - 'PhpParser\\ConstExprEvaluator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', - 'PhpParser\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Error.php', - 'PhpParser\\ErrorHandler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', - 'PhpParser\\ErrorHandler\\Collecting' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', - 'PhpParser\\ErrorHandler\\Throwing' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', - 'PhpParser\\Internal\\DiffElem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', - 'PhpParser\\Internal\\Differ' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', - 'PhpParser\\Internal\\PrintableNewAnonClassNode' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', - 'PhpParser\\Internal\\TokenPolyfill' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php', - 'PhpParser\\Internal\\TokenStream' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', - 'PhpParser\\JsonDecoder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', - 'PhpParser\\Lexer' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer.php', - 'PhpParser\\Lexer\\Emulative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', - 'PhpParser\\Lexer\\TokenEmulator\\AsymmetricVisibilityTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\PipeOperatorEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\PropertyTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\VoidCastEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php', - 'PhpParser\\Modifiers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Modifiers.php', - 'PhpParser\\NameContext' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NameContext.php', - 'PhpParser\\Node' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node.php', - 'PhpParser\\NodeAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', - 'PhpParser\\NodeDumper' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', - 'PhpParser\\NodeFinder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', - 'PhpParser\\NodeTraverser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', - 'PhpParser\\NodeTraverserInterface' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', - 'PhpParser\\NodeVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', - 'PhpParser\\NodeVisitorAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', - 'PhpParser\\NodeVisitor\\CloningVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', - 'PhpParser\\NodeVisitor\\CommentAnnotatingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php', - 'PhpParser\\NodeVisitor\\FindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', - 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', - 'PhpParser\\NodeVisitor\\NameResolver' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', - 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', - 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', - 'PhpParser\\Node\\Arg' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', - 'PhpParser\\Node\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php', - 'PhpParser\\Node\\Attribute' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', - 'PhpParser\\Node\\AttributeGroup' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', - 'PhpParser\\Node\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php', - 'PhpParser\\Node\\ComplexType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', - 'PhpParser\\Node\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', - 'PhpParser\\Node\\DeclareItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php', - 'PhpParser\\Node\\Expr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', - 'PhpParser\\Node\\Expr\\ArrayDimFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', - 'PhpParser\\Node\\Expr\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', - 'PhpParser\\Node\\Expr\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', - 'PhpParser\\Node\\Expr\\ArrowFunction' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', - 'PhpParser\\Node\\Expr\\Assign' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', - 'PhpParser\\Node\\Expr\\AssignOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\AssignRef' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', - 'PhpParser\\Node\\Expr\\BinaryOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Pipe' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', - 'PhpParser\\Node\\Expr\\BitwiseNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', - 'PhpParser\\Node\\Expr\\BooleanNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', - 'PhpParser\\Node\\Expr\\CallLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', - 'PhpParser\\Node\\Expr\\Cast' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', - 'PhpParser\\Node\\Expr\\Cast\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', - 'PhpParser\\Node\\Expr\\Cast\\Bool_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', - 'PhpParser\\Node\\Expr\\Cast\\Double' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', - 'PhpParser\\Node\\Expr\\Cast\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', - 'PhpParser\\Node\\Expr\\Cast\\Object_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', - 'PhpParser\\Node\\Expr\\Cast\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', - 'PhpParser\\Node\\Expr\\Cast\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', - 'PhpParser\\Node\\Expr\\Cast\\Void_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Void_.php', - 'PhpParser\\Node\\Expr\\ClassConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', - 'PhpParser\\Node\\Expr\\Clone_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', - 'PhpParser\\Node\\Expr\\Closure' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', - 'PhpParser\\Node\\Expr\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', - 'PhpParser\\Node\\Expr\\ConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', - 'PhpParser\\Node\\Expr\\Empty_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', - 'PhpParser\\Node\\Expr\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', - 'PhpParser\\Node\\Expr\\ErrorSuppress' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', - 'PhpParser\\Node\\Expr\\Eval_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', - 'PhpParser\\Node\\Expr\\Exit_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', - 'PhpParser\\Node\\Expr\\FuncCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', - 'PhpParser\\Node\\Expr\\Include_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', - 'PhpParser\\Node\\Expr\\Instanceof_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', - 'PhpParser\\Node\\Expr\\Isset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', - 'PhpParser\\Node\\Expr\\List_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', - 'PhpParser\\Node\\Expr\\Match_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', - 'PhpParser\\Node\\Expr\\MethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', - 'PhpParser\\Node\\Expr\\New_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', - 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', - 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', - 'PhpParser\\Node\\Expr\\PostDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', - 'PhpParser\\Node\\Expr\\PostInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', - 'PhpParser\\Node\\Expr\\PreDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', - 'PhpParser\\Node\\Expr\\PreInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', - 'PhpParser\\Node\\Expr\\Print_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', - 'PhpParser\\Node\\Expr\\PropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', - 'PhpParser\\Node\\Expr\\ShellExec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', - 'PhpParser\\Node\\Expr\\StaticCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', - 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', - 'PhpParser\\Node\\Expr\\Ternary' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', - 'PhpParser\\Node\\Expr\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', - 'PhpParser\\Node\\Expr\\UnaryMinus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', - 'PhpParser\\Node\\Expr\\UnaryPlus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', - 'PhpParser\\Node\\Expr\\Variable' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', - 'PhpParser\\Node\\Expr\\YieldFrom' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', - 'PhpParser\\Node\\Expr\\Yield_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', - 'PhpParser\\Node\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', - 'PhpParser\\Node\\Identifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', - 'PhpParser\\Node\\InterpolatedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php', - 'PhpParser\\Node\\IntersectionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', - 'PhpParser\\Node\\MatchArm' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', - 'PhpParser\\Node\\Name' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name.php', - 'PhpParser\\Node\\Name\\FullyQualified' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', - 'PhpParser\\Node\\Name\\Relative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', - 'PhpParser\\Node\\NullableType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', - 'PhpParser\\Node\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Param.php', - 'PhpParser\\Node\\PropertyHook' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php', - 'PhpParser\\Node\\PropertyItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php', - 'PhpParser\\Node\\Scalar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', - 'PhpParser\\Node\\Scalar\\DNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', - 'PhpParser\\Node\\Scalar\\Encapsed' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', - 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', - 'PhpParser\\Node\\Scalar\\Float_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php', - 'PhpParser\\Node\\Scalar\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php', - 'PhpParser\\Node\\Scalar\\InterpolatedString' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php', - 'PhpParser\\Node\\Scalar\\LNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', - 'PhpParser\\Node\\Scalar\\MagicConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\File' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', - 'PhpParser\\Node\\Scalar\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', - 'PhpParser\\Node\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/StaticVar.php', - 'PhpParser\\Node\\Stmt' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', - 'PhpParser\\Node\\Stmt\\Block' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php', - 'PhpParser\\Node\\Stmt\\Break_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', - 'PhpParser\\Node\\Stmt\\Case_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', - 'PhpParser\\Node\\Stmt\\Catch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', - 'PhpParser\\Node\\Stmt\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', - 'PhpParser\\Node\\Stmt\\ClassLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', - 'PhpParser\\Node\\Stmt\\ClassMethod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', - 'PhpParser\\Node\\Stmt\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', - 'PhpParser\\Node\\Stmt\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', - 'PhpParser\\Node\\Stmt\\Continue_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', - 'PhpParser\\Node\\Stmt\\DeclareDeclare' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', - 'PhpParser\\Node\\Stmt\\Declare_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', - 'PhpParser\\Node\\Stmt\\Do_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', - 'PhpParser\\Node\\Stmt\\Echo_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', - 'PhpParser\\Node\\Stmt\\ElseIf_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', - 'PhpParser\\Node\\Stmt\\Else_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', - 'PhpParser\\Node\\Stmt\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', - 'PhpParser\\Node\\Stmt\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', - 'PhpParser\\Node\\Stmt\\Expression' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', - 'PhpParser\\Node\\Stmt\\Finally_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', - 'PhpParser\\Node\\Stmt\\For_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', - 'PhpParser\\Node\\Stmt\\Foreach_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', - 'PhpParser\\Node\\Stmt\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', - 'PhpParser\\Node\\Stmt\\Global_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', - 'PhpParser\\Node\\Stmt\\Goto_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', - 'PhpParser\\Node\\Stmt\\GroupUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', - 'PhpParser\\Node\\Stmt\\HaltCompiler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', - 'PhpParser\\Node\\Stmt\\If_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', - 'PhpParser\\Node\\Stmt\\InlineHTML' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', - 'PhpParser\\Node\\Stmt\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', - 'PhpParser\\Node\\Stmt\\Label' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', - 'PhpParser\\Node\\Stmt\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', - 'PhpParser\\Node\\Stmt\\Nop' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', - 'PhpParser\\Node\\Stmt\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', - 'PhpParser\\Node\\Stmt\\PropertyProperty' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', - 'PhpParser\\Node\\Stmt\\Return_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', - 'PhpParser\\Node\\Stmt\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', - 'PhpParser\\Node\\Stmt\\Static_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', - 'PhpParser\\Node\\Stmt\\Switch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', - 'PhpParser\\Node\\Stmt\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', - 'PhpParser\\Node\\Stmt\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', - 'PhpParser\\Node\\Stmt\\TryCatch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', - 'PhpParser\\Node\\Stmt\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', - 'PhpParser\\Node\\Stmt\\UseUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', - 'PhpParser\\Node\\Stmt\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', - 'PhpParser\\Node\\Stmt\\While_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', - 'PhpParser\\Node\\UnionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', - 'PhpParser\\Node\\UseItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UseItem.php', - 'PhpParser\\Node\\VarLikeIdentifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', - 'PhpParser\\Node\\VariadicPlaceholder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', - 'PhpParser\\Parser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser.php', - 'PhpParser\\ParserAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', - 'PhpParser\\ParserFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', - 'PhpParser\\Parser\\Php7' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', - 'PhpParser\\Parser\\Php8' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php8.php', - 'PhpParser\\PhpVersion' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PhpVersion.php', - 'PhpParser\\PrettyPrinter' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter.php', - 'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', - 'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', - 'PhpParser\\Token' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Token.php', - 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'Predis\\Autoloader' => __DIR__ . '/..' . '/predis/predis/src/Autoloader.php', - 'Predis\\Client' => __DIR__ . '/..' . '/predis/predis/src/Client.php', - 'Predis\\ClientConfiguration' => __DIR__ . '/..' . '/predis/predis/src/ClientConfiguration.php', - 'Predis\\ClientContextInterface' => __DIR__ . '/..' . '/predis/predis/src/ClientContextInterface.php', - 'Predis\\ClientException' => __DIR__ . '/..' . '/predis/predis/src/ClientException.php', - 'Predis\\ClientInterface' => __DIR__ . '/..' . '/predis/predis/src/ClientInterface.php', - 'Predis\\Cluster\\ClusterStrategy' => __DIR__ . '/..' . '/predis/predis/src/Cluster/ClusterStrategy.php', - 'Predis\\Cluster\\Distributor\\DistributorInterface' => __DIR__ . '/..' . '/predis/predis/src/Cluster/Distributor/DistributorInterface.php', - 'Predis\\Cluster\\Distributor\\EmptyRingException' => __DIR__ . '/..' . '/predis/predis/src/Cluster/Distributor/EmptyRingException.php', - 'Predis\\Cluster\\Distributor\\HashRing' => __DIR__ . '/..' . '/predis/predis/src/Cluster/Distributor/HashRing.php', - 'Predis\\Cluster\\Distributor\\KetamaRing' => __DIR__ . '/..' . '/predis/predis/src/Cluster/Distributor/KetamaRing.php', - 'Predis\\Cluster\\Hash\\CRC16' => __DIR__ . '/..' . '/predis/predis/src/Cluster/Hash/CRC16.php', - 'Predis\\Cluster\\Hash\\HashGeneratorInterface' => __DIR__ . '/..' . '/predis/predis/src/Cluster/Hash/HashGeneratorInterface.php', - 'Predis\\Cluster\\NullSlotRange' => __DIR__ . '/..' . '/predis/predis/src/Cluster/NullSlotRange.php', - 'Predis\\Cluster\\PredisStrategy' => __DIR__ . '/..' . '/predis/predis/src/Cluster/PredisStrategy.php', - 'Predis\\Cluster\\RedisStrategy' => __DIR__ . '/..' . '/predis/predis/src/Cluster/RedisStrategy.php', - 'Predis\\Cluster\\SimpleSlotMap' => __DIR__ . '/..' . '/predis/predis/src/Cluster/SimpleSlotMap.php', - 'Predis\\Cluster\\SlotMap' => __DIR__ . '/..' . '/predis/predis/src/Cluster/SlotMap.php', - 'Predis\\Cluster\\SlotRange' => __DIR__ . '/..' . '/predis/predis/src/Cluster/SlotRange.php', - 'Predis\\Cluster\\StrategyInterface' => __DIR__ . '/..' . '/predis/predis/src/Cluster/StrategyInterface.php', - 'Predis\\Collection\\Iterator\\CursorBasedIterator' => __DIR__ . '/..' . '/predis/predis/src/Collection/Iterator/CursorBasedIterator.php', - 'Predis\\Collection\\Iterator\\HashKey' => __DIR__ . '/..' . '/predis/predis/src/Collection/Iterator/HashKey.php', - 'Predis\\Collection\\Iterator\\Keyspace' => __DIR__ . '/..' . '/predis/predis/src/Collection/Iterator/Keyspace.php', - 'Predis\\Collection\\Iterator\\ListKey' => __DIR__ . '/..' . '/predis/predis/src/Collection/Iterator/ListKey.php', - 'Predis\\Collection\\Iterator\\SetKey' => __DIR__ . '/..' . '/predis/predis/src/Collection/Iterator/SetKey.php', - 'Predis\\Collection\\Iterator\\SortedSetKey' => __DIR__ . '/..' . '/predis/predis/src/Collection/Iterator/SortedSetKey.php', - 'Predis\\Command\\Argument\\ArrayableArgument' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/ArrayableArgument.php', - 'Predis\\Command\\Argument\\Geospatial\\AbstractBy' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Geospatial/AbstractBy.php', - 'Predis\\Command\\Argument\\Geospatial\\ByBox' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Geospatial/ByBox.php', - 'Predis\\Command\\Argument\\Geospatial\\ByInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Geospatial/ByInterface.php', - 'Predis\\Command\\Argument\\Geospatial\\ByRadius' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Geospatial/ByRadius.php', - 'Predis\\Command\\Argument\\Geospatial\\FromInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Geospatial/FromInterface.php', - 'Predis\\Command\\Argument\\Geospatial\\FromLonLat' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Geospatial/FromLonLat.php', - 'Predis\\Command\\Argument\\Geospatial\\FromMember' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Geospatial/FromMember.php', - 'Predis\\Command\\Argument\\Search\\AggregateArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/AggregateArguments.php', - 'Predis\\Command\\Argument\\Search\\AlterArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/AlterArguments.php', - 'Predis\\Command\\Argument\\Search\\CommonArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/CommonArguments.php', - 'Predis\\Command\\Argument\\Search\\CreateArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/CreateArguments.php', - 'Predis\\Command\\Argument\\Search\\CursorArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/CursorArguments.php', - 'Predis\\Command\\Argument\\Search\\DropArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/DropArguments.php', - 'Predis\\Command\\Argument\\Search\\ExplainArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/ExplainArguments.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\Combine\\BaseCombine' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/BaseCombine.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\Combine\\LinearCombineConfig' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/LinearCombineConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\Combine\\RRFCombineConfig' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/RRFCombineConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\HybridSearchQuery' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/HybridSearchQuery.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\Reducer' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/Reducer.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\ScorerConfig' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/ScorerConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\SearchConfig' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/SearchConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\VectorSearch\\BaseVectorSearchConfig' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/BaseVectorSearchConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\VectorSearch\\KNNVectorSearchConfig' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/KNNVectorSearchConfig.php', - 'Predis\\Command\\Argument\\Search\\HybridSearch\\VectorSearch\\RangeVectorSearchConfig' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/RangeVectorSearchConfig.php', - 'Predis\\Command\\Argument\\Search\\ProfileArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/ProfileArguments.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\AbstractField' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SchemaFields/AbstractField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\FieldInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SchemaFields/FieldInterface.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\GeoField' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SchemaFields/GeoField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\GeoShapeField' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SchemaFields/GeoShapeField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\NumericField' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SchemaFields/NumericField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\TagField' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SchemaFields/TagField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\TextField' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SchemaFields/TextField.php', - 'Predis\\Command\\Argument\\Search\\SchemaFields\\VectorField' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SchemaFields/VectorField.php', - 'Predis\\Command\\Argument\\Search\\SearchArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SearchArguments.php', - 'Predis\\Command\\Argument\\Search\\SpellcheckArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SpellcheckArguments.php', - 'Predis\\Command\\Argument\\Search\\SugAddArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SugAddArguments.php', - 'Predis\\Command\\Argument\\Search\\SugGetArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SugGetArguments.php', - 'Predis\\Command\\Argument\\Search\\SynUpdateArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Search/SynUpdateArguments.php', - 'Predis\\Command\\Argument\\Server\\LimitInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Server/LimitInterface.php', - 'Predis\\Command\\Argument\\Server\\LimitOffsetCount' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Server/LimitOffsetCount.php', - 'Predis\\Command\\Argument\\Server\\To' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Server/To.php', - 'Predis\\Command\\Argument\\Stream\\XInfoStreamOptions' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/Stream/XInfoStreamOptions.php', - 'Predis\\Command\\Argument\\TimeSeries\\AddArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/AddArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\AlterArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/AlterArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\CommonArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/CommonArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\CreateArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/CreateArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\DecrByArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/DecrByArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\GetArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/GetArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\IncrByArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/IncrByArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\InfoArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/InfoArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\MGetArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/MGetArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\MRangeArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/MRangeArguments.php', - 'Predis\\Command\\Argument\\TimeSeries\\RangeArguments' => __DIR__ . '/..' . '/predis/predis/src/Command/Argument/TimeSeries/RangeArguments.php', - 'Predis\\Command\\Command' => __DIR__ . '/..' . '/predis/predis/src/Command/Command.php', - 'Predis\\Command\\CommandInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/CommandInterface.php', - 'Predis\\Command\\Container\\ACL' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/ACL.php', - 'Predis\\Command\\Container\\AbstractContainer' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/AbstractContainer.php', - 'Predis\\Command\\Container\\CLIENT' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/CLIENT.php', - 'Predis\\Command\\Container\\CLUSTER' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/CLUSTER.php', - 'Predis\\Command\\Container\\ContainerFactory' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/ContainerFactory.php', - 'Predis\\Command\\Container\\ContainerInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/ContainerInterface.php', - 'Predis\\Command\\Container\\FUNCTIONS' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/FUNCTIONS.php', - 'Predis\\Command\\Container\\HOTKEYS' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/HOTKEYS.php', - 'Predis\\Command\\Container\\Json\\JSONDEBUG' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/Json/JSONDEBUG.php', - 'Predis\\Command\\Container\\Search\\FTCONFIG' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/Search/FTCONFIG.php', - 'Predis\\Command\\Container\\Search\\FTCURSOR' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/Search/FTCURSOR.php', - 'Predis\\Command\\Container\\XGROUP' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/XGROUP.php', - 'Predis\\Command\\Container\\XINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Container/XINFO.php', - 'Predis\\Command\\Factory' => __DIR__ . '/..' . '/predis/predis/src/Command/Factory.php', - 'Predis\\Command\\FactoryInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/FactoryInterface.php', - 'Predis\\Command\\PrefixableCommand' => __DIR__ . '/..' . '/predis/predis/src/Command/PrefixableCommand.php', - 'Predis\\Command\\PrefixableCommandInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/PrefixableCommandInterface.php', - 'Predis\\Command\\Processor\\KeyPrefixProcessor' => __DIR__ . '/..' . '/predis/predis/src/Command/Processor/KeyPrefixProcessor.php', - 'Predis\\Command\\Processor\\ProcessorChain' => __DIR__ . '/..' . '/predis/predis/src/Command/Processor/ProcessorChain.php', - 'Predis\\Command\\Processor\\ProcessorInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/Processor/ProcessorInterface.php', - 'Predis\\Command\\RawCommand' => __DIR__ . '/..' . '/predis/predis/src/Command/RawCommand.php', - 'Predis\\Command\\RawFactory' => __DIR__ . '/..' . '/predis/predis/src/Command/RawFactory.php', - 'Predis\\Command\\RedisFactory' => __DIR__ . '/..' . '/predis/predis/src/Command/RedisFactory.php', - 'Predis\\Command\\Redis\\ACL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ACL.php', - 'Predis\\Command\\Redis\\APPEND' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/APPEND.php', - 'Predis\\Command\\Redis\\ARCOUNT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARCOUNT.php', - 'Predis\\Command\\Redis\\ARDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARDEL.php', - 'Predis\\Command\\Redis\\ARDELRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARDELRANGE.php', - 'Predis\\Command\\Redis\\ARGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARGET.php', - 'Predis\\Command\\Redis\\ARGETRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARGETRANGE.php', - 'Predis\\Command\\Redis\\ARGREP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARGREP.php', - 'Predis\\Command\\Redis\\ARINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARINFO.php', - 'Predis\\Command\\Redis\\ARINSERT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARINSERT.php', - 'Predis\\Command\\Redis\\ARLASTITEMS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARLASTITEMS.php', - 'Predis\\Command\\Redis\\ARLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARLEN.php', - 'Predis\\Command\\Redis\\ARMGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARMGET.php', - 'Predis\\Command\\Redis\\ARMSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARMSET.php', - 'Predis\\Command\\Redis\\ARNEXT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARNEXT.php', - 'Predis\\Command\\Redis\\AROP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/AROP.php', - 'Predis\\Command\\Redis\\ARRING' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARRING.php', - 'Predis\\Command\\Redis\\ARSCAN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARSCAN.php', - 'Predis\\Command\\Redis\\ARSEEK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARSEEK.php', - 'Predis\\Command\\Redis\\ARSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ARSET.php', - 'Predis\\Command\\Redis\\AUTH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/AUTH.php', - 'Predis\\Command\\Redis\\AbstractCommand\\BZPOPBase' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/AbstractCommand/BZPOPBase.php', - 'Predis\\Command\\Redis\\BGREWRITEAOF' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BGREWRITEAOF.php', - 'Predis\\Command\\Redis\\BGSAVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BGSAVE.php', - 'Predis\\Command\\Redis\\BITCOUNT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BITCOUNT.php', - 'Predis\\Command\\Redis\\BITFIELD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BITFIELD.php', - 'Predis\\Command\\Redis\\BITFIELD_RO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BITFIELD_RO.php', - 'Predis\\Command\\Redis\\BITOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BITOP.php', - 'Predis\\Command\\Redis\\BITPOS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BITPOS.php', - 'Predis\\Command\\Redis\\BLMOVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BLMOVE.php', - 'Predis\\Command\\Redis\\BLMPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BLMPOP.php', - 'Predis\\Command\\Redis\\BLPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BLPOP.php', - 'Predis\\Command\\Redis\\BRPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BRPOP.php', - 'Predis\\Command\\Redis\\BRPOPLPUSH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BRPOPLPUSH.php', - 'Predis\\Command\\Redis\\BZMPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BZMPOP.php', - 'Predis\\Command\\Redis\\BZPOPMAX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BZPOPMAX.php', - 'Predis\\Command\\Redis\\BZPOPMIN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BZPOPMIN.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFADD.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFEXISTS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFEXISTS.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFINFO.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFINSERT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFINSERT.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFLOADCHUNK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFLOADCHUNK.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFMADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFMADD.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFMEXISTS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFMEXISTS.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFRESERVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFRESERVE.php', - 'Predis\\Command\\Redis\\BloomFilter\\BFSCANDUMP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFSCANDUMP.php', - 'Predis\\Command\\Redis\\CLIENT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CLIENT.php', - 'Predis\\Command\\Redis\\CLUSTER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CLUSTER.php', - 'Predis\\Command\\Redis\\COMMAND' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/COMMAND.php', - 'Predis\\Command\\Redis\\CONFIG' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CONFIG.php', - 'Predis\\Command\\Redis\\COPY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/COPY.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSINCRBY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CountMinSketch/CMSINCRBY.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CountMinSketch/CMSINFO.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSINITBYDIM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYDIM.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSINITBYPROB' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYPROB.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSMERGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CountMinSketch/CMSMERGE.php', - 'Predis\\Command\\Redis\\CountMinSketch\\CMSQUERY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CountMinSketch/CMSQUERY.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFADD.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFADDNX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFADDNX.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFCOUNT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFCOUNT.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFDEL.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFEXISTS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFEXISTS.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFINFO.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFINSERT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFINSERT.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFINSERTNX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFINSERTNX.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFLOADCHUNK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFLOADCHUNK.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFMEXISTS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFMEXISTS.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFRESERVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFRESERVE.php', - 'Predis\\Command\\Redis\\CuckooFilter\\CFSCANDUMP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CuckooFilter/CFSCANDUMP.php', - 'Predis\\Command\\Redis\\DBSIZE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/DBSIZE.php', - 'Predis\\Command\\Redis\\DECR' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/DECR.php', - 'Predis\\Command\\Redis\\DECRBY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/DECRBY.php', - 'Predis\\Command\\Redis\\DEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/DEL.php', - 'Predis\\Command\\Redis\\DELEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/DELEX.php', - 'Predis\\Command\\Redis\\DIGEST' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/DIGEST.php', - 'Predis\\Command\\Redis\\DISCARD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/DISCARD.php', - 'Predis\\Command\\Redis\\DUMP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/DUMP.php', - 'Predis\\Command\\Redis\\ECHO_' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ECHO_.php', - 'Predis\\Command\\Redis\\EVALSHA' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/EVALSHA.php', - 'Predis\\Command\\Redis\\EVALSHA_RO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/EVALSHA_RO.php', - 'Predis\\Command\\Redis\\EVAL_' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/EVAL_.php', - 'Predis\\Command\\Redis\\EVAL_RO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/EVAL_RO.php', - 'Predis\\Command\\Redis\\EXEC' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/EXEC.php', - 'Predis\\Command\\Redis\\EXISTS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/EXISTS.php', - 'Predis\\Command\\Redis\\EXPIRE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/EXPIRE.php', - 'Predis\\Command\\Redis\\EXPIREAT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/EXPIREAT.php', - 'Predis\\Command\\Redis\\EXPIRETIME' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/EXPIRETIME.php', - 'Predis\\Command\\Redis\\FAILOVER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/FAILOVER.php', - 'Predis\\Command\\Redis\\FCALL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/FCALL.php', - 'Predis\\Command\\Redis\\FCALL_RO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/FCALL_RO.php', - 'Predis\\Command\\Redis\\FLUSHALL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/FLUSHALL.php', - 'Predis\\Command\\Redis\\FLUSHDB' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/FLUSHDB.php', - 'Predis\\Command\\Redis\\FUNCTIONS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/FUNCTIONS.php', - 'Predis\\Command\\Redis\\GEOADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GEOADD.php', - 'Predis\\Command\\Redis\\GEODIST' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GEODIST.php', - 'Predis\\Command\\Redis\\GEOHASH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GEOHASH.php', - 'Predis\\Command\\Redis\\GEOPOS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GEOPOS.php', - 'Predis\\Command\\Redis\\GEORADIUS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GEORADIUS.php', - 'Predis\\Command\\Redis\\GEORADIUSBYMEMBER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GEORADIUSBYMEMBER.php', - 'Predis\\Command\\Redis\\GEOSEARCH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GEOSEARCH.php', - 'Predis\\Command\\Redis\\GEOSEARCHSTORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GEOSEARCHSTORE.php', - 'Predis\\Command\\Redis\\GET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GET.php', - 'Predis\\Command\\Redis\\GETBIT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GETBIT.php', - 'Predis\\Command\\Redis\\GETDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GETDEL.php', - 'Predis\\Command\\Redis\\GETEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GETEX.php', - 'Predis\\Command\\Redis\\GETRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GETRANGE.php', - 'Predis\\Command\\Redis\\GETSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/GETSET.php', - 'Predis\\Command\\Redis\\HDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HDEL.php', - 'Predis\\Command\\Redis\\HEXISTS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HEXISTS.php', - 'Predis\\Command\\Redis\\HEXPIRE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HEXPIRE.php', - 'Predis\\Command\\Redis\\HEXPIREAT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HEXPIREAT.php', - 'Predis\\Command\\Redis\\HEXPIRETIME' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HEXPIRETIME.php', - 'Predis\\Command\\Redis\\HGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HGET.php', - 'Predis\\Command\\Redis\\HGETALL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HGETALL.php', - 'Predis\\Command\\Redis\\HGETDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HGETDEL.php', - 'Predis\\Command\\Redis\\HGETEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HGETEX.php', - 'Predis\\Command\\Redis\\HINCRBY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HINCRBY.php', - 'Predis\\Command\\Redis\\HINCRBYFLOAT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HINCRBYFLOAT.php', - 'Predis\\Command\\Redis\\HKEYS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HKEYS.php', - 'Predis\\Command\\Redis\\HLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HLEN.php', - 'Predis\\Command\\Redis\\HMGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HMGET.php', - 'Predis\\Command\\Redis\\HMSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HMSET.php', - 'Predis\\Command\\Redis\\HOTKEYS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HOTKEYS.php', - 'Predis\\Command\\Redis\\HPERSIST' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HPERSIST.php', - 'Predis\\Command\\Redis\\HPEXPIRE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HPEXPIRE.php', - 'Predis\\Command\\Redis\\HPEXPIREAT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HPEXPIREAT.php', - 'Predis\\Command\\Redis\\HPEXPIRETIME' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HPEXPIRETIME.php', - 'Predis\\Command\\Redis\\HPTTL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HPTTL.php', - 'Predis\\Command\\Redis\\HRANDFIELD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HRANDFIELD.php', - 'Predis\\Command\\Redis\\HSCAN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HSCAN.php', - 'Predis\\Command\\Redis\\HSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HSET.php', - 'Predis\\Command\\Redis\\HSETEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HSETEX.php', - 'Predis\\Command\\Redis\\HSETNX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HSETNX.php', - 'Predis\\Command\\Redis\\HSTRLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HSTRLEN.php', - 'Predis\\Command\\Redis\\HTTL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HTTL.php', - 'Predis\\Command\\Redis\\HVALS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/HVALS.php', - 'Predis\\Command\\Redis\\INCR' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/INCR.php', - 'Predis\\Command\\Redis\\INCRBY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/INCRBY.php', - 'Predis\\Command\\Redis\\INCRBYFLOAT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/INCRBYFLOAT.php', - 'Predis\\Command\\Redis\\INCREX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/INCREX.php', - 'Predis\\Command\\Redis\\INFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/INFO.php', - 'Predis\\Command\\Redis\\Json\\JSONARRAPPEND' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONARRAPPEND.php', - 'Predis\\Command\\Redis\\Json\\JSONARRINDEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONARRINDEX.php', - 'Predis\\Command\\Redis\\Json\\JSONARRINSERT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONARRINSERT.php', - 'Predis\\Command\\Redis\\Json\\JSONARRLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONARRLEN.php', - 'Predis\\Command\\Redis\\Json\\JSONARRPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONARRPOP.php', - 'Predis\\Command\\Redis\\Json\\JSONARRTRIM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONARRTRIM.php', - 'Predis\\Command\\Redis\\Json\\JSONCLEAR' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONCLEAR.php', - 'Predis\\Command\\Redis\\Json\\JSONDEBUG' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONDEBUG.php', - 'Predis\\Command\\Redis\\Json\\JSONDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONDEL.php', - 'Predis\\Command\\Redis\\Json\\JSONFORGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONFORGET.php', - 'Predis\\Command\\Redis\\Json\\JSONGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONGET.php', - 'Predis\\Command\\Redis\\Json\\JSONMERGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONMERGE.php', - 'Predis\\Command\\Redis\\Json\\JSONMGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONMGET.php', - 'Predis\\Command\\Redis\\Json\\JSONMSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONMSET.php', - 'Predis\\Command\\Redis\\Json\\JSONNUMINCRBY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONNUMINCRBY.php', - 'Predis\\Command\\Redis\\Json\\JSONOBJKEYS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONOBJKEYS.php', - 'Predis\\Command\\Redis\\Json\\JSONOBJLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONOBJLEN.php', - 'Predis\\Command\\Redis\\Json\\JSONRESP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONRESP.php', - 'Predis\\Command\\Redis\\Json\\JSONSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONSET.php', - 'Predis\\Command\\Redis\\Json\\JSONSTRAPPEND' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONSTRAPPEND.php', - 'Predis\\Command\\Redis\\Json\\JSONSTRLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONSTRLEN.php', - 'Predis\\Command\\Redis\\Json\\JSONTOGGLE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONTOGGLE.php', - 'Predis\\Command\\Redis\\Json\\JSONTYPE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Json/JSONTYPE.php', - 'Predis\\Command\\Redis\\KEYS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/KEYS.php', - 'Predis\\Command\\Redis\\LASTSAVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LASTSAVE.php', - 'Predis\\Command\\Redis\\LCS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LCS.php', - 'Predis\\Command\\Redis\\LINDEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LINDEX.php', - 'Predis\\Command\\Redis\\LINSERT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LINSERT.php', - 'Predis\\Command\\Redis\\LLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LLEN.php', - 'Predis\\Command\\Redis\\LMOVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LMOVE.php', - 'Predis\\Command\\Redis\\LMPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LMPOP.php', - 'Predis\\Command\\Redis\\LPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LPOP.php', - 'Predis\\Command\\Redis\\LPUSH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LPUSH.php', - 'Predis\\Command\\Redis\\LPUSHX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LPUSHX.php', - 'Predis\\Command\\Redis\\LRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LRANGE.php', - 'Predis\\Command\\Redis\\LREM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LREM.php', - 'Predis\\Command\\Redis\\LSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LSET.php', - 'Predis\\Command\\Redis\\LTRIM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/LTRIM.php', - 'Predis\\Command\\Redis\\MGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/MGET.php', - 'Predis\\Command\\Redis\\MIGRATE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/MIGRATE.php', - 'Predis\\Command\\Redis\\MONITOR' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/MONITOR.php', - 'Predis\\Command\\Redis\\MOVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/MOVE.php', - 'Predis\\Command\\Redis\\MSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/MSET.php', - 'Predis\\Command\\Redis\\MSETEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/MSETEX.php', - 'Predis\\Command\\Redis\\MSETNX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/MSETNX.php', - 'Predis\\Command\\Redis\\MULTI' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/MULTI.php', - 'Predis\\Command\\Redis\\OBJECT_' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/OBJECT_.php', - 'Predis\\Command\\Redis\\PERSIST' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PERSIST.php', - 'Predis\\Command\\Redis\\PEXPIRE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PEXPIRE.php', - 'Predis\\Command\\Redis\\PEXPIREAT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PEXPIREAT.php', - 'Predis\\Command\\Redis\\PEXPIRETIME' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PEXPIRETIME.php', - 'Predis\\Command\\Redis\\PFADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PFADD.php', - 'Predis\\Command\\Redis\\PFCOUNT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PFCOUNT.php', - 'Predis\\Command\\Redis\\PFMERGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PFMERGE.php', - 'Predis\\Command\\Redis\\PING' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PING.php', - 'Predis\\Command\\Redis\\PSETEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PSETEX.php', - 'Predis\\Command\\Redis\\PSUBSCRIBE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PSUBSCRIBE.php', - 'Predis\\Command\\Redis\\PTTL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PTTL.php', - 'Predis\\Command\\Redis\\PUBLISH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PUBLISH.php', - 'Predis\\Command\\Redis\\PUBSUB' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PUBSUB.php', - 'Predis\\Command\\Redis\\PUNSUBSCRIBE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/PUNSUBSCRIBE.php', - 'Predis\\Command\\Redis\\QUIT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/QUIT.php', - 'Predis\\Command\\Redis\\RANDOMKEY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/RANDOMKEY.php', - 'Predis\\Command\\Redis\\RENAME' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/RENAME.php', - 'Predis\\Command\\Redis\\RENAMENX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/RENAMENX.php', - 'Predis\\Command\\Redis\\RESTORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/RESTORE.php', - 'Predis\\Command\\Redis\\RPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/RPOP.php', - 'Predis\\Command\\Redis\\RPOPLPUSH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/RPOPLPUSH.php', - 'Predis\\Command\\Redis\\RPUSH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/RPUSH.php', - 'Predis\\Command\\Redis\\RPUSHX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/RPUSHX.php', - 'Predis\\Command\\Redis\\SADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SADD.php', - 'Predis\\Command\\Redis\\SAVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SAVE.php', - 'Predis\\Command\\Redis\\SCAN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SCAN.php', - 'Predis\\Command\\Redis\\SCARD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SCARD.php', - 'Predis\\Command\\Redis\\SCRIPT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SCRIPT.php', - 'Predis\\Command\\Redis\\SDIFF' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SDIFF.php', - 'Predis\\Command\\Redis\\SDIFFSTORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SDIFFSTORE.php', - 'Predis\\Command\\Redis\\SELECT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SELECT.php', - 'Predis\\Command\\Redis\\SENTINEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SENTINEL.php', - 'Predis\\Command\\Redis\\SET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SET.php', - 'Predis\\Command\\Redis\\SETBIT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SETBIT.php', - 'Predis\\Command\\Redis\\SETEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SETEX.php', - 'Predis\\Command\\Redis\\SETNX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SETNX.php', - 'Predis\\Command\\Redis\\SETRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SETRANGE.php', - 'Predis\\Command\\Redis\\SHUTDOWN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SHUTDOWN.php', - 'Predis\\Command\\Redis\\SINTER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SINTER.php', - 'Predis\\Command\\Redis\\SINTERCARD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SINTERCARD.php', - 'Predis\\Command\\Redis\\SINTERSTORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SINTERSTORE.php', - 'Predis\\Command\\Redis\\SISMEMBER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SISMEMBER.php', - 'Predis\\Command\\Redis\\SLAVEOF' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SLAVEOF.php', - 'Predis\\Command\\Redis\\SLOWLOG' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SLOWLOG.php', - 'Predis\\Command\\Redis\\SMEMBERS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SMEMBERS.php', - 'Predis\\Command\\Redis\\SMISMEMBER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SMISMEMBER.php', - 'Predis\\Command\\Redis\\SMOVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SMOVE.php', - 'Predis\\Command\\Redis\\SORT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SORT.php', - 'Predis\\Command\\Redis\\SORT_RO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SORT_RO.php', - 'Predis\\Command\\Redis\\SPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SPOP.php', - 'Predis\\Command\\Redis\\SPUBLISH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SPUBLISH.php', - 'Predis\\Command\\Redis\\SRANDMEMBER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SRANDMEMBER.php', - 'Predis\\Command\\Redis\\SREM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SREM.php', - 'Predis\\Command\\Redis\\SSCAN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SSCAN.php', - 'Predis\\Command\\Redis\\SSUBSCRIBE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SSUBSCRIBE.php', - 'Predis\\Command\\Redis\\STRLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/STRLEN.php', - 'Predis\\Command\\Redis\\SUBSCRIBE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SUBSCRIBE.php', - 'Predis\\Command\\Redis\\SUBSTR' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SUBSTR.php', - 'Predis\\Command\\Redis\\SUNION' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SUNION.php', - 'Predis\\Command\\Redis\\SUNIONSTORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SUNIONSTORE.php', - 'Predis\\Command\\Redis\\SUNSUBSCRIBE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/SUNSUBSCRIBE.php', - 'Predis\\Command\\Redis\\Search\\FTAGGREGATE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTAGGREGATE.php', - 'Predis\\Command\\Redis\\Search\\FTALIASADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTALIASADD.php', - 'Predis\\Command\\Redis\\Search\\FTALIASDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTALIASDEL.php', - 'Predis\\Command\\Redis\\Search\\FTALIASUPDATE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTALIASUPDATE.php', - 'Predis\\Command\\Redis\\Search\\FTALTER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTALTER.php', - 'Predis\\Command\\Redis\\Search\\FTCONFIG' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTCONFIG.php', - 'Predis\\Command\\Redis\\Search\\FTCREATE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTCREATE.php', - 'Predis\\Command\\Redis\\Search\\FTCURSOR' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTCURSOR.php', - 'Predis\\Command\\Redis\\Search\\FTDICTADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTDICTADD.php', - 'Predis\\Command\\Redis\\Search\\FTDICTDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTDICTDEL.php', - 'Predis\\Command\\Redis\\Search\\FTDICTDUMP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTDICTDUMP.php', - 'Predis\\Command\\Redis\\Search\\FTDROPINDEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTDROPINDEX.php', - 'Predis\\Command\\Redis\\Search\\FTEXPLAIN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTEXPLAIN.php', - 'Predis\\Command\\Redis\\Search\\FTHYBRID' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTHYBRID.php', - 'Predis\\Command\\Redis\\Search\\FTINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTINFO.php', - 'Predis\\Command\\Redis\\Search\\FTPROFILE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTPROFILE.php', - 'Predis\\Command\\Redis\\Search\\FTSEARCH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTSEARCH.php', - 'Predis\\Command\\Redis\\Search\\FTSPELLCHECK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTSPELLCHECK.php', - 'Predis\\Command\\Redis\\Search\\FTSUGADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTSUGADD.php', - 'Predis\\Command\\Redis\\Search\\FTSUGDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTSUGDEL.php', - 'Predis\\Command\\Redis\\Search\\FTSUGGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTSUGGET.php', - 'Predis\\Command\\Redis\\Search\\FTSUGLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTSUGLEN.php', - 'Predis\\Command\\Redis\\Search\\FTSYNDUMP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTSYNDUMP.php', - 'Predis\\Command\\Redis\\Search\\FTSYNUPDATE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTSYNUPDATE.php', - 'Predis\\Command\\Redis\\Search\\FTTAGVALS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FTTAGVALS.php', - 'Predis\\Command\\Redis\\Search\\FT_LIST' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Search/FT_LIST.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTADD.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTBYRANK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTBYRANK.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTBYREVRANK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTBYREVRANK.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTCDF' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTCDF.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTCREATE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTCREATE.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTINFO.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTMAX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTMAX.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTMERGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTMERGE.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTMIN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTMIN.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTQUANTILE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTQUANTILE.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTRANK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTRANK.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTRESET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTRESET.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTREVRANK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTREVRANK.php', - 'Predis\\Command\\Redis\\TDigest\\TDIGESTTRIMMED_MEAN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TDigest/TDIGESTTRIMMED_MEAN.php', - 'Predis\\Command\\Redis\\TIME' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TIME.php', - 'Predis\\Command\\Redis\\TOUCH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TOUCH.php', - 'Predis\\Command\\Redis\\TTL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TTL.php', - 'Predis\\Command\\Redis\\TYPE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TYPE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSADD.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSALTER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSALTER.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSCREATE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSCREATE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSCREATERULE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSCREATERULE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSDECRBY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSDECRBY.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSDEL.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSDELETERULE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSDELETERULE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSGET.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSINCRBY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSINCRBY.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSINFO.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSMADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSMADD.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSMGET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSMGET.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSMRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSMRANGE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSMREVRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSMREVRANGE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSQUERYINDEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSQUERYINDEX.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSRANGE.php', - 'Predis\\Command\\Redis\\TimeSeries\\TSREVRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TimeSeries/TSREVRANGE.php', - 'Predis\\Command\\Redis\\TopK\\TOPKADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TopK/TOPKADD.php', - 'Predis\\Command\\Redis\\TopK\\TOPKINCRBY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TopK/TOPKINCRBY.php', - 'Predis\\Command\\Redis\\TopK\\TOPKINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TopK/TOPKINFO.php', - 'Predis\\Command\\Redis\\TopK\\TOPKLIST' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TopK/TOPKLIST.php', - 'Predis\\Command\\Redis\\TopK\\TOPKQUERY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TopK/TOPKQUERY.php', - 'Predis\\Command\\Redis\\TopK\\TOPKRESERVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/TopK/TOPKRESERVE.php', - 'Predis\\Command\\Redis\\UNLINK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/UNLINK.php', - 'Predis\\Command\\Redis\\UNSUBSCRIBE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/UNSUBSCRIBE.php', - 'Predis\\Command\\Redis\\UNWATCH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/UNWATCH.php', - 'Predis\\Command\\Redis\\Utils\\CommandUtility' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Utils/CommandUtility.php', - 'Predis\\Command\\Redis\\Utils\\VectorUtility' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Utils/VectorUtility.php', - 'Predis\\Command\\Redis\\VADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VADD.php', - 'Predis\\Command\\Redis\\VCARD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VCARD.php', - 'Predis\\Command\\Redis\\VDIM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VDIM.php', - 'Predis\\Command\\Redis\\VEMB' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VEMB.php', - 'Predis\\Command\\Redis\\VGETATTR' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VGETATTR.php', - 'Predis\\Command\\Redis\\VINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VINFO.php', - 'Predis\\Command\\Redis\\VLINKS' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VLINKS.php', - 'Predis\\Command\\Redis\\VRANDMEMBER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VRANDMEMBER.php', - 'Predis\\Command\\Redis\\VRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VRANGE.php', - 'Predis\\Command\\Redis\\VREM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VREM.php', - 'Predis\\Command\\Redis\\VSETATTR' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VSETATTR.php', - 'Predis\\Command\\Redis\\VSIM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/VSIM.php', - 'Predis\\Command\\Redis\\WAITAOF' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/WAITAOF.php', - 'Predis\\Command\\Redis\\WATCH' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/WATCH.php', - 'Predis\\Command\\Redis\\XACK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XACK.php', - 'Predis\\Command\\Redis\\XACKDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XACKDEL.php', - 'Predis\\Command\\Redis\\XADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XADD.php', - 'Predis\\Command\\Redis\\XAUTOCLAIM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XAUTOCLAIM.php', - 'Predis\\Command\\Redis\\XCFGSET' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XCFGSET.php', - 'Predis\\Command\\Redis\\XCLAIM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XCLAIM.php', - 'Predis\\Command\\Redis\\XDEL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XDEL.php', - 'Predis\\Command\\Redis\\XDELEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XDELEX.php', - 'Predis\\Command\\Redis\\XGROUP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XGROUP.php', - 'Predis\\Command\\Redis\\XINFO' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XINFO.php', - 'Predis\\Command\\Redis\\XLEN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XLEN.php', - 'Predis\\Command\\Redis\\XNACK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XNACK.php', - 'Predis\\Command\\Redis\\XPENDING' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XPENDING.php', - 'Predis\\Command\\Redis\\XRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XRANGE.php', - 'Predis\\Command\\Redis\\XREAD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XREAD.php', - 'Predis\\Command\\Redis\\XREADGROUP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XREADGROUP.php', - 'Predis\\Command\\Redis\\XREADGROUP_CLAIM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XREADGROUP_CLAIM.php', - 'Predis\\Command\\Redis\\XREVRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XREVRANGE.php', - 'Predis\\Command\\Redis\\XSETID' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XSETID.php', - 'Predis\\Command\\Redis\\XTRIM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/XTRIM.php', - 'Predis\\Command\\Redis\\ZADD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZADD.php', - 'Predis\\Command\\Redis\\ZCARD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZCARD.php', - 'Predis\\Command\\Redis\\ZCOUNT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZCOUNT.php', - 'Predis\\Command\\Redis\\ZDIFF' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZDIFF.php', - 'Predis\\Command\\Redis\\ZDIFFSTORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZDIFFSTORE.php', - 'Predis\\Command\\Redis\\ZINCRBY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZINCRBY.php', - 'Predis\\Command\\Redis\\ZINTER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZINTER.php', - 'Predis\\Command\\Redis\\ZINTERCARD' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZINTERCARD.php', - 'Predis\\Command\\Redis\\ZINTERSTORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZINTERSTORE.php', - 'Predis\\Command\\Redis\\ZLEXCOUNT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZLEXCOUNT.php', - 'Predis\\Command\\Redis\\ZMPOP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZMPOP.php', - 'Predis\\Command\\Redis\\ZMSCORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZMSCORE.php', - 'Predis\\Command\\Redis\\ZPOPMAX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZPOPMAX.php', - 'Predis\\Command\\Redis\\ZPOPMIN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZPOPMIN.php', - 'Predis\\Command\\Redis\\ZRANDMEMBER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZRANDMEMBER.php', - 'Predis\\Command\\Redis\\ZRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZRANGE.php', - 'Predis\\Command\\Redis\\ZRANGEBYLEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZRANGEBYLEX.php', - 'Predis\\Command\\Redis\\ZRANGEBYSCORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZRANGEBYSCORE.php', - 'Predis\\Command\\Redis\\ZRANGESTORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZRANGESTORE.php', - 'Predis\\Command\\Redis\\ZRANK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZRANK.php', - 'Predis\\Command\\Redis\\ZREM' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZREM.php', - 'Predis\\Command\\Redis\\ZREMRANGEBYLEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZREMRANGEBYLEX.php', - 'Predis\\Command\\Redis\\ZREMRANGEBYRANK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZREMRANGEBYRANK.php', - 'Predis\\Command\\Redis\\ZREMRANGEBYSCORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZREMRANGEBYSCORE.php', - 'Predis\\Command\\Redis\\ZREVRANGE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZREVRANGE.php', - 'Predis\\Command\\Redis\\ZREVRANGEBYLEX' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZREVRANGEBYLEX.php', - 'Predis\\Command\\Redis\\ZREVRANGEBYSCORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZREVRANGEBYSCORE.php', - 'Predis\\Command\\Redis\\ZREVRANK' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZREVRANK.php', - 'Predis\\Command\\Redis\\ZSCAN' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZSCAN.php', - 'Predis\\Command\\Redis\\ZSCORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZSCORE.php', - 'Predis\\Command\\Redis\\ZUNION' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZUNION.php', - 'Predis\\Command\\Redis\\ZUNIONSTORE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/ZUNIONSTORE.php', - 'Predis\\Command\\ScriptCommand' => __DIR__ . '/..' . '/predis/predis/src/Command/ScriptCommand.php', - 'Predis\\Command\\Traits\\Aggregate' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Aggregate.php', - 'Predis\\Command\\Traits\\BitByte' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/BitByte.php', - 'Predis\\Command\\Traits\\BloomFilters\\BucketSize' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/BloomFilters/BucketSize.php', - 'Predis\\Command\\Traits\\BloomFilters\\Capacity' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/BloomFilters/Capacity.php', - 'Predis\\Command\\Traits\\BloomFilters\\Error' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/BloomFilters/Error.php', - 'Predis\\Command\\Traits\\BloomFilters\\Expansion' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/BloomFilters/Expansion.php', - 'Predis\\Command\\Traits\\BloomFilters\\Items' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/BloomFilters/Items.php', - 'Predis\\Command\\Traits\\BloomFilters\\MaxIterations' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/BloomFilters/MaxIterations.php', - 'Predis\\Command\\Traits\\BloomFilters\\NoCreate' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/BloomFilters/NoCreate.php', - 'Predis\\Command\\Traits\\By\\ByArgument' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/By/ByArgument.php', - 'Predis\\Command\\Traits\\By\\ByLexByScore' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/By/ByLexByScore.php', - 'Predis\\Command\\Traits\\By\\GeoBy' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/By/GeoBy.php', - 'Predis\\Command\\Traits\\Count' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Count.php', - 'Predis\\Command\\Traits\\DB' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/DB.php', - 'Predis\\Command\\Traits\\Expire\\ExpireOptions' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Expire/ExpireOptions.php', - 'Predis\\Command\\Traits\\From\\GeoFrom' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/From/GeoFrom.php', - 'Predis\\Command\\Traits\\Get\\Get' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Get/Get.php', - 'Predis\\Command\\Traits\\Json\\Indent' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Json/Indent.php', - 'Predis\\Command\\Traits\\Json\\Newline' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Json/Newline.php', - 'Predis\\Command\\Traits\\Json\\NxXxArgument' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Json/NxXxArgument.php', - 'Predis\\Command\\Traits\\Json\\Space' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Json/Space.php', - 'Predis\\Command\\Traits\\Keys' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Keys.php', - 'Predis\\Command\\Traits\\LeftRight' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/LeftRight.php', - 'Predis\\Command\\Traits\\Limit\\Limit' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Limit/Limit.php', - 'Predis\\Command\\Traits\\Limit\\LimitObject' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Limit/LimitObject.php', - 'Predis\\Command\\Traits\\MinMaxModifier' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/MinMaxModifier.php', - 'Predis\\Command\\Traits\\Replace' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Replace.php', - 'Predis\\Command\\Traits\\Rev' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Rev.php', - 'Predis\\Command\\Traits\\Sorting' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Sorting.php', - 'Predis\\Command\\Traits\\Storedist' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Storedist.php', - 'Predis\\Command\\Traits\\Timeout' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Timeout.php', - 'Predis\\Command\\Traits\\To\\ServerTo' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/To/ServerTo.php', - 'Predis\\Command\\Traits\\Weights' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/Weights.php', - 'Predis\\Command\\Traits\\With\\WithCoord' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/With/WithCoord.php', - 'Predis\\Command\\Traits\\With\\WithDist' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/With/WithDist.php', - 'Predis\\Command\\Traits\\With\\WithHash' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/With/WithHash.php', - 'Predis\\Command\\Traits\\With\\WithScores' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/With/WithScores.php', - 'Predis\\Command\\Traits\\With\\WithValues' => __DIR__ . '/..' . '/predis/predis/src/Command/Traits/With/WithValues.php', - 'Predis\\CommunicationException' => __DIR__ . '/..' . '/predis/predis/src/CommunicationException.php', - 'Predis\\Configuration\\OptionInterface' => __DIR__ . '/..' . '/predis/predis/src/Configuration/OptionInterface.php', - 'Predis\\Configuration\\Option\\Aggregate' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Option/Aggregate.php', - 'Predis\\Configuration\\Option\\CRC16' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Option/CRC16.php', - 'Predis\\Configuration\\Option\\Cluster' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Option/Cluster.php', - 'Predis\\Configuration\\Option\\Commands' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Option/Commands.php', - 'Predis\\Configuration\\Option\\Connections' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Option/Connections.php', - 'Predis\\Configuration\\Option\\Exceptions' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Option/Exceptions.php', - 'Predis\\Configuration\\Option\\Prefix' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Option/Prefix.php', - 'Predis\\Configuration\\Option\\Replication' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Option/Replication.php', - 'Predis\\Configuration\\Option\\UpstreamDriver' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Option/UpstreamDriver.php', - 'Predis\\Configuration\\Options' => __DIR__ . '/..' . '/predis/predis/src/Configuration/Options.php', - 'Predis\\Configuration\\OptionsInterface' => __DIR__ . '/..' . '/predis/predis/src/Configuration/OptionsInterface.php', - 'Predis\\Connection\\AbstractAggregateConnection' => __DIR__ . '/..' . '/predis/predis/src/Connection/AbstractAggregateConnection.php', - 'Predis\\Connection\\AbstractConnection' => __DIR__ . '/..' . '/predis/predis/src/Connection/AbstractConnection.php', - 'Predis\\Connection\\AggregateConnectionInterface' => __DIR__ . '/..' . '/predis/predis/src/Connection/AggregateConnectionInterface.php', - 'Predis\\Connection\\Cluster\\ClusterInterface' => __DIR__ . '/..' . '/predis/predis/src/Connection/Cluster/ClusterInterface.php', - 'Predis\\Connection\\Cluster\\PredisCluster' => __DIR__ . '/..' . '/predis/predis/src/Connection/Cluster/PredisCluster.php', - 'Predis\\Connection\\Cluster\\RedisCluster' => __DIR__ . '/..' . '/predis/predis/src/Connection/Cluster/RedisCluster.php', - 'Predis\\Connection\\CompositeConnectionInterface' => __DIR__ . '/..' . '/predis/predis/src/Connection/CompositeConnectionInterface.php', - 'Predis\\Connection\\CompositeStreamConnection' => __DIR__ . '/..' . '/predis/predis/src/Connection/CompositeStreamConnection.php', - 'Predis\\Connection\\ConnectionException' => __DIR__ . '/..' . '/predis/predis/src/Connection/ConnectionException.php', - 'Predis\\Connection\\ConnectionInterface' => __DIR__ . '/..' . '/predis/predis/src/Connection/ConnectionInterface.php', - 'Predis\\Connection\\Factory' => __DIR__ . '/..' . '/predis/predis/src/Connection/Factory.php', - 'Predis\\Connection\\FactoryInterface' => __DIR__ . '/..' . '/predis/predis/src/Connection/FactoryInterface.php', - 'Predis\\Connection\\NodeConnectionInterface' => __DIR__ . '/..' . '/predis/predis/src/Connection/NodeConnectionInterface.php', - 'Predis\\Connection\\Parameters' => __DIR__ . '/..' . '/predis/predis/src/Connection/Parameters.php', - 'Predis\\Connection\\ParametersInterface' => __DIR__ . '/..' . '/predis/predis/src/Connection/ParametersInterface.php', - 'Predis\\Connection\\RelayConnection' => __DIR__ . '/..' . '/predis/predis/src/Connection/RelayConnection.php', - 'Predis\\Connection\\RelayFactory' => __DIR__ . '/..' . '/predis/predis/src/Connection/RelayFactory.php', - 'Predis\\Connection\\RelayMethods' => __DIR__ . '/..' . '/predis/predis/src/Connection/RelayMethods.php', - 'Predis\\Connection\\Replication\\MasterSlaveReplication' => __DIR__ . '/..' . '/predis/predis/src/Connection/Replication/MasterSlaveReplication.php', - 'Predis\\Connection\\Replication\\ReplicationInterface' => __DIR__ . '/..' . '/predis/predis/src/Connection/Replication/ReplicationInterface.php', - 'Predis\\Connection\\Replication\\SentinelReplication' => __DIR__ . '/..' . '/predis/predis/src/Connection/Replication/SentinelReplication.php', - 'Predis\\Connection\\Resource\\Exception\\StreamInitException' => __DIR__ . '/..' . '/predis/predis/src/Connection/Resource/Exception/StreamInitException.php', - 'Predis\\Connection\\Resource\\Stream' => __DIR__ . '/..' . '/predis/predis/src/Connection/Resource/Stream.php', - 'Predis\\Connection\\Resource\\StreamFactory' => __DIR__ . '/..' . '/predis/predis/src/Connection/Resource/StreamFactory.php', - 'Predis\\Connection\\Resource\\StreamFactoryInterface' => __DIR__ . '/..' . '/predis/predis/src/Connection/Resource/StreamFactoryInterface.php', - 'Predis\\Connection\\StreamConnection' => __DIR__ . '/..' . '/predis/predis/src/Connection/StreamConnection.php', - 'Predis\\Consumer\\AbstractConsumer' => __DIR__ . '/..' . '/predis/predis/src/Consumer/AbstractConsumer.php', - 'Predis\\Consumer\\AbstractDispatcherLoop' => __DIR__ . '/..' . '/predis/predis/src/Consumer/AbstractDispatcherLoop.php', - 'Predis\\Consumer\\ConsumerInterface' => __DIR__ . '/..' . '/predis/predis/src/Consumer/ConsumerInterface.php', - 'Predis\\Consumer\\DispatcherLoopInterface' => __DIR__ . '/..' . '/predis/predis/src/Consumer/DispatcherLoopInterface.php', - 'Predis\\Consumer\\PubSub\\Consumer' => __DIR__ . '/..' . '/predis/predis/src/Consumer/PubSub/Consumer.php', - 'Predis\\Consumer\\PubSub\\DispatcherLoop' => __DIR__ . '/..' . '/predis/predis/src/Consumer/PubSub/DispatcherLoop.php', - 'Predis\\Consumer\\PubSub\\RelayConsumer' => __DIR__ . '/..' . '/predis/predis/src/Consumer/PubSub/RelayConsumer.php', - 'Predis\\Consumer\\PubSub\\SubscriptionContext' => __DIR__ . '/..' . '/predis/predis/src/Consumer/PubSub/SubscriptionContext.php', - 'Predis\\Consumer\\Push\\Consumer' => __DIR__ . '/..' . '/predis/predis/src/Consumer/Push/Consumer.php', - 'Predis\\Consumer\\Push\\DispatcherLoop' => __DIR__ . '/..' . '/predis/predis/src/Consumer/Push/DispatcherLoop.php', - 'Predis\\Consumer\\Push\\PushNotificationException' => __DIR__ . '/..' . '/predis/predis/src/Consumer/Push/PushNotificationException.php', - 'Predis\\Consumer\\Push\\PushResponse' => __DIR__ . '/..' . '/predis/predis/src/Consumer/Push/PushResponse.php', - 'Predis\\Consumer\\Push\\PushResponseInterface' => __DIR__ . '/..' . '/predis/predis/src/Consumer/Push/PushResponseInterface.php', - 'Predis\\Monitor\\Consumer' => __DIR__ . '/..' . '/predis/predis/src/Monitor/Consumer.php', - 'Predis\\NotSupportedException' => __DIR__ . '/..' . '/predis/predis/src/NotSupportedException.php', - 'Predis\\Pipeline\\Atomic' => __DIR__ . '/..' . '/predis/predis/src/Pipeline/Atomic.php', - 'Predis\\Pipeline\\ConnectionErrorProof' => __DIR__ . '/..' . '/predis/predis/src/Pipeline/ConnectionErrorProof.php', - 'Predis\\Pipeline\\FireAndForget' => __DIR__ . '/..' . '/predis/predis/src/Pipeline/FireAndForget.php', - 'Predis\\Pipeline\\Pipeline' => __DIR__ . '/..' . '/predis/predis/src/Pipeline/Pipeline.php', - 'Predis\\Pipeline\\RelayAtomic' => __DIR__ . '/..' . '/predis/predis/src/Pipeline/RelayAtomic.php', - 'Predis\\Pipeline\\RelayPipeline' => __DIR__ . '/..' . '/predis/predis/src/Pipeline/RelayPipeline.php', - 'Predis\\PredisException' => __DIR__ . '/..' . '/predis/predis/src/PredisException.php', - 'Predis\\Protocol\\Parser\\ParserStrategyResolver' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Parser/ParserStrategyResolver.php', - 'Predis\\Protocol\\Parser\\ParserStrategyResolverInterface' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Parser/ParserStrategyResolverInterface.php', - 'Predis\\Protocol\\Parser\\Strategy\\ParserStrategyInterface' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Parser/Strategy/ParserStrategyInterface.php', - 'Predis\\Protocol\\Parser\\Strategy\\Resp2Strategy' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Parser/Strategy/Resp2Strategy.php', - 'Predis\\Protocol\\Parser\\Strategy\\Resp3Strategy' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Parser/Strategy/Resp3Strategy.php', - 'Predis\\Protocol\\Parser\\UnexpectedTypeException' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Parser/UnexpectedTypeException.php', - 'Predis\\Protocol\\ProtocolException' => __DIR__ . '/..' . '/predis/predis/src/Protocol/ProtocolException.php', - 'Predis\\Protocol\\ProtocolProcessorInterface' => __DIR__ . '/..' . '/predis/predis/src/Protocol/ProtocolProcessorInterface.php', - 'Predis\\Protocol\\RequestSerializerInterface' => __DIR__ . '/..' . '/predis/predis/src/Protocol/RequestSerializerInterface.php', - 'Predis\\Protocol\\ResponseReaderInterface' => __DIR__ . '/..' . '/predis/predis/src/Protocol/ResponseReaderInterface.php', - 'Predis\\Protocol\\Text\\CompositeProtocolProcessor' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/CompositeProtocolProcessor.php', - 'Predis\\Protocol\\Text\\Handler\\BulkResponse' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/Handler/BulkResponse.php', - 'Predis\\Protocol\\Text\\Handler\\ErrorResponse' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/Handler/ErrorResponse.php', - 'Predis\\Protocol\\Text\\Handler\\IntegerResponse' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/Handler/IntegerResponse.php', - 'Predis\\Protocol\\Text\\Handler\\MultiBulkResponse' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/Handler/MultiBulkResponse.php', - 'Predis\\Protocol\\Text\\Handler\\ResponseHandlerInterface' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/Handler/ResponseHandlerInterface.php', - 'Predis\\Protocol\\Text\\Handler\\StatusResponse' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/Handler/StatusResponse.php', - 'Predis\\Protocol\\Text\\Handler\\StreamableMultiBulkResponse' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/Handler/StreamableMultiBulkResponse.php', - 'Predis\\Protocol\\Text\\ProtocolProcessor' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/ProtocolProcessor.php', - 'Predis\\Protocol\\Text\\RequestSerializer' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/RequestSerializer.php', - 'Predis\\Protocol\\Text\\ResponseReader' => __DIR__ . '/..' . '/predis/predis/src/Protocol/Text/ResponseReader.php', - 'Predis\\Replication\\MissingMasterException' => __DIR__ . '/..' . '/predis/predis/src/Replication/MissingMasterException.php', - 'Predis\\Replication\\ReplicationStrategy' => __DIR__ . '/..' . '/predis/predis/src/Replication/ReplicationStrategy.php', - 'Predis\\Replication\\RoleException' => __DIR__ . '/..' . '/predis/predis/src/Replication/RoleException.php', - 'Predis\\Response\\Error' => __DIR__ . '/..' . '/predis/predis/src/Response/Error.php', - 'Predis\\Response\\ErrorInterface' => __DIR__ . '/..' . '/predis/predis/src/Response/ErrorInterface.php', - 'Predis\\Response\\Iterator\\MultiBulk' => __DIR__ . '/..' . '/predis/predis/src/Response/Iterator/MultiBulk.php', - 'Predis\\Response\\Iterator\\MultiBulkIterator' => __DIR__ . '/..' . '/predis/predis/src/Response/Iterator/MultiBulkIterator.php', - 'Predis\\Response\\Iterator\\MultiBulkTuple' => __DIR__ . '/..' . '/predis/predis/src/Response/Iterator/MultiBulkTuple.php', - 'Predis\\Response\\ResponseInterface' => __DIR__ . '/..' . '/predis/predis/src/Response/ResponseInterface.php', - 'Predis\\Response\\ServerException' => __DIR__ . '/..' . '/predis/predis/src/Response/ServerException.php', - 'Predis\\Response\\Status' => __DIR__ . '/..' . '/predis/predis/src/Response/Status.php', - 'Predis\\Retry\\Retry' => __DIR__ . '/..' . '/predis/predis/src/Retry/Retry.php', - 'Predis\\Retry\\Strategy\\EqualBackoff' => __DIR__ . '/..' . '/predis/predis/src/Retry/Strategy/EqualBackoff.php', - 'Predis\\Retry\\Strategy\\ExponentialBackoff' => __DIR__ . '/..' . '/predis/predis/src/Retry/Strategy/ExponentialBackoff.php', - 'Predis\\Retry\\Strategy\\NoBackoff' => __DIR__ . '/..' . '/predis/predis/src/Retry/Strategy/NoBackoff.php', - 'Predis\\Retry\\Strategy\\RetryStrategyInterface' => __DIR__ . '/..' . '/predis/predis/src/Retry/Strategy/RetryStrategyInterface.php', - 'Predis\\Session\\Handler' => __DIR__ . '/..' . '/predis/predis/src/Session/Handler.php', - 'Predis\\TimeoutException' => __DIR__ . '/..' . '/predis/predis/src/TimeoutException.php', - 'Predis\\Transaction\\AbortedMultiExecException' => __DIR__ . '/..' . '/predis/predis/src/Transaction/AbortedMultiExecException.php', - 'Predis\\Transaction\\Exception\\TransactionException' => __DIR__ . '/..' . '/predis/predis/src/Transaction/Exception/TransactionException.php', - 'Predis\\Transaction\\MultiExec' => __DIR__ . '/..' . '/predis/predis/src/Transaction/MultiExec.php', - 'Predis\\Transaction\\MultiExecState' => __DIR__ . '/..' . '/predis/predis/src/Transaction/MultiExecState.php', - 'Predis\\Transaction\\Response\\BypassTransactionResponse' => __DIR__ . '/..' . '/predis/predis/src/Transaction/Response/BypassTransactionResponse.php', - 'Predis\\Transaction\\Strategy\\ClusterConnectionStrategy' => __DIR__ . '/..' . '/predis/predis/src/Transaction/Strategy/ClusterConnectionStrategy.php', - 'Predis\\Transaction\\Strategy\\ConnectionStrategyResolver' => __DIR__ . '/..' . '/predis/predis/src/Transaction/Strategy/ConnectionStrategyResolver.php', - 'Predis\\Transaction\\Strategy\\NodeConnectionStrategy' => __DIR__ . '/..' . '/predis/predis/src/Transaction/Strategy/NodeConnectionStrategy.php', - 'Predis\\Transaction\\Strategy\\NonClusterConnectionStrategy' => __DIR__ . '/..' . '/predis/predis/src/Transaction/Strategy/NonClusterConnectionStrategy.php', - 'Predis\\Transaction\\Strategy\\ReplicationConnectionStrategy' => __DIR__ . '/..' . '/predis/predis/src/Transaction/Strategy/ReplicationConnectionStrategy.php', - 'Predis\\Transaction\\Strategy\\StrategyInterface' => __DIR__ . '/..' . '/predis/predis/src/Transaction/Strategy/StrategyInterface.php', - 'Predis\\Transaction\\Strategy\\StrategyResolverInterface' => __DIR__ . '/..' . '/predis/predis/src/Transaction/Strategy/StrategyResolverInterface.php', - 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', - 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', - 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', - 'Psr\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/EventDispatcherInterface.php', - 'Psr\\EventDispatcher\\ListenerProviderInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/ListenerProviderInterface.php', - 'Psr\\EventDispatcher\\StoppableEventInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/StoppableEventInterface.php', - 'Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php', - 'Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php', - 'Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php', - 'Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php', - 'Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php', - 'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php', - 'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php', - 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/src/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/src/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/src/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/src/NullLogger.php', - 'React\\Cache\\ArrayCache' => __DIR__ . '/..' . '/react/cache/src/ArrayCache.php', - 'React\\Cache\\CacheInterface' => __DIR__ . '/..' . '/react/cache/src/CacheInterface.php', - 'React\\ChildProcess\\Process' => __DIR__ . '/..' . '/react/child-process/src/Process.php', - 'React\\Dns\\BadServerException' => __DIR__ . '/..' . '/react/dns/src/BadServerException.php', - 'React\\Dns\\Config\\Config' => __DIR__ . '/..' . '/react/dns/src/Config/Config.php', - 'React\\Dns\\Config\\HostsFile' => __DIR__ . '/..' . '/react/dns/src/Config/HostsFile.php', - 'React\\Dns\\Model\\Message' => __DIR__ . '/..' . '/react/dns/src/Model/Message.php', - 'React\\Dns\\Model\\Record' => __DIR__ . '/..' . '/react/dns/src/Model/Record.php', - 'React\\Dns\\Protocol\\BinaryDumper' => __DIR__ . '/..' . '/react/dns/src/Protocol/BinaryDumper.php', - 'React\\Dns\\Protocol\\Parser' => __DIR__ . '/..' . '/react/dns/src/Protocol/Parser.php', - 'React\\Dns\\Query\\CachingExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/CachingExecutor.php', - 'React\\Dns\\Query\\CancellationException' => __DIR__ . '/..' . '/react/dns/src/Query/CancellationException.php', - 'React\\Dns\\Query\\CoopExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/CoopExecutor.php', - 'React\\Dns\\Query\\ExecutorInterface' => __DIR__ . '/..' . '/react/dns/src/Query/ExecutorInterface.php', - 'React\\Dns\\Query\\FallbackExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/FallbackExecutor.php', - 'React\\Dns\\Query\\HostsFileExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/HostsFileExecutor.php', - 'React\\Dns\\Query\\Query' => __DIR__ . '/..' . '/react/dns/src/Query/Query.php', - 'React\\Dns\\Query\\RetryExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/RetryExecutor.php', - 'React\\Dns\\Query\\SelectiveTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/SelectiveTransportExecutor.php', - 'React\\Dns\\Query\\TcpTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/TcpTransportExecutor.php', - 'React\\Dns\\Query\\TimeoutException' => __DIR__ . '/..' . '/react/dns/src/Query/TimeoutException.php', - 'React\\Dns\\Query\\TimeoutExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/TimeoutExecutor.php', - 'React\\Dns\\Query\\UdpTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/UdpTransportExecutor.php', - 'React\\Dns\\RecordNotFoundException' => __DIR__ . '/..' . '/react/dns/src/RecordNotFoundException.php', - 'React\\Dns\\Resolver\\Factory' => __DIR__ . '/..' . '/react/dns/src/Resolver/Factory.php', - 'React\\Dns\\Resolver\\Resolver' => __DIR__ . '/..' . '/react/dns/src/Resolver/Resolver.php', - 'React\\Dns\\Resolver\\ResolverInterface' => __DIR__ . '/..' . '/react/dns/src/Resolver/ResolverInterface.php', - 'React\\EventLoop\\ExtEvLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtEvLoop.php', - 'React\\EventLoop\\ExtEventLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtEventLoop.php', - 'React\\EventLoop\\ExtLibevLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtLibevLoop.php', - 'React\\EventLoop\\ExtLibeventLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtLibeventLoop.php', - 'React\\EventLoop\\ExtUvLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtUvLoop.php', - 'React\\EventLoop\\Factory' => __DIR__ . '/..' . '/react/event-loop/src/Factory.php', - 'React\\EventLoop\\Loop' => __DIR__ . '/..' . '/react/event-loop/src/Loop.php', - 'React\\EventLoop\\LoopInterface' => __DIR__ . '/..' . '/react/event-loop/src/LoopInterface.php', - 'React\\EventLoop\\SignalsHandler' => __DIR__ . '/..' . '/react/event-loop/src/SignalsHandler.php', - 'React\\EventLoop\\StreamSelectLoop' => __DIR__ . '/..' . '/react/event-loop/src/StreamSelectLoop.php', - 'React\\EventLoop\\Tick\\FutureTickQueue' => __DIR__ . '/..' . '/react/event-loop/src/Tick/FutureTickQueue.php', - 'React\\EventLoop\\TimerInterface' => __DIR__ . '/..' . '/react/event-loop/src/TimerInterface.php', - 'React\\EventLoop\\Timer\\Timer' => __DIR__ . '/..' . '/react/event-loop/src/Timer/Timer.php', - 'React\\EventLoop\\Timer\\Timers' => __DIR__ . '/..' . '/react/event-loop/src/Timer/Timers.php', - 'React\\Promise\\Deferred' => __DIR__ . '/..' . '/react/promise/src/Deferred.php', - 'React\\Promise\\Exception\\CompositeException' => __DIR__ . '/..' . '/react/promise/src/Exception/CompositeException.php', - 'React\\Promise\\Exception\\LengthException' => __DIR__ . '/..' . '/react/promise/src/Exception/LengthException.php', - 'React\\Promise\\Internal\\CancellationQueue' => __DIR__ . '/..' . '/react/promise/src/Internal/CancellationQueue.php', - 'React\\Promise\\Internal\\FulfilledPromise' => __DIR__ . '/..' . '/react/promise/src/Internal/FulfilledPromise.php', - 'React\\Promise\\Internal\\RejectedPromise' => __DIR__ . '/..' . '/react/promise/src/Internal/RejectedPromise.php', - 'React\\Promise\\Promise' => __DIR__ . '/..' . '/react/promise/src/Promise.php', - 'React\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/react/promise/src/PromiseInterface.php', - 'React\\Socket\\Connection' => __DIR__ . '/..' . '/react/socket/src/Connection.php', - 'React\\Socket\\ConnectionInterface' => __DIR__ . '/..' . '/react/socket/src/ConnectionInterface.php', - 'React\\Socket\\Connector' => __DIR__ . '/..' . '/react/socket/src/Connector.php', - 'React\\Socket\\ConnectorInterface' => __DIR__ . '/..' . '/react/socket/src/ConnectorInterface.php', - 'React\\Socket\\DnsConnector' => __DIR__ . '/..' . '/react/socket/src/DnsConnector.php', - 'React\\Socket\\FdServer' => __DIR__ . '/..' . '/react/socket/src/FdServer.php', - 'React\\Socket\\FixedUriConnector' => __DIR__ . '/..' . '/react/socket/src/FixedUriConnector.php', - 'React\\Socket\\HappyEyeBallsConnectionBuilder' => __DIR__ . '/..' . '/react/socket/src/HappyEyeBallsConnectionBuilder.php', - 'React\\Socket\\HappyEyeBallsConnector' => __DIR__ . '/..' . '/react/socket/src/HappyEyeBallsConnector.php', - 'React\\Socket\\LimitingServer' => __DIR__ . '/..' . '/react/socket/src/LimitingServer.php', - 'React\\Socket\\SecureConnector' => __DIR__ . '/..' . '/react/socket/src/SecureConnector.php', - 'React\\Socket\\SecureServer' => __DIR__ . '/..' . '/react/socket/src/SecureServer.php', - 'React\\Socket\\Server' => __DIR__ . '/..' . '/react/socket/src/Server.php', - 'React\\Socket\\ServerInterface' => __DIR__ . '/..' . '/react/socket/src/ServerInterface.php', - 'React\\Socket\\SocketServer' => __DIR__ . '/..' . '/react/socket/src/SocketServer.php', - 'React\\Socket\\StreamEncryption' => __DIR__ . '/..' . '/react/socket/src/StreamEncryption.php', - 'React\\Socket\\TcpConnector' => __DIR__ . '/..' . '/react/socket/src/TcpConnector.php', - 'React\\Socket\\TcpServer' => __DIR__ . '/..' . '/react/socket/src/TcpServer.php', - 'React\\Socket\\TimeoutConnector' => __DIR__ . '/..' . '/react/socket/src/TimeoutConnector.php', - 'React\\Socket\\UnixConnector' => __DIR__ . '/..' . '/react/socket/src/UnixConnector.php', - 'React\\Socket\\UnixServer' => __DIR__ . '/..' . '/react/socket/src/UnixServer.php', - 'React\\Stream\\CompositeStream' => __DIR__ . '/..' . '/react/stream/src/CompositeStream.php', - 'React\\Stream\\DuplexResourceStream' => __DIR__ . '/..' . '/react/stream/src/DuplexResourceStream.php', - 'React\\Stream\\DuplexStreamInterface' => __DIR__ . '/..' . '/react/stream/src/DuplexStreamInterface.php', - 'React\\Stream\\ReadableResourceStream' => __DIR__ . '/..' . '/react/stream/src/ReadableResourceStream.php', - 'React\\Stream\\ReadableStreamInterface' => __DIR__ . '/..' . '/react/stream/src/ReadableStreamInterface.php', - 'React\\Stream\\ThroughStream' => __DIR__ . '/..' . '/react/stream/src/ThroughStream.php', - 'React\\Stream\\Util' => __DIR__ . '/..' . '/react/stream/src/Util.php', - 'React\\Stream\\WritableResourceStream' => __DIR__ . '/..' . '/react/stream/src/WritableResourceStream.php', - 'React\\Stream\\WritableStreamInterface' => __DIR__ . '/..' . '/react/stream/src/WritableStreamInterface.php', - 'ReflectionConstant' => __DIR__ . '/..' . '/symfony/polyfill-php84/Resources/stubs/ReflectionConstant.php', - 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', - 'RoundingMode' => __DIR__ . '/..' . '/symfony/polyfill-php84/Resources/stubs/RoundingMode.php', - 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', - 'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php', - 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', - 'SebastianBergmann\\CliParser\\Parser' => __DIR__ . '/..' . '/sebastian/cli-parser/src/Parser.php', - 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php', - 'SebastianBergmann\\CliParser\\UnknownOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php', - 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php', - 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php', - 'SebastianBergmann\\CodeCoverage\\Data\\ProcessedCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Data/ProcessedCodeCoverageData.php', - 'SebastianBergmann\\CodeCoverage\\Data\\RawCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Data/RawCodeCoverageData.php', - 'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Selector.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/XdebugDriver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php', - 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php', - 'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php', - 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php', - 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php', - 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php', - 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/CrapIndex.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php', - 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php', - 'SebastianBergmann\\CodeCoverage\\ParserException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ParserException.php', - 'SebastianBergmann\\CodeCoverage\\ReflectionException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php', - 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Cobertura.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Colors' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Colors.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\CustomCssFile' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/CustomCssFile.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', - 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Thresholds' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Thresholds.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', - 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php', - 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php', - 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Known' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Known.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Large' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Large.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Medium' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Medium.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Small' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Small.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\TestSize' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/TestSize.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestSize\\Unknown' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestSize/Unknown.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Failure' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/Failure.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Known' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/Known.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Success' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/Success.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\TestStatus' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/TestStatus.php', - 'SebastianBergmann\\CodeCoverage\\Test\\TestStatus\\Unknown' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/TestStatus/Unknown.php', - 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', - 'SebastianBergmann\\CodeCoverage\\Util\\DirectoryCouldNotBeCreatedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Filesystem.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Percentage.php', - 'SebastianBergmann\\CodeCoverage\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Xml.php', - 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php', - 'SebastianBergmann\\CodeCoverage\\XmlException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XmlException.php', - 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', - 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\ClassUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassUnit.php', - 'SebastianBergmann\\CodeUnit\\CodeUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnit.php', - 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollection.php', - 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php', - 'SebastianBergmann\\CodeUnit\\Exception' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/Exception.php', - 'SebastianBergmann\\CodeUnit\\FileUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/FileUnit.php', - 'SebastianBergmann\\CodeUnit\\FunctionUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/FunctionUnit.php', - 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceUnit.php', - 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php', - 'SebastianBergmann\\CodeUnit\\Mapper' => __DIR__ . '/..' . '/sebastian/code-unit/src/Mapper.php', - 'SebastianBergmann\\CodeUnit\\NoTraitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/NoTraitException.php', - 'SebastianBergmann\\CodeUnit\\ReflectionException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/ReflectionException.php', - 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitMethodUnit.php', - 'SebastianBergmann\\CodeUnit\\TraitUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitUnit.php', - 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', - 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', - 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', - 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php', - 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php', - 'SebastianBergmann\\Comparator\\EnumerationComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/EnumerationComparator.php', - 'SebastianBergmann\\Comparator\\Exception' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/Exception.php', - 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php', - 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php', - 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php', - 'SebastianBergmann\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumberComparator.php', - 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php', - 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php', - 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php', - 'SebastianBergmann\\Comparator\\RuntimeException' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php', - 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php', - 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php', - 'SebastianBergmann\\Complexity\\Calculator' => __DIR__ . '/..' . '/sebastian/complexity/src/Calculator.php', - 'SebastianBergmann\\Complexity\\Complexity' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/Complexity.php', - 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php', - 'SebastianBergmann\\Complexity\\ComplexityCollection' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollection.php', - 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php', - 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php', - 'SebastianBergmann\\Complexity\\Exception' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/Exception.php', - 'SebastianBergmann\\Complexity\\RuntimeException' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/RuntimeException.php', - 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php', - 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php', - 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', - 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php', - 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php', - 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php', - 'SebastianBergmann\\FileIterator\\ExcludeIterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/ExcludeIterator.php', - 'SebastianBergmann\\FileIterator\\Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php', - 'SebastianBergmann\\FileIterator\\Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php', - 'SebastianBergmann\\FileIterator\\Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php', - 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php', - 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php', - 'SebastianBergmann\\GlobalState\\ExcludeList' => __DIR__ . '/..' . '/sebastian/global-state/src/ExcludeList.php', - 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php', - 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php', - 'SebastianBergmann\\Invoker\\Exception' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/Exception.php', - 'SebastianBergmann\\Invoker\\Invoker' => __DIR__ . '/..' . '/phpunit/php-invoker/src/Invoker.php', - 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php', - 'SebastianBergmann\\Invoker\\TimeoutException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/TimeoutException.php', - 'SebastianBergmann\\LinesOfCode\\Counter' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Counter.php', - 'SebastianBergmann\\LinesOfCode\\Exception' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/Exception.php', - 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php', - 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LineCountingVisitor.php', - 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LinesOfCode.php', - 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php', - 'SebastianBergmann\\LinesOfCode\\RuntimeException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/RuntimeException.php', - 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php', - 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php', - 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php', - 'SebastianBergmann\\Template\\Exception' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/Exception.php', - 'SebastianBergmann\\Template\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php', - 'SebastianBergmann\\Template\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/RuntimeException.php', - 'SebastianBergmann\\Template\\Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php', - 'SebastianBergmann\\Timer\\Duration' => __DIR__ . '/..' . '/phpunit/php-timer/src/Duration.php', - 'SebastianBergmann\\Timer\\Exception' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/Exception.php', - 'SebastianBergmann\\Timer\\NoActiveTimerException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php', - 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => __DIR__ . '/..' . '/phpunit/php-timer/src/ResourceUsageFormatter.php', - 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php', - 'SebastianBergmann\\Timer\\Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php', - 'SebastianBergmann\\Type\\CallableType' => __DIR__ . '/..' . '/sebastian/type/src/type/CallableType.php', - 'SebastianBergmann\\Type\\Exception' => __DIR__ . '/..' . '/sebastian/type/src/exception/Exception.php', - 'SebastianBergmann\\Type\\FalseType' => __DIR__ . '/..' . '/sebastian/type/src/type/FalseType.php', - 'SebastianBergmann\\Type\\GenericObjectType' => __DIR__ . '/..' . '/sebastian/type/src/type/GenericObjectType.php', - 'SebastianBergmann\\Type\\IntersectionType' => __DIR__ . '/..' . '/sebastian/type/src/type/IntersectionType.php', - 'SebastianBergmann\\Type\\IterableType' => __DIR__ . '/..' . '/sebastian/type/src/type/IterableType.php', - 'SebastianBergmann\\Type\\MixedType' => __DIR__ . '/..' . '/sebastian/type/src/type/MixedType.php', - 'SebastianBergmann\\Type\\NeverType' => __DIR__ . '/..' . '/sebastian/type/src/type/NeverType.php', - 'SebastianBergmann\\Type\\NullType' => __DIR__ . '/..' . '/sebastian/type/src/type/NullType.php', - 'SebastianBergmann\\Type\\ObjectType' => __DIR__ . '/..' . '/sebastian/type/src/type/ObjectType.php', - 'SebastianBergmann\\Type\\Parameter' => __DIR__ . '/..' . '/sebastian/type/src/Parameter.php', - 'SebastianBergmann\\Type\\ReflectionMapper' => __DIR__ . '/..' . '/sebastian/type/src/ReflectionMapper.php', - 'SebastianBergmann\\Type\\RuntimeException' => __DIR__ . '/..' . '/sebastian/type/src/exception/RuntimeException.php', - 'SebastianBergmann\\Type\\SimpleType' => __DIR__ . '/..' . '/sebastian/type/src/type/SimpleType.php', - 'SebastianBergmann\\Type\\StaticType' => __DIR__ . '/..' . '/sebastian/type/src/type/StaticType.php', - 'SebastianBergmann\\Type\\TrueType' => __DIR__ . '/..' . '/sebastian/type/src/type/TrueType.php', - 'SebastianBergmann\\Type\\Type' => __DIR__ . '/..' . '/sebastian/type/src/type/Type.php', - 'SebastianBergmann\\Type\\TypeName' => __DIR__ . '/..' . '/sebastian/type/src/TypeName.php', - 'SebastianBergmann\\Type\\UnionType' => __DIR__ . '/..' . '/sebastian/type/src/type/UnionType.php', - 'SebastianBergmann\\Type\\UnknownType' => __DIR__ . '/..' . '/sebastian/type/src/type/UnknownType.php', - 'SebastianBergmann\\Type\\VoidType' => __DIR__ . '/..' . '/sebastian/type/src/type/VoidType.php', - 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php', - 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', - 'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php', - 'Symfony\\Component\\Console\\Attribute\\Argument' => __DIR__ . '/..' . '/symfony/console/Attribute/Argument.php', - 'Symfony\\Component\\Console\\Attribute\\AsCommand' => __DIR__ . '/..' . '/symfony/console/Attribute/AsCommand.php', - 'Symfony\\Component\\Console\\Attribute\\Ask' => __DIR__ . '/..' . '/symfony/console/Attribute/Ask.php', - 'Symfony\\Component\\Console\\Attribute\\Interact' => __DIR__ . '/..' . '/symfony/console/Attribute/Interact.php', - 'Symfony\\Component\\Console\\Attribute\\InteractiveAttributeInterface' => __DIR__ . '/..' . '/symfony/console/Attribute/InteractiveAttributeInterface.php', - 'Symfony\\Component\\Console\\Attribute\\MapInput' => __DIR__ . '/..' . '/symfony/console/Attribute/MapInput.php', - 'Symfony\\Component\\Console\\Attribute\\Option' => __DIR__ . '/..' . '/symfony/console/Attribute/Option.php', - 'Symfony\\Component\\Console\\Attribute\\Reflection\\ReflectionMember' => __DIR__ . '/..' . '/symfony/console/Attribute/Reflection/ReflectionMember.php', - 'Symfony\\Component\\Console\\CI\\GithubActionReporter' => __DIR__ . '/..' . '/symfony/console/CI/GithubActionReporter.php', - 'Symfony\\Component\\Console\\Color' => __DIR__ . '/..' . '/symfony/console/Color.php', - 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php', - 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php', - 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php', - 'Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php', - 'Symfony\\Component\\Console\\Command\\CompleteCommand' => __DIR__ . '/..' . '/symfony/console/Command/CompleteCommand.php', - 'Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => __DIR__ . '/..' . '/symfony/console/Command/DumpCompletionCommand.php', - 'Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php', - 'Symfony\\Component\\Console\\Command\\InvokableCommand' => __DIR__ . '/..' . '/symfony/console/Command/InvokableCommand.php', - 'Symfony\\Component\\Console\\Command\\LazyCommand' => __DIR__ . '/..' . '/symfony/console/Command/LazyCommand.php', - 'Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php', - 'Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php', - 'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => __DIR__ . '/..' . '/symfony/console/Command/SignalableCommandInterface.php', - 'Symfony\\Component\\Console\\Command\\TraceableCommand' => __DIR__ . '/..' . '/symfony/console/Command/TraceableCommand.php', - 'Symfony\\Component\\Console\\Completion\\CompletionInput' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionInput.php', - 'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionSuggestions.php', - 'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/BashCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => __DIR__ . '/..' . '/symfony/console/Completion/Output/CompletionOutputInterface.php', - 'Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/FishCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/ZshCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Suggestion' => __DIR__ . '/..' . '/symfony/console/Completion/Suggestion.php', - 'Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php', - 'Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php', - 'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => __DIR__ . '/..' . '/symfony/console/DataCollector/CommandDataCollector.php', - 'Symfony\\Component\\Console\\Debug\\CliRequest' => __DIR__ . '/..' . '/symfony/console/Debug/CliRequest.php', - 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', - 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php', - 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php', - 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php', - 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php', - 'Symfony\\Component\\Console\\Event\\ConsoleAlarmEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleAlarmEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleCommandEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleErrorEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleSignalEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleTerminateEvent.php', - 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php', - 'Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php', - 'Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php', - 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => __DIR__ . '/..' . '/symfony/console/Exception/RunCommandFailedException.php', - 'Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php', - 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php', - 'Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php', - 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php', - 'Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php', - 'Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php', - 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php', - 'Symfony\\Component\\Console\\Helper\\OutputWrapper' => __DIR__ . '/..' . '/symfony/console/Helper/OutputWrapper.php', - 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php', - 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php', - 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php', - 'Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php', - 'Symfony\\Component\\Console\\Helper\\TableCellStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableCellStyle.php', - 'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php', - 'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php', - 'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php', - 'Symfony\\Component\\Console\\Helper\\TerminalInputHelper' => __DIR__ . '/..' . '/symfony/console/Helper/TerminalInputHelper.php', - 'Symfony\\Component\\Console\\Helper\\TreeHelper' => __DIR__ . '/..' . '/symfony/console/Helper/TreeHelper.php', - 'Symfony\\Component\\Console\\Helper\\TreeNode' => __DIR__ . '/..' . '/symfony/console/Helper/TreeNode.php', - 'Symfony\\Component\\Console\\Helper\\TreeStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TreeStyle.php', - 'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php', - 'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php', - 'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php', - 'Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php', - 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php', - 'Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php', - 'Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php', - 'Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php', - 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php', - 'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php', - 'Symfony\\Component\\Console\\Interaction\\Interaction' => __DIR__ . '/..' . '/symfony/console/Interaction/Interaction.php', - 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandContext.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessage.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessageHandler.php', - 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => __DIR__ . '/..' . '/symfony/console/Output/AnsiColorMode.php', - 'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php', - 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php', - 'Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php', - 'Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php', - 'Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php', - 'Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php', - 'Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => __DIR__ . '/..' . '/symfony/console/Output/TrimmedBufferOutput.php', - 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php', - 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php', - 'Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalMap.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalRegistry.php', - 'Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php', - 'Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php', - 'Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php', - 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php', - 'Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php', - 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => __DIR__ . '/..' . '/symfony/console/Tester/ApplicationTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandCompletionTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandTester.php', - 'Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => __DIR__ . '/..' . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', - 'Symfony\\Component\\Console\\Tester\\TesterTrait' => __DIR__ . '/..' . '/symfony/console/Tester/TesterTrait.php', - 'Symfony\\Component\\EventDispatcher\\Attribute\\AsEventListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Attribute/AsEventListener.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/WrappedListener.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventSubscriberInterface.php', - 'Symfony\\Component\\EventDispatcher\\GenericEvent' => __DIR__ . '/..' . '/symfony/event-dispatcher/GenericEvent.php', - 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', - 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/RuntimeException.php', - 'Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php', - 'Symfony\\Component\\Filesystem\\Path' => __DIR__ . '/..' . '/symfony/filesystem/Path.php', - 'Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php', - 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php', - 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php', - 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php', - 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php', - 'Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php', - 'Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php', - 'Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php', - 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\LazyIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/LazyIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', - 'Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php', - 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => __DIR__ . '/..' . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/AccessException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/ExceptionInterface.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/MissingOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoConfigurationException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoSuchOptionException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/OptionDefinitionException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/UndefinedOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => __DIR__ . '/..' . '/symfony/options-resolver/OptionConfigurator.php', - 'Symfony\\Component\\OptionsResolver\\Options' => __DIR__ . '/..' . '/symfony/options-resolver/Options.php', - 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => __DIR__ . '/..' . '/symfony/options-resolver/OptionsResolver.php', - 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessStartFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessStartFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php', - 'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/RunProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php', - 'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php', - 'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessContext.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessage.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessageHandler.php', - 'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php', - 'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php', - 'Symfony\\Component\\Process\\PhpSubprocess' => __DIR__ . '/..' . '/symfony/process/PhpSubprocess.php', - 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php', - 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php', - 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php', - 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php', - 'Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php', - 'Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php', - 'Symfony\\Component\\Stopwatch\\Section' => __DIR__ . '/..' . '/symfony/stopwatch/Section.php', - 'Symfony\\Component\\Stopwatch\\Stopwatch' => __DIR__ . '/..' . '/symfony/stopwatch/Stopwatch.php', - 'Symfony\\Component\\Stopwatch\\StopwatchEvent' => __DIR__ . '/..' . '/symfony/stopwatch/StopwatchEvent.php', - 'Symfony\\Component\\Stopwatch\\StopwatchPeriod' => __DIR__ . '/..' . '/symfony/stopwatch/StopwatchPeriod.php', - 'Symfony\\Component\\String\\AbstractString' => __DIR__ . '/..' . '/symfony/string/AbstractString.php', - 'Symfony\\Component\\String\\AbstractUnicodeString' => __DIR__ . '/..' . '/symfony/string/AbstractUnicodeString.php', - 'Symfony\\Component\\String\\ByteString' => __DIR__ . '/..' . '/symfony/string/ByteString.php', - 'Symfony\\Component\\String\\CodePointString' => __DIR__ . '/..' . '/symfony/string/CodePointString.php', - 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/string/Exception/ExceptionInterface.php', - 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/string/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\String\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/string/Exception/RuntimeException.php', - 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/EnglishInflector.php', - 'Symfony\\Component\\String\\Inflector\\FrenchInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/FrenchInflector.php', - 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => __DIR__ . '/..' . '/symfony/string/Inflector/InflectorInterface.php', - 'Symfony\\Component\\String\\Inflector\\SpanishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/SpanishInflector.php', - 'Symfony\\Component\\String\\LazyString' => __DIR__ . '/..' . '/symfony/string/LazyString.php', - 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => __DIR__ . '/..' . '/symfony/string/Slugger/AsciiSlugger.php', - 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => __DIR__ . '/..' . '/symfony/string/Slugger/SluggerInterface.php', - 'Symfony\\Component\\String\\TruncateMode' => __DIR__ . '/..' . '/symfony/string/TruncateMode.php', - 'Symfony\\Component\\String\\UnicodeString' => __DIR__ . '/..' . '/symfony/string/UnicodeString.php', - 'Symfony\\Contracts\\EventDispatcher\\Event' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/Event.php', - 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', - 'Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php', - 'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php', - 'Symfony\\Contracts\\Service\\ContainerAwareInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ContainerAwareInterface.php', - 'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php', - 'Symfony\\Contracts\\Service\\ServiceCollectionInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceCollectionInterface.php', - 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php', - 'Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php', - 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php', - 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/Grapheme.php', - 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Normalizer.php', - 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php', - 'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php', - 'Symfony\\Polyfill\\Php80\\PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/PhpToken.php', - 'Symfony\\Polyfill\\Php81\\Php81' => __DIR__ . '/..' . '/symfony/polyfill-php81/Php81.php', - 'Symfony\\Polyfill\\Php84\\Php84' => __DIR__ . '/..' . '/symfony/polyfill-php84/Php84.php', - 'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php', - 'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php', - 'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php', - 'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php', - 'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php', - 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php', - 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php', - 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php', - 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', - 'org\\bovigo\\vfs\\DotDirectory' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/DotDirectory.php', - 'org\\bovigo\\vfs\\Quota' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/Quota.php', - 'org\\bovigo\\vfs\\content\\FileContent' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/content/FileContent.php', - 'org\\bovigo\\vfs\\content\\LargeFileContent' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/content/LargeFileContent.php', - 'org\\bovigo\\vfs\\content\\SeekableFileContent' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/content/SeekableFileContent.php', - 'org\\bovigo\\vfs\\content\\StringBasedFileContent' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/content/StringBasedFileContent.php', - 'org\\bovigo\\vfs\\vfsStream' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStream.php', - 'org\\bovigo\\vfs\\vfsStreamAbstractContent' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamAbstractContent.php', - 'org\\bovigo\\vfs\\vfsStreamBlock' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamBlock.php', - 'org\\bovigo\\vfs\\vfsStreamContainer' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamContainer.php', - 'org\\bovigo\\vfs\\vfsStreamContainerIterator' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamContainerIterator.php', - 'org\\bovigo\\vfs\\vfsStreamContent' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamContent.php', - 'org\\bovigo\\vfs\\vfsStreamDirectory' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamDirectory.php', - 'org\\bovigo\\vfs\\vfsStreamException' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamException.php', - 'org\\bovigo\\vfs\\vfsStreamFile' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamFile.php', - 'org\\bovigo\\vfs\\vfsStreamWrapper' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamWrapper.php', - 'org\\bovigo\\vfs\\visitor\\vfsStreamAbstractVisitor' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamAbstractVisitor.php', - 'org\\bovigo\\vfs\\visitor\\vfsStreamPrintVisitor' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitor.php', - 'org\\bovigo\\vfs\\visitor\\vfsStreamStructureVisitor' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitor.php', - 'org\\bovigo\\vfs\\visitor\\vfsStreamVisitor' => __DIR__ . '/..' . '/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamVisitor.php', - 'staabm\\SideEffectsDetector\\SideEffect' => __DIR__ . '/..' . '/staabm/side-effects-detector/lib/SideEffect.php', - 'staabm\\SideEffectsDetector\\SideEffectsDetector' => __DIR__ . '/..' . '/staabm/side-effects-detector/lib/SideEffectsDetector.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitc05219cdb593cfd83731ced9b4908c07::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitc05219cdb593cfd83731ced9b4908c07::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInitc05219cdb593cfd83731ced9b4908c07::$prefixesPsr0; - $loader->classMap = ComposerStaticInitc05219cdb593cfd83731ced9b4908c07::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/v3_ci4/vendor/composer/installed.json b/v3_ci4/vendor/composer/installed.json deleted file mode 100644 index f890a90..0000000 --- a/v3_ci4/vendor/composer/installed.json +++ /dev/null @@ -1,5205 +0,0 @@ -{ - "packages": [ - { - "name": "clue/ndjson-react", - "version": "v1.3.0", - "version_normalized": "1.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/clue/reactphp-ndjson.git", - "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", - "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "react/stream": "^1.2" - }, - "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", - "react/event-loop": "^1.2" - }, - "time": "2022-12-23T10:58:28+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Clue\\React\\NDJson\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering" - } - ], - "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", - "homepage": "https://github.com/clue/reactphp-ndjson", - "keywords": [ - "NDJSON", - "json", - "jsonlines", - "newline", - "reactphp", - "streaming" - ], - "support": { - "issues": "https://github.com/clue/reactphp-ndjson/issues", - "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" - }, - "funding": [ - { - "url": "https://clue.engineering/support", - "type": "custom" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "install-path": "../clue/ndjson-react" - }, - { - "name": "codeigniter/coding-standard", - "version": "v1.9.2", - "version_normalized": "1.9.2.0", - "source": { - "type": "git", - "url": "https://github.com/CodeIgniter/coding-standard.git", - "reference": "e9c690ebb86140a2ddf874940b0758c4b88110ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CodeIgniter/coding-standard/zipball/e9c690ebb86140a2ddf874940b0758c4b88110ce", - "reference": "e9c690ebb86140a2ddf874940b0758c4b88110ce", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "friendsofphp/php-cs-fixer": "^3.95", - "nexusphp/cs-config": "^3.28", - "php": "^8.2" - }, - "require-dev": { - "nexusphp/tachycardia": "^2.4", - "phpstan/phpstan": "^2.1", - "phpunit/phpunit": "^11.5 || ^12.5" - }, - "time": "2026-04-11T20:06:02+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "CodeIgniter\\CodingStandard\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Paul E. Balandan, CPA", - "email": "paulbalandan@gmail.com" - } - ], - "description": "Official Coding Standards for CodeIgniter based on PHP CS Fixer", - "keywords": [ - "phpcs", - "static analysis" - ], - "support": { - "forum": "http://forum.codeigniter.com/", - "issues": "https://github.com/CodeIgniter/coding-standard/issues", - "slack": "https://codeigniterchat.slack.com", - "source": "https://github.com/CodeIgniter/coding-standard" - }, - "install-path": "../codeigniter/coding-standard" - }, - { - "name": "composer/pcre", - "version": "3.4.0", - "version_normalized": "3.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "d5a341b3fb61f3001970940afb1d332968a183ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/d5a341b3fb61f3001970940afb1d332968a183ed", - "reference": "d5a341b3fb61f3001970940afb1d332968a183ed", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<2.2.2" - }, - "require-dev": { - "phpstan/phpstan": "^2", - "phpstan/phpstan-deprecation-rules": "^2", - "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "^9" - }, - "time": "2026-06-07T11:47:49+00:00", - "type": "library", - "extra": { - "phpstan": { - "includes": [ - "extension.neon" - ] - }, - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.4.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - } - ], - "install-path": "./pcre" - }, - { - "name": "composer/semver", - "version": "3.4.4", - "version_normalized": "3.4.4.0", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", - "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.11", - "symfony/phpunit-bridge": "^3 || ^7" - }, - "time": "2025-08-20T19:15:30+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.4" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - } - ], - "install-path": "./semver" - }, - { - "name": "composer/xdebug-handler", - "version": "3.0.5", - "version_normalized": "3.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", - "shasum": "" - }, - "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" - }, - "time": "2024-05-06T16:37:16+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "install-path": "./xdebug-handler" - }, - { - "name": "ergebnis/agent-detector", - "version": "1.2.0", - "version_normalized": "1.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/ergebnis/agent-detector.git", - "reference": "e211f17928c8b95a51e06040792d57f5462fb271" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ergebnis/agent-detector/zipball/e211f17928c8b95a51e06040792d57f5462fb271", - "reference": "e211f17928c8b95a51e06040792d57f5462fb271", - "shasum": "" - }, - "require": { - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0 || ~8.6.0" - }, - "require-dev": { - "ergebnis/composer-normalize": "^2.51.0", - "ergebnis/license": "^2.7.0", - "ergebnis/php-cs-fixer-config": "^6.60.2", - "ergebnis/phpstan-rules": "^2.13.1", - "ergebnis/phpunit-slow-test-detector": "^2.24.0", - "ergebnis/rector-rules": "^1.18.1", - "fakerphp/faker": "^1.24.1", - "infection/infection": "^0.26.6", - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.1.54", - "phpstan/phpstan-deprecation-rules": "^2.0.4", - "phpstan/phpstan-phpunit": "^2.0.16", - "phpstan/phpstan-strict-rules": "^2.0.10", - "phpunit/phpunit": "^9.6.34", - "rector/rector": "^2.4.2" - }, - "time": "2026-05-07T08:19:07+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - }, - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Ergebnis\\AgentDetector\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andreas Möller", - "email": "am@localheinz.com", - "homepage": "https://localheinz.com" - } - ], - "description": "Provides a detector for detecting the presence of an agent.", - "homepage": "https://github.com/ergebnis/agent-detector", - "support": { - "issues": "https://github.com/ergebnis/agent-detector/issues", - "security": "https://github.com/ergebnis/agent-detector/blob/main/.github/SECURITY.md", - "source": "https://github.com/ergebnis/agent-detector" - }, - "install-path": "../ergebnis/agent-detector" - }, - { - "name": "evenement/evenement", - "version": "v3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/igorw/evenement.git", - "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", - "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^9 || ^6" - }, - "time": "2023-08-08T05:53:35+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Evenement\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "Événement is a very simple event dispatching library for PHP", - "keywords": [ - "event-dispatcher", - "event-emitter" - ], - "support": { - "issues": "https://github.com/igorw/evenement/issues", - "source": "https://github.com/igorw/evenement/tree/v3.0.2" - }, - "install-path": "../evenement/evenement" - }, - { - "name": "fakerphp/faker", - "version": "v1.24.1", - "version_normalized": "1.24.1.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "conflict": { - "fzaninotto/faker": "*" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "time": "2024-11-21T13:46:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" - }, - "install-path": "../fakerphp/faker" - }, - { - "name": "fidry/cpu-core-counter", - "version": "1.3.0", - "version_normalized": "1.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "db9508f7b1474469d9d3c53b86f817e344732678" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", - "reference": "db9508f7b1474469d9d3c53b86f817e344732678", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "fidry/makefile": "^0.2.0", - "fidry/php-cs-fixer-config": "^1.1.2", - "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-deprecation-rules": "^2.0.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^8.5.31 || ^9.5.26", - "webmozarts/strict-phpunit": "^7.5" - }, - "time": "2025-08-14T07:29:31+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Fidry\\CpuCoreCounter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Théo FIDRY", - "email": "theo.fidry@gmail.com" - } - ], - "description": "Tiny utility to get the number of CPU cores.", - "keywords": [ - "CPU", - "core" - ], - "support": { - "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" - }, - "funding": [ - { - "url": "https://github.com/theofidry", - "type": "github" - } - ], - "install-path": "../fidry/cpu-core-counter" - }, - { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.95.11", - "version_normalized": "3.95.11.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "35f98e1293283397824d7f349ce5afb8747c3cd5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/35f98e1293283397824d7f349ce5afb8747c3cd5", - "reference": "35f98e1293283397824d7f349ce5afb8747c3cd5", - "shasum": "" - }, - "require": { - "clue/ndjson-react": "^1.3", - "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.5", - "ergebnis/agent-detector": "^1.2", - "ext-filter": "*", - "ext-hash": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "fidry/cpu-core-counter": "^1.3", - "php": "^7.4 || ^8.0", - "react/child-process": "^0.6.6", - "react/event-loop": "^1.5", - "react/socket": "^1.16", - "react/stream": "^1.4", - "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0 || ^8.0 || ^9.0", - "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/polyfill-mbstring": "^1.37", - "symfony/polyfill-php80": "^1.37", - "symfony/polyfill-php81": "^1.37", - "symfony/polyfill-php84": "^1.37", - "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2 || ^8.0", - "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" - }, - "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.11.0", - "infection/infection": "^0.32.7", - "justinrainbow/json-schema": "^6.10.0", - "keradus/cli-executor": "^2.3", - "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.9.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.8", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.8", - "phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.55", - "symfony/polyfill-php85": "^1.38", - "symfony/var-dumper": "^5.4.48 || ^6.4.36 || ^7.4.8 || ^8.1.0", - "symfony/yaml": "^5.4.53 || ^6.4.41 || ^7.4.13 || ^8.1.0" - }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." - }, - "time": "2026-06-25T14:17:04+00:00", - "bin": [ - "php-cs-fixer" - ], - "type": "application", - "installation-source": "dist", - "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - }, - "exclude-from-classmap": [ - "src/**/Internal/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" - } - ], - "description": "A tool to automatically fix PHP code style", - "keywords": [ - "Static code analysis", - "fixer", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.95.11" - }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" - } - ], - "install-path": "../friendsofphp/php-cs-fixer" - }, - { - "name": "kint-php/kint", - "version": "6.1.0", - "version_normalized": "6.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/kint-php/kint.git", - "reference": "dd0f723029e3ebd0fa4edd895fa408bb2ce7003e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kint-php/kint/zipball/dd0f723029e3ebd0fa4edd895fa408bb2ce7003e", - "reference": "dd0f723029e3ebd0fa4edd895fa408bb2ce7003e", - "shasum": "" - }, - "require": { - "php": ">=7.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3", - "phpunit/phpunit": "^9", - "seld/phar-utils": "^1", - "symfony/finder": ">=7", - "vimeo/psalm": "^6" - }, - "suggest": { - "kint-php/kint-helpers": "Provides extra helper functions", - "kint-php/kint-twig": "Provides d() and s() functions in twig templates" - }, - "time": "2025-11-08T12:59:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "init.php" - ], - "psr-4": { - "Kint\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jonathan Vollebregt", - "homepage": "https://github.com/jnvsor" - }, - { - "name": "Contributors", - "homepage": "https://github.com/kint-php/kint/graphs/contributors" - } - ], - "description": "Kint - Advanced PHP dumper", - "homepage": "https://kint-php.github.io/kint/", - "keywords": [ - "debug", - "dump" - ], - "support": { - "issues": "https://github.com/kint-php/kint/issues", - "source": "https://github.com/kint-php/kint/tree/6.1.0" - }, - "install-path": "../kint-php/kint" - }, - { - "name": "laminas/laminas-escaper", - "version": "2.18.0", - "version_normalized": "2.18.0.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "06f211dfffff18d91844c1f55250d5d13c007e18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/06f211dfffff18d91844c1f55250d5d13c007e18", - "reference": "06f211dfffff18d91844c1f55250d5d13c007e18", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-mbstring": "*", - "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" - }, - "conflict": { - "zendframework/zend-escaper": "*" - }, - "require-dev": { - "infection/infection": "^0.31.0", - "laminas/laminas-coding-standard": "~3.1.0", - "phpunit/phpunit": "^11.5.42", - "psalm/plugin-phpunit": "^0.19.5", - "vimeo/psalm": "^6.13.1" - }, - "time": "2025-10-14T18:31:13+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Laminas\\Escaper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", - "homepage": "https://laminas.dev", - "keywords": [ - "escaper", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-escaper/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-escaper/issues", - "rss": "https://github.com/laminas/laminas-escaper/releases.atom", - "source": "https://github.com/laminas/laminas-escaper" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "install-path": "../laminas/laminas-escaper" - }, - { - "name": "mikey179/vfsstream", - "version": "v1.6.12", - "version_normalized": "1.6.12.0", - "source": { - "type": "git", - "url": "https://github.com/bovigo/vfsStream.git", - "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", - "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", - "shasum": "" - }, - "require": { - "php": ">=7.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.5||^8.5||^9.6", - "yoast/phpunit-polyfills": "^2.0" - }, - "time": "2024-08-29T18:43:31+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "org\\bovigo\\vfs\\": "src/main/php" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Frank Kleine", - "homepage": "http://frankkleine.de/", - "role": "Developer" - } - ], - "description": "Virtual file system to mock the real file system in unit tests.", - "homepage": "http://vfs.bovigo.org/", - "support": { - "issues": "https://github.com/bovigo/vfsStream/issues", - "source": "https://github.com/bovigo/vfsStream/tree/master", - "wiki": "https://github.com/bovigo/vfsStream/wiki" - }, - "install-path": "../mikey179/vfsstream" - }, - { - "name": "myclabs/deep-copy", - "version": "1.13.4", - "version_normalized": "1.13.4.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", - "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "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" - }, - "time": "2025-08-01T08:46:24+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "install-path": "../myclabs/deep-copy" - }, - { - "name": "nexusphp/cs-config", - "version": "v3.28.5", - "version_normalized": "3.28.5.0", - "source": { - "type": "git", - "url": "https://github.com/NexusPHP/cs-config.git", - "reference": "574c61fd4979e31808719e4afd52851c24a1f649" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/NexusPHP/cs-config/zipball/574c61fd4979e31808719e4afd52851c24a1f649", - "reference": "574c61fd4979e31808719e4afd52851c24a1f649", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "friendsofphp/php-cs-fixer": "^3.95", - "php": "^8.2" - }, - "require-dev": { - "nexusphp/tachycardia": "^2.4", - "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^2.1", - "phpstan/phpstan-phpunit": "^2.0", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^11.5 || ^12.5 || ^13.0" - }, - "time": "2026-05-15T18:57:13+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Nexus\\CsConfig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Paul E. Balandan, CPA", - "email": "paulbalandan@gmail.com" - } - ], - "description": "A factory for custom rulesets for PHP CS Fixer.", - "support": { - "issues": "https://github.com/NexusPHP/cs-config/issues", - "slack": "https://nexusphp.slack.com", - "source": "https://github.com/NexusPHP/cs-config.git" - }, - "install-path": "../nexusphp/cs-config" - }, - { - "name": "nikic/php-parser", - "version": "v5.7.0", - "version_normalized": "5.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" - }, - "time": "2025-12-06T11:56:16+00:00", - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "installation-source": "dist", - "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.7.0" - }, - "install-path": "../nikic/php-parser" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "version_normalized": "2.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "time": "2024-03-03T12:33:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "install-path": "../phar-io/manifest" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "version_normalized": "3.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "time": "2022-02-21T01:04:05+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "install-path": "../phar-io/version" - }, - { - "name": "phpunit/php-code-coverage", - "version": "11.0.12", - "version_normalized": "11.0.12.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", - "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^5.7.0", - "php": ">=8.2", - "phpunit/php-file-iterator": "^5.1.0", - "phpunit/php-text-template": "^4.0.1", - "sebastian/code-unit-reverse-lookup": "^4.0.1", - "sebastian/complexity": "^4.0.1", - "sebastian/environment": "^7.2.1", - "sebastian/lines-of-code": "^3.0.1", - "sebastian/version": "^5.0.2", - "theseer/tokenizer": "^1.3.1" - }, - "require-dev": { - "phpunit/phpunit": "^11.5.46" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "time": "2025-12-24T07:01:01+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "11.0.x-dev" - } - }, - "installation-source": "dist", - "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.12" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", - "type": "tidelift" - } - ], - "install-path": "../phpunit/php-code-coverage" - }, - { - "name": "phpunit/php-file-iterator", - "version": "5.1.1", - "version_normalized": "5.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/2f3a64888c814fc235386b7387dd5b5ed92ad903", - "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "time": "2026-02-02T13:52:54+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "installation-source": "dist", - "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.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", - "type": "tidelift" - } - ], - "install-path": "../phpunit/php-file-iterator" - }, - { - "name": "phpunit/php-invoker", - "version": "5.0.1", - "version_normalized": "5.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^11.0" - }, - "suggest": { - "ext-pcntl": "*" - }, - "time": "2024-07-03T05:07:44+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "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/5.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../phpunit/php-invoker" - }, - { - "name": "phpunit/php-text-template", - "version": "4.0.1", - "version_normalized": "4.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "time": "2024-07-03T05:08:43+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "installation-source": "dist", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../phpunit/php-text-template" - }, - { - "name": "phpunit/php-timer", - "version": "7.0.1", - "version_normalized": "7.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "time": "2024-07-03T05:09:35+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "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/7.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../phpunit/php-timer" - }, - { - "name": "phpunit/phpunit", - "version": "11.5.55", - "version_normalized": "11.5.55.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/adc7262fccc12de2b30f12a8aa0b33775d814f00", - "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.4", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", - "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.12", - "phpunit/php-file-iterator": "^5.1.1", - "phpunit/php-invoker": "^5.0.1", - "phpunit/php-text-template": "^4.0.1", - "phpunit/php-timer": "^7.0.1", - "sebastian/cli-parser": "^3.0.2", - "sebastian/code-unit": "^3.0.3", - "sebastian/comparator": "^6.3.3", - "sebastian/diff": "^6.0.2", - "sebastian/environment": "^7.2.1", - "sebastian/exporter": "^6.3.2", - "sebastian/global-state": "^7.0.2", - "sebastian/object-enumerator": "^6.0.1", - "sebastian/recursion-context": "^6.0.3", - "sebastian/type": "^5.1.3", - "sebastian/version": "^5.0.2", - "staabm/side-effects-detector": "^1.0.5" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" - }, - "time": "2026-02-18T12:37:06+00:00", - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "11.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.55" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "install-path": "../phpunit/phpunit" - }, - { - "name": "predis/predis", - "version": "v3.5.1", - "version_normalized": "3.5.1.0", - "source": { - "type": "git", - "url": "https://github.com/predis/predis.git", - "reference": "5c996db191ee2d9bafe651f454b1fca16754271b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/predis/predis/zipball/5c996db191ee2d9bafe651f454b1fca16754271b", - "reference": "5c996db191ee2d9bafe651f454b1fca16754271b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "psr/http-message": "^1.0|^2.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.3", - "phpstan/phpstan": "^1.9", - "phpunit/phpcov": "^6.0 || ^8.0", - "phpunit/phpunit": "^8.0 || ~9.4.4" - }, - "suggest": { - "ext-relay": "Faster connection with in-memory caching (>=0.6.2)" - }, - "time": "2026-06-11T16:56:53+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Predis\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Till Krüss", - "homepage": "https://till.im", - "role": "Maintainer" - } - ], - "description": "A flexible and feature-complete Redis/Valkey client for PHP.", - "homepage": "http://github.com/predis/predis", - "keywords": [ - "nosql", - "predis", - "redis" - ], - "support": { - "issues": "https://github.com/predis/predis/issues", - "source": "https://github.com/predis/predis/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/tillkruss", - "type": "github" - } - ], - "install-path": "../predis/predis" - }, - { - "name": "psr/container", - "version": "2.0.2", - "version_normalized": "2.0.2.0", - "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" - }, - "time": "2021-11-05T16:47:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "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" - }, - "install-path": "../psr/container" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "time": "2019-01-08T18:20:26+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "install-path": "../psr/event-dispatcher" - }, - { - "name": "psr/http-message", - "version": "2.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "time": "2023-04-04T09:54:51+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" - }, - "install-path": "../psr/http-message" - }, - { - "name": "psr/log", - "version": "3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2024-09-11T13:17:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.2" - }, - "install-path": "../psr/log" - }, - { - "name": "react/cache", - "version": "v1.2.0", - "version_normalized": "1.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/cache.git", - "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", - "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/promise": "^3.0 || ^2.0 || ^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" - }, - "time": "2022-11-30T15:59:55+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "React\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async, Promise-based cache interface for ReactPHP", - "keywords": [ - "cache", - "caching", - "promise", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/cache/issues", - "source": "https://github.com/reactphp/cache/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "install-path": "../react/cache" - }, - { - "name": "react/child-process", - "version": "v0.6.7", - "version_normalized": "0.6.7.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/child-process.git", - "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/970f0e71945556422ee4570ccbabaedc3cf04ad3", - "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/event-loop": "^1.2", - "react/stream": "^1.4" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/socket": "^1.16", - "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" - }, - "time": "2025-12-23T15:25:20+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "React\\ChildProcess\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Event-driven library for executing child processes with ReactPHP.", - "keywords": [ - "event-driven", - "process", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.7" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "install-path": "../react/child-process" - }, - { - "name": "react/dns", - "version": "v1.14.0", - "version_normalized": "1.14.0.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/dns.git", - "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/7562c05391f42701c1fccf189c8225fece1cd7c3", - "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.2", - "react/promise": "^3.2 || ^2.7 || ^1.2.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4.3 || ^3 || ^2", - "react/promise-timer": "^1.11" - }, - "time": "2025-11-18T19:34:28+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "React\\Dns\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async DNS resolver for ReactPHP", - "keywords": [ - "async", - "dns", - "dns-resolver", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.14.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "install-path": "../react/dns" - }, - { - "name": "react/event-loop", - "version": "v1.6.0", - "version_normalized": "1.6.0.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a", - "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" - }, - "suggest": { - "ext-pcntl": "For signal handling support when using the StreamSelectLoop" - }, - "time": "2025-11-17T20:46:25+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "support": { - "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.6.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "install-path": "../react/event-loop" - }, - { - "name": "react/promise", - "version": "v3.3.0", - "version_normalized": "3.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", - "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", - "shasum": "" - }, - "require": { - "php": ">=7.1.0" - }, - "require-dev": { - "phpstan/phpstan": "1.12.28 || 1.4.10", - "phpunit/phpunit": "^9.6 || ^7.5" - }, - "time": "2025-08-19T18:57:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.3.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "install-path": "../react/promise" - }, - { - "name": "react/socket", - "version": "v1.17.0", - "version_normalized": "1.17.0.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/ef5b17b81f6f60504c539313f94f2d826c5faa08", - "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/dns": "^1.13", - "react/event-loop": "^1.2", - "react/promise": "^3.2 || ^2.6 || ^1.2.1", - "react/stream": "^1.4" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4.3 || ^3.3 || ^2", - "react/promise-stream": "^1.4", - "react/promise-timer": "^1.11" - }, - "time": "2025-11-19T20:47:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "React\\Socket\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", - "keywords": [ - "Connection", - "Socket", - "async", - "reactphp", - "stream" - ], - "support": { - "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.17.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "install-path": "../react/socket" - }, - { - "name": "react/stream", - "version": "v1.4.0", - "version_normalized": "1.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/stream.git", - "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", - "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.8", - "react/event-loop": "^1.2" - }, - "require-dev": { - "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" - }, - "time": "2024-06-11T12:45:25+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "React\\Stream\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", - "keywords": [ - "event-driven", - "io", - "non-blocking", - "pipe", - "reactphp", - "readable", - "stream", - "writable" - ], - "support": { - "issues": "https://github.com/reactphp/stream/issues", - "source": "https://github.com/reactphp/stream/tree/v1.4.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "install-path": "../react/stream" - }, - { - "name": "sebastian/cli-parser", - "version": "3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "time": "2024-07-03T04:41:36+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "installation-source": "dist", - "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 parsing CLI options", - "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/cli-parser" - }, - { - "name": "sebastian/code-unit", - "version": "3.0.3", - "version_normalized": "3.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", - "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.5" - }, - "time": "2025-03-19T07:56:08+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "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/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/code-unit" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "4.0.1", - "version_normalized": "4.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "time": "2024-07-03T04:45:54+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "installation-source": "dist", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/code-unit-reverse-lookup" - }, - { - "name": "sebastian/comparator", - "version": "6.3.3", - "version_normalized": "6.3.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", - "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/diff": "^6.0", - "sebastian/exporter": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.4" - }, - "suggest": { - "ext-bcmath": "For comparing BcMath\\Number objects" - }, - "time": "2026-01-24T09:26:40+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", - "type": "tidelift" - } - ], - "install-path": "../sebastian/comparator" - }, - { - "name": "sebastian/complexity", - "version": "4.0.1", - "version_normalized": "4.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "time": "2024-07-03T04:49:50+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "installation-source": "dist", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/complexity" - }, - { - "name": "sebastian/diff", - "version": "6.0.2", - "version_normalized": "6.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0", - "symfony/process": "^4.2 || ^5" - }, - "time": "2024-07-03T04:53:05+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/diff" - }, - { - "name": "sebastian/environment", - "version": "7.2.1", - "version_normalized": "7.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4", - "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "suggest": { - "ext-posix": "*" - }, - "time": "2025-05-21T11:55:47+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.2-dev" - } - }, - "installation-source": "dist", - "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.2.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", - "type": "tidelift" - } - ], - "install-path": "../sebastian/environment" - }, - { - "name": "sebastian/exporter", - "version": "6.3.2", - "version_normalized": "6.3.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "70a298763b40b213ec087c51c739efcaa90bcd74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74", - "reference": "70a298763b40b213ec087c51c739efcaa90bcd74", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "time": "2025-09-24T06:12:51+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", - "type": "tidelift" - } - ], - "install-path": "../sebastian/exporter" - }, - { - "name": "sebastian/global-state", - "version": "7.0.2", - "version_normalized": "7.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^11.0" - }, - "time": "2024-07-03T04:57:36+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "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/7.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/global-state" - }, - { - "name": "sebastian/lines-of-code", - "version": "3.0.1", - "version_normalized": "3.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "time": "2024-07-03T04:58:38+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "installation-source": "dist", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/lines-of-code" - }, - { - "name": "sebastian/object-enumerator", - "version": "6.0.1", - "version_normalized": "6.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "time": "2024-07-03T05:00:13+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "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/6.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/object-enumerator" - }, - { - "name": "sebastian/object-reflector", - "version": "4.0.1", - "version_normalized": "4.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "time": "2024-07-03T05:01:32+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "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/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/object-reflector" - }, - { - "name": "sebastian/recursion-context", - "version": "6.0.3", - "version_normalized": "6.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", - "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "time": "2025-08-13T04:42:22+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "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/6.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", - "type": "tidelift" - } - ], - "install-path": "../sebastian/recursion-context" - }, - { - "name": "sebastian/type", - "version": "5.1.3", - "version_normalized": "5.1.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449", - "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "time": "2025-08-09T06:55:48+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "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/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/type", - "type": "tidelift" - } - ], - "install-path": "../sebastian/type" - }, - { - "name": "sebastian/version", - "version": "5.0.2", - "version_normalized": "5.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", - "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "time": "2024-10-09T05:16:32+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "installation-source": "dist", - "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.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "install-path": "../sebastian/version" - }, - { - "name": "staabm/side-effects-detector", - "version": "1.0.5", - "version_normalized": "1.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/staabm/side-effects-detector.git", - "reference": "d8334211a140ce329c13726d4a715adbddd0a163" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", - "reference": "d8334211a140ce329c13726d4a715adbddd0a163", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.6", - "phpunit/phpunit": "^9.6.21", - "symfony/var-dumper": "^5.4.43", - "tomasvotruba/type-coverage": "1.0.0", - "tomasvotruba/unused-public": "1.0.0" - }, - "time": "2024-10-20T05:08:20+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "lib/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A static analysis tool to detect side effects in PHP code", - "keywords": [ - "static analysis" - ], - "support": { - "issues": "https://github.com/staabm/side-effects-detector/issues", - "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" - }, - "funding": [ - { - "url": "https://github.com/staabm", - "type": "github" - } - ], - "install-path": "../staabm/side-effects-detector" - }, - { - "name": "symfony/console", - "version": "v7.4.14", - "version_normalized": "7.4.14.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87", - "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2|^8.0" - }, - "conflict": { - "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": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/event-dispatcher": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/lock": "^6.4|^7.0|^8.0", - "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/stopwatch": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0" - }, - "time": "2026-06-16T11:50:14+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v7.4.14" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/console" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.7.0", - "version_normalized": "3.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/50f59d1f3ca46d41ac911f97a78626b6756af35b", - "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2026-04-13T15:52:40+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/deprecation-contracts" - }, - { - "name": "symfony/event-dispatcher", - "version": "v7.4.14", - "version_normalized": "7.4.14.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "51fe3d170227be8d1772214b82ae506e15ed78ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/51fe3d170227be8d1772214b82ae506e15ed78ff", - "reference": "51fe3d170227be8d1772214b82ae506e15ed78ff", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/error-handler": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/framework-bundle": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0|^8.0" - }, - "time": "2026-06-06T11:10:32+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.14" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/event-dispatcher" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.7.0", - "version_normalized": "3.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/ccba7060602b7fed0b03c85bf025257f76d9ef32", - "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "time": "2026-01-05T13:30:16+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/event-dispatcher-contracts" - }, - { - "name": "symfony/filesystem", - "version": "v7.4.11", - "version_normalized": "7.4.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/d721ea61b4a5fba8c5b6e7c1feda19efea144b50", - "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "require-dev": { - "symfony/process": "^6.4|^7.0|^8.0" - }, - "time": "2026-05-11T16:38:44+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/filesystem" - }, - { - "name": "symfony/finder", - "version": "v7.4.14", - "version_normalized": "7.4.14.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "13b38720174286f55d1761152b575a8d1436fc25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/13b38720174286f55d1761152b575a8d1436fc25", - "reference": "13b38720174286f55d1761152b575a8d1436fc25", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "symfony/filesystem": "^6.4|^7.0|^8.0" - }, - "time": "2026-06-27T08:31:18+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.14" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/finder" - }, - { - "name": "symfony/options-resolver", - "version": "v7.4.8", - "version_normalized": "7.4.8.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "2888fcdc4dc2fd5f7c7397be78631e8af12e02b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/2888fcdc4dc2fd5f7c7397be78631e8af12e02b4", - "reference": "2888fcdc4dc2fd5f7c7397be78631e8af12e02b4", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "time": "2026-03-24T13:12:05+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.4.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/options-resolver" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.37.0", - "version_normalized": "1.37.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "time": "2026-04-10T16:19:22+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-ctype" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.38.1", - "version_normalized": "1.38.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "e9247d281d694a5120554d9afaf54e070e88a603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", - "reference": "e9247d281d694a5120554d9afaf54e070e88a603", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2026-05-26T05:58:03+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-grapheme" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.38.0", - "version_normalized": "1.38.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", - "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2026-05-25T13:48:31+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-normalizer" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.38.2", - "version_normalized": "1.38.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "time": "2026-05-27T06:59:30+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-mbstring" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.37.0", - "version_normalized": "1.37.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411", - "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "time": "2026-04-10T16:19:22+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php80" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.38.1", - "version_normalized": "1.38.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/6bfb9c766cacffbc8e118cb87217d08ed84e5cd7", - "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "time": "2026-05-26T12:45:58+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.38.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php81" - }, - { - "name": "symfony/polyfill-php84", - "version": "v1.38.1", - "version_normalized": "1.38.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", - "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "time": "2026-05-26T12:51:13+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php84\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.38.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php84" - }, - { - "name": "symfony/process", - "version": "v7.4.13", - "version_normalized": "7.4.13.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "f5804be144caceb570f6747519999636b664f24c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f5804be144caceb570f6747519999636b664f24c", - "reference": "f5804be144caceb570f6747519999636b664f24c", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "time": "2026-05-23T16:05:06+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v7.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/process" - }, - { - "name": "symfony/service-contracts", - "version": "v3.7.0", - "version_normalized": "3.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d25d82433a80eba6aa0e6c24b61d7370d99e444a", - "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "time": "2026-03-28T09:44:51+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.7.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/service-contracts" - }, - { - "name": "symfony/stopwatch", - "version": "v7.4.8", - "version_normalized": "7.4.8.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "70a852d72fec4d51efb1f48dcd968efcaf5ccb89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/70a852d72fec4d51efb1f48dcd968efcaf5ccb89", - "reference": "70a852d72fec4d51efb1f48dcd968efcaf5ccb89", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/service-contracts": "^2.5|^3" - }, - "time": "2026-03-24T13:12:05+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a way to profile code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.4.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/stopwatch" - }, - { - "name": "symfony/string", - "version": "v7.4.13", - "version_normalized": "7.4.13.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", - "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.33", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/emoji": "^7.1|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/intl": "^6.4|^7.0|^8.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0|^8.0" - }, - "time": "2026-05-23T15:23:29+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v7.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/string" - }, - { - "name": "theseer/tokenizer", - "version": "1.3.1", - "version_normalized": "1.3.1.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", - "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "time": "2025-11-17T20:03:58+00:00", - "type": "library", - "installation-source": "dist", - "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.3.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "install-path": "../theseer/tokenizer" - } - ], - "dev": true, - "dev-package-names": [ - "clue/ndjson-react", - "codeigniter/coding-standard", - "composer/pcre", - "composer/semver", - "composer/xdebug-handler", - "ergebnis/agent-detector", - "evenement/evenement", - "fakerphp/faker", - "fidry/cpu-core-counter", - "friendsofphp/php-cs-fixer", - "kint-php/kint", - "mikey179/vfsstream", - "myclabs/deep-copy", - "nexusphp/cs-config", - "nikic/php-parser", - "phar-io/manifest", - "phar-io/version", - "phpunit/php-code-coverage", - "phpunit/php-file-iterator", - "phpunit/php-invoker", - "phpunit/php-text-template", - "phpunit/php-timer", - "phpunit/phpunit", - "predis/predis", - "psr/container", - "psr/event-dispatcher", - "psr/http-message", - "react/cache", - "react/child-process", - "react/dns", - "react/event-loop", - "react/promise", - "react/socket", - "react/stream", - "sebastian/cli-parser", - "sebastian/code-unit", - "sebastian/code-unit-reverse-lookup", - "sebastian/comparator", - "sebastian/complexity", - "sebastian/diff", - "sebastian/environment", - "sebastian/exporter", - "sebastian/global-state", - "sebastian/lines-of-code", - "sebastian/object-enumerator", - "sebastian/object-reflector", - "sebastian/recursion-context", - "sebastian/type", - "sebastian/version", - "staabm/side-effects-detector", - "symfony/console", - "symfony/deprecation-contracts", - "symfony/event-dispatcher", - "symfony/event-dispatcher-contracts", - "symfony/filesystem", - "symfony/finder", - "symfony/options-resolver", - "symfony/polyfill-ctype", - "symfony/polyfill-intl-grapheme", - "symfony/polyfill-intl-normalizer", - "symfony/polyfill-mbstring", - "symfony/polyfill-php80", - "symfony/polyfill-php81", - "symfony/polyfill-php84", - "symfony/process", - "symfony/service-contracts", - "symfony/stopwatch", - "symfony/string", - "theseer/tokenizer" - ] -} diff --git a/v3_ci4/vendor/composer/installed.php b/v3_ci4/vendor/composer/installed.php deleted file mode 100644 index b2671c2..0000000 --- a/v3_ci4/vendor/composer/installed.php +++ /dev/null @@ -1,680 +0,0 @@ - array( - 'name' => 'codeigniter4/framework', - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => 'c47d826f8e6f3704890109f05ac230044f76fff9', - 'type' => 'project', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev' => true, - ), - 'versions' => array( - 'clue/ndjson-react' => array( - 'pretty_version' => 'v1.3.0', - 'version' => '1.3.0.0', - 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../clue/ndjson-react', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'codeigniter/coding-standard' => array( - 'pretty_version' => 'v1.9.2', - 'version' => '1.9.2.0', - 'reference' => 'e9c690ebb86140a2ddf874940b0758c4b88110ce', - 'type' => 'library', - 'install_path' => __DIR__ . '/../codeigniter/coding-standard', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'codeigniter4/framework' => array( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => 'c47d826f8e6f3704890109f05ac230044f76fff9', - 'type' => 'project', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'composer/pcre' => array( - 'pretty_version' => '3.4.0', - 'version' => '3.4.0.0', - 'reference' => 'd5a341b3fb61f3001970940afb1d332968a183ed', - 'type' => 'library', - 'install_path' => __DIR__ . '/./pcre', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'composer/semver' => array( - 'pretty_version' => '3.4.4', - 'version' => '3.4.4.0', - 'reference' => '198166618906cb2de69b95d7d47e5fa8aa1b2b95', - 'type' => 'library', - 'install_path' => __DIR__ . '/./semver', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'composer/xdebug-handler' => array( - 'pretty_version' => '3.0.5', - 'version' => '3.0.5.0', - 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', - 'type' => 'library', - 'install_path' => __DIR__ . '/./xdebug-handler', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'ergebnis/agent-detector' => array( - 'pretty_version' => '1.2.0', - 'version' => '1.2.0.0', - 'reference' => 'e211f17928c8b95a51e06040792d57f5462fb271', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ergebnis/agent-detector', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'evenement/evenement' => array( - 'pretty_version' => 'v3.0.2', - 'version' => '3.0.2.0', - 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', - 'type' => 'library', - 'install_path' => __DIR__ . '/../evenement/evenement', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'fakerphp/faker' => array( - 'pretty_version' => 'v1.24.1', - 'version' => '1.24.1.0', - 'reference' => 'e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5', - 'type' => 'library', - 'install_path' => __DIR__ . '/../fakerphp/faker', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'fidry/cpu-core-counter' => array( - 'pretty_version' => '1.3.0', - 'version' => '1.3.0.0', - 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', - 'type' => 'library', - 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'friendsofphp/php-cs-fixer' => array( - 'pretty_version' => 'v3.95.11', - 'version' => '3.95.11.0', - 'reference' => '35f98e1293283397824d7f349ce5afb8747c3cd5', - 'type' => 'application', - 'install_path' => __DIR__ . '/../friendsofphp/php-cs-fixer', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'kint-php/kint' => array( - 'pretty_version' => '6.1.0', - 'version' => '6.1.0.0', - 'reference' => 'dd0f723029e3ebd0fa4edd895fa408bb2ce7003e', - 'type' => 'library', - 'install_path' => __DIR__ . '/../kint-php/kint', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'laminas/laminas-escaper' => array( - 'pretty_version' => '2.18.0', - 'version' => '2.18.0.0', - 'reference' => '06f211dfffff18d91844c1f55250d5d13c007e18', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laminas/laminas-escaper', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'mikey179/vfsstream' => array( - 'pretty_version' => 'v1.6.12', - 'version' => '1.6.12.0', - 'reference' => 'fe695ec993e0a55c3abdda10a9364eb31c6f1bf0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../mikey179/vfsstream', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'myclabs/deep-copy' => array( - 'pretty_version' => '1.13.4', - 'version' => '1.13.4.0', - 'reference' => '07d290f0c47959fd5eed98c95ee5602db07e0b6a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../myclabs/deep-copy', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'nexusphp/cs-config' => array( - 'pretty_version' => 'v3.28.5', - 'version' => '3.28.5.0', - 'reference' => '574c61fd4979e31808719e4afd52851c24a1f649', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nexusphp/cs-config', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'nikic/php-parser' => array( - 'pretty_version' => 'v5.7.0', - 'version' => '5.7.0.0', - 'reference' => 'dca41cd15c2ac9d055ad70dbfd011130757d1f82', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nikic/php-parser', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phar-io/manifest' => array( - 'pretty_version' => '2.0.4', - 'version' => '2.0.4.0', - 'reference' => '54750ef60c58e43759730615a392c31c80e23176', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phar-io/manifest', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phar-io/version' => array( - 'pretty_version' => '3.2.1', - 'version' => '3.2.1.0', - 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phar-io/version', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-code-coverage' => array( - 'pretty_version' => '11.0.12', - 'version' => '11.0.12.0', - 'reference' => '2c1ed04922802c15e1de5d7447b4856de949cf56', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-file-iterator' => array( - 'pretty_version' => '5.1.1', - 'version' => '5.1.1.0', - 'reference' => '2f3a64888c814fc235386b7387dd5b5ed92ad903', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-file-iterator', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-invoker' => array( - 'pretty_version' => '5.0.1', - 'version' => '5.0.1.0', - 'reference' => 'c1ca3814734c07492b3d4c5f794f4b0995333da2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-invoker', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-text-template' => array( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => '3e0404dc6b300e6bf56415467ebcb3fe4f33e964', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-text-template', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/php-timer' => array( - 'pretty_version' => '7.0.1', - 'version' => '7.0.1.0', - 'reference' => '3b415def83fbcb41f991d9ebf16ae4ad8b7837b3', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-timer', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpunit/phpunit' => array( - 'pretty_version' => '11.5.55', - 'version' => '11.5.55.0', - 'reference' => 'adc7262fccc12de2b30f12a8aa0b33775d814f00', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/phpunit', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'predis/predis' => array( - 'pretty_version' => 'v3.5.1', - 'version' => '3.5.1.0', - 'reference' => '5c996db191ee2d9bafe651f454b1fca16754271b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../predis/predis', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'psr/container' => array( - 'pretty_version' => '2.0.2', - 'version' => '2.0.2.0', - 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/container', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'psr/event-dispatcher' => array( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/event-dispatcher', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'psr/event-dispatcher-implementation' => array( - 'dev_requirement' => true, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/http-message' => array( - 'pretty_version' => '2.0', - 'version' => '2.0.0.0', - 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-message', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'psr/log' => array( - 'pretty_version' => '3.0.2', - 'version' => '3.0.2.0', - 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/log', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/log-implementation' => array( - 'dev_requirement' => true, - 'provided' => array( - 0 => '1.0|2.0|3.0', - ), - ), - 'react/cache' => array( - 'pretty_version' => 'v1.2.0', - 'version' => '1.2.0.0', - 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../react/cache', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'react/child-process' => array( - 'pretty_version' => 'v0.6.7', - 'version' => '0.6.7.0', - 'reference' => '970f0e71945556422ee4570ccbabaedc3cf04ad3', - 'type' => 'library', - 'install_path' => __DIR__ . '/../react/child-process', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'react/dns' => array( - 'pretty_version' => 'v1.14.0', - 'version' => '1.14.0.0', - 'reference' => '7562c05391f42701c1fccf189c8225fece1cd7c3', - 'type' => 'library', - 'install_path' => __DIR__ . '/../react/dns', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'react/event-loop' => array( - 'pretty_version' => 'v1.6.0', - 'version' => '1.6.0.0', - 'reference' => 'ba276bda6083df7e0050fd9b33f66ad7a4ac747a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../react/event-loop', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'react/promise' => array( - 'pretty_version' => 'v3.3.0', - 'version' => '3.3.0.0', - 'reference' => '23444f53a813a3296c1368bb104793ce8d88f04a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../react/promise', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'react/socket' => array( - 'pretty_version' => 'v1.17.0', - 'version' => '1.17.0.0', - 'reference' => 'ef5b17b81f6f60504c539313f94f2d826c5faa08', - 'type' => 'library', - 'install_path' => __DIR__ . '/../react/socket', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'react/stream' => array( - 'pretty_version' => 'v1.4.0', - 'version' => '1.4.0.0', - 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../react/stream', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/cli-parser' => array( - 'pretty_version' => '3.0.2', - 'version' => '3.0.2.0', - 'reference' => '15c5dd40dc4f38794d383bb95465193f5e0ae180', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/cli-parser', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/code-unit' => array( - 'pretty_version' => '3.0.3', - 'version' => '3.0.3.0', - 'reference' => '54391c61e4af8078e5b276ab082b6d3c54c9ad64', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/code-unit', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/code-unit-reverse-lookup' => array( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => '183a9b2632194febd219bb9246eee421dad8d45e', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/comparator' => array( - 'pretty_version' => '6.3.3', - 'version' => '6.3.3.0', - 'reference' => '2c95e1e86cb8dd41beb8d502057d1081ccc8eca9', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/comparator', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/complexity' => array( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => 'ee41d384ab1906c68852636b6de493846e13e5a0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/complexity', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/diff' => array( - 'pretty_version' => '6.0.2', - 'version' => '6.0.2.0', - 'reference' => 'b4ccd857127db5d41a5b676f24b51371d76d8544', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/diff', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/environment' => array( - 'pretty_version' => '7.2.1', - 'version' => '7.2.1.0', - 'reference' => 'a5c75038693ad2e8d4b6c15ba2403532647830c4', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/environment', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/exporter' => array( - 'pretty_version' => '6.3.2', - 'version' => '6.3.2.0', - 'reference' => '70a298763b40b213ec087c51c739efcaa90bcd74', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/exporter', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/global-state' => array( - 'pretty_version' => '7.0.2', - 'version' => '7.0.2.0', - 'reference' => '3be331570a721f9a4b5917f4209773de17f747d7', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/global-state', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/lines-of-code' => array( - 'pretty_version' => '3.0.1', - 'version' => '3.0.1.0', - 'reference' => 'd36ad0d782e5756913e42ad87cb2890f4ffe467a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/lines-of-code', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/object-enumerator' => array( - 'pretty_version' => '6.0.1', - 'version' => '6.0.1.0', - 'reference' => 'f5b498e631a74204185071eb41f33f38d64608aa', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/object-enumerator', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/object-reflector' => array( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => '6e1a43b411b2ad34146dee7524cb13a068bb35f9', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/object-reflector', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/recursion-context' => array( - 'pretty_version' => '6.0.3', - 'version' => '6.0.3.0', - 'reference' => 'f6458abbf32a6c8174f8f26261475dc133b3d9dc', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/recursion-context', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/type' => array( - 'pretty_version' => '5.1.3', - 'version' => '5.1.3.0', - 'reference' => 'f77d2d4e78738c98d9a68d2596fe5e8fa380f449', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/type', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'sebastian/version' => array( - 'pretty_version' => '5.0.2', - 'version' => '5.0.2.0', - 'reference' => 'c687e3387b99f5b03b6caa64c74b63e2936ff874', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/version', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'staabm/side-effects-detector' => array( - 'pretty_version' => '1.0.5', - 'version' => '1.0.5.0', - 'reference' => 'd8334211a140ce329c13726d4a715adbddd0a163', - 'type' => 'library', - 'install_path' => __DIR__ . '/../staabm/side-effects-detector', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/console' => array( - 'pretty_version' => 'v7.4.14', - 'version' => '7.4.14.0', - 'reference' => '92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/console', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/deprecation-contracts' => array( - 'pretty_version' => 'v3.7.0', - 'version' => '3.7.0.0', - 'reference' => '50f59d1f3ca46d41ac911f97a78626b6756af35b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/event-dispatcher' => array( - 'pretty_version' => 'v7.4.14', - 'version' => '7.4.14.0', - 'reference' => '51fe3d170227be8d1772214b82ae506e15ed78ff', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/event-dispatcher', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/event-dispatcher-contracts' => array( - 'pretty_version' => 'v3.7.0', - 'version' => '3.7.0.0', - 'reference' => 'ccba7060602b7fed0b03c85bf025257f76d9ef32', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/event-dispatcher-implementation' => array( - 'dev_requirement' => true, - 'provided' => array( - 0 => '2.0|3.0', - ), - ), - 'symfony/filesystem' => array( - 'pretty_version' => 'v7.4.11', - 'version' => '7.4.11.0', - 'reference' => 'd721ea61b4a5fba8c5b6e7c1feda19efea144b50', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/filesystem', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/finder' => array( - 'pretty_version' => 'v7.4.14', - 'version' => '7.4.14.0', - 'reference' => '13b38720174286f55d1761152b575a8d1436fc25', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/finder', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/options-resolver' => array( - 'pretty_version' => 'v7.4.8', - 'version' => '7.4.8.0', - 'reference' => '2888fcdc4dc2fd5f7c7397be78631e8af12e02b4', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/options-resolver', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/polyfill-ctype' => array( - 'pretty_version' => 'v1.37.0', - 'version' => '1.37.0.0', - 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/polyfill-intl-grapheme' => array( - 'pretty_version' => 'v1.38.1', - 'version' => '1.38.1.0', - 'reference' => 'e9247d281d694a5120554d9afaf54e070e88a603', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/polyfill-intl-normalizer' => array( - 'pretty_version' => 'v1.38.0', - 'version' => '1.38.0.0', - 'reference' => '2d446c214bdbe5b71bde5011b060a05fece3ae6b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/polyfill-mbstring' => array( - 'pretty_version' => 'v1.38.2', - 'version' => '1.38.2.0', - 'reference' => 'd3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/polyfill-php80' => array( - 'pretty_version' => 'v1.37.0', - 'version' => '1.37.0.0', - 'reference' => 'dfb55726c3a76ea3b6459fcfda1ec2d80a682411', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php80', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/polyfill-php81' => array( - 'pretty_version' => 'v1.38.1', - 'version' => '1.38.1.0', - 'reference' => '6bfb9c766cacffbc8e118cb87217d08ed84e5cd7', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php81', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/polyfill-php84' => array( - 'pretty_version' => 'v1.38.1', - 'version' => '1.38.1.0', - 'reference' => 'f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php84', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/process' => array( - 'pretty_version' => 'v7.4.13', - 'version' => '7.4.13.0', - 'reference' => 'f5804be144caceb570f6747519999636b664f24c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/process', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/service-contracts' => array( - 'pretty_version' => 'v3.7.0', - 'version' => '3.7.0.0', - 'reference' => 'd25d82433a80eba6aa0e6c24b61d7370d99e444a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/service-contracts', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/stopwatch' => array( - 'pretty_version' => 'v7.4.8', - 'version' => '7.4.8.0', - 'reference' => '70a852d72fec4d51efb1f48dcd968efcaf5ccb89', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/stopwatch', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/string' => array( - 'pretty_version' => 'v7.4.13', - 'version' => '7.4.13.0', - 'reference' => '961683010db3b27ec6ebcd7308e6e1ee8fa7ffde', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/string', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'theseer/tokenizer' => array( - 'pretty_version' => '1.3.1', - 'version' => '1.3.1.0', - 'reference' => 'b7489ce515e168639d17feec34b8847c326b0b3c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../theseer/tokenizer', - 'aliases' => array(), - 'dev_requirement' => true, - ), - ), -); diff --git a/v3_ci4/vendor/composer/pcre/LICENSE b/v3_ci4/vendor/composer/pcre/LICENSE deleted file mode 100644 index c5a282f..0000000 --- a/v3_ci4/vendor/composer/pcre/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2021 Composer - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/v3_ci4/vendor/composer/pcre/README.md b/v3_ci4/vendor/composer/pcre/README.md deleted file mode 100644 index 4906514..0000000 --- a/v3_ci4/vendor/composer/pcre/README.md +++ /dev/null @@ -1,189 +0,0 @@ -composer/pcre -============= - -PCRE wrapping library that offers type-safe `preg_*` replacements. - -This library gives you a way to ensure `preg_*` functions do not fail silently, returning -unexpected `null`s that may not be handled. - -As of 3.0 this library enforces [`PREG_UNMATCHED_AS_NULL`](#preg_unmatched_as_null) usage -for all matching and replaceCallback functions, [read more below](#preg_unmatched_as_null) -to understand the implications. - -It thus makes it easier to work with static analysis tools like PHPStan or Psalm as it -simplifies and reduces the possible return values from all the `preg_*` functions which -are quite packed with edge cases. As of v2.2.0 / v3.2.0 the library also comes with a -[PHPStan extension](#phpstan-extension) for parsing regular expressions and giving you even better output types. - -This library is a thin wrapper around `preg_*` functions with [some limitations](#restrictions--limitations). -If you are looking for a richer API to handle regular expressions have a look at -[rawr/t-regx](https://packagist.org/packages/rawr/t-regx) instead. - -[![Continuous Integration](https://github.com/composer/pcre/workflows/Continuous%20Integration/badge.svg?branch=main)](https://github.com/composer/pcre/actions) - - -Installation ------------- - -Install the latest version with: - -```bash -$ composer require composer/pcre -``` - - -Requirements ------------- - -* PHP 7.4.0 is required for 3.x versions -* PHP 7.2.0 is required for 2.x versions -* PHP 5.3.2 is required for 1.x versions - - -Basic usage ------------ - -Instead of: - -```php -if (preg_match('{fo+}', $string, $matches)) { ... } -if (preg_match('{fo+}', $string, $matches, PREG_OFFSET_CAPTURE)) { ... } -if (preg_match_all('{fo+}', $string, $matches)) { ... } -$newString = preg_replace('{fo+}', 'bar', $string); -$newString = preg_replace_callback('{fo+}', function ($match) { return strtoupper($match[0]); }, $string); -$newString = preg_replace_callback_array(['{fo+}' => fn ($match) => strtoupper($match[0])], $string); -$filtered = preg_grep('{[a-z]}', $elements); -$array = preg_split('{[a-z]+}', $string); -``` - -You can now call these on the `Preg` class: - -```php -use Composer\Pcre\Preg; - -if (Preg::match('{fo+}', $string, $matches)) { ... } -if (Preg::matchWithOffsets('{fo+}', $string, $matches)) { ... } -if (Preg::matchAll('{fo+}', $string, $matches)) { ... } -$newString = Preg::replace('{fo+}', 'bar', $string); -$newString = Preg::replaceCallback('{fo+}', function ($match) { return strtoupper($match[0]); }, $string); -$newString = Preg::replaceCallbackArray(['{fo+}' => fn ($match) => strtoupper($match[0])], $string); -$filtered = Preg::grep('{[a-z]}', $elements); -$array = Preg::split('{[a-z]+}', $string); -``` - -The main difference is if anything fails to match/replace/.., it will throw a `Composer\Pcre\PcreException` -instead of returning `null` (or false in some cases), so you can now use the return values safely relying on -the fact that they can only be strings (for replace), ints (for match) or arrays (for grep/split). - -Additionally the `Preg` class provides match methods that return `bool` rather than `int`, for stricter type safety -when the number of pattern matches is not useful: - -```php -use Composer\Pcre\Preg; - -if (Preg::isMatch('{fo+}', $string, $matches)) // bool -if (Preg::isMatchAll('{fo+}', $string, $matches)) // bool -``` - -Finally the `Preg` class provides a few `*StrictGroups` method variants that ensure match groups -are always present and thus non-nullable, making it easier to write type-safe code: - -```php -use Composer\Pcre\Preg; - -// $matches is guaranteed to be an array of strings, if a subpattern does not match and produces a null it will throw -if (Preg::matchStrictGroups('{fo+}', $string, $matches)) -if (Preg::matchAllStrictGroups('{fo+}', $string, $matches)) -``` - -**Note:** This is generally safe to use as long as you do not have optional subpatterns (i.e. `(something)?` -or `(something)*` or branches with a `|` that result in some groups not being matched at all). -A subpattern that can match an empty string like `(.*)` is **not** optional, it will be present as an -empty string in the matches. A non-matching subpattern, even if optional like `(?:foo)?` will anyway not be present in -matches so it is also not a problem to use these with `*StrictGroups` methods. - -If you would prefer a slightly more verbose usage, replacing by-ref arguments by result objects, you can use the `Regex` class: - -```php -use Composer\Pcre\Regex; - -// this is useful when you are just interested in knowing if something matched -// as it returns a bool instead of int(1/0) for match -$bool = Regex::isMatch('{fo+}', $string); - -$result = Regex::match('{fo+}', $string); -if ($result->matched) { something($result->matches); } - -$result = Regex::matchWithOffsets('{fo+}', $string); -if ($result->matched) { something($result->matches); } - -$result = Regex::matchAll('{fo+}', $string); -if ($result->matched && $result->count > 3) { something($result->matches); } - -$newString = Regex::replace('{fo+}', 'bar', $string)->result; -$newString = Regex::replaceCallback('{fo+}', function ($match) { return strtoupper($match[0]); }, $string)->result; -$newString = Regex::replaceCallbackArray(['{fo+}' => fn ($match) => strtoupper($match[0])], $string)->result; -``` - -Note that `preg_grep` and `preg_split` are only callable via the `Preg` class as they do not have -complex return types warranting a specific result object. - -See the [MatchResult](src/MatchResult.php), [MatchWithOffsetsResult](src/MatchWithOffsetsResult.php), [MatchAllResult](src/MatchAllResult.php), -[MatchAllWithOffsetsResult](src/MatchAllWithOffsetsResult.php), and [ReplaceResult](src/ReplaceResult.php) class sources for more details. - -Restrictions / Limitations --------------------------- - -Due to type safety requirements a few restrictions are in place. - -- matching using `PREG_OFFSET_CAPTURE` is made available via `matchWithOffsets` and `matchAllWithOffsets`. - You cannot pass the flag to `match`/`matchAll`. -- `Preg::split` will also reject `PREG_SPLIT_OFFSET_CAPTURE` and you should use `splitWithOffsets` - instead. -- `matchAll` rejects `PREG_SET_ORDER` as it also changes the shape of the returned matches. There - is no alternative provided as you can fairly easily code around it. -- `preg_filter` is not supported as it has a rather crazy API, most likely you should rather - use `Preg::grep` in combination with some loop and `Preg::replace`. -- `replace`, `replaceCallback` and `replaceCallbackArray` do not support an array `$subject`, - only simple strings. -- As of 2.0, the library always uses `PREG_UNMATCHED_AS_NULL` for matching, which offers [much - saner/more predictable results](#preg_unmatched_as_null). As of 3.0 the flag is also set for - `replaceCallback` and `replaceCallbackArray`. - -#### PREG_UNMATCHED_AS_NULL - -As of 2.0, this library always uses PREG_UNMATCHED_AS_NULL for all `match*` and `isMatch*` -functions. As of 3.0 it is also done for `replaceCallback` and `replaceCallbackArray`. - -This means your matches will always contain all matching groups, either as null if unmatched -or as string if it matched. - -The advantages in clarity and predictability are clearer if you compare the two outputs of -running this with and without PREG_UNMATCHED_AS_NULL in $flags: - -```php -preg_match('/(a)(b)*(c)(d)*/', 'ac', $matches, $flags); -``` - -| no flag | PREG_UNMATCHED_AS_NULL | -| --- | --- | -| array (size=4) | array (size=5) | -| 0 => string 'ac' (length=2) | 0 => string 'ac' (length=2) | -| 1 => string 'a' (length=1) | 1 => string 'a' (length=1) | -| 2 => string '' (length=0) | 2 => null | -| 3 => string 'c' (length=1) | 3 => string 'c' (length=1) | -| | 4 => null | -| group 2 (any unmatched group preceding one that matched) is set to `''`. You cannot tell if it matched an empty string or did not match at all | group 2 is `null` when unmatched and a string if it matched, easy to check for | -| group 4 (any optional group without a matching one following) is missing altogether. So you have to check with `isset()`, but really you want `isset($m[4]) && $m[4] !== ''` for safety unless you are very careful to check that a non-optional group follows it | group 4 is always set, and null in this case as there was no match, easy to check for with `$m[4] !== null` | - -PHPStan Extension ------------------ - -To use the PHPStan extension if you do not use `phpstan/extension-installer` you can include `vendor/composer/pcre/extension.neon` in your PHPStan config. - -The extension provides much better type information for $matches as well as regex validation where possible. - -License -------- - -composer/pcre is licensed under the MIT License, see the LICENSE file for details. diff --git a/v3_ci4/vendor/composer/pcre/composer.json b/v3_ci4/vendor/composer/pcre/composer.json deleted file mode 100644 index a6e72c3..0000000 --- a/v3_ci4/vendor/composer/pcre/composer.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "composer/pcre", - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "type": "library", - "license": "MIT", - "keywords": [ - "pcre", - "regex", - "preg", - "regular expression" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9", - "phpstan/phpstan": "^2", - "phpstan/phpstan-strict-rules": "^2", - "phpstan/phpstan-deprecation-rules": "^2" - }, - "conflict": { - "phpstan/phpstan": "<2.2.2" - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Composer\\Pcre\\": "tests" - } - }, - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "scripts": { - "test": [ - "@php vendor/bin/phpunit", - "@php vendor/bin/phpunit --testsuite phpstan" - ], - "phpstan": "@php phpstan analyse" - } -} diff --git a/v3_ci4/vendor/composer/pcre/extension.neon b/v3_ci4/vendor/composer/pcre/extension.neon deleted file mode 100644 index b9cea11..0000000 --- a/v3_ci4/vendor/composer/pcre/extension.neon +++ /dev/null @@ -1,22 +0,0 @@ -# composer/pcre PHPStan extensions -# -# These can be reused by third party packages by including 'vendor/composer/pcre/extension.neon' -# in your phpstan config - -services: - - - class: Composer\Pcre\PHPStan\PregMatchParameterOutTypeExtension - tags: - - phpstan.staticMethodParameterOutTypeExtension - - - class: Composer\Pcre\PHPStan\PregMatchTypeSpecifyingExtension - tags: - - phpstan.typeSpecifier.staticMethodTypeSpecifyingExtension - - - class: Composer\Pcre\PHPStan\PregReplaceCallbackClosureTypeExtension - tags: - - phpstan.staticMethodParameterClosureTypeExtension - -rules: - - Composer\Pcre\PHPStan\UnsafeStrictGroupsCallRule - - Composer\Pcre\PHPStan\InvalidRegexPatternRule diff --git a/v3_ci4/vendor/composer/pcre/src/MatchAllResult.php b/v3_ci4/vendor/composer/pcre/src/MatchAllResult.php deleted file mode 100644 index b22b52d..0000000 --- a/v3_ci4/vendor/composer/pcre/src/MatchAllResult.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -final class MatchAllResult -{ - /** - * An array of match group => list of matched strings - * - * @readonly - * @var array> - */ - public $matches; - - /** - * @readonly - * @var 0|positive-int - */ - public $count; - - /** - * @readonly - * @var bool - */ - public $matched; - - /** - * @param 0|positive-int $count - * @param array> $matches - */ - public function __construct(int $count, array $matches) - { - $this->matches = $matches; - $this->matched = (bool) $count; - $this->count = $count; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php b/v3_ci4/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php deleted file mode 100644 index b7ec397..0000000 --- a/v3_ci4/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -final class MatchAllStrictGroupsResult -{ - /** - * An array of match group => list of matched strings - * - * @readonly - * @var array> - */ - public $matches; - - /** - * @readonly - * @var 0|positive-int - */ - public $count; - - /** - * @readonly - * @var bool - */ - public $matched; - - /** - * @param 0|positive-int $count - * @param array> $matches - */ - public function __construct(int $count, array $matches) - { - $this->matches = $matches; - $this->matched = (bool) $count; - $this->count = $count; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php b/v3_ci4/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php deleted file mode 100644 index 032a02c..0000000 --- a/v3_ci4/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -final class MatchAllWithOffsetsResult -{ - /** - * An array of match group => list of matches, every match being a pair of string matched + offset in bytes (or -1 if no match) - * - * @readonly - * @var array> - * @phpstan-var array}>> - */ - public $matches; - - /** - * @readonly - * @var 0|positive-int - */ - public $count; - - /** - * @readonly - * @var bool - */ - public $matched; - - /** - * @param 0|positive-int $count - * @param array> $matches - * @phpstan-param array}>> $matches - */ - public function __construct(int $count, array $matches) - { - $this->matches = $matches; - $this->matched = (bool) $count; - $this->count = $count; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/MatchResult.php b/v3_ci4/vendor/composer/pcre/src/MatchResult.php deleted file mode 100644 index e951a5e..0000000 --- a/v3_ci4/vendor/composer/pcre/src/MatchResult.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -final class MatchResult -{ - /** - * An array of match group => string matched - * - * @readonly - * @var array - */ - public $matches; - - /** - * @readonly - * @var bool - */ - public $matched; - - /** - * @param 0|positive-int $count - * @param array $matches - */ - public function __construct(int $count, array $matches) - { - $this->matches = $matches; - $this->matched = (bool) $count; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/MatchStrictGroupsResult.php b/v3_ci4/vendor/composer/pcre/src/MatchStrictGroupsResult.php deleted file mode 100644 index 126ee62..0000000 --- a/v3_ci4/vendor/composer/pcre/src/MatchStrictGroupsResult.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -final class MatchStrictGroupsResult -{ - /** - * An array of match group => string matched - * - * @readonly - * @var array - */ - public $matches; - - /** - * @readonly - * @var bool - */ - public $matched; - - /** - * @param 0|positive-int $count - * @param array $matches - */ - public function __construct(int $count, array $matches) - { - $this->matches = $matches; - $this->matched = (bool) $count; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/MatchWithOffsetsResult.php b/v3_ci4/vendor/composer/pcre/src/MatchWithOffsetsResult.php deleted file mode 100644 index ba4d4bc..0000000 --- a/v3_ci4/vendor/composer/pcre/src/MatchWithOffsetsResult.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -final class MatchWithOffsetsResult -{ - /** - * An array of match group => pair of string matched + offset in bytes (or -1 if no match) - * - * @readonly - * @var array - * @phpstan-var array}> - */ - public $matches; - - /** - * @readonly - * @var bool - */ - public $matched; - - /** - * @param 0|positive-int $count - * @param array $matches - * @phpstan-param array}> $matches - */ - public function __construct(int $count, array $matches) - { - $this->matches = $matches; - $this->matched = (bool) $count; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php b/v3_ci4/vendor/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php deleted file mode 100644 index 8a05fb2..0000000 --- a/v3_ci4/vendor/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php +++ /dev/null @@ -1,142 +0,0 @@ - - */ -class InvalidRegexPatternRule implements Rule -{ - public function getNodeType(): string - { - return StaticCall::class; - } - - public function processNode(Node $node, Scope $scope): array - { - $patterns = $this->extractPatterns($node, $scope); - - $errors = []; - foreach ($patterns as $pattern) { - $errorMessage = $this->validatePattern($pattern); - if ($errorMessage === null) { - continue; - } - - $errors[] = RuleErrorBuilder::message(sprintf('Regex pattern is invalid: %s', $errorMessage))->identifier('regexp.pattern')->build(); - } - - return $errors; - } - - /** - * @return string[] - */ - private function extractPatterns(StaticCall $node, Scope $scope): array - { - if (!$node->class instanceof FullyQualified) { - return []; - } - $isRegex = $node->class->toString() === Regex::class; - $isPreg = $node->class->toString() === Preg::class; - if (!$isRegex && !$isPreg) { - return []; - } - if (!$node->name instanceof Node\Identifier || !Preg::isMatch('{^(match|isMatch|grep|replace|split)}', $node->name->name)) { - return []; - } - - $functionName = $node->name->name; - if (!isset($node->getArgs()[0])) { - return []; - } - - $patternNode = $node->getArgs()[0]->value; - $patternType = $scope->getType($patternNode); - - $patternStrings = []; - - foreach ($patternType->getConstantStrings() as $constantStringType) { - if ($functionName === 'replaceCallbackArray') { - continue; - } - - $patternStrings[] = $constantStringType->getValue(); - } - - foreach ($patternType->getConstantArrays() as $constantArrayType) { - if ( - in_array($functionName, [ - 'replace', - 'replaceCallback', - ], true) - ) { - foreach ($constantArrayType->getValueTypes() as $arrayKeyType) { - foreach ($arrayKeyType->getConstantStrings() as $constantString) { - $patternStrings[] = $constantString->getValue(); - } - } - } - - if ($functionName !== 'replaceCallbackArray') { - continue; - } - - foreach ($constantArrayType->getKeyTypes() as $arrayKeyType) { - foreach ($arrayKeyType->getConstantStrings() as $constantString) { - $patternStrings[] = $constantString->getValue(); - } - } - } - - return $patternStrings; - } - - private function validatePattern(string $pattern): ?string - { - try { - $msg = null; - $prev = set_error_handler(function (int $severity, string $message, string $file) use (&$msg): bool { - $msg = preg_replace("#^preg_match(_all)?\\(.*?\\): #", '', $message); - - return true; - }); - - if ($pattern === '') { - return 'Empty string is not a valid regular expression'; - } - - Preg::match($pattern, ''); - if ($msg !== null) { - return $msg; - } - } catch (PcreException $e) { - if ($e->getCode() === PREG_INTERNAL_ERROR && $msg !== null) { - return $msg; - } - - return preg_replace('{.*? failed executing ".*": }', '', $e->getMessage()); - } finally { - restore_error_handler(); - } - - return null; - } - -} diff --git a/v3_ci4/vendor/composer/pcre/src/PHPStan/PregMatchFlags.php b/v3_ci4/vendor/composer/pcre/src/PHPStan/PregMatchFlags.php deleted file mode 100644 index aa30ab3..0000000 --- a/v3_ci4/vendor/composer/pcre/src/PHPStan/PregMatchFlags.php +++ /dev/null @@ -1,70 +0,0 @@ -getType($flagsArg->value); - - $constantScalars = $flagsType->getConstantScalarValues(); - if ($constantScalars === []) { - return null; - } - - $internalFlagsTypes = []; - foreach ($flagsType->getConstantScalarValues() as $constantScalarValue) { - if (!is_int($constantScalarValue)) { - return null; - } - - $internalFlagsTypes[] = new ConstantIntegerType($constantScalarValue | PREG_UNMATCHED_AS_NULL); - } - return TypeCombinator::union(...$internalFlagsTypes); - } - - static public function removeNullFromMatches(Type $matchesType): Type - { - return TypeTraverser::map($matchesType, static function (Type $type, callable $traverse): Type { - if ($type instanceof UnionType || $type instanceof IntersectionType) { - return $traverse($type); - } - - if ($type instanceof ConstantArrayType) { - return new ConstantArrayType( - $type->getKeyTypes(), - array_map(static function (Type $valueType) use ($traverse): Type { - return $traverse($valueType); - }, $type->getValueTypes()), - $type->getNextAutoIndexes(), - [], - $type->isList() - ); - } - - if ($type instanceof ArrayType) { - return new ArrayType($type->getKeyType(), $traverse($type->getItemType())); - } - - return TypeCombinator::removeNull($type); - }); - } - -} diff --git a/v3_ci4/vendor/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php b/v3_ci4/vendor/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php deleted file mode 100644 index e0d6020..0000000 --- a/v3_ci4/vendor/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php +++ /dev/null @@ -1,65 +0,0 @@ -regexShapeMatcher = $regexShapeMatcher; - } - - public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter): bool - { - return - $methodReflection->getDeclaringClass()->getName() === Preg::class - && in_array($methodReflection->getName(), [ - 'match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups', - 'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups' - ], true) - && $parameter->getName() === 'matches'; - } - - public function getParameterOutTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope): ?Type - { - $args = $methodCall->getArgs(); - $patternArg = $args[0] ?? null; - $matchesArg = $args[2] ?? null; - $flagsArg = $args[3] ?? null; - - if ( - $patternArg === null || $matchesArg === null - ) { - return null; - } - - $flagsType = PregMatchFlags::getType($flagsArg, $scope); - if ($flagsType === null) { - return null; - } - - if (stripos($methodReflection->getName(), 'matchAll') !== false) { - return $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope); - } - - return $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope); - } - -} diff --git a/v3_ci4/vendor/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php b/v3_ci4/vendor/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php deleted file mode 100644 index e492c79..0000000 --- a/v3_ci4/vendor/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php +++ /dev/null @@ -1,125 +0,0 @@ -regexShapeMatcher = $regexShapeMatcher; - } - - public function setTypeSpecifier(TypeSpecifier $typeSpecifier): void - { - $this->typeSpecifier = $typeSpecifier; - } - - public function getClass(): string - { - return Preg::class; - } - - public function isStaticMethodSupported(MethodReflection $methodReflection, StaticCall $node, TypeSpecifierContext $context): bool - { - return in_array($methodReflection->getName(), [ - 'match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups', - 'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups' - ], true) - && !$context->null(); - } - - public function specifyTypes(MethodReflection $methodReflection, StaticCall $node, Scope $scope, TypeSpecifierContext $context): SpecifiedTypes - { - $args = $node->getArgs(); - $patternArg = $args[0] ?? null; - $subjectArg = $args[1] ?? null; - $matchesArg = $args[2] ?? null; - $flagsArg = $args[3] ?? null; - - $subjectTypes = new SpecifiedTypes(); - if ($patternArg === null) { - return $subjectTypes; - } - - if ( - $subjectArg !== null - && $context->true() - && $scope->getType($subjectArg->value)->isString()->yes() - ) { - $subjectType = $this->regexShapeMatcher->matchSubjectExpr($patternArg->value, $scope); - if ($subjectType !== null) { - $subjectTypes = $this->typeSpecifier->create( - $subjectArg->value, - $subjectType, - $context, - $scope, - )->setRootExpr($node); - } - } - - if ($matchesArg === null) { - return $subjectTypes; - } - - $flagsType = PregMatchFlags::getType($flagsArg, $scope); - if ($flagsType === null) { - return $subjectTypes; - } - - if (stripos($methodReflection->getName(), 'matchAll') !== false) { - $matchedType = $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope); - } else { - $matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope); - } - - if ($matchedType === null) { - return $subjectTypes; - } - - if ( - in_array($methodReflection->getName(), ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], true) - ) { - $matchedType = PregMatchFlags::removeNullFromMatches($matchedType); - } - - $overwrite = false; - if ($context->false()) { - $overwrite = true; - $context = $context->negate(); - } - - $specifiedTypes = $this->typeSpecifier->create( - $matchesArg->value, - $matchedType, - $context, - $scope - )->setRootExpr($node); - - return $subjectTypes->unionWith($overwrite ? $specifiedTypes->setAlwaysOverwriteTypes() : $specifiedTypes); - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php b/v3_ci4/vendor/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php deleted file mode 100644 index 7b95367..0000000 --- a/v3_ci4/vendor/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php +++ /dev/null @@ -1,91 +0,0 @@ -regexShapeMatcher = $regexShapeMatcher; - } - - public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter): bool - { - return in_array($methodReflection->getDeclaringClass()->getName(), [Preg::class, Regex::class], true) - && in_array($methodReflection->getName(), ['replaceCallback', 'replaceCallbackStrictGroups'], true) - && $parameter->getName() === 'replacement'; - } - - public function getTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope): ?Type - { - $args = $methodCall->getArgs(); - $patternArg = $args[0] ?? null; - $flagsArg = $args[5] ?? null; - - if ( - $patternArg === null - ) { - return null; - } - - $flagsType = PregMatchFlags::getType($flagsArg, $scope); - - $matchesType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope); - if ($matchesType === null) { - return null; - } - - if ($methodReflection->getName() === 'replaceCallbackStrictGroups' && count($matchesType->getConstantArrays()) === 1) { - $matchesType = $matchesType->getConstantArrays()[0]; - $matchesType = new ConstantArrayType( - $matchesType->getKeyTypes(), - array_map(static function (Type $valueType): Type { - if (count($valueType->getConstantArrays()) === 1) { - $valueTypeArray = $valueType->getConstantArrays()[0]; - return new ConstantArrayType( - $valueTypeArray->getKeyTypes(), - array_map(static function (Type $valueType): Type { - return TypeCombinator::removeNull($valueType); - }, $valueTypeArray->getValueTypes()), - $valueTypeArray->getNextAutoIndexes(), - [], - $valueTypeArray->isList() - ); - } - return TypeCombinator::removeNull($valueType); - }, $matchesType->getValueTypes()), - $matchesType->getNextAutoIndexes(), - [], - $matchesType->isList() - ); - } - - return new ClosureType( - [ - new NativeParameterReflection($parameter->getName(), $parameter->isOptional(), $matchesType, $parameter->passedByReference(), $parameter->isVariadic(), $parameter->getDefaultValue()), - ], - new StringType() - ); - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php b/v3_ci4/vendor/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php deleted file mode 100644 index 5bced50..0000000 --- a/v3_ci4/vendor/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php +++ /dev/null @@ -1,112 +0,0 @@ - - */ -final class UnsafeStrictGroupsCallRule implements Rule -{ - /** - * @var RegexArrayShapeMatcher - */ - private $regexShapeMatcher; - - public function __construct(RegexArrayShapeMatcher $regexShapeMatcher) - { - $this->regexShapeMatcher = $regexShapeMatcher; - } - - public function getNodeType(): string - { - return StaticCall::class; - } - - public function processNode(Node $node, Scope $scope): array - { - if (!$node->class instanceof FullyQualified) { - return []; - } - $isRegex = $node->class->toString() === Regex::class; - $isPreg = $node->class->toString() === Preg::class; - if (!$isRegex && !$isPreg) { - return []; - } - if (!$node->name instanceof Node\Identifier || !in_array($node->name->name, ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], true)) { - return []; - } - - $args = $node->getArgs(); - if (!isset($args[0])) { - return []; - } - - $patternArg = $args[0] ?? null; - if ($isPreg) { - if (!isset($args[2])) { // no matches set, skip as the matches won't be used anyway - return []; - } - $flagsArg = $args[3] ?? null; - } else { - $flagsArg = $args[2] ?? null; - } - - if ($patternArg === null) { - return []; - } - - $flagsType = PregMatchFlags::getType($flagsArg, $scope); - if ($flagsType === null) { - return []; - } - - $matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope); - if ($matchedType === null) { - return [ - RuleErrorBuilder::message(sprintf('The %s call is potentially unsafe as $matches\' type could not be inferred.', $node->name->name)) - ->identifier('composerPcre.maybeUnsafeStrictGroups') - ->build(), - ]; - } - - if (count($matchedType->getConstantArrays()) === 1) { - $matchedType = $matchedType->getConstantArrays()[0]; - $nullableGroups = []; - foreach ($matchedType->getValueTypes() as $index => $type) { - if (TypeCombinator::containsNull($type)) { - $nullableGroups[] = $matchedType->getKeyTypes()[$index]->getValue(); - } - } - - if (\count($nullableGroups) > 0) { - return [ - RuleErrorBuilder::message(sprintf( - 'The %s call is unsafe as match group%s "%s" %s optional and may be null.', - $node->name->name, - \count($nullableGroups) > 1 ? 's' : '', - implode('", "', $nullableGroups), - \count($nullableGroups) > 1 ? 'are' : 'is' - ))->identifier('composerPcre.unsafeStrictGroups')->build(), - ]; - } - } - - return []; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/PcreException.php b/v3_ci4/vendor/composer/pcre/src/PcreException.php deleted file mode 100644 index 23d9327..0000000 --- a/v3_ci4/vendor/composer/pcre/src/PcreException.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -class PcreException extends \RuntimeException -{ - /** - * @param string $function - * @param string|string[] $pattern - * @return self - */ - public static function fromFunction($function, $pattern) - { - $code = preg_last_error(); - - if (is_array($pattern)) { - $pattern = implode(', ', $pattern); - } - - return new PcreException($function.'(): failed executing "'.$pattern.'": '.self::pcreLastErrorMessage($code), $code); - } - - /** - * @param int $code - * @return string - */ - private static function pcreLastErrorMessage($code) - { - if (function_exists('preg_last_error_msg')) { - return preg_last_error_msg(); - } - - $constants = get_defined_constants(true); - if (!isset($constants['pcre']) || !is_array($constants['pcre'])) { - return 'UNDEFINED_ERROR'; - } - - foreach ($constants['pcre'] as $const => $val) { - if ($val === $code && substr($const, -6) === '_ERROR') { - return $const; - } - } - - return 'UNDEFINED_ERROR'; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/Preg.php b/v3_ci4/vendor/composer/pcre/src/Preg.php deleted file mode 100644 index 98b4d29..0000000 --- a/v3_ci4/vendor/composer/pcre/src/Preg.php +++ /dev/null @@ -1,430 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -class Preg -{ - /** @internal */ - public const ARRAY_MSG = '$subject as an array is not supported. You can use \'foreach\' instead.'; - /** @internal */ - public const INVALID_TYPE_MSG = '$subject must be a string, %s given.'; - - /** - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * @return 0|1 - * - * @param-out array $matches - */ - public static function match(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): int - { - self::checkOffsetCapture($flags, 'matchWithOffsets'); - - $result = preg_match($pattern, $subject, $matches, $flags | PREG_UNMATCHED_AS_NULL, $offset); - if ($result === false) { - throw PcreException::fromFunction('preg_match', $pattern); - } - - return $result; - } - - /** - * Variant of `match()` which outputs non-null matches (or throws) - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * @return 0|1 - * @throws UnexpectedNullMatchException - * - * @param-out array $matches - */ - public static function matchStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): int - { - $result = self::match($pattern, $subject, $matchesInternal, $flags, $offset); - $matches = self::enforceNonNullMatches($pattern, $matchesInternal, 'match'); - - return $result; - } - - /** - * Runs preg_match with PREG_OFFSET_CAPTURE - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL and PREG_OFFSET_CAPTURE are always set, no other flags are supported - * @return 0|1 - * - * @param-out array}> $matches - */ - public static function matchWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): int - { - $result = preg_match($pattern, $subject, $matches, $flags | PREG_UNMATCHED_AS_NULL | PREG_OFFSET_CAPTURE, $offset); - if ($result === false) { - throw PcreException::fromFunction('preg_match', $pattern); - } - - return $result; - } - - /** - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * @return 0|positive-int - * - * @param-out array> $matches - */ - public static function matchAll(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): int - { - self::checkOffsetCapture($flags, 'matchAllWithOffsets'); - self::checkSetOrder($flags); - - $result = preg_match_all($pattern, $subject, $matches, $flags | PREG_UNMATCHED_AS_NULL, $offset); - if (!is_int($result)) { // PHP < 8 may return null, 8+ returns int|false - throw PcreException::fromFunction('preg_match_all', $pattern); - } - - return $result; - } - - /** - * Variant of `match()` which outputs non-null matches (or throws) - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * @return 0|positive-int - * @throws UnexpectedNullMatchException - * - * @param-out array> $matches - */ - public static function matchAllStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): int - { - $result = self::matchAll($pattern, $subject, $matchesInternal, $flags, $offset); - $matches = self::enforceNonNullMatchAll($pattern, $matchesInternal, 'matchAll'); - - return $result; - } - - /** - * Runs preg_match_all with PREG_OFFSET_CAPTURE - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL and PREG_MATCH_OFFSET are always set, no other flags are supported - * @return 0|positive-int - * - * @param-out array}>> $matches - */ - public static function matchAllWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): int - { - self::checkSetOrder($flags); - - $result = preg_match_all($pattern, $subject, $matches, $flags | PREG_UNMATCHED_AS_NULL | PREG_OFFSET_CAPTURE, $offset); - if (!is_int($result)) { // PHP < 8 may return null, 8+ returns int|false - throw PcreException::fromFunction('preg_match_all', $pattern); - } - - return $result; - } - - /** - * @param string|string[] $pattern - * @param string|string[] $replacement - * @param string $subject - * @param int $count Set by method - * - * @param-out int<0, max> $count - */ - public static function replace($pattern, $replacement, $subject, int $limit = -1, ?int &$count = null): string - { - if (!is_scalar($subject)) { - if (is_array($subject)) { - throw new \InvalidArgumentException(static::ARRAY_MSG); - } - - throw new \TypeError(sprintf(static::INVALID_TYPE_MSG, gettype($subject))); - } - - $result = preg_replace($pattern, $replacement, $subject, $limit, $count); - if ($result === null) { - throw PcreException::fromFunction('preg_replace', $pattern); - } - - return $result; - } - - /** - * @param string|string[] $pattern - * @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array}>): string) : callable(array): string) $replacement - * @param string $subject - * @param int $count Set by method - * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set - * - * @param-out int<0, max> $count - */ - public static function replaceCallback($pattern, callable $replacement, $subject, int $limit = -1, ?int &$count = null, int $flags = 0): string - { - if (!is_scalar($subject)) { - if (is_array($subject)) { - throw new \InvalidArgumentException(static::ARRAY_MSG); - } - - throw new \TypeError(sprintf(static::INVALID_TYPE_MSG, gettype($subject))); - } - - $result = preg_replace_callback($pattern, $replacement, $subject, $limit, $count, $flags | PREG_UNMATCHED_AS_NULL); - if ($result === null) { - throw PcreException::fromFunction('preg_replace_callback', $pattern); - } - - return $result; - } - - /** - * Variant of `replaceCallback()` which outputs non-null matches (or throws) - * - * @param string $pattern - * @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array}>): string) : callable(array): string) $replacement - * @param string $subject - * @param int $count Set by method - * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set - * - * @param-out int<0, max> $count - */ - public static function replaceCallbackStrictGroups(string $pattern, callable $replacement, $subject, int $limit = -1, ?int &$count = null, int $flags = 0): string - { - return self::replaceCallback($pattern, function (array $matches) use ($pattern, $replacement) { - return $replacement(self::enforceNonNullMatches($pattern, $matches, 'replaceCallback')); - }, $subject, $limit, $count, $flags); - } - - /** - * @param ($flags is PREG_OFFSET_CAPTURE ? (array}>): string>) : array): string>) $pattern - * @param string $subject - * @param int $count Set by method - * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set - * - * @param-out int<0, max> $count - */ - public static function replaceCallbackArray(array $pattern, $subject, int $limit = -1, ?int &$count = null, int $flags = 0): string - { - if (!is_scalar($subject)) { - if (is_array($subject)) { - throw new \InvalidArgumentException(static::ARRAY_MSG); - } - - throw new \TypeError(sprintf(static::INVALID_TYPE_MSG, gettype($subject))); - } - - $result = preg_replace_callback_array($pattern, $subject, $limit, $count, $flags | PREG_UNMATCHED_AS_NULL); - if ($result === null) { - $pattern = array_keys($pattern); - throw PcreException::fromFunction('preg_replace_callback_array', $pattern); - } - - return $result; - } - - /** - * @param int-mask $flags PREG_SPLIT_NO_EMPTY or PREG_SPLIT_DELIM_CAPTURE - * @return list - */ - public static function split(string $pattern, string $subject, int $limit = -1, int $flags = 0): array - { - if (($flags & PREG_SPLIT_OFFSET_CAPTURE) !== 0) { - throw new \InvalidArgumentException('PREG_SPLIT_OFFSET_CAPTURE is not supported as it changes the type of $matches, use splitWithOffsets() instead'); - } - - $result = preg_split($pattern, $subject, $limit, $flags); - if ($result === false) { - throw PcreException::fromFunction('preg_split', $pattern); - } - - return $result; - } - - /** - * @param int-mask $flags PREG_SPLIT_NO_EMPTY or PREG_SPLIT_DELIM_CAPTURE, PREG_SPLIT_OFFSET_CAPTURE is always set - * @return list - * @phpstan-return list}> - */ - public static function splitWithOffsets(string $pattern, string $subject, int $limit = -1, int $flags = 0): array - { - $result = preg_split($pattern, $subject, $limit, $flags | PREG_SPLIT_OFFSET_CAPTURE); - if ($result === false) { - throw PcreException::fromFunction('preg_split', $pattern); - } - - return $result; - } - - /** - * @template T of string|\Stringable - * @param string $pattern - * @param array $array - * @param int-mask $flags PREG_GREP_INVERT - * @return array - */ - public static function grep(string $pattern, array $array, int $flags = 0): array - { - $result = preg_grep($pattern, $array, $flags); - if ($result === false) { - throw PcreException::fromFunction('preg_grep', $pattern); - } - - return $result; - } - - /** - * Variant of match() which returns a bool instead of int - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * - * @param-out array $matches - */ - public static function isMatch(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool - { - return (bool) static::match($pattern, $subject, $matches, $flags, $offset); - } - - /** - * Variant of `isMatch()` which outputs non-null matches (or throws) - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * @throws UnexpectedNullMatchException - * - * @param-out array $matches - */ - public static function isMatchStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool - { - return (bool) self::matchStrictGroups($pattern, $subject, $matches, $flags, $offset); - } - - /** - * Variant of matchAll() which returns a bool instead of int - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * - * @param-out array> $matches - */ - public static function isMatchAll(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool - { - return (bool) static::matchAll($pattern, $subject, $matches, $flags, $offset); - } - - /** - * Variant of `isMatchAll()` which outputs non-null matches (or throws) - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * - * @param-out array> $matches - */ - public static function isMatchAllStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool - { - return (bool) self::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset); - } - - /** - * Variant of matchWithOffsets() which returns a bool instead of int - * - * Runs preg_match with PREG_OFFSET_CAPTURE - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * - * @param-out array}> $matches - */ - public static function isMatchWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): bool - { - return (bool) static::matchWithOffsets($pattern, $subject, $matches, $flags, $offset); - } - - /** - * Variant of matchAllWithOffsets() which returns a bool instead of int - * - * Runs preg_match_all with PREG_OFFSET_CAPTURE - * - * @param non-empty-string $pattern - * @param array $matches Set by method - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * - * @param-out array}>> $matches - */ - public static function isMatchAllWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): bool - { - return (bool) static::matchAllWithOffsets($pattern, $subject, $matches, $flags, $offset); - } - - private static function checkOffsetCapture(int $flags, string $useFunctionName): void - { - if (($flags & PREG_OFFSET_CAPTURE) !== 0) { - throw new \InvalidArgumentException('PREG_OFFSET_CAPTURE is not supported as it changes the type of $matches, use ' . $useFunctionName . '() instead'); - } - } - - private static function checkSetOrder(int $flags): void - { - if (($flags & PREG_SET_ORDER) !== 0) { - throw new \InvalidArgumentException('PREG_SET_ORDER is not supported as it changes the type of $matches'); - } - } - - /** - * @param array $matches - * @return array - * @throws UnexpectedNullMatchException - */ - private static function enforceNonNullMatches(string $pattern, array $matches, string $variantMethod): array - { - foreach ($matches as $group => $match) { - if (is_string($match) || (is_array($match) && is_string($match[0]))) { - continue; - } - - throw new UnexpectedNullMatchException('Pattern "'.$pattern.'" had an unexpected unmatched group "'.$group.'", make sure the pattern always matches or use '.$variantMethod.'() instead.'); - } - - /** @var array */ - return $matches; - } - - /** - * @param array> $matches - * @return array> - * @throws UnexpectedNullMatchException - */ - private static function enforceNonNullMatchAll(string $pattern, array $matches, string $variantMethod): array - { - foreach ($matches as $group => $groupMatches) { - foreach ($groupMatches as $match) { - if (null === $match) { - throw new UnexpectedNullMatchException('Pattern "'.$pattern.'" had an unexpected unmatched group "'.$group.'", make sure the pattern always matches or use '.$variantMethod.'() instead.'); - } - } - } - - /** @var array> */ - return $matches; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/Regex.php b/v3_ci4/vendor/composer/pcre/src/Regex.php deleted file mode 100644 index 038cf06..0000000 --- a/v3_ci4/vendor/composer/pcre/src/Regex.php +++ /dev/null @@ -1,176 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -class Regex -{ - /** - * @param non-empty-string $pattern - */ - public static function isMatch(string $pattern, string $subject, int $offset = 0): bool - { - return (bool) Preg::match($pattern, $subject, $matches, 0, $offset); - } - - /** - * @param non-empty-string $pattern - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - */ - public static function match(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchResult - { - self::checkOffsetCapture($flags, 'matchWithOffsets'); - - $count = Preg::match($pattern, $subject, $matches, $flags, $offset); - - return new MatchResult($count, $matches); - } - - /** - * Variant of `match()` which returns non-null matches (or throws) - * - * @param non-empty-string $pattern - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * @throws UnexpectedNullMatchException - */ - public static function matchStrictGroups(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchStrictGroupsResult - { - // @phpstan-ignore composerPcre.maybeUnsafeStrictGroups - $count = Preg::matchStrictGroups($pattern, $subject, $matches, $flags, $offset); - - return new MatchStrictGroupsResult($count, $matches); - } - - /** - * Runs preg_match with PREG_OFFSET_CAPTURE - * - * @param non-empty-string $pattern - * @param int-mask $flags PREG_UNMATCHED_AS_NULL and PREG_MATCH_OFFSET are always set, no other flags are supported - */ - public static function matchWithOffsets(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchWithOffsetsResult - { - $count = Preg::matchWithOffsets($pattern, $subject, $matches, $flags, $offset); - - return new MatchWithOffsetsResult($count, $matches); - } - - /** - * @param non-empty-string $pattern - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - */ - public static function matchAll(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchAllResult - { - self::checkOffsetCapture($flags, 'matchAllWithOffsets'); - self::checkSetOrder($flags); - - $count = Preg::matchAll($pattern, $subject, $matches, $flags, $offset); - - return new MatchAllResult($count, $matches); - } - - /** - * Variant of `matchAll()` which returns non-null matches (or throws) - * - * @param non-empty-string $pattern - * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported - * @throws UnexpectedNullMatchException - */ - public static function matchAllStrictGroups(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchAllStrictGroupsResult - { - self::checkOffsetCapture($flags, 'matchAllWithOffsets'); - self::checkSetOrder($flags); - - // @phpstan-ignore composerPcre.maybeUnsafeStrictGroups - $count = Preg::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset); - - return new MatchAllStrictGroupsResult($count, $matches); - } - - /** - * Runs preg_match_all with PREG_OFFSET_CAPTURE - * - * @param non-empty-string $pattern - * @param int-mask $flags PREG_UNMATCHED_AS_NULL and PREG_MATCH_OFFSET are always set, no other flags are supported - */ - public static function matchAllWithOffsets(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchAllWithOffsetsResult - { - self::checkSetOrder($flags); - - $count = Preg::matchAllWithOffsets($pattern, $subject, $matches, $flags, $offset); - - return new MatchAllWithOffsetsResult($count, $matches); - } - /** - * @param string|string[] $pattern - * @param string|string[] $replacement - * @param string $subject - */ - public static function replace($pattern, $replacement, $subject, int $limit = -1): ReplaceResult - { - $result = Preg::replace($pattern, $replacement, $subject, $limit, $count); - - return new ReplaceResult($count, $result); - } - - /** - * @param string|string[] $pattern - * @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array}>): string) : callable(array): string) $replacement - * @param string $subject - * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set - */ - public static function replaceCallback($pattern, callable $replacement, $subject, int $limit = -1, int $flags = 0): ReplaceResult - { - $result = Preg::replaceCallback($pattern, $replacement, $subject, $limit, $count, $flags); - - return new ReplaceResult($count, $result); - } - - /** - * Variant of `replaceCallback()` which outputs non-null matches (or throws) - * - * @param string $pattern - * @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array}>): string) : callable(array): string) $replacement - * @param string $subject - * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set - */ - public static function replaceCallbackStrictGroups($pattern, callable $replacement, $subject, int $limit = -1, int $flags = 0): ReplaceResult - { - $result = Preg::replaceCallbackStrictGroups($pattern, $replacement, $subject, $limit, $count, $flags); - - return new ReplaceResult($count, $result); - } - - /** - * @param ($flags is PREG_OFFSET_CAPTURE ? (array}>): string>) : array): string>) $pattern - * @param string $subject - * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set - */ - public static function replaceCallbackArray(array $pattern, $subject, int $limit = -1, int $flags = 0): ReplaceResult - { - $result = Preg::replaceCallbackArray($pattern, $subject, $limit, $count, $flags); - - return new ReplaceResult($count, $result); - } - - private static function checkOffsetCapture(int $flags, string $useFunctionName): void - { - if (($flags & PREG_OFFSET_CAPTURE) !== 0) { - throw new \InvalidArgumentException('PREG_OFFSET_CAPTURE is not supported as it changes the return type, use '.$useFunctionName.'() instead'); - } - } - - private static function checkSetOrder(int $flags): void - { - if (($flags & PREG_SET_ORDER) !== 0) { - throw new \InvalidArgumentException('PREG_SET_ORDER is not supported as it changes the return type'); - } - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/ReplaceResult.php b/v3_ci4/vendor/composer/pcre/src/ReplaceResult.php deleted file mode 100644 index 3384771..0000000 --- a/v3_ci4/vendor/composer/pcre/src/ReplaceResult.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -final class ReplaceResult -{ - /** - * @readonly - * @var string - */ - public $result; - - /** - * @readonly - * @var 0|positive-int - */ - public $count; - - /** - * @readonly - * @var bool - */ - public $matched; - - /** - * @param 0|positive-int $count - */ - public function __construct(int $count, string $result) - { - $this->count = $count; - $this->matched = (bool) $count; - $this->result = $result; - } -} diff --git a/v3_ci4/vendor/composer/pcre/src/UnexpectedNullMatchException.php b/v3_ci4/vendor/composer/pcre/src/UnexpectedNullMatchException.php deleted file mode 100644 index f123828..0000000 --- a/v3_ci4/vendor/composer/pcre/src/UnexpectedNullMatchException.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Pcre; - -class UnexpectedNullMatchException extends PcreException -{ - public static function fromFunction($function, $pattern) - { - throw new \LogicException('fromFunction should not be called on '.self::class.', use '.PcreException::class); - } -} diff --git a/v3_ci4/vendor/composer/platform_check.php b/v3_ci4/vendor/composer/platform_check.php deleted file mode 100644 index 14bf88d..0000000 --- a/v3_ci4/vendor/composer/platform_check.php +++ /dev/null @@ -1,25 +0,0 @@ -= 80200)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 8.2.0". You are running ' . PHP_VERSION . '.'; -} - -if ($issues) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); - } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; - } - } - throw new \RuntimeException( - 'Composer detected issues in your platform: ' . implode(' ', $issues) - ); -} diff --git a/v3_ci4/vendor/composer/semver/CHANGELOG.md b/v3_ci4/vendor/composer/semver/CHANGELOG.md deleted file mode 100644 index bad46cd..0000000 --- a/v3_ci4/vendor/composer/semver/CHANGELOG.md +++ /dev/null @@ -1,229 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -This project adheres to [Semantic Versioning](http://semver.org/). - -### [3.4.3] 2024-09-19 - - * Fixed some type annotations - -### [3.4.2] 2024-07-12 - - * Fixed PHP 5.3 syntax error - -### [3.4.1] 2024-07-12 - - * Fixed normalizeStability's return type to enforce valid stabilities - -### [3.4.0] 2023-08-31 - - * Support larger major version numbers (#149) - -### [3.3.2] 2022-04-01 - - * Fixed handling of non-string values (#134) - -### [3.3.1] 2022-03-16 - - * Fixed possible cache key clash in the CompilingMatcher memoization (#132) - -### [3.3.0] 2022-03-15 - - * Improved performance of CompilingMatcher by memoizing more (#131) - * Added CompilingMatcher::clear to clear all memoization caches - -### [3.2.9] 2022-02-04 - - * Revert #129 (Fixed MultiConstraint with MatchAllConstraint) which caused regressions - -### [3.2.8] 2022-02-04 - - * Updates to latest phpstan / CI by @Seldaek in https://github.com/composer/semver/pull/130 - * Fixed MultiConstraint with MatchAllConstraint by @Toflar in https://github.com/composer/semver/pull/129 - -### [3.2.7] 2022-01-04 - - * Fixed: typo in type definition of Intervals class causing issues with Psalm scanning vendors - -### [3.2.6] 2021-10-25 - - * Fixed: type improvements to parseStability - -### [3.2.5] 2021-05-24 - - * Fixed: issue comparing disjunctive MultiConstraints to conjunctive ones (#127) - * Fixed: added complete type information using phpstan annotations - -### [3.2.4] 2020-11-13 - - * Fixed: code clean-up - -### [3.2.3] 2020-11-12 - - * Fixed: constraints in the form of `X || Y, >=Y.1` and other such complex constructs were in some cases being optimized into a more restrictive constraint - -### [3.2.2] 2020-10-14 - - * Fixed: internal code cleanups - -### [3.2.1] 2020-09-27 - - * Fixed: accidental validation of broken constraints combining ^/~ and wildcards, and -dev suffix allowing weird cases - * Fixed: normalization of beta0 and such which was dropping the 0 - -### [3.2.0] 2020-09-09 - - * Added: support for `x || @dev`, not very useful but seen in the wild and failed to validate with 1.5.2/1.6.0 - * Added: support for `foobar-dev` being equal to `dev-foobar`, dev-foobar is the official way to write it but we need to support the other for BC and convenience - -### [3.1.0] 2020-09-08 - - * Added: support for constraints like `^2.x-dev` and `~2.x-dev`, not very useful but seen in the wild and failed to validate with 3.0.1 - * Fixed: invalid aliases will no longer throw, unless explicitly validated by Composer in the root package - -### [3.0.1] 2020-09-08 - - * Fixed: handling of some invalid -dev versions which were seen as valid - -### [3.0.0] 2020-05-26 - - * Break: Renamed `EmptyConstraint`, replace it with `MatchAllConstraint` - * Break: Unlikely to affect anyone but strictly speaking a breaking change, `*.*` and such variants will not match all `dev-*` versions anymore, only `*` does - * Break: ConstraintInterface is now considered internal/private and not meant to be implemented by third parties anymore - * Added `Intervals` class to check if a constraint is a subsets of another one, and allow compacting complex MultiConstraints into simpler ones - * Added `CompilingMatcher` class to speed up constraint matching against simple Constraint instances - * Added `MatchAllConstraint` and `MatchNoneConstraint` which match everything and nothing - * Added more advanced optimization of contiguous constraints inside MultiConstraint - * Added tentative support for PHP 8 - * Fixed ConstraintInterface::matches to be commutative in all cases - -### [2.0.0] 2020-04-21 - - * Break: `dev-master`, `dev-trunk` and `dev-default` now normalize to `dev-master`, `dev-trunk` and `dev-default` instead of `9999999-dev` in 1.x - * Break: Removed the deprecated `AbstractConstraint` - * Added `getUpperBound` and `getLowerBound` to ConstraintInterface. They return `Composer\Semver\Constraint\Bound` instances - * Added `MultiConstraint::create` to create the most-optimal form of ConstraintInterface from an array of constraint strings - -### [1.7.2] 2020-12-03 - - * Fixed: Allow installing on php 8 - -### [1.7.1] 2020-09-27 - - * Fixed: accidental validation of broken constraints combining ^/~ and wildcards, and -dev suffix allowing weird cases - * Fixed: normalization of beta0 and such which was dropping the 0 - -### [1.7.0] 2020-09-09 - - * Added: support for `x || @dev`, not very useful but seen in the wild and failed to validate with 1.5.2/1.6.0 - * Added: support for `foobar-dev` being equal to `dev-foobar`, dev-foobar is the official way to write it but we need to support the other for BC and convenience - -### [1.6.0] 2020-09-08 - - * Added: support for constraints like `^2.x-dev` and `~2.x-dev`, not very useful but seen in the wild and failed to validate with 1.5.2 - * Fixed: invalid aliases will no longer throw, unless explicitly validated by Composer in the root package - -### [1.5.2] 2020-09-08 - - * Fixed: handling of some invalid -dev versions which were seen as valid - * Fixed: some doctypes - -### [1.5.1] 2020-01-13 - - * Fixed: Parsing of aliased version was not validating the alias to be a valid version - -### [1.5.0] 2019-03-19 - - * Added: some support for date versions (e.g. 201903) in `~` operator - * Fixed: support for stabilities in `~` operator was inconsistent - -### [1.4.2] 2016-08-30 - - * Fixed: collapsing of complex constraints lead to buggy constraints - -### [1.4.1] 2016-06-02 - - * Changed: branch-like requirements no longer strip build metadata - [composer/semver#38](https://github.com/composer/semver/pull/38). - -### [1.4.0] 2016-03-30 - - * Added: getters on MultiConstraint - [composer/semver#35](https://github.com/composer/semver/pull/35). - -### [1.3.0] 2016-02-25 - - * Fixed: stability parsing - [composer/composer#1234](https://github.com/composer/composer/issues/4889). - * Changed: collapse contiguous constraints when possible. - -### [1.2.0] 2015-11-10 - - * Changed: allow multiple numerical identifiers in 'pre-release' version part. - * Changed: add more 'v' prefix support. - -### [1.1.0] 2015-11-03 - - * Changed: dropped redundant `test` namespace. - * Changed: minor adjustment in datetime parsing normalization. - * Changed: `ConstraintInterface` relaxed, setPrettyString is not required anymore. - * Changed: `AbstractConstraint` marked deprecated, will be removed in 2.0. - * Changed: `Constraint` is now extensible. - -### [1.0.0] 2015-09-21 - - * Break: `VersionConstraint` renamed to `Constraint`. - * Break: `SpecificConstraint` renamed to `AbstractConstraint`. - * Break: `LinkConstraintInterface` renamed to `ConstraintInterface`. - * Break: `VersionParser::parseNameVersionPairs` was removed. - * Changed: `VersionParser::parseConstraints` allows (but ignores) build metadata now. - * Changed: `VersionParser::parseConstraints` allows (but ignores) prefixing numeric versions with a 'v' now. - * Changed: Fixed namespace(s) of test files. - * Changed: `Comparator::compare` no longer throws `InvalidArgumentException`. - * Changed: `Constraint` now throws `InvalidArgumentException`. - -### [0.1.0] 2015-07-23 - - * Added: `Composer\Semver\Comparator`, various methods to compare versions. - * Added: various documents such as README.md, LICENSE, etc. - * Added: configuration files for Git, Travis, php-cs-fixer, phpunit. - * Break: the following namespaces were renamed: - - Namespace: `Composer\Package\Version` -> `Composer\Semver` - - Namespace: `Composer\Package\LinkConstraint` -> `Composer\Semver\Constraint` - - Namespace: `Composer\Test\Package\Version` -> `Composer\Test\Semver` - - Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint` - * Changed: code style using php-cs-fixer. - -[3.4.3]: https://github.com/composer/semver/compare/3.4.2...3.4.3 -[3.4.2]: https://github.com/composer/semver/compare/3.4.1...3.4.2 -[3.4.1]: https://github.com/composer/semver/compare/3.4.0...3.4.1 -[3.4.0]: https://github.com/composer/semver/compare/3.3.2...3.4.0 -[3.3.2]: https://github.com/composer/semver/compare/3.3.1...3.3.2 -[3.3.1]: https://github.com/composer/semver/compare/3.3.0...3.3.1 -[3.3.0]: https://github.com/composer/semver/compare/3.2.9...3.3.0 -[3.2.9]: https://github.com/composer/semver/compare/3.2.8...3.2.9 -[3.2.8]: https://github.com/composer/semver/compare/3.2.7...3.2.8 -[3.2.7]: https://github.com/composer/semver/compare/3.2.6...3.2.7 -[3.2.6]: https://github.com/composer/semver/compare/3.2.5...3.2.6 -[3.2.5]: https://github.com/composer/semver/compare/3.2.4...3.2.5 -[3.2.4]: https://github.com/composer/semver/compare/3.2.3...3.2.4 -[3.2.3]: https://github.com/composer/semver/compare/3.2.2...3.2.3 -[3.2.2]: https://github.com/composer/semver/compare/3.2.1...3.2.2 -[3.2.1]: https://github.com/composer/semver/compare/3.2.0...3.2.1 -[3.2.0]: https://github.com/composer/semver/compare/3.1.0...3.2.0 -[3.1.0]: https://github.com/composer/semver/compare/3.0.1...3.1.0 -[3.0.1]: https://github.com/composer/semver/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/composer/semver/compare/2.0.0...3.0.0 -[2.0.0]: https://github.com/composer/semver/compare/1.5.1...2.0.0 -[1.7.2]: https://github.com/composer/semver/compare/1.7.1...1.7.2 -[1.7.1]: https://github.com/composer/semver/compare/1.7.0...1.7.1 -[1.7.0]: https://github.com/composer/semver/compare/1.6.0...1.7.0 -[1.6.0]: https://github.com/composer/semver/compare/1.5.2...1.6.0 -[1.5.2]: https://github.com/composer/semver/compare/1.5.1...1.5.2 -[1.5.1]: https://github.com/composer/semver/compare/1.5.0...1.5.1 -[1.5.0]: https://github.com/composer/semver/compare/1.4.2...1.5.0 -[1.4.2]: https://github.com/composer/semver/compare/1.4.1...1.4.2 -[1.4.1]: https://github.com/composer/semver/compare/1.4.0...1.4.1 -[1.4.0]: https://github.com/composer/semver/compare/1.3.0...1.4.0 -[1.3.0]: https://github.com/composer/semver/compare/1.2.0...1.3.0 -[1.2.0]: https://github.com/composer/semver/compare/1.1.0...1.2.0 -[1.1.0]: https://github.com/composer/semver/compare/1.0.0...1.1.0 -[1.0.0]: https://github.com/composer/semver/compare/0.1.0...1.0.0 -[0.1.0]: https://github.com/composer/semver/compare/5e0b9a4da...0.1.0 diff --git a/v3_ci4/vendor/composer/semver/LICENSE b/v3_ci4/vendor/composer/semver/LICENSE deleted file mode 100644 index 4669758..0000000 --- a/v3_ci4/vendor/composer/semver/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2015 Composer - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/v3_ci4/vendor/composer/semver/README.md b/v3_ci4/vendor/composer/semver/README.md deleted file mode 100644 index 7677849..0000000 --- a/v3_ci4/vendor/composer/semver/README.md +++ /dev/null @@ -1,99 +0,0 @@ -composer/semver -=============== - -Semver (Semantic Versioning) library that offers utilities, version constraint parsing and validation. - -Originally written as part of [composer/composer](https://github.com/composer/composer), -now extracted and made available as a stand-alone library. - -[![Continuous Integration](https://github.com/composer/semver/actions/workflows/continuous-integration.yml/badge.svg?branch=main)](https://github.com/composer/semver/actions/workflows/continuous-integration.yml) -[![PHP Lint](https://github.com/composer/semver/actions/workflows/lint.yml/badge.svg?branch=main)](https://github.com/composer/semver/actions/workflows/lint.yml) -[![PHPStan](https://github.com/composer/semver/actions/workflows/phpstan.yml/badge.svg?branch=main)](https://github.com/composer/semver/actions/workflows/phpstan.yml) - -Installation ------------- - -Install the latest version with: - -```bash -composer require composer/semver -``` - - -Requirements ------------- - -* PHP 5.3.2 is required but using the latest version of PHP is highly recommended. - - -Version Comparison ------------------- - -For details on how versions are compared, refer to the [Versions](https://getcomposer.org/doc/articles/versions.md) -article in the documentation section of the [getcomposer.org](https://getcomposer.org) website. - - -Basic usage ------------ - -### Comparator - -The [`Composer\Semver\Comparator`](https://github.com/composer/semver/blob/main/src/Comparator.php) class provides the following methods for comparing versions: - -* greaterThan($v1, $v2) -* greaterThanOrEqualTo($v1, $v2) -* lessThan($v1, $v2) -* lessThanOrEqualTo($v1, $v2) -* equalTo($v1, $v2) -* notEqualTo($v1, $v2) - -Each function takes two version strings as arguments and returns a boolean. For example: - -```php -use Composer\Semver\Comparator; - -Comparator::greaterThan('1.25.0', '1.24.0'); // 1.25.0 > 1.24.0 -``` - -### Semver - -The [`Composer\Semver\Semver`](https://github.com/composer/semver/blob/main/src/Semver.php) class provides the following methods: - -* satisfies($version, $constraints) -* satisfiedBy(array $versions, $constraint) -* sort($versions) -* rsort($versions) - -### Intervals - -The [`Composer\Semver\Intervals`](https://github.com/composer/semver/blob/main/src/Intervals.php) static class provides -a few utilities to work with complex constraints or read version intervals from a constraint: - -```php -use Composer\Semver\Intervals; - -// Checks whether $candidate is a subset of $constraint -Intervals::isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint); - -// Checks whether $a and $b have any intersection, equivalent to $a->matches($b) -Intervals::haveIntersections(ConstraintInterface $a, ConstraintInterface $b); - -// Optimizes a complex multi constraint by merging all intervals down to the smallest -// possible multi constraint. The drawbacks are this is not very fast, and the resulting -// multi constraint will have no human readable prettyConstraint configured on it -Intervals::compactConstraint(ConstraintInterface $constraint); - -// Creates an array of numeric intervals and branch constraints representing a given constraint -Intervals::get(ConstraintInterface $constraint); - -// Clears the memoization cache when you are done processing constraints -Intervals::clear() -``` - -See the class docblocks for more details. - - -License -------- - -composer/semver is licensed under the MIT License, see the LICENSE file for details. diff --git a/v3_ci4/vendor/composer/semver/composer.json b/v3_ci4/vendor/composer/semver/composer.json deleted file mode 100644 index 1fad9e5..0000000 --- a/v3_ci4/vendor/composer/semver/composer.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "composer/semver", - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "type": "library", - "license": "MIT", - "keywords": [ - "semver", - "semantic", - "versioning", - "validation" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/semver/issues" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3 || ^7", - "phpstan/phpstan": "^1.11" - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Composer\\Semver\\": "tests" - } - }, - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "scripts": { - "test": "SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT=1 vendor/bin/simple-phpunit", - "phpstan": "@php vendor/bin/phpstan analyse" - } -} diff --git a/v3_ci4/vendor/composer/semver/src/Comparator.php b/v3_ci4/vendor/composer/semver/src/Comparator.php deleted file mode 100644 index 38f483a..0000000 --- a/v3_ci4/vendor/composer/semver/src/Comparator.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver; - -use Composer\Semver\Constraint\Constraint; - -class Comparator -{ - /** - * Evaluates the expression: $version1 > $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function greaterThan($version1, $version2) - { - return self::compare($version1, '>', $version2); - } - - /** - * Evaluates the expression: $version1 >= $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function greaterThanOrEqualTo($version1, $version2) - { - return self::compare($version1, '>=', $version2); - } - - /** - * Evaluates the expression: $version1 < $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function lessThan($version1, $version2) - { - return self::compare($version1, '<', $version2); - } - - /** - * Evaluates the expression: $version1 <= $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function lessThanOrEqualTo($version1, $version2) - { - return self::compare($version1, '<=', $version2); - } - - /** - * Evaluates the expression: $version1 == $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function equalTo($version1, $version2) - { - return self::compare($version1, '==', $version2); - } - - /** - * Evaluates the expression: $version1 != $version2. - * - * @param string $version1 - * @param string $version2 - * - * @return bool - */ - public static function notEqualTo($version1, $version2) - { - return self::compare($version1, '!=', $version2); - } - - /** - * Evaluates the expression: $version1 $operator $version2. - * - * @param string $version1 - * @param string $operator - * @param string $version2 - * - * @return bool - * - * @phpstan-param Constraint::STR_OP_* $operator - */ - public static function compare($version1, $operator, $version2) - { - $constraint = new Constraint($operator, $version2); - - return $constraint->matchSpecific(new Constraint('==', $version1), true); - } -} diff --git a/v3_ci4/vendor/composer/semver/src/CompilingMatcher.php b/v3_ci4/vendor/composer/semver/src/CompilingMatcher.php deleted file mode 100644 index aea1d3b..0000000 --- a/v3_ci4/vendor/composer/semver/src/CompilingMatcher.php +++ /dev/null @@ -1,94 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver; - -use Composer\Semver\Constraint\Constraint; -use Composer\Semver\Constraint\ConstraintInterface; - -/** - * Helper class to evaluate constraint by compiling and reusing the code to evaluate - */ -class CompilingMatcher -{ - /** - * @var array - * @phpstan-var array - */ - private static $compiledCheckerCache = array(); - /** - * @var array - * @phpstan-var array - */ - private static $resultCache = array(); - - /** @var bool */ - private static $enabled; - - /** - * @phpstan-var array - */ - private static $transOpInt = array( - Constraint::OP_EQ => Constraint::STR_OP_EQ, - Constraint::OP_LT => Constraint::STR_OP_LT, - Constraint::OP_LE => Constraint::STR_OP_LE, - Constraint::OP_GT => Constraint::STR_OP_GT, - Constraint::OP_GE => Constraint::STR_OP_GE, - Constraint::OP_NE => Constraint::STR_OP_NE, - ); - - /** - * Clears the memoization cache once you are done - * - * @return void - */ - public static function clear() - { - self::$resultCache = array(); - self::$compiledCheckerCache = array(); - } - - /** - * Evaluates the expression: $constraint match $operator $version - * - * @param ConstraintInterface $constraint - * @param int $operator - * @phpstan-param Constraint::OP_* $operator - * @param string $version - * - * @return bool - */ - public static function match(ConstraintInterface $constraint, $operator, $version) - { - $resultCacheKey = $operator.$constraint.';'.$version; - - if (isset(self::$resultCache[$resultCacheKey])) { - return self::$resultCache[$resultCacheKey]; - } - - if (self::$enabled === null) { - self::$enabled = !\in_array('eval', explode(',', (string) ini_get('disable_functions')), true); - } - if (!self::$enabled) { - return self::$resultCache[$resultCacheKey] = $constraint->matches(new Constraint(self::$transOpInt[$operator], $version)); - } - - $cacheKey = $operator.$constraint; - if (!isset(self::$compiledCheckerCache[$cacheKey])) { - $code = $constraint->compile($operator); - self::$compiledCheckerCache[$cacheKey] = $function = eval('return function($v, $b){return '.$code.';};'); - } else { - $function = self::$compiledCheckerCache[$cacheKey]; - } - - return self::$resultCache[$resultCacheKey] = $function($version, strpos($version, 'dev-') === 0); - } -} diff --git a/v3_ci4/vendor/composer/semver/src/Constraint/Bound.php b/v3_ci4/vendor/composer/semver/src/Constraint/Bound.php deleted file mode 100644 index 7effb11..0000000 --- a/v3_ci4/vendor/composer/semver/src/Constraint/Bound.php +++ /dev/null @@ -1,122 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -class Bound -{ - /** - * @var string - */ - private $version; - - /** - * @var bool - */ - private $isInclusive; - - /** - * @param string $version - * @param bool $isInclusive - */ - public function __construct($version, $isInclusive) - { - $this->version = $version; - $this->isInclusive = $isInclusive; - } - - /** - * @return string - */ - public function getVersion() - { - return $this->version; - } - - /** - * @return bool - */ - public function isInclusive() - { - return $this->isInclusive; - } - - /** - * @return bool - */ - public function isZero() - { - return $this->getVersion() === '0.0.0.0-dev' && $this->isInclusive(); - } - - /** - * @return bool - */ - public function isPositiveInfinity() - { - return $this->getVersion() === PHP_INT_MAX.'.0.0.0' && !$this->isInclusive(); - } - - /** - * Compares a bound to another with a given operator. - * - * @param Bound $other - * @param string $operator - * - * @return bool - */ - public function compareTo(Bound $other, $operator) - { - if (!\in_array($operator, array('<', '>'), true)) { - throw new \InvalidArgumentException('Does not support any other operator other than > or <.'); - } - - // If they are the same it doesn't matter - if ($this == $other) { - return false; - } - - $compareResult = version_compare($this->getVersion(), $other->getVersion()); - - // Not the same version means we don't need to check if the bounds are inclusive or not - if (0 !== $compareResult) { - return (('>' === $operator) ? 1 : -1) === $compareResult; - } - - // Question we're answering here is "am I higher than $other?" - return '>' === $operator ? $other->isInclusive() : !$other->isInclusive(); - } - - public function __toString() - { - return sprintf( - '%s [%s]', - $this->getVersion(), - $this->isInclusive() ? 'inclusive' : 'exclusive' - ); - } - - /** - * @return self - */ - public static function zero() - { - return new Bound('0.0.0.0-dev', true); - } - - /** - * @return self - */ - public static function positiveInfinity() - { - return new Bound(PHP_INT_MAX.'.0.0.0', false); - } -} diff --git a/v3_ci4/vendor/composer/semver/src/Constraint/Constraint.php b/v3_ci4/vendor/composer/semver/src/Constraint/Constraint.php deleted file mode 100644 index dc39482..0000000 --- a/v3_ci4/vendor/composer/semver/src/Constraint/Constraint.php +++ /dev/null @@ -1,435 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -/** - * Defines a constraint. - */ -class Constraint implements ConstraintInterface -{ - /* operator integer values */ - const OP_EQ = 0; - const OP_LT = 1; - const OP_LE = 2; - const OP_GT = 3; - const OP_GE = 4; - const OP_NE = 5; - - /* operator string values */ - const STR_OP_EQ = '=='; - const STR_OP_EQ_ALT = '='; - const STR_OP_LT = '<'; - const STR_OP_LE = '<='; - const STR_OP_GT = '>'; - const STR_OP_GE = '>='; - const STR_OP_NE = '!='; - const STR_OP_NE_ALT = '<>'; - - /** - * Operator to integer translation table. - * - * @var array - * @phpstan-var array - */ - private static $transOpStr = array( - '=' => self::OP_EQ, - '==' => self::OP_EQ, - '<' => self::OP_LT, - '<=' => self::OP_LE, - '>' => self::OP_GT, - '>=' => self::OP_GE, - '<>' => self::OP_NE, - '!=' => self::OP_NE, - ); - - /** - * Integer to operator translation table. - * - * @var array - * @phpstan-var array - */ - private static $transOpInt = array( - self::OP_EQ => '==', - self::OP_LT => '<', - self::OP_LE => '<=', - self::OP_GT => '>', - self::OP_GE => '>=', - self::OP_NE => '!=', - ); - - /** - * @var int - * @phpstan-var self::OP_* - */ - protected $operator; - - /** @var string */ - protected $version; - - /** @var string|null */ - protected $prettyString; - - /** @var Bound */ - protected $lowerBound; - - /** @var Bound */ - protected $upperBound; - - /** - * Sets operator and version to compare with. - * - * @param string $operator - * @param string $version - * - * @throws \InvalidArgumentException if invalid operator is given. - * - * @phpstan-param self::STR_OP_* $operator - */ - public function __construct($operator, $version) - { - if (!isset(self::$transOpStr[$operator])) { - throw new \InvalidArgumentException(sprintf( - 'Invalid operator "%s" given, expected one of: %s', - $operator, - implode(', ', self::getSupportedOperators()) - )); - } - - $this->operator = self::$transOpStr[$operator]; - $this->version = $version; - } - - /** - * @return string - */ - public function getVersion() - { - return $this->version; - } - - /** - * @return string - * - * @phpstan-return self::STR_OP_* - */ - public function getOperator() - { - return self::$transOpInt[$this->operator]; - } - - /** - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider) - { - if ($provider instanceof self) { - return $this->matchSpecific($provider); - } - - // turn matching around to find a match - return $provider->matches($this); - } - - /** - * {@inheritDoc} - */ - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - - /** - * {@inheritDoc} - */ - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - - return $this->__toString(); - } - - /** - * Get all supported comparison operators. - * - * @return array - * - * @phpstan-return list - */ - public static function getSupportedOperators() - { - return array_keys(self::$transOpStr); - } - - /** - * @param string $operator - * @return int - * - * @phpstan-param self::STR_OP_* $operator - * @phpstan-return self::OP_* - */ - public static function getOperatorConstant($operator) - { - return self::$transOpStr[$operator]; - } - - /** - * @param string $a - * @param string $b - * @param string $operator - * @param bool $compareBranches - * - * @throws \InvalidArgumentException if invalid operator is given. - * - * @return bool - * - * @phpstan-param self::STR_OP_* $operator - */ - public function versionCompare($a, $b, $operator, $compareBranches = false) - { - if (!isset(self::$transOpStr[$operator])) { - throw new \InvalidArgumentException(sprintf( - 'Invalid operator "%s" given, expected one of: %s', - $operator, - implode(', ', self::getSupportedOperators()) - )); - } - - $aIsBranch = strpos($a, 'dev-') === 0; - $bIsBranch = strpos($b, 'dev-') === 0; - - if ($operator === '!=' && ($aIsBranch || $bIsBranch)) { - return $a !== $b; - } - - if ($aIsBranch && $bIsBranch) { - return $operator === '==' && $a === $b; - } - - // when branches are not comparable, we make sure dev branches never match anything - if (!$compareBranches && ($aIsBranch || $bIsBranch)) { - return false; - } - - return \version_compare($a, $b, $operator); - } - - /** - * {@inheritDoc} - */ - public function compile($otherOperator) - { - if (strpos($this->version, 'dev-') === 0) { - if (self::OP_EQ === $this->operator) { - if (self::OP_EQ === $otherOperator) { - return sprintf('$b && $v === %s', \var_export($this->version, true)); - } - if (self::OP_NE === $otherOperator) { - return sprintf('!$b || $v !== %s', \var_export($this->version, true)); - } - return 'false'; - } - - if (self::OP_NE === $this->operator) { - if (self::OP_EQ === $otherOperator) { - return sprintf('!$b || $v !== %s', \var_export($this->version, true)); - } - if (self::OP_NE === $otherOperator) { - return 'true'; - } - return '!$b'; - } - - return 'false'; - } - - if (self::OP_EQ === $this->operator) { - if (self::OP_EQ === $otherOperator) { - return sprintf('\version_compare($v, %s, \'==\')', \var_export($this->version, true)); - } - if (self::OP_NE === $otherOperator) { - return sprintf('$b || \version_compare($v, %s, \'!=\')', \var_export($this->version, true)); - } - - return sprintf('!$b && \version_compare(%s, $v, \'%s\')', \var_export($this->version, true), self::$transOpInt[$otherOperator]); - } - - if (self::OP_NE === $this->operator) { - if (self::OP_EQ === $otherOperator) { - return sprintf('$b || (!$b && \version_compare($v, %s, \'!=\'))', \var_export($this->version, true)); - } - - if (self::OP_NE === $otherOperator) { - return 'true'; - } - return '!$b'; - } - - if (self::OP_LT === $this->operator || self::OP_LE === $this->operator) { - if (self::OP_LT === $otherOperator || self::OP_LE === $otherOperator) { - return '!$b'; - } - } else { // $this->operator must be self::OP_GT || self::OP_GE here - if (self::OP_GT === $otherOperator || self::OP_GE === $otherOperator) { - return '!$b'; - } - } - - if (self::OP_NE === $otherOperator) { - return 'true'; - } - - $codeComparison = sprintf('\version_compare($v, %s, \'%s\')', \var_export($this->version, true), self::$transOpInt[$this->operator]); - if ($this->operator === self::OP_LE) { - if ($otherOperator === self::OP_GT) { - return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison; - } - } elseif ($this->operator === self::OP_GE) { - if ($otherOperator === self::OP_LT) { - return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison; - } - } - - return sprintf('!$b && %s', $codeComparison); - } - - /** - * @param Constraint $provider - * @param bool $compareBranches - * - * @return bool - */ - public function matchSpecific(Constraint $provider, $compareBranches = false) - { - $noEqualOp = str_replace('=', '', self::$transOpInt[$this->operator]); - $providerNoEqualOp = str_replace('=', '', self::$transOpInt[$provider->operator]); - - $isEqualOp = self::OP_EQ === $this->operator; - $isNonEqualOp = self::OP_NE === $this->operator; - $isProviderEqualOp = self::OP_EQ === $provider->operator; - $isProviderNonEqualOp = self::OP_NE === $provider->operator; - - // '!=' operator is match when other operator is not '==' operator or version is not match - // these kinds of comparisons always have a solution - if ($isNonEqualOp || $isProviderNonEqualOp) { - if ($isNonEqualOp && !$isProviderNonEqualOp && !$isProviderEqualOp && strpos($provider->version, 'dev-') === 0) { - return false; - } - - if ($isProviderNonEqualOp && !$isNonEqualOp && !$isEqualOp && strpos($this->version, 'dev-') === 0) { - return false; - } - - if (!$isEqualOp && !$isProviderEqualOp) { - return true; - } - return $this->versionCompare($provider->version, $this->version, '!=', $compareBranches); - } - - // an example for the condition is <= 2.0 & < 1.0 - // these kinds of comparisons always have a solution - if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) { - return !(strpos($this->version, 'dev-') === 0 || strpos($provider->version, 'dev-') === 0); - } - - $version1 = $isEqualOp ? $this->version : $provider->version; - $version2 = $isEqualOp ? $provider->version : $this->version; - $operator = $isEqualOp ? $provider->operator : $this->operator; - - if ($this->versionCompare($version1, $version2, self::$transOpInt[$operator], $compareBranches)) { - // special case, e.g. require >= 1.0 and provide < 1.0 - // 1.0 >= 1.0 but 1.0 is outside of the provided interval - - return !(self::$transOpInt[$provider->operator] === $providerNoEqualOp - && self::$transOpInt[$this->operator] !== $noEqualOp - && \version_compare($provider->version, $this->version, '==')); - } - - return false; - } - - /** - * @return string - */ - public function __toString() - { - return self::$transOpInt[$this->operator] . ' ' . $this->version; - } - - /** - * {@inheritDoc} - */ - public function getLowerBound() - { - $this->extractBounds(); - - return $this->lowerBound; - } - - /** - * {@inheritDoc} - */ - public function getUpperBound() - { - $this->extractBounds(); - - return $this->upperBound; - } - - /** - * @return void - */ - private function extractBounds() - { - if (null !== $this->lowerBound) { - return; - } - - // Branches - if (strpos($this->version, 'dev-') === 0) { - $this->lowerBound = Bound::zero(); - $this->upperBound = Bound::positiveInfinity(); - - return; - } - - switch ($this->operator) { - case self::OP_EQ: - $this->lowerBound = new Bound($this->version, true); - $this->upperBound = new Bound($this->version, true); - break; - case self::OP_LT: - $this->lowerBound = Bound::zero(); - $this->upperBound = new Bound($this->version, false); - break; - case self::OP_LE: - $this->lowerBound = Bound::zero(); - $this->upperBound = new Bound($this->version, true); - break; - case self::OP_GT: - $this->lowerBound = new Bound($this->version, false); - $this->upperBound = Bound::positiveInfinity(); - break; - case self::OP_GE: - $this->lowerBound = new Bound($this->version, true); - $this->upperBound = Bound::positiveInfinity(); - break; - case self::OP_NE: - $this->lowerBound = Bound::zero(); - $this->upperBound = Bound::positiveInfinity(); - break; - } - } -} diff --git a/v3_ci4/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/v3_ci4/vendor/composer/semver/src/Constraint/ConstraintInterface.php deleted file mode 100644 index 389b935..0000000 --- a/v3_ci4/vendor/composer/semver/src/Constraint/ConstraintInterface.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -/** - * DO NOT IMPLEMENT this interface. It is only meant for usage as a type hint - * in libraries relying on composer/semver but creating your own constraint class - * that implements this interface is not a supported use case and will cause the - * composer/semver components to return unexpected results. - */ -interface ConstraintInterface -{ - /** - * Checks whether the given constraint intersects in any way with this constraint - * - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider); - - /** - * Provides a compiled version of the constraint for the given operator - * The compiled version must be a PHP expression. - * Executor of compile version must provide 2 variables: - * - $v = the string version to compare with - * - $b = whether or not the version is a non-comparable branch (starts with "dev-") - * - * @see Constraint::OP_* for the list of available operators. - * @example return '!$b && version_compare($v, '1.0', '>')'; - * - * @param int $otherOperator one Constraint::OP_* - * - * @return string - * - * @phpstan-param Constraint::OP_* $otherOperator - */ - public function compile($otherOperator); - - /** - * @return Bound - */ - public function getUpperBound(); - - /** - * @return Bound - */ - public function getLowerBound(); - - /** - * @return string - */ - public function getPrettyString(); - - /** - * @param string|null $prettyString - * - * @return void - */ - public function setPrettyString($prettyString); - - /** - * @return string - */ - public function __toString(); -} diff --git a/v3_ci4/vendor/composer/semver/src/Constraint/MatchAllConstraint.php b/v3_ci4/vendor/composer/semver/src/Constraint/MatchAllConstraint.php deleted file mode 100644 index 5e51af9..0000000 --- a/v3_ci4/vendor/composer/semver/src/Constraint/MatchAllConstraint.php +++ /dev/null @@ -1,85 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -/** - * Defines the absence of a constraint. - * - * This constraint matches everything. - */ -class MatchAllConstraint implements ConstraintInterface -{ - /** @var string|null */ - protected $prettyString; - - /** - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider) - { - return true; - } - - /** - * {@inheritDoc} - */ - public function compile($otherOperator) - { - return 'true'; - } - - /** - * {@inheritDoc} - */ - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - - /** - * {@inheritDoc} - */ - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - - return (string) $this; - } - - /** - * {@inheritDoc} - */ - public function __toString() - { - return '*'; - } - - /** - * {@inheritDoc} - */ - public function getUpperBound() - { - return Bound::positiveInfinity(); - } - - /** - * {@inheritDoc} - */ - public function getLowerBound() - { - return Bound::zero(); - } -} diff --git a/v3_ci4/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php b/v3_ci4/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php deleted file mode 100644 index dadcf62..0000000 --- a/v3_ci4/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -/** - * Blackhole of constraints, nothing escapes it - */ -class MatchNoneConstraint implements ConstraintInterface -{ - /** @var string|null */ - protected $prettyString; - - /** - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider) - { - return false; - } - - /** - * {@inheritDoc} - */ - public function compile($otherOperator) - { - return 'false'; - } - - /** - * {@inheritDoc} - */ - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - - /** - * {@inheritDoc} - */ - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - - return (string) $this; - } - - /** - * {@inheritDoc} - */ - public function __toString() - { - return '[]'; - } - - /** - * {@inheritDoc} - */ - public function getUpperBound() - { - return new Bound('0.0.0.0-dev', false); - } - - /** - * {@inheritDoc} - */ - public function getLowerBound() - { - return new Bound('0.0.0.0-dev', false); - } -} diff --git a/v3_ci4/vendor/composer/semver/src/Constraint/MultiConstraint.php b/v3_ci4/vendor/composer/semver/src/Constraint/MultiConstraint.php deleted file mode 100644 index 1f4c006..0000000 --- a/v3_ci4/vendor/composer/semver/src/Constraint/MultiConstraint.php +++ /dev/null @@ -1,325 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver\Constraint; - -/** - * Defines a conjunctive or disjunctive set of constraints. - */ -class MultiConstraint implements ConstraintInterface -{ - /** - * @var ConstraintInterface[] - * @phpstan-var non-empty-array - */ - protected $constraints; - - /** @var string|null */ - protected $prettyString; - - /** @var string|null */ - protected $string; - - /** @var bool */ - protected $conjunctive; - - /** @var Bound|null */ - protected $lowerBound; - - /** @var Bound|null */ - protected $upperBound; - - /** - * @param ConstraintInterface[] $constraints A set of constraints - * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive - * - * @throws \InvalidArgumentException If less than 2 constraints are passed - */ - public function __construct(array $constraints, $conjunctive = true) - { - if (\count($constraints) < 2) { - throw new \InvalidArgumentException( - 'Must provide at least two constraints for a MultiConstraint. Use '. - 'the regular Constraint class for one constraint only or MatchAllConstraint for none. You may use '. - 'MultiConstraint::create() which optimizes and handles those cases automatically.' - ); - } - - $this->constraints = $constraints; - $this->conjunctive = $conjunctive; - } - - /** - * @return ConstraintInterface[] - */ - public function getConstraints() - { - return $this->constraints; - } - - /** - * @return bool - */ - public function isConjunctive() - { - return $this->conjunctive; - } - - /** - * @return bool - */ - public function isDisjunctive() - { - return !$this->conjunctive; - } - - /** - * {@inheritDoc} - */ - public function compile($otherOperator) - { - $parts = array(); - foreach ($this->constraints as $constraint) { - $code = $constraint->compile($otherOperator); - if ($code === 'true') { - if (!$this->conjunctive) { - return 'true'; - } - } elseif ($code === 'false') { - if ($this->conjunctive) { - return 'false'; - } - } else { - $parts[] = '('.$code.')'; - } - } - - if (!$parts) { - return $this->conjunctive ? 'true' : 'false'; - } - - return $this->conjunctive ? implode('&&', $parts) : implode('||', $parts); - } - - /** - * @param ConstraintInterface $provider - * - * @return bool - */ - public function matches(ConstraintInterface $provider) - { - if (false === $this->conjunctive) { - foreach ($this->constraints as $constraint) { - if ($provider->matches($constraint)) { - return true; - } - } - - return false; - } - - // when matching a conjunctive and a disjunctive multi constraint we have to iterate over the disjunctive one - // otherwise we'd return true if different parts of the disjunctive constraint match the conjunctive one - // which would lead to incorrect results, e.g. [>1 and <2] would match [<1 or >2] although they do not intersect - if ($provider instanceof MultiConstraint && $provider->isDisjunctive()) { - return $provider->matches($this); - } - - foreach ($this->constraints as $constraint) { - if (!$provider->matches($constraint)) { - return false; - } - } - - return true; - } - - /** - * {@inheritDoc} - */ - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - - /** - * {@inheritDoc} - */ - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - - return (string) $this; - } - - /** - * {@inheritDoc} - */ - public function __toString() - { - if ($this->string !== null) { - return $this->string; - } - - $constraints = array(); - foreach ($this->constraints as $constraint) { - $constraints[] = (string) $constraint; - } - - return $this->string = '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; - } - - /** - * {@inheritDoc} - */ - public function getLowerBound() - { - $this->extractBounds(); - - if (null === $this->lowerBound) { - throw new \LogicException('extractBounds should have populated the lowerBound property'); - } - - return $this->lowerBound; - } - - /** - * {@inheritDoc} - */ - public function getUpperBound() - { - $this->extractBounds(); - - if (null === $this->upperBound) { - throw new \LogicException('extractBounds should have populated the upperBound property'); - } - - return $this->upperBound; - } - - /** - * Tries to optimize the constraints as much as possible, meaning - * reducing/collapsing congruent constraints etc. - * Does not necessarily return a MultiConstraint instance if - * things can be reduced to a simple constraint - * - * @param ConstraintInterface[] $constraints A set of constraints - * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive - * - * @return ConstraintInterface - */ - public static function create(array $constraints, $conjunctive = true) - { - if (0 === \count($constraints)) { - return new MatchAllConstraint(); - } - - if (1 === \count($constraints)) { - return $constraints[0]; - } - - $optimized = self::optimizeConstraints($constraints, $conjunctive); - if ($optimized !== null) { - list($constraints, $conjunctive) = $optimized; - if (\count($constraints) === 1) { - return $constraints[0]; - } - } - - return new self($constraints, $conjunctive); - } - - /** - * @param ConstraintInterface[] $constraints - * @param bool $conjunctive - * @return ?array - * - * @phpstan-return array{0: list, 1: bool}|null - */ - private static function optimizeConstraints(array $constraints, $conjunctive) - { - // parse the two OR groups and if they are contiguous we collapse - // them into one constraint - // [>= 1 < 2] || [>= 2 < 3] || [>= 3 < 4] => [>= 1 < 4] - if (!$conjunctive) { - $left = $constraints[0]; - $mergedConstraints = array(); - $optimized = false; - for ($i = 1, $l = \count($constraints); $i < $l; $i++) { - $right = $constraints[$i]; - if ( - $left instanceof self - && $left->conjunctive - && $right instanceof self - && $right->conjunctive - && \count($left->constraints) === 2 - && \count($right->constraints) === 2 - && ($left0 = (string) $left->constraints[0]) - && $left0[0] === '>' && $left0[1] === '=' - && ($left1 = (string) $left->constraints[1]) - && $left1[0] === '<' - && ($right0 = (string) $right->constraints[0]) - && $right0[0] === '>' && $right0[1] === '=' - && ($right1 = (string) $right->constraints[1]) - && $right1[0] === '<' - && substr($left1, 2) === substr($right0, 3) - ) { - $optimized = true; - $left = new MultiConstraint( - array( - $left->constraints[0], - $right->constraints[1], - ), - true); - } else { - $mergedConstraints[] = $left; - $left = $right; - } - } - if ($optimized) { - $mergedConstraints[] = $left; - return array($mergedConstraints, false); - } - } - - // TODO: Here's the place to put more optimizations - - return null; - } - - /** - * @return void - */ - private function extractBounds() - { - if (null !== $this->lowerBound) { - return; - } - - foreach ($this->constraints as $constraint) { - if (null === $this->lowerBound || null === $this->upperBound) { - $this->lowerBound = $constraint->getLowerBound(); - $this->upperBound = $constraint->getUpperBound(); - continue; - } - - if ($constraint->getLowerBound()->compareTo($this->lowerBound, $this->isConjunctive() ? '>' : '<')) { - $this->lowerBound = $constraint->getLowerBound(); - } - - if ($constraint->getUpperBound()->compareTo($this->upperBound, $this->isConjunctive() ? '<' : '>')) { - $this->upperBound = $constraint->getUpperBound(); - } - } - } -} diff --git a/v3_ci4/vendor/composer/semver/src/Interval.php b/v3_ci4/vendor/composer/semver/src/Interval.php deleted file mode 100644 index 43d5a4f..0000000 --- a/v3_ci4/vendor/composer/semver/src/Interval.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver; - -use Composer\Semver\Constraint\Constraint; - -class Interval -{ - /** @var Constraint */ - private $start; - /** @var Constraint */ - private $end; - - public function __construct(Constraint $start, Constraint $end) - { - $this->start = $start; - $this->end = $end; - } - - /** - * @return Constraint - */ - public function getStart() - { - return $this->start; - } - - /** - * @return Constraint - */ - public function getEnd() - { - return $this->end; - } - - /** - * @return Constraint - */ - public static function fromZero() - { - static $zero; - - if (null === $zero) { - $zero = new Constraint('>=', '0.0.0.0-dev'); - } - - return $zero; - } - - /** - * @return Constraint - */ - public static function untilPositiveInfinity() - { - static $positiveInfinity; - - if (null === $positiveInfinity) { - $positiveInfinity = new Constraint('<', PHP_INT_MAX.'.0.0.0'); - } - - return $positiveInfinity; - } - - /** - * @return self - */ - public static function any() - { - return new self(self::fromZero(), self::untilPositiveInfinity()); - } - - /** - * @return array{'names': string[], 'exclude': bool} - */ - public static function anyDev() - { - // any == exclude nothing - return array('names' => array(), 'exclude' => true); - } - - /** - * @return array{'names': string[], 'exclude': bool} - */ - public static function noDev() - { - // nothing == no names included - return array('names' => array(), 'exclude' => false); - } -} diff --git a/v3_ci4/vendor/composer/semver/src/Intervals.php b/v3_ci4/vendor/composer/semver/src/Intervals.php deleted file mode 100644 index d889d0a..0000000 --- a/v3_ci4/vendor/composer/semver/src/Intervals.php +++ /dev/null @@ -1,478 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver; - -use Composer\Semver\Constraint\Constraint; -use Composer\Semver\Constraint\ConstraintInterface; -use Composer\Semver\Constraint\MatchAllConstraint; -use Composer\Semver\Constraint\MatchNoneConstraint; -use Composer\Semver\Constraint\MultiConstraint; - -/** - * Helper class generating intervals from constraints - * - * This contains utilities for: - * - * - compacting an existing constraint which can be used to combine several into one - * by creating a MultiConstraint out of the many constraints you have. - * - * - checking whether one subset is a subset of another. - * - * Note: You should call clear to free memoization memory usage when you are done using this class - */ -class Intervals -{ - /** - * @phpstan-var array - */ - private static $intervalsCache = array(); - - /** - * @phpstan-var array - */ - private static $opSortOrder = array( - '>=' => -3, - '<' => -2, - '>' => 2, - '<=' => 3, - ); - - /** - * Clears the memoization cache once you are done - * - * @return void - */ - public static function clear() - { - self::$intervalsCache = array(); - } - - /** - * Checks whether $candidate is a subset of $constraint - * - * @return bool - */ - public static function isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint) - { - if ($constraint instanceof MatchAllConstraint) { - return true; - } - - if ($candidate instanceof MatchNoneConstraint || $constraint instanceof MatchNoneConstraint) { - return false; - } - - $intersectionIntervals = self::get(new MultiConstraint(array($candidate, $constraint), true)); - $candidateIntervals = self::get($candidate); - if (\count($intersectionIntervals['numeric']) !== \count($candidateIntervals['numeric'])) { - return false; - } - - foreach ($intersectionIntervals['numeric'] as $index => $interval) { - if (!isset($candidateIntervals['numeric'][$index])) { - return false; - } - - if ((string) $candidateIntervals['numeric'][$index]->getStart() !== (string) $interval->getStart()) { - return false; - } - - if ((string) $candidateIntervals['numeric'][$index]->getEnd() !== (string) $interval->getEnd()) { - return false; - } - } - - if ($intersectionIntervals['branches']['exclude'] !== $candidateIntervals['branches']['exclude']) { - return false; - } - if (\count($intersectionIntervals['branches']['names']) !== \count($candidateIntervals['branches']['names'])) { - return false; - } - foreach ($intersectionIntervals['branches']['names'] as $index => $name) { - if ($name !== $candidateIntervals['branches']['names'][$index]) { - return false; - } - } - - return true; - } - - /** - * Checks whether $a and $b have any intersection, equivalent to $a->matches($b) - * - * @return bool - */ - public static function haveIntersections(ConstraintInterface $a, ConstraintInterface $b) - { - if ($a instanceof MatchAllConstraint || $b instanceof MatchAllConstraint) { - return true; - } - - if ($a instanceof MatchNoneConstraint || $b instanceof MatchNoneConstraint) { - return false; - } - - $intersectionIntervals = self::generateIntervals(new MultiConstraint(array($a, $b), true), true); - - return \count($intersectionIntervals['numeric']) > 0 || $intersectionIntervals['branches']['exclude'] || \count($intersectionIntervals['branches']['names']) > 0; - } - - /** - * Attempts to optimize a MultiConstraint - * - * When merging MultiConstraints together they can get very large, this will - * compact it by looking at the real intervals covered by all the constraints - * and then creates a new constraint containing only the smallest amount of rules - * to match the same intervals. - * - * @return ConstraintInterface - */ - public static function compactConstraint(ConstraintInterface $constraint) - { - if (!$constraint instanceof MultiConstraint) { - return $constraint; - } - - $intervals = self::generateIntervals($constraint); - $constraints = array(); - $hasNumericMatchAll = false; - - if (\count($intervals['numeric']) === 1 && (string) $intervals['numeric'][0]->getStart() === (string) Interval::fromZero() && (string) $intervals['numeric'][0]->getEnd() === (string) Interval::untilPositiveInfinity()) { - $constraints[] = $intervals['numeric'][0]->getStart(); - $hasNumericMatchAll = true; - } else { - $unEqualConstraints = array(); - for ($i = 0, $count = \count($intervals['numeric']); $i < $count; $i++) { - $interval = $intervals['numeric'][$i]; - - // if current interval ends with < N and next interval begins with > N we can swap this out for != N - // but this needs to happen as a conjunctive expression together with the start of the current interval - // and end of next interval, so [>=M, N, [>=M, !=N, getEnd()->getOperator() === '<' && $i+1 < $count) { - $nextInterval = $intervals['numeric'][$i+1]; - if ($interval->getEnd()->getVersion() === $nextInterval->getStart()->getVersion() && $nextInterval->getStart()->getOperator() === '>') { - // only add a start if we didn't already do so, can be skipped if we're looking at second - // interval in [>=M, N, P, =M, !=N] already and we only want to add !=P right now - if (\count($unEqualConstraints) === 0 && (string) $interval->getStart() !== (string) Interval::fromZero()) { - $unEqualConstraints[] = $interval->getStart(); - } - $unEqualConstraints[] = new Constraint('!=', $interval->getEnd()->getVersion()); - continue; - } - } - - if (\count($unEqualConstraints) > 0) { - // this is where the end of the following interval of a != constraint is added as explained above - if ((string) $interval->getEnd() !== (string) Interval::untilPositiveInfinity()) { - $unEqualConstraints[] = $interval->getEnd(); - } - - // count is 1 if entire constraint is just one != expression - if (\count($unEqualConstraints) > 1) { - $constraints[] = new MultiConstraint($unEqualConstraints, true); - } else { - $constraints[] = $unEqualConstraints[0]; - } - - $unEqualConstraints = array(); - continue; - } - - // convert back >= x - <= x intervals to == x - if ($interval->getStart()->getVersion() === $interval->getEnd()->getVersion() && $interval->getStart()->getOperator() === '>=' && $interval->getEnd()->getOperator() === '<=') { - $constraints[] = new Constraint('==', $interval->getStart()->getVersion()); - continue; - } - - if ((string) $interval->getStart() === (string) Interval::fromZero()) { - $constraints[] = $interval->getEnd(); - } elseif ((string) $interval->getEnd() === (string) Interval::untilPositiveInfinity()) { - $constraints[] = $interval->getStart(); - } else { - $constraints[] = new MultiConstraint(array($interval->getStart(), $interval->getEnd()), true); - } - } - } - - $devConstraints = array(); - - if (0 === \count($intervals['branches']['names'])) { - if ($intervals['branches']['exclude']) { - if ($hasNumericMatchAll) { - return new MatchAllConstraint; - } - // otherwise constraint should contain a != operator and already cover this - } - } else { - foreach ($intervals['branches']['names'] as $branchName) { - if ($intervals['branches']['exclude']) { - $devConstraints[] = new Constraint('!=', $branchName); - } else { - $devConstraints[] = new Constraint('==', $branchName); - } - } - - // excluded branches, e.g. != dev-foo are conjunctive with the interval, so - // > 2.0 != dev-foo must return a conjunctive constraint - if ($intervals['branches']['exclude']) { - if (\count($constraints) > 1) { - return new MultiConstraint(array_merge( - array(new MultiConstraint($constraints, false)), - $devConstraints - ), true); - } - - if (\count($constraints) === 1 && (string)$constraints[0] === (string)Interval::fromZero()) { - if (\count($devConstraints) > 1) { - return new MultiConstraint($devConstraints, true); - } - return $devConstraints[0]; - } - - return new MultiConstraint(array_merge($constraints, $devConstraints), true); - } - - // otherwise devConstraints contains a list of == operators for branches which are disjunctive with the - // rest of the constraint - $constraints = array_merge($constraints, $devConstraints); - } - - if (\count($constraints) > 1) { - return new MultiConstraint($constraints, false); - } - - if (\count($constraints) === 1) { - return $constraints[0]; - } - - return new MatchNoneConstraint; - } - - /** - * Creates an array of numeric intervals and branch constraints representing a given constraint - * - * if the returned numeric array is empty it means the constraint matches nothing in the numeric range (0 - +inf) - * if the returned branches array is empty it means no dev-* versions are matched - * if a constraint matches all possible dev-* versions, branches will contain Interval::anyDev() - * - * @return array - * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}} - */ - public static function get(ConstraintInterface $constraint) - { - $key = (string) $constraint; - - if (!isset(self::$intervalsCache[$key])) { - self::$intervalsCache[$key] = self::generateIntervals($constraint); - } - - return self::$intervalsCache[$key]; - } - - /** - * @param bool $stopOnFirstValidInterval - * - * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}} - */ - private static function generateIntervals(ConstraintInterface $constraint, $stopOnFirstValidInterval = false) - { - if ($constraint instanceof MatchAllConstraint) { - return array('numeric' => array(new Interval(Interval::fromZero(), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); - } - - if ($constraint instanceof MatchNoneConstraint) { - return array('numeric' => array(), 'branches' => array('names' => array(), 'exclude' => false)); - } - - if ($constraint instanceof Constraint) { - return self::generateSingleConstraintIntervals($constraint); - } - - if (!$constraint instanceof MultiConstraint) { - throw new \UnexpectedValueException('The constraint passed in should be an MatchAllConstraint, Constraint or MultiConstraint instance, got '.\get_class($constraint).'.'); - } - - $constraints = $constraint->getConstraints(); - - $numericGroups = array(); - $constraintBranches = array(); - foreach ($constraints as $c) { - $res = self::get($c); - $numericGroups[] = $res['numeric']; - $constraintBranches[] = $res['branches']; - } - - if ($constraint->isDisjunctive()) { - $branches = Interval::noDev(); - foreach ($constraintBranches as $b) { - if ($b['exclude']) { - if ($branches['exclude']) { - // disjunctive constraint, so only exclude what's excluded in all constraints - // !=a,!=b || !=b,!=c => !=b - $branches['names'] = array_intersect($branches['names'], $b['names']); - } else { - // disjunctive constraint so exclude all names which are not explicitly included in the alternative - // (==b || ==c) || !=a,!=b => !=a - $branches['exclude'] = true; - $branches['names'] = array_diff($b['names'], $branches['names']); - } - } else { - if ($branches['exclude']) { - // disjunctive constraint so exclude all names which are not explicitly included in the alternative - // !=a,!=b || (==b || ==c) => !=a - $branches['names'] = array_diff($branches['names'], $b['names']); - } else { - // disjunctive constraint, so just add all the other branches - // (==a || ==b) || ==c => ==a || ==b || ==c - $branches['names'] = array_merge($branches['names'], $b['names']); - } - } - } - } else { - $branches = Interval::anyDev(); - foreach ($constraintBranches as $b) { - if ($b['exclude']) { - if ($branches['exclude']) { - // conjunctive, so just add all branch names to be excluded - // !=a && !=b => !=a,!=b - $branches['names'] = array_merge($branches['names'], $b['names']); - } else { - // conjunctive, so only keep included names which are not excluded - // (==a||==c) && !=a,!=b => ==c - $branches['names'] = array_diff($branches['names'], $b['names']); - } - } else { - if ($branches['exclude']) { - // conjunctive, so only keep included names which are not excluded - // !=a,!=b && (==a||==c) => ==c - $branches['names'] = array_diff($b['names'], $branches['names']); - $branches['exclude'] = false; - } else { - // conjunctive, so only keep names that are included in both - // (==a||==b) && (==a||==c) => ==a - $branches['names'] = array_intersect($branches['names'], $b['names']); - } - } - } - } - - $branches['names'] = array_unique($branches['names']); - - if (\count($numericGroups) === 1) { - return array('numeric' => $numericGroups[0], 'branches' => $branches); - } - - $borders = array(); - foreach ($numericGroups as $group) { - foreach ($group as $interval) { - $borders[] = array('version' => $interval->getStart()->getVersion(), 'operator' => $interval->getStart()->getOperator(), 'side' => 'start'); - $borders[] = array('version' => $interval->getEnd()->getVersion(), 'operator' => $interval->getEnd()->getOperator(), 'side' => 'end'); - } - } - - $opSortOrder = self::$opSortOrder; - usort($borders, function ($a, $b) use ($opSortOrder) { - $order = version_compare($a['version'], $b['version']); - if ($order === 0) { - return $opSortOrder[$a['operator']] - $opSortOrder[$b['operator']]; - } - - return $order; - }); - - $activeIntervals = 0; - $intervals = array(); - $index = 0; - $activationThreshold = $constraint->isConjunctive() ? \count($numericGroups) : 1; - $start = null; - foreach ($borders as $border) { - if ($border['side'] === 'start') { - $activeIntervals++; - } else { - $activeIntervals--; - } - if (!$start && $activeIntervals >= $activationThreshold) { - $start = new Constraint($border['operator'], $border['version']); - } elseif ($start && $activeIntervals < $activationThreshold) { - // filter out invalid intervals like > x - <= x, or >= x - < x - if ( - version_compare($start->getVersion(), $border['version'], '=') - && ( - ($start->getOperator() === '>' && $border['operator'] === '<=') - || ($start->getOperator() === '>=' && $border['operator'] === '<') - ) - ) { - unset($intervals[$index]); - } else { - $intervals[$index] = new Interval($start, new Constraint($border['operator'], $border['version'])); - $index++; - - if ($stopOnFirstValidInterval) { - break; - } - } - - $start = null; - } - } - - return array('numeric' => $intervals, 'branches' => $branches); - } - - /** - * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}} - */ - private static function generateSingleConstraintIntervals(Constraint $constraint) - { - $op = $constraint->getOperator(); - - // handle branch constraints first - if (strpos($constraint->getVersion(), 'dev-') === 0) { - $intervals = array(); - $branches = array('names' => array(), 'exclude' => false); - - // != dev-foo means any numeric version may match, we treat >/< like != they are not really defined for branches - if ($op === '!=') { - $intervals[] = new Interval(Interval::fromZero(), Interval::untilPositiveInfinity()); - $branches = array('names' => array($constraint->getVersion()), 'exclude' => true); - } elseif ($op === '==') { - $branches['names'][] = $constraint->getVersion(); - } - - return array( - 'numeric' => $intervals, - 'branches' => $branches, - ); - } - - if ($op[0] === '>') { // > & >= - return array('numeric' => array(new Interval($constraint, Interval::untilPositiveInfinity())), 'branches' => Interval::noDev()); - } - if ($op[0] === '<') { // < & <= - return array('numeric' => array(new Interval(Interval::fromZero(), $constraint)), 'branches' => Interval::noDev()); - } - if ($op === '!=') { - // convert !=x to intervals of 0 - x - +inf + dev* - return array('numeric' => array( - new Interval(Interval::fromZero(), new Constraint('<', $constraint->getVersion())), - new Interval(new Constraint('>', $constraint->getVersion()), Interval::untilPositiveInfinity()), - ), 'branches' => Interval::anyDev()); - } - - // convert ==x to an interval of >=x - <=x - return array('numeric' => array( - new Interval(new Constraint('>=', $constraint->getVersion()), new Constraint('<=', $constraint->getVersion())), - ), 'branches' => Interval::noDev()); - } -} diff --git a/v3_ci4/vendor/composer/semver/src/Semver.php b/v3_ci4/vendor/composer/semver/src/Semver.php deleted file mode 100644 index 4fe9075..0000000 --- a/v3_ci4/vendor/composer/semver/src/Semver.php +++ /dev/null @@ -1,129 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver; - -use Composer\Semver\Constraint\Constraint; - -class Semver -{ - const SORT_ASC = 1; - const SORT_DESC = -1; - - /** @var VersionParser */ - private static $versionParser; - - /** - * Determine if given version satisfies given constraints. - * - * @param string $version - * @param string $constraints - * - * @return bool - */ - public static function satisfies($version, $constraints) - { - if (null === self::$versionParser) { - self::$versionParser = new VersionParser(); - } - - $versionParser = self::$versionParser; - $provider = new Constraint('==', $versionParser->normalize($version)); - $parsedConstraints = $versionParser->parseConstraints($constraints); - - return $parsedConstraints->matches($provider); - } - - /** - * Return all versions that satisfy given constraints. - * - * @param string[] $versions - * @param string $constraints - * - * @return list - */ - public static function satisfiedBy(array $versions, $constraints) - { - $versions = array_filter($versions, function ($version) use ($constraints) { - return Semver::satisfies($version, $constraints); - }); - - return array_values($versions); - } - - /** - * Sort given array of versions. - * - * @param string[] $versions - * - * @return list - */ - public static function sort(array $versions) - { - return self::usort($versions, self::SORT_ASC); - } - - /** - * Sort given array of versions in reverse. - * - * @param string[] $versions - * - * @return list - */ - public static function rsort(array $versions) - { - return self::usort($versions, self::SORT_DESC); - } - - /** - * @param string[] $versions - * @param int $direction - * - * @return list - */ - private static function usort(array $versions, $direction) - { - if (null === self::$versionParser) { - self::$versionParser = new VersionParser(); - } - - $versionParser = self::$versionParser; - $normalized = array(); - - // Normalize outside of usort() scope for minor performance increase. - // Creates an array of arrays: [[normalized, key], ...] - foreach ($versions as $key => $version) { - $normalizedVersion = $versionParser->normalize($version); - $normalizedVersion = $versionParser->normalizeDefaultBranch($normalizedVersion); - $normalized[] = array($normalizedVersion, $key); - } - - usort($normalized, function (array $left, array $right) use ($direction) { - if ($left[0] === $right[0]) { - return 0; - } - - if (Comparator::lessThan($left[0], $right[0])) { - return -$direction; - } - - return $direction; - }); - - // Recreate input array, using the original indexes which are now in sorted order. - $sorted = array(); - foreach ($normalized as $item) { - $sorted[] = $versions[$item[1]]; - } - - return $sorted; - } -} diff --git a/v3_ci4/vendor/composer/semver/src/VersionParser.php b/v3_ci4/vendor/composer/semver/src/VersionParser.php deleted file mode 100644 index 305a0fa..0000000 --- a/v3_ci4/vendor/composer/semver/src/VersionParser.php +++ /dev/null @@ -1,591 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\Semver; - -use Composer\Semver\Constraint\ConstraintInterface; -use Composer\Semver\Constraint\MatchAllConstraint; -use Composer\Semver\Constraint\MultiConstraint; -use Composer\Semver\Constraint\Constraint; - -/** - * Version parser. - * - * @author Jordi Boggiano - */ -class VersionParser -{ - /** - * Regex to match pre-release data (sort of). - * - * Due to backwards compatibility: - * - Instead of enforcing hyphen, an underscore, dot or nothing at all are also accepted. - * - Only stabilities as recognized by Composer are allowed to precede a numerical identifier. - * - Numerical-only pre-release identifiers are not supported, see tests. - * - * |--------------| - * [major].[minor].[patch] -[pre-release] +[build-metadata] - * - * @var string - */ - private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)((?:[.-]?\d+)*+)?)?([.-]?dev)?'; - - /** @var string */ - private static $stabilitiesRegex = 'stable|RC|beta|alpha|dev'; - - /** - * Returns the stability of a version. - * - * @param string $version - * - * @return string - * @phpstan-return 'stable'|'RC'|'beta'|'alpha'|'dev' - */ - public static function parseStability($version) - { - $version = (string) preg_replace('{#.+$}', '', (string) $version); - - if (strpos($version, 'dev-') === 0 || '-dev' === substr($version, -4)) { - return 'dev'; - } - - preg_match('{' . self::$modifierRegex . '(?:\+.*)?$}i', strtolower($version), $match); - - if (!empty($match[3])) { - return 'dev'; - } - - if (!empty($match[1])) { - if ('beta' === $match[1] || 'b' === $match[1]) { - return 'beta'; - } - if ('alpha' === $match[1] || 'a' === $match[1]) { - return 'alpha'; - } - if ('rc' === $match[1]) { - return 'RC'; - } - } - - return 'stable'; - } - - /** - * @param string $stability - * - * @return string - * @phpstan-return 'stable'|'RC'|'beta'|'alpha'|'dev' - */ - public static function normalizeStability($stability) - { - $stability = strtolower((string) $stability); - - if (!in_array($stability, array('stable', 'rc', 'beta', 'alpha', 'dev'), true)) { - throw new \InvalidArgumentException('Invalid stability string "'.$stability.'", expected one of stable, RC, beta, alpha or dev'); - } - - return $stability === 'rc' ? 'RC' : $stability; - } - - /** - * Normalizes a version string to be able to perform comparisons on it. - * - * @param string $version - * @param ?string $fullVersion optional complete version string to give more context - * - * @throws \UnexpectedValueException - * - * @return string - */ - public function normalize($version, $fullVersion = null) - { - $version = trim((string) $version); - $origVersion = $version; - if (null === $fullVersion) { - $fullVersion = $version; - } - - // strip off aliasing - if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $version, $match)) { - $version = $match[1]; - } - - // strip off stability flag - if (preg_match('{@(?:' . self::$stabilitiesRegex . ')$}i', $version, $match)) { - $version = substr($version, 0, strlen($version) - strlen($match[0])); - } - - // normalize master/trunk/default branches to dev-name for BC with 1.x as these used to be valid constraints - if (\in_array($version, array('master', 'trunk', 'default'), true)) { - $version = 'dev-' . $version; - } - - // if requirement is branch-like, use full name - if (stripos($version, 'dev-') === 0) { - return 'dev-' . substr($version, 4); - } - - // strip off build metadata - if (preg_match('{^([^,\s+]++)\+[^\s]++$}', $version, $match)) { - $version = $match[1]; - } - - // match classical versioning - if (preg_match('{^v?(\d{1,5}+)(\.\d++)?(\.\d++)?(\.\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) { - $version = $matches[1] - . (!empty($matches[2]) ? $matches[2] : '.0') - . (!empty($matches[3]) ? $matches[3] : '.0') - . (!empty($matches[4]) ? $matches[4] : '.0'); - $index = 5; - // match date(time) based versioning - } elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3}){0,2})' . self::$modifierRegex . '$}i', $version, $matches)) { - $version = (string) preg_replace('{\D}', '.', $matches[1]); - $index = 2; - } - - // add version modifiers if a version was matched - if (isset($index)) { - if (!empty($matches[$index])) { - if ('stable' === $matches[$index]) { - return $version; - } - $version .= '-' . $this->expandStability($matches[$index]) . (isset($matches[$index + 1]) && '' !== $matches[$index + 1] ? ltrim($matches[$index + 1], '.-') : ''); - } - - if (!empty($matches[$index + 2])) { - $version .= '-dev'; - } - - return $version; - } - - // match dev branches - if (preg_match('{(.*?)[.-]?dev$}i', $version, $match)) { - try { - $normalized = $this->normalizeBranch($match[1]); - // a branch ending with -dev is only valid if it is numeric - // if it gets prefixed with dev- it means the branch name should - // have had a dev- prefix already when passed to normalize - if (strpos($normalized, 'dev-') === false) { - return $normalized; - } - } catch (\Exception $e) { - } - } - - $extraMessage = ''; - if (preg_match('{ +as +' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))?$}', $fullVersion)) { - $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version'; - } elseif (preg_match('{^' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))? +as +}', $fullVersion)) { - $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-'; - } - - throw new \UnexpectedValueException('Invalid version string "' . $origVersion . '"' . $extraMessage); - } - - /** - * Extract numeric prefix from alias, if it is in numeric format, suitable for version comparison. - * - * @param string $branch Branch name (e.g. 2.1.x-dev) - * - * @return string|false Numeric prefix if present (e.g. 2.1.) or false - */ - public function parseNumericAliasPrefix($branch) - { - if (preg_match('{^(?P(\d++\\.)*\d++)(?:\.x)?-dev$}i', (string) $branch, $matches)) { - return $matches['version'] . '.'; - } - - return false; - } - - /** - * Normalizes a branch name to be able to perform comparisons on it. - * - * @param string $name - * - * @return string - */ - public function normalizeBranch($name) - { - $name = trim((string) $name); - - if (preg_match('{^v?(\d++)(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?$}i', $name, $matches)) { - $version = ''; - for ($i = 1; $i < 5; ++$i) { - $version .= isset($matches[$i]) ? str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x'; - } - - return str_replace('x', '9999999', $version) . '-dev'; - } - - return 'dev-' . $name; - } - - /** - * Normalizes a default branch name (i.e. master on git) to 9999999-dev. - * - * @param string $name - * - * @return string - * - * @deprecated No need to use this anymore in theory, Composer 2 does not normalize any branch names to 9999999-dev anymore - */ - public function normalizeDefaultBranch($name) - { - if ($name === 'dev-master' || $name === 'dev-default' || $name === 'dev-trunk') { - return '9999999-dev'; - } - - return (string) $name; - } - - /** - * Parses a constraint string into MultiConstraint and/or Constraint objects. - * - * @param string $constraints - * - * @return ConstraintInterface - */ - public function parseConstraints($constraints) - { - $prettyConstraint = (string) $constraints; - - $orConstraints = preg_split('{\s*\|\|?\s*}', trim((string) $constraints)); - if (false === $orConstraints) { - throw new \RuntimeException('Failed to preg_split string: '.$constraints); - } - $orGroups = array(); - - foreach ($orConstraints as $orConstraint) { - $andConstraints = preg_split('{(?< ,]) *(? 1) { - $constraintObjects = array(); - foreach ($andConstraints as $andConstraint) { - foreach ($this->parseConstraint($andConstraint) as $parsedAndConstraint) { - $constraintObjects[] = $parsedAndConstraint; - } - } - } else { - $constraintObjects = $this->parseConstraint($andConstraints[0]); - } - - if (1 === \count($constraintObjects)) { - $constraint = $constraintObjects[0]; - } else { - $constraint = new MultiConstraint($constraintObjects); - } - - $orGroups[] = $constraint; - } - - $parsedConstraint = MultiConstraint::create($orGroups, false); - - $parsedConstraint->setPrettyString($prettyConstraint); - - return $parsedConstraint; - } - - /** - * @param string $constraint - * - * @throws \UnexpectedValueException - * - * @return array - * - * @phpstan-return non-empty-array - */ - private function parseConstraint($constraint) - { - // strip off aliasing - if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $constraint, $match)) { - $constraint = $match[1]; - } - - // strip @stability flags, and keep it for later use - if (preg_match('{^([^,\s]*?)@(' . self::$stabilitiesRegex . ')$}i', $constraint, $match)) { - $constraint = '' !== $match[1] ? $match[1] : '*'; - if ($match[2] !== 'stable') { - $stabilityModifier = $match[2]; - } - } - - // get rid of #refs as those are used by composer only - if (preg_match('{^(dev-[^,\s@]+?|[^,\s@]+?\.x-dev)#.+$}i', $constraint, $match)) { - $constraint = $match[1]; - } - - if (preg_match('{^(v)?[xX*](\.[xX*])*$}i', $constraint, $match)) { - if (!empty($match[1]) || !empty($match[2])) { - return array(new Constraint('>=', '0.0.0.0-dev')); - } - - return array(new MatchAllConstraint()); - } - - $versionRegex = 'v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.(\d++))?(?:' . self::$modifierRegex . '|\.([xX*][.-]?dev))(?:\+[^\s]+)?'; - - // Tilde Range - // - // Like wildcard constraints, unsuffixed tilde constraints say that they must be greater than the previous - // version, to ensure that unstable instances of the current version are allowed. However, if a stability - // suffix is added to the constraint, then a >= match on the current version is used instead. - if (preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) { - if (strpos($constraint, '~>') === 0) { - throw new \UnexpectedValueException( - 'Could not parse version constraint ' . $constraint . ': ' . - 'Invalid operator "~>", you probably meant to use the "~" operator' - ); - } - - // Work out which position in the version we are operating at - if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { - $position = 4; - } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { - $position = 3; - } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { - $position = 2; - } else { - $position = 1; - } - - // when matching 2.x-dev or 3.0.x-dev we have to shift the second or third number, despite no second/third number matching above - if (!empty($matches[8])) { - $position++; - } - - // Calculate the stability suffix - $stabilitySuffix = ''; - if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { - $stabilitySuffix .= '-dev'; - } - - $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); - $lowerBound = new Constraint('>=', $lowVersion); - - // For upper bound, we increment the position of one more significance, - // but highPosition = 0 would be illegal - $highPosition = max(1, $position - 1); - $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev'; - $upperBound = new Constraint('<', $highVersion); - - return array( - $lowerBound, - $upperBound, - ); - } - - // Caret Range - // - // Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple. - // In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for - // versions 0.X >=0.1.0, and no updates for versions 0.0.X - if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) { - // Work out which position in the version we are operating at - if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { - $position = 1; - } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { - $position = 2; - } else { - $position = 3; - } - - // Calculate the stability suffix - $stabilitySuffix = ''; - if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { - $stabilitySuffix .= '-dev'; - } - - $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); - $lowerBound = new Constraint('>=', $lowVersion); - - // For upper bound, we increment the position of one more significance, - // but highPosition = 0 would be illegal - $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; - $upperBound = new Constraint('<', $highVersion); - - return array( - $lowerBound, - $upperBound, - ); - } - - // X Range - // - // Any of X, x, or * may be used to "stand in" for one of the numeric values in the [major, minor, patch] tuple. - // A partial version range is treated as an X-Range, so the special character is in fact optional. - if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) { - if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { - $position = 3; - } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { - $position = 2; - } else { - $position = 1; - } - - $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev'; - $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; - - if ($lowVersion === '0.0.0.0-dev') { - return array(new Constraint('<', $highVersion)); - } - - return array( - new Constraint('>=', $lowVersion), - new Constraint('<', $highVersion), - ); - } - - // Hyphen Range - // - // Specifies an inclusive set. If a partial version is provided as the first version in the inclusive range, - // then the missing pieces are replaced with zeroes. If a partial version is provided as the second version in - // the inclusive range, then all versions that start with the supplied parts of the tuple are accepted, but - // nothing that would be greater than the provided tuple parts. - if (preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) { - // Calculate the stability suffix - $lowStabilitySuffix = ''; - if (empty($matches[6]) && empty($matches[8]) && empty($matches[9])) { - $lowStabilitySuffix = '-dev'; - } - - $lowVersion = $this->normalize($matches['from']); - $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix); - - $empty = function ($x) { - return ($x === 0 || $x === '0') ? false : empty($x); - }; - - if ((!$empty($matches[12]) && !$empty($matches[13])) || !empty($matches[15]) || !empty($matches[17]) || !empty($matches[18])) { - $highVersion = $this->normalize($matches['to']); - $upperBound = new Constraint('<=', $highVersion); - } else { - $highMatch = array('', $matches[11], $matches[12], $matches[13], $matches[14]); - - // validate to version - $this->normalize($matches['to']); - - $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[12]) ? 1 : 2, 1) . '-dev'; - $upperBound = new Constraint('<', $highVersion); - } - - return array( - $lowerBound, - $upperBound, - ); - } - - // Basic Comparators - if (preg_match('{^(<>|!=|>=?|<=?|==?)?\s*(.*)}', $constraint, $matches)) { - try { - try { - $version = $this->normalize($matches[2]); - } catch (\UnexpectedValueException $e) { - // recover from an invalid constraint like foobar-dev which should be dev-foobar - // except if the constraint uses a known operator, in which case it must be a parse error - if (substr($matches[2], -4) === '-dev' && preg_match('{^[0-9a-zA-Z-./]+$}', $matches[2])) { - $version = $this->normalize('dev-'.substr($matches[2], 0, -4)); - } else { - throw $e; - } - } - - $op = $matches[1] ?: '='; - - if ($op !== '==' && $op !== '=' && !empty($stabilityModifier) && self::parseStability($version) === 'stable') { - $version .= '-' . $stabilityModifier; - } elseif ('<' === $op || '>=' === $op) { - if (!preg_match('/-' . self::$modifierRegex . '$/', strtolower($matches[2]))) { - if (strpos($matches[2], 'dev-') !== 0) { - $version .= '-dev'; - } - } - } - - return array(new Constraint($matches[1] ?: '=', $version)); - } catch (\Exception $e) { - } - } - - $message = 'Could not parse version constraint ' . $constraint; - if (isset($e)) { - $message .= ': ' . $e->getMessage(); - } - - throw new \UnexpectedValueException($message); - } - - /** - * Increment, decrement, or simply pad a version number. - * - * Support function for {@link parseConstraint()} - * - * @param array $matches Array with version parts in array indexes 1,2,3,4 - * @param int $position 1,2,3,4 - which segment of the version to increment/decrement - * @param int $increment - * @param string $pad The string to pad version parts after $position - * - * @return string|null The new version - * - * @phpstan-param string[] $matches - */ - private function manipulateVersionString(array $matches, $position, $increment = 0, $pad = '0') - { - for ($i = 4; $i > 0; --$i) { - if ($i > $position) { - $matches[$i] = $pad; - } elseif ($i === $position && $increment) { - $matches[$i] += $increment; - // If $matches[$i] was 0, carry the decrement - if ($matches[$i] < 0) { - $matches[$i] = $pad; - --$position; - - // Return null on a carry overflow - if ($i === 1) { - return null; - } - } - } - } - - return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4]; - } - - /** - * Expand shorthand stability string to long version. - * - * @param string $stability - * - * @return string - */ - private function expandStability($stability) - { - $stability = strtolower($stability); - - switch ($stability) { - case 'a': - return 'alpha'; - case 'b': - return 'beta'; - case 'p': - case 'pl': - return 'patch'; - case 'rc': - return 'RC'; - default: - return $stability; - } - } -} diff --git a/v3_ci4/vendor/composer/xdebug-handler/CHANGELOG.md b/v3_ci4/vendor/composer/xdebug-handler/CHANGELOG.md deleted file mode 100644 index 62ebe22..0000000 --- a/v3_ci4/vendor/composer/xdebug-handler/CHANGELOG.md +++ /dev/null @@ -1,143 +0,0 @@ -## [Unreleased] - -## [3.0.5] - 2024-05-06 - * Fixed: fail restart if PHP_BINARY is not available - -## [3.0.4] - 2024-03-26 - * Added: Functional tests. - * Fixed: Incompatibility with PHPUnit 10. - -## [3.0.3] - 2022-02-25 - * Added: support for composer/pcre versions 2 and 3. - -## [3.0.2] - 2022-02-24 - * Fixed: regression in 3.0.1 affecting Xdebug 2 - -## [3.0.1] - 2022-01-04 - * Fixed: error when calling `isXdebugActive` before class instantiation. - -## [3.0.0] - 2021-12-23 - * Removed: support for legacy PHP versions (< PHP 7.2.5). - * Added: type declarations to arguments and return values. - * Added: strict typing to all classes. - -## [2.0.3] - 2021-12-08 - * Added: support, type annotations and refactoring for stricter PHPStan analysis. - -## [2.0.2] - 2021-07-31 - * Added: support for `xdebug_info('mode')` in Xdebug 3.1. - * Added: support for Psr\Log versions 2 and 3. - * Fixed: remove ini directives from non-cli HOST/PATH sections. - -## [2.0.1] - 2021-05-05 - * Fixed: don't restart if the cwd is a UNC path and cmd.exe will be invoked. - -## [2.0.0] - 2021-04-09 - * Break: this is a major release, see [UPGRADE.md](UPGRADE.md) for more information. - * Break: removed optional `$colorOption` constructor param and passthru fallback. - * Break: renamed `requiresRestart` param from `$isLoaded` to `$default`. - * Break: changed `restart` param `$command` from a string to an array. - * Added: support for Xdebug3 to only restart if Xdebug is not running with `xdebug.mode=off`. - * Added: `isXdebugActive()` method to determine if Xdebug is still running in the restart. - * Added: feature to bypass the shell in PHP-7.4+ by giving `proc_open` an array of arguments. - * Added: Process utility class to the API. - -## [1.4.6] - 2021-03-25 - * Fixed: fail restart if `proc_open` has been disabled in `disable_functions`. - * Fixed: enable Windows CTRL event handling in the restarted process. - -## [1.4.5] - 2020-11-13 - * Fixed: use `proc_open` when available for correct FD forwarding to the restarted process. - -## [1.4.4] - 2020-10-24 - * Fixed: exception if 'pcntl_signal' is disabled. - -## [1.4.3] - 2020-08-19 - * Fixed: restore SIGINT to default handler in restarted process if no other handler exists. - -## [1.4.2] - 2020-06-04 - * Fixed: ignore SIGINTs to let the restarted process handle them. - -## [1.4.1] - 2020-03-01 - * Fixed: restart fails if an ini file is empty. - -## [1.4.0] - 2019-11-06 - * Added: support for `NO_COLOR` environment variable: https://no-color.org - * Added: color support for Hyper terminal: https://github.com/zeit/hyper - * Fixed: correct capitalization of Xdebug (apparently). - * Fixed: improved handling for uopz extension. - -## [1.3.3] - 2019-05-27 - * Fixed: add environment changes to `$_ENV` if it is being used. - -## [1.3.2] - 2019-01-28 - * Fixed: exit call being blocked by uopz extension, resulting in application code running twice. - -## [1.3.1] - 2018-11-29 - * Fixed: fail restart if `passthru` has been disabled in `disable_functions`. - * Fixed: fail restart if an ini file cannot be opened, otherwise settings will be missing. - -## [1.3.0] - 2018-08-31 - * Added: `setPersistent` method to use environment variables for the restart. - * Fixed: improved debugging by writing output to stderr. - * Fixed: no restart when `php_ini_scanned_files` is not functional and is needed. - -## [1.2.1] - 2018-08-23 - * Fixed: fatal error with apc, when using `apc.mmap_file_mask`. - -## [1.2.0] - 2018-08-16 - * Added: debug information using `XDEBUG_HANDLER_DEBUG`. - * Added: fluent interface for setters. - * Added: `PhpConfig` helper class for calling PHP sub-processes. - * Added: `PHPRC` original value to restart stettings, for use in a restarted process. - * Changed: internal procedure to disable ini-scanning, using `-n` command-line option. - * Fixed: replaced `escapeshellarg` usage to avoid locale problems. - * Fixed: improved color-option handling to respect double-dash delimiter. - * Fixed: color-option handling regression from main script changes. - * Fixed: improved handling when checking main script. - * Fixed: handling for standard input, that never actually did anything. - * Fixed: fatal error when ctype extension is not available. - -## [1.1.0] - 2018-04-11 - * Added: `getRestartSettings` method for calling PHP processes in a restarted process. - * Added: API definition and @internal class annotations. - * Added: protected `requiresRestart` method for extending classes. - * Added: `setMainScript` method for applications that change the working directory. - * Changed: private `tmpIni` variable to protected for extending classes. - * Fixed: environment variables not available in $_SERVER when restored in the restart. - * Fixed: relative path problems caused by Phar::interceptFileFuncs. - * Fixed: incorrect handling when script file cannot be found. - -## [1.0.0] - 2018-03-08 - * Added: PSR3 logging for optional status output. - * Added: existing ini settings are merged to catch command-line overrides. - * Added: code, tests and other artefacts to decouple from Composer. - * Break: the following class was renamed: - - `Composer\XdebugHandler` -> `Composer\XdebugHandler\XdebugHandler` - -[Unreleased]: https://github.com/composer/xdebug-handler/compare/3.0.5...HEAD -[3.0.5]: https://github.com/composer/xdebug-handler/compare/3.0.4...3.0.5 -[3.0.4]: https://github.com/composer/xdebug-handler/compare/3.0.3...3.0.4 -[3.0.3]: https://github.com/composer/xdebug-handler/compare/3.0.2...3.0.3 -[3.0.2]: https://github.com/composer/xdebug-handler/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/composer/xdebug-handler/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/composer/xdebug-handler/compare/2.0.3...3.0.0 -[2.0.3]: https://github.com/composer/xdebug-handler/compare/2.0.2...2.0.3 -[2.0.2]: https://github.com/composer/xdebug-handler/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/composer/xdebug-handler/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/composer/xdebug-handler/compare/1.4.6...2.0.0 -[1.4.6]: https://github.com/composer/xdebug-handler/compare/1.4.5...1.4.6 -[1.4.5]: https://github.com/composer/xdebug-handler/compare/1.4.4...1.4.5 -[1.4.4]: https://github.com/composer/xdebug-handler/compare/1.4.3...1.4.4 -[1.4.3]: https://github.com/composer/xdebug-handler/compare/1.4.2...1.4.3 -[1.4.2]: https://github.com/composer/xdebug-handler/compare/1.4.1...1.4.2 -[1.4.1]: https://github.com/composer/xdebug-handler/compare/1.4.0...1.4.1 -[1.4.0]: https://github.com/composer/xdebug-handler/compare/1.3.3...1.4.0 -[1.3.3]: https://github.com/composer/xdebug-handler/compare/1.3.2...1.3.3 -[1.3.2]: https://github.com/composer/xdebug-handler/compare/1.3.1...1.3.2 -[1.3.1]: https://github.com/composer/xdebug-handler/compare/1.3.0...1.3.1 -[1.3.0]: https://github.com/composer/xdebug-handler/compare/1.2.1...1.3.0 -[1.2.1]: https://github.com/composer/xdebug-handler/compare/1.2.0...1.2.1 -[1.2.0]: https://github.com/composer/xdebug-handler/compare/1.1.0...1.2.0 -[1.1.0]: https://github.com/composer/xdebug-handler/compare/1.0.0...1.1.0 -[1.0.0]: https://github.com/composer/xdebug-handler/compare/d66f0d15cb57...1.0.0 diff --git a/v3_ci4/vendor/composer/xdebug-handler/LICENSE b/v3_ci4/vendor/composer/xdebug-handler/LICENSE deleted file mode 100644 index 963618a..0000000 --- a/v3_ci4/vendor/composer/xdebug-handler/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Composer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/v3_ci4/vendor/composer/xdebug-handler/README.md b/v3_ci4/vendor/composer/xdebug-handler/README.md deleted file mode 100644 index f7f581a..0000000 --- a/v3_ci4/vendor/composer/xdebug-handler/README.md +++ /dev/null @@ -1,305 +0,0 @@ -# composer/xdebug-handler - -[![packagist](https://img.shields.io/packagist/v/composer/xdebug-handler)](https://packagist.org/packages/composer/xdebug-handler) -[![Continuous Integration](https://github.com/composer/xdebug-handler/actions/workflows/continuous-integration.yml/badge.svg?branch=main)](https://github.com/composer/xdebug-handler/actions?query=branch:main) -![license](https://img.shields.io/github/license/composer/xdebug-handler.svg) -![php](https://img.shields.io/packagist/php-v/composer/xdebug-handler?colorB=8892BF) - -Restart a CLI process without loading the Xdebug extension, unless `xdebug.mode=off`. - -Originally written as part of [composer/composer](https://github.com/composer/composer), -now extracted and made available as a stand-alone library. - -### Version 3 - -Removed support for legacy PHP versions and added type declarations. - -Long term support for version 2 (PHP 5.3.2 - 7.2.4) follows [Composer 2.2 LTS](https://blog.packagist.com/composer-2-2/) policy. - -## Installation - -Install the latest version with: - -```bash -$ composer require composer/xdebug-handler -``` - -## Requirements - -* PHP 7.2.5 minimum, although using the latest PHP version is highly recommended. - -## Basic Usage -```php -use Composer\XdebugHandler\XdebugHandler; - -$xdebug = new XdebugHandler('myapp'); -$xdebug->check(); -unset($xdebug); -``` - -The constructor takes a single parameter, `$envPrefix`, which is upper-cased and prepended to default base values to create two distinct environment variables. The above example enables the use of: - -- `MYAPP_ALLOW_XDEBUG=1` to override automatic restart and allow Xdebug -- `MYAPP_ORIGINAL_INIS` to obtain ini file locations in a restarted process - -## Advanced Usage - -* [How it works](#how-it-works) -* [Limitations](#limitations) -* [Helper methods](#helper-methods) -* [Setter methods](#setter-methods) -* [Process configuration](#process-configuration) -* [Troubleshooting](#troubleshooting) -* [Extending the library](#extending-the-library) -* [Examples](#examples) - -### How it works - -A temporary ini file is created from the loaded (and scanned) ini files, with any references to the Xdebug extension commented out. Current ini settings are merged, so that most ini settings made on the command-line or by the application are included (see [Limitations](#limitations)) - -* `MYAPP_ALLOW_XDEBUG` is set with internal data to flag and use in the restart. -* The command-line and environment are [configured](#process-configuration) for the restart. -* The application is restarted in a new process. - * The restart settings are stored in the environment. - * `MYAPP_ALLOW_XDEBUG` is unset. - * The application runs and exits. -* The main process exits with the exit code from the restarted process. - -See [Examples](#examples) for further information. - -#### Signal handling -Asynchronous signal handling is automatically enabled if the pcntl extension is loaded. `SIGINT` is set to `SIG_IGN` in the parent -process and restored to `SIG_DFL` in the restarted process (if no other handler has been set). - -From PHP 7.4 on Windows, `CTRL+C` and `CTRL+BREAK` handling is automatically enabled in the restarted process and ignored in the parent process. - -### Limitations -There are a few things to be aware of when running inside a restarted process. - -* Extensions set on the command-line will not be loaded. -* Ini file locations will be reported as per the restart - see [getAllIniFiles()](#getallinifiles-array). -* Php sub-processes may be loaded with Xdebug enabled - see [Process configuration](#process-configuration). - -### Helper methods -These static methods provide information from the current process, regardless of whether it has been restarted or not. - -#### _getAllIniFiles(): array_ -Returns an array of the original ini file locations. Use this instead of calling `php_ini_loaded_file` and `php_ini_scanned_files`, which will report the wrong values in a restarted process. - -```php -use Composer\XdebugHandler\XdebugHandler; - -$files = XdebugHandler::getAllIniFiles(); - -# $files[0] always exists, it could be an empty string -$loadedIni = array_shift($files); -$scannedInis = $files; -``` - -These locations are also available in the `MYAPP_ORIGINAL_INIS` environment variable. This is a path-separated string comprising the location returned from `php_ini_loaded_file`, which could be empty, followed by locations parsed from calling `php_ini_scanned_files`. - -#### _getRestartSettings(): ?array_ -Returns an array of settings that can be used with PHP [sub-processes](#sub-processes), or null if the process was not restarted. - -```php -use Composer\XdebugHandler\XdebugHandler; - -$settings = XdebugHandler::getRestartSettings(); -/** - * $settings: array (if the current process was restarted, - * or called with the settings from a previous restart), or null - * - * 'tmpIni' => the temporary ini file used in the restart (string) - * 'scannedInis' => if there were any scanned inis (bool) - * 'scanDir' => the original PHP_INI_SCAN_DIR value (false|string) - * 'phprc' => the original PHPRC value (false|string) - * 'inis' => the original inis from getAllIniFiles (array) - * 'skipped' => the skipped version from getSkippedVersion (string) - */ -``` - -#### _getSkippedVersion(): string_ -Returns the Xdebug version string that was skipped by the restart, or an empty string if there was no restart (or Xdebug is still loaded, perhaps by an extending class restarting for a reason other than removing Xdebug). - -```php -use Composer\XdebugHandler\XdebugHandler; - -$version = XdebugHandler::getSkippedVersion(); -# $version: '3.1.1' (for example), or an empty string -``` - -#### _isXdebugActive(): bool_ -Returns true if Xdebug is loaded and is running in an active mode (if it supports modes). Returns false if Xdebug is not loaded, or it is running with `xdebug.mode=off`. - -### Setter methods -These methods implement a fluent interface and must be called before the main `check()` method. - -#### _setLogger(LoggerInterface $logger): self_ -Enables the output of status messages to an external PSR3 logger. All messages are reported with either `DEBUG` or `WARNING` log levels. For example (showing the level and message): - -``` -// No restart -DEBUG Checking MYAPP_ALLOW_XDEBUG -DEBUG The Xdebug extension is loaded (3.1.1) xdebug.mode=off -DEBUG No restart (APP_ALLOW_XDEBUG=0) Allowed by xdebug.mode - -// Restart overridden -DEBUG Checking MYAPP_ALLOW_XDEBUG -DEBUG The Xdebug extension is loaded (3.1.1) xdebug.mode=coverage,debug,develop -DEBUG No restart (MYAPP_ALLOW_XDEBUG=1) - -// Failed restart -DEBUG Checking MYAPP_ALLOW_XDEBUG -DEBUG The Xdebug extension is loaded (3.1.0) -WARNING No restart (Unable to create temp ini file at: ...) -``` - -Status messages can also be output with `XDEBUG_HANDLER_DEBUG`. See [Troubleshooting](#troubleshooting). - -#### _setMainScript(string $script): self_ -Sets the location of the main script to run in the restart. This is only needed in more esoteric use-cases, or if the `argv[0]` location is inaccessible. The script name `--` is supported for standard input. - -#### _setPersistent(): self_ -Configures the restart using [persistent settings](#persistent-settings), so that Xdebug is not loaded in any sub-process. - -Use this method if your application invokes one or more PHP sub-process and the Xdebug extension is not needed. This avoids the overhead of implementing specific [sub-process](#sub-processes) strategies. - -Alternatively, this method can be used to set up a default _Xdebug-free_ environment which can be changed if a sub-process requires Xdebug, then restored afterwards: - -```php -function SubProcessWithXdebug() -{ - $phpConfig = new Composer\XdebugHandler\PhpConfig(); - - # Set the environment to the original configuration - $phpConfig->useOriginal(); - - # run the process with Xdebug loaded - ... - - # Restore Xdebug-free environment - $phpConfig->usePersistent(); -} -``` - -### Process configuration -The library offers two strategies to invoke a new PHP process without loading Xdebug, using either _standard_ or _persistent_ settings. Note that this is only important if the application calls a PHP sub-process. - -#### Standard settings -Uses command-line options to remove Xdebug from the new process only. - -* The -n option is added to the command-line. This tells PHP not to scan for additional inis. -* The temporary ini is added to the command-line with the -c option. - ->_If the new process calls a PHP sub-process, Xdebug will be loaded in that sub-process (unless it implements xdebug-handler, in which case there will be another restart)._ - -This is the default strategy used in the restart. - -#### Persistent settings -Uses environment variables to remove Xdebug from the new process and persist these settings to any sub-process. - -* `PHP_INI_SCAN_DIR` is set to an empty string. This tells PHP not to scan for additional inis. -* `PHPRC` is set to the temporary ini. - ->_If the new process calls a PHP sub-process, Xdebug will not be loaded in that sub-process._ - -This strategy can be used in the restart by calling [setPersistent()](#setpersistent-self). - -#### Sub-processes -The `PhpConfig` helper class makes it easy to invoke a PHP sub-process (with or without Xdebug loaded), regardless of whether there has been a restart. - -Each of its methods returns an array of PHP options (to add to the command-line) and sets up the environment for the required strategy. The [getRestartSettings()](#getrestartsettings-array) method is used internally. - -* `useOriginal()` - Xdebug will be loaded in the new process. -* `useStandard()` - Xdebug will **not** be loaded in the new process - see [standard settings](#standard-settings). -* `userPersistent()` - Xdebug will **not** be loaded in the new process - see [persistent settings](#persistent-settings) - -If there was no restart, an empty options array is returned and the environment is not changed. - -```php -use Composer\XdebugHandler\PhpConfig; - -$config = new PhpConfig; - -$options = $config->useOriginal(); -# $options: empty array -# environment: PHPRC and PHP_INI_SCAN_DIR set to original values - -$options = $config->useStandard(); -# $options: [-n, -c, tmpIni] -# environment: PHPRC and PHP_INI_SCAN_DIR set to original values - -$options = $config->usePersistent(); -# $options: empty array -# environment: PHPRC=tmpIni, PHP_INI_SCAN_DIR='' -``` - -### Troubleshooting -The following environment settings can be used to troubleshoot unexpected behavior: - -* `XDEBUG_HANDLER_DEBUG=1` Outputs status messages to `STDERR`, if it is defined, irrespective of any PSR3 logger. Each message is prefixed `xdebug-handler[pid]`, where pid is the process identifier. - -* `XDEBUG_HANDLER_DEBUG=2` As above, but additionally saves the temporary ini file and reports its location in a status message. - -### Extending the library -The API is defined by classes and their accessible elements that are not annotated as @internal. The main class has two protected methods that can be overridden to provide additional functionality: - -#### _requiresRestart(bool $default): bool_ -By default the process will restart if Xdebug is loaded and not running with `xdebug.mode=off`. Extending this method allows an application to decide, by returning a boolean (or equivalent) value. -It is only called if `MYAPP_ALLOW_XDEBUG` is empty, so it will not be called in the restarted process (where this variable contains internal data), or if the restart has been overridden. - -Note that the [setMainScript()](#setmainscriptstring-script-self) and [setPersistent()](#setpersistent-self) setters can be used here, if required. - -#### _restart(array $command): void_ -An application can extend this to modify the temporary ini file, its location given in the `tmpIni` property. New settings can be safely appended to the end of the data, which is `PHP_EOL` terminated. - -The `$command` parameter is an array of unescaped command-line arguments that will be used for the new process. - -Remember to finish with `parent::restart($command)`. - -#### Example -This example demonstrates two ways to extend basic functionality: - -* To avoid the overhead of spinning up a new process, the restart is skipped if a simple help command is requested. - -* The application needs write-access to phar files, so it will force a restart if `phar.readonly` is set (regardless of whether Xdebug is loaded) and change this value in the temporary ini file. - -```php -use Composer\XdebugHandler\XdebugHandler; -use MyApp\Command; - -class MyRestarter extends XdebugHandler -{ - private $required; - - protected function requiresRestart(bool $default): bool - { - if (Command::isHelp()) { - # No need to disable Xdebug for this - return false; - } - - $this->required = (bool) ini_get('phar.readonly'); - return $this->required || $default; - } - - protected function restart(array $command): void - { - if ($this->required) { - # Add required ini setting to tmpIni - $content = file_get_contents($this->tmpIni); - $content .= 'phar.readonly=0'.PHP_EOL; - file_put_contents($this->tmpIni, $content); - } - - parent::restart($command); - } -} -``` - -### Examples -The `tests\App` directory contains command-line scripts that demonstrate the internal workings in a variety of scenarios. -See [Functional Test Scripts](./tests/App/README.md). - -## License -composer/xdebug-handler is licensed under the MIT License, see the LICENSE file for details. diff --git a/v3_ci4/vendor/composer/xdebug-handler/composer.json b/v3_ci4/vendor/composer/xdebug-handler/composer.json deleted file mode 100644 index d205dc1..0000000 --- a/v3_ci4/vendor/composer/xdebug-handler/composer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "composer/xdebug-handler", - "description": "Restarts a process without Xdebug.", - "type": "library", - "license": "MIT", - "keywords": [ - "xdebug", - "performance" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/xdebug-handler/issues" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3", - "composer/pcre": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" - }, - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Composer\\XdebugHandler\\Tests\\": "tests" - } - }, - "scripts": { - "test": "@php vendor/bin/phpunit", - "phpstan": "@php vendor/bin/phpstan analyse" - } -} diff --git a/v3_ci4/vendor/composer/xdebug-handler/src/PhpConfig.php b/v3_ci4/vendor/composer/xdebug-handler/src/PhpConfig.php deleted file mode 100644 index 7edac88..0000000 --- a/v3_ci4/vendor/composer/xdebug-handler/src/PhpConfig.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Composer\XdebugHandler; - -/** - * @author John Stevenson - * - * @phpstan-type restartData array{tmpIni: string, scannedInis: bool, scanDir: false|string, phprc: false|string, inis: string[], skipped: string} - */ -class PhpConfig -{ - /** - * Use the original PHP configuration - * - * @return string[] Empty array of PHP cli options - */ - public function useOriginal(): array - { - $this->getDataAndReset(); - return []; - } - - /** - * Use standard restart settings - * - * @return string[] PHP cli options - */ - public function useStandard(): array - { - $data = $this->getDataAndReset(); - if ($data !== null) { - return ['-n', '-c', $data['tmpIni']]; - } - - return []; - } - - /** - * Use environment variables to persist settings - * - * @return string[] Empty array of PHP cli options - */ - public function usePersistent(): array - { - $data = $this->getDataAndReset(); - if ($data !== null) { - $this->updateEnv('PHPRC', $data['tmpIni']); - $this->updateEnv('PHP_INI_SCAN_DIR', ''); - } - - return []; - } - - /** - * Returns restart data if available and resets the environment - * - * @phpstan-return restartData|null - */ - private function getDataAndReset(): ?array - { - $data = XdebugHandler::getRestartSettings(); - if ($data !== null) { - $this->updateEnv('PHPRC', $data['phprc']); - $this->updateEnv('PHP_INI_SCAN_DIR', $data['scanDir']); - } - - return $data; - } - - /** - * Updates a restart settings value in the environment - * - * @param string $name - * @param string|false $value - */ - private function updateEnv(string $name, $value): void - { - Process::setEnv($name, false !== $value ? $value : null); - } -} diff --git a/v3_ci4/vendor/composer/xdebug-handler/src/Process.php b/v3_ci4/vendor/composer/xdebug-handler/src/Process.php deleted file mode 100644 index 4e9f076..0000000 --- a/v3_ci4/vendor/composer/xdebug-handler/src/Process.php +++ /dev/null @@ -1,119 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Composer\XdebugHandler; - -use Composer\Pcre\Preg; - -/** - * Process utility functions - * - * @author John Stevenson - */ -class Process -{ - /** - * Escapes a string to be used as a shell argument. - * - * From https://github.com/johnstevenson/winbox-args - * MIT Licensed (c) John Stevenson - * - * @param string $arg The argument to be escaped - * @param bool $meta Additionally escape cmd.exe meta characters - * @param bool $module The argument is the module to invoke - */ - public static function escape(string $arg, bool $meta = true, bool $module = false): string - { - if (!defined('PHP_WINDOWS_VERSION_BUILD')) { - return "'".str_replace("'", "'\\''", $arg)."'"; - } - - $quote = strpbrk($arg, " \t") !== false || $arg === ''; - - $arg = Preg::replace('/(\\\\*)"/', '$1$1\\"', $arg, -1, $dquotes); - $dquotes = (bool) $dquotes; - - if ($meta) { - $meta = $dquotes || Preg::isMatch('/%[^%]+%/', $arg); - - if (!$meta) { - $quote = $quote || strpbrk($arg, '^&|<>()') !== false; - } elseif ($module && !$dquotes && $quote) { - $meta = false; - } - } - - if ($quote) { - $arg = '"'.(Preg::replace('/(\\\\*)$/', '$1$1', $arg)).'"'; - } - - if ($meta) { - $arg = Preg::replace('/(["^&|<>()%])/', '^$1', $arg); - } - - return $arg; - } - - /** - * Escapes an array of arguments that make up a shell command - * - * @param string[] $args Argument list, with the module name first - */ - public static function escapeShellCommand(array $args): string - { - $command = ''; - $module = array_shift($args); - - if ($module !== null) { - $command = self::escape($module, true, true); - - foreach ($args as $arg) { - $command .= ' '.self::escape($arg); - } - } - - return $command; - } - - /** - * Makes putenv environment changes available in $_SERVER and $_ENV - * - * @param string $name - * @param ?string $value A null value unsets the variable - */ - public static function setEnv(string $name, ?string $value = null): bool - { - $unset = null === $value; - - if (!putenv($unset ? $name : $name.'='.$value)) { - return false; - } - - if ($unset) { - unset($_SERVER[$name]); - } else { - $_SERVER[$name] = $value; - } - - // Update $_ENV if it is being used - if (false !== stripos((string) ini_get('variables_order'), 'E')) { - if ($unset) { - unset($_ENV[$name]); - } else { - $_ENV[$name] = $value; - } - } - - return true; - } -} diff --git a/v3_ci4/vendor/composer/xdebug-handler/src/Status.php b/v3_ci4/vendor/composer/xdebug-handler/src/Status.php deleted file mode 100644 index 96c5944..0000000 --- a/v3_ci4/vendor/composer/xdebug-handler/src/Status.php +++ /dev/null @@ -1,222 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Composer\XdebugHandler; - -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; - -/** - * @author John Stevenson - * @internal - */ -class Status -{ - const ENV_RESTART = 'XDEBUG_HANDLER_RESTART'; - const CHECK = 'Check'; - const ERROR = 'Error'; - const INFO = 'Info'; - const NORESTART = 'NoRestart'; - const RESTART = 'Restart'; - const RESTARTING = 'Restarting'; - const RESTARTED = 'Restarted'; - - /** @var bool */ - private $debug; - - /** @var string */ - private $envAllowXdebug; - - /** @var string|null */ - private $loaded; - - /** @var LoggerInterface|null */ - private $logger; - - /** @var bool */ - private $modeOff; - - /** @var float */ - private $time; - - /** - * @param string $envAllowXdebug Prefixed _ALLOW_XDEBUG name - * @param bool $debug Whether debug output is required - */ - public function __construct(string $envAllowXdebug, bool $debug) - { - $start = getenv(self::ENV_RESTART); - Process::setEnv(self::ENV_RESTART); - $this->time = is_numeric($start) ? round((microtime(true) - $start) * 1000) : 0; - - $this->envAllowXdebug = $envAllowXdebug; - $this->debug = $debug && defined('STDERR'); - $this->modeOff = false; - } - - /** - * Activates status message output to a PSR3 logger - * - * @return void - */ - public function setLogger(LoggerInterface $logger): void - { - $this->logger = $logger; - } - - /** - * Calls a handler method to report a message - * - * @throws \InvalidArgumentException If $op is not known - */ - public function report(string $op, ?string $data): void - { - if ($this->logger !== null || $this->debug) { - $param = (string) $data; - - switch($op) { - case self::CHECK: - $this->reportCheck($param); - break; - case self::ERROR: - $this->reportError($param); - break; - case self::INFO: - $this->reportInfo($param); - break; - case self::NORESTART: - $this->reportNoRestart(); - break; - case self::RESTART: - $this->reportRestart(); - break; - case self::RESTARTED: - $this->reportRestarted(); - break; - case self::RESTARTING: - $this->reportRestarting($param); - break; - default: - throw new \InvalidArgumentException('Unknown op handler: '.$op); - } - } - } - - /** - * Outputs a status message - */ - private function output(string $text, ?string $level = null): void - { - if ($this->logger !== null) { - $this->logger->log($level !== null ? $level: LogLevel::DEBUG, $text); - } - - if ($this->debug) { - fwrite(STDERR, sprintf('xdebug-handler[%d] %s', getmypid(), $text.PHP_EOL)); - } - } - - /** - * Checking status message - */ - private function reportCheck(string $loaded): void - { - list($version, $mode) = explode('|', $loaded); - - if ($version !== '') { - $this->loaded = '('.$version.')'.($mode !== '' ? ' xdebug.mode='.$mode : ''); - } - $this->modeOff = $mode === 'off'; - $this->output('Checking '.$this->envAllowXdebug); - } - - /** - * Error status message - */ - private function reportError(string $error): void - { - $this->output(sprintf('No restart (%s)', $error), LogLevel::WARNING); - } - - /** - * Info status message - */ - private function reportInfo(string $info): void - { - $this->output($info); - } - - /** - * No restart status message - */ - private function reportNoRestart(): void - { - $this->output($this->getLoadedMessage()); - - if ($this->loaded !== null) { - $text = sprintf('No restart (%s)', $this->getEnvAllow()); - if (!((bool) getenv($this->envAllowXdebug))) { - $text .= ' Allowed by '.($this->modeOff ? 'xdebug.mode' : 'application'); - } - $this->output($text); - } - } - - /** - * Restart status message - */ - private function reportRestart(): void - { - $this->output($this->getLoadedMessage()); - Process::setEnv(self::ENV_RESTART, (string) microtime(true)); - } - - /** - * Restarted status message - */ - private function reportRestarted(): void - { - $loaded = $this->getLoadedMessage(); - $text = sprintf('Restarted (%d ms). %s', $this->time, $loaded); - $level = $this->loaded !== null ? LogLevel::WARNING : null; - $this->output($text, $level); - } - - /** - * Restarting status message - */ - private function reportRestarting(string $command): void - { - $text = sprintf('Process restarting (%s)', $this->getEnvAllow()); - $this->output($text); - $text = 'Running: '.$command; - $this->output($text); - } - - /** - * Returns the _ALLOW_XDEBUG environment variable as name=value - */ - private function getEnvAllow(): string - { - return $this->envAllowXdebug.'='.getenv($this->envAllowXdebug); - } - - /** - * Returns the Xdebug status and version - */ - private function getLoadedMessage(): string - { - $loaded = $this->loaded !== null ? sprintf('loaded %s', $this->loaded) : 'not loaded'; - return 'The Xdebug extension is '.$loaded; - } -} diff --git a/v3_ci4/vendor/composer/xdebug-handler/src/XdebugHandler.php b/v3_ci4/vendor/composer/xdebug-handler/src/XdebugHandler.php deleted file mode 100644 index a665939..0000000 --- a/v3_ci4/vendor/composer/xdebug-handler/src/XdebugHandler.php +++ /dev/null @@ -1,722 +0,0 @@ - - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Composer\XdebugHandler; - -use Composer\Pcre\Preg; -use Psr\Log\LoggerInterface; - -/** - * @author John Stevenson - * - * @phpstan-import-type restartData from PhpConfig - */ -class XdebugHandler -{ - const SUFFIX_ALLOW = '_ALLOW_XDEBUG'; - const SUFFIX_INIS = '_ORIGINAL_INIS'; - const RESTART_ID = 'internal'; - const RESTART_SETTINGS = 'XDEBUG_HANDLER_SETTINGS'; - const DEBUG = 'XDEBUG_HANDLER_DEBUG'; - - /** @var string|null */ - protected $tmpIni; - - /** @var bool */ - private static $inRestart; - - /** @var string */ - private static $name; - - /** @var string|null */ - private static $skipped; - - /** @var bool */ - private static $xdebugActive; - - /** @var string|null */ - private static $xdebugMode; - - /** @var string|null */ - private static $xdebugVersion; - - /** @var bool */ - private $cli; - - /** @var string|null */ - private $debug; - - /** @var string */ - private $envAllowXdebug; - - /** @var string */ - private $envOriginalInis; - - /** @var bool */ - private $persistent; - - /** @var string|null */ - private $script; - - /** @var Status */ - private $statusWriter; - - /** - * Constructor - * - * The $envPrefix is used to create distinct environment variables. It is - * uppercased and prepended to the default base values. For example 'myapp' - * would result in MYAPP_ALLOW_XDEBUG and MYAPP_ORIGINAL_INIS. - * - * @param string $envPrefix Value used in environment variables - * @throws \RuntimeException If the parameter is invalid - */ - public function __construct(string $envPrefix) - { - if ($envPrefix === '') { - throw new \RuntimeException('Invalid constructor parameter'); - } - - self::$name = strtoupper($envPrefix); - $this->envAllowXdebug = self::$name.self::SUFFIX_ALLOW; - $this->envOriginalInis = self::$name.self::SUFFIX_INIS; - - self::setXdebugDetails(); - self::$inRestart = false; - - if ($this->cli = PHP_SAPI === 'cli') { - $this->debug = (string) getenv(self::DEBUG); - } - - $this->statusWriter = new Status($this->envAllowXdebug, (bool) $this->debug); - } - - /** - * Activates status message output to a PSR3 logger - */ - public function setLogger(LoggerInterface $logger): self - { - $this->statusWriter->setLogger($logger); - return $this; - } - - /** - * Sets the main script location if it cannot be called from argv - */ - public function setMainScript(string $script): self - { - $this->script = $script; - return $this; - } - - /** - * Persist the settings to keep Xdebug out of sub-processes - */ - public function setPersistent(): self - { - $this->persistent = true; - return $this; - } - - /** - * Checks if Xdebug is loaded and the process needs to be restarted - * - * This behaviour can be disabled by setting the MYAPP_ALLOW_XDEBUG - * environment variable to 1. This variable is used internally so that - * the restarted process is created only once. - */ - public function check(): void - { - $this->notify(Status::CHECK, self::$xdebugVersion.'|'.self::$xdebugMode); - $envArgs = explode('|', (string) getenv($this->envAllowXdebug)); - - if (!((bool) $envArgs[0]) && $this->requiresRestart(self::$xdebugActive)) { - // Restart required - $this->notify(Status::RESTART); - $command = $this->prepareRestart(); - - if ($command !== null) { - $this->restart($command); - } - return; - } - - if (self::RESTART_ID === $envArgs[0] && count($envArgs) === 5) { - // Restarted, so unset environment variable and use saved values - $this->notify(Status::RESTARTED); - - Process::setEnv($this->envAllowXdebug); - self::$inRestart = true; - - if (self::$xdebugVersion === null) { - // Skipped version is only set if Xdebug is not loaded - self::$skipped = $envArgs[1]; - } - - $this->tryEnableSignals(); - - // Put restart settings in the environment - $this->setEnvRestartSettings($envArgs); - return; - } - - $this->notify(Status::NORESTART); - $settings = self::getRestartSettings(); - - if ($settings !== null) { - // Called with existing settings, so sync our settings - $this->syncSettings($settings); - } - } - - /** - * Returns an array of php.ini locations with at least one entry - * - * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files. - * The loaded ini location is the first entry and may be an empty string. - * - * @return non-empty-list - */ - public static function getAllIniFiles(): array - { - if (self::$name !== null) { - $env = getenv(self::$name.self::SUFFIX_INIS); - - if (false !== $env) { - return explode(PATH_SEPARATOR, $env); - } - } - - $paths = [(string) php_ini_loaded_file()]; - $scanned = php_ini_scanned_files(); - - if ($scanned !== false) { - $paths = array_merge($paths, array_map('trim', explode(',', $scanned))); - } - - return $paths; - } - - /** - * Returns an array of restart settings or null - * - * Settings will be available if the current process was restarted, or - * called with the settings from an existing restart. - * - * @phpstan-return restartData|null - */ - public static function getRestartSettings(): ?array - { - $envArgs = explode('|', (string) getenv(self::RESTART_SETTINGS)); - - if (count($envArgs) !== 6 - || (!self::$inRestart && php_ini_loaded_file() !== $envArgs[0])) { - return null; - } - - return [ - 'tmpIni' => $envArgs[0], - 'scannedInis' => (bool) $envArgs[1], - 'scanDir' => '*' === $envArgs[2] ? false : $envArgs[2], - 'phprc' => '*' === $envArgs[3] ? false : $envArgs[3], - 'inis' => explode(PATH_SEPARATOR, $envArgs[4]), - 'skipped' => $envArgs[5], - ]; - } - - /** - * Returns the Xdebug version that triggered a successful restart - */ - public static function getSkippedVersion(): string - { - return (string) self::$skipped; - } - - /** - * Returns whether Xdebug is loaded and active - * - * true: if Xdebug is loaded and is running in an active mode. - * false: if Xdebug is not loaded, or it is running with xdebug.mode=off. - */ - public static function isXdebugActive(): bool - { - self::setXdebugDetails(); - return self::$xdebugActive; - } - - /** - * Allows an extending class to decide if there should be a restart - * - * The default is to restart if Xdebug is loaded and its mode is not "off". - */ - protected function requiresRestart(bool $default): bool - { - return $default; - } - - /** - * Allows an extending class to access the tmpIni - * - * @param non-empty-list $command - */ - protected function restart(array $command): void - { - $this->doRestart($command); - } - - /** - * Executes the restarted command then deletes the tmp ini - * - * @param non-empty-list $command - * @phpstan-return never - */ - private function doRestart(array $command): void - { - if (PHP_VERSION_ID >= 70400) { - $cmd = $command; - $displayCmd = sprintf('[%s]', implode(', ', $cmd)); - } else { - $cmd = Process::escapeShellCommand($command); - if (defined('PHP_WINDOWS_VERSION_BUILD')) { - // Outer quotes required on cmd string below PHP 8 - $cmd = '"'.$cmd.'"'; - } - $displayCmd = $cmd; - } - - $this->tryEnableSignals(); - $this->notify(Status::RESTARTING, $displayCmd); - - $process = proc_open($cmd, [], $pipes); - if (is_resource($process)) { - $exitCode = proc_close($process); - } - - if (!isset($exitCode)) { - // Unlikely that php or the default shell cannot be invoked - $this->notify(Status::ERROR, 'Unable to restart process'); - $exitCode = -1; - } else { - $this->notify(Status::INFO, 'Restarted process exited '.$exitCode); - } - - if ($this->debug === '2') { - $this->notify(Status::INFO, 'Temp ini saved: '.$this->tmpIni); - } else { - @unlink((string) $this->tmpIni); - } - - exit($exitCode); - } - - /** - * Returns the command line array if everything was written for the restart - * - * If any of the following fails (however unlikely) we must return false to - * stop potential recursion: - * - tmp ini file creation - * - environment variable creation - * - * @return non-empty-list|null - */ - private function prepareRestart(): ?array - { - if (!$this->cli) { - $this->notify(Status::ERROR, 'Unsupported SAPI: '.PHP_SAPI); - return null; - } - - if (($argv = $this->checkServerArgv()) === null) { - $this->notify(Status::ERROR, '$_SERVER[argv] is not as expected'); - return null; - } - - if (!$this->checkConfiguration($info)) { - $this->notify(Status::ERROR, $info); - return null; - } - - $mainScript = (string) $this->script; - if (!$this->checkMainScript($mainScript, $argv)) { - $this->notify(Status::ERROR, 'Unable to access main script: '.$mainScript); - return null; - } - - $tmpDir = sys_get_temp_dir(); - $iniError = 'Unable to create temp ini file at: '.$tmpDir; - - if (($tmpfile = @tempnam($tmpDir, '')) === false) { - $this->notify(Status::ERROR, $iniError); - return null; - } - - $error = null; - $iniFiles = self::getAllIniFiles(); - $scannedInis = count($iniFiles) > 1; - - if (!$this->writeTmpIni($tmpfile, $iniFiles, $error)) { - $this->notify(Status::ERROR, $error ?? $iniError); - @unlink($tmpfile); - return null; - } - - if (!$this->setEnvironment($scannedInis, $iniFiles, $tmpfile)) { - $this->notify(Status::ERROR, 'Unable to set environment variables'); - @unlink($tmpfile); - return null; - } - - $this->tmpIni = $tmpfile; - - return $this->getCommand($argv, $tmpfile, $mainScript); - } - - /** - * Returns true if the tmp ini file was written - * - * @param non-empty-list $iniFiles All ini files used in the current process - */ - private function writeTmpIni(string $tmpFile, array $iniFiles, ?string &$error): bool - { - // $iniFiles has at least one item and it may be empty - if ($iniFiles[0] === '') { - array_shift($iniFiles); - } - - $content = ''; - $sectionRegex = '/^\s*\[(?:PATH|HOST)\s*=/mi'; - $xdebugRegex = '/^\s*(zend_extension\s*=.*xdebug.*)$/mi'; - - foreach ($iniFiles as $file) { - // Check for inaccessible ini files - if (($data = @file_get_contents($file)) === false) { - $error = 'Unable to read ini: '.$file; - return false; - } - // Check and remove directives after HOST and PATH sections - if (Preg::isMatchWithOffsets($sectionRegex, $data, $matches)) { - $data = substr($data, 0, $matches[0][1]); - } - $content .= Preg::replace($xdebugRegex, ';$1', $data).PHP_EOL; - } - - // Merge loaded settings into our ini content, if it is valid - $config = parse_ini_string($content); - $loaded = ini_get_all(null, false); - - if (false === $config || false === $loaded) { - $error = 'Unable to parse ini data'; - return false; - } - - $content .= $this->mergeLoadedConfig($loaded, $config); - - // Work-around for https://bugs.php.net/bug.php?id=75932 - $content .= 'opcache.enable_cli=0'.PHP_EOL; - - return (bool) @file_put_contents($tmpFile, $content); - } - - /** - * Returns the command line arguments for the restart - * - * @param non-empty-list $argv - * @return non-empty-list - */ - private function getCommand(array $argv, string $tmpIni, string $mainScript): array - { - $php = [PHP_BINARY]; - $args = array_slice($argv, 1); - - if (!$this->persistent) { - // Use command-line options - array_push($php, '-n', '-c', $tmpIni); - } - - return array_merge($php, [$mainScript], $args); - } - - /** - * Returns true if the restart environment variables were set - * - * No need to update $_SERVER since this is set in the restarted process. - * - * @param non-empty-list $iniFiles All ini files used in the current process - */ - private function setEnvironment(bool $scannedInis, array $iniFiles, string $tmpIni): bool - { - $scanDir = getenv('PHP_INI_SCAN_DIR'); - $phprc = getenv('PHPRC'); - - // Make original inis available to restarted process - if (!putenv($this->envOriginalInis.'='.implode(PATH_SEPARATOR, $iniFiles))) { - return false; - } - - if ($this->persistent) { - // Use the environment to persist the settings - if (!putenv('PHP_INI_SCAN_DIR=') || !putenv('PHPRC='.$tmpIni)) { - return false; - } - } - - // Flag restarted process and save values for it to use - $envArgs = [ - self::RESTART_ID, - self::$xdebugVersion, - (int) $scannedInis, - false === $scanDir ? '*' : $scanDir, - false === $phprc ? '*' : $phprc, - ]; - - return putenv($this->envAllowXdebug.'='.implode('|', $envArgs)); - } - - /** - * Logs status messages - */ - private function notify(string $op, ?string $data = null): void - { - $this->statusWriter->report($op, $data); - } - - /** - * Returns default, changed and command-line ini settings - * - * @param mixed[] $loadedConfig All current ini settings - * @param mixed[] $iniConfig Settings from user ini files - * - */ - private function mergeLoadedConfig(array $loadedConfig, array $iniConfig): string - { - $content = ''; - - foreach ($loadedConfig as $name => $value) { - // Value will either be null, string or array (HHVM only) - if (!is_string($value) - || strpos($name, 'xdebug') === 0 - || $name === 'apc.mmap_file_mask') { - continue; - } - - if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) { - // Double-quote escape each value - $content .= $name.'="'.addcslashes($value, '\\"').'"'.PHP_EOL; - } - } - - return $content; - } - - /** - * Returns true if the script name can be used - * - * @param non-empty-list $argv - */ - private function checkMainScript(string &$mainScript, array $argv): bool - { - if ($mainScript !== '') { - // Allow an application to set -- for standard input - return file_exists($mainScript) || '--' === $mainScript; - } - - if (file_exists($mainScript = $argv[0])) { - return true; - } - - // Use a backtrace to resolve Phar and chdir issues. - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - $main = end($trace); - - if ($main !== false && isset($main['file'])) { - return file_exists($mainScript = $main['file']); - } - - return false; - } - - /** - * Adds restart settings to the environment - * - * @param non-empty-list $envArgs - */ - private function setEnvRestartSettings(array $envArgs): void - { - $settings = [ - php_ini_loaded_file(), - $envArgs[2], - $envArgs[3], - $envArgs[4], - getenv($this->envOriginalInis), - self::$skipped, - ]; - - Process::setEnv(self::RESTART_SETTINGS, implode('|', $settings)); - } - - /** - * Syncs settings and the environment if called with existing settings - * - * @phpstan-param restartData $settings - */ - private function syncSettings(array $settings): void - { - if (false === getenv($this->envOriginalInis)) { - // Called by another app, so make original inis available - Process::setEnv($this->envOriginalInis, implode(PATH_SEPARATOR, $settings['inis'])); - } - - self::$skipped = $settings['skipped']; - $this->notify(Status::INFO, 'Process called with existing restart settings'); - } - - /** - * Returns true if there are no known configuration issues - */ - private function checkConfiguration(?string &$info): bool - { - if (!function_exists('proc_open')) { - $info = 'proc_open function is disabled'; - return false; - } - - if (!file_exists(PHP_BINARY)) { - $info = 'PHP_BINARY is not available'; - return false; - } - - if (extension_loaded('uopz') && !((bool) ini_get('uopz.disable'))) { - // uopz works at opcode level and disables exit calls - if (function_exists('uopz_allow_exit')) { - @uopz_allow_exit(true); - } else { - $info = 'uopz extension is not compatible'; - return false; - } - } - - // Check UNC paths when using cmd.exe - if (defined('PHP_WINDOWS_VERSION_BUILD') && PHP_VERSION_ID < 70400) { - $workingDir = getcwd(); - - if ($workingDir === false) { - $info = 'unable to determine working directory'; - return false; - } - - if (0 === strpos($workingDir, '\\\\')) { - $info = 'cmd.exe does not support UNC paths: '.$workingDir; - return false; - } - } - - return true; - } - - /** - * Enables async signals and control interrupts in the restarted process - * - * Available on Unix PHP 7.1+ with the pcntl extension and Windows PHP 7.4+. - */ - private function tryEnableSignals(): void - { - if (function_exists('pcntl_async_signals') && function_exists('pcntl_signal')) { - pcntl_async_signals(true); - $message = 'Async signals enabled'; - - if (!self::$inRestart) { - // Restarting, so ignore SIGINT in parent - pcntl_signal(SIGINT, SIG_IGN); - } elseif (is_int(pcntl_signal_get_handler(SIGINT))) { - // Restarted, no handler set so force default action - pcntl_signal(SIGINT, SIG_DFL); - } - } - - if (!self::$inRestart && function_exists('sapi_windows_set_ctrl_handler')) { - // Restarting, so set a handler to ignore CTRL events in the parent. - // This ensures that CTRL+C events will be available in the child - // process without having to enable them there, which is unreliable. - sapi_windows_set_ctrl_handler(function ($evt) {}); - } - } - - /** - * Returns $_SERVER['argv'] if it is as expected - * - * @return non-empty-list|null - */ - private function checkServerArgv(): ?array - { - $result = []; - - if (isset($_SERVER['argv']) && is_array($_SERVER['argv'])) { - foreach ($_SERVER['argv'] as $value) { - if (!is_string($value)) { - return null; - } - - $result[] = $value; - } - } - - return count($result) > 0 ? $result : null; - } - - /** - * Sets static properties $xdebugActive, $xdebugVersion and $xdebugMode - */ - private static function setXdebugDetails(): void - { - if (self::$xdebugActive !== null) { - return; - } - - self::$xdebugActive = false; - if (!extension_loaded('xdebug')) { - return; - } - - $version = phpversion('xdebug'); - self::$xdebugVersion = $version !== false ? $version : 'unknown'; - - if (version_compare(self::$xdebugVersion, '3.1', '>=')) { - $modes = xdebug_info('mode'); - self::$xdebugMode = count($modes) === 0 ? 'off' : implode(',', $modes); - self::$xdebugActive = self::$xdebugMode !== 'off'; - return; - } - - // See if xdebug.mode is supported in this version - $iniMode = ini_get('xdebug.mode'); - if ($iniMode === false) { - self::$xdebugActive = true; - return; - } - - // Environment value wins but cannot be empty - $envMode = (string) getenv('XDEBUG_MODE'); - if ($envMode !== '') { - self::$xdebugMode = $envMode; - } else { - self::$xdebugMode = $iniMode !== '' ? $iniMode : 'off'; - } - - // An empty comma-separated list is treated as mode 'off' - if (Preg::isMatch('/^,+$/', str_replace(' ', '', self::$xdebugMode))) { - self::$xdebugMode = 'off'; - } - - self::$xdebugActive = self::$xdebugMode !== 'off'; - } -} diff --git a/v3_ci4/vendor/ergebnis/agent-detector/CHANGELOG.md b/v3_ci4/vendor/ergebnis/agent-detector/CHANGELOG.md deleted file mode 100644 index 26d6bcb..0000000 --- a/v3_ci4/vendor/ergebnis/agent-detector/CHANGELOG.md +++ /dev/null @@ -1,60 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## Unreleased - -For a full diff see [`1.2.0...main`][1.2.0...main]. - -## [`1.2.0`][1.2.0] - -For a full diff see [`1.1.1...1.2.0`][1.1.1...1.2.0]. - -### Added - -- Added support for detecting the presence of an agent when the `COPILOT_CLI` or `PI_CODING_AGENT` environment variables are set ([#10]), by [@raphaelstolt] - -## [`1.1.1`][1.1.1] - -For a full diff see [`1.1.0...1.1.1`][1.1.0...1.1.1]. - -### Fixed - -- Allowed installation on PHP 8.6 ([#4]), by [@localheinz] - -## [`1.1.0`][1.1.0] - -For a full diff see [`1.0.1...1.1.0`][1.0.1...1.1.0]. - -### Added - -- Added support for detecting the presence of an agent when the `CURSOR_EXTENSION_HOST_ROLE` environment variable is set ([#2]), by [@localheinz] - -## [`1.0.1`][1.0.1] - -For a full diff see [`2655ea1...1.0.1`][2655ea1...1.0.1]. - -### Added - -- Added `Detector` ([#1]), by [@localheinz] - -[1.0.1]: https://github.com/ergebnis/agent-detector/releases/tag/1.0.1 -[1.1.0]: https://github.com/ergebnis/agent-detector/releases/tag/1.1.0 -[1.1.1]: https://github.com/ergebnis/agent-detector/releases/tag/1.1.1 -[1.2.0]: https://github.com/ergebnis/agent-detector/releases/tag/1.2.0 - -[2655ea1...1.0.1]: https://github.com/ergebnis/agent-detector/compare/2655ea1...1.0.1 -[1.0.1...1.1.0]: https://github.com/ergebnis/agent-detector/compare/1.0.1...1.1.0 -[1.1.0...1.1.1]: https://github.com/ergebnis/agent-detector/compare/1.1.0...1.1.1 -[1.1.1...1.2.0]: https://github.com/ergebnis/agent-detector/compare/1.1.1...1.2.0 -[1.2.0...main]: https://github.com/ergebnis/agent-detector/compare/1.2.0...main - -[#1]: https://github.com/ergebnis/agent-detector/pull/1 -[#2]: https://github.com/ergebnis/agent-detector/pull/2 -[#4]: https://github.com/ergebnis/agent-detector/pull/4 -[#10]: https://github.com/ergebnis/agent-detector/pull/10 - -[@localheinz]: https://github.com/localheinz -[@raphaelstolt]: https://github.com/raphaelstolt diff --git a/v3_ci4/vendor/ergebnis/agent-detector/LICENSE.md b/v3_ci4/vendor/ergebnis/agent-detector/LICENSE.md deleted file mode 100644 index bb32be1..0000000 --- a/v3_ci4/vendor/ergebnis/agent-detector/LICENSE.md +++ /dev/null @@ -1,16 +0,0 @@ -# The MIT License (MIT) - -Copyright (c) 2026 Andreas Möller - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the _Software_), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED **AS IS**, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/v3_ci4/vendor/ergebnis/agent-detector/README.md b/v3_ci4/vendor/ergebnis/agent-detector/README.md deleted file mode 100644 index c73d391..0000000 --- a/v3_ci4/vendor/ergebnis/agent-detector/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# agent-detector - -[![Integrate](https://github.com/ergebnis/agent-detector/actions/workflows/integrate.yaml/badge.svg?branch=main)](https://github.com/ergebnis/agent-detector/actions/workflows/integrate.yaml) -[![Merge](https://github.com/ergebnis/agent-detector/actions/workflows/merge.yaml/badge.svg)](https://github.com/ergebnis/agent-detector/actions/workflows/merge.yaml) -[![Release](https://github.com/ergebnis/agent-detector/actions/workflows/release.yaml/badge.svg)](https://github.com/ergebnis/agent-detector/actions/workflows/release.yaml) -[![Renew](https://github.com/ergebnis/agent-detector/actions/workflows/renew.yaml/badge.svg)](https://github.com/ergebnis/agent-detector/actions/workflows/renew.yaml) - -[![Code Coverage](https://codecov.io/gh/ergebnis/agent-detector/branch/main/graph/badge.svg)](https://codecov.io/gh/ergebnis/agent-detector) - -[![Latest Stable Version](https://poser.pugx.org/ergebnis/agent-detector/v/stable)](https://packagist.org/packages/ergebnis/agent-detector) -[![Total Downloads](https://poser.pugx.org/ergebnis/agent-detector/downloads)](https://packagist.org/packages/ergebnis/agent-detector) -[![Monthly Downloads](http://poser.pugx.org/ergebnis/agent-detector/d/monthly)](https://packagist.org/packages/ergebnis/agent-detector) - -This project provides a [`composer`](https://getcomposer.org) package with a detector for detecting the presence of an agent. - -## Installation - -Run - -```sh -composer require ergebnis/agent-detector -``` - -## Usage - -### Detecting the presence of an agent - -```php -isAgentPresent(\getenv()); -``` - -### Supported agents - -This package detects the presence of the following agents via environment variables: - -| Agent | Environment Variable | -|---|---| -| [Amp](https://amp.dev) | `AMP_CURRENT_THREAD_ID` | -| [Antigravity](https://antigravity.dev) | `ANTIGRAVITY_AGENT` | -| [Augment](https://augmentcode.com) | `AUGMENT_AGENT` | -| [Claude Code](https://github.com/anthropics/claude-code) | `CLAUDECODE`, `CLAUDE_CODE`, `CLAUDE_CODE_IS_COWORK` | -| [Codex](https://github.com/openai/codex) | `CODEX_CI`, `CODEX_SANDBOX`, `CODEX_THREAD_ID` | -| [Cursor](https://cursor.com) | `CURSOR_AGENT`, `CURSOR_EXTENSION_HOST_ROLE`, `CURSOR_TRACE_ID` | -| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `GEMINI_CLI` | -| [GitHub Copilot](https://github.com/features/copilot) | `COPILOT_ALLOW_ALL`, `COPILOT_CLI`, `COPILOT_GITHUB_TOKEN`, `COPILOT_MODEL | -| [OpenCode](https://github.com/sst/opencode) | `OPENCODE`, `OPENCODE_CLIENT` | -| [Pi](https://pi.dev) | `PI_CODING_AGENT` | -| [Replit](https://replit.com) | `REPL_ID` | - -### Indicating the presence of an agent - -In addition, the generic `AI_AGENT` environment variable can be set to indicate the presence of an agent. - -## Changelog - -The maintainers of this project record notable changes to this project in a [changelog](CHANGELOG.md). - -## Contributing - -The maintainers of this project suggest following the [contribution guide](.github/CONTRIBUTING.md). - -## Code of Conduct - -The maintainers of this project ask contributors to follow the [code of conduct](https://github.com/ergebnis/.github/blob/main/CODE_OF_CONDUCT.md). - -## General Support Policy - -The maintainers of this project provide limited support. - -## PHP Version Support Policy - -This project currently supports the following PHP versions: - -- [PHP 7.4](https://www.php.net/releases/#7.4.0) (has reached its end of life on November 28, 2022) -- [PHP 8.0](https://www.php.net/releases/#8.0.0) (has reached its end of life on November 26, 2023) -- [PHP 8.1](https://www.php.net/releases/#8.1.0) (has reached its end of life on December 31, 2025) -- [PHP 8.2](https://www.php.net/releases/#8.2.0) -- [PHP 8.3](https://www.php.net/releases/#8.3.0) -- [PHP 8.4](https://www.php.net/releases/#8.4.0) -- [PHP 8.5](https://www.php.net/releases/#8.5.0) - -The maintainers of this project add support for a PHP version following its initial release and _may_ drop support for a PHP version when it has reached its [end of life](https://www.php.net/supported-versions.php). - -## Security Policy - -This project has a [security policy](.github/SECURITY.md). - -## License - -This project uses the [MIT license](LICENSE.md). - - -## Credits - -The agent detector is inspired by [`shipfastlabs/agent-detector`](https://github.com/shipfastlabs/agent-detector), originally licensed under MIT by [Pushpak Chhajed](https://github.com/pushpak1300). - -## Social - -Follow [@localheinz](https://twitter.com/intent/follow?screen_name=localheinz) and [@ergebnis](https://twitter.com/intent/follow?screen_name=ergebnis) on Twitter. diff --git a/v3_ci4/vendor/ergebnis/agent-detector/composer.json b/v3_ci4/vendor/ergebnis/agent-detector/composer.json deleted file mode 100644 index fa88ce2..0000000 --- a/v3_ci4/vendor/ergebnis/agent-detector/composer.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "ergebnis/agent-detector", - "description": "Provides a detector for detecting the presence of an agent.", - "license": "MIT", - "type": "library", - "authors": [ - { - "name": "Andreas Möller", - "email": "am@localheinz.com", - "homepage": "https://localheinz.com" - } - ], - "homepage": "https://github.com/ergebnis/agent-detector", - "support": { - "issues": "https://github.com/ergebnis/agent-detector/issues", - "source": "https://github.com/ergebnis/agent-detector", - "security": "https://github.com/ergebnis/agent-detector/blob/main/.github/SECURITY.md" - }, - "require": { - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0 || ~8.6.0" - }, - "require-dev": { - "ergebnis/composer-normalize": "^2.51.0", - "ergebnis/license": "^2.7.0", - "ergebnis/php-cs-fixer-config": "^6.60.2", - "ergebnis/phpstan-rules": "^2.13.1", - "ergebnis/phpunit-slow-test-detector": "^2.24.0", - "ergebnis/rector-rules": "^1.18.1", - "fakerphp/faker": "^1.24.1", - "infection/infection": "^0.26.6", - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.1.54", - "phpstan/phpstan-deprecation-rules": "^2.0.4", - "phpstan/phpstan-phpunit": "^2.0.16", - "phpstan/phpstan-strict-rules": "^2.0.10", - "phpunit/phpunit": "^9.6.34", - "rector/rector": "^2.4.2" - }, - "autoload": { - "psr-4": { - "Ergebnis\\AgentDetector\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Ergebnis\\AgentDetector\\Test\\": "test/" - } - }, - "config": { - "allow-plugins": { - "composer/package-versions-deprecated": true, - "ergebnis/composer-normalize": true, - "infection/extension-installer": true, - "phpstan/extension-installer": true - }, - "audit": { - "abandoned": "report" - }, - "platform": { - "php": "7.4.33" - }, - "preferred-install": "dist", - "sort-packages": true - }, - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - }, - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" - } - } -} diff --git a/v3_ci4/vendor/ergebnis/agent-detector/src/Detector.php b/v3_ci4/vendor/ergebnis/agent-detector/src/Detector.php deleted file mode 100644 index 54f3bdb..0000000 --- a/v3_ci4/vendor/ergebnis/agent-detector/src/Detector.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - private const AGENT_ENVIRONMENT_VARIABLES = [ - 'AI_AGENT' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'AMP_CURRENT_THREAD_ID' => 'https://github.com/shipfastlabs/agent-detector/blob/main/src/AgentDetector.php', - 'ANTIGRAVITY_AGENT' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'AUGMENT_AGENT' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'CLAUDECODE' => 'https://github.com/anthropics/claude-code/blob/main/src/utils/env.ts', - 'CLAUDE_CODE' => 'https://github.com/anthropics/claude-code/blob/main/src/utils/env.ts', - 'CLAUDE_CODE_IS_COWORK' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'CODEX_CI' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'CODEX_SANDBOX' => 'https://github.com/openai/codex/blob/main/codex-rs/core/src/seatbelt.rs', - 'CODEX_THREAD_ID' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'COPILOT_ALLOW_ALL' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'COPILOT_CLI' => 'https://github.com/github/copilot-cli', - 'COPILOT_GITHUB_TOKEN' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'COPILOT_MODEL' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'CURSOR_AGENT' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'CURSOR_EXTENSION_HOST_ROLE' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'CURSOR_TRACE_ID' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - 'GEMINI_CLI' => 'https://github.com/google-gemini/gemini-cli/blob/main/packages/core/src/tools/shell/shell-tool.ts', - 'OPENCODE' => 'https://github.com/shipfastlabs/agent-detector/blob/main/src/AgentDetector.php', - 'OPENCODE_CLIENT' => 'https://github.com/sst/opencode/blob/dev/packages/opencode/src/flag/flag.ts', - 'PI_CODING_AGENT' => 'https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/src/index.ts', - 'REPL_ID' => 'https://github.com/vercel/vercel/blob/main/packages/detect-agent/src/index.ts', - ]; - - /** - * @param array $environmentVariables - */ - public function isAgentPresent(array $environmentVariables): bool - { - foreach (self::AGENT_ENVIRONMENT_VARIABLES as $variable => $url) { - if (\array_key_exists($variable, $environmentVariables)) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/evenement/evenement/.gitattributes b/v3_ci4/vendor/evenement/evenement/.gitattributes deleted file mode 100644 index 8e493b8..0000000 --- a/v3_ci4/vendor/evenement/evenement/.gitattributes +++ /dev/null @@ -1,7 +0,0 @@ -/.github export-ignore -/doc export-ignore -/examples export-ignore -/tests export-ignore -/.gitignore export-ignore -/CHANGELOG.md export-ignore -/phpunit.xml.dist export-ignore diff --git a/v3_ci4/vendor/evenement/evenement/LICENSE b/v3_ci4/vendor/evenement/evenement/LICENSE deleted file mode 100644 index d9a37d0..0000000 --- a/v3_ci4/vendor/evenement/evenement/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Igor Wiedler - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/evenement/evenement/README.md b/v3_ci4/vendor/evenement/evenement/README.md deleted file mode 100644 index 455dd22..0000000 --- a/v3_ci4/vendor/evenement/evenement/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Événement - -Événement is a very simple event dispatching library for PHP. - -It has the same design goals as [Silex](https://silex.symfony.com/) and -[Pimple](https://github.com/silexphp/Pimple), to empower the user while staying concise -and simple. - -It is very strongly inspired by the [EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) API found in -[node.js](http://nodejs.org). - -![Continuous Integration](https://github.com/igorw/evenement/workflows/CI/badge.svg) -[![Latest Stable Version](https://poser.pugx.org/evenement/evenement/v/stable.png)](https://packagist.org/packages/evenement/evenement) -[![Total Downloads](https://poser.pugx.org/evenement/evenement/downloads.png)](https://packagist.org/packages/evenement/evenement/stats) -[![License](https://poser.pugx.org/evenement/evenement/license.png)](https://packagist.org/packages/evenement/evenement) - -## Fetch - -The recommended way to install Événement is [through composer](http://getcomposer.org). By running the following command: - - $ composer require evenement/evenement - -## Usage - -### Creating an Emitter - -```php -on('user.created', function (User $user) use ($logger) { - $logger->log(sprintf("User '%s' was created.", $user->getLogin())); -}); -``` - -### Removing Listeners - -```php -removeListener('user.created', function (User $user) use ($logger) { - $logger->log(sprintf("User '%s' was created.", $user->getLogin())); -}); -``` - -### Emitting Events - -```php -emit('user.created', [$user]); -``` - -Tests ------ - - $ ./vendor/bin/phpunit - -License -------- -MIT, see LICENSE. diff --git a/v3_ci4/vendor/evenement/evenement/composer.json b/v3_ci4/vendor/evenement/evenement/composer.json deleted file mode 100644 index 5444d93..0000000 --- a/v3_ci4/vendor/evenement/evenement/composer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "evenement/evenement", - "description": "Événement is a very simple event dispatching library for PHP", - "keywords": ["event-dispatcher", "event-emitter"], - "license": "MIT", - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^9 || ^6" - }, - "autoload": { - "psr-4": { - "Evenement\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Evenement\\Tests\\": "tests/" - }, - "files": ["tests/functions.php"] - } -} diff --git a/v3_ci4/vendor/evenement/evenement/src/EventEmitter.php b/v3_ci4/vendor/evenement/evenement/src/EventEmitter.php deleted file mode 100644 index db189b9..0000000 --- a/v3_ci4/vendor/evenement/evenement/src/EventEmitter.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Evenement; - -class EventEmitter implements EventEmitterInterface -{ - use EventEmitterTrait; -} diff --git a/v3_ci4/vendor/evenement/evenement/src/EventEmitterInterface.php b/v3_ci4/vendor/evenement/evenement/src/EventEmitterInterface.php deleted file mode 100644 index 310631a..0000000 --- a/v3_ci4/vendor/evenement/evenement/src/EventEmitterInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Evenement; - -interface EventEmitterInterface -{ - public function on($event, callable $listener); - public function once($event, callable $listener); - public function removeListener($event, callable $listener); - public function removeAllListeners($event = null); - public function listeners($event = null); - public function emit($event, array $arguments = []); -} diff --git a/v3_ci4/vendor/evenement/evenement/src/EventEmitterTrait.php b/v3_ci4/vendor/evenement/evenement/src/EventEmitterTrait.php deleted file mode 100644 index 1503429..0000000 --- a/v3_ci4/vendor/evenement/evenement/src/EventEmitterTrait.php +++ /dev/null @@ -1,154 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Evenement; - -use InvalidArgumentException; - -use function count; -use function array_keys; -use function array_merge; -use function array_search; -use function array_unique; -use function array_values; - -trait EventEmitterTrait -{ - protected $listeners = []; - protected $onceListeners = []; - - public function on($event, callable $listener) - { - if ($event === null) { - throw new InvalidArgumentException('event name must not be null'); - } - - if (!isset($this->listeners[$event])) { - $this->listeners[$event] = []; - } - - $this->listeners[$event][] = $listener; - - return $this; - } - - public function once($event, callable $listener) - { - if ($event === null) { - throw new InvalidArgumentException('event name must not be null'); - } - - if (!isset($this->onceListeners[$event])) { - $this->onceListeners[$event] = []; - } - - $this->onceListeners[$event][] = $listener; - - return $this; - } - - public function removeListener($event, callable $listener) - { - if ($event === null) { - throw new InvalidArgumentException('event name must not be null'); - } - - if (isset($this->listeners[$event])) { - $index = array_search($listener, $this->listeners[$event], true); - if (false !== $index) { - unset($this->listeners[$event][$index]); - if (count($this->listeners[$event]) === 0) { - unset($this->listeners[$event]); - } - } - } - - if (isset($this->onceListeners[$event])) { - $index = array_search($listener, $this->onceListeners[$event], true); - if (false !== $index) { - unset($this->onceListeners[$event][$index]); - if (count($this->onceListeners[$event]) === 0) { - unset($this->onceListeners[$event]); - } - } - } - } - - public function removeAllListeners($event = null) - { - if ($event !== null) { - unset($this->listeners[$event]); - } else { - $this->listeners = []; - } - - if ($event !== null) { - unset($this->onceListeners[$event]); - } else { - $this->onceListeners = []; - } - } - - public function listeners($event = null): array - { - if ($event === null) { - $events = []; - $eventNames = array_unique( - array_merge( - array_keys($this->listeners), - array_keys($this->onceListeners) - ) - ); - foreach ($eventNames as $eventName) { - $events[$eventName] = array_merge( - isset($this->listeners[$eventName]) ? $this->listeners[$eventName] : [], - isset($this->onceListeners[$eventName]) ? $this->onceListeners[$eventName] : [] - ); - } - return $events; - } - - return array_merge( - isset($this->listeners[$event]) ? $this->listeners[$event] : [], - isset($this->onceListeners[$event]) ? $this->onceListeners[$event] : [] - ); - } - - public function emit($event, array $arguments = []) - { - if ($event === null) { - throw new InvalidArgumentException('event name must not be null'); - } - - $listeners = []; - if (isset($this->listeners[$event])) { - $listeners = array_values($this->listeners[$event]); - } - - $onceListeners = []; - if (isset($this->onceListeners[$event])) { - $onceListeners = array_values($this->onceListeners[$event]); - } - - if(empty($listeners) === false) { - foreach ($listeners as $listener) { - $listener(...$arguments); - } - } - - if(empty($onceListeners) === false) { - unset($this->onceListeners[$event]); - foreach ($onceListeners as $listener) { - $listener(...$arguments); - } - } - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/CHANGELOG.md b/v3_ci4/vendor/fakerphp/faker/CHANGELOG.md deleted file mode 100644 index d3e3722..0000000 --- a/v3_ci4/vendor/fakerphp/faker/CHANGELOG.md +++ /dev/null @@ -1,209 +0,0 @@ -# CHANGELOG - -## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.24.0...1.24.1) - -- Removed domain `gmail.com.au` from `Provider\en_AU\Internet` (#886) - -## [2024-11-09, v1.24.0](https://github.com/FakerPHP/Faker/compare/v1.23.1..v1.24.0) - -- Fix internal deprecations in Doctrine's populator by @gnutix in (#889) -- Fix mobile phone number pattern for France by @ker0x in (#859) -- PHP 8.4 Support by @Jubeki in (#904) - -- Added support for PHP 8.4 (#904) - -## [2023-09-29, v1.23.1](https://github.com/FakerPHP/Faker/compare/v1.23.0..v1.23.1) - -- Fixed double `а` female lastName in `ru_RU/Person::name()` (#832) -- Fixed polish license plates (#685) -- Stopped using `static` in callables in `Provider\pt_BR\PhoneNumber` (#785) -- Fixed incorrect female name (#794) -- Stopped using the deprecated `MT_RAND_PHP` constant to seed the random generator on PHP 8.3 (#844) - -## [2023-06-12, v1.23.0](https://github.com/FakerPHP/Faker/compare/v1.22.0..v1.23.0) - -- Update `randomElements` to return random number of elements when no count is provided (#658) - -## [2023-05-14, v1.22.0](https://github.com/FakerPHP/Faker/compare/v1.21.0..v1.22.0) - -- Fixed `randomElements()` to accept empty iterator (#605) -- Added support for passing an `Enum` to `randomElement()` and `randomElements()` (#620) -- Started rejecting invalid arguments passed to `randomElement()` and `randomElements()` (#642) - -## [2022-12-13, v1.21.0](https://github.com/FakerPHP/Faker/compare/v1.20.0..v1.21.0) - -- Dropped support for PHP 7.1, 7.2, and 7.3 (#543) -- Added support for PHP 8.2 (#528) - -## [2022-07-20, v1.20.0](https://github.com/FakerPHP/Faker/compare/v1.19.0..v1.20.0) - -- Fixed typo in French phone number (#452) -- Fixed some Hungarian naming bugs (#451) -- Fixed bug where the NL-BE VAT generation was incorrect (#455) -- Improve Turkish phone numbers for E164 and added landline support (#460) -- Add Microsoft Edge User Agent (#464) -- Added option to set image formats on Faker\Provider\Image (#473) -- Added support for French color translations (#466) -- Support filtering timezones by country code (#480) -- Fixed typo in some greek names (#490) -- Marked the Faker\Provider\Image as deprecated - -## [2022-02-02, v1.19.0](https://github.com/FakerPHP/Faker/compare/v1.18.0..v1.19.0) - -- Added color extension to core (#442) -- Added conflict with `doctrine/persistence` below version `1.4` -- Fix for support on different Doctrine ORM versions (#414) -- Fix usage of `Doctrine\Persistence` dependency -- Fix CZ Person birthNumber docblock return type (#437) -- Fix is_IS Person docbock types (#439) -- Fix is_IS Address docbock type (#438) -- Fix regexify escape backslash in character class (#434) -- Removed UUID from Generator to be able to extend it (#441) - -## [2022-01-23, v1.18.0](https://github.com/FakerPHP/Faker/compare/v1.17.0..v1.18.0) - -- Deprecated UUID, use uuid3 to specify version (#427) -- Reset formatters when adding a new provider (#366) -- Helper methods to use our custom generators (#155) -- Set allow-plugins for Composer 2.2 (#405) -- Fix kk_KZ\Person::individualIdentificationNumber generation (#411) -- Allow for -> syntax to be used in parsing (#423) -- Person->name was missing string return type (#424) -- Generate a valid BE TAX number (#415) -- Added the UUID extension to Core (#427) - -## [2021-12-05, v1.17.0](https://github.com/FakerPHP/Faker/compare/v1.16.0..v1.17.0) - -- Partial PHP 8.1 compatibility (#373) -- Add payment provider for `ne_NP` locale (#375) -- Add Egyptian Arabic `ar_EG` locale (#377) -- Updated list of South African TLDs (#383) -- Fixed formatting of E.164 numbers (#380) -- Allow `symfony/deprecation-contracts` `^3.0` (#397) - -## [2021-09-06, v1.16.0](https://github.com/FakerPHP/Faker/compare/v1.15.0..v1.16.0) - -- Add Company extension -- Add Address extension -- Add Person extension -- Add PhoneNumber extension -- Add VersionExtension (#350) -- Stricter types in Extension\Container and Extension\GeneratorAwareExtension (#345) -- Fix deprecated property access in `nl_NL` (#348) -- Add support for `psr/container` >= 2.0 (#354) -- Add missing union types in Faker\Generator (#352) - -## [2021-07-06, v1.15.0](https://github.com/FakerPHP/Faker/compare/v1.14.1..v1.15.0) - -- Updated the generator phpdoc to help identify magic methods (#307) -- Prevent direct access and triggered deprecation warning for "word" (#302) -- Updated length on all global e164 numbers (#301) -- Updated last names from different source (#312) -- Don't generate birth number of '000' for Swedish personal identity (#306) -- Add job list for localization id_ID (#339) - -## [2021-03-30, v1.14.1](https://github.com/FakerPHP/Faker/compare/v1.14.0..v1.14.1) - -- Fix where randomNumber and randomFloat would return a 0 value (#291 / #292) - -## [2021-03-29, v1.14.0](https://github.com/FakerPHP/Faker/compare/v1.13.0..v1.14.0) - -- Fix for realText to ensure the text keeps closer to its boundaries (#152) -- Fix where regexify produces a random character instead of a literal dot (#135 -- Deprecate zh_TW methods that only call base methods (#122) -- Add used extensions to composer.json as suggestion (#120) -- Moved TCNo and INN from calculator to localized providers (#108) -- Fix regex dot/backslash issue where a dot is replaced with a backslash as escape character (#206) -- Deprecate direct property access (#164) -- Added test to assert unique() behaviour (#233) -- Added RUC for the es_PE locale (#244) -- Test IBAN formats for Latin America (AR/PE/VE) (#260) -- Added VAT number for en_GB (#255) -- Added new districts for the ne_NP locale (#258) -- Fix for U.S. Area Code Generation (#261) -- Fix in numerify where a better random numeric value is guaranteed (#256) -- Fix e164PhoneNumber to only generate valid phone numbers with valid country codes (#264) -- Extract fixtures into separate classes (#234) -- Remove french domains that no longer exists (#277) -- Fix error that occurs when getting a polish title (#279) -- Use valid area codes for North America E164 phone numbers (#280) - -- Adding support for extensions and PSR-11 (#154) -- Adding trait for GeneratorAwareExtension (#165) -- Added helper class for extension (#162) -- Added blood extension to core (#232) -- Added barcode extension to core (#252) -- Added number extension (#257) - -- Various code style updates -- Added a note about our breaking change promise (#273) - -## [2020-12-18, v1.13.0](https://github.com/FakerPHP/Faker/compare/v1.12.1..v1.13.0) - -Several fixes and new additions in this release. A lot of cleanup has been done -on the codebase on both tests and consistency. - -- Feature/pl pl license plate (#62) -- Fix greek phone numbers (#16) -- Move AT payment provider logic to de_AT (#72) -- Fix wiktionary links (#73) -- Fix AT person links (#74) -- Fix AT cities (#75) -- Deprecate at_AT providers (#78) -- Add Austrian `ssn()` to `Person` provider (#79) -- Fix typos in id_ID Address (#83) -- Austrian post codes (#86) -- Updated Polish data (#70) -- Improve Austrian social security number generation (#88) -- Move US phone numbers with extension to own method (#91) -- Add UK National Insurance number generator (#89) -- Fix en_SG phone number generator (#100) -- Remove usage of mt_rand (#87) -- Remove whitespace from beginning of el_GR phone numbers (#105) -- Building numbers can not be 0, 00, 000 (#107) -- Add 172.16/12 local IPv4 block (#121) -- Add JCB credit card type (#124) -- Remove json_decode from emoji generation (#123) -- Remove ro street address (#146) - -## [2020-12-11, v1.12.1](https://github.com/FakerPHP/Faker/compare/v1.12.0..v1.12.1) - -This is a security release that prevents a hacker to execute code on the server. - -## [2020-11-23, v1.12.0](https://github.com/FakerPHP/Faker/compare/v1.11.0..v1.12.0) - -- Fix ro_RO first and last day of year calculation offset (#65) -- Fix en_NG locale test namespaces that did not match PSR-4 (#57) -- Added Singapore NRIC/FIN provider (#56) -- Added provider for Lithuanian municipalities (#58) -- Added blood types provider (#61) - -## [2020-11-15, v1.11.0](https://github.com/FakerPHP/Faker/compare/v1.10.1..v1.11.0) - -- Added Provider for Swedish Municipalities -- Updates to person names in pt_BR -- Many code style changes - -## [2020-10-28, v1.10.1](https://github.com/FakerPHP/Faker/compare/v1.10.0..v1.10.1) - -- Updates the Danish addresses in dk_DK -- Removed offense company names in nl_NL -- Clarify changelog with original fork -- Standin replacement for LoremPixel to Placeholder.com (#11) - -## [2020-10-27, v1.10.0](https://github.com/FakerPHP/Faker/compare/v1.9.1..v1.10.0) - -- Support PHP 7.1-8.0 -- Fix typo in de_DE Company Provider -- Fix dateTimeThisYear method -- Fix typo in de_DE jobTitleFormat -- Fix IBAN generation for CR -- Fix typos in greek first names -- Fix US job title typo -- Do not clear entity manager for doctrine orm populator -- Remove persian rude words -- Corrections to RU names - -## 2020-10-27, v1.9.1 - -- Initial version. Same as `fzaninotto/Faker:v1.9.1`. diff --git a/v3_ci4/vendor/fakerphp/faker/LICENSE b/v3_ci4/vendor/fakerphp/faker/LICENSE deleted file mode 100644 index 99ed007..0000000 --- a/v3_ci4/vendor/fakerphp/faker/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2011 François Zaninotto -Portions Copyright (c) 2008 Caius Durling -Portions Copyright (c) 2008 Adam Royle -Portions Copyright (c) 2008 Fiona Burrows - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/fakerphp/faker/README.md b/v3_ci4/vendor/fakerphp/faker/README.md deleted file mode 100644 index 2c6a268..0000000 --- a/v3_ci4/vendor/fakerphp/faker/README.md +++ /dev/null @@ -1,114 +0,0 @@ -

Social card of FakerPHP

- -# Faker - -[![Packagist Downloads](https://img.shields.io/packagist/dm/FakerPHP/Faker)](https://packagist.org/packages/fakerphp/faker) -[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/FakerPHP/Faker/Tests/main)](https://github.com/FakerPHP/Faker/actions) -[![Type Coverage](https://shepherd.dev/github/FakerPHP/Faker/coverage.svg)](https://shepherd.dev/github/FakerPHP/Faker) -[![Code Coverage](https://codecov.io/gh/FakerPHP/Faker/branch/main/graph/badge.svg)](https://codecov.io/gh/FakerPHP/Faker) - -Faker is a PHP library that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you. - -It's heavily inspired by Perl's [Data::Faker](https://metacpan.org/pod/Data::Faker), and by Ruby's [Faker](https://rubygems.org/gems/faker). - -## Getting Started - -### Installation - -Faker requires PHP >= 7.4. - -```shell -composer require fakerphp/faker -``` - -### Documentation - -Full documentation can be found over on [fakerphp.github.io](https://fakerphp.github.io). - -### Basic Usage - -Use `Faker\Factory::create()` to create and initialize a Faker generator, which can generate data by accessing methods named after the type of data you want. - -```php -name(); -// 'Vince Sporer' -echo $faker->email(); -// 'walter.sophia@hotmail.com' -echo $faker->text(); -// 'Numquam ut mollitia at consequuntur inventore dolorem.' -``` - -Each call to `$faker->name()` yields a different (random) result. This is because Faker uses `__call()` magic, and forwards `Faker\Generator->$method()` calls to `Faker\Generator->format($method, $attributes)`. - -```php -name() . "\n"; -} - -// 'Cyrus Boyle' -// 'Alena Cummerata' -// 'Orlo Bergstrom' -``` - -## Automated refactoring - -If you already used this library with its properties, they are now deprecated and needs to be replaced by their equivalent methods. - -You can use the provided [Rector](https://github.com/rectorphp/rector) config file to automate the work. - -Run - -```bash -composer require --dev rector/rector -``` - -to install `rector/rector`. - -Run - -```bash -vendor/bin/rector process src/ --config vendor/fakerphp/faker/rector-migrate.php -``` - -to run `rector/rector`. - -*Note:* do not forget to replace `src/` with the path to your source directory. - -Alternatively, import the configuration in your `rector.php` file: - -```php -import('vendor/fakerphp/faker/rector-migrate.php'); -}; -``` - -## License - -Faker is released under the MIT License. See [`LICENSE`](LICENSE) for details. - -## Backward compatibility promise - -Faker is using [Semver](https://semver.org/). This means that versions are tagged -with MAJOR.MINOR.PATCH. Only a new major version will be allowed to break backward -compatibility (BC). - -Classes marked as `@experimental` or `@internal` are not included in our backward compatibility promise. -You are also not guaranteed that the value returned from a method is always the -same. You are guaranteed that the data type will not change. - -PHP 8 introduced [named arguments](https://wiki.php.net/rfc/named_params), which -increased the cost and reduces flexibility for package maintainers. The names of the -arguments for methods in Faker is not included in our BC promise. diff --git a/v3_ci4/vendor/fakerphp/faker/composer.json b/v3_ci4/vendor/fakerphp/faker/composer.json deleted file mode 100644 index 88724f2..0000000 --- a/v3_ci4/vendor/fakerphp/faker/composer.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "fakerphp/faker", - "type": "library", - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "faker", - "fixtures", - "data" - ], - "license": "MIT", - "authors": [ - { - "name": "François Zaninotto" - } - ], - "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "require-dev": { - "ext-intl": "*", - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "autoload-dev": { - "psr-4": { - "Faker\\Test\\": "test/Faker/", - "Faker\\Test\\Fixture\\": "test/Fixture/" - } - }, - "conflict": { - "fzaninotto/faker": "*" - }, - "suggest": { - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality.", - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine" - }, - "config": { - "allow-plugins": { - "bamarni/composer-bin-plugin": true, - "composer/package-versions-deprecated": true - }, - "sort-packages": true - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/rector-migrate.php b/v3_ci4/vendor/fakerphp/faker/rector-migrate.php deleted file mode 100644 index 7d99b57..0000000 --- a/v3_ci4/vendor/fakerphp/faker/rector-migrate.php +++ /dev/null @@ -1,161 +0,0 @@ -ruleWithConfiguration( - Transform\Rector\Assign\PropertyFetchToMethodCallRector::class, - array_map(static function (string $property): Transform\ValueObject\PropertyFetchToMethodCall { - return new Transform\ValueObject\PropertyFetchToMethodCall( - Generator::class, - $property, - $property, - ); - }, $properties), - ); -}; diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Calculator/Ean.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Calculator/Ean.php deleted file mode 100644 index fbf11fc..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Calculator/Ean.php +++ /dev/null @@ -1,50 +0,0 @@ - $digit) { - $sums += ((int) $digit) * $sequence[$n % 2]; - } - - return (10 - $sums % 10) % 10; - } - - /** - * Checks whether the provided number is an EAN compliant number and that - * the checksum is correct. - * - * @param string $ean An EAN number - * - * @return bool - */ - public static function isValid(string $ean) - { - if (!preg_match(self::PATTERN, $ean)) { - return false; - } - - return self::checksum(substr($ean, 0, -1)) === (int) substr($ean, -1); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Calculator/Iban.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Calculator/Iban.php deleted file mode 100644 index 19068fd..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Calculator/Iban.php +++ /dev/null @@ -1,69 +0,0 @@ -= 0; $i -= 2) { - $sum += $number[$i]; - } - - for ($i = $length - 2; $i >= 0; $i -= 2) { - $sum += array_sum(str_split($number[$i] * 2)); - } - - return $sum % 10; - } - - /** - * @return string - */ - public static function computeCheckDigit(string $partialNumber) - { - $checkDigit = self::checksum($partialNumber . '0'); - - if ($checkDigit === 0) { - return '0'; - } - - return (string) (10 - $checkDigit); - } - - /** - * Checks whether a number (partial number + check digit) is Luhn compliant - * - * @return bool - */ - public static function isValid(string $number) - { - return self::checksum($number) === 0; - } - - /** - * Generate a Luhn compliant number. - * - * @return string - */ - public static function generateLuhnNumber(string $partialValue) - { - if (!preg_match('/^\d+$/', $partialValue)) { - throw new \InvalidArgumentException('Argument should be an integer.'); - } - - return $partialValue . Luhn::computeCheckDigit($partialValue); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Calculator/TCNo.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Calculator/TCNo.php deleted file mode 100644 index a75c93e..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Calculator/TCNo.php +++ /dev/null @@ -1,43 +0,0 @@ -default = $default; - $this->generator = $generator; - $this->weight = $weight; - } - - public function ext(string $id) - { - return new self($this->generator->ext($id), $this->weight, $this->default); - } - - /** - * Catch and proxy all generator calls but return only valid values - * - * @param string $attribute - * - * @deprecated Use a method instead. - */ - public function __get($attribute) - { - trigger_deprecation('fakerphp/faker', '1.14', 'Accessing property "%s" is deprecated, use "%s()" instead.', $attribute, $attribute); - - return $this->__call($attribute, []); - } - - /** - * @param string $name - * @param array $arguments - */ - public function __call($name, $arguments) - { - if (mt_rand(1, 100) <= (100 * $this->weight)) { - return call_user_func_array([$this->generator, $name], $arguments); - } - - return $this->default; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Container/Container.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Container/Container.php deleted file mode 100644 index 9b36184..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Container/Container.php +++ /dev/null @@ -1,139 +0,0 @@ - - */ - private array $definitions; - - private array $services = []; - - /** - * Create a container object with a set of definitions. The array value MUST - * produce an object that implements Extension. - * - * @param array $definitions - */ - public function __construct(array $definitions) - { - $this->definitions = $definitions; - } - - /** - * Retrieve a definition from the container. - * - * @param string $id - * - * @throws \InvalidArgumentException - * @throws \RuntimeException - * @throws ContainerException - * @throws NotInContainerException - */ - public function get($id): Extension - { - if (!is_string($id)) { - throw new \InvalidArgumentException(sprintf( - 'First argument of %s::get() must be string', - self::class, - )); - } - - if (array_key_exists($id, $this->services)) { - return $this->services[$id]; - } - - if (!$this->has($id)) { - throw new NotInContainerException(sprintf( - 'There is not service with id "%s" in the container.', - $id, - )); - } - - $definition = $this->definitions[$id]; - - $service = $this->getService($id, $definition); - - if (!$service instanceof Extension) { - throw new \RuntimeException(sprintf( - 'Service resolved for identifier "%s" does not implement the %s" interface.', - $id, - Extension::class, - )); - } - - $this->services[$id] = $service; - - return $service; - } - - /** - * Get the service from a definition. - * - * @param callable|object|string $definition - */ - private function getService(string $id, $definition) - { - if (is_callable($definition)) { - try { - return $definition(); - } catch (\Throwable $e) { - throw new ContainerException( - sprintf('Error while invoking callable for "%s"', $id), - 0, - $e, - ); - } - } elseif (is_object($definition)) { - return $definition; - } elseif (is_string($definition)) { - if (class_exists($definition)) { - try { - return new $definition(); - } catch (\Throwable $e) { - throw new ContainerException(sprintf('Could not instantiate class "%s"', $id), 0, $e); - } - } - - throw new ContainerException(sprintf( - 'Could not instantiate class "%s". Class was not found.', - $id, - )); - } else { - throw new ContainerException(sprintf( - 'Invalid type for definition with id "%s"', - $id, - )); - } - } - - /** - * Check if the container contains a given identifier. - * - * @param string $id - * - * @throws \InvalidArgumentException - */ - public function has($id): bool - { - if (!is_string($id)) { - throw new \InvalidArgumentException(sprintf( - 'First argument of %s::get() must be string', - self::class, - )); - } - - return array_key_exists($id, $this->definitions); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Container/ContainerBuilder.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Container/ContainerBuilder.php deleted file mode 100644 index f2545e9..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Container/ContainerBuilder.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - private array $definitions = []; - - /** - * @param callable|object|string $definition - * - * @throws \InvalidArgumentException - */ - public function add(string $id, $definition): self - { - if (!is_string($definition) && !is_callable($definition) && !is_object($definition)) { - throw new \InvalidArgumentException(sprintf( - 'First argument to "%s::add()" must be a string, callable or object.', - self::class, - )); - } - - $this->definitions[$id] = $definition; - - return $this; - } - - public function build(): ContainerInterface - { - return new Container($this->definitions); - } - - private static function defaultExtensions(): array - { - return [ - Extension\BarcodeExtension::class => Core\Barcode::class, - Extension\BloodExtension::class => Core\Blood::class, - Extension\ColorExtension::class => Core\Color::class, - Extension\DateTimeExtension::class => Core\DateTime::class, - Extension\FileExtension::class => Core\File::class, - Extension\NumberExtension::class => Core\Number::class, - Extension\UuidExtension::class => Core\Uuid::class, - Extension\VersionExtension::class => Core\Version::class, - ]; - } - - public static function withDefaultExtensions(): self - { - $instance = new self(); - - foreach (self::defaultExtensions() as $id => $definition) { - $instance->add($id, $definition); - } - - return $instance; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Container/ContainerException.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Container/ContainerException.php deleted file mode 100644 index 12b3caa..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Container/ContainerException.php +++ /dev/null @@ -1,14 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - private function ean(int $length = 13): string - { - $code = Extension\Helper::numerify(str_repeat('#', $length - 1)); - - return sprintf('%s%s', $code, Calculator\Ean::checksum($code)); - } - - public function ean13(): string - { - return $this->ean(); - } - - public function ean8(): string - { - return $this->ean(8); - } - - public function isbn10(): string - { - $code = Extension\Helper::numerify(str_repeat('#', 9)); - - return sprintf('%s%s', $code, Calculator\Isbn::checksum($code)); - } - - public function isbn13(): string - { - $code = '97' . $this->numberExtension->numberBetween(8, 9) . Extension\Helper::numerify(str_repeat('#', 9)); - - return sprintf('%s%s', $code, Calculator\Ean::checksum($code)); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Blood.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Blood.php deleted file mode 100644 index 03e563f..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Blood.php +++ /dev/null @@ -1,42 +0,0 @@ -bloodTypes); - } - - public function bloodRh(): string - { - return Extension\Helper::randomElement($this->bloodRhFactors); - } - - public function bloodGroup(): string - { - return sprintf( - '%s%s', - $this->bloodType(), - $this->bloodRh(), - ); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Color.php deleted file mode 100644 index c6cac0d..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Color.php +++ /dev/null @@ -1,177 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - /** - * @example '#fa3cc2' - */ - public function hexColor(): string - { - return '#' . str_pad(dechex($this->numberExtension->numberBetween(1, 16777215)), 6, '0', STR_PAD_LEFT); - } - - /** - * @example '#ff0044' - */ - public function safeHexColor(): string - { - $color = str_pad(dechex($this->numberExtension->numberBetween(0, 255)), 3, '0', STR_PAD_LEFT); - - return sprintf( - '#%s%s%s%s%s%s', - $color[0], - $color[0], - $color[1], - $color[1], - $color[2], - $color[2], - ); - } - - /** - * @example 'array(0,255,122)' - * - * @return int[] - */ - public function rgbColorAsArray(): array - { - $color = $this->hexColor(); - - return [ - hexdec(substr($color, 1, 2)), - hexdec(substr($color, 3, 2)), - hexdec(substr($color, 5, 2)), - ]; - } - - /** - * @example '0,255,122' - */ - public function rgbColor(): string - { - return implode(',', $this->rgbColorAsArray()); - } - - /** - * @example 'rgb(0,255,122)' - */ - public function rgbCssColor(): string - { - return sprintf( - 'rgb(%s)', - $this->rgbColor(), - ); - } - - /** - * @example 'rgba(0,255,122,0.8)' - */ - public function rgbaCssColor(): string - { - return sprintf( - 'rgba(%s,%s)', - $this->rgbColor(), - $this->numberExtension->randomFloat(1, 0, 1), - ); - } - - /** - * @example 'blue' - */ - public function safeColorName(): string - { - return Helper::randomElement($this->safeColorNames); - } - - /** - * @example 'NavajoWhite' - */ - public function colorName(): string - { - return Helper::randomElement($this->allColorNames); - } - - /** - * @example '340,50,20' - */ - public function hslColor(): string - { - return sprintf( - '%s,%s,%s', - $this->numberExtension->numberBetween(0, 360), - $this->numberExtension->numberBetween(0, 100), - $this->numberExtension->numberBetween(0, 100), - ); - } - - /** - * @example array(340, 50, 20) - * - * @return int[] - */ - public function hslColorAsArray(): array - { - return [ - $this->numberExtension->numberBetween(0, 360), - $this->numberExtension->numberBetween(0, 100), - $this->numberExtension->numberBetween(0, 100), - ]; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Coordinates.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Coordinates.php deleted file mode 100644 index bc0678f..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Coordinates.php +++ /dev/null @@ -1,78 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - /** - * @example '77.147489' - * - * @return float Uses signed degrees format (returns a float number between -90 and 90) - */ - public function latitude(float $min = -90.0, float $max = 90.0): float - { - if ($min < -90 || $max < -90) { - throw new \LogicException('Latitude cannot be less that -90.0'); - } - - if ($min > 90 || $max > 90) { - throw new \LogicException('Latitude cannot be greater that 90.0'); - } - - return $this->randomFloat(6, $min, $max); - } - - /** - * @example '86.211205' - * - * @return float Uses signed degrees format (returns a float number between -180 and 180) - */ - public function longitude(float $min = -180.0, float $max = 180.0): float - { - if ($min < -180 || $max < -180) { - throw new \LogicException('Longitude cannot be less that -180.0'); - } - - if ($min > 180 || $max > 180) { - throw new \LogicException('Longitude cannot be greater that 180.0'); - } - - return $this->randomFloat(6, $min, $max); - } - - /** - * @example array('77.147489', '86.211205') - * - * @return array{latitude: float, longitude: float} - */ - public function localCoordinates(): array - { - return [ - 'latitude' => $this->latitude(), - 'longitude' => $this->longitude(), - ]; - } - - private function randomFloat(int $nbMaxDecimals, float $min, float $max): float - { - if ($min > $max) { - throw new \LogicException('Invalid coordinates boundaries'); - } - - return $this->numberExtension->randomFloat($nbMaxDecimals, $min, $max); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/DateTime.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/DateTime.php deleted file mode 100644 index 6e02c66..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/DateTime.php +++ /dev/null @@ -1,217 +0,0 @@ -getTimestamp(); - } - - return strtotime(empty($until) ? 'now' : $until); - } - - /** - * Get a DateTime created based on a POSIX-timestamp. - * - * @param int $timestamp the UNIX / POSIX-compatible timestamp - */ - private function getTimestampDateTime(int $timestamp): \DateTime - { - return new \DateTime('@' . $timestamp); - } - - private function resolveTimezone(?string $timezone): string - { - if ($timezone !== null) { - return $timezone; - } - - return null === $this->defaultTimezone ? date_default_timezone_get() : $this->defaultTimezone; - } - - /** - * Internal method to set the timezone on a DateTime object. - */ - private function setTimezone(\DateTime $dateTime, ?string $timezone): \DateTime - { - $timezone = $this->resolveTimezone($timezone); - - return $dateTime->setTimezone(new \DateTimeZone($timezone)); - } - - public function dateTime($until = 'now', ?string $timezone = null): \DateTime - { - return $this->setTimezone( - $this->getTimestampDateTime($this->unixTime($until)), - $timezone, - ); - } - - public function dateTimeAD($until = 'now', ?string $timezone = null): \DateTime - { - $min = (PHP_INT_SIZE > 4) ? -62135597361 : -PHP_INT_MAX; - - return $this->setTimezone( - $this->getTimestampDateTime($this->generator->numberBetween($min, $this->getTimestamp($until))), - $timezone, - ); - } - - public function dateTimeBetween($from = '-30 years', $until = 'now', ?string $timezone = null): \DateTime - { - $start = $this->getTimestamp($from); - $end = $this->getTimestamp($until); - - if ($start > $end) { - throw new \InvalidArgumentException('"$from" must be anterior to "$until".'); - } - - $timestamp = $this->generator->numberBetween($start, $end); - - return $this->setTimezone( - $this->getTimestampDateTime($timestamp), - $timezone, - ); - } - - public function dateTimeInInterval($from = '-30 years', string $interval = '+5 days', ?string $timezone = null): \DateTime - { - $intervalObject = \DateInterval::createFromDateString($interval); - $datetime = $from instanceof \DateTime ? $from : new \DateTime($from); - - $other = (clone $datetime)->add($intervalObject); - - $begin = min($datetime, $other); - $end = $datetime === $begin ? $other : $datetime; - - return $this->dateTimeBetween($begin, $end, $timezone); - } - - public function dateTimeThisWeek($until = 'sunday this week', ?string $timezone = null): \DateTime - { - return $this->dateTimeBetween('monday this week', $until, $timezone); - } - - public function dateTimeThisMonth($until = 'last day of this month', ?string $timezone = null): \DateTime - { - return $this->dateTimeBetween('first day of this month', $until, $timezone); - } - - public function dateTimeThisYear($until = 'last day of december', ?string $timezone = null): \DateTime - { - return $this->dateTimeBetween('first day of january', $until, $timezone); - } - - public function dateTimeThisDecade($until = 'now', ?string $timezone = null): \DateTime - { - $year = floor(date('Y') / 10) * 10; - - return $this->dateTimeBetween("first day of january $year", $until, $timezone); - } - - public function dateTimeThisCentury($until = 'now', ?string $timezone = null): \DateTime - { - $year = floor(date('Y') / 100) * 100; - - return $this->dateTimeBetween("first day of january $year", $until, $timezone); - } - - public function date(string $format = 'Y-m-d', $until = 'now'): string - { - return $this->dateTime($until)->format($format); - } - - public function time(string $format = 'H:i:s', $until = 'now'): string - { - return $this->date($format, $until); - } - - public function unixTime($until = 'now'): int - { - return $this->generator->numberBetween(0, $this->getTimestamp($until)); - } - - public function iso8601($until = 'now'): string - { - return $this->date(\DateTime::ISO8601, $until); - } - - public function amPm($until = 'now'): string - { - return $this->date('a', $until); - } - - public function dayOfMonth($until = 'now'): string - { - return $this->date('d', $until); - } - - public function dayOfWeek($until = 'now'): string - { - return $this->date('l', $until); - } - - public function month($until = 'now'): string - { - return $this->date('m', $until); - } - - public function monthName($until = 'now'): string - { - return $this->date('F', $until); - } - - public function year($until = 'now'): string - { - return $this->date('Y', $until); - } - - public function century(): string - { - return Helper::randomElement($this->centuries); - } - - public function timezone(?string $countryCode = null): string - { - if ($countryCode) { - $timezones = \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, $countryCode); - } else { - $timezones = \DateTimeZone::listIdentifiers(); - } - - return Helper::randomElement($timezones); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/File.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/File.php deleted file mode 100644 index 5151e90..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/File.php +++ /dev/null @@ -1,564 +0,0 @@ - file extension(s) - * - * @see http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types - */ - private array $mimeTypes = [ - 'application/atom+xml' => 'atom', - 'application/ecmascript' => 'ecma', - 'application/emma+xml' => 'emma', - 'application/epub+zip' => 'epub', - 'application/java-archive' => 'jar', - 'application/java-vm' => 'class', - 'application/javascript' => 'js', - 'application/json' => 'json', - 'application/jsonml+json' => 'jsonml', - 'application/lost+xml' => 'lostxml', - 'application/mathml+xml' => 'mathml', - 'application/mets+xml' => 'mets', - 'application/mods+xml' => 'mods', - 'application/mp4' => 'mp4s', - 'application/msword' => ['doc', 'dot'], - 'application/octet-stream' => [ - 'bin', - 'dms', - 'lrf', - 'mar', - 'so', - 'dist', - 'distz', - 'pkg', - 'bpk', - 'dump', - 'elc', - 'deploy', - ], - 'application/ogg' => 'ogx', - 'application/omdoc+xml' => 'omdoc', - 'application/pdf' => 'pdf', - 'application/pgp-encrypted' => 'pgp', - 'application/pgp-signature' => ['asc', 'sig'], - 'application/pkix-pkipath' => 'pkipath', - 'application/pkixcmp' => 'pki', - 'application/pls+xml' => 'pls', - 'application/postscript' => ['ai', 'eps', 'ps'], - 'application/pskc+xml' => 'pskcxml', - 'application/rdf+xml' => 'rdf', - 'application/reginfo+xml' => 'rif', - 'application/rss+xml' => 'rss', - 'application/rtf' => 'rtf', - 'application/sbml+xml' => 'sbml', - 'application/vnd.adobe.air-application-installer-package+zip' => 'air', - 'application/vnd.adobe.xdp+xml' => 'xdp', - 'application/vnd.adobe.xfdf' => 'xfdf', - 'application/vnd.ahead.space' => 'ahead', - 'application/vnd.dart' => 'dart', - 'application/vnd.data-vision.rdz' => 'rdz', - 'application/vnd.dece.data' => ['uvf', 'uvvf', 'uvd', 'uvvd'], - 'application/vnd.dece.ttml+xml' => ['uvt', 'uvvt'], - 'application/vnd.dece.unspecified' => ['uvx', 'uvvx'], - 'application/vnd.dece.zip' => ['uvz', 'uvvz'], - 'application/vnd.denovo.fcselayout-link' => 'fe_launch', - 'application/vnd.dna' => 'dna', - 'application/vnd.dolby.mlp' => 'mlp', - 'application/vnd.dpgraph' => 'dpg', - 'application/vnd.dreamfactory' => 'dfac', - 'application/vnd.ds-keypoint' => 'kpxx', - 'application/vnd.dvb.ait' => 'ait', - 'application/vnd.dvb.service' => 'svc', - 'application/vnd.dynageo' => 'geo', - 'application/vnd.ecowin.chart' => 'mag', - 'application/vnd.enliven' => 'nml', - 'application/vnd.epson.esf' => 'esf', - 'application/vnd.epson.msf' => 'msf', - 'application/vnd.epson.quickanime' => 'qam', - 'application/vnd.epson.salt' => 'slt', - 'application/vnd.epson.ssf' => 'ssf', - 'application/vnd.ezpix-album' => 'ez2', - 'application/vnd.ezpix-package' => 'ez3', - 'application/vnd.fdf' => 'fdf', - 'application/vnd.fdsn.mseed' => 'mseed', - 'application/vnd.fdsn.seed' => ['seed', 'dataless'], - 'application/vnd.flographit' => 'gph', - 'application/vnd.fluxtime.clip' => 'ftc', - 'application/vnd.hal+xml' => 'hal', - 'application/vnd.hydrostatix.sof-data' => 'sfd-hdstx', - 'application/vnd.ibm.minipay' => 'mpy', - 'application/vnd.ibm.secure-container' => 'sc', - 'application/vnd.iccprofile' => ['icc', 'icm'], - 'application/vnd.igloader' => 'igl', - 'application/vnd.immervision-ivp' => 'ivp', - 'application/vnd.kde.karbon' => 'karbon', - 'application/vnd.kde.kchart' => 'chrt', - 'application/vnd.kde.kformula' => 'kfo', - 'application/vnd.kde.kivio' => 'flw', - 'application/vnd.kde.kontour' => 'kon', - 'application/vnd.kde.kpresenter' => ['kpr', 'kpt'], - 'application/vnd.kde.kspread' => 'ksp', - 'application/vnd.kde.kword' => ['kwd', 'kwt'], - 'application/vnd.kenameaapp' => 'htke', - 'application/vnd.kidspiration' => 'kia', - 'application/vnd.kinar' => ['kne', 'knp'], - 'application/vnd.koan' => ['skp', 'skd', 'skt', 'skm'], - 'application/vnd.kodak-descriptor' => 'sse', - 'application/vnd.las.las+xml' => 'lasxml', - 'application/vnd.llamagraphics.life-balance.desktop' => 'lbd', - 'application/vnd.llamagraphics.life-balance.exchange+xml' => 'lbe', - 'application/vnd.lotus-1-2-3' => '123', - 'application/vnd.lotus-approach' => 'apr', - 'application/vnd.lotus-freelance' => 'pre', - 'application/vnd.lotus-notes' => 'nsf', - 'application/vnd.lotus-organizer' => 'org', - 'application/vnd.lotus-screencam' => 'scm', - 'application/vnd.mozilla.xul+xml' => 'xul', - 'application/vnd.ms-artgalry' => 'cil', - 'application/vnd.ms-cab-compressed' => 'cab', - 'application/vnd.ms-excel' => [ - 'xls', - 'xlm', - 'xla', - 'xlc', - 'xlt', - 'xlw', - ], - 'application/vnd.ms-excel.addin.macroenabled.12' => 'xlam', - 'application/vnd.ms-excel.sheet.binary.macroenabled.12' => 'xlsb', - 'application/vnd.ms-excel.sheet.macroenabled.12' => 'xlsm', - 'application/vnd.ms-excel.template.macroenabled.12' => 'xltm', - 'application/vnd.ms-fontobject' => 'eot', - 'application/vnd.ms-htmlhelp' => 'chm', - 'application/vnd.ms-ims' => 'ims', - 'application/vnd.ms-lrm' => 'lrm', - 'application/vnd.ms-officetheme' => 'thmx', - 'application/vnd.ms-pki.seccat' => 'cat', - 'application/vnd.ms-pki.stl' => 'stl', - 'application/vnd.ms-powerpoint' => ['ppt', 'pps', 'pot'], - 'application/vnd.ms-powerpoint.addin.macroenabled.12' => 'ppam', - 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => 'pptm', - 'application/vnd.ms-powerpoint.slide.macroenabled.12' => 'sldm', - 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => 'ppsm', - 'application/vnd.ms-powerpoint.template.macroenabled.12' => 'potm', - 'application/vnd.ms-project' => ['mpp', 'mpt'], - 'application/vnd.ms-word.document.macroenabled.12' => 'docm', - 'application/vnd.ms-word.template.macroenabled.12' => 'dotm', - 'application/vnd.ms-works' => ['wps', 'wks', 'wcm', 'wdb'], - 'application/vnd.ms-wpl' => 'wpl', - 'application/vnd.ms-xpsdocument' => 'xps', - 'application/vnd.mseq' => 'mseq', - 'application/vnd.musician' => 'mus', - 'application/vnd.oasis.opendocument.chart' => 'odc', - 'application/vnd.oasis.opendocument.chart-template' => 'otc', - 'application/vnd.oasis.opendocument.database' => 'odb', - 'application/vnd.oasis.opendocument.formula' => 'odf', - 'application/vnd.oasis.opendocument.formula-template' => 'odft', - 'application/vnd.oasis.opendocument.graphics' => 'odg', - 'application/vnd.oasis.opendocument.graphics-template' => 'otg', - 'application/vnd.oasis.opendocument.image' => 'odi', - 'application/vnd.oasis.opendocument.image-template' => 'oti', - 'application/vnd.oasis.opendocument.presentation' => 'odp', - 'application/vnd.oasis.opendocument.presentation-template' => 'otp', - 'application/vnd.oasis.opendocument.spreadsheet' => 'ods', - 'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots', - 'application/vnd.oasis.opendocument.text' => 'odt', - 'application/vnd.oasis.opendocument.text-master' => 'odm', - 'application/vnd.oasis.opendocument.text-template' => 'ott', - 'application/vnd.oasis.opendocument.text-web' => 'oth', - 'application/vnd.olpc-sugar' => 'xo', - 'application/vnd.oma.dd2+xml' => 'dd2', - 'application/vnd.openofficeorg.extension' => 'oxt', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx', - 'application/vnd.openxmlformats-officedocument.presentationml.slide' => 'sldx', - 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'ppsx', - 'application/vnd.openxmlformats-officedocument.presentationml.template' => 'potx', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => 'xltx', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 'dotx', - 'application/vnd.pvi.ptid1' => 'ptid', - 'application/vnd.quark.quarkxpress' => [ - 'qxd', - 'qxt', - 'qwd', - 'qwt', - 'qxl', - 'qxb', - ], - 'application/vnd.realvnc.bed' => 'bed', - 'application/vnd.recordare.musicxml' => 'mxl', - 'application/vnd.recordare.musicxml+xml' => 'musicxml', - 'application/vnd.rig.cryptonote' => 'cryptonote', - 'application/vnd.rim.cod' => 'cod', - 'application/vnd.rn-realmedia' => 'rm', - 'application/vnd.rn-realmedia-vbr' => 'rmvb', - 'application/vnd.route66.link66+xml' => 'link66', - 'application/vnd.sailingtracker.track' => 'st', - 'application/vnd.seemail' => 'see', - 'application/vnd.sema' => 'sema', - 'application/vnd.semd' => 'semd', - 'application/vnd.semf' => 'semf', - 'application/vnd.shana.informed.formdata' => 'ifm', - 'application/vnd.shana.informed.formtemplate' => 'itp', - 'application/vnd.shana.informed.interchange' => 'iif', - 'application/vnd.shana.informed.package' => 'ipk', - 'application/vnd.simtech-mindmapper' => ['twd', 'twds'], - 'application/vnd.smaf' => 'mmf', - 'application/vnd.stepmania.stepchart' => 'sm', - 'application/vnd.sun.xml.calc' => 'sxc', - 'application/vnd.sun.xml.calc.template' => 'stc', - 'application/vnd.sun.xml.draw' => 'sxd', - 'application/vnd.sun.xml.draw.template' => 'std', - 'application/vnd.sun.xml.impress' => 'sxi', - 'application/vnd.sun.xml.impress.template' => 'sti', - 'application/vnd.sun.xml.math' => 'sxm', - 'application/vnd.sun.xml.writer' => 'sxw', - 'application/vnd.sun.xml.writer.global' => 'sxg', - 'application/vnd.sun.xml.writer.template' => 'stw', - 'application/vnd.sus-calendar' => ['sus', 'susp'], - 'application/vnd.svd' => 'svd', - 'application/vnd.symbian.install' => ['sis', 'sisx'], - 'application/vnd.syncml+xml' => 'xsm', - 'application/vnd.syncml.dm+wbxml' => 'bdm', - 'application/vnd.syncml.dm+xml' => 'xdm', - 'application/vnd.tao.intent-module-archive' => 'tao', - 'application/vnd.tcpdump.pcap' => ['pcap', 'cap', 'dmp'], - 'application/vnd.tmobile-livetv' => 'tmo', - 'application/vnd.trid.tpt' => 'tpt', - 'application/vnd.triscape.mxs' => 'mxs', - 'application/vnd.trueapp' => 'tra', - 'application/vnd.ufdl' => ['ufd', 'ufdl'], - 'application/vnd.uiq.theme' => 'utz', - 'application/vnd.umajin' => 'umj', - 'application/vnd.unity' => 'unityweb', - 'application/vnd.uoml+xml' => 'uoml', - 'application/vnd.vcx' => 'vcx', - 'application/vnd.visio' => ['vsd', 'vst', 'vss', 'vsw'], - 'application/vnd.visionary' => 'vis', - 'application/vnd.vsf' => 'vsf', - 'application/vnd.wap.wbxml' => 'wbxml', - 'application/vnd.wap.wmlc' => 'wmlc', - 'application/vnd.wap.wmlscriptc' => 'wmlsc', - 'application/vnd.webturbo' => 'wtb', - 'application/vnd.wolfram.player' => 'nbp', - 'application/vnd.wordperfect' => 'wpd', - 'application/vnd.wqd' => 'wqd', - 'application/vnd.wt.stf' => 'stf', - 'application/vnd.xara' => 'xar', - 'application/vnd.xfdl' => 'xfdl', - 'application/voicexml+xml' => 'vxml', - 'application/widget' => 'wgt', - 'application/winhlp' => 'hlp', - 'application/wsdl+xml' => 'wsdl', - 'application/wspolicy+xml' => 'wspolicy', - 'application/x-7z-compressed' => '7z', - 'application/x-bittorrent' => 'torrent', - 'application/x-blorb' => ['blb', 'blorb'], - 'application/x-bzip' => 'bz', - 'application/x-cdlink' => 'vcd', - 'application/x-cfs-compressed' => 'cfs', - 'application/x-chat' => 'chat', - 'application/x-chess-pgn' => 'pgn', - 'application/x-conference' => 'nsc', - 'application/x-cpio' => 'cpio', - 'application/x-csh' => 'csh', - 'application/x-debian-package' => ['deb', 'udeb'], - 'application/x-dgc-compressed' => 'dgc', - 'application/x-director' => [ - 'dir', - 'dcr', - 'dxr', - 'cst', - 'cct', - 'cxt', - 'w3d', - 'fgd', - 'swa', - ], - 'application/x-font-ttf' => ['ttf', 'ttc'], - 'application/x-font-type1' => ['pfa', 'pfb', 'pfm', 'afm'], - 'application/x-font-woff' => 'woff', - 'application/x-freearc' => 'arc', - 'application/x-futuresplash' => 'spl', - 'application/x-gca-compressed' => 'gca', - 'application/x-glulx' => 'ulx', - 'application/x-gnumeric' => 'gnumeric', - 'application/x-gramps-xml' => 'gramps', - 'application/x-gtar' => 'gtar', - 'application/x-hdf' => 'hdf', - 'application/x-install-instructions' => 'install', - 'application/x-iso9660-image' => 'iso', - 'application/x-java-jnlp-file' => 'jnlp', - 'application/x-latex' => 'latex', - 'application/x-lzh-compressed' => ['lzh', 'lha'], - 'application/x-mie' => 'mie', - 'application/x-mobipocket-ebook' => ['prc', 'mobi'], - 'application/x-ms-application' => 'application', - 'application/x-ms-shortcut' => 'lnk', - 'application/x-ms-wmd' => 'wmd', - 'application/x-ms-wmz' => 'wmz', - 'application/x-ms-xbap' => 'xbap', - 'application/x-msaccess' => 'mdb', - 'application/x-msbinder' => 'obd', - 'application/x-mscardfile' => 'crd', - 'application/x-msclip' => 'clp', - 'application/x-msdownload' => ['exe', 'dll', 'com', 'bat', 'msi'], - 'application/x-msmediaview' => [ - 'mvb', - 'm13', - 'm14', - ], - 'application/x-msmetafile' => ['wmf', 'wmz', 'emf', 'emz'], - 'application/x-rar-compressed' => 'rar', - 'application/x-research-info-systems' => 'ris', - 'application/x-sh' => 'sh', - 'application/x-shar' => 'shar', - 'application/x-shockwave-flash' => 'swf', - 'application/x-silverlight-app' => 'xap', - 'application/x-sql' => 'sql', - 'application/x-stuffit' => 'sit', - 'application/x-stuffitx' => 'sitx', - 'application/x-subrip' => 'srt', - 'application/x-sv4cpio' => 'sv4cpio', - 'application/x-sv4crc' => 'sv4crc', - 'application/x-t3vm-image' => 't3', - 'application/x-tads' => 'gam', - 'application/x-tar' => 'tar', - 'application/x-tcl' => 'tcl', - 'application/x-tex' => 'tex', - 'application/x-tex-tfm' => 'tfm', - 'application/x-texinfo' => ['texinfo', 'texi'], - 'application/x-tgif' => 'obj', - 'application/x-ustar' => 'ustar', - 'application/x-wais-source' => 'src', - 'application/x-x509-ca-cert' => ['der', 'crt'], - 'application/x-xfig' => 'fig', - 'application/x-xliff+xml' => 'xlf', - 'application/x-xpinstall' => 'xpi', - 'application/x-xz' => 'xz', - 'application/x-zmachine' => 'z1', - 'application/xaml+xml' => 'xaml', - 'application/xcap-diff+xml' => 'xdf', - 'application/xenc+xml' => 'xenc', - 'application/xhtml+xml' => ['xhtml', 'xht'], - 'application/xml' => ['xml', 'xsl'], - 'application/xml-dtd' => 'dtd', - 'application/xop+xml' => 'xop', - 'application/xproc+xml' => 'xpl', - 'application/xslt+xml' => 'xslt', - 'application/xspf+xml' => 'xspf', - 'application/xv+xml' => ['mxml', 'xhvml', 'xvml', 'xvm'], - 'application/yang' => 'yang', - 'application/yin+xml' => 'yin', - 'application/zip' => 'zip', - 'audio/adpcm' => 'adp', - 'audio/basic' => ['au', 'snd'], - 'audio/midi' => ['mid', 'midi', 'kar', 'rmi'], - 'audio/mp4' => 'mp4a', - 'audio/mpeg' => [ - 'mpga', - 'mp2', - 'mp2a', - 'mp3', - 'm2a', - 'm3a', - ], - 'audio/ogg' => ['oga', 'ogg', 'spx'], - 'audio/vnd.dece.audio' => ['uva', 'uvva'], - 'audio/vnd.rip' => 'rip', - 'audio/webm' => 'weba', - 'audio/x-aac' => 'aac', - 'audio/x-aiff' => ['aif', 'aiff', 'aifc'], - 'audio/x-caf' => 'caf', - 'audio/x-flac' => 'flac', - 'audio/x-matroska' => 'mka', - 'audio/x-mpegurl' => 'm3u', - 'audio/x-ms-wax' => 'wax', - 'audio/x-ms-wma' => 'wma', - 'audio/x-pn-realaudio' => ['ram', 'ra'], - 'audio/x-pn-realaudio-plugin' => 'rmp', - 'audio/x-wav' => 'wav', - 'audio/xm' => 'xm', - 'image/bmp' => 'bmp', - 'image/cgm' => 'cgm', - 'image/g3fax' => 'g3', - 'image/gif' => 'gif', - 'image/ief' => 'ief', - 'image/jpeg' => ['jpeg', 'jpg', 'jpe'], - 'image/ktx' => 'ktx', - 'image/png' => 'png', - 'image/prs.btif' => 'btif', - 'image/sgi' => 'sgi', - 'image/svg+xml' => ['svg', 'svgz'], - 'image/tiff' => ['tiff', 'tif'], - 'image/vnd.adobe.photoshop' => 'psd', - 'image/vnd.dece.graphic' => ['uvi', 'uvvi', 'uvg', 'uvvg'], - 'image/vnd.dvb.subtitle' => 'sub', - 'image/vnd.djvu' => ['djvu', 'djv'], - 'image/vnd.dwg' => 'dwg', - 'image/vnd.dxf' => 'dxf', - 'image/vnd.fastbidsheet' => 'fbs', - 'image/vnd.fpx' => 'fpx', - 'image/vnd.fst' => 'fst', - 'image/vnd.fujixerox.edmics-mmr' => 'mmr', - 'image/vnd.fujixerox.edmics-rlc' => 'rlc', - 'image/vnd.ms-modi' => 'mdi', - 'image/vnd.ms-photo' => 'wdp', - 'image/vnd.net-fpx' => 'npx', - 'image/vnd.wap.wbmp' => 'wbmp', - 'image/vnd.xiff' => 'xif', - 'image/webp' => 'webp', - 'image/x-3ds' => '3ds', - 'image/x-cmu-raster' => 'ras', - 'image/x-cmx' => 'cmx', - 'image/x-freehand' => ['fh', 'fhc', 'fh4', 'fh5', 'fh7'], - 'image/x-icon' => 'ico', - 'image/x-mrsid-image' => 'sid', - 'image/x-pcx' => 'pcx', - 'image/x-pict' => ['pic', 'pct'], - 'image/x-portable-anymap' => 'pnm', - 'image/x-portable-bitmap' => 'pbm', - 'image/x-portable-graymap' => 'pgm', - 'image/x-portable-pixmap' => 'ppm', - 'image/x-rgb' => 'rgb', - 'image/x-tga' => 'tga', - 'image/x-xbitmap' => 'xbm', - 'image/x-xpixmap' => 'xpm', - 'image/x-xwindowdump' => 'xwd', - 'message/rfc822' => ['eml', 'mime'], - 'model/iges' => ['igs', 'iges'], - 'model/mesh' => ['msh', 'mesh', 'silo'], - 'model/vnd.collada+xml' => 'dae', - 'model/vnd.dwf' => 'dwf', - 'model/vnd.gdl' => 'gdl', - 'model/vnd.gtw' => 'gtw', - 'model/vnd.mts' => 'mts', - 'model/vnd.vtu' => 'vtu', - 'model/vrml' => ['wrl', 'vrml'], - 'model/x3d+binary' => 'x3db', - 'model/x3d+vrml' => 'x3dv', - 'model/x3d+xml' => 'x3d', - 'text/cache-manifest' => 'appcache', - 'text/calendar' => ['ics', 'ifb'], - 'text/css' => 'css', - 'text/csv' => 'csv', - 'text/html' => ['html', 'htm'], - 'text/n3' => 'n3', - 'text/plain' => [ - 'txt', - 'text', - 'conf', - 'def', - 'list', - 'log', - 'in', - ], - 'text/prs.lines.tag' => 'dsc', - 'text/richtext' => 'rtx', - 'text/sgml' => ['sgml', 'sgm'], - 'text/tab-separated-values' => 'tsv', - 'text/troff' => [ - 't', - 'tr', - 'roff', - 'man', - 'me', - 'ms', - ], - 'text/turtle' => 'ttl', - 'text/uri-list' => ['uri', 'uris', 'urls'], - 'text/vcard' => 'vcard', - 'text/vnd.curl' => 'curl', - 'text/vnd.curl.dcurl' => 'dcurl', - 'text/vnd.curl.scurl' => 'scurl', - 'text/vnd.curl.mcurl' => 'mcurl', - 'text/vnd.dvb.subtitle' => 'sub', - 'text/vnd.fly' => 'fly', - 'text/vnd.fmi.flexstor' => 'flx', - 'text/vnd.graphviz' => 'gv', - 'text/vnd.in3d.3dml' => '3dml', - 'text/vnd.in3d.spot' => 'spot', - 'text/vnd.sun.j2me.app-descriptor' => 'jad', - 'text/vnd.wap.wml' => 'wml', - 'text/vnd.wap.wmlscript' => 'wmls', - 'text/x-asm' => ['s', 'asm'], - 'text/x-fortran' => ['f', 'for', 'f77', 'f90'], - 'text/x-java-source' => 'java', - 'text/x-opml' => 'opml', - 'text/x-pascal' => ['p', 'pas'], - 'text/x-nfo' => 'nfo', - 'text/x-setext' => 'etx', - 'text/x-sfv' => 'sfv', - 'text/x-uuencode' => 'uu', - 'text/x-vcalendar' => 'vcs', - 'text/x-vcard' => 'vcf', - 'video/3gpp' => '3gp', - 'video/3gpp2' => '3g2', - 'video/h261' => 'h261', - 'video/h263' => 'h263', - 'video/h264' => 'h264', - 'video/jpeg' => 'jpgv', - 'video/jpm' => ['jpm', 'jpgm'], - 'video/mj2' => 'mj2', - 'video/mp4' => 'mp4', - 'video/mpeg' => ['mpeg', 'mpg', 'mpe', 'm1v', 'm2v'], - 'video/ogg' => 'ogv', - 'video/quicktime' => ['qt', 'mov'], - 'video/vnd.dece.hd' => ['uvh', 'uvvh'], - 'video/vnd.dece.mobile' => ['uvm', 'uvvm'], - 'video/vnd.dece.pd' => ['uvp', 'uvvp'], - 'video/vnd.dece.sd' => ['uvs', 'uvvs'], - 'video/vnd.dece.video' => ['uvv', 'uvvv'], - 'video/vnd.dvb.file' => 'dvb', - 'video/vnd.fvt' => 'fvt', - 'video/vnd.mpegurl' => ['mxu', 'm4u'], - 'video/vnd.ms-playready.media.pyv' => 'pyv', - 'video/vnd.uvvu.mp4' => ['uvu', 'uvvu'], - 'video/vnd.vivo' => 'viv', - 'video/webm' => 'webm', - 'video/x-f4v' => 'f4v', - 'video/x-fli' => 'fli', - 'video/x-flv' => 'flv', - 'video/x-m4v' => 'm4v', - 'video/x-matroska' => ['mkv', 'mk3d', 'mks'], - 'video/x-mng' => 'mng', - 'video/x-ms-asf' => ['asf', 'asx'], - 'video/x-ms-vob' => 'vob', - 'video/x-ms-wm' => 'wm', - 'video/x-ms-wmv' => 'wmv', - 'video/x-ms-wmx' => 'wmx', - 'video/x-ms-wvx' => 'wvx', - 'video/x-msvideo' => 'avi', - 'video/x-sgi-movie' => 'movie', - ]; - - public function mimeType(): string - { - return array_rand($this->mimeTypes, 1); - } - - public function extension(): string - { - $extension = $this->mimeTypes[array_rand($this->mimeTypes, 1)]; - - return is_array($extension) ? $extension[array_rand($extension, 1)] : $extension; - } - - public function filePath(): string - { - return tempnam(sys_get_temp_dir(), 'faker'); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Number.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Number.php deleted file mode 100644 index 4334dcf..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Number.php +++ /dev/null @@ -1,83 +0,0 @@ -numberBetween(0, 9); - } - - public function randomDigitNot(int $except): int - { - $result = $this->numberBetween(0, 8); - - if ($result >= $except) { - ++$result; - } - - return $result; - } - - public function randomDigitNotZero(): int - { - return $this->numberBetween(1, 9); - } - - public function randomFloat(?int $nbMaxDecimals = null, float $min = 0, ?float $max = null): float - { - if (null === $nbMaxDecimals) { - $nbMaxDecimals = $this->randomDigit(); - } - - if (null === $max) { - $max = $this->randomNumber(); - - if ($min > $max) { - $max = $min; - } - } - - if ($min > $max) { - $tmp = $min; - $min = $max; - $max = $tmp; - } - - return round($min + $this->numberBetween() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); - } - - public function randomNumber(?int $nbDigits = null, bool $strict = false): int - { - if (null === $nbDigits) { - $nbDigits = $this->randomDigitNotZero(); - } - $max = 10 ** $nbDigits - 1; - - if ($max > mt_getrandmax()) { - throw new \InvalidArgumentException('randomNumber() can only generate numbers up to mt_getrandmax()'); - } - - if ($strict) { - return $this->numberBetween(10 ** ($nbDigits - 1), $max); - } - - return $this->numberBetween(0, $max); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Uuid.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Uuid.php deleted file mode 100644 index 4580460..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Uuid.php +++ /dev/null @@ -1,65 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - public function uuid3(): string - { - // fix for compatibility with 32bit architecture; each mt_rand call is restricted to 32bit - // two such calls will cause 64bits of randomness regardless of architecture - $seed = $this->numberExtension->numberBetween(0, 2147483647) . '#' . $this->numberExtension->numberBetween(0, 2147483647); - - // Hash the seed and convert to a byte array - $val = md5($seed, true); - $byte = array_values(unpack('C16', $val)); - - // extract fields from byte array - $tLo = ($byte[0] << 24) | ($byte[1] << 16) | ($byte[2] << 8) | $byte[3]; - $tMi = ($byte[4] << 8) | $byte[5]; - $tHi = ($byte[6] << 8) | $byte[7]; - $csLo = $byte[9]; - $csHi = $byte[8] & 0x3f | (1 << 7); - - // correct byte order for big edian architecture - if (pack('L', 0x6162797A) == pack('N', 0x6162797A)) { - $tLo = (($tLo & 0x000000ff) << 24) | (($tLo & 0x0000ff00) << 8) - | (($tLo & 0x00ff0000) >> 8) | (($tLo & 0xff000000) >> 24); - $tMi = (($tMi & 0x00ff) << 8) | (($tMi & 0xff00) >> 8); - $tHi = (($tHi & 0x00ff) << 8) | (($tHi & 0xff00) >> 8); - } - - // apply version number - $tHi &= 0x0fff; - $tHi |= (3 << 12); - - // cast to string - return sprintf( - '%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x', - $tLo, - $tMi, - $tHi, - $csHi, - $csLo, - $byte[10], - $byte[11], - $byte[12], - $byte[13], - $byte[14], - $byte[15], - ); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Version.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Version.php deleted file mode 100644 index 7c321e0..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Core/Version.php +++ /dev/null @@ -1,69 +0,0 @@ -numberExtension = $numberExtension ?: new Number(); - } - - /** - * Represents v2.0.0 of the semantic versioning: https://semver.org/spec/v2.0.0.html - */ - public function semver(bool $preRelease = false, bool $build = false): string - { - return sprintf( - '%d.%d.%d%s%s', - $this->numberExtension->numberBetween(0, 9), - $this->numberExtension->numberBetween(0, 99), - $this->numberExtension->numberBetween(0, 99), - $preRelease && $this->numberExtension->numberBetween(0, 1) === 1 ? '-' . $this->semverPreReleaseIdentifier() : '', - $build && $this->numberExtension->numberBetween(0, 1) === 1 ? '+' . $this->semverBuildIdentifier() : '', - ); - } - - /** - * Common pre-release identifier - */ - private function semverPreReleaseIdentifier(): string - { - $ident = Extension\Helper::randomElement($this->semverCommonPreReleaseIdentifiers); - - if ($this->numberExtension->numberBetween(0, 1) !== 1) { - return $ident; - } - - return $ident . '.' . $this->numberExtension->numberBetween(1, 99); - } - - /** - * Common random build identifier - */ - private function semverBuildIdentifier(): string - { - if ($this->numberExtension->numberBetween(0, 1) === 1) { - // short git revision syntax: https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection - return substr(sha1(Extension\Helper::lexify('??????')), 0, 7); - } - - // date syntax - return DateTime::date('YmdHis'); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/DefaultGenerator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/DefaultGenerator.php deleted file mode 100644 index 688f476..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/DefaultGenerator.php +++ /dev/null @@ -1,49 +0,0 @@ -default = $default; - } - - public function ext() - { - return $this; - } - - /** - * @param string $attribute - * - * @deprecated Use a method instead. - */ - public function __get($attribute) - { - trigger_deprecation('fakerphp/faker', '1.14', 'Accessing property "%s" is deprecated, use "%s()" instead.', $attribute, $attribute); - - return $this->default; - } - - /** - * @param string $method - * @param array $attributes - */ - public function __call($method, $attributes) - { - return $this->default; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Documentor.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Documentor.php deleted file mode 100644 index 280b832..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Documentor.php +++ /dev/null @@ -1,70 +0,0 @@ -generator = $generator; - } - - /** - * @return array - */ - public function getFormatters() - { - $formatters = []; - $providers = array_reverse($this->generator->getProviders()); - $providers[] = new Provider\Base($this->generator); - - foreach ($providers as $provider) { - $providerClass = get_class($provider); - $formatters[$providerClass] = []; - $refl = new \ReflectionObject($provider); - - foreach ($refl->getMethods(\ReflectionMethod::IS_PUBLIC) as $reflmethod) { - if ($reflmethod->getDeclaringClass()->getName() == 'Faker\Provider\Base' && $providerClass != 'Faker\Provider\Base') { - continue; - } - $methodName = $reflmethod->name; - - if ($reflmethod->isConstructor()) { - continue; - } - $parameters = []; - - foreach ($reflmethod->getParameters() as $reflparameter) { - $parameter = '$' . $reflparameter->getName(); - - if ($reflparameter->isDefaultValueAvailable()) { - $parameter .= ' = ' . var_export($reflparameter->getDefaultValue(), true); - } - $parameters[] = $parameter; - } - $parameters = $parameters ? '(' . implode(', ', $parameters) . ')' : ''; - - try { - $example = $this->generator->format($methodName); - } catch (\InvalidArgumentException $e) { - $example = ''; - } - - if (is_array($example)) { - $example = "array('" . implode("', '", $example) . "')"; - } elseif ($example instanceof \DateTime) { - $example = "DateTime('" . $example->format('Y-m-d H:i:s') . "')"; - } elseif ($example instanceof Generator || $example instanceof UniqueGenerator) { // modifier - $example = ''; - } else { - $example = var_export($example, true); - } - $formatters[$providerClass][$methodName . $parameters] = $example; - } - } - - return $formatters; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Extension/AddressExtension.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Extension/AddressExtension.php deleted file mode 100644 index 568ca37..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Extension/AddressExtension.php +++ /dev/null @@ -1,39 +0,0 @@ -generator = $generator; - - return $instance; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Extension/Helper.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Extension/Helper.php deleted file mode 100644 index 47200e9..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Extension/Helper.php +++ /dev/null @@ -1,106 +0,0 @@ -addProvider(new $providerClassName($generator)); - } - - return $generator; - } - - /** - * @param string $provider - * @param string $locale - * - * @return string - */ - protected static function getProviderClassname($provider, $locale = '') - { - if ($providerClass = self::findProviderClassname($provider, $locale)) { - return $providerClass; - } - - // fallback to default locale - if ($providerClass = self::findProviderClassname($provider, static::DEFAULT_LOCALE)) { - return $providerClass; - } - - // fallback to no locale - if ($providerClass = self::findProviderClassname($provider)) { - return $providerClass; - } - - throw new \InvalidArgumentException(sprintf('Unable to find provider "%s" with locale "%s"', $provider, $locale)); - } - - /** - * @param string $provider - * @param string $locale - * - * @return string|null - */ - protected static function findProviderClassname($provider, $locale = '') - { - $providerClass = 'Faker\\' . ($locale ? sprintf('Provider\%s\%s', $locale, $provider) : sprintf('Provider\%s', $provider)); - - if (class_exists($providerClass, true)) { - return $providerClass; - } - - return null; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Generator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Generator.php deleted file mode 100644 index d132031..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Generator.php +++ /dev/null @@ -1,985 +0,0 @@ -container = $container ?: Container\ContainerBuilder::withDefaultExtensions()->build(); - } - - /** - * @template T of Extension\Extension - * - * @param class-string $id - * - * @throws Extension\ExtensionNotFound - * - * @return T - */ - public function ext(string $id): Extension\Extension - { - if (!$this->container->has($id)) { - throw new Extension\ExtensionNotFound(sprintf( - 'No Faker extension with id "%s" was loaded.', - $id, - )); - } - - $extension = $this->container->get($id); - - if ($extension instanceof Extension\GeneratorAwareExtension) { - $extension = $extension->withGenerator($this); - } - - return $extension; - } - - public function addProvider($provider) - { - array_unshift($this->providers, $provider); - - $this->formatters = []; - } - - public function getProviders() - { - return $this->providers; - } - - /** - * With the unique generator you are guaranteed to never get the same two - * values. - * - * - * // will never return twice the same value - * $faker->unique()->randomElement(array(1, 2, 3)); - * - * - * @param bool $reset If set to true, resets the list of existing values - * @param int $maxRetries Maximum number of retries to find a unique value, - * After which an OverflowException is thrown. - * - * @throws \OverflowException When no unique value can be found by iterating $maxRetries times - * - * @return self A proxy class returning only non-existing values - */ - public function unique($reset = false, $maxRetries = 10000) - { - if ($reset || $this->uniqueGenerator === null) { - $this->uniqueGenerator = new UniqueGenerator($this, $maxRetries); - } - - return $this->uniqueGenerator; - } - - /** - * Get a value only some percentage of the time. - * - * @param float $weight A probability between 0 and 1, 0 means that we always get the default value. - * - * @return self - */ - public function optional(float $weight = 0.5, $default = null) - { - if ($weight > 1) { - trigger_deprecation('fakerphp/faker', '1.16', 'First argument ($weight) to method "optional()" must be between 0 and 1. You passed %f, we assume you meant %f.', $weight, $weight / 100); - $weight = $weight / 100; - } - - return new ChanceGenerator($this, $weight, $default); - } - - /** - * To make sure the value meet some criteria, pass a callable that verifies the - * output. If the validator fails, the generator will try again. - * - * The value validity is determined by a function passed as first argument. - * - * - * $values = array(); - * $evenValidator = function ($digit) { - * return $digit % 2 === 0; - * }; - * for ($i=0; $i < 10; $i++) { - * $values []= $faker->valid($evenValidator)->randomDigit; - * } - * print_r($values); // [0, 4, 8, 4, 2, 6, 0, 8, 8, 6] - * - * - * @param ?\Closure $validator A function returning true for valid values - * @param int $maxRetries Maximum number of retries to find a valid value, - * After which an OverflowException is thrown. - * - * @throws \OverflowException When no valid value can be found by iterating $maxRetries times - * - * @return self A proxy class returning only valid values - */ - public function valid(?\Closure $validator = null, int $maxRetries = 10000) - { - return new ValidGenerator($this, $validator, $maxRetries); - } - - public function seed($seed = null) - { - if ($seed === null) { - mt_srand(); - } else { - mt_srand((int) $seed, self::mode()); - } - } - - /** - * @see https://www.php.net/manual/en/migration83.deprecated.php#migration83.deprecated.random - */ - private static function mode(): int - { - if (PHP_VERSION_ID < 80300) { - return MT_RAND_PHP; - } - - return MT_RAND_MT19937; - } - - public function format($format, $arguments = []) - { - return call_user_func_array($this->getFormatter($format), $arguments); - } - - /** - * @param string $format - * - * @return callable - */ - public function getFormatter($format) - { - if (isset($this->formatters[$format])) { - return $this->formatters[$format]; - } - - if (method_exists($this, $format)) { - $this->formatters[$format] = [$this, $format]; - - return $this->formatters[$format]; - } - - // "Faker\Core\Barcode->ean13" - if (preg_match('|^([a-zA-Z0-9\\\]+)->([a-zA-Z0-9]+)$|', $format, $matches)) { - $this->formatters[$format] = [$this->ext($matches[1]), $matches[2]]; - - return $this->formatters[$format]; - } - - foreach ($this->providers as $provider) { - if (method_exists($provider, $format)) { - $this->formatters[$format] = [$provider, $format]; - - return $this->formatters[$format]; - } - } - - throw new \InvalidArgumentException(sprintf('Unknown format "%s"', $format)); - } - - /** - * Replaces tokens ('{{ tokenName }}') with the result from the token method call - * - * @param string $string String that needs to bet parsed - * - * @return string - */ - public function parse($string) - { - $callback = function ($matches) { - return $this->format($matches[1]); - }; - - return preg_replace_callback('/{{\s?(\w+|[\w\\\]+->\w+?)\s?}}/u', $callback, $string); - } - - /** - * Get a random MIME type - * - * @example 'video/avi' - */ - public function mimeType() - { - return $this->ext(Extension\FileExtension::class)->mimeType(); - } - - /** - * Get a random file extension (without a dot) - * - * @example avi - */ - public function fileExtension() - { - return $this->ext(Extension\FileExtension::class)->extension(); - } - - /** - * Get a full path to a new real file on the system. - */ - public function filePath() - { - return $this->ext(Extension\FileExtension::class)->filePath(); - } - - /** - * Get an actual blood type - * - * @example 'AB' - */ - public function bloodType(): string - { - return $this->ext(Extension\BloodExtension::class)->bloodType(); - } - - /** - * Get a random resis value - * - * @example '+' - */ - public function bloodRh(): string - { - return $this->ext(Extension\BloodExtension::class)->bloodRh(); - } - - /** - * Get a full blood group - * - * @example 'AB+' - */ - public function bloodGroup(): string - { - return $this->ext(Extension\BloodExtension::class)->bloodGroup(); - } - - /** - * Get a random EAN13 barcode. - * - * @example '4006381333931' - */ - public function ean13(): string - { - return $this->ext(Extension\BarcodeExtension::class)->ean13(); - } - - /** - * Get a random EAN8 barcode. - * - * @example '73513537' - */ - public function ean8(): string - { - return $this->ext(Extension\BarcodeExtension::class)->ean8(); - } - - /** - * Get a random ISBN-10 code - * - * @see http://en.wikipedia.org/wiki/International_Standard_Book_Number - * - * @example '4881416324' - */ - public function isbn10(): string - { - return $this->ext(Extension\BarcodeExtension::class)->isbn10(); - } - - /** - * Get a random ISBN-13 code - * - * @see http://en.wikipedia.org/wiki/International_Standard_Book_Number - * - * @example '9790404436093' - */ - public function isbn13(): string - { - return $this->ext(Extension\BarcodeExtension::class)->isbn13(); - } - - /** - * Returns a random number between $int1 and $int2 (any order) - * - * @example 79907610 - */ - public function numberBetween($int1 = 0, $int2 = 2147483647): int - { - return $this->ext(Extension\NumberExtension::class)->numberBetween((int) $int1, (int) $int2); - } - - /** - * Returns a random number between 0 and 9 - */ - public function randomDigit(): int - { - return $this->ext(Extension\NumberExtension::class)->randomDigit(); - } - - /** - * Generates a random digit, which cannot be $except - */ - public function randomDigitNot($except): int - { - return $this->ext(Extension\NumberExtension::class)->randomDigitNot((int) $except); - } - - /** - * Returns a random number between 1 and 9 - */ - public function randomDigitNotZero(): int - { - return $this->ext(Extension\NumberExtension::class)->randomDigitNotZero(); - } - - /** - * Return a random float number - * - * @example 48.8932 - */ - public function randomFloat($nbMaxDecimals = null, $min = 0, $max = null): float - { - return $this->ext(Extension\NumberExtension::class)->randomFloat( - $nbMaxDecimals !== null ? (int) $nbMaxDecimals : null, - (float) $min, - $max !== null ? (float) $max : null, - ); - } - - /** - * Returns a random integer with 0 to $nbDigits digits. - * - * The maximum value returned is mt_getrandmax() - * - * @param int|null $nbDigits Defaults to a random number between 1 and 9 - * @param bool $strict Whether the returned number should have exactly $nbDigits - * - * @example 79907610 - */ - public function randomNumber($nbDigits = null, $strict = false): int - { - return $this->ext(Extension\NumberExtension::class)->randomNumber( - $nbDigits !== null ? (int) $nbDigits : null, - (bool) $strict, - ); - } - - /** - * Get a version number in semantic versioning syntax 2.0.0. (https://semver.org/spec/v2.0.0.html) - * - * @param bool $preRelease Pre release parts may be randomly included - * @param bool $build Build parts may be randomly included - * - * @example 1.0.0 - * @example 1.0.0-alpha.1 - * @example 1.0.0-alpha.1+b71f04d - */ - public function semver(bool $preRelease = false, bool $build = false): string - { - return $this->ext(Extension\VersionExtension::class)->semver($preRelease, $build); - } - - /** - * @deprecated - */ - protected function callFormatWithMatches($matches) - { - trigger_deprecation('fakerphp/faker', '1.14', 'Protected method "callFormatWithMatches()" is deprecated and will be removed.'); - - return $this->format($matches[1]); - } - - /** - * @param string $attribute - * - * @deprecated Use a method instead. - */ - public function __get($attribute) - { - trigger_deprecation('fakerphp/faker', '1.14', 'Accessing property "%s" is deprecated, use "%s()" instead.', $attribute, $attribute); - - return $this->format($attribute); - } - - /** - * @param string $method - * @param array $attributes - */ - public function __call($method, $attributes) - { - return $this->format($method, $attributes); - } - - public function __destruct() - { - $this->seed(); - } - - public function __wakeup() - { - $this->formatters = []; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Guesser/Name.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Guesser/Name.php deleted file mode 100644 index 1f98c4f..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Guesser/Name.php +++ /dev/null @@ -1,180 +0,0 @@ -generator = $generator; - } - - /** - * @param string $name - * @param int|null $size Length of field, if known - * - * @return callable|null - */ - public function guessFormat($name, $size = null) - { - $name = Base::toLower($name); - $generator = $this->generator; - - if (preg_match('/^is[_A-Z]/', $name)) { - return static function () use ($generator) { - return $generator->boolean(); - }; - } - - if (preg_match('/(_a|A)t$/', $name)) { - return static function () use ($generator) { - return $generator->dateTime(); - }; - } - - switch (str_replace('_', '', $name)) { - case 'firstname': - return static function () use ($generator) { - return $generator->firstName(); - }; - - case 'lastname': - return static function () use ($generator) { - return $generator->lastName(); - }; - - case 'username': - case 'login': - return static function () use ($generator) { - return $generator->userName(); - }; - - case 'email': - case 'emailaddress': - return static function () use ($generator) { - return $generator->email(); - }; - - case 'phonenumber': - case 'phone': - case 'telephone': - case 'telnumber': - return static function () use ($generator) { - return $generator->phoneNumber(); - }; - - case 'address': - return static function () use ($generator) { - return $generator->address(); - }; - - case 'city': - case 'town': - return static function () use ($generator) { - return $generator->city(); - }; - - case 'streetaddress': - return static function () use ($generator) { - return $generator->streetAddress(); - }; - - case 'postcode': - case 'zipcode': - return static function () use ($generator) { - return $generator->postcode(); - }; - - case 'state': - return static function () use ($generator) { - return $generator->state(); - }; - - case 'county': - if ($this->generator->locale == 'en_US') { - return static function () use ($generator) { - return sprintf('%s County', $generator->city()); - }; - } - - return static function () use ($generator) { - return $generator->state(); - }; - - case 'country': - switch ($size) { - case 2: - return static function () use ($generator) { - return $generator->countryCode(); - }; - - case 3: - return static function () use ($generator) { - return $generator->countryISOAlpha3(); - }; - - case 5: - case 6: - return static function () use ($generator) { - return $generator->locale(); - }; - - default: - return static function () use ($generator) { - return $generator->country(); - }; - } - - break; - - case 'locale': - return static function () use ($generator) { - return $generator->locale(); - }; - - case 'currency': - case 'currencycode': - return static function () use ($generator) { - return $generator->currencyCode(); - }; - - case 'url': - case 'website': - return static function () use ($generator) { - return $generator->url(); - }; - - case 'company': - case 'companyname': - case 'employer': - return static function () use ($generator) { - return $generator->company(); - }; - - case 'title': - if ($size !== null && $size <= 10) { - return static function () use ($generator) { - return $generator->title(); - }; - } - - return static function () use ($generator) { - return $generator->sentence(); - }; - - case 'body': - case 'summary': - case 'article': - case 'description': - return static function () use ($generator) { - return $generator->text(); - }; - } - - return null; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php deleted file mode 100644 index c2a30e6..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php +++ /dev/null @@ -1,79 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat($column, $table) - { - $generator = $this->generator; - $schema = $table->schema(); - - switch ($schema->columnType($column)) { - case 'boolean': - return static function () use ($generator) { - return $generator->boolean; - }; - - case 'integer': - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case 'biginteger': - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case 'decimal': - case 'float': - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case 'uuid': - return static function () use ($generator) { - return $generator->uuid(); - }; - - case 'string': - if (method_exists($schema, 'getColumn')) { - $columnData = $schema->getColumn($column); - } else { - $columnData = $schema->column($column); - } - $length = $columnData['length']; - - return static function () use ($generator, $length) { - return $generator->text($length); - }; - - case 'text': - return static function () use ($generator) { - return $generator->text(); - }; - - case 'date': - case 'datetime': - case 'timestamp': - case 'time': - return static function () use ($generator) { - return $generator->datetime(); - }; - - case 'binary': - default: - return null; - } - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/CakePHP/EntityPopulator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/CakePHP/EntityPopulator.php deleted file mode 100644 index cd9890b..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/CakePHP/EntityPopulator.php +++ /dev/null @@ -1,173 +0,0 @@ -class = $class; - } - - /** - * @param string $name - */ - public function __get($name) - { - return $this->{$name}; - } - - /** - * @param string $name - */ - public function __set($name, $value) - { - $this->{$name} = $value; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - public function mergeModifiersWith($modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessColumnFormatters($populator) - { - $formatters = []; - $class = $this->class; - $table = $this->getTable($class); - $schema = $table->schema(); - $pk = $schema->primaryKey(); - $guessers = $populator->getGuessers() + ['ColumnTypeGuesser' => new ColumnTypeGuesser($populator->getGenerator())]; - $isForeignKey = static function ($column) use ($table) { - foreach ($table->associations()->type('BelongsTo') as $assoc) { - if ($column == $assoc->foreignKey()) { - return true; - } - } - - return false; - }; - - foreach ($schema->columns() as $column) { - if ($column == $pk[0] || $isForeignKey($column)) { - continue; - } - - foreach ($guessers as $guesser) { - if ($formatter = $guesser->guessFormat($column, $table)) { - $formatters[$column] = $formatter; - - break; - } - } - } - - return $formatters; - } - - /** - * @return array - */ - public function guessModifiers() - { - $modifiers = []; - $table = $this->getTable($this->class); - - $belongsTo = $table->associations()->type('BelongsTo'); - - foreach ($belongsTo as $assoc) { - $modifiers['belongsTo' . $assoc->name()] = function ($data, $insertedEntities) use ($assoc) { - $table = $assoc->target(); - $foreignModel = $table->alias(); - - $foreignKeys = []; - - if (!empty($insertedEntities[$foreignModel])) { - $foreignKeys = $insertedEntities[$foreignModel]; - } else { - $foreignKeys = $table->find('all') - ->select(['id']) - ->map(static function ($row) { - return $row->id; - }) - ->toArray(); - } - - if (empty($foreignKeys)) { - throw new \Exception(sprintf('%s belongsTo %s, which seems empty at this point.', $this->getTable($this->class)->table(), $assoc->table())); - } - - $foreignKey = $foreignKeys[array_rand($foreignKeys)]; - $data[$assoc->foreignKey()] = $foreignKey; - - return $data; - }; - } - - // TODO check if TreeBehavior attached to modify lft/rgt cols - - return $modifiers; - } - - /** - * @param array $options - */ - public function execute($class, $insertedEntities, $options = []) - { - $table = $this->getTable($class); - $entity = $table->newEntity(); - - foreach ($this->columnFormatters as $column => $format) { - if (null !== $format) { - $entity->{$column} = is_callable($format) ? $format($insertedEntities, $table) : $format; - } - } - - foreach ($this->modifiers as $modifier) { - $entity = $modifier($entity, $insertedEntities); - } - - if (!$entity = $table->save($entity, $options)) { - throw new \RuntimeException("Failed saving $class record"); - } - - $pk = $table->primaryKey(); - - if (is_string($pk)) { - return $entity->{$pk}; - } - - return $entity->{$pk[0]}; - } - - public function setConnection($name) - { - $this->connectionName = $name; - } - - protected function getTable($class) - { - $options = []; - - if (!empty($this->connectionName)) { - $options['connection'] = $this->connectionName; - } - - return TableRegistry::get($class, $options); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/CakePHP/Populator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/CakePHP/Populator.php deleted file mode 100644 index ac195fb..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/CakePHP/Populator.php +++ /dev/null @@ -1,113 +0,0 @@ -generator = $generator; - } - - /** - * @return \Faker\Generator - */ - public function getGenerator() - { - return $this->generator; - } - - /** - * @return array - */ - public function getGuessers() - { - return $this->guessers; - } - - /** - * @return $this - */ - public function removeGuesser($name) - { - if ($this->guessers[$name]) { - unset($this->guessers[$name]); - } - - return $this; - } - - /** - * @throws \Exception - * - * @return $this - */ - public function addGuesser($class) - { - if (!is_object($class)) { - $class = new $class($this->generator); - } - - if (!method_exists($class, 'guessFormat')) { - throw new \Exception('Missing required custom guesser method: ' . get_class($class) . '::guessFormat()'); - } - - $this->guessers[get_class($class)] = $class; - - return $this; - } - - /** - * @param array $customColumnFormatters - * @param array $customModifiers - * - * @return $this - */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) - { - if (!$entity instanceof EntityPopulator) { - $entity = new EntityPopulator($entity); - } - - $entity->columnFormatters = $entity->guessColumnFormatters($this); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - - $entity->modifiers = $entity->guessModifiers($this); - - if ($customModifiers) { - $entity->mergeModifiersWith($customModifiers); - } - - $class = $entity->class; - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - - return $this; - } - - /** - * @param array $options - * - * @return array - */ - public function execute($options = []) - { - $insertedEntities = []; - - foreach ($this->quantities as $class => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute($class, $insertedEntities, $options); - } - } - - return $insertedEntities; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php deleted file mode 100644 index 024d8a9..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php +++ /dev/null @@ -1,91 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat($fieldName, ClassMetadata $class) - { - $generator = $this->generator; - $type = $class->getTypeOfField($fieldName); - - switch ($type) { - case 'boolean': - return static function () use ($generator) { - return $generator->boolean(); - }; - - case 'decimal': - $size = $class->fieldMappings[$fieldName]['precision'] ?? 2; - - return static function () use ($generator, $size) { - return $generator->randomNumber($size + 2) / 100; - }; - - case 'smallint': - return static function () use ($generator) { - return $generator->numberBetween(0, 65535); - }; - - case 'integer': - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case 'bigint': - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case 'float': - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case 'string': - $size = $class->fieldMappings[$fieldName]['length'] ?? 255; - - return static function () use ($generator, $size) { - return $generator->text($size); - }; - - case 'text': - return static function () use ($generator) { - return $generator->text(); - }; - - case 'datetime': - case 'date': - case 'time': - return static function () use ($generator) { - return $generator->datetime(); - }; - - case 'datetime_immutable': - case 'date_immutable': - case 'time_immutable': - return static function () use ($generator) { - return \DateTimeImmutable::createFromMutable($generator->datetime); - }; - - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/EntityPopulator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/EntityPopulator.php deleted file mode 100644 index 4792399..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/EntityPopulator.php +++ /dev/null @@ -1,248 +0,0 @@ -class = $class; - } - - /** - * @return string - */ - public function getClass() - { - return $this->class->getName(); - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - public function setModifiers(array $modifiers) - { - $this->modifiers = $modifiers; - } - - /** - * @return array - */ - public function getModifiers() - { - return $this->modifiers; - } - - public function mergeModifiersWith(array $modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessColumnFormatters(\Faker\Generator $generator) - { - $formatters = []; - $nameGuesser = new \Faker\Guesser\Name($generator); - $columnTypeGuesser = new ColumnTypeGuesser($generator); - - foreach ($this->class->getFieldNames() as $fieldName) { - if ($this->class->isIdentifier($fieldName) || !$this->class->hasField($fieldName)) { - continue; - } - - $size = $this->class->fieldMappings[$fieldName]['length'] ?? null; - - if ($formatter = $nameGuesser->guessFormat($fieldName, $size)) { - $formatters[$fieldName] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($fieldName, $this->class)) { - $formatters[$fieldName] = $formatter; - - continue; - } - } - - foreach ($this->class->getAssociationNames() as $assocName) { - if ($this->class->isCollectionValuedAssociation($assocName)) { - continue; - } - - $relatedClass = $this->class->getAssociationTargetClass($assocName); - - $unique = $optional = false; - - if ($this->class instanceof \Doctrine\ORM\Mapping\ClassMetadata) { - $mappings = $this->class->getAssociationMappings(); - - foreach ($mappings as $mapping) { - if ($mapping['targetEntity'] == $relatedClass) { - if ($mapping['type'] == \Doctrine\ORM\Mapping\ClassMetadata::ONE_TO_ONE) { - $unique = true; - $optional = $mapping['joinColumns'][0]['nullable'] ?? false; - - break; - } - } - } - } elseif ($this->class instanceof \Doctrine\ODM\MongoDB\Mapping\ClassMetadata) { - $mappings = $this->class->associationMappings; - - foreach ($mappings as $mapping) { - if ($mapping['targetDocument'] == $relatedClass) { - if ($mapping['type'] == \Doctrine\ODM\MongoDB\Mapping\ClassMetadata::ONE && $mapping['association'] == \Doctrine\ODM\MongoDB\Mapping\ClassMetadata::REFERENCE_ONE) { - $unique = true; - $optional = $mapping['nullable'] ?? false; - - break; - } - } - } - } - - $index = 0; - $formatters[$assocName] = static function ($inserted) use ($relatedClass, &$index, $unique, $optional, $generator) { - if (isset($inserted[$relatedClass])) { - if ($unique) { - $related = null; - - if (isset($inserted[$relatedClass][$index]) || !$optional) { - $related = $inserted[$relatedClass][$index]; - } - - ++$index; - - return $related; - } - - return $generator->randomElement($inserted[$relatedClass]); - } - - return null; - }; - } - - return $formatters; - } - - /** - * Insert one new record using the Entity class. - * - * @param bool $generateId - * - * @return EntityPopulator - */ - public function execute(ObjectManager $manager, $insertedEntities, $generateId = false) - { - $obj = $this->class->newInstance(); - - $this->fillColumns($obj, $insertedEntities); - $this->callMethods($obj, $insertedEntities); - - if ($generateId) { - $idsName = $this->class->getIdentifier(); - - foreach ($idsName as $idName) { - $id = $this->generateId($obj, $idName, $manager); - $this->class->reflFields[$idName]->setValue($obj, $id); - } - } - - $manager->persist($obj); - - return $obj; - } - - private function fillColumns($obj, $insertedEntities): void - { - foreach ($this->columnFormatters as $field => $format) { - if (null !== $format) { - // Add some extended debugging information to any errors thrown by the formatter - try { - $value = is_callable($format) ? $format($insertedEntities, $obj) : $format; - } catch (\InvalidArgumentException $ex) { - throw new \InvalidArgumentException(sprintf( - 'Failed to generate a value for %s::%s: %s', - get_class($obj), - $field, - $ex->getMessage(), - )); - } - // Try a standard setter if it's available, otherwise fall back on reflection - $setter = sprintf('set%s', ucfirst($field)); - - if (is_callable([$obj, $setter])) { - $obj->$setter($value); - } else { - $this->class->reflFields[$field]->setValue($obj, $value); - } - } - } - } - - private function callMethods($obj, $insertedEntities): void - { - foreach ($this->getModifiers() as $modifier) { - $modifier($obj, $insertedEntities); - } - } - - /** - * @return int - */ - private function generateId($obj, $column, ObjectManager $manager) - { - $repository = $manager->getRepository(get_class($obj)); - $result = $repository->createQueryBuilder('e') - ->select(sprintf('e.%s', $column)) - ->getQuery() - ->execute(); - $ids = array_map('current', $result->toArray()); - - do { - $id = mt_rand(); - } while (in_array($id, $ids, false)); - - return $id; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php deleted file mode 100644 index 61d4171..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/Populator.php +++ /dev/null @@ -1,126 +0,0 @@ -generator = $generator; - $this->manager = $manager; - $this->batchSize = $batchSize; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param mixed $entity A Doctrine classname, or a \Faker\ORM\Doctrine\EntityPopulator instance - * @param int $number The number of entities to populate - */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = [], $generateId = false) - { - if (!$entity instanceof \Faker\ORM\Doctrine\EntityPopulator) { - if (null === $this->manager) { - throw new \InvalidArgumentException('No entity manager passed to Doctrine Populator.'); - } - $entity = new \Faker\ORM\Doctrine\EntityPopulator($this->manager->getClassMetadata($entity)); - } - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->mergeModifiersWith($customModifiers); - $this->generateId[$entity->getClass()] = $generateId; - - $class = $entity->getClass(); - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * Please note that large amounts of data will result in more memory usage since the the Populator will return - * all newly created primary keys after executing. - * - * @param ObjectManager|null $entityManager A Doctrine connection object - * - * @return array A list of the inserted PKs - */ - public function execute($entityManager = null) - { - if (null === $entityManager) { - $entityManager = $this->manager; - } - - if (null === $entityManager) { - throw new \InvalidArgumentException('No entity manager passed to Doctrine Populator.'); - } - - $insertedEntities = []; - - foreach ($this->quantities as $class => $number) { - $generateId = $this->generateId[$class]; - - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute( - $entityManager, - $insertedEntities, - $generateId, - ); - - if (count($insertedEntities) % $this->batchSize === 0) { - $entityManager->flush(); - } - } - $entityManager->flush(); - } - - return $insertedEntities; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/backward-compatibility.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/backward-compatibility.php deleted file mode 100644 index 6f545f8..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Doctrine/backward-compatibility.php +++ /dev/null @@ -1,11 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat($field) - { - $generator = $this->generator; - - switch ($field['type']) { - case 'boolean': - return static function () use ($generator) { - return $generator->boolean; - }; - - case 'integer': - return static function () use ($generator) { - return $generator->numberBetween(0, 4294967295); - }; - - case 'float': - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case 'string': - return static function () use ($generator) { - return $generator->text(255); - }; - - case 'date': - return static function () use ($generator) { - return $generator->dateTime; - }; - - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Mandango/EntityPopulator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Mandango/EntityPopulator.php deleted file mode 100644 index 515ab7b..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Mandango/EntityPopulator.php +++ /dev/null @@ -1,123 +0,0 @@ -class = $class; - } - - /** - * @return string - */ - public function getClass() - { - return $this->class; - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - /** - * @return array - */ - public function guessColumnFormatters(\Faker\Generator $generator, Mandango $mandango) - { - $formatters = []; - $nameGuesser = new \Faker\Guesser\Name($generator); - $columnTypeGuesser = new \Faker\ORM\Mandango\ColumnTypeGuesser($generator); - - $metadata = $mandango->getMetadata($this->class); - - // fields - foreach ($metadata['fields'] as $fieldName => $field) { - if ($formatter = $nameGuesser->guessFormat($fieldName)) { - $formatters[$fieldName] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($field)) { - $formatters[$fieldName] = $formatter; - - continue; - } - } - - // references - foreach (array_merge($metadata['referencesOne'], $metadata['referencesMany']) as $referenceName => $reference) { - if (!isset($reference['class'])) { - continue; - } - $referenceClass = $reference['class']; - - $formatters[$referenceName] = static function ($insertedEntities) use ($referenceClass) { - if (isset($insertedEntities[$referenceClass])) { - return Base::randomElement($insertedEntities[$referenceClass]); - } - - return null; - }; - } - - return $formatters; - } - - /** - * Insert one new record using the Entity class. - */ - public function execute(Mandango $mandango, $insertedEntities) - { - $metadata = $mandango->getMetadata($this->class); - - $obj = $mandango->create($this->class); - - foreach ($this->columnFormatters as $column => $format) { - if (null !== $format) { - $value = is_callable($format) ? $format($insertedEntities, $obj) : $format; - - if (isset($metadata['fields'][$column]) - || isset($metadata['referencesOne'][$column])) { - $obj->set($column, $value); - } - - if (isset($metadata['referencesMany'][$column])) { - $adder = 'add' . ucfirst($column); - $obj->$adder($value); - } - } - } - $mandango->persist($obj); - - return $obj; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Mandango/Populator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Mandango/Populator.php deleted file mode 100644 index de6c3b8..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Mandango/Populator.php +++ /dev/null @@ -1,63 +0,0 @@ -generator = $generator; - $this->mandango = $mandango; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel\EntityPopulator instance - * @param int $number The number of entities to populate - */ - public function addEntity($entity, $number, $customColumnFormatters = []) - { - if (!$entity instanceof \Faker\ORM\Mandango\EntityPopulator) { - $entity = new \Faker\ORM\Mandango\EntityPopulator($entity); - } - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator, $this->mandango)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $class = $entity->getClass(); - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * @return array A list of the inserted entities. - */ - public function execute() - { - $insertedEntities = []; - - foreach ($this->quantities as $class => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute($this->mandango, $insertedEntities); - } - } - $this->mandango->flush(); - - return $insertedEntities; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel/ColumnTypeGuesser.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel/ColumnTypeGuesser.php deleted file mode 100644 index 3d8a9a1..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel/ColumnTypeGuesser.php +++ /dev/null @@ -1,109 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat(\ColumnMap $column) - { - $generator = $this->generator; - - if ($column->isTemporal()) { - if ($column->isEpochTemporal()) { - return static function () use ($generator) { - return $generator->dateTime; - }; - } - - return static function () use ($generator) { - return $generator->dateTimeAD; - }; - } - $type = $column->getType(); - - switch ($type) { - case \PropelColumnTypes::BOOLEAN: - case \PropelColumnTypes::BOOLEAN_EMU: - return static function () use ($generator) { - return $generator->boolean; - }; - - case \PropelColumnTypes::NUMERIC: - case \PropelColumnTypes::DECIMAL: - $size = $column->getSize(); - - return static function () use ($generator, $size) { - return $generator->randomNumber($size + 2) / 100; - }; - - case \PropelColumnTypes::TINYINT: - return static function () use ($generator) { - return $generator->numberBetween(0, 127); - }; - - case \PropelColumnTypes::SMALLINT: - return static function () use ($generator) { - return $generator->numberBetween(0, 32767); - }; - - case \PropelColumnTypes::INTEGER: - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case \PropelColumnTypes::BIGINT: - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case \PropelColumnTypes::FLOAT: - case \PropelColumnTypes::DOUBLE: - case \PropelColumnTypes::REAL: - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case \PropelColumnTypes::CHAR: - case \PropelColumnTypes::VARCHAR: - case \PropelColumnTypes::BINARY: - case \PropelColumnTypes::VARBINARY: - $size = $column->getSize(); - - return static function () use ($generator, $size) { - return $generator->text($size); - }; - - case \PropelColumnTypes::LONGVARCHAR: - case \PropelColumnTypes::LONGVARBINARY: - case \PropelColumnTypes::CLOB: - case \PropelColumnTypes::CLOB_EMU: - case \PropelColumnTypes::BLOB: - return static function () use ($generator) { - return $generator->text; - }; - - case \PropelColumnTypes::ENUM: - $valueSet = $column->getValueSet(); - - return static function () use ($generator, $valueSet) { - return $generator->randomElement($valueSet); - }; - - case \PropelColumnTypes::OBJECT: - case \PropelColumnTypes::PHP_ARRAY: - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel/EntityPopulator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel/EntityPopulator.php deleted file mode 100644 index f5af75c..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel/EntityPopulator.php +++ /dev/null @@ -1,204 +0,0 @@ -class = $class; - } - - /** - * @return string - */ - public function getClass() - { - return $this->class; - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - /** - * @return array - */ - public function guessColumnFormatters(\Faker\Generator $generator) - { - $formatters = []; - $class = $this->class; - $peerClass = $class::PEER; - $tableMap = $peerClass::getTableMap(); - $nameGuesser = new \Faker\Guesser\Name($generator); - $columnTypeGuesser = new \Faker\ORM\Propel\ColumnTypeGuesser($generator); - - foreach ($tableMap->getColumns() as $columnMap) { - // skip behavior columns, handled by modifiers - if ($this->isColumnBehavior($columnMap)) { - continue; - } - - if ($columnMap->isForeignKey()) { - $relatedClass = $columnMap->getRelation()->getForeignTable()->getClassname(); - $formatters[$columnMap->getPhpName()] = static function ($inserted) use ($relatedClass, $generator) { - return isset($inserted[$relatedClass]) ? $generator->randomElement($inserted[$relatedClass]) : null; - }; - - continue; - } - - if ($columnMap->isPrimaryKey()) { - continue; - } - - if ($formatter = $nameGuesser->guessFormat($columnMap->getPhpName(), $columnMap->getSize())) { - $formatters[$columnMap->getPhpName()] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($columnMap)) { - $formatters[$columnMap->getPhpName()] = $formatter; - - continue; - } - } - - return $formatters; - } - - /** - * @return bool - */ - protected function isColumnBehavior(\ColumnMap $columnMap) - { - foreach ($columnMap->getTable()->getBehaviors() as $name => $params) { - $columnName = Base::toLower($columnMap->getName()); - - switch ($name) { - case 'nested_set': - $columnNames = [$params['left_column'], $params['right_column'], $params['level_column']]; - - if (in_array($columnName, $columnNames, false)) { - return true; - } - - break; - - case 'timestampable': - $columnNames = [$params['create_column'], $params['update_column']]; - - if (in_array($columnName, $columnNames, false)) { - return true; - } - - break; - } - } - - return false; - } - - public function setModifiers($modifiers) - { - $this->modifiers = $modifiers; - } - - /** - * @return array - */ - public function getModifiers() - { - return $this->modifiers; - } - - public function mergeModifiersWith($modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessModifiers(\Faker\Generator $generator) - { - $modifiers = []; - $class = $this->class; - $peerClass = $class::PEER; - $tableMap = $peerClass::getTableMap(); - - foreach ($tableMap->getBehaviors() as $name => $params) { - switch ($name) { - case 'nested_set': - $modifiers['nested_set'] = static function ($obj, $inserted) use ($class, $generator): void { - if (isset($inserted[$class])) { - $queryClass = $class . 'Query'; - $parent = $queryClass::create()->findPk($generator->randomElement($inserted[$class])); - $obj->insertAsLastChildOf($parent); - } else { - $obj->makeRoot(); - } - }; - - break; - - case 'sortable': - $modifiers['sortable'] = static function ($obj, $inserted) use ($class, $generator): void { - $obj->insertAtRank($generator->numberBetween(1, count($inserted[$class] ?? []) + 1)); - }; - - break; - } - } - - return $modifiers; - } - - /** - * Insert one new record using the Entity class. - */ - public function execute($con, $insertedEntities) - { - $obj = new $this->class(); - - foreach ($this->getColumnFormatters() as $column => $format) { - if (null !== $format) { - $obj->setByName($column, is_callable($format) ? $format($insertedEntities, $obj) : $format); - } - } - - foreach ($this->getModifiers() as $modifier) { - $modifier($obj, $insertedEntities); - } - $obj->save($con); - - return $obj->getPrimaryKey(); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel/Populator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel/Populator.php deleted file mode 100644 index e3d4298..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel/Populator.php +++ /dev/null @@ -1,90 +0,0 @@ -generator = $generator; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel\EntityPopulator instance - * @param int $number The number of entities to populate - */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) - { - if (!$entity instanceof \Faker\ORM\Propel\EntityPopulator) { - $entity = new \Faker\ORM\Propel\EntityPopulator($entity); - } - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->setModifiers($entity->guessModifiers($this->generator)); - - if ($customModifiers) { - $entity->mergeModifiersWith($customModifiers); - } - $class = $entity->getClass(); - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * @param PropelPDO $con A Propel connection object - * - * @return array A list of the inserted PKs - */ - public function execute($con = null) - { - if (null === $con) { - $con = $this->getConnection(); - } - $isInstancePoolingEnabled = \Propel::isInstancePoolingEnabled(); - \Propel::disableInstancePooling(); - $insertedEntities = []; - $con->beginTransaction(); - - foreach ($this->quantities as $class => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute($con, $insertedEntities); - } - } - $con->commit(); - - if ($isInstancePoolingEnabled) { - \Propel::enableInstancePooling(); - } - - return $insertedEntities; - } - - protected function getConnection() - { - // use the first connection available - $class = key($this->entities); - - if (!$class) { - throw new \RuntimeException('No class found from entities. Did you add entities to the Populator ?'); - } - - $peer = $class::PEER; - - return \Propel::getConnection($peer::DATABASE_NAME, \Propel::CONNECTION_WRITE); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel2/ColumnTypeGuesser.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel2/ColumnTypeGuesser.php deleted file mode 100644 index 4c08e0a..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel2/ColumnTypeGuesser.php +++ /dev/null @@ -1,112 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat(ColumnMap $column) - { - $generator = $this->generator; - - if ($column->isTemporal()) { - if ($column->getType() == PropelTypes::BU_DATE || $column->getType() == PropelTypes::BU_TIMESTAMP) { - return static function () use ($generator) { - return $generator->dateTime; - }; - } - - return static function () use ($generator) { - return $generator->dateTimeAD; - }; - } - $type = $column->getType(); - - switch ($type) { - case PropelTypes::BOOLEAN: - case PropelTypes::BOOLEAN_EMU: - return static function () use ($generator) { - return $generator->boolean; - }; - - case PropelTypes::NUMERIC: - case PropelTypes::DECIMAL: - $size = $column->getSize(); - - return static function () use ($generator, $size) { - return $generator->randomNumber($size + 2) / 100; - }; - - case PropelTypes::TINYINT: - return static function () use ($generator) { - return $generator->numberBetween(0, 127); - }; - - case PropelTypes::SMALLINT: - return static function () use ($generator) { - return $generator->numberBetween(0, 32767); - }; - - case PropelTypes::INTEGER: - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case PropelTypes::BIGINT: - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case PropelTypes::FLOAT: - case PropelTypes::DOUBLE: - case PropelTypes::REAL: - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case PropelTypes::CHAR: - case PropelTypes::VARCHAR: - case PropelTypes::BINARY: - case PropelTypes::VARBINARY: - $size = $column->getSize(); - - return static function () use ($generator, $size) { - return $generator->text($size); - }; - - case PropelTypes::LONGVARCHAR: - case PropelTypes::LONGVARBINARY: - case PropelTypes::CLOB: - case PropelTypes::CLOB_EMU: - case PropelTypes::BLOB: - return static function () use ($generator) { - return $generator->text; - }; - - case PropelTypes::ENUM: - $valueSet = $column->getValueSet(); - - return static function () use ($generator, $valueSet) { - return $generator->randomElement($valueSet); - }; - - case PropelTypes::OBJECT: - case PropelTypes::PHP_ARRAY: - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel2/EntityPopulator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel2/EntityPopulator.php deleted file mode 100644 index 44804e3..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel2/EntityPopulator.php +++ /dev/null @@ -1,207 +0,0 @@ -class = $class; - } - - /** - * @return string - */ - public function getClass() - { - return $this->class; - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - /** - * @return array - */ - public function guessColumnFormatters(\Faker\Generator $generator) - { - $formatters = []; - $class = $this->class; - $peerClass = $class::TABLE_MAP; - $tableMap = $peerClass::getTableMap(); - $nameGuesser = new \Faker\Guesser\Name($generator); - $columnTypeGuesser = new \Faker\ORM\Propel2\ColumnTypeGuesser($generator); - - foreach ($tableMap->getColumns() as $columnMap) { - // skip behavior columns, handled by modifiers - if ($this->isColumnBehavior($columnMap)) { - continue; - } - - if ($columnMap->isForeignKey()) { - $relatedClass = $columnMap->getRelation()->getForeignTable()->getClassname(); - $formatters[$columnMap->getPhpName()] = static function ($inserted) use ($relatedClass, $generator) { - $relatedClass = trim($relatedClass, '\\'); - - return isset($inserted[$relatedClass]) ? $generator->randomElement($inserted[$relatedClass]) : null; - }; - - continue; - } - - if ($columnMap->isPrimaryKey()) { - continue; - } - - if ($formatter = $nameGuesser->guessFormat($columnMap->getPhpName(), $columnMap->getSize())) { - $formatters[$columnMap->getPhpName()] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($columnMap)) { - $formatters[$columnMap->getPhpName()] = $formatter; - - continue; - } - } - - return $formatters; - } - - /** - * @return bool - */ - protected function isColumnBehavior(ColumnMap $columnMap) - { - foreach ($columnMap->getTable()->getBehaviors() as $name => $params) { - $columnName = Base::toLower($columnMap->getName()); - - switch ($name) { - case 'nested_set': - $columnNames = [$params['left_column'], $params['right_column'], $params['level_column']]; - - if (in_array($columnName, $columnNames, false)) { - return true; - } - - break; - - case 'timestampable': - $columnNames = [$params['create_column'], $params['update_column']]; - - if (in_array($columnName, $columnNames, false)) { - return true; - } - - break; - } - } - - return false; - } - - public function setModifiers($modifiers) - { - $this->modifiers = $modifiers; - } - - /** - * @return array - */ - public function getModifiers() - { - return $this->modifiers; - } - - public function mergeModifiersWith($modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessModifiers(\Faker\Generator $generator) - { - $modifiers = []; - $class = $this->class; - $peerClass = $class::TABLE_MAP; - $tableMap = $peerClass::getTableMap(); - - foreach ($tableMap->getBehaviors() as $name => $params) { - switch ($name) { - case 'nested_set': - $modifiers['nested_set'] = static function ($obj, $inserted) use ($class, $generator): void { - if (isset($inserted[$class])) { - $queryClass = $class . 'Query'; - $parent = $queryClass::create()->findPk($generator->randomElement($inserted[$class])); - $obj->insertAsLastChildOf($parent); - } else { - $obj->makeRoot(); - } - }; - - break; - - case 'sortable': - $modifiers['sortable'] = static function ($obj, $inserted) use ($class, $generator): void { - $obj->insertAtRank($generator->numberBetween(1, count($inserted[$class] ?? []) + 1)); - }; - - break; - } - } - - return $modifiers; - } - - /** - * Insert one new record using the Entity class. - */ - public function execute($con, $insertedEntities) - { - $obj = new $this->class(); - - foreach ($this->getColumnFormatters() as $column => $format) { - if (null !== $format) { - $obj->setByName($column, is_callable($format) ? $format($insertedEntities, $obj) : $format); - } - } - - foreach ($this->getModifiers() as $modifier) { - $modifier($obj, $insertedEntities); - } - $obj->save($con); - - return $obj->getPrimaryKey(); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel2/Populator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel2/Populator.php deleted file mode 100644 index 7698f80..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Propel2/Populator.php +++ /dev/null @@ -1,93 +0,0 @@ -generator = $generator; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel2\EntityPopulator instance - * @param int $number The number of entities to populate - */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) - { - if (!$entity instanceof \Faker\ORM\Propel2\EntityPopulator) { - $entity = new \Faker\ORM\Propel2\EntityPopulator($entity); - } - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->setModifiers($entity->guessModifiers($this->generator)); - - if ($customModifiers) { - $entity->mergeModifiersWith($customModifiers); - } - $class = $entity->getClass(); - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * @param PropelPDO $con A Propel connection object - * - * @return array A list of the inserted PKs - */ - public function execute($con = null) - { - if (null === $con) { - $con = $this->getConnection(); - } - $isInstancePoolingEnabled = Propel::isInstancePoolingEnabled(); - Propel::disableInstancePooling(); - $insertedEntities = []; - $con->beginTransaction(); - - foreach ($this->quantities as $class => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute($con, $insertedEntities); - } - } - $con->commit(); - - if ($isInstancePoolingEnabled) { - Propel::enableInstancePooling(); - } - - return $insertedEntities; - } - - protected function getConnection() - { - // use the first connection available - $class = key($this->entities); - - if (!$class) { - throw new \RuntimeException('No class found from entities. Did you add entities to the Populator ?'); - } - - $peer = $class::TABLE_MAP; - - return Propel::getConnection($peer::DATABASE_NAME, ServiceContainerInterface::CONNECTION_WRITE); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Spot/ColumnTypeGuesser.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Spot/ColumnTypeGuesser.php deleted file mode 100644 index f06ba04..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Spot/ColumnTypeGuesser.php +++ /dev/null @@ -1,84 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat(array $field) - { - $generator = $this->generator; - $type = $field['type']; - - switch ($type) { - case 'boolean': - return static function () use ($generator) { - return $generator->boolean; - }; - - case 'decimal': - $size = $field['precision'] ?? 2; - - return static function () use ($generator, $size) { - return $generator->randomNumber($size + 2) / 100; - }; - - case 'smallint': - return static function () use ($generator) { - return $generator->numberBetween(0, 65535); - }; - - case 'integer': - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case 'bigint': - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case 'float': - return static function () use ($generator) { - return $generator->randomFloat(null, 0, 4294967295); - }; - - case 'string': - $size = $field['length'] ?? 255; - - return static function () use ($generator, $size) { - return $generator->text($size); - }; - - case 'text': - return static function () use ($generator) { - return $generator->text; - }; - - case 'datetime': - case 'date': - case 'time': - return static function () use ($generator) { - return $generator->datetime; - }; - - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Spot/EntityPopulator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Spot/EntityPopulator.php deleted file mode 100644 index b67ae25..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Spot/EntityPopulator.php +++ /dev/null @@ -1,199 +0,0 @@ -mapper = $mapper; - $this->locator = $locator; - $this->useExistingData = $useExistingData; - } - - /** - * @return string - */ - public function getMapper() - { - return $this->mapper; - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - public function setModifiers(array $modifiers) - { - $this->modifiers = $modifiers; - } - - /** - * @return array - */ - public function getModifiers() - { - return $this->modifiers; - } - - public function mergeModifiersWith(array $modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessColumnFormatters(Generator $generator) - { - $formatters = []; - $nameGuesser = new Name($generator); - $columnTypeGuesser = new ColumnTypeGuesser($generator); - $fields = $this->mapper->fields(); - - foreach ($fields as $fieldName => $field) { - if ($field['primary'] === true) { - continue; - } - - if ($formatter = $nameGuesser->guessFormat($fieldName)) { - $formatters[$fieldName] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($field)) { - $formatters[$fieldName] = $formatter; - - continue; - } - } - $entityName = $this->mapper->entity(); - $entity = $this->mapper->build([]); - $relations = $entityName::relations($this->mapper, $entity); - - foreach ($relations as $relation) { - // We don't need any other relation here. - if ($relation instanceof BelongsTo) { - $fieldName = $relation->localKey(); - $entityName = $relation->entityName(); - $field = $fields[$fieldName]; - $required = $field['required']; - - $locator = $this->locator; - - $formatters[$fieldName] = function ($inserted) use ($required, $entityName, $locator, $generator) { - if (!empty($inserted[$entityName])) { - return $generator->randomElement($inserted[$entityName])->get('id'); - } - - if ($required && $this->useExistingData) { - // We did not add anything like this, but it's required, - // So let's find something existing in DB. - $mapper = $locator->mapper($entityName); - $records = $mapper->all()->limit(self::RELATED_FETCH_COUNT)->toArray(); - - if (empty($records)) { - return null; - } - - return $generator->randomElement($records)['id']; - } - - return null; - }; - } - } - - return $formatters; - } - - /** - * Insert one new record using the Entity class. - * - * @return string - */ - public function execute($insertedEntities) - { - $obj = $this->mapper->build([]); - - $this->fillColumns($obj, $insertedEntities); - $this->callMethods($obj, $insertedEntities); - - $this->mapper->insert($obj); - - return $obj; - } - - private function fillColumns($obj, $insertedEntities): void - { - foreach ($this->columnFormatters as $field => $format) { - if (null !== $format) { - $value = is_callable($format) ? $format($insertedEntities, $obj) : $format; - $obj->set($field, $value); - } - } - } - - private function callMethods($obj, $insertedEntities): void - { - foreach ($this->getModifiers() as $modifier) { - $modifier($obj, $insertedEntities); - } - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Spot/Populator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Spot/Populator.php deleted file mode 100644 index 9ad3bfb..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ORM/Spot/Populator.php +++ /dev/null @@ -1,89 +0,0 @@ -generator = $generator; - $this->locator = $locator; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param string $entityName Name of Entity object to generate - * @param int $number The number of entities to populate - * @param array $customColumnFormatters - * @param array $customModifiers - * @param bool $useExistingData Should we use existing rows (e.g. roles) to populate relations? - */ - public function addEntity( - $entityName, - $number, - $customColumnFormatters = [], - $customModifiers = [], - $useExistingData = false - ) { - $mapper = $this->locator->mapper($entityName); - - if (null === $mapper) { - throw new \InvalidArgumentException('No mapper can be found for entity ' . $entityName); - } - $entity = new EntityPopulator($mapper, $this->locator, $useExistingData); - - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->mergeModifiersWith($customModifiers); - - $this->entities[$entityName] = $entity; - $this->quantities[$entityName] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * @param Locator $locator A Spot locator - * - * @return array A list of the inserted PKs - */ - public function execute($locator = null) - { - if (null === $locator) { - $locator = $this->locator; - } - - if (null === $locator) { - throw new \InvalidArgumentException('No entity manager passed to Spot Populator.'); - } - - $insertedEntities = []; - - foreach ($this->quantities as $entityName => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$entityName][] = $this->entities[$entityName]->execute( - $insertedEntities, - ); - } - } - - return $insertedEntities; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Address.php deleted file mode 100644 index 9727497..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Address.php +++ /dev/null @@ -1,166 +0,0 @@ -generator->parse($format); - } - - /** - * @example 'Crist Parks' - * - * @return string - */ - public function streetName() - { - $format = static::randomElement(static::$streetNameFormats); - - return $this->generator->parse($format); - } - - /** - * @example '791 Crist Parks' - * - * @return string - */ - public function streetAddress() - { - $format = static::randomElement(static::$streetAddressFormats); - - return $this->generator->parse($format); - } - - /** - * @example 86039-9874 - * - * @return string - */ - public static function postcode() - { - return static::toUpper(static::bothify(static::randomElement(static::$postcode))); - } - - /** - * @example '791 Crist Parks, Sashabury, IL 86039-9874' - * - * @return string - */ - public function address() - { - $format = static::randomElement(static::$addressFormats); - - return $this->generator->parse($format); - } - - /** - * @example 'Japan' - * - * @return string - */ - public static function country() - { - return static::randomElement(static::$country); - } - - /** - * Uses signed degrees format (returns a float number between -90 and 90) - * - * @example '77.147489' - * - * @param float|int $min - * @param float|int $max - * - * @return float - */ - public static function latitude($min = -90, $max = 90) - { - return static::randomFloat(6, $min, $max); - } - - /** - * Uses signed degrees format (returns a float number between -180 and 180) - * - * @example '86.211205' - * - * @param float|int $min - * @param float|int $max - * - * @return float - */ - public static function longitude($min = -180, $max = 180) - { - return static::randomFloat(6, $min, $max); - } - - /** - * @example array('77.147489', '86.211205') - * - * @return float[] - */ - public static function localCoordinates() - { - return [ - 'latitude' => static::latitude(), - 'longitude' => static::longitude(), - ]; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Barcode.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Barcode.php deleted file mode 100644 index 0d39a61..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Barcode.php +++ /dev/null @@ -1,107 +0,0 @@ -ean(13); - } - - /** - * Get a random EAN8 barcode. - * - * @return string - * - * @example '73513537' - */ - public function ean8() - { - return $this->ean(8); - } - - /** - * Get a random ISBN-10 code - * - * @see http://en.wikipedia.org/wiki/International_Standard_Book_Number - * - * @return string - * - * @example '4881416324' - */ - public function isbn10() - { - $code = static::numerify(str_repeat('#', 9)); - - return $code . Isbn::checksum($code); - } - - /** - * Get a random ISBN-13 code - * - * @see http://en.wikipedia.org/wiki/International_Standard_Book_Number - * - * @return string - * - * @example '9790404436093' - */ - public function isbn13() - { - $code = '97' . self::numberBetween(8, 9) . static::numerify(str_repeat('#', 9)); - - return $code . Ean::checksum($code); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Base.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Base.php deleted file mode 100644 index 6b9876b..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Base.php +++ /dev/null @@ -1,710 +0,0 @@ -generator = $generator; - } - - /** - * Returns a random number between 0 and 9 - * - * @return int - */ - public static function randomDigit() - { - return mt_rand(0, 9); - } - - /** - * Returns a random number between 1 and 9 - * - * @return int - */ - public static function randomDigitNotNull() - { - return mt_rand(1, 9); - } - - /** - * Generates a random digit, which cannot be $except - * - * @param int $except - * - * @return int - */ - public static function randomDigitNot($except) - { - $result = self::numberBetween(0, 8); - - if ($result >= $except) { - ++$result; - } - - return $result; - } - - /** - * Returns a random integer with 0 to $nbDigits digits. - * - * The maximum value returned is mt_getrandmax() - * - * @param int $nbDigits Defaults to a random number between 1 and 9 - * @param bool $strict Whether the returned number should have exactly $nbDigits - * - * @example 79907610 - * - * @return int - */ - public static function randomNumber($nbDigits = null, $strict = false) - { - if (!is_bool($strict)) { - throw new \InvalidArgumentException('randomNumber() generates numbers of fixed width. To generate numbers between two boundaries, use numberBetween() instead.'); - } - - if (null === $nbDigits) { - $nbDigits = static::randomDigitNotNull(); - } - $max = 10 ** $nbDigits - 1; - - if ($max > mt_getrandmax()) { - throw new \InvalidArgumentException('randomNumber() can only generate numbers up to mt_getrandmax()'); - } - - if ($strict) { - return mt_rand(10 ** ($nbDigits - 1), $max); - } - - return mt_rand(0, $max); - } - - /** - * Return a random float number - * - * @param int $nbMaxDecimals - * @param float|int $min - * @param float|int $max - * - * @example 48.8932 - * - * @return float - */ - public static function randomFloat($nbMaxDecimals = null, $min = 0, $max = null) - { - if (null === $nbMaxDecimals) { - $nbMaxDecimals = static::randomDigit(); - } - - if (null === $max) { - $max = static::randomNumber(); - - if ($min > $max) { - $max = $min; - } - } - - if ($min > $max) { - $tmp = $min; - $min = $max; - $max = $tmp; - } - - return round($min + mt_rand() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); - } - - /** - * Returns a random number between $int1 and $int2 (any order) - * - * @param int $int1 default to 0 - * @param int $int2 defaults to 32 bit max integer, ie 2147483647 - * - * @example 79907610 - * - * @return int - */ - public static function numberBetween($int1 = 0, $int2 = 2147483647) - { - $min = $int1 < $int2 ? $int1 : $int2; - $max = $int1 < $int2 ? $int2 : $int1; - - return mt_rand($min, $max); - } - - /** - * Returns the passed value - */ - public static function passthrough($value) - { - return $value; - } - - /** - * Returns a random letter from a to z - * - * @return string - */ - public static function randomLetter() - { - return chr(mt_rand(97, 122)); - } - - /** - * Returns a random ASCII character (excluding accents and special chars) - * - * @return string - */ - public static function randomAscii() - { - return chr(mt_rand(33, 126)); - } - - /** - * Returns randomly ordered subsequence of $count elements from a provided array - * - * @todo update default $count to `null` (BC) for next major version - * - * @param array|class-string|\Traversable $array Array to take elements from. Defaults to a-c - * @param int|null $count Number of elements to take. If `null` then returns random number of elements - * @param bool $allowDuplicates Allow elements to be picked several times. Defaults to false - * - * @throws \InvalidArgumentException - * @throws \LengthException When requesting more elements than provided - * - * @return array New array with $count elements from $array - */ - public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $allowDuplicates = false) - { - $elements = $array; - - if (is_string($array) && function_exists('enum_exists') && enum_exists($array)) { - $elements = $array::cases(); - } - - if ($array instanceof \Traversable) { - $elements = \iterator_to_array($array, false); - } - - if (!is_array($elements)) { - throw new \InvalidArgumentException(sprintf( - 'Argument for parameter $array needs to be array, an instance of %s, or an instance of %s, got %s instead.', - \UnitEnum::class, - \Traversable::class, - is_object($array) ? get_class($array) : gettype($array), - )); - } - - $numberOfElements = count($elements); - - if (!$allowDuplicates && null !== $count && $numberOfElements < $count) { - throw new \LengthException(sprintf( - 'Cannot get %d elements, only %d in array', - $count, - $numberOfElements, - )); - } - - if (null === $count) { - $count = mt_rand(1, $numberOfElements); - } - - $randomElements = []; - - $keys = array_keys($elements); - $maxIndex = $numberOfElements - 1; - $elementHasBeenSelectedAlready = []; - $numberOfRandomElements = 0; - - while ($numberOfRandomElements < $count) { - $index = mt_rand(0, $maxIndex); - - if (!$allowDuplicates) { - if (isset($elementHasBeenSelectedAlready[$index])) { - continue; - } - - $elementHasBeenSelectedAlready[$index] = true; - } - - $key = $keys[$index]; - - $randomElements[] = $elements[$key]; - - ++$numberOfRandomElements; - } - - return $randomElements; - } - - /** - * Returns a random element from a passed array - * - * @param array|class-string|\Traversable $array - * - * @throws \InvalidArgumentException - */ - public static function randomElement($array = ['a', 'b', 'c']) - { - $elements = $array; - - if (is_string($array) && function_exists('enum_exists') && enum_exists($array)) { - $elements = $array::cases(); - } - - if ($array instanceof \Traversable) { - $elements = iterator_to_array($array, false); - } - - if ($elements === []) { - return null; - } - - if (!is_array($elements)) { - throw new \InvalidArgumentException(sprintf( - 'Argument for parameter $array needs to be array, an instance of %s, or an instance of %s, got %s instead.', - \UnitEnum::class, - \Traversable::class, - is_object($array) ? get_class($array) : gettype($array), - )); - } - - $randomElements = static::randomElements($elements, 1); - - return $randomElements[0]; - } - - /** - * Returns a random key from a passed associative array - * - * @param array $array - * - * @return int|string|null - */ - public static function randomKey($array = []) - { - if (!$array) { - return null; - } - $keys = array_keys($array); - - return $keys[mt_rand(0, count($keys) - 1)]; - } - - /** - * Returns a shuffled version of the argument. - * - * This function accepts either an array, or a string. - * - * @example $faker->shuffle([1, 2, 3]); // [2, 1, 3] - * @example $faker->shuffle('hello, world'); // 'rlo,h eold!lw' - * - * @see shuffleArray() - * @see shuffleString() - * - * @param array|string $arg The set to shuffle - * - * @return array|string The shuffled set - */ - public static function shuffle($arg = '') - { - if (is_array($arg)) { - return static::shuffleArray($arg); - } - - if (is_string($arg)) { - return static::shuffleString($arg); - } - - throw new \InvalidArgumentException('shuffle() only supports strings or arrays'); - } - - /** - * Returns a shuffled version of the array. - * - * This function does not mutate the original array. It uses the - * Fisher–Yates algorithm, which is unbiased, together with a Mersenne - * twister random generator. This function is therefore more random than - * PHP's shuffle() function, and it is seedable. - * - * @see http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle - * - * @example $faker->shuffleArray([1, 2, 3]); // [2, 1, 3] - * - * @param array $array The set to shuffle - * - * @return array The shuffled set - */ - public static function shuffleArray($array = []) - { - $shuffledArray = []; - $i = 0; - reset($array); - - foreach ($array as $key => $value) { - if ($i == 0) { - $j = 0; - } else { - $j = mt_rand(0, $i); - } - - if ($j == $i) { - $shuffledArray[] = $value; - } else { - $shuffledArray[] = $shuffledArray[$j]; - $shuffledArray[$j] = $value; - } - ++$i; - } - - return $shuffledArray; - } - - /** - * Returns a shuffled version of the string. - * - * This function does not mutate the original string. It uses the - * Fisher–Yates algorithm, which is unbiased, together with a Mersenne - * twister random generator. This function is therefore more random than - * PHP's shuffle() function, and it is seedable. Additionally, it is - * UTF8 safe if the mb extension is available. - * - * @see http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle - * - * @example $faker->shuffleString('hello, world'); // 'rlo,h eold!lw' - * - * @param string $string The set to shuffle - * @param string $encoding The string encoding (defaults to UTF-8) - * - * @return string The shuffled set - */ - public static function shuffleString($string = '', $encoding = 'UTF-8') - { - if (function_exists('mb_strlen')) { - // UTF8-safe str_split() - $array = []; - $strlen = mb_strlen($string, $encoding); - - for ($i = 0; $i < $strlen; ++$i) { - $array[] = mb_substr($string, $i, 1, $encoding); - } - } else { - $array = str_split($string, 1); - } - - return implode('', static::shuffleArray($array)); - } - - private static function replaceWildcard($string, $wildcard, $callback) - { - if (($pos = strpos($string, $wildcard)) === false) { - return $string; - } - - for ($i = $pos, $last = strrpos($string, $wildcard, $pos) + 1; $i < $last; ++$i) { - if ($string[$i] === $wildcard) { - $string[$i] = call_user_func($callback); - } - } - - return $string; - } - - /** - * Replaces all hash sign ('#') occurrences with a random number - * Replaces all percentage sign ('%') occurrences with a not null number - * - * @param string $string String that needs to bet parsed - * - * @return string - */ - public static function numerify($string = '###') - { - // instead of using randomDigit() several times, which is slow, - // count the number of hashes and generate once a large number - $toReplace = []; - - if (($pos = strpos($string, '#')) !== false) { - for ($i = $pos, $last = strrpos($string, '#', $pos) + 1; $i < $last; ++$i) { - if ($string[$i] === '#') { - $toReplace[] = $i; - } - } - } - - if ($nbReplacements = count($toReplace)) { - $maxAtOnce = strlen((string) mt_getrandmax()) - 1; - $numbers = ''; - $i = 0; - - while ($i < $nbReplacements) { - $size = min($nbReplacements - $i, $maxAtOnce); - $numbers .= str_pad(static::randomNumber($size), $size, '0', STR_PAD_LEFT); - $i += $size; - } - - for ($i = 0; $i < $nbReplacements; ++$i) { - $string[$toReplace[$i]] = $numbers[$i]; - } - } - $string = self::replaceWildcard($string, '%', [static::class, 'randomDigitNotNull']); - - return $string; - } - - /** - * Replaces all question mark ('?') occurrences with a random letter - * - * @param string $string String that needs to bet parsed - * - * @return string - */ - public static function lexify($string = '????') - { - return self::replaceWildcard($string, '?', [static::class, 'randomLetter']); - } - - /** - * Replaces hash signs ('#') and question marks ('?') with random numbers and letters - * An asterisk ('*') is replaced with either a random number or a random letter - * - * @param string $string String that needs to be parsed - * - * @return string - */ - public static function bothify($string = '## ??') - { - $string = self::replaceWildcard($string, '*', static function () { - return mt_rand(0, 1) === 1 ? '#' : '?'; - }); - - return static::lexify(static::numerify($string)); - } - - /** - * Replaces * signs with random numbers and letters and special characters - * - * @example $faker->asciify(''********'); // "s5'G!uC3" - * - * @param string $string String that needs to bet parsed - * - * @return string - */ - public static function asciify($string = '****') - { - return preg_replace_callback('/\*/u', [static::class, 'randomAscii'], $string); - } - - /** - * Transforms a basic regular expression into a random string satisfying the expression. - * - * @example $faker->regexify('[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'); // sm0@y8k96a.ej - * - * Regex delimiters '/.../' and begin/end markers '^...$' are ignored. - * - * Only supports a small subset of the regex syntax. For instance, - * unicode, negated classes, unbounded ranges, subpatterns, back references, - * assertions, recursive patterns, and comments are not supported. Escaping - * support is extremely fragile. - * - * This method is also VERY slow. Use it only when no other formatter - * can generate the fake data you want. For instance, prefer calling - * `$faker->email` rather than `regexify` with the previous regular - * expression. - * - * Also note than `bothify` can probably do most of what this method does, - * but much faster. For instance, for a dummy email generation, try - * `$faker->bothify('?????????@???.???')`. - * - * @see https://github.com/icomefromthenet/ReverseRegex for a more robust implementation - * - * @param string $regex A regular expression (delimiters are optional) - * - * @return string - */ - public static function regexify($regex = '') - { - // ditch the anchors - $regex = preg_replace('/^\/?\^?/', '', $regex); - $regex = preg_replace('/\$?\/?$/', '', $regex); - // All {2} become {2,2} - $regex = preg_replace('/\{(\d+)\}/', '{\1,\1}', $regex); - // Single-letter quantifiers (?, *, +) become bracket quantifiers ({0,1}, {0,rand}, {1, rand}) - $regex = preg_replace('/(? 0 && $weight < 1 && mt_rand() / mt_getrandmax() <= $weight) { - return $this->generator; - } - - // new system with percentage - if (is_int($weight) && mt_rand(1, 100) <= $weight) { - return $this->generator; - } - - return new DefaultGenerator($default); - } - - /** - * Chainable method for making any formatter unique. - * - * - * // will never return twice the same value - * $faker->unique()->randomElement(array(1, 2, 3)); - * - * - * @param bool $reset If set to true, resets the list of existing values - * @param int $maxRetries Maximum number of retries to find a unique value, - * After which an OverflowException is thrown. - * - * @throws \OverflowException When no unique value can be found by iterating $maxRetries times - * - * @return UniqueGenerator A proxy class returning only non-existing values - */ - public function unique($reset = false, $maxRetries = 10000) - { - if ($reset || !$this->unique) { - $this->unique = new UniqueGenerator($this->generator, $maxRetries); - } - - return $this->unique; - } - - /** - * Chainable method for forcing any formatter to return only valid values. - * - * The value validity is determined by a function passed as first argument. - * - * - * $values = array(); - * $evenValidator = function ($digit) { - * return $digit % 2 === 0; - * }; - * for ($i=0; $i < 10; $i++) { - * $values []= $faker->valid($evenValidator)->randomDigit; - * } - * print_r($values); // [0, 4, 8, 4, 2, 6, 0, 8, 8, 6] - * - * - * @param Closure $validator A function returning true for valid values - * @param int $maxRetries Maximum number of retries to find a unique value, - * After which an OverflowException is thrown. - * - * @throws \OverflowException When no valid value can be found by iterating $maxRetries times - * - * @return ValidGenerator A proxy class returning only valid values - */ - public function valid($validator = null, $maxRetries = 10000) - { - return new ValidGenerator($this->generator, $validator, $maxRetries); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Biased.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Biased.php deleted file mode 100644 index 42c70bc..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Biased.php +++ /dev/null @@ -1,65 +0,0 @@ -generator->parse($format); - } - - /** - * @example 'Ltd' - * - * @return string - */ - public static function companySuffix() - { - return static::randomElement(static::$companySuffix); - } - - /** - * @example 'Job' - * - * @return string - */ - public function jobTitle() - { - $format = static::randomElement(static::$jobTitleFormat); - - return $this->generator->parse($format); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/DateTime.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/DateTime.php deleted file mode 100644 index a8a1992..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/DateTime.php +++ /dev/null @@ -1,389 +0,0 @@ -getTimestamp(); - } - - return strtotime(empty($max) ? 'now' : $max); - } - - /** - * Get a timestamp between January 1, 1970, and now - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return int - * - * @example 1061306726 - */ - public static function unixTime($max = 'now') - { - return self::numberBetween(0, static::getMaxTimestamp($max)); - } - - /** - * Get a datetime object for a date between January 1, 1970 and now - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - * - * @see http://php.net/manual/en/timezones.php - * @see http://php.net/manual/en/function.date-default-timezone-get.php - * - * @example DateTime('2005-08-16 20:39:21') - */ - public static function dateTime($max = 'now', $timezone = null) - { - return static::setTimezone( - new \DateTime('@' . static::unixTime($max)), - $timezone, - ); - } - - /** - * Get a datetime object for a date between January 1, 001 and now - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - * - * @see http://php.net/manual/en/timezones.php - * @see http://php.net/manual/en/function.date-default-timezone-get.php - * - * @example DateTime('1265-03-22 21:15:52') - */ - public static function dateTimeAD($max = 'now', $timezone = null) - { - $min = (PHP_INT_SIZE > 4 ? -62135597361 : -PHP_INT_MAX); - - return static::setTimezone( - new \DateTime('@' . self::numberBetween($min, static::getMaxTimestamp($max))), - $timezone, - ); - } - - /** - * get a date string formatted with ISO8601 - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '2003-10-21T16:05:52+0000' - */ - public static function iso8601($max = 'now') - { - return static::date(\DateTime::ISO8601, $max); - } - - /** - * Get a date string between January 1, 1970 and now - * - * @param string $format - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '2008-11-27' - */ - public static function date($format = 'Y-m-d', $max = 'now') - { - return static::dateTime($max)->format($format); - } - - /** - * Get a time string (24h format by default) - * - * @param string $format - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '15:02:34' - */ - public static function time($format = 'H:i:s', $max = 'now') - { - return static::dateTime($max)->format($format); - } - - /** - * Get a DateTime object based on a random date between two given dates. - * Accepts date strings that can be recognized by strtotime(). - * - * @param \DateTime|string $startDate Defaults to 30 years ago - * @param \DateTime|string $endDate Defaults to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - * - * @see http://php.net/manual/en/timezones.php - * @see http://php.net/manual/en/function.date-default-timezone-get.php - * - * @example DateTime('1999-02-02 11:42:52') - */ - public static function dateTimeBetween($startDate = '-30 years', $endDate = 'now', $timezone = null) - { - $startTimestamp = $startDate instanceof \DateTime ? $startDate->getTimestamp() : strtotime($startDate); - $endTimestamp = static::getMaxTimestamp($endDate); - - if ($startTimestamp > $endTimestamp) { - throw new \InvalidArgumentException('Start date must be anterior to end date.'); - } - - $timestamp = self::numberBetween($startTimestamp, $endTimestamp); - - return static::setTimezone( - new \DateTime('@' . $timestamp), - $timezone, - ); - } - - /** - * Get a DateTime object based on a random date between one given date and - * an interval - * Accepts date string that can be recognized by strtotime(). - * - * @param \DateTime|string $date Defaults to 30 years ago - * @param string $interval Defaults to 5 days after - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - * - * @example dateTimeInInterval('1999-02-02 11:42:52', '+ 5 days') - * - * @see http://php.net/manual/en/timezones.php - * @see http://php.net/manual/en/function.date-default-timezone-get.php - */ - public static function dateTimeInInterval($date = '-30 years', $interval = '+5 days', $timezone = null) - { - $intervalObject = \DateInterval::createFromDateString($interval); - $datetime = $date instanceof \DateTime ? $date : new \DateTime($date); - $otherDatetime = clone $datetime; - $otherDatetime->add($intervalObject); - - $begin = min($datetime, $otherDatetime); - $end = $datetime === $begin ? $otherDatetime : $datetime; - - return static::dateTimeBetween( - $begin, - $end, - $timezone, - ); - } - - /** - * Get a date time object somewhere within a century. - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - */ - public static function dateTimeThisCentury($max = 'now', $timezone = null) - { - return static::dateTimeBetween('-100 year', $max, $timezone); - } - - /** - * Get a date time object somewhere within a decade. - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - */ - public static function dateTimeThisDecade($max = 'now', $timezone = null) - { - return static::dateTimeBetween('-10 year', $max, $timezone); - } - - /** - * Get a date time object somewhere inside the current year. - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - */ - public static function dateTimeThisYear($max = 'now', $timezone = null) - { - return static::dateTimeBetween('first day of january this year', $max, $timezone); - } - - /** - * Get a date time object somewhere within a month. - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` - * - * @return \DateTime - */ - public static function dateTimeThisMonth($max = 'now', $timezone = null) - { - return static::dateTimeBetween('-1 month', $max, $timezone); - } - - /** - * Get a string containing either "am" or "pm". - * - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example 'am' - */ - public static function amPm($max = 'now') - { - return static::dateTime($max)->format('a'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '22' - */ - public static function dayOfMonth($max = 'now') - { - return static::dateTime($max)->format('d'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example 'Tuesday' - */ - public static function dayOfWeek($max = 'now') - { - return static::dateTime($max)->format('l'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '7' - */ - public static function month($max = 'now') - { - return static::dateTime($max)->format('m'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example 'September' - */ - public static function monthName($max = 'now') - { - return static::dateTime($max)->format('F'); - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '1987' - */ - public static function year($max = 'now') - { - return static::dateTime($max)->format('Y'); - } - - /** - * @return string - * - * @example 'XVII' - */ - public static function century() - { - return static::randomElement(static::$century); - } - - /** - * @return string - * - * @example 'Europe/Paris' - */ - public static function timezone(?string $countryCode = null) - { - if ($countryCode) { - $timezones = \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, $countryCode); - } else { - $timezones = \DateTimeZone::listIdentifiers(); - } - - return static::randomElement($timezones); - } - - /** - * Internal method to set the time zone on a DateTime. - * - * @param string|null $timezone - * - * @return \DateTime - */ - private static function setTimezone(\DateTime $dt, $timezone) - { - return $dt->setTimezone(new \DateTimeZone(static::resolveTimezone($timezone))); - } - - /** - * Sets default time zone. - * - * @param string $timezone - */ - public static function setDefaultTimezone($timezone = null) - { - static::$defaultTimezone = $timezone; - } - - /** - * Gets default time zone. - * - * @return string|null - */ - public static function getDefaultTimezone() - { - return static::$defaultTimezone; - } - - /** - * @param string|null $timezone - * - * @return string|null - */ - private static function resolveTimezone($timezone) - { - return (null === $timezone) ? ((null === static::$defaultTimezone) ? date_default_timezone_get() : static::$defaultTimezone) : $timezone; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/File.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/File.php deleted file mode 100644 index 3cf3db9..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/File.php +++ /dev/null @@ -1,610 +0,0 @@ - file extension(s) - * - * @see http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types - */ - protected static $mimeTypes = [ - 'application/atom+xml' => 'atom', - 'application/ecmascript' => 'ecma', - 'application/emma+xml' => 'emma', - 'application/epub+zip' => 'epub', - 'application/java-archive' => 'jar', - 'application/java-vm' => 'class', - 'application/javascript' => 'js', - 'application/json' => 'json', - 'application/jsonml+json' => 'jsonml', - 'application/lost+xml' => 'lostxml', - 'application/mathml+xml' => 'mathml', - 'application/mets+xml' => 'mets', - 'application/mods+xml' => 'mods', - 'application/mp4' => 'mp4s', - 'application/msword' => ['doc', 'dot'], - 'application/octet-stream' => [ - 'bin', - 'dms', - 'lrf', - 'mar', - 'so', - 'dist', - 'distz', - 'pkg', - 'bpk', - 'dump', - 'elc', - 'deploy', - ], - 'application/ogg' => 'ogx', - 'application/omdoc+xml' => 'omdoc', - 'application/pdf' => 'pdf', - 'application/pgp-encrypted' => 'pgp', - 'application/pgp-signature' => ['asc', 'sig'], - 'application/pkix-pkipath' => 'pkipath', - 'application/pkixcmp' => 'pki', - 'application/pls+xml' => 'pls', - 'application/postscript' => ['ai', 'eps', 'ps'], - 'application/pskc+xml' => 'pskcxml', - 'application/rdf+xml' => 'rdf', - 'application/reginfo+xml' => 'rif', - 'application/rss+xml' => 'rss', - 'application/rtf' => 'rtf', - 'application/sbml+xml' => 'sbml', - 'application/vnd.adobe.air-application-installer-package+zip' => 'air', - 'application/vnd.adobe.xdp+xml' => 'xdp', - 'application/vnd.adobe.xfdf' => 'xfdf', - 'application/vnd.ahead.space' => 'ahead', - 'application/vnd.dart' => 'dart', - 'application/vnd.data-vision.rdz' => 'rdz', - 'application/vnd.dece.data' => ['uvf', 'uvvf', 'uvd', 'uvvd'], - 'application/vnd.dece.ttml+xml' => ['uvt', 'uvvt'], - 'application/vnd.dece.unspecified' => ['uvx', 'uvvx'], - 'application/vnd.dece.zip' => ['uvz', 'uvvz'], - 'application/vnd.denovo.fcselayout-link' => 'fe_launch', - 'application/vnd.dna' => 'dna', - 'application/vnd.dolby.mlp' => 'mlp', - 'application/vnd.dpgraph' => 'dpg', - 'application/vnd.dreamfactory' => 'dfac', - 'application/vnd.ds-keypoint' => 'kpxx', - 'application/vnd.dvb.ait' => 'ait', - 'application/vnd.dvb.service' => 'svc', - 'application/vnd.dynageo' => 'geo', - 'application/vnd.ecowin.chart' => 'mag', - 'application/vnd.enliven' => 'nml', - 'application/vnd.epson.esf' => 'esf', - 'application/vnd.epson.msf' => 'msf', - 'application/vnd.epson.quickanime' => 'qam', - 'application/vnd.epson.salt' => 'slt', - 'application/vnd.epson.ssf' => 'ssf', - 'application/vnd.ezpix-album' => 'ez2', - 'application/vnd.ezpix-package' => 'ez3', - 'application/vnd.fdf' => 'fdf', - 'application/vnd.fdsn.mseed' => 'mseed', - 'application/vnd.fdsn.seed' => ['seed', 'dataless'], - 'application/vnd.flographit' => 'gph', - 'application/vnd.fluxtime.clip' => 'ftc', - 'application/vnd.hal+xml' => 'hal', - 'application/vnd.hydrostatix.sof-data' => 'sfd-hdstx', - 'application/vnd.ibm.minipay' => 'mpy', - 'application/vnd.ibm.secure-container' => 'sc', - 'application/vnd.iccprofile' => ['icc', 'icm'], - 'application/vnd.igloader' => 'igl', - 'application/vnd.immervision-ivp' => 'ivp', - 'application/vnd.kde.karbon' => 'karbon', - 'application/vnd.kde.kchart' => 'chrt', - 'application/vnd.kde.kformula' => 'kfo', - 'application/vnd.kde.kivio' => 'flw', - 'application/vnd.kde.kontour' => 'kon', - 'application/vnd.kde.kpresenter' => ['kpr', 'kpt'], - 'application/vnd.kde.kspread' => 'ksp', - 'application/vnd.kde.kword' => ['kwd', 'kwt'], - 'application/vnd.kenameaapp' => 'htke', - 'application/vnd.kidspiration' => 'kia', - 'application/vnd.kinar' => ['kne', 'knp'], - 'application/vnd.koan' => ['skp', 'skd', 'skt', 'skm'], - 'application/vnd.kodak-descriptor' => 'sse', - 'application/vnd.las.las+xml' => 'lasxml', - 'application/vnd.llamagraphics.life-balance.desktop' => 'lbd', - 'application/vnd.llamagraphics.life-balance.exchange+xml' => 'lbe', - 'application/vnd.lotus-1-2-3' => '123', - 'application/vnd.lotus-approach' => 'apr', - 'application/vnd.lotus-freelance' => 'pre', - 'application/vnd.lotus-notes' => 'nsf', - 'application/vnd.lotus-organizer' => 'org', - 'application/vnd.lotus-screencam' => 'scm', - 'application/vnd.mozilla.xul+xml' => 'xul', - 'application/vnd.ms-artgalry' => 'cil', - 'application/vnd.ms-cab-compressed' => 'cab', - 'application/vnd.ms-excel' => [ - 'xls', - 'xlm', - 'xla', - 'xlc', - 'xlt', - 'xlw', - ], - 'application/vnd.ms-excel.addin.macroenabled.12' => 'xlam', - 'application/vnd.ms-excel.sheet.binary.macroenabled.12' => 'xlsb', - 'application/vnd.ms-excel.sheet.macroenabled.12' => 'xlsm', - 'application/vnd.ms-excel.template.macroenabled.12' => 'xltm', - 'application/vnd.ms-fontobject' => 'eot', - 'application/vnd.ms-htmlhelp' => 'chm', - 'application/vnd.ms-ims' => 'ims', - 'application/vnd.ms-lrm' => 'lrm', - 'application/vnd.ms-officetheme' => 'thmx', - 'application/vnd.ms-pki.seccat' => 'cat', - 'application/vnd.ms-pki.stl' => 'stl', - 'application/vnd.ms-powerpoint' => ['ppt', 'pps', 'pot'], - 'application/vnd.ms-powerpoint.addin.macroenabled.12' => 'ppam', - 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => 'pptm', - 'application/vnd.ms-powerpoint.slide.macroenabled.12' => 'sldm', - 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => 'ppsm', - 'application/vnd.ms-powerpoint.template.macroenabled.12' => 'potm', - 'application/vnd.ms-project' => ['mpp', 'mpt'], - 'application/vnd.ms-word.document.macroenabled.12' => 'docm', - 'application/vnd.ms-word.template.macroenabled.12' => 'dotm', - 'application/vnd.ms-works' => ['wps', 'wks', 'wcm', 'wdb'], - 'application/vnd.ms-wpl' => 'wpl', - 'application/vnd.ms-xpsdocument' => 'xps', - 'application/vnd.mseq' => 'mseq', - 'application/vnd.musician' => 'mus', - 'application/vnd.oasis.opendocument.chart' => 'odc', - 'application/vnd.oasis.opendocument.chart-template' => 'otc', - 'application/vnd.oasis.opendocument.database' => 'odb', - 'application/vnd.oasis.opendocument.formula' => 'odf', - 'application/vnd.oasis.opendocument.formula-template' => 'odft', - 'application/vnd.oasis.opendocument.graphics' => 'odg', - 'application/vnd.oasis.opendocument.graphics-template' => 'otg', - 'application/vnd.oasis.opendocument.image' => 'odi', - 'application/vnd.oasis.opendocument.image-template' => 'oti', - 'application/vnd.oasis.opendocument.presentation' => 'odp', - 'application/vnd.oasis.opendocument.presentation-template' => 'otp', - 'application/vnd.oasis.opendocument.spreadsheet' => 'ods', - 'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots', - 'application/vnd.oasis.opendocument.text' => 'odt', - 'application/vnd.oasis.opendocument.text-master' => 'odm', - 'application/vnd.oasis.opendocument.text-template' => 'ott', - 'application/vnd.oasis.opendocument.text-web' => 'oth', - 'application/vnd.olpc-sugar' => 'xo', - 'application/vnd.oma.dd2+xml' => 'dd2', - 'application/vnd.openofficeorg.extension' => 'oxt', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx', - 'application/vnd.openxmlformats-officedocument.presentationml.slide' => 'sldx', - 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'ppsx', - 'application/vnd.openxmlformats-officedocument.presentationml.template' => 'potx', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => 'xltx', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 'dotx', - 'application/vnd.pvi.ptid1' => 'ptid', - 'application/vnd.quark.quarkxpress' => [ - 'qxd', - 'qxt', - 'qwd', - 'qwt', - 'qxl', - 'qxb', - ], - 'application/vnd.realvnc.bed' => 'bed', - 'application/vnd.recordare.musicxml' => 'mxl', - 'application/vnd.recordare.musicxml+xml' => 'musicxml', - 'application/vnd.rig.cryptonote' => 'cryptonote', - 'application/vnd.rim.cod' => 'cod', - 'application/vnd.rn-realmedia' => 'rm', - 'application/vnd.rn-realmedia-vbr' => 'rmvb', - 'application/vnd.route66.link66+xml' => 'link66', - 'application/vnd.sailingtracker.track' => 'st', - 'application/vnd.seemail' => 'see', - 'application/vnd.sema' => 'sema', - 'application/vnd.semd' => 'semd', - 'application/vnd.semf' => 'semf', - 'application/vnd.shana.informed.formdata' => 'ifm', - 'application/vnd.shana.informed.formtemplate' => 'itp', - 'application/vnd.shana.informed.interchange' => 'iif', - 'application/vnd.shana.informed.package' => 'ipk', - 'application/vnd.simtech-mindmapper' => ['twd', 'twds'], - 'application/vnd.smaf' => 'mmf', - 'application/vnd.stepmania.stepchart' => 'sm', - 'application/vnd.sun.xml.calc' => 'sxc', - 'application/vnd.sun.xml.calc.template' => 'stc', - 'application/vnd.sun.xml.draw' => 'sxd', - 'application/vnd.sun.xml.draw.template' => 'std', - 'application/vnd.sun.xml.impress' => 'sxi', - 'application/vnd.sun.xml.impress.template' => 'sti', - 'application/vnd.sun.xml.math' => 'sxm', - 'application/vnd.sun.xml.writer' => 'sxw', - 'application/vnd.sun.xml.writer.global' => 'sxg', - 'application/vnd.sun.xml.writer.template' => 'stw', - 'application/vnd.sus-calendar' => ['sus', 'susp'], - 'application/vnd.svd' => 'svd', - 'application/vnd.symbian.install' => ['sis', 'sisx'], - 'application/vnd.syncml+xml' => 'xsm', - 'application/vnd.syncml.dm+wbxml' => 'bdm', - 'application/vnd.syncml.dm+xml' => 'xdm', - 'application/vnd.tao.intent-module-archive' => 'tao', - 'application/vnd.tcpdump.pcap' => ['pcap', 'cap', 'dmp'], - 'application/vnd.tmobile-livetv' => 'tmo', - 'application/vnd.trid.tpt' => 'tpt', - 'application/vnd.triscape.mxs' => 'mxs', - 'application/vnd.trueapp' => 'tra', - 'application/vnd.ufdl' => ['ufd', 'ufdl'], - 'application/vnd.uiq.theme' => 'utz', - 'application/vnd.umajin' => 'umj', - 'application/vnd.unity' => 'unityweb', - 'application/vnd.uoml+xml' => 'uoml', - 'application/vnd.vcx' => 'vcx', - 'application/vnd.visio' => ['vsd', 'vst', 'vss', 'vsw'], - 'application/vnd.visionary' => 'vis', - 'application/vnd.vsf' => 'vsf', - 'application/vnd.wap.wbxml' => 'wbxml', - 'application/vnd.wap.wmlc' => 'wmlc', - 'application/vnd.wap.wmlscriptc' => 'wmlsc', - 'application/vnd.webturbo' => 'wtb', - 'application/vnd.wolfram.player' => 'nbp', - 'application/vnd.wordperfect' => 'wpd', - 'application/vnd.wqd' => 'wqd', - 'application/vnd.wt.stf' => 'stf', - 'application/vnd.xara' => 'xar', - 'application/vnd.xfdl' => 'xfdl', - 'application/voicexml+xml' => 'vxml', - 'application/widget' => 'wgt', - 'application/winhlp' => 'hlp', - 'application/wsdl+xml' => 'wsdl', - 'application/wspolicy+xml' => 'wspolicy', - 'application/x-7z-compressed' => '7z', - 'application/x-bittorrent' => 'torrent', - 'application/x-blorb' => ['blb', 'blorb'], - 'application/x-bzip' => 'bz', - 'application/x-cdlink' => 'vcd', - 'application/x-cfs-compressed' => 'cfs', - 'application/x-chat' => 'chat', - 'application/x-chess-pgn' => 'pgn', - 'application/x-conference' => 'nsc', - 'application/x-cpio' => 'cpio', - 'application/x-csh' => 'csh', - 'application/x-debian-package' => ['deb', 'udeb'], - 'application/x-dgc-compressed' => 'dgc', - 'application/x-director' => [ - 'dir', - 'dcr', - 'dxr', - 'cst', - 'cct', - 'cxt', - 'w3d', - 'fgd', - 'swa', - ], - 'application/x-font-ttf' => ['ttf', 'ttc'], - 'application/x-font-type1' => ['pfa', 'pfb', 'pfm', 'afm'], - 'application/x-font-woff' => 'woff', - 'application/x-freearc' => 'arc', - 'application/x-futuresplash' => 'spl', - 'application/x-gca-compressed' => 'gca', - 'application/x-glulx' => 'ulx', - 'application/x-gnumeric' => 'gnumeric', - 'application/x-gramps-xml' => 'gramps', - 'application/x-gtar' => 'gtar', - 'application/x-hdf' => 'hdf', - 'application/x-install-instructions' => 'install', - 'application/x-iso9660-image' => 'iso', - 'application/x-java-jnlp-file' => 'jnlp', - 'application/x-latex' => 'latex', - 'application/x-lzh-compressed' => ['lzh', 'lha'], - 'application/x-mie' => 'mie', - 'application/x-mobipocket-ebook' => ['prc', 'mobi'], - 'application/x-ms-application' => 'application', - 'application/x-ms-shortcut' => 'lnk', - 'application/x-ms-wmd' => 'wmd', - 'application/x-ms-wmz' => 'wmz', - 'application/x-ms-xbap' => 'xbap', - 'application/x-msaccess' => 'mdb', - 'application/x-msbinder' => 'obd', - 'application/x-mscardfile' => 'crd', - 'application/x-msclip' => 'clp', - 'application/x-msdownload' => ['exe', 'dll', 'com', 'bat', 'msi'], - 'application/x-msmediaview' => [ - 'mvb', - 'm13', - 'm14', - ], - 'application/x-msmetafile' => ['wmf', 'wmz', 'emf', 'emz'], - 'application/x-rar-compressed' => 'rar', - 'application/x-research-info-systems' => 'ris', - 'application/x-sh' => 'sh', - 'application/x-shar' => 'shar', - 'application/x-shockwave-flash' => 'swf', - 'application/x-silverlight-app' => 'xap', - 'application/x-sql' => 'sql', - 'application/x-stuffit' => 'sit', - 'application/x-stuffitx' => 'sitx', - 'application/x-subrip' => 'srt', - 'application/x-sv4cpio' => 'sv4cpio', - 'application/x-sv4crc' => 'sv4crc', - 'application/x-t3vm-image' => 't3', - 'application/x-tads' => 'gam', - 'application/x-tar' => 'tar', - 'application/x-tcl' => 'tcl', - 'application/x-tex' => 'tex', - 'application/x-tex-tfm' => 'tfm', - 'application/x-texinfo' => ['texinfo', 'texi'], - 'application/x-tgif' => 'obj', - 'application/x-ustar' => 'ustar', - 'application/x-wais-source' => 'src', - 'application/x-x509-ca-cert' => ['der', 'crt'], - 'application/x-xfig' => 'fig', - 'application/x-xliff+xml' => 'xlf', - 'application/x-xpinstall' => 'xpi', - 'application/x-xz' => 'xz', - 'application/x-zmachine' => 'z1', - 'application/xaml+xml' => 'xaml', - 'application/xcap-diff+xml' => 'xdf', - 'application/xenc+xml' => 'xenc', - 'application/xhtml+xml' => ['xhtml', 'xht'], - 'application/xml' => ['xml', 'xsl'], - 'application/xml-dtd' => 'dtd', - 'application/xop+xml' => 'xop', - 'application/xproc+xml' => 'xpl', - 'application/xslt+xml' => 'xslt', - 'application/xspf+xml' => 'xspf', - 'application/xv+xml' => ['mxml', 'xhvml', 'xvml', 'xvm'], - 'application/yang' => 'yang', - 'application/yin+xml' => 'yin', - 'application/zip' => 'zip', - 'audio/adpcm' => 'adp', - 'audio/basic' => ['au', 'snd'], - 'audio/midi' => ['mid', 'midi', 'kar', 'rmi'], - 'audio/mp4' => 'mp4a', - 'audio/mpeg' => [ - 'mpga', - 'mp2', - 'mp2a', - 'mp3', - 'm2a', - 'm3a', - ], - 'audio/ogg' => ['oga', 'ogg', 'spx'], - 'audio/vnd.dece.audio' => ['uva', 'uvva'], - 'audio/vnd.rip' => 'rip', - 'audio/webm' => 'weba', - 'audio/x-aac' => 'aac', - 'audio/x-aiff' => ['aif', 'aiff', 'aifc'], - 'audio/x-caf' => 'caf', - 'audio/x-flac' => 'flac', - 'audio/x-matroska' => 'mka', - 'audio/x-mpegurl' => 'm3u', - 'audio/x-ms-wax' => 'wax', - 'audio/x-ms-wma' => 'wma', - 'audio/x-pn-realaudio' => ['ram', 'ra'], - 'audio/x-pn-realaudio-plugin' => 'rmp', - 'audio/x-wav' => 'wav', - 'audio/xm' => 'xm', - 'image/bmp' => 'bmp', - 'image/cgm' => 'cgm', - 'image/g3fax' => 'g3', - 'image/gif' => 'gif', - 'image/ief' => 'ief', - 'image/jpeg' => ['jpeg', 'jpg', 'jpe'], - 'image/ktx' => 'ktx', - 'image/png' => 'png', - 'image/prs.btif' => 'btif', - 'image/sgi' => 'sgi', - 'image/svg+xml' => ['svg', 'svgz'], - 'image/tiff' => ['tiff', 'tif'], - 'image/vnd.adobe.photoshop' => 'psd', - 'image/vnd.dece.graphic' => ['uvi', 'uvvi', 'uvg', 'uvvg'], - 'image/vnd.dvb.subtitle' => 'sub', - 'image/vnd.djvu' => ['djvu', 'djv'], - 'image/vnd.dwg' => 'dwg', - 'image/vnd.dxf' => 'dxf', - 'image/vnd.fastbidsheet' => 'fbs', - 'image/vnd.fpx' => 'fpx', - 'image/vnd.fst' => 'fst', - 'image/vnd.fujixerox.edmics-mmr' => 'mmr', - 'image/vnd.fujixerox.edmics-rlc' => 'rlc', - 'image/vnd.ms-modi' => 'mdi', - 'image/vnd.ms-photo' => 'wdp', - 'image/vnd.net-fpx' => 'npx', - 'image/vnd.wap.wbmp' => 'wbmp', - 'image/vnd.xiff' => 'xif', - 'image/webp' => 'webp', - 'image/x-3ds' => '3ds', - 'image/x-cmu-raster' => 'ras', - 'image/x-cmx' => 'cmx', - 'image/x-freehand' => ['fh', 'fhc', 'fh4', 'fh5', 'fh7'], - 'image/x-icon' => 'ico', - 'image/x-mrsid-image' => 'sid', - 'image/x-pcx' => 'pcx', - 'image/x-pict' => ['pic', 'pct'], - 'image/x-portable-anymap' => 'pnm', - 'image/x-portable-bitmap' => 'pbm', - 'image/x-portable-graymap' => 'pgm', - 'image/x-portable-pixmap' => 'ppm', - 'image/x-rgb' => 'rgb', - 'image/x-tga' => 'tga', - 'image/x-xbitmap' => 'xbm', - 'image/x-xpixmap' => 'xpm', - 'image/x-xwindowdump' => 'xwd', - 'message/rfc822' => ['eml', 'mime'], - 'model/iges' => ['igs', 'iges'], - 'model/mesh' => ['msh', 'mesh', 'silo'], - 'model/vnd.collada+xml' => 'dae', - 'model/vnd.dwf' => 'dwf', - 'model/vnd.gdl' => 'gdl', - 'model/vnd.gtw' => 'gtw', - 'model/vnd.mts' => 'mts', - 'model/vnd.vtu' => 'vtu', - 'model/vrml' => ['wrl', 'vrml'], - 'model/x3d+binary' => 'x3db', - 'model/x3d+vrml' => 'x3dv', - 'model/x3d+xml' => 'x3d', - 'text/cache-manifest' => 'appcache', - 'text/calendar' => ['ics', 'ifb'], - 'text/css' => 'css', - 'text/csv' => 'csv', - 'text/html' => ['html', 'htm'], - 'text/n3' => 'n3', - 'text/plain' => [ - 'txt', - 'text', - 'conf', - 'def', - 'list', - 'log', - 'in', - ], - 'text/prs.lines.tag' => 'dsc', - 'text/richtext' => 'rtx', - 'text/sgml' => ['sgml', 'sgm'], - 'text/tab-separated-values' => 'tsv', - 'text/troff' => [ - 't', - 'tr', - 'roff', - 'man', - 'me', - 'ms', - ], - 'text/turtle' => 'ttl', - 'text/uri-list' => ['uri', 'uris', 'urls'], - 'text/vcard' => 'vcard', - 'text/vnd.curl' => 'curl', - 'text/vnd.curl.dcurl' => 'dcurl', - 'text/vnd.curl.scurl' => 'scurl', - 'text/vnd.curl.mcurl' => 'mcurl', - 'text/vnd.dvb.subtitle' => 'sub', - 'text/vnd.fly' => 'fly', - 'text/vnd.fmi.flexstor' => 'flx', - 'text/vnd.graphviz' => 'gv', - 'text/vnd.in3d.3dml' => '3dml', - 'text/vnd.in3d.spot' => 'spot', - 'text/vnd.sun.j2me.app-descriptor' => 'jad', - 'text/vnd.wap.wml' => 'wml', - 'text/vnd.wap.wmlscript' => 'wmls', - 'text/x-asm' => ['s', 'asm'], - 'text/x-fortran' => ['f', 'for', 'f77', 'f90'], - 'text/x-java-source' => 'java', - 'text/x-opml' => 'opml', - 'text/x-pascal' => ['p', 'pas'], - 'text/x-nfo' => 'nfo', - 'text/x-setext' => 'etx', - 'text/x-sfv' => 'sfv', - 'text/x-uuencode' => 'uu', - 'text/x-vcalendar' => 'vcs', - 'text/x-vcard' => 'vcf', - 'video/3gpp' => '3gp', - 'video/3gpp2' => '3g2', - 'video/h261' => 'h261', - 'video/h263' => 'h263', - 'video/h264' => 'h264', - 'video/jpeg' => 'jpgv', - 'video/jpm' => ['jpm', 'jpgm'], - 'video/mj2' => 'mj2', - 'video/mp4' => 'mp4', - 'video/mpeg' => ['mpeg', 'mpg', 'mpe', 'm1v', 'm2v'], - 'video/ogg' => 'ogv', - 'video/quicktime' => ['qt', 'mov'], - 'video/vnd.dece.hd' => ['uvh', 'uvvh'], - 'video/vnd.dece.mobile' => ['uvm', 'uvvm'], - 'video/vnd.dece.pd' => ['uvp', 'uvvp'], - 'video/vnd.dece.sd' => ['uvs', 'uvvs'], - 'video/vnd.dece.video' => ['uvv', 'uvvv'], - 'video/vnd.dvb.file' => 'dvb', - 'video/vnd.fvt' => 'fvt', - 'video/vnd.mpegurl' => ['mxu', 'm4u'], - 'video/vnd.ms-playready.media.pyv' => 'pyv', - 'video/vnd.uvvu.mp4' => ['uvu', 'uvvu'], - 'video/vnd.vivo' => 'viv', - 'video/webm' => 'webm', - 'video/x-f4v' => 'f4v', - 'video/x-fli' => 'fli', - 'video/x-flv' => 'flv', - 'video/x-m4v' => 'm4v', - 'video/x-matroska' => ['mkv', 'mk3d', 'mks'], - 'video/x-mng' => 'mng', - 'video/x-ms-asf' => ['asf', 'asx'], - 'video/x-ms-vob' => 'vob', - 'video/x-ms-wm' => 'wm', - 'video/x-ms-wmv' => 'wmv', - 'video/x-ms-wmx' => 'wmx', - 'video/x-ms-wvx' => 'wvx', - 'video/x-msvideo' => 'avi', - 'video/x-sgi-movie' => 'movie', - ]; - - /** - * Get a random MIME type - * - * @return string - * - * @example 'video/avi' - */ - public static function mimeType() - { - return static::randomElement(array_keys(static::$mimeTypes)); - } - - /** - * Get a random file extension (without a dot) - * - * @example avi - * - * @return string - */ - public static function fileExtension() - { - $random_extension = static::randomElement(array_values(static::$mimeTypes)); - - return is_array($random_extension) ? static::randomElement($random_extension) : $random_extension; - } - - /** - * Copy a random file from the source directory to the target directory and returns the filename/fullpath - * - * @param string $sourceDirectory The directory to look for random file taking - * @param string $targetDirectory - * @param bool $fullPath Whether to have the full path or just the filename - * - * @return string - */ - public static function file($sourceDirectory = '/tmp', $targetDirectory = '/tmp', $fullPath = true) - { - if (!is_dir($sourceDirectory)) { - throw new \InvalidArgumentException(sprintf('Source directory %s does not exist or is not a directory.', $sourceDirectory)); - } - - if (!is_dir($targetDirectory)) { - throw new \InvalidArgumentException(sprintf('Target directory %s does not exist or is not a directory.', $targetDirectory)); - } - - if ($sourceDirectory == $targetDirectory) { - throw new \InvalidArgumentException('Source and target directories must differ.'); - } - - // Drop . and .. and reset array keys - $files = array_filter(array_values(array_diff(scandir($sourceDirectory), ['.', '..'])), static function ($file) use ($sourceDirectory) { - return is_file($sourceDirectory . DIRECTORY_SEPARATOR . $file) && is_readable($sourceDirectory . DIRECTORY_SEPARATOR . $file); - }); - - if (empty($files)) { - throw new \InvalidArgumentException(sprintf('Source directory %s is empty.', $sourceDirectory)); - } - - $sourceFullPath = $sourceDirectory . DIRECTORY_SEPARATOR . static::randomElement($files); - - $destinationFile = Uuid::uuid() . '.' . pathinfo($sourceFullPath, PATHINFO_EXTENSION); - $destinationFullPath = $targetDirectory . DIRECTORY_SEPARATOR . $destinationFile; - - if (false === copy($sourceFullPath, $destinationFullPath)) { - return false; - } - - return $fullPath ? $destinationFullPath : $destinationFile; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php deleted file mode 100644 index a843410..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php +++ /dev/null @@ -1,307 +0,0 @@ -addProvider(new Lorem($generator)); - $generator->addProvider(new Internet($generator)); - } - - /** - * @param int $maxDepth - * @param int $maxWidth - * - * @return string - */ - public function randomHtml($maxDepth = 4, $maxWidth = 4) - { - if (!class_exists(\DOMDocument::class, false)) { - throw new \RuntimeException('ext-dom is required to use randomHtml.'); - } - - $document = new \DOMDocument(); - $this->idGenerator = new UniqueGenerator($this->generator); - - $head = $document->createElement('head'); - $this->addRandomTitle($head); - - $body = $document->createElement('body'); - $this->addLoginForm($body); - $this->addRandomSubTree($body, $maxDepth, $maxWidth); - - $html = $document->createElement('html'); - $html->appendChild($head); - $html->appendChild($body); - - $document->appendChild($html); - - return $document->saveHTML(); - } - - private function addRandomSubTree(\DOMElement $root, $maxDepth, $maxWidth) - { - --$maxDepth; - - if ($maxDepth <= 0) { - return $root; - } - - $siblings = self::numberBetween(1, $maxWidth); - - for ($i = 0; $i < $siblings; ++$i) { - if ($maxDepth == 1) { - $this->addRandomLeaf($root); - } else { - $sibling = $root->ownerDocument->createElement('div'); - $root->appendChild($sibling); - $this->addRandomAttribute($sibling); - $this->addRandomSubTree($sibling, self::numberBetween(0, $maxDepth), $maxWidth); - } - } - - return $root; - } - - private function addRandomLeaf(\DOMElement $node): void - { - $rand = self::numberBetween(1, 10); - - switch ($rand) { - case 1: - $this->addRandomP($node); - - break; - - case 2: - $this->addRandomA($node); - - break; - - case 3: - $this->addRandomSpan($node); - - break; - - case 4: - $this->addRandomUL($node); - - break; - - case 5: - $this->addRandomH($node); - - break; - - case 6: - $this->addRandomB($node); - - break; - - case 7: - $this->addRandomI($node); - - break; - - case 8: - $this->addRandomTable($node); - - break; - - default: - $this->addRandomText($node); - - break; - } - } - - private function addRandomAttribute(\DOMElement $node): void - { - $rand = self::numberBetween(1, 2); - - switch ($rand) { - case 1: - $node->setAttribute('class', $this->generator->word()); - - break; - - case 2: - $node->setAttribute('id', (string) $this->idGenerator->randomNumber(5)); - - break; - } - } - - private function addRandomP(\DOMElement $element, $maxLength = 10): void - { - $node = $element->ownerDocument->createElement(static::P_TAG); - $node->textContent = $this->generator->sentence(self::numberBetween(1, $maxLength)); - $element->appendChild($node); - } - - private function addRandomText(\DOMElement $element, $maxLength = 10): void - { - $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); - $element->appendChild($text); - } - - private function addRandomA(\DOMElement $element, $maxLength = 10): void - { - $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); - $node = $element->ownerDocument->createElement(static::A_TAG); - $node->setAttribute('href', $this->generator->safeEmailDomain()); - $node->appendChild($text); - $element->appendChild($node); - } - - private function addRandomTitle(\DOMElement $element, $maxLength = 10): void - { - $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); - $node = $element->ownerDocument->createElement(static::TITLE_TAG); - $node->appendChild($text); - $element->appendChild($node); - } - - private function addRandomH(\DOMElement $element, $maxLength = 10): void - { - $h = static::H_TAG . (string) self::numberBetween(1, 3); - $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); - $node = $element->ownerDocument->createElement($h); - $node->appendChild($text); - $element->appendChild($node); - } - - private function addRandomB(\DOMElement $element, $maxLength = 10): void - { - $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); - $node = $element->ownerDocument->createElement(static::B_TAG); - $node->appendChild($text); - $element->appendChild($node); - } - - private function addRandomI(\DOMElement $element, $maxLength = 10): void - { - $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); - $node = $element->ownerDocument->createElement(static::I_TAG); - $node->appendChild($text); - $element->appendChild($node); - } - - private function addRandomSpan(\DOMElement $element, $maxLength = 10): void - { - $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); - $node = $element->ownerDocument->createElement(static::SPAN_TAG); - $node->appendChild($text); - $element->appendChild($node); - } - - private function addLoginForm(\DOMElement $element): void - { - $textInput = $element->ownerDocument->createElement(static::INPUT_TAG); - $textInput->setAttribute('type', 'text'); - $textInput->setAttribute('id', 'username'); - - $textLabel = $element->ownerDocument->createElement(static::LABEL_TAG); - $textLabel->setAttribute('for', 'username'); - $textLabel->textContent = $this->generator->word(); - - $passwordInput = $element->ownerDocument->createElement(static::INPUT_TAG); - $passwordInput->setAttribute('type', 'password'); - $passwordInput->setAttribute('id', 'password'); - - $passwordLabel = $element->ownerDocument->createElement(static::LABEL_TAG); - $passwordLabel->setAttribute('for', 'password'); - $passwordLabel->textContent = $this->generator->word(); - - $submit = $element->ownerDocument->createElement(static::INPUT_TAG); - $submit->setAttribute('type', 'submit'); - $submit->setAttribute('value', $this->generator->word()); - - $submit = $element->ownerDocument->createElement(static::FORM_TAG); - $submit->setAttribute('action', $this->generator->safeEmailDomain()); - $submit->setAttribute('method', 'POST'); - $submit->appendChild($textLabel); - $submit->appendChild($textInput); - $submit->appendChild($passwordLabel); - $submit->appendChild($passwordInput); - $element->appendChild($submit); - } - - private function addRandomTable(\DOMElement $element, $maxRows = 10, $maxCols = 6, $maxTitle = 4, $maxLength = 10): void - { - $rows = self::numberBetween(1, $maxRows); - $cols = self::numberBetween(1, $maxCols); - - $table = $element->ownerDocument->createElement(static::TABLE_TAG); - $thead = $element->ownerDocument->createElement(static::THEAD_TAG); - $tbody = $element->ownerDocument->createElement(static::TBODY_TAG); - - $table->appendChild($thead); - $table->appendChild($tbody); - - $tr = $element->ownerDocument->createElement(static::TR_TAG); - $thead->appendChild($tr); - - for ($i = 0; $i < $cols; ++$i) { - $th = $element->ownerDocument->createElement(static::TH_TAG); - $th->textContent = $this->generator->sentence(self::numberBetween(1, $maxTitle)); - $tr->appendChild($th); - } - - for ($i = 0; $i < $rows; ++$i) { - $tr = $element->ownerDocument->createElement(static::TR_TAG); - $tbody->appendChild($tr); - - for ($j = 0; $j < $cols; ++$j) { - $th = $element->ownerDocument->createElement(static::TD_TAG); - $th->textContent = $this->generator->sentence(self::numberBetween(1, $maxLength)); - $tr->appendChild($th); - } - } - $element->appendChild($table); - } - - private function addRandomUL(\DOMElement $element, $maxItems = 11, $maxLength = 4): void - { - $num = self::numberBetween(1, $maxItems); - $ul = $element->ownerDocument->createElement(static::UL_TAG); - - for ($i = 0; $i < $num; ++$i) { - $li = $element->ownerDocument->createElement(static::LI_TAG); - $li->textContent = $this->generator->sentence(self::numberBetween(1, $maxLength)); - $ul->appendChild($li); - } - $element->appendChild($ul); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Image.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Image.php deleted file mode 100644 index e787142..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Image.php +++ /dev/null @@ -1,196 +0,0 @@ - 0 ? '?text=' . urlencode(implode(' ', $imageParts)) : '', - ); - } - - /** - * Download a remote random image to disk and return its location - * - * Requires curl, or allow_url_fopen to be on in php.ini. - * - * @example '/path/to/dir/13b73edae8443990be1aa8f1a483bc27.png' - * - * @return bool|string - */ - public static function image( - $dir = null, - $width = 640, - $height = 480, - $category = null, - $fullPath = true, - $randomize = true, - $word = null, - $gray = false, - $format = 'png' - ) { - trigger_deprecation( - 'fakerphp/faker', - '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', - ); - - $dir = null === $dir ? sys_get_temp_dir() : $dir; // GNU/Linux / OS X / Windows compatible - - // Validate directory path - if (!is_dir($dir) || !is_writable($dir)) { - throw new \InvalidArgumentException(sprintf('Cannot write to directory "%s"', $dir)); - } - - // Generate a random filename. Use the server address so that a file - // generated at the same time on a different server won't have a collision. - $name = md5(uniqid(empty($_SERVER['SERVER_ADDR']) ? '' : $_SERVER['SERVER_ADDR'], true)); - $filename = sprintf('%s.%s', $name, $format); - $filepath = $dir . DIRECTORY_SEPARATOR . $filename; - - $url = static::imageUrl($width, $height, $category, $randomize, $word, $gray, $format); - - // save file - if (function_exists('curl_exec')) { - // use cURL - $fp = fopen($filepath, 'w'); - $ch = curl_init($url); - curl_setopt($ch, CURLOPT_FILE, $fp); - $success = curl_exec($ch) && curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200; - fclose($fp); - curl_close($ch); - - if (!$success) { - unlink($filepath); - - // could not contact the distant URL or HTTP error - fail silently. - return false; - } - } elseif (ini_get('allow_url_fopen')) { - // use remote fopen() via copy() - $success = copy($url, $filepath); - - if (!$success) { - // could not contact the distant URL or HTTP error - fail silently. - return false; - } - } else { - return new \RuntimeException('The image formatter downloads an image from a remote HTTP server. Therefore, it requires that PHP can request remote hosts, either via cURL or fopen()'); - } - - return $fullPath ? $filepath : $filename; - } - - public static function getFormats(): array - { - trigger_deprecation( - 'fakerphp/faker', - '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', - ); - - return array_keys(static::getFormatConstants()); - } - - public static function getFormatConstants(): array - { - trigger_deprecation( - 'fakerphp/faker', - '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', - ); - - return [ - static::FORMAT_JPG => constant('IMAGETYPE_JPEG'), - static::FORMAT_JPEG => constant('IMAGETYPE_JPEG'), - static::FORMAT_PNG => constant('IMAGETYPE_PNG'), - ]; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Internet.php deleted file mode 100644 index 122d9c0..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Internet.php +++ /dev/null @@ -1,407 +0,0 @@ -generator->parse($format); - } - - /** - * @example 'jdoe@example.com' - * - * @return string - */ - final public function safeEmail() - { - return preg_replace('/\s/u', '', $this->userName() . '@' . static::safeEmailDomain()); - } - - /** - * @example 'jdoe@gmail.com' - * - * @return string - */ - public function freeEmail() - { - return preg_replace('/\s/u', '', $this->userName() . '@' . static::freeEmailDomain()); - } - - /** - * @example 'jdoe@dawson.com' - * - * @return string - */ - public function companyEmail() - { - return preg_replace('/\s/u', '', $this->userName() . '@' . $this->domainName()); - } - - /** - * @example 'gmail.com' - * - * @return string - */ - public static function freeEmailDomain() - { - return static::randomElement(static::$freeEmailDomain); - } - - /** - * @example 'example.org' - * - * @return string - */ - final public static function safeEmailDomain() - { - $domains = [ - 'example.com', - 'example.org', - 'example.net', - ]; - - return static::randomElement($domains); - } - - /** - * @example 'jdoe' - * - * @return string - */ - public function userName() - { - $format = static::randomElement(static::$userNameFormats); - $username = static::bothify($this->generator->parse($format)); - - $username = strtolower(static::transliterate($username)); - - // check if transliterate() didn't support the language and removed all letters - if (trim($username, '._') === '') { - throw new \Exception('userName failed with the selected locale. Try a different locale or activate the "intl" PHP extension.'); - } - - // clean possible trailing dots from first/last names - $username = str_replace('..', '.', $username); - $username = rtrim($username, '.'); - - return $username; - } - - /** - * @example 'fY4èHdZv68' - * - * @return string - */ - public function password($minLength = 6, $maxLength = 20) - { - $pattern = str_repeat('*', $this->numberBetween($minLength, $maxLength)); - - return $this->asciify($pattern); - } - - /** - * @example 'tiramisu.com' - * - * @return string - */ - public function domainName() - { - return $this->domainWord() . '.' . $this->tld(); - } - - /** - * @example 'faber' - * - * @return string - */ - public function domainWord() - { - $lastName = $this->generator->format('lastName'); - - $lastName = strtolower(static::transliterate($lastName)); - - // check if transliterate() didn't support the language and removed all letters - if (trim($lastName, '._') === '') { - throw new \Exception('domainWord failed with the selected locale. Try a different locale or activate the "intl" PHP extension.'); - } - - // clean possible trailing dot from last name - $lastName = rtrim($lastName, '.'); - - return $lastName; - } - - /** - * @example 'com' - * - * @return string - */ - public function tld() - { - return static::randomElement(static::$tld); - } - - /** - * @example 'http://www.runolfsdottir.com/' - * - * @return string - */ - public function url() - { - $format = static::randomElement(static::$urlFormats); - - return $this->generator->parse($format); - } - - /** - * @example 'aut-repellat-commodi-vel-itaque-nihil-id-saepe-nostrum' - * - * @return string - */ - public function slug($nbWords = 6, $variableNbWords = true) - { - if ($nbWords <= 0) { - return ''; - } - - if ($variableNbWords) { - $nbWords = (int) ($nbWords * self::numberBetween(60, 140) / 100) + 1; - } - $words = $this->generator->words($nbWords); - - return implode('-', $words); - } - - /** - * @example '237.149.115.38' - * - * @return string - */ - public function ipv4() - { - return long2ip(Miscellaneous::boolean() ? self::numberBetween(-2147483648, -2) : self::numberBetween(16777216, 2147483647)); - } - - /** - * @example '35cd:186d:3e23:2986:ef9f:5b41:42a4:e6f1' - * - * @return string - */ - public function ipv6() - { - $res = []; - - for ($i = 0; $i < 8; ++$i) { - $res[] = dechex(self::numberBetween(0, 65535)); - } - - return implode(':', $res); - } - - /** - * @example '10.1.1.17' - * - * @return string - */ - public static function localIpv4() - { - $ipBlock = self::randomElement(static::$localIpBlocks); - - return long2ip(static::numberBetween(ip2long($ipBlock[0]), ip2long($ipBlock[1]))); - } - - /** - * @example '32:F1:39:2F:D6:18' - * - * @return string - */ - public static function macAddress() - { - $mac = []; - - for ($i = 0; $i < 6; ++$i) { - $mac[] = sprintf('%02X', self::numberBetween(0, 0xff)); - } - - return implode(':', $mac); - } - - protected static function transliterate($string) - { - if (0 === preg_match('/[^A-Za-z0-9_.]/', $string)) { - return $string; - } - - $transId = 'Any-Latin; Latin-ASCII; NFD; [:Nonspacing Mark:] Remove; NFC;'; - - if (class_exists(\Transliterator::class, false) && $transliterator = \Transliterator::create($transId)) { - $transString = $transliterator->transliterate($string); - } else { - $transString = static::toAscii($string); - } - - return preg_replace('/[^A-Za-z0-9_.]/u', '', $transString); - } - - protected static function toAscii($string) - { - static $arrayFrom, $arrayTo; - - if (empty($arrayFrom)) { - $transliterationTable = [ - 'IJ' => 'I', 'Ö' => 'O', 'Œ' => 'O', 'Ü' => 'U', 'ä' => 'a', 'æ' => 'a', - 'ij' => 'i', 'ö' => 'o', 'œ' => 'o', 'ü' => 'u', 'ß' => 's', 'ſ' => 's', - 'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', - 'Æ' => 'A', 'Ā' => 'A', 'Ą' => 'A', 'Ă' => 'A', 'Ç' => 'C', 'Ć' => 'C', - 'Č' => 'C', 'Ĉ' => 'C', 'Ċ' => 'C', 'Ď' => 'D', 'Đ' => 'D', 'È' => 'E', - 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ē' => 'E', 'Ę' => 'E', 'Ě' => 'E', - 'Ĕ' => 'E', 'Ė' => 'E', 'Ĝ' => 'G', 'Ğ' => 'G', 'Ġ' => 'G', 'Ģ' => 'G', - 'Ĥ' => 'H', 'Ħ' => 'H', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', - 'Ī' => 'I', 'Ĩ' => 'I', 'Ĭ' => 'I', 'Į' => 'I', 'İ' => 'I', 'Ĵ' => 'J', - 'Ķ' => 'K', 'Ľ' => 'K', 'Ĺ' => 'K', 'Ļ' => 'K', 'Ŀ' => 'K', 'Ł' => 'L', - 'Ñ' => 'N', 'Ń' => 'N', 'Ň' => 'N', 'Ņ' => 'N', 'Ŋ' => 'N', 'Ò' => 'O', - 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ø' => 'O', 'Ō' => 'O', 'Ő' => 'O', - 'Ŏ' => 'O', 'Ŕ' => 'R', 'Ř' => 'R', 'Ŗ' => 'R', 'Ś' => 'S', 'Ş' => 'S', - 'Ŝ' => 'S', 'Ș' => 'S', 'Š' => 'S', 'Ť' => 'T', 'Ţ' => 'T', 'Ŧ' => 'T', - 'Ț' => 'T', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ū' => 'U', 'Ů' => 'U', - 'Ű' => 'U', 'Ŭ' => 'U', 'Ũ' => 'U', 'Ų' => 'U', 'Ŵ' => 'W', 'Ŷ' => 'Y', - 'Ÿ' => 'Y', 'Ý' => 'Y', 'Ź' => 'Z', 'Ż' => 'Z', 'Ž' => 'Z', 'à' => 'a', - 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ā' => 'a', 'ą' => 'a', 'ă' => 'a', - 'å' => 'a', 'ç' => 'c', 'ć' => 'c', 'č' => 'c', 'ĉ' => 'c', 'ċ' => 'c', - 'ď' => 'd', 'đ' => 'd', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', - 'ē' => 'e', 'ę' => 'e', 'ě' => 'e', 'ĕ' => 'e', 'ė' => 'e', 'ƒ' => 'f', - 'ĝ' => 'g', 'ğ' => 'g', 'ġ' => 'g', 'ģ' => 'g', 'ĥ' => 'h', 'ħ' => 'h', - 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ī' => 'i', 'ĩ' => 'i', - 'ĭ' => 'i', 'į' => 'i', 'ı' => 'i', 'ĵ' => 'j', 'ķ' => 'k', 'ĸ' => 'k', - 'ł' => 'l', 'ľ' => 'l', 'ĺ' => 'l', 'ļ' => 'l', 'ŀ' => 'l', 'ñ' => 'n', - 'ń' => 'n', 'ň' => 'n', 'ņ' => 'n', 'ʼn' => 'n', 'ŋ' => 'n', 'ò' => 'o', - 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ø' => 'o', 'ō' => 'o', 'ő' => 'o', - 'ŏ' => 'o', 'ŕ' => 'r', 'ř' => 'r', 'ŗ' => 'r', 'ś' => 's', 'š' => 's', - 'ť' => 't', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ū' => 'u', 'ů' => 'u', - 'ű' => 'u', 'ŭ' => 'u', 'ũ' => 'u', 'ų' => 'u', 'ŵ' => 'w', 'ÿ' => 'y', - 'ý' => 'y', 'ŷ' => 'y', 'ż' => 'z', 'ź' => 'z', 'ž' => 'z', 'Α' => 'A', - 'Ά' => 'A', 'Ἀ' => 'A', 'Ἁ' => 'A', 'Ἂ' => 'A', 'Ἃ' => 'A', 'Ἄ' => 'A', - 'Ἅ' => 'A', 'Ἆ' => 'A', 'Ἇ' => 'A', 'ᾈ' => 'A', 'ᾉ' => 'A', 'ᾊ' => 'A', - 'ᾋ' => 'A', 'ᾌ' => 'A', 'ᾍ' => 'A', 'ᾎ' => 'A', 'ᾏ' => 'A', 'Ᾰ' => 'A', - 'Ᾱ' => 'A', 'Ὰ' => 'A', 'ᾼ' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', - 'Ε' => 'E', 'Έ' => 'E', 'Ἐ' => 'E', 'Ἑ' => 'E', 'Ἒ' => 'E', 'Ἓ' => 'E', - 'Ἔ' => 'E', 'Ἕ' => 'E', 'Ὲ' => 'E', 'Ζ' => 'Z', 'Η' => 'I', 'Ή' => 'I', - 'Ἠ' => 'I', 'Ἡ' => 'I', 'Ἢ' => 'I', 'Ἣ' => 'I', 'Ἤ' => 'I', 'Ἥ' => 'I', - 'Ἦ' => 'I', 'Ἧ' => 'I', 'ᾘ' => 'I', 'ᾙ' => 'I', 'ᾚ' => 'I', 'ᾛ' => 'I', - 'ᾜ' => 'I', 'ᾝ' => 'I', 'ᾞ' => 'I', 'ᾟ' => 'I', 'Ὴ' => 'I', 'ῌ' => 'I', - 'Θ' => 'T', 'Ι' => 'I', 'Ί' => 'I', 'Ϊ' => 'I', 'Ἰ' => 'I', 'Ἱ' => 'I', - 'Ἲ' => 'I', 'Ἳ' => 'I', 'Ἴ' => 'I', 'Ἵ' => 'I', 'Ἶ' => 'I', 'Ἷ' => 'I', - 'Ῐ' => 'I', 'Ῑ' => 'I', 'Ὶ' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', - 'Ν' => 'N', 'Ξ' => 'K', 'Ο' => 'O', 'Ό' => 'O', 'Ὀ' => 'O', 'Ὁ' => 'O', - 'Ὂ' => 'O', 'Ὃ' => 'O', 'Ὄ' => 'O', 'Ὅ' => 'O', 'Ὸ' => 'O', 'Π' => 'P', - 'Ρ' => 'R', 'Ῥ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Ύ' => 'Y', - 'Ϋ' => 'Y', 'Ὑ' => 'Y', 'Ὓ' => 'Y', 'Ὕ' => 'Y', 'Ὗ' => 'Y', 'Ῠ' => 'Y', - 'Ῡ' => 'Y', 'Ὺ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'P', 'Ω' => 'O', - 'Ώ' => 'O', 'Ὠ' => 'O', 'Ὡ' => 'O', 'Ὢ' => 'O', 'Ὣ' => 'O', 'Ὤ' => 'O', - 'Ὥ' => 'O', 'Ὦ' => 'O', 'Ὧ' => 'O', 'ᾨ' => 'O', 'ᾩ' => 'O', 'ᾪ' => 'O', - 'ᾫ' => 'O', 'ᾬ' => 'O', 'ᾭ' => 'O', 'ᾮ' => 'O', 'ᾯ' => 'O', 'Ὼ' => 'O', - 'ῼ' => 'O', 'α' => 'a', 'ά' => 'a', 'ἀ' => 'a', 'ἁ' => 'a', 'ἂ' => 'a', - 'ἃ' => 'a', 'ἄ' => 'a', 'ἅ' => 'a', 'ἆ' => 'a', 'ἇ' => 'a', 'ᾀ' => 'a', - 'ᾁ' => 'a', 'ᾂ' => 'a', 'ᾃ' => 'a', 'ᾄ' => 'a', 'ᾅ' => 'a', 'ᾆ' => 'a', - 'ᾇ' => 'a', 'ὰ' => 'a', 'ᾰ' => 'a', 'ᾱ' => 'a', 'ᾲ' => 'a', 'ᾳ' => 'a', - 'ᾴ' => 'a', 'ᾶ' => 'a', 'ᾷ' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', - 'ε' => 'e', 'έ' => 'e', 'ἐ' => 'e', 'ἑ' => 'e', 'ἒ' => 'e', 'ἓ' => 'e', - 'ἔ' => 'e', 'ἕ' => 'e', 'ὲ' => 'e', 'ζ' => 'z', 'η' => 'i', 'ή' => 'i', - 'ἠ' => 'i', 'ἡ' => 'i', 'ἢ' => 'i', 'ἣ' => 'i', 'ἤ' => 'i', 'ἥ' => 'i', - 'ἦ' => 'i', 'ἧ' => 'i', 'ᾐ' => 'i', 'ᾑ' => 'i', 'ᾒ' => 'i', 'ᾓ' => 'i', - 'ᾔ' => 'i', 'ᾕ' => 'i', 'ᾖ' => 'i', 'ᾗ' => 'i', 'ὴ' => 'i', 'ῂ' => 'i', - 'ῃ' => 'i', 'ῄ' => 'i', 'ῆ' => 'i', 'ῇ' => 'i', 'θ' => 't', 'ι' => 'i', - 'ί' => 'i', 'ϊ' => 'i', 'ΐ' => 'i', 'ἰ' => 'i', 'ἱ' => 'i', 'ἲ' => 'i', - 'ἳ' => 'i', 'ἴ' => 'i', 'ἵ' => 'i', 'ἶ' => 'i', 'ἷ' => 'i', 'ὶ' => 'i', - 'ῐ' => 'i', 'ῑ' => 'i', 'ῒ' => 'i', 'ῖ' => 'i', 'ῗ' => 'i', 'κ' => 'k', - 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => 'k', 'ο' => 'o', 'ό' => 'o', - 'ὀ' => 'o', 'ὁ' => 'o', 'ὂ' => 'o', 'ὃ' => 'o', 'ὄ' => 'o', 'ὅ' => 'o', - 'ὸ' => 'o', 'π' => 'p', 'ρ' => 'r', 'ῤ' => 'r', 'ῥ' => 'r', 'σ' => 's', - 'ς' => 's', 'τ' => 't', 'υ' => 'y', 'ύ' => 'y', 'ϋ' => 'y', 'ΰ' => 'y', - 'ὐ' => 'y', 'ὑ' => 'y', 'ὒ' => 'y', 'ὓ' => 'y', 'ὔ' => 'y', 'ὕ' => 'y', - 'ὖ' => 'y', 'ὗ' => 'y', 'ὺ' => 'y', 'ῠ' => 'y', 'ῡ' => 'y', 'ῢ' => 'y', - 'ῦ' => 'y', 'ῧ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'p', 'ω' => 'o', - 'ώ' => 'o', 'ὠ' => 'o', 'ὡ' => 'o', 'ὢ' => 'o', 'ὣ' => 'o', 'ὤ' => 'o', - 'ὥ' => 'o', 'ὦ' => 'o', 'ὧ' => 'o', 'ᾠ' => 'o', 'ᾡ' => 'o', 'ᾢ' => 'o', - 'ᾣ' => 'o', 'ᾤ' => 'o', 'ᾥ' => 'o', 'ᾦ' => 'o', 'ᾧ' => 'o', 'ὼ' => 'o', - 'ῲ' => 'o', 'ῳ' => 'o', 'ῴ' => 'o', 'ῶ' => 'o', 'ῷ' => 'o', 'А' => 'A', - 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', - 'Ж' => 'Z', 'З' => 'Z', 'И' => 'I', 'Й' => 'I', 'К' => 'K', 'Л' => 'L', - 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', - 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'K', 'Ц' => 'T', 'Ч' => 'C', - 'Ш' => 'S', 'Щ' => 'S', 'Ы' => 'Y', 'Э' => 'E', 'Ю' => 'Y', 'Я' => 'Y', - 'а' => 'A', 'б' => 'B', 'в' => 'V', 'г' => 'G', 'д' => 'D', 'е' => 'E', - 'ё' => 'E', 'ж' => 'Z', 'з' => 'Z', 'и' => 'I', 'й' => 'I', 'к' => 'K', - 'л' => 'L', 'м' => 'M', 'н' => 'N', 'о' => 'O', 'п' => 'P', 'р' => 'R', - 'с' => 'S', 'т' => 'T', 'у' => 'U', 'ф' => 'F', 'х' => 'K', 'ц' => 'T', - 'ч' => 'C', 'ш' => 'S', 'щ' => 'S', 'ы' => 'Y', 'э' => 'E', 'ю' => 'Y', - 'я' => 'Y', 'ð' => 'd', 'Ð' => 'D', 'þ' => 't', 'Þ' => 'T', 'ა' => 'a', - 'ბ' => 'b', 'გ' => 'g', 'დ' => 'd', 'ე' => 'e', 'ვ' => 'v', 'ზ' => 'z', - 'თ' => 't', 'ი' => 'i', 'კ' => 'k', 'ლ' => 'l', 'მ' => 'm', 'ნ' => 'n', - 'ო' => 'o', 'პ' => 'p', 'ჟ' => 'z', 'რ' => 'r', 'ს' => 's', 'ტ' => 't', - 'უ' => 'u', 'ფ' => 'p', 'ქ' => 'k', 'ღ' => 'g', 'ყ' => 'q', 'შ' => 's', - 'ჩ' => 'c', 'ც' => 't', 'ძ' => 'd', 'წ' => 't', 'ჭ' => 'c', 'ხ' => 'k', - 'ჯ' => 'j', 'ჰ' => 'h', 'ţ' => 't', 'ʼ' => "'", '̧' => '', 'ḩ' => 'h', - '‘' => "'", '’' => "'", 'ừ' => 'u', '/' => '', 'ế' => 'e', 'ả' => 'a', - 'ị' => 'i', 'ậ' => 'a', 'ệ' => 'e', 'ỉ' => 'i', 'ồ' => 'o', 'ề' => 'e', - 'ơ' => 'o', 'ạ' => 'a', 'ẵ' => 'a', 'ư' => 'u', 'ằ' => 'a', 'ầ' => 'a', - 'ḑ' => 'd', 'Ḩ' => 'H', 'Ḑ' => 'D', 'ș' => 's', 'ț' => 't', 'ộ' => 'o', - 'ắ' => 'a', 'ş' => 's', "'" => '', 'ու' => 'u', 'ա' => 'a', 'բ' => 'b', - 'գ' => 'g', 'դ' => 'd', 'ե' => 'e', 'զ' => 'z', 'է' => 'e', 'ը' => 'y', - 'թ' => 't', 'ժ' => 'zh', 'ի' => 'i', 'լ' => 'l', 'խ' => 'kh', 'ծ' => 'ts', - 'կ' => 'k', 'հ' => 'h', 'ձ' => 'dz', 'ղ' => 'gh', 'ճ' => 'ch', 'մ' => 'm', - 'յ' => 'y', 'ն' => 'n', 'շ' => 'sh', 'ո' => 'o', 'չ' => 'ch', 'պ' => 'p', - 'ջ' => 'j', 'ռ' => 'r', 'ս' => 's', 'վ' => 'v', 'տ' => 't', 'ր' => 'r', - 'ց' => 'ts', 'փ' => 'p', 'ք' => 'q', 'և' => 'ev', 'օ' => 'o', 'ֆ' => 'f', - ]; - $arrayFrom = array_keys($transliterationTable); - $arrayTo = array_values($transliterationTable); - } - - return str_replace($arrayFrom, $arrayTo, $string); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Lorem.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Lorem.php deleted file mode 100644 index 2cfb70e..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Lorem.php +++ /dev/null @@ -1,228 +0,0 @@ -generator->parse('{{bloodType}}{{bloodRh}}'); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Miscellaneous.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Miscellaneous.php deleted file mode 100644 index 354f67b..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Miscellaneous.php +++ /dev/null @@ -1,342 +0,0 @@ - [ - '4539###########', - '4556###########', - '4916###########', - '4532###########', - '4929###########', - '40240071#######', - '4485###########', - '4716###########', - '4##############', - ], - 'Visa Retired' => [ - '4539########', - '4556########', - '4916########', - '4532########', - '4929########', - '40240071####', - '4485########', - '4716########', - '4###########', - ], - 'MasterCard' => [ - '2221###########', - '23#############', - '24#############', - '25#############', - '26#############', - '2720###########', - '51#############', - '52#############', - '53#############', - '54#############', - '55#############', - ], - 'American Express' => [ - '34############', - '37############', - ], - 'Discover Card' => [ - '6011###########', - ], - 'JCB' => [ - '3528###########', - '3589###########', - ], - ]; - - /** - * @var array list of IBAN formats, source: @see https://www.swift.com/standards/data-standards/iban - */ - protected static $ibanFormats = [ - 'AD' => [['n', 4], ['n', 4], ['c', 12]], - 'AE' => [['n', 3], ['n', 16]], - 'AL' => [['n', 8], ['c', 16]], - 'AT' => [['n', 5], ['n', 11]], - 'AZ' => [['a', 4], ['c', 20]], - 'BA' => [['n', 3], ['n', 3], ['n', 8], ['n', 2]], - 'BE' => [['n', 3], ['n', 7], ['n', 2]], - 'BG' => [['a', 4], ['n', 4], ['n', 2], ['c', 8]], - 'BH' => [['a', 4], ['c', 14]], - 'BR' => [['n', 8], ['n', 5], ['n', 10], ['a', 1], ['c', 1]], - 'CH' => [['n', 5], ['c', 12]], - 'CR' => [['n', 4], ['n', 14]], - 'CY' => [['n', 3], ['n', 5], ['c', 16]], - 'CZ' => [['n', 4], ['n', 6], ['n', 10]], - 'DE' => [['n', 8], ['n', 10]], - 'DK' => [['n', 4], ['n', 9], ['n', 1]], - 'DO' => [['c', 4], ['n', 20]], - 'EE' => [['n', 2], ['n', 2], ['n', 11], ['n', 1]], - 'EG' => [['n', 4], ['n', 4], ['n', 17]], - 'ES' => [['n', 4], ['n', 4], ['n', 1], ['n', 1], ['n', 10]], - 'FI' => [['n', 6], ['n', 7], ['n', 1]], - 'FR' => [['n', 5], ['n', 5], ['c', 11], ['n', 2]], - 'GB' => [['a', 4], ['n', 6], ['n', 8]], - 'GE' => [['a', 2], ['n', 16]], - 'GI' => [['a', 4], ['c', 15]], - 'GR' => [['n', 3], ['n', 4], ['c', 16]], - 'GT' => [['c', 4], ['c', 20]], - 'HR' => [['n', 7], ['n', 10]], - 'HU' => [['n', 3], ['n', 4], ['n', 1], ['n', 15], ['n', 1]], - 'IE' => [['a', 4], ['n', 6], ['n', 8]], - 'IL' => [['n', 3], ['n', 3], ['n', 13]], - 'IS' => [['n', 4], ['n', 2], ['n', 6], ['n', 10]], - 'IT' => [['a', 1], ['n', 5], ['n', 5], ['c', 12]], - 'KW' => [['a', 4], ['n', 22]], - 'KZ' => [['n', 3], ['c', 13]], - 'LB' => [['n', 4], ['c', 20]], - 'LI' => [['n', 5], ['c', 12]], - 'LT' => [['n', 5], ['n', 11]], - 'LU' => [['n', 3], ['c', 13]], - 'LV' => [['a', 4], ['c', 13]], - 'MC' => [['n', 5], ['n', 5], ['c', 11], ['n', 2]], - 'MD' => [['c', 2], ['c', 18]], - 'ME' => [['n', 3], ['n', 13], ['n', 2]], - 'MK' => [['n', 3], ['c', 10], ['n', 2]], - 'MR' => [['n', 5], ['n', 5], ['n', 11], ['n', 2]], - 'MT' => [['a', 4], ['n', 5], ['c', 18]], - 'MU' => [['a', 4], ['n', 2], ['n', 2], ['n', 12], ['n', 3], ['a', 3]], - 'NL' => [['a', 4], ['n', 10]], - 'NO' => [['n', 4], ['n', 6], ['n', 1]], - 'PK' => [['a', 4], ['c', 16]], - 'PL' => [['n', 8], ['n', 16]], - 'PS' => [['a', 4], ['c', 21]], - 'PT' => [['n', 4], ['n', 4], ['n', 11], ['n', 2]], - 'RO' => [['a', 4], ['c', 16]], - 'RS' => [['n', 3], ['n', 13], ['n', 2]], - 'SA' => [['n', 2], ['c', 18]], - 'SE' => [['n', 3], ['n', 16], ['n', 1]], - 'SI' => [['n', 5], ['n', 8], ['n', 2]], - 'SK' => [['n', 4], ['n', 6], ['n', 10]], - 'SM' => [['a', 1], ['n', 5], ['n', 5], ['c', 12]], - 'TN' => [['n', 2], ['n', 3], ['n', 13], ['n', 2]], - 'TR' => [['n', 5], ['n', 1], ['c', 16]], - 'VG' => [['a', 4], ['n', 16]], - ]; - - /** - * @return string Returns a credit card vendor name - * - * @example 'MasterCard' - */ - public static function creditCardType() - { - return static::randomElement(static::$cardVendors); - } - - /** - * Returns the String of a credit card number. - * - * @param string $type Supporting any of 'Visa', 'MasterCard', 'American Express', 'Discover' and 'JCB' - * @param bool $formatted Set to true if the output string should contain one separator every 4 digits - * @param string $separator Separator string for formatting card number. Defaults to dash (-). - * - * @return string - * - * @example '4485480221084675' - */ - public static function creditCardNumber($type = null, $formatted = false, $separator = '-') - { - if (null === $type) { - $type = static::creditCardType(); - } - $mask = static::randomElement(static::$cardParams[$type]); - - $number = static::numerify($mask); - $number .= Luhn::computeCheckDigit($number); - - if ($formatted) { - $p1 = substr($number, 0, 4); - $p2 = substr($number, 4, 4); - $p3 = substr($number, 8, 4); - $p4 = substr($number, 12); - $number = $p1 . $separator . $p2 . $separator . $p3 . $separator . $p4; - } - - return $number; - } - - /** - * @param bool $valid True (by default) to get a valid expiration date, false to get a maybe valid date - * - * @return \DateTime - * - * @example 04/13 - */ - public function creditCardExpirationDate($valid = true) - { - if ($valid) { - return $this->generator->dateTimeBetween('now', '36 months'); - } - - return $this->generator->dateTimeBetween('-36 months', '36 months'); - } - - /** - * @param bool $valid True (by default) to get a valid expiration date, false to get a maybe valid date - * @param string $expirationDateFormat - * - * @return string - * - * @example '04/13' - */ - public function creditCardExpirationDateString($valid = true, $expirationDateFormat = null) - { - return $this->creditCardExpirationDate($valid)->format(null === $expirationDateFormat ? static::$expirationDateFormat : $expirationDateFormat); - } - - /** - * @param bool $valid True (by default) to get a valid expiration date, false to get a maybe valid date - * - * @return array - */ - public function creditCardDetails($valid = true) - { - $type = static::creditCardType(); - - return [ - 'type' => $type, - 'number' => static::creditCardNumber($type), - 'name' => $this->generator->name(), - 'expirationDate' => $this->creditCardExpirationDateString($valid), - ]; - } - - /** - * International Bank Account Number (IBAN) - * - * @see http://en.wikipedia.org/wiki/International_Bank_Account_Number - * - * @param string $countryCode ISO 3166-1 alpha-2 country code - * @param string $prefix for generating bank account number of a specific bank - * @param int $length total length without country code and 2 check digits - * - * @return string - */ - public static function iban($countryCode = null, $prefix = '', $length = null) - { - $countryCode = null === $countryCode ? self::randomKey(self::$ibanFormats) : strtoupper($countryCode); - - $format = !isset(static::$ibanFormats[$countryCode]) ? null : static::$ibanFormats[$countryCode]; - - if ($length === null) { - if ($format === null) { - $length = 24; - } else { - $length = 0; - - foreach ($format as $part) { - [$class, $groupCount] = $part; - $length += $groupCount; - } - } - } - - if ($format === null) { - $format = [['n', $length]]; - } - - $expandedFormat = ''; - - foreach ($format as $item) { - [$class, $length] = $item; - $expandedFormat .= str_repeat($class, $length); - } - - $result = $prefix; - $expandedFormat = substr($expandedFormat, strlen($result)); - - foreach (str_split($expandedFormat) as $class) { - switch ($class) { - default: - case 'c': - $result .= Miscellaneous::boolean() ? static::randomDigit() : strtoupper(static::randomLetter()); - - break; - - case 'a': - $result .= strtoupper(static::randomLetter()); - - break; - - case 'n': - $result .= static::randomDigit(); - - break; - } - } - - $checksum = Iban::checksum($countryCode . '00' . $result); - - return $countryCode . $checksum . $result; - } - - /** - * Return the String of a SWIFT/BIC number - * - * @example 'RZTIAT22263' - * - * @see http://en.wikipedia.org/wiki/ISO_9362 - * - * @return string Swift/Bic number - */ - public static function swiftBicNumber() - { - return self::regexify('^([A-Z]){4}([A-Z]){2}([0-9A-Z]){2}([0-9A-Z]{3})?$'); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Person.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Person.php deleted file mode 100644 index c11a72b..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Person.php +++ /dev/null @@ -1,147 +0,0 @@ -generator->parse($format); - } - - /** - * @param string|null $gender 'male', 'female' or null for any - * - * @return string - * - * @example 'John' - */ - public function firstName($gender = null) - { - if ($gender === static::GENDER_MALE) { - return static::firstNameMale(); - } - - if ($gender === static::GENDER_FEMALE) { - return static::firstNameFemale(); - } - - return $this->generator->parse(static::randomElement(static::$firstNameFormat)); - } - - /** - * @return string - */ - public static function firstNameMale() - { - return static::randomElement(static::$firstNameMale); - } - - /** - * @return string - */ - public static function firstNameFemale() - { - return static::randomElement(static::$firstNameFemale); - } - - /** - * @example 'Doe' - * - * @return string - */ - public function lastName() - { - return static::randomElement(static::$lastName); - } - - /** - * @example 'Mrs.' - * - * @param string|null $gender 'male', 'female' or null for any - * - * @return string - */ - public function title($gender = null) - { - if ($gender === static::GENDER_MALE) { - return static::titleMale(); - } - - if ($gender === static::GENDER_FEMALE) { - return static::titleFemale(); - } - - return $this->generator->parse(static::randomElement(static::$titleFormat)); - } - - /** - * @example 'Mr.' - * - * @return string - */ - public static function titleMale() - { - return static::randomElement(static::$titleMale); - } - - /** - * @example 'Mrs.' - * - * @return string - */ - public static function titleFemale() - { - return static::randomElement(static::$titleFemale); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/PhoneNumber.php deleted file mode 100644 index 515ef57..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/PhoneNumber.php +++ /dev/null @@ -1,270 +0,0 @@ -generator->parse(static::randomElement(static::$formats))); - } - - /** - * @example +11134567890 - * - * @return string - */ - public function e164PhoneNumber() - { - return static::numerify($this->generator->parse(static::randomElement(static::$e164Formats))); - } - - /** - * International Mobile Equipment Identity (IMEI) - * - * @see http://en.wikipedia.org/wiki/International_Mobile_Station_Equipment_Identity - * @see http://imei-number.com/imei-validation-check/ - * - * @example '720084494799532' - * - * @return int $imei - */ - public function imei() - { - $imei = (string) static::numerify('##############'); - $imei .= Luhn::computeCheckDigit($imei); - - return $imei; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Text.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Text.php deleted file mode 100644 index 585d5b5..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/Text.php +++ /dev/null @@ -1,202 +0,0 @@ -realTextBetween((int) round($maxNbChars * 0.8), $maxNbChars, $indexSize); - } - - /** - * Generate a text string by the Markov chain algorithm. - * - * Depending on the $maxNbChars, returns a random valid looking text. The algorithm - * generates a weighted table with the specified number of words as the index and the - * possible following words as the value. - * - * @example 'Alice, swallowing down her flamingo, and began by taking the little golden key' - * - * @param int $minNbChars Minimum number of characters the text should contain (maximum: 8) - * @param int $maxNbChars Maximum number of characters the text should contain (minimum: 10) - * @param int $indexSize Determines how many words are considered for the generation of the next word. - * The minimum is 1, and it produces a higher level of randomness, although the - * generated text usually doesn't make sense. Higher index sizes (up to 5) - * produce more correct text, at the price of less randomness. - * - * @return string - */ - public function realTextBetween($minNbChars = 160, $maxNbChars = 200, $indexSize = 2) - { - if ($minNbChars < 1) { - throw new \InvalidArgumentException('minNbChars must be at least 1'); - } - - if ($maxNbChars < 10) { - throw new \InvalidArgumentException('maxNbChars must be at least 10'); - } - - if ($indexSize < 1) { - throw new \InvalidArgumentException('indexSize must be at least 1'); - } - - if ($indexSize > 5) { - throw new \InvalidArgumentException('indexSize must be at most 5'); - } - - if ($minNbChars >= $maxNbChars) { - throw new \InvalidArgumentException('minNbChars must be smaller than maxNbChars'); - } - - $words = $this->getConsecutiveWords($indexSize); - $iterations = 0; - - do { - ++$iterations; - - if ($iterations >= 100) { - throw new \OverflowException(sprintf('Maximum retries of %d reached without finding a valid real text', $iterations)); - } - - $result = $this->generateText($maxNbChars, $words); - } while (static::strlen($result) <= $minNbChars); - - return $result; - } - - /** - * @param int $maxNbChars - * @param array $words - * - * @return string - */ - protected function generateText($maxNbChars, $words) - { - $result = []; - $resultLength = 0; - // take a random starting point - $next = static::randomKey($words); - - while ($resultLength < $maxNbChars && isset($words[$next])) { - // fetch a random word to append - $word = static::randomElement($words[$next]); - - // calculate next index - $currentWords = static::explode($next); - $currentWords[] = $word; - array_shift($currentWords); - $next = static::implode($currentWords); - - // ensure text starts with an uppercase letter - if ($resultLength == 0 && !static::validStart($word)) { - continue; - } - - // append the element - $result[] = $word; - $resultLength += static::strlen($word) + static::$separatorLen; - } - - // remove the element that caused the text to overflow - array_pop($result); - - // build result - $result = static::implode($result); - - return static::appendEnd($result); - } - - protected function getConsecutiveWords($indexSize) - { - if (!isset($this->consecutiveWords[$indexSize])) { - $parts = $this->getExplodedText(); - $words = []; - $index = []; - - for ($i = 0; $i < $indexSize; ++$i) { - $index[] = array_shift($parts); - } - - for ($i = 0, $count = count($parts); $i < $count; ++$i) { - $stringIndex = static::implode($index); - - if (!isset($words[$stringIndex])) { - $words[$stringIndex] = []; - } - $word = $parts[$i]; - $words[$stringIndex][] = $word; - array_shift($index); - $index[] = $word; - } - // cache look up words for performance - $this->consecutiveWords[$indexSize] = $words; - } - - return $this->consecutiveWords[$indexSize]; - } - - protected function getExplodedText() - { - if ($this->explodedText === null) { - $this->explodedText = static::explode(preg_replace('/\s+/u', ' ', static::$baseText)); - } - - return $this->explodedText; - } - - protected static function explode($text) - { - return explode(static::$separator, $text); - } - - protected static function implode($words) - { - return implode(static::$separator, $words); - } - - protected static function strlen($text) - { - return function_exists('mb_strlen') ? mb_strlen($text, 'UTF-8') : strlen($text); - } - - protected static function validStart($word) - { - $isValid = true; - - if (static::$textStartsWithUppercase) { - $isValid = preg_match('/^\p{Lu}/u', $word); - } - - return $isValid; - } - - protected static function appendEnd($text) - { - return preg_replace("/([ ,-:;\x{2013}\x{2014}]+$)/us", '', $text) . '.'; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/UserAgent.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/UserAgent.php deleted file mode 100644 index 752df4d..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/UserAgent.php +++ /dev/null @@ -1,219 +0,0 @@ -> 8) | (($tLo & 0xff000000) >> 24); - $tMi = (($tMi & 0x00ff) << 8) | (($tMi & 0xff00) >> 8); - $tHi = (($tHi & 0x00ff) << 8) | (($tHi & 0xff00) >> 8); - } - - // apply version number - $tHi &= 0x0fff; - $tHi |= (3 << 12); - - // cast to string - return sprintf( - '%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x', - $tLo, - $tMi, - $tHi, - $csHi, - $csLo, - $byte[10], - $byte[11], - $byte[12], - $byte[13], - $byte[14], - $byte[15], - ); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Address.php deleted file mode 100644 index 87facaa..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Address.php +++ /dev/null @@ -1,217 +0,0 @@ - '02', - 'الإسماعيلية' => '19', - 'أسوان' => '28', - 'أسيوط' => '25', - 'الأقصر' => '29', - 'البحر الأحمر' => '31', - 'البحيرة' => '18', - 'بني سويف' => '22', - 'بورسعيد' => '03', - 'جنوب سيناء' => '35', - 'القاهرة' => '01', - 'الدقهلية' => '12', - 'دمياط' => '11', - 'سوهاج' => '26', - 'السويس' => '04', - 'الشرقية' => '13', - 'شمال سيناء' => '34', - 'الغربية' => '16', - 'الفيوم' => '23', - 'القليوبية' => '14', - 'قنا' => '27', - 'كفر الشيخ' => '15', - 'مطروح' => '33', - 'المنوفية' => '17', - 'المنيا' => '24', - 'الوادي الجديد' => '32', - ]; - - protected static $buildingNumber = ['%####', '%###', '%#']; - - protected static $postcode = ['#####', '#####-####']; - - /** - * @see http://www.nationsonline.org/oneworld/countrynames_arabic.htm - */ - protected static $country = [ - 'الكاريبي', 'أمريكا الوسطى', 'أنتيجوا وبربودا', 'أنجولا', 'أنجويلا', 'أندورا', 'اندونيسيا', 'أورجواي', 'أوروبا', 'أوزبكستان', 'أوغندا', 'أوقيانوسيا', 'أوقيانوسيا النائية', 'أوكرانيا', 'ايران', 'أيرلندا', 'أيسلندا', 'ايطاليا', - 'بابوا غينيا الجديدة', 'باراجواي', 'باكستان', 'بالاو', 'بتسوانا', 'بتكايرن', 'بربادوس', 'برمودا', 'بروناي', 'بلجيكا', 'بلغاريا', 'بليز', 'بنجلاديش', 'بنما', 'بنين', 'بوتان', 'بورتوريكو', 'بوركينا فاسو', 'بوروندي', 'بولندا', 'بوليفيا', 'بولينيزيا', 'بولينيزيا الفرنسية', 'بيرو', - 'تانزانيا', 'تايلند', 'تايوان', 'تركمانستان', 'تركيا', 'ترينيداد وتوباغو', 'تشاد', 'توجو', 'توفالو', 'توكيلو', 'تونجا', 'تونس', 'تيمور الشرقية', - 'جامايكا', 'جبل طارق', 'جرينادا', 'جرينلاند', 'جزر الأنتيل الهولندية', 'جزر الترك وجايكوس', 'جزر القمر', 'جزر الكايمن', 'جزر المارشال', 'جزر الملديف', 'جزر الولايات المتحدة البعيدة الصغيرة', 'جزر أولان', 'جزر سليمان', 'جزر فارو', 'جزر فرجين الأمريكية', 'جزر فرجين البريطانية', 'جزر فوكلاند', 'جزر كوك', 'جزر كوكوس', 'جزر ماريانا الشمالية', 'جزر والس وفوتونا', 'جزيرة الكريسماس', 'جزيرة بوفيه', 'جزيرة مان', 'جزيرة نورفوك', 'جزيرة هيرد وماكدونالد', 'جمهورية افريقيا الوسطى', 'جمهورية التشيك', 'جمهورية الدومينيك', 'جمهورية الكونغو الديمقراطية', 'جمهورية جنوب افريقيا', 'جنوب آسيا', 'جنوب أوروبا', 'جنوب شرق آسيا', 'جنوب وسط آسيا', 'جواتيمالا', 'جوادلوب', 'جوام', 'جورجيا', 'جورجيا الجنوبية وجزر ساندويتش الجنوبية', 'جيبوتي', 'جيرسي', - 'دومينيكا', - 'رواندا', 'روسيا', 'روسيا البيضاء', 'رومانيا', 'روينيون', - 'زامبيا', 'زيمبابوي', - 'ساحل العاج', 'ساموا', 'ساموا الأمريكية', 'سانت بيير وميكولون', 'سانت فنسنت وغرنادين', 'سانت كيتس ونيفيس', 'سانت لوسيا', 'سانت مارتين', 'سانت هيلنا', 'سان مارينو', 'ساو تومي وبرينسيبي', 'سريلانكا', 'سفالبارد وجان مايان', 'سلوفاكيا', 'سلوفينيا', 'سنغافورة', 'سوازيلاند', 'سوريا', 'سورينام', 'سويسرا', 'سيراليون', 'سيشل', - 'شرق آسيا', 'شرق افريقيا', 'شرق أوروبا', 'شمال افريقيا', 'شمال أمريكا', 'شمال أوروبا', 'شيلي', - 'صربيا', 'صربيا والجبل الأسود', - 'طاجكستان', - 'عمان', - 'غامبيا', 'غانا', 'غرب آسيا', 'غرب افريقيا', 'غرب أوروبا', 'غويانا', 'غيانا', 'غينيا', 'غينيا الاستوائية', 'غينيا بيساو', - 'فانواتو', 'فرنسا', 'فلسطين', 'فنزويلا', 'فنلندا', 'فيتنام', 'فيجي', - 'قبرص', 'قرغيزستان', 'قطر', - 'كازاخستان', 'كاليدونيا الجديدة', 'كرواتيا', 'كمبوديا', 'كندا', 'كوبا', 'كوريا الجنوبية', 'كوريا الشمالية', 'كوستاريكا', 'كولومبيا', 'كومنولث الدول المستقلة', 'كيريباتي', 'كينيا', - 'لاتفيا', 'لاوس', 'لبنان', 'لوكسمبورج', 'ليبيا', 'ليبيريا', 'ليتوانيا', 'ليختنشتاين', 'ليسوتو', - 'مارتينيك', 'ماكاو الصينية', 'مالطا', 'مالي', 'ماليزيا', 'مايوت', 'مدغشقر', 'مصر', 'مقدونيا', 'ملاوي', 'منغوليا', 'موريتانيا', 'موريشيوس', 'موزمبيق', 'مولدافيا', 'موناكو', 'مونتسرات', 'ميانمار', 'ميكرونيزيا', 'ميلانيزيا', - 'ناميبيا', 'نورو', 'نيبال', 'نيجيريا', 'نيكاراجوا', 'نيوزيلاندا', 'نيوي', - 'هايتي', 'هندوراس', 'هولندا', 'هونج كونج الصينية', - 'وسط آسيا', 'وسط افريقيا', - ]; - - protected static $cityFormats = [ - '{{cityName}}', - ]; - - protected static $streetNameFormats = [ - '{{streetPrefix}} {{firstName}} {{lastName}}', - ]; - - protected static $streetAddressFormats = [ - '{{buildingNumber}} {{streetName}}', - '{{buildingNumber}} {{streetName}} {{secondaryAddress}}', - ]; - - protected static $addressFormats = [ - "{{streetAddress}}\n{{city}}", - ]; - - protected static $secondaryAddressFormats = ['شقة رقم. ##', 'عمارة رقم ##']; - - /** - * @example 'شرق' - */ - public static function cityPrefix() - { - return static::randomElement(static::$cityPrefix); - } - - /** - * @example 'المعادي' - */ - public static function cityName() - { - return static::randomElement(static::$cityName); - } - - /** - * @example 'شارع' - */ - public static function streetPrefix() - { - return static::randomElement(static::$streetPrefix); - } - - /** - * @example 'شقة رقم. 350' - */ - public static function secondaryAddress() - { - return static::numerify(static::randomElement(static::$secondaryAddressFormats)); - } - - /** - * @example 'الإسكندرية' - */ - public static function governorate() - { - return static::randomKey(static::$governorates); - } - - /** - * @example '01' - * - * @return string - */ - public static function governorateId() - { - return static::randomElement(static::$governorates); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Color.php deleted file mode 100644 index c25426a..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Color.php +++ /dev/null @@ -1,65 +0,0 @@ -generator->parse($format)); - } - - /** - * @example 'wewebit.jo' - */ - public function domainName() - { - return static::randomElement(static::$lastNameAscii) . '.' . $this->tld(); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Payment.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Payment.php deleted file mode 100644 index 1e2eaaf..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Payment.php +++ /dev/null @@ -1,16 +0,0 @@ -= 2000 ? 3 : 2; - $fullBirthDate = date('ymd', $randomBirthDateTimestamp); - $governorateId = Address::governorateId(); - $birthRegistrationSequence = mt_rand(1, 500); - - if ($gender === static::GENDER_MALE) { - $birthRegistrationSequence = $birthRegistrationSequence | 1; // Convert to the nearest odd number - } elseif ($gender === static::GENDER_FEMALE) { - $birthRegistrationSequence = $birthRegistrationSequence & ~1; // Convert to the nearest even number - } - - $birthRegistrationSequence = str_pad((string) $birthRegistrationSequence, 4, '0', STR_PAD_LEFT); - $randomCheckDigit = mt_rand(1, 9); - - return $centuryId . $fullBirthDate . $governorateId . $birthRegistrationSequence . $randomCheckDigit; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Text.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Text.php deleted file mode 100644 index 099c408..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_EG/Text.php +++ /dev/null @@ -1,31 +0,0 @@ -generator->parse($format)); - } - - /** - * @example 'wewebit.jo' - */ - public function domainName() - { - return static::randomElement(static::$lastNameAscii) . '.' . $this->tld(); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_JO/Person.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_JO/Person.php deleted file mode 100644 index 27db4e5..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_JO/Person.php +++ /dev/null @@ -1,108 +0,0 @@ -generator->parse($format)); - } - - /** - * @example 'wewebit.jo' - */ - public function domainName() - { - return static::randomElement(static::$lastNameAscii) . '.' . $this->tld(); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_SA/Payment.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_SA/Payment.php deleted file mode 100644 index a09a281..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ar_SA/Payment.php +++ /dev/null @@ -1,22 +0,0 @@ -generator->parse(static::randomElement(static::$lastNameFormat)); - } - - public static function lastNameMale() - { - return static::randomElement(static::$lastNameMale); - } - - public static function lastNameFemale() - { - return static::randomElement(static::$lastNameFemale); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/bg_BG/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/bg_BG/PhoneNumber.php deleted file mode 100644 index 22051df..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/bg_BG/PhoneNumber.php +++ /dev/null @@ -1,20 +0,0 @@ -generator->parse($format)); - } - - /** - * Generates valid czech IČO - * - * @see http://phpfashion.com/jak-overit-platne-ic-a-rodne-cislo - * - * @return string - */ - public function ico() - { - $ico = static::numerify('#######'); - $split = str_split($ico); - $prod = 0; - - foreach ([8, 7, 6, 5, 4, 3, 2] as $i => $p) { - $prod += $p * $split[$i]; - } - $mod = $prod % 11; - - if ($mod === 0 || $mod === 10) { - return "{$ico}1"; - } - - if ($mod === 1) { - return "{$ico}0"; - } - - return $ico . (11 - $mod); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/cs_CZ/DateTime.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/cs_CZ/DateTime.php deleted file mode 100644 index e136e65..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/cs_CZ/DateTime.php +++ /dev/null @@ -1,65 +0,0 @@ -format('w')]; - } - - /** - * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" - * - * @return string - * - * @example '2' - */ - public static function dayOfMonth($max = 'now') - { - return static::dateTime($max)->format('j'); - } - - /** - * Full date with inflected month - * - * @return string - * - * @example '16. listopadu 2003' - */ - public function formattedDate() - { - $format = static::randomElement(static::$formattedDateFormat); - - return $this->generator->parse($format); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/cs_CZ/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/cs_CZ/Internet.php deleted file mode 100644 index ce5b266..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/cs_CZ/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ -generator->boolean() ? static::GENDER_MALE : static::GENDER_FEMALE; - } - - $startTimestamp = strtotime(sprintf('-%d year', $maxAge)); - $endTimestamp = strtotime(sprintf('-%d year', $minAge)); - $randTimestamp = self::numberBetween($startTimestamp, $endTimestamp); - - $year = (int) (date('Y', $randTimestamp)); - $month = (int) (date('n', $randTimestamp)); - $day = (int) (date('j', $randTimestamp)); - $suffix = self::numberBetween(0, 999); - - // women has +50 to month - if ($gender == static::GENDER_FEMALE) { - $month += 50; - } - - // from year 2004 everyone has +20 to month when birth numbers in one day are exhausted - if ($year >= 2004 && $this->generator->boolean(10)) { - $month += 20; - } - - $birthNumber = sprintf('%02d%02d%02d%03d', $year % 100, $month, $day, $suffix); - - // from year 1954 birth number includes CRC - if ($year >= 1954) { - $crc = intval($birthNumber, 10) % 11; - - if ($crc == 10) { - $crc = 0; - } - $birthNumber .= sprintf('%d', $crc); - } - - // add slash - if ($this->generator->boolean($slashProbability)) { - $birthNumber = substr($birthNumber, 0, 6) . '/' . substr($birthNumber, 6); - } - - return $birthNumber; - } - - public static function birthNumberMale() - { - return static::birthNumber(static::GENDER_MALE); - } - - public static function birthNumberFemale() - { - return static::birthNumber(static::GENDER_FEMALE); - } - - public function title($gender = null) - { - return static::titleMale(); - } - - /** - * replaced by specific unisex Czech title - */ - public static function titleMale() - { - return static::randomElement(static::$title); - } - - /** - * replaced by specific unisex Czech title - */ - public static function titleFemale() - { - return static::titleMale(); - } - - /** - * @param string|null $gender 'male', 'female' or null for any - * - * @example 'Albrecht' - */ - public function lastName($gender = null) - { - if ($gender === static::GENDER_MALE) { - return static::lastNameMale(); - } - - if ($gender === static::GENDER_FEMALE) { - return static::lastNameFemale(); - } - - return $this->generator->parse(static::randomElement(static::$lastNameFormat)); - } - - public static function lastNameMale() - { - return static::randomElement(static::$lastNameMale); - } - - public static function lastNameFemale() - { - return static::randomElement(static::$lastNameFemale); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/cs_CZ/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/cs_CZ/PhoneNumber.php deleted file mode 100644 index a527a25..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/cs_CZ/PhoneNumber.php +++ /dev/null @@ -1,14 +0,0 @@ -format('dmy'), static::numerify('%###')); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/da_DK/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/da_DK/PhoneNumber.php deleted file mode 100644 index 6e8c28d..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/da_DK/PhoneNumber.php +++ /dev/null @@ -1,18 +0,0 @@ -format('dmy'); - - do { - $consecutiveNumber = (string) self::numberBetween(100, 999); - - $verificationNumber = ( - (int) $consecutiveNumber[0] * 3 - + (int) $consecutiveNumber[1] * 7 - + (int) $consecutiveNumber[2] * 9 - + (int) $birthDateString[0] * 5 - + (int) $birthDateString[1] * 8 - + (int) $birthDateString[2] * 4 - + (int) $birthDateString[3] * 2 - + (int) $birthDateString[4] * 1 - + (int) $birthDateString[5] * 6 - ) % 11; - } while ($verificationNumber == 10); - - return sprintf('%s%s%s', $consecutiveNumber, $verificationNumber, $birthDateString); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/de_AT/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/de_AT/PhoneNumber.php deleted file mode 100644 index 00fbe67..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/de_AT/PhoneNumber.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Aargau'], - ['AI' => 'Appenzell Innerrhoden'], - ['AR' => 'Appenzell Ausserrhoden'], - ['BE' => 'Bern'], - ['BL' => 'Basel-Landschaft'], - ['BS' => 'Basel-Stadt'], - ['FR' => 'Freiburg'], - ['GE' => 'Genf'], - ['GL' => 'Glarus'], - ['GR' => 'Graubünden'], - ['JU' => 'Jura'], - ['LU' => 'Luzern'], - ['NE' => 'Neuenburg'], - ['NW' => 'Nidwalden'], - ['OW' => 'Obwalden'], - ['SG' => 'St. Gallen'], - ['SH' => 'Schaffhausen'], - ['SO' => 'Solothurn'], - ['SZ' => 'Schwyz'], - ['TG' => 'Thurgau'], - ['TI' => 'Tessin'], - ['UR' => 'Uri'], - ['VD' => 'Waadt'], - ['VS' => 'Wallis'], - ['ZG' => 'Zug'], - ['ZH' => 'Zürich'], - ]; - - protected static $country = [ - 'Afghanistan', 'Alandinseln', 'Albanien', 'Algerien', 'Amerikanisch-Ozeanien', 'Amerikanisch-Samoa', 'Amerikanische Jungferninseln', 'Andorra', 'Angola', 'Anguilla', 'Antarktis', 'Antigua und Barbuda', 'Argentinien', 'Armenien', 'Aruba', 'Aserbaidschan', 'Australien', 'Ägypten', 'Äquatorialguinea', 'Äthiopien', 'Äusseres Ozeanien', - 'Bahamas', 'Bahrain', 'Bangladesch', 'Barbados', 'Belarus', 'Belgien', 'Belize', 'Benin', 'Bermuda', 'Bhutan', 'Bolivien', 'Bosnien und Herzegowina', 'Botsuana', 'Bouvetinsel', 'Brasilien', 'Britische Jungferninseln', 'Britisches Territorium im Indischen Ozean', 'Brunei Darussalam', 'Bulgarien', 'Burkina Faso', 'Burundi', - 'Chile', 'China', 'Cookinseln', 'Costa Rica', 'Côte d’Ivoire', - 'Demokratische Republik Kongo', 'Demokratische Volksrepublik Korea', 'Deutschland', 'Dominica', 'Dominikanische Republik', 'Dschibuti', 'Dänemark', - 'Ecuador', 'El Salvador', 'Eritrea', 'Estland', 'Europäische Union', - 'Falklandinseln', 'Fidschi', 'Finnland', 'Frankreich', 'Französisch-Guayana', 'Französisch-Polynesien', 'Französische Süd- und Antarktisgebiete', 'Färöer', - 'Gabun', 'Gambia', 'Georgien', 'Ghana', 'Gibraltar', 'Grenada', 'Griechenland', 'Grönland', 'Guadeloupe', 'Guam', 'Guatemala', 'Guernsey', 'Guinea', 'Guinea-Bissau', 'Guyana', - 'Haiti', 'Heard- und McDonald-Inseln', 'Honduras', - 'Indien', 'Indonesien', 'Irak', 'Iran', 'Irland', 'Island', 'Isle of Man', 'Israel', 'Italien', - 'Jamaika', 'Japan', 'Jemen', 'Jersey', 'Jordanien', - 'Kaimaninseln', 'Kambodscha', 'Kamerun', 'Kanada', 'Kap Verde', 'Kasachstan', 'Katar', 'Kenia', 'Kirgisistan', 'Kiribati', 'Kokosinseln', 'Kolumbien', 'Komoren', 'Kongo', 'Kroatien', 'Kuba', 'Kuwait', - 'Laos', 'Lesotho', 'Lettland', 'Libanon', 'Liberia', 'Libyen', 'Liechtenstein', 'Litauen', 'Luxemburg', - 'Madagaskar', 'Malawi', 'Malaysia', 'Malediven', 'Mali', 'Malta', 'Marokko', 'Marshallinseln', 'Martinique', 'Mauretanien', 'Mauritius', 'Mayotte', 'Mazedonien', 'Mexiko', 'Mikronesien', 'Monaco', 'Mongolei', 'Montenegro', 'Montserrat', 'Mosambik', 'Myanmar', - 'Namibia', 'Nauru', 'Nepal', 'Neukaledonien', 'Neuseeland', 'Nicaragua', 'Niederlande', 'Niederländische Antillen', 'Niger', 'Nigeria', 'Niue', 'Norfolkinsel', 'Norwegen', 'Nördliche Marianen', - 'Oman', 'Osttimor', 'Österreich', - 'Pakistan', 'Palau', 'Palästinensische Gebiete', 'Panama', 'Papua-Neuguinea', 'Paraguay', 'Peru', 'Philippinen', 'Pitcairn', 'Polen', 'Portugal', 'Puerto Rico', - 'Republik Korea', 'Republik Moldau', 'Ruanda', 'Rumänien', 'Russische Föderation', 'Réunion', - 'Salomonen', 'Sambia', 'Samoa', 'San Marino', 'Saudi-Arabien', 'Schweden', 'Schweiz', 'Senegal', 'Serbien', 'Serbien und Montenegro', 'Seychellen', 'Sierra Leone', 'Simbabwe', 'Singapur', 'Slowakei', 'Slowenien', 'Somalia', 'Sonderverwaltungszone Hongkong', 'Sonderverwaltungszone Macao', 'Spanien', 'Sri Lanka', 'St. Barthélemy', 'St. Helena', 'St. Kitts und Nevis', 'St. Lucia', 'St. Martin', 'St. Pierre und Miquelon', 'St. Vincent und die Grenadinen', 'Sudan', 'Suriname', 'Svalbard und Jan Mayen', 'Swasiland', 'Syrien', 'São Tomé und Príncipe', 'Südafrika', 'Südgeorgien und die Südlichen Sandwichinseln', - 'Tadschikistan', 'Taiwan', 'Tansania', 'Thailand', 'Togo', 'Tokelau', 'Tonga', 'Trinidad und Tobago', 'Tschad', 'Tschechische Republik', 'Tunesien', 'Turkmenistan', 'Turks- und Caicosinseln', 'Tuvalu', 'Türkei', - 'Uganda', 'Ukraine', 'Unbekannte oder ungültige Region', 'Ungarn', 'Uruguay', 'Usbekistan', - 'Vanuatu', 'Vatikanstadt', 'Venezuela', 'Vereinigte Arabische Emirate', 'Vereinigte Staaten', 'Vereinigtes Königreich', 'Vietnam', - 'Wallis und Futuna', 'Weihnachtsinsel', 'Westsahara', - 'Zentralafrikanische Republik', 'Zypern', - ]; - - protected static $cityFormats = [ - '{{cityName}}', - ]; - - protected static $streetNameFormats = [ - '{{lastName}}{{streetSuffixShort}}', - '{{cityName}}{{streetSuffixShort}}', - '{{firstName}}-{{lastName}}-{{streetSuffixLong}}', - ]; - - protected static $streetAddressFormats = [ - '{{streetName}} {{buildingNumber}}', - ]; - protected static $addressFormats = [ - "{{streetAddress}}\n{{postcode}} {{city}}", - ]; - - /** - * Returns a random city name. - * - * @example Luzern - * - * @return string - */ - public function cityName() - { - return static::randomElement(static::$cityNames); - } - - /** - * Returns a random street suffix. - * - * @example str. - * - * @return string - */ - public function streetSuffixShort() - { - return static::randomElement(static::$streetSuffixShort); - } - - /** - * Returns a random street suffix. - * - * @example Strasse - * - * @return string - */ - public function streetSuffixLong() - { - return static::randomElement(static::$streetSuffixLong); - } - - /** - * Returns a canton - * - * @example array('BE' => 'Bern') - * - * @return array - */ - public static function canton() - { - return static::randomElement(static::$canton); - } - - /** - * Returns the abbreviation of a canton. - * - * @return string - */ - public static function cantonShort() - { - $canton = static::canton(); - - return key($canton); - } - - /** - * Returns the name of canton. - * - * @return string - */ - public static function cantonName() - { - $canton = static::canton(); - - return current($canton); - } - - public static function buildingNumber() - { - return static::regexify(self::numerify(static::randomElement(static::$buildingNumber))); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/de_CH/Company.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/de_CH/Company.php deleted file mode 100644 index ead2781..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/de_CH/Company.php +++ /dev/null @@ -1,15 +0,0 @@ - - */ - protected static $areaCodeRegexes = [ - 2 => '(0[0-389]|0[4-6][1-68]|1[124]|1[0-9][0-9]|2[18]|2[0-9][1-9]|3[14]|3[0-35-9][0-9]|4[1]|4[02-8][0-9]|5[1]|5[02-9][0-9]|6[1]|6[02-9][0-9]|7[1]|7[2-7][0-9]|8[1]|8[02-7][0-9]|9[1]|9[02-9][0-9])', - 3 => '(0|3[15]|3[02-46-9][1-9]|3[02-46-9][02-9][0-9]|4[015]|4[2-4679][1-8]|4[2-4679][02-9][0-9]|5[15]|5[02-46-9][1-9]|5[02-46-9][02-9][0-9]|6[15]|6[02-46-9][1-9]|6[02-46-9][02-9][0-9]|7[15]|7[2-467][1-7]|7[2-467][02-689][0-9]|8[15]|8[2-46-8][013-9]|8[2-46-8][02-9][0-9]|9[15]|9[02-46-9][1-9]|9[02-46-9][02-9][0-9])', - 4 => '(0|1[02-9][0-9]|2[1]|2[02-9][0-9]|3[1]|3[02-9][0-9]|4[1]|4[0-9][0-9]|5[1]|5[02-6][0-9]|6[1]|6[02-8][0-9]|7[1]|7[02-79][0-9]|8[1]|8[02-9][0-9]|9[1]|9[02-7][0-9])', - 5 => '(0[2-8][0-9]|1[1]|1[02-9][0-9]|2[1]|2[02-9][1-9]|3[1]|3[02-8][0-9]|4[1]|4[02-9][1-9]|5[1]|5[02-9][0-9]|6[1]|6[02-9][0-9]|7[1]|7[02-7][1-9]|8[1]|8[02-8][0-9]|9[1]|9[0-7][1-9])', - 6 => '(0[02-9][0-9]|1[1]|1[02-9][0-9]|2[1]|2[02-9][0-9]|3[1]|3[02-9][0-9]|4[1]|4[0-8][0-9]|5[1]|5[02-9][0-9]|6[1]|6[2-9][0-9]|7[1]|7[02-8][1-9]|8[1]|8[02-9][1-9]|9)', - 7 => '(0[2-8][1-6]|1[1]|1[2-9][0-9]|2[1]|2[0-7][0-9]|3[1]|3[02-9][0-9]|4[1]|4[0-8][0-9]|5[1]|5[02-8][0-9]|6[1]|6[02-8][0-9]|7[1]|7[02-7][0-9]|8[1]|8[02-5][1-9]|9[1]|9[03-7][0-9])', - 8 => '(0[2-9][0-9]|1[1]|1[02-79][0-9]|2[1]|2[02-9][0-9]|3[1]|3[02-9][0-9]|4[1]|4[02-6][0-9]|5[1]|5[02-9][0-9]|6[1]|6[2-8][0-9]|7[1]|7[02-8][1-9]|8[1]|8[02-6][0-9]|9)', - 9 => '(0[6]|0[07-9][0-9]|1[1]|1[02-9][0-9]|2[1]|2[02-9][0-9]|3[1]|3[02-9][0-9]|4[1]|4[02-9][0-9]|5[1]|5[02-7][0-9]|6[1]|6[02-8][1-9]|7[1]|7[02-467][0-9]|8[1]|8[02-7][0-9]|9[1]|9[02-7][0-9])', - ]; - - /** - * @see https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers#Germany - * @see https://www.itu.int/oth/T0202000051/en - * @see https://en.wikipedia.org/wiki/Telephone_numbers_in_Germany - */ - protected static $formats = [ - // International format - '+49 {{areaCode}} #######', - '+49 {{areaCode}} ### ####', - '+49 (0{{areaCode}}) #######', - '+49 (0{{areaCode}}) ### ####', - '+49{{areaCode}}#######', - '+49{{areaCode}}### ####', - - // Standard formats - '0{{areaCode}} ### ####', - '0{{areaCode}} #######', - '(0{{areaCode}}) ### ####', - '(0{{areaCode}}) #######', - ]; - - protected static $e164Formats = [ - '+49{{areaCode}}#######', - ]; - - /** - * @see https://en.wikipedia.org/wiki/Toll-free_telephone_number - */ - protected static $tollFreeAreaCodes = [ - 800, - ]; - - protected static $tollFreeFormats = [ - // Standard formats - '0{{tollFreeAreaCode}} ### ####', - '(0{{tollFreeAreaCode}}) ### ####', - '+49{{tollFreeAreaCode}} ### ####', - ]; - - public function tollFreeAreaCode() - { - return self::randomElement(static::$tollFreeAreaCodes); - } - - public function tollFreePhoneNumber() - { - $format = self::randomElement(static::$tollFreeFormats); - - return self::numerify($this->generator->parse($format)); - } - - protected static $mobileCodes = [ - 1511, 1512, 1514, 1515, 1516, 1517, - 1520, 1521, 1522, 1523, 1525, 1526, 1529, - 1570, 1573, 1575, 1577, 1578, 1579, - 1590, - ]; - - protected static $mobileFormats = [ - '+49{{mobileCode}}#######', - '+49 {{mobileCode}} ### ####', - '0{{mobileCode}}#######', - '0{{mobileCode}} ### ####', - '0 {{mobileCode}} ### ####', - ]; - - /** - * @see https://en.wikipedia.org/wiki/List_of_dialling_codes_in_Germany - * - * @return string - */ - public static function areaCode() - { - $firstDigit = self::numberBetween(2, 9); - - return $firstDigit . self::regexify(self::$areaCodeRegexes[$firstDigit]); - } - - /** - * Generate a code for a mobile number. - * - * @internal Used to generate mobile numbers. - * - * @return string - */ - public static function mobileCode() - { - return static::randomElement(static::$mobileCodes); - } - - /** - * Generate a mobile number. - * - * @example A mobile number: '015111234567' - * @example A mobile number with spaces: '01511 123 4567' - * @example A mobile number with international code prefix: '+4915111234567' - * @example A mobile number with international code prefix and spaces: '+49 1511 123 4567' - * - * @return string - */ - public function mobileNumber() - { - return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$mobileFormats), - ))); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/de_DE/Text.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/de_DE/Text.php deleted file mode 100644 index 55ed5a5..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/de_DE/Text.php +++ /dev/null @@ -1,2038 +0,0 @@ -generator->parse(static::randomElement(static::$lastNameFormat)); - } - - /** - * @example 'Θεοδωρόπουλος' - */ - public static function lastNameMale() - { - return static::randomElement(static::$lastNameMale); - } - - /** - * @example 'Κοκκίνου' - */ - public static function lastNameFemale() - { - return static::randomElement(static::$lastNameFemale); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/el_GR/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/el_GR/PhoneNumber.php deleted file mode 100644 index 5303248..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/el_GR/PhoneNumber.php +++ /dev/null @@ -1,324 +0,0 @@ -generator->parse( - static::randomElement(static::$fixedLineFormats), - ))); - } - - /** - * Generate a code for a mobile number. - * - * @internal Used to generate mobile numbers. - * - * @return string - */ - public static function mobileCode() - { - return static::randomElement(static::$mobileCodes); - } - - /** - * Generate a mobile number. - * - * @example A mobile number: '6901234567' - * @example A mobile number with spaces: '690 123 4567' - * @example A mobile number with international code prefix: '+306901234567' - * @example A mobile number with international code prefix and spaces: '+30 690 123 4567' - * - * @return string - */ - public function mobileNumber() - { - return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$mobileFormats), - ))); - } - - /** - * @deprecated Use PhoneNumber::mobileNumber() instead. - */ - public static function mobilePhoneNumber() - { - return static::numerify( - strtr(static::randomElement(static::$mobileFormats), [ - '{{internationalCodePrefix}}' => static::internationalCodePrefix(), - '{{mobileCode}}' => static::mobileCode(), - ]), - ); - } - - /** - * Generate a personal number. - * - * @example A personal number: '7012345678' - * @example A personal number with spaces: '70 1234 5678' - * @example A personal number with international code prefix: '+307012345678' - * @example A personal number with international code prefix and spaces: '+30 70 1234 5678' - * - * @return string - */ - public function personalNumber() - { - return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$personalFormats), - ))); - } - - /** - * Generate a toll-free number. - * - * @example A toll-free number: '8001234567' - * @example A toll-free number with spaces: '800 123 4567' - * @example A toll-free number with international code prefix: '+308001234567' - * @example A toll-free number with international code prefix and spaces: '+30 800 123 4567' - * - * @return string - */ - public static function tollFreeNumber() - { - return ltrim(static::numerify( - strtr(static::randomElement(static::$tollFreeFormats), [ - '{{internationalCodePrefix}}' => static::internationalCodePrefix(), - ]), - )); - } - - /** - * Generate a code for a shared-cost number. - * - * @internal Used to generate shared-cost numbers. - * - * @return string - */ - public static function sharedCostCode() - { - return static::randomElement(static::$sharedCostCodes); - } - - /** - * Generate a shared-cost number. - * - * @example A shared-cost number: '8011234567' - * @example A shared-cost number with spaces: '801 123 4567' - * @example A shared-cost number with international code prefix: '+308011234567' - * @example A shared-cost number with international code prefix and spaces: '+30 801 123 4567' - * - * @return string - */ - public function sharedCostNumber() - { - return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$sharedCostFormats), - ))); - } - - /** - * Generate a code for a premium-rate number. - * - * @internal Used to generate premium-rate numbers. - * - * @return string - */ - public static function premiumRateCode() - { - return static::randomElement(static::$premiumRateCodes); - } - - /** - * Generate a premium-rate number. - * - * @example A premium-rate number: '9011234567' - * @example A premium-rate number with spaces: '901 123 4567' - * @example A premium-rate number with international code prefix: '+309011234567' - * @example A premium-rate number with international code prefix and spaces: '+30 901 123 4567' - * - * @return string - */ - public function premiumRateNumber() - { - return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$premiumRateFormats), - ))); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/el_GR/Text.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/el_GR/Text.php deleted file mode 100644 index f4be760..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/el_GR/Text.php +++ /dev/null @@ -1,2582 +0,0 @@ - 0) { - $sum -= 97; - } - $sum = $sum * -1; - - return str_pad((string) $sum, 2, '0', STR_PAD_LEFT); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_GB/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_GB/Internet.php deleted file mode 100644 index ef5934a..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_GB/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ -generator->parse(static::randomElement(static::$towns)); - } - - public function syllable() - { - return static::randomElement(static::$syllables); - } - - public function direction() - { - return static::randomElement(static::$directions); - } - - public function englishStreetName() - { - return static::randomElement(static::$englishStreetNames); - } - - public function villageSuffix() - { - return static::randomElement(static::$villageSuffixes); - } - - public function estateSuffix() - { - return static::randomElement(static::$estateSuffixes); - } - - public function village() - { - return $this->generator->parse(static::randomElement(static::$villageNameFormats)); - } - - public function estate() - { - return $this->generator->parse(static::randomElement(static::$estateNameFormats)); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_HK/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_HK/Internet.php deleted file mode 100644 index 2de48a5..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_HK/Internet.php +++ /dev/null @@ -1,14 +0,0 @@ -generator->parse(static::randomElement(static::$societyNameFormat)); - } - - /** - * @example Mumbai - */ - public function city() - { - return static::randomElement(static::$city); - } - - /** - * @example Vaishali Nagar - */ - public function locality() - { - return $this->generator->parse(static::randomElement(static::$localityFormats)); - } - - /** - * @example Kharadi - */ - public function localityName() - { - return $this->generator->parse(static::randomElement(static::$localityName)); - } - - /** - * @example Nagar - */ - public function areaSuffix() - { - return static::randomElement(static::$areaSuffix); - } - - /** - * @example 'Delhi' - */ - public static function state() - { - return static::randomElement(static::$state); - } - - /** - * @example 'DL' - */ - public static function stateAbbr() - { - return static::randomElement(static::$stateAbbr); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_IN/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_IN/Internet.php deleted file mode 100644 index a543535..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_IN/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ -format('y'); - $checksumArr = ['J', 'Z', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A']; - } - - $length = count($weights); - - for ($i = strlen($result); $i < $length; ++$i) { - $result .= static::randomDigit(); - } - - $checksum = in_array($prefix, ['G', 'T'], true) ? 4 : 0; - - for ($i = 0; $i < $length; ++$i) { - $checksum += (int) $result[$i] * $weights[$i]; - } - - return $prefix . $result . $checksumArr[$checksum % 11]; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_SG/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_SG/PhoneNumber.php deleted file mode 100644 index f5e3ca6..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_SG/PhoneNumber.php +++ /dev/null @@ -1,105 +0,0 @@ -generator->parse($format)); - } - - public function fixedLineNumber() - { - $format = static::randomElement(static::$fixedLineNumberFormats); - - return static::numerify($this->generator->parse($format)); - } - - public function voipNumber() - { - $format = static::randomElement(static::$voipNumber); - - return static::numerify($this->generator->parse($format)); - } - - public function internationalCodePrefix() - { - return static::randomElement(static::$internationalCodePrefix); - } - - public function zeroToEight() - { - return static::randomElement(static::$zeroToEight); - } - - public function oneToEight() - { - return static::randomElement(static::$oneToEight); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_UG/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_UG/Address.php deleted file mode 100644 index 9024b8b..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_UG/Address.php +++ /dev/null @@ -1,101 +0,0 @@ - - */ - protected static $areaCodeRegexes = [ - 2 => '(0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])', - 3 => '(0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[167]|5[12]|6[014]|8[056])', - 4 => '(0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])', - 5 => '(0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])', - 6 => '(0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[017]|6[0-279]|78|8[0-29])', - 7 => '(0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])', - 8 => '(0[1-68]|1[02-8]|2[08]|3[0-28]|4[3578]|5[046-9]|6[02-5]|7[028])', - 9 => '(0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[0179]|5[12469]|7[0-389]|8[04-69])', - ]; - - /** - * @see https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers#United_States.2C_Canada.2C_and_other_NANP_countries - */ - protected static $formats = [ - // International format - '+1-{{areaCode}}-{{exchangeCode}}-####', - '+1 ({{areaCode}}) {{exchangeCode}}-####', - '+1-{{areaCode}}-{{exchangeCode}}-####', - '+1.{{areaCode}}.{{exchangeCode}}.####', - '+1{{areaCode}}{{exchangeCode}}####', - - // Standard formats - '{{areaCode}}-{{exchangeCode}}-####', - '({{areaCode}}) {{exchangeCode}}-####', - '1-{{areaCode}}-{{exchangeCode}}-####', - '{{areaCode}}.{{exchangeCode}}.####', - - '{{areaCode}}-{{exchangeCode}}-####', - '({{areaCode}}) {{exchangeCode}}-####', - '1-{{areaCode}}-{{exchangeCode}}-####', - '{{areaCode}}.{{exchangeCode}}.####', - ]; - - protected static $formatsWithExtension = [ - '{{areaCode}}-{{exchangeCode}}-#### x###', - '({{areaCode}}) {{exchangeCode}}-#### x###', - '1-{{areaCode}}-{{exchangeCode}}-#### x###', - '{{areaCode}}.{{exchangeCode}}.#### x###', - - '{{areaCode}}-{{exchangeCode}}-#### x####', - '({{areaCode}}) {{exchangeCode}}-#### x####', - '1-{{areaCode}}-{{exchangeCode}}-#### x####', - '{{areaCode}}.{{exchangeCode}}.#### x####', - - '{{areaCode}}-{{exchangeCode}}-#### x#####', - '({{areaCode}}) {{exchangeCode}}-#### x#####', - '1-{{areaCode}}-{{exchangeCode}}-#### x#####', - '{{areaCode}}.{{exchangeCode}}.#### x#####', - ]; - - protected static $e164Formats = [ - '+1{{areaCode}}{{exchangeCode}}####', - ]; - - /** - * @see https://en.wikipedia.org/wiki/Toll-free_telephone_number#United_States - */ - protected static $tollFreeAreaCodes = [ - 800, 844, 855, 866, 877, 888, - ]; - protected static $tollFreeFormats = [ - // Standard formats - '{{tollFreeAreaCode}}-{{exchangeCode}}-####', - '({{tollFreeAreaCode}}) {{exchangeCode}}-####', - '1-{{tollFreeAreaCode}}-{{exchangeCode}}-####', - '{{tollFreeAreaCode}}.{{exchangeCode}}.####', - ]; - - public function tollFreeAreaCode() - { - return self::randomElement(static::$tollFreeAreaCodes); - } - - public function tollFreePhoneNumber() - { - $format = self::randomElement(static::$tollFreeFormats); - - return self::numerify($this->generator->parse($format)); - } - - /** - * @return string - * - * @example '555-123-546 x123' - */ - public function phoneNumberWithExtension() - { - return static::numerify($this->generator->parse(static::randomElement(static::$formatsWithExtension))); - } - - /** - * NPA-format area code - * - * @see https://en.wikipedia.org/wiki/North_American_Numbering_Plan#Numbering_system - * - * @return string - */ - public static function areaCode() - { - $firstDigit = self::numberBetween(2, 9); - - return $firstDigit . self::regexify(self::$areaCodeRegexes[$firstDigit]); - } - - /** - * NXX-format central office exchange code - * - * @see https://en.wikipedia.org/wiki/North_American_Numbering_Plan#Numbering_system - * - * @return string - */ - public static function exchangeCode() - { - $digits[] = self::numberBetween(2, 9); - $digits[] = self::randomDigit(); - - if ($digits[1] === 1) { - $digits[] = self::randomDigitNot(1); - } else { - $digits[] = self::randomDigit(); - } - - return implode('', $digits); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_US/Text.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_US/Text.php deleted file mode 100644 index c15d89d..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_US/Text.php +++ /dev/null @@ -1,3721 +0,0 @@ -format('Y'), - static::randomNumber(6, true), - static::randomElement(static::$legalEntities), - ); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_ZA/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_ZA/Internet.php deleted file mode 100644 index c222227..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_ZA/Internet.php +++ /dev/null @@ -1,23 +0,0 @@ -generator->dateTimeThisCentury(); - } - $birthDateString = $birthdate->format('ymd'); - - switch (strtolower($gender ?: '')) { - case static::GENDER_FEMALE: - $genderDigit = self::numberBetween(0, 4); - - break; - - case static::GENDER_MALE: - $genderDigit = self::numberBetween(5, 9); - - break; - - default: - $genderDigit = self::numberBetween(0, 9); - } - $sequenceDigits = str_pad(self::randomNumber(3), 3, 0, STR_PAD_BOTH); - $citizenDigit = ($citizen === true) ? '0' : '1'; - $raceDigit = self::numberBetween(8, 9); - - $partialIdNumber = $birthDateString . $genderDigit . $sequenceDigits . $citizenDigit . $raceDigit; - - return $partialIdNumber . Luhn::computeCheckDigit($partialIdNumber); - } - - /** - * @see https://en.wikipedia.org/wiki/Driving_licence_in_South_Africa - * - * @return string - */ - public function licenceCode() - { - return static::randomElement(static::$licenceCodes); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_ZA/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_ZA/PhoneNumber.php deleted file mode 100644 index 567631a..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/en_ZA/PhoneNumber.php +++ /dev/null @@ -1,116 +0,0 @@ -generator->parse($format)); - } - - public function tollFreeNumber() - { - $format = static::randomElement(static::$specialFormats); - - return self::numerify($this->generator->parse($format)); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/es_AR/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/es_AR/Address.php deleted file mode 100644 index 457f8ca..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/es_AR/Address.php +++ /dev/null @@ -1,68 +0,0 @@ -numberBetween(10000, 100000000); - } - - return $id . $separator . $this->numberBetween(80000000, 100000000); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/es_VE/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/es_VE/PhoneNumber.php deleted file mode 100644 index cfe6438..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/es_VE/PhoneNumber.php +++ /dev/null @@ -1,29 +0,0 @@ -generator->parse($format); - } - - /** - * @example 'کد پستی' - */ - public static function postcodePrefix() - { - return static::randomElement(static::$postcodePrefix); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fa_IR/Company.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fa_IR/Company.php deleted file mode 100644 index 15da3c5..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fa_IR/Company.php +++ /dev/null @@ -1,60 +0,0 @@ -generator->parse($format)); - } - - /** - * @example 'ahmad.ir' - */ - public function domainName() - { - return static::randomElement(static::$lastNameAscii) . '.' . $this->tld(); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fa_IR/Person.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fa_IR/Person.php deleted file mode 100644 index 546e2a3..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fa_IR/Person.php +++ /dev/null @@ -1,210 +0,0 @@ - 1; --$i) { - $sum += $subNationalCodeString[$count] * ($i); - ++$count; - } - - if (($sum % 11) < 2) { - return $sum % 11; - } - - return 11 - ($sum % 11); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fa_IR/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fa_IR/PhoneNumber.php deleted file mode 100644 index a9606d0..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fa_IR/PhoneNumber.php +++ /dev/null @@ -1,76 +0,0 @@ - 5) { - throw new \InvalidArgumentException('indexSize must be at most 5'); - } - - $words = $this->getConsecutiveWords($indexSize); - $result = []; - $resultLength = 0; - // take a random starting point - $next = static::randomKey($words); - - while ($resultLength < $maxNbChars && isset($words[$next])) { - // fetch a random word to append - $word = static::randomElement($words[$next]); - - // calculate next index - $currentWords = explode(' ', $next); - - $currentWords[] = $word; - array_shift($currentWords); - $next = implode(' ', $currentWords); - - if ($resultLength == 0 && !preg_match('/^[\x{0600}-\x{06FF}]/u', $word)) { - continue; - } - // append the element - $result[] = $word; - $resultLength += strlen($word) + 1; - } - - // remove the element that caused the text to overflow - array_pop($result); - - // build result - $result = implode(' ', $result); - - return $result . '.'; - } - - /** - * License: Creative Commons Attribution-ShareAlike License - * - * Title: مدیر مدرسه - * Author: جلال آل‌احمد - * Language: Persian - * - * @see http://fa.wikisource.org/wiki/%D9%85%D8%AF%DB%8C%D8%B1_%D9%85%D8%AF%D8%B1%D8%B3%D9%87 - * - * @var string - */ - protected static $baseText = <<<'EOT' -از در که وارد شدم سیگارم دستم بود. زورم آمد سلام کنم. همین طوری دنگم گرفته بود قد باشم. رئیس فرهنگ که اجازه‌ی نشستن داد، نگاهش لحظه‌ای روی دستم مکث کرد و بعد چیزی را که می‌نوشت، تمام کرد و می‌خواست متوجه من بشود که رونویس حکم را روی میزش گذاشته بودم. حرفی نزدیم. رونویس را با کاغذهای ضمیمه‌اش زیر و رو کرد و بعد غبغب انداخت و آرام و مثلاً خالی از عصبانیت گفت: - -- جا نداریم آقا. این که نمی‌شه! هر روز یه حکم می‌دند دست یکی می‌فرستنش سراغ من... دیروز به آقای مدیر کل... - -حوصله‌ی این اباطیل را نداشتم. حرفش را بریدم که: - -- ممکنه خواهش کنم زیر همین ورقه مرقوم بفرمایید؟ - -و سیگارم را توی زیرسیگاری براق روی میزش تکاندم. روی میز، پاک و مرتب بود. درست مثل اتاق همان مهمان‌خانه‌ی تازه‌عروس‌ها. هر چیز به جای خود و نه یک ذره گرد. فقط خاکستر سیگار من زیادی بود. مثل تفی در صورت تازه تراشیده‌ای.... قلم را برداشت و زیر حکم چیزی نوشت و امضا کرد و من از در آمده بودم بیرون. خلاص. تحمل این یکی را نداشتم. با اداهایش. پیدا بود که تازه رئیس شده. زورکی غبغب می‌انداخت و حرفش را آهسته توی چشم آدم می‌زد. انگار برای شنیدنش گوش لازم نیست. صد و پنجاه تومان در کارگزینی کل مایه گذاشته بودم تا این حکم را به امضا رسانده بودم. توصیه هم برده بودم و تازه دو ماه هم دویده بودم. مو، لای درزش نمی‌رفت. می‌دانستم که چه او بپذیرد، چه نپذیرد، کار تمام است. خودش هم می‌دانست. حتماً هم دستگیرش شد که با این نک و نالی که می‌کرد، خودش را کنف کرده. ولی کاری بود و شده بود. در کارگزینی کل، سفارش کرده بودند که برای خالی نبودن عریضه رونویس را به رؤیت رئیس فرهنگ هم برسانم تازه این طور شد. و گر نه بالی حکم کارگزینی کل چه کسی می‌توانست حرفی بزند؟ یک وزارت خانه بود و یک کارگزینی! شوخی که نبود. ته دلم قرص‌تر از این‌ها بود که محتاج به این استدلال‌ها باشم. اما به نظرم همه‌ی این تقصیرها از این سیگار لعنتی بود که به خیال خودم خواسته بودم خرجش را از محل اضافه حقوق شغل جدیدم در بیاورم. البته از معلمی، هم اُقم نشسته بود. ده سال «الف.ب.» درس دادن و قیافه‌های بهت‌زده‌ی بچه‌های مردم برای مزخرف‌ترین چرندی که می‌گویی... و استغناء با غین و استقراء با قاف و خراسانی و هندی و قدیمی‌ترین شعر دری و صنعت ارسال مثل و ردالعجز... و از این مزخرفات! دیدم دارم خر می‌شوم. گفتم مدیر بشوم. مدیر دبستان! دیگر نه درس خواهم داد و نه مجبور خواهم بود برای فرار از اتلاف وقت، در امتحان تجدیدی به هر احمق بی‌شعوری هفت بدهم تا ایام آخر تابستانم را که لذیذترین تکه‌ی تعطیلات است، نجات داده باشم. این بود که راه افتادم. رفتم و از اهلش پرسیدم. از یک کار چاق کن. دستم را توی دست کارگزینی گذاشت و قول و قرار و طرفین خوش و خرم و یک روز هم نشانی مدرسه را دستم دادند که بروم وارسی، که باب میلم هست یا نه. - -و رفتم. مدرسه دو طبقه بود و نوساز بود و در دامنه‌ی کوه تنها افتاده بود و آفتاب‌رو بود. یک فرهنگ‌دوست خرپول، عمارتش را وسط زمین خودش ساخته بود و بیست و پنج سال هم در اختیار فرهنگ گذاشته بود که مدرسه‌اش کنند و رفت و آمد بشود و جاده‌ها کوبیده بشود و این قدر ازین بشودها بشود، تا دل ننه باباها بسوزد و برای این‌که راه بچه‌هاشان را کوتاه بکنند، بیایند همان اطراف مدرسه را بخرند و خانه بسازند و زمین یارو از متری یک عباسی بشود صد تومان. یارو اسمش را هم روی دیوار مدرسه کاشی‌کاری کرده بود. هنوز در و همسایه پیدا نکرده بودند که حرف‌شان بشود و لنگ و پاچه‌ی سعدی و باباطاهر را بکشند میان و یک ورق دیگر از تاریخ‌الشعرا را بکوبند روی نبش دیوار کوچه‌شان. تابلوی مدرسه هم حسابی و بزرگ و خوانا. از صد متری داد می‌زد که توانا بود هر.... هر چه دلتان بخواهد! با شیر و خورشیدش که آن بالا سر، سه پا ایستاده بود و زورکی تعادل خودش را حفظ می‌کرد و خورشید خانم روی کولش با ابروهای پیوسته و قمچیلی که به دست داشت و تا سه تیر پرتاب، اطراف مدرسه بیابان بود. درندشت و بی آب و آبادانی و آن ته رو به شمال، ردیف کاج‌های درهم فرو رفته‌ای که از سر دیوار گلی یک باغ پیدا بود روی آسمان لکه‌ی دراز و تیره‌ای زده بود. حتماً تا بیست و پنج سال دیگر همه‌ی این اطراف پر می‌شد و بوق ماشین و ونگ ونگ بچه‌ها و فریاد لبویی و زنگ روزنامه‌فروشی و عربده‌ی گل به سر دارم خیار! نان یارو توی روغن بود. - -- راستی شاید متری ده دوازده شاهی بیشتر نخریده باشد؟ شاید هم زمین‌ها را همین جوری به ثبت داده باشد؟ هان؟ - -- احمق به توچه؟!... - -بله این فکرها را همان روزی کردم که ناشناس به مدرسه سر زدم و آخر سر هم به این نتیجه رسیدم که مردم حق دارند جایی بخوابند که آب زیرشان نرود. - -- تو اگر مردی، عرضه داشته باش مدیر همین مدرسه هم بشو. - -و رفته بودم و دنبال کار را گرفته بودم تا رسیده بودم به این‌جا. همان روز وارسی فهمیده بودم که مدیر قبلی مدرسه زندانی است. لابد کله‌اش بوی قرمه‌سبزی می‌داده و باز لابد حالا دارد کفاره‌ی گناهانی را می‌دهد که یا خودش نکرده یا آهنگری در بلخ کرده. جزو پر قیچی‌های رئیس فرهنگ هم کسی نبود که با مدیرشان، اضافه حقوقی نصیبش بشود و ناچار سر و دستی برای این کار بشکند. خارج از مرکز هم نداشت. این معلومات را توی کارگزینی به دست آورده بودم. هنوز «گه خوردم نامه‌نویسی» هم مد نشده بود که بگویم یارو به این زودی‌ها از سولدونی در خواهد آمد. فکر نمی‌کردم که دیگری هم برای این وسط بیابان دلش لک زده باشد با زمستان سختش و با رفت و آمد دشوارش. - -این بود که خیالم راحت بود. از همه‌ی این‌ها گذشته کارگزینی کل موافقت کرده بود! دست است که پیش از بلند شدن بوی اسکناس، آن جا هم دو سه تا عیب شرعی و عرفی گرفته بودند و مثلاً گفته بودن لابد کاسه‌ای زیر نیم کاسه است که فلانی یعنی من، با ده سال سابقه‌ی تدریس، می‌خواهد مدیر دبستان بشود! غرض‌شان این بود که لابد خل شدم که از شغل مهم و محترم دبیری دست می‌شویم. ماهی صد و پنجاه تومان حق مقام در آن روزها پولی نبود که بتوانم نادیده بگیرم. و تازه اگر ندیده می‌گرفتم چه؟ باز باید بر می‌گشتم به این کلاس‌ها و این جور حماقت‌ها. این بود که پیش رئیس فرهنگ، صاف برگشتم به کارگزینی کل، سراغ آن که بفهمی نفهمی، دلال کارم بود. و رونویس حکم را گذاشتم و گفتم که چه طور شد و آمدم بیرون. - -دو روز بعد رفتم سراغش. معلوم شد که حدسم درست بوده است و رئیس فرهنگ گفته بوده: «من از این لیسانسه‌های پر افاده نمی‌خواهم که سیگار به دست توی هر اتاقی سر می‌کنند.» - -و یارو برایش گفته بود که اصلاً وابدا..! فلانی همچین و همچون است و مثقالی هفت صنار با دیگران فرق دارد و این هندوانه‌ها و خیال من راحت باشد و پنج‌شنبه یک هفته‌ی دیگر خودم بروم پهلوی او... و این کار را کردم. این بار رئیس فرهنگ جلوی پایم بلند شد که: «ای آقا... چرا اول نفرمودید؟!...» و از کارمندهایش گله کرد و به قول خودش، مرا «در جریان موقعیت محل» گذاشت و بعد با ماشین خودش مرا به مدرسه رساند و گفت زنگ را زودتر از موعد زدند و در حضور معلم‌ها و ناظم، نطق غرایی در خصائل مدیر جدید – که من باشم – کرد و بعد هم مرا گذاشت و رفت با یک مدرسه‌ی شش کلاسه‌ی «نوبنیاد» و یک ناظم و هفت تا معلم و دویست و سی و پنج تا شاگرد. دیگر حسابی مدیر مدرسه شده بودم! - -ناظم، جوان رشیدی بود که بلند حرف می‌زد و به راحتی امر و نهی می‌کرد و بیا و برویی داشت و با شاگردهای درشت، روی هم ریخته بود که خودشان ترتیب کارها را می‌دادند و پیدا بود که به سر خر احتیاجی ندارد و بی‌مدیر هم می‌تواند گلیم مدرسه را از آب بکشد. معلم کلاس چهار خیلی گنده بود. دو تای یک آدم حسابی. توی دفتر، اولین چیزی که به چشم می‌آمد. از آن‌هایی که اگر توی کوچه ببینی، خیال می‌کنی مدیر کل است. لفظ قلم حرف می‌زد و شاید به همین دلیل بود که وقتی رئیس فرهنگ رفت و تشریفات را با خودش برد، از طرف همکارانش تبریک ورود گفت و اشاره کرد به اینکه «ان‌شاءالله زیر سایه‌ی سرکار، سال دیگر کلاس‌های دبیرستان را هم خواهیم داشت.» پیدا بود که این هیکل کم‌کم دارد از سر دبستان زیادی می‌کند! وقتی حرف می‌زد همه‌اش درین فکر بودم که با نان آقا معلمی چه طور می‌شد چنین هیکلی به هم زد و چنین سر و تیپی داشت؟ و راستش تصمیم گرفتم که از فردا صبح به صبح ریشم را بتراشم و یخه‌ام تمیز باشد و اتوی شلوارم تیز. - -معلم کلاس اول باریکه‌ای بود، سیاه سوخته. با ته ریشی و سر ماشین کرده‌ای و یخه‌ی بسته. بی‌کراوات. شبیه میرزابنویس‌های دم پست‌خانه. حتی نوکر باب می‌نمود. و من آن روز نتوانستم بفهمم وقتی حرف می‌زند کجا را نگاه می‌کند. با هر جیغ کوتاهی که می‌زد هرهر می‌خندید. با این قضیه نمی‌شد کاری کرد. معلم کلاس سه، یک جوان ترکه‌ای بود؛ بلند و با صورت استخوانی و ریش از ته تراشیده و یخه‌ی بلند آهاردار. مثل فرفره می‌جنبید. چشم‌هایش برق عجیبی می‌زد که فقط از هوش نبود، چیزی از ناسلامتی در برق چشم‌هایش بود که مرا واداشت از ناظم بپرسم مبادا مسلول باشد. البته مسلول نبود، تنها بود و در دانشگاه درس می‌خواند. کلاس‌های پنجم و ششم را دو نفر با هم اداره می‌کردند. یکی فارسی و شرعیات و تاریخ، جغرافی و کاردستی و این جور سرگرمی‌ها را می‌گفت، که جوانکی بود بریانتین زده، با شلوار پاچه تنگ و پوشت و کراوات زرد و پهنی که نعش یک لنگر بزرگ آن را روی سینه‌اش نگه داشته بود و دائماً دستش حمایل موهای سرش بود و دم به دم توی شیشه‌ها نگاه می‌کرد. و آن دیگری که حساب و مرابحه و چیزهای دیگر می‌گفت، جوانی بود موقر و سنگین مازندرانی به نظر می‌آمد و به خودش اطمینان داشت. غیر از این‌ها، یک معلم ورزش هم داشتیم که دو هفته بعد دیدمش و اصفهانی بود و از آن قاچاق‌ها. - -رئیس فرهنگ که رفت، گرم و نرم از همه‌شان حال و احوال پرسیدم. بعد به همه سیگار تعارف کردم. سراپا همکاری و همدردی بود. از کار و بار هر کدامشان پرسیدم. فقط همان معلم کلاس سه، دانشگاه می‌رفت. آن که لنگر به سینه انداخته بود، شب‌ها انگلیسی می‌خواند که برود آمریکا. چای و بساطی در کار نبود و ربع ساعت‌های تفریح، فقط توی دفتر جمع می‌شدند و دوباره از نو. و این نمی‌شد. باید همه‌ی سنن را رعایت کرد. دست کردم و یک پنج تومانی روی میز گذاشتم و قرار شد قبل و منقلی تهیه کنند و خودشان چای را راه بیندازند. - -بعد از زنگ قرار شد من سر صف نطقی بکنم. ناظم قضیه را در دو سه کلمه برای بچه‌ها گفت که من رسیدم و همه دست زدند. چیزی نداشتم برایشان بگویم. فقط یادم است اشاره‌ای به این کردم که مدیر خیلی دلش می‌خواست یکی از شما را به جای فرزند داشته باشد و حالا نمی‌داند با این همه فرزند چه بکند؟! که بی‌صدا خندیدند و در میان صف‌های عقب یکی پکی زد به خنده. واهمه برم داشت که «نه بابا. کار ساده‌ای هم نیست!» قبلاً فکر کرده بودم که می‌روم و فارغ از دردسر اداره‌ی کلاس، در اتاق را روی خودم می‌بندم و کار خودم را می‌کنم. اما حالا می‌دیدم به این سادگی‌ها هم نیست. اگر فردا یکی‌شان زد سر اون یکی را شکست، اگر یکی زیر ماشین رفت؛ اگر یکی از ایوان افتاد؛ چه خاکی به سرم خواهم ریخت؟ - -حالا من مانده بودم و ناظم که چیزی از لای در آهسته خزید تو. کسی بود؛ فراش مدرسه با قیافه‌ای دهاتی و ریش نتراشیده و قدی کوتاه و گشاد گشاد راه می‌رفت و دست‌هایش را دور از بدن نگه می‌داشت. آمد و همان کنار در ایستاد. صاف توی چشمم نگاه می‌کرد. حال او را هم پرسیدم. هر چه بود او هم می‌توانست یک گوشه‌ی این بار را بگیرد. در یک دقیقه همه‌ی درد دل‌هایش را کرد و التماس دعاهایش که تمام شد، فرستادمش برایم چای درست کند و بیاورد. بعد از آن من به ناظم پرداختم. سال پیش، از دانشسرای مقدماتی در آمده بود. یک سال گرمسار و کرج کار کرده بود و امسال آمده بود این‌جا. پدرش دو تا زن داشته. از اولی دو تا پسر که هر دو تا چاقوکش از آب در آمده‌اند و از دومی فقط او مانده بود که درس‌خوان شده و سرشناس و نان مادرش را می‌دهد که مریض است و از پدر سال‌هاست که خبری نیست و... یک اتاق گرفته‌اند به پنجاه تومان و صد و پنجاه تومان حقوق به جایی نمی‌رسد و تازه زور که بزند سه سال دیگر می‌تواند از حق فنی نظامت مدرسه استفاده کند - -... بعد بلند شدیم که به کلاس‌ها سرکشی کنیم. بعد با ناظم به تک تک کلاس‌ها سر زدیم در این میان من به یاد دوران دبستان خودم افتادم. در کلاس ششم را باز کردیم «... ت بی پدرو مادر» جوانک بریانتین زده خورد توی صورت‌مان. یکی از بچه‌ها صورتش مثل چغندر قرمز بود. لابد بزک فحش هنوز باقی بود. قرائت فارسی داشتند. معلم دستهایش توی جیبش بود و سینه‌اش را پیش داده بود و زبان به شکایت باز کرد: - -- آقای مدیر! اصلاً دوستی سرشون نمی‌شه. تو سَری می‌خوان. ملاحظه کنید بنده با چه صمیمیتی... - -حرفش را در تشدید «ایت» بریدم که: - -- صحیح می‌فرمایید. این بار به من ببخشید. - -و از در آمدیم بیرون. بعد از آن به اطاقی که در آینده مال من بود سر زدیم. بهتر از این نمی‌شد. بی سر و صدا، آفتاب‌رو، دور افتاده. - -وسط حیاط، یک حوض بزرگ بود و کم‌عمق. تنها قسمت ساختمان بود که رعایت حال بچه‌های قد و نیم قد در آن شده بود. دور حیاط دیوار بلندی بود درست مثل دیوار چین. سد مرتفعی در مقابل فرار احتمالی فرهنگ و ته حیاط مستراح و اتاق فراش بغلش و انبار زغال و بعد هم یک کلاس. به مستراح هم سر کشیدیم. همه بی در و سقف و تیغه‌ای میان آن‌ها. نگاهی به ناظم کردم که پا به پایم می‌آمد. گفت: - -- دردسر عجیبی شده آقا. تا حالا صد تا کاغذ به ادارفردا صبح رفتم مدرسه. بچه‌ها با صف‌هاشان به طرف کلاس‌ها می‌رفتند و ناظم چوب به دست توی ایوان ایستاده بود و توی دفتر دو تا از معلم‌ها بودند. معلوم شد کار هر روزه‌شان است. ناظم را هم فرستادم سر یک کلاس دیگر و خودم آمدم دم در مدرسه به قدم زدن؛ فکر کردم از هر طرف که بیایند مرا این ته، دم در مدرسه خواهند دید و تمام طول راه در این خجالت خواهند ماند و دیگر دیر نخواهند آمد. یک سیاهی از ته جاده‌ی جنوبی پیداشد. جوانک بریانتین زده بود. مسلماً او هم مرا می‌دید، ولی آهسته‌تر از آن می‌آمد که یک معلم تأخیر کرده جلوی مدیرش می‌آمد. جلوتر که آمد حتی شنیدم که سوت می‌زد. اما بی‌انصاف چنان سلانه سلانه می‌آمد که دیدم هیچ جای گذشت نیست. اصلاً محل سگ به من نمی‌گذاشت. داشتم از کوره در می‌رفتم که یک مرتبه احساس کردم تغییری در رفتار خود داد و تند کرد. - -به خیر گذشت و گرنه خدا عالم است چه اتفاقی می‌افتاد. سلام که کرد مثل این که می‌خواست چیزی بگوید که پیش دستی کردم: - -- بفرمایید آقا. بفرمایید، بچه‌ها منتظرند. - -واقعاً به خیر گذشت. شاید اتوبوسش دیر کرده. شاید راه‌بندان بوده؛ جاده قرق بوده و باز یک گردن‌کلفتی از اقصای عالم می‌آمده که ازین سفره‌ی مرتضی علی بی‌نصیب نماند. به هر صورت در دل بخشیدمش. چه خوب شد که بد و بی‌راهی نگفتی! که از دور علم افراشته‌ی هیکل معلم کلاس چهارم نمایان شد. از همان ته مرا دیده بود. تقریباً می‌دوید. تحمل این یکی را نداشتم. «بدکاری می‌کنی. اول بسم‌الله و مته به خشخاش!» رفتم و توی دفتر نشستم و خودم را به کاری مشغول کردم که هن هن کنان رسید. چنان عرق از پیشانی‌اش می‌ریخت که راستی خجالت کشیدم. یک لیوان آب از کوه به دستش دادم و مسخ‌شده‌ی خنده‌اش را با آب به خوردش دادم و بلند که شد برود، گفتم: - -- عوضش دو کیلو لاغر شدید. - -برگشت نگاهی کرد و خنده‌ای و رفت. ناگهان ناظم از در وارد شد و از را ه نرسیده گفت: - -- دیدید آقا! این جوری می‌آند مدرسه. اون قرتی که عین خیالش هم نبود آقا! اما این یکی... - -از او پرسیدم: - -- انگار هنوز دو تا از کلاس‌ها ولند؟ - -- بله آقا. کلاس سه ورزش دارند. گفتم بنشینند دیکته بنویسند آقا. معلم حساب پنج و شش هم که نیومده آقا. - -در همین حین یکی از عکس‌های بزرگ دخمه‌های هخامنشی را که به دیوار کوبیده بود پس زد و: - -- نگاه کنید آقا... - -روی گچ دیوار با مداد قرمز و نه چندان درشت، به عجله و ناشیانه علامت داس کشیده بودند. همچنین دنبال کرد: - -- از آثار دوره‌ی اوناست آقا. کارشون همین چیزها بود. روزنومه بفروشند. تبلیغات کنند و داس چکش بکشند آقا. رئیس‌شون رو که گرفتند چه جونی کندم آقا تا حالی‌شون کنم که دست ور دارند آقا. و از روی میز پرید پایین. - -- گفتم مگه باز هم هستند؟ - -- آره آقا، پس چی! یکی همین آقازاده که هنوز نیومده آقا. هر روز نیم ساعت تأخیر داره آقا. یکی هم مثل کلاس سه. - -- خوب چرا تا حالا پاکش نکردی؟ - -- به! آخه آدم درد دلشو واسه‌ی کی بگه؟ آخه آقا در میان تو روی آدم می‌گند جاسوس، مأمور! باهاش حرفم شده آقا. کتک و کتک‌کاری! - -و بعد یک سخنرانی که چه طور مدرسه را خراب کرده‌اند و اعتماد اهل محله را چه طور از بین برده‌اند که نه انجمنی، نه کمکی به بی‌بضاعت‌ها؛ و از این حرف ها. - -بعد از سخنرانی آقای ناظم دستمالم را دادم که آن عکس‌ها را پاک کند و بعد هم راه افتادم که بروم سراغ اتاق خودم. در اتاقم را که باز کردم، داشتم دماغم با بوی خاک نم کشیده‌اش اخت می‌کرد که آخرین معلم هم آمد. آمدم توی ایوان و با صدای بلند، جوری که در تمام مدرسه بشنوند، ناظم را صدا زدم و گفتم با قلم قرمز برای آقا یک ساعت تأخیر بگذارند.ه‌ی ساختمان نوشتیم آقا. می‌گند نمی‌شه پول دولت رو تو ملک دیگرون خرج کرد. - -- گفتم راست می‌گند. - -دیگه کافی بود. آمدیم بیرون. همان توی حیاط تا نفسی تازه کنیم وضع مالی و بودجه و ازین حرف‌های مدرسه را پرسیدم. هر اتاق ماهی پانزده ریال حق نظافت داشت. لوازم‌التحریر و دفترها را هم اداره‌ی فرهنگ می‌داد. ماهی بیست و پنج تومان هم برای آب خوردن داشتند که هنوز وصول نشده بود. برای نصب هر بخاری سالی سه تومان. ماهی سی تومان هم تنخواه‌گردان مدرسه بود که مثل پول آب سوخت شده بود و حالا هم ماه دوم سال بود. اواخر آبان. حالیش کردم که حوصله‌ی این کارها را ندارم و غرضم را از مدیر شدن برایش خلاصه کردم و گفتم حاضرم همه‌ی اختیارات را به او بدهم. «اصلاً انگار که هنوز مدیر نیامده.» مهر مدرسه هم پهلوی خودش باشد. البته او را هنوز نمی‌شناختم. شنیده بودم که مدیرها قبلاً ناظم خودشان را انتخاب می‌کنند، اما من نه کسی را سراغ داشتم و نه حوصله‌اش را. حکم خودم را هم به زور گرفته بودم. سنگ‌هامان را وا کندیم و به دفتر رفتیم و چایی را که فراش از بساط خانه‌اش درست کرده بود، خوردیم تا زنگ را زدند و باز هم زدند و من نگاهی به پرونده‌های شاگردها کردم که هر کدام عبارت بود از دو برگ کاغذ. از همین دو سه برگ کاغذ دانستم که اولیای بچه‌ها اغلب زارع و باغبان و اویارند و قبل از این‌که زنگ آخر را بزنند و مدرسه تعطیل بشود بیرون آمدم. برای روز اول خیلی زیاد بود. - -فردا صبح رفتم مدرسه. بچه‌ها با صف‌هاشان به طرف کلاس‌ها می‌رفتند و ناظم چوب به دست توی ایوان ایستاده بود و توی دفتر دو تا از معلم‌ها بودند. معلوم شد کار هر روزه‌شان است. ناظم را هم فرستادم سر یک کلاس دیگر و خودم آمدم دم در مدرسه به قدم زدن؛ فکر کردم از هر طرف که بیایند مرا این ته، دم در مدرسه خواهند دید و تمام طول راه در این خجالت خواهند ماند و دیگر دیر نخواهند آمد. یک سیاهی از ته جاده‌ی جنوبی پیداشد. جوانک بریانتین زده بود. مسلماً او هم مرا می‌دید، ولی آهسته‌تر از آن می‌آمد که یک معلم تأخیر کرده جلوی مدیرش می‌آمد. جلوتر که آمد حتی شنیدم که سوت می‌زد. اما بی‌انصاف چنان سلانه سلانه می‌آمد که دیدم هیچ جای گذشت نیست. اصلاً محل سگ به من نمی‌گذاشت. داشتم از کوره در می‌رفتم که یک مرتبه احساس کردم تغییری در رفتار خود داد و تند کرد. - -به خیر گذشت و گرنه خدا عالم است چه اتفاقی می‌افتاد. سلام که کرد مثل این که می‌خواست چیزی بگوید که پیش دستی کردم: - -- بفرمایید آقا. بفرمایید، بچه‌ها منتظرند. - -واقعاً به خیر گذشت. شاید اتوبوسش دیر کرده. شاید راه‌بندان بوده؛ جاده قرق بوده و باز یک گردن‌کلفتی از اقصای عالم می‌آمده که ازین سفره‌ی مرتضی علی بی‌نصیب نماند. به هر صورت در دل بخشیدمش. چه خوب شد که بد و بی‌راهی نگفتی! که از دور علم افراشته‌ی هیکل معلم کلاس چهارم نمایان شد. از همان ته مرا دیده بود. تقریباً می‌دوید. تحمل این یکی را نداشتم. «بدکاری می‌کنی. اول بسم‌الله و مته به خشخاش!» رفتم و توی دفتر نشستم و خودم را به کاری مشغول کردم که هن هن کنان رسید. چنان عرق از پیشانی‌اش می‌ریخت که راستی خجالت کشیدم. یک لیوان آب از کوه به دستش دادم و مسخ‌شده‌ی خنده‌اش را با آب به خوردش دادم و بلند که شد برود، گفتم: - -- عوضش دو کیلو لاغر شدید. - -برگشت نگاهی کرد و خنده‌ای و رفت. ناگهان ناظم از در وارد شد و از را ه نرسیده گفت: - -- دیدید آقا! این جوری می‌آند مدرسه. اون قرتی که عین خیالش هم نبود آقا! اما این یکی... - -از او پرسیدم: - -- انگار هنوز دو تا از کلاس‌ها ولند؟ - -- بله آقا. کلاس سه ورزش دارند. گفتم بنشینند دیکته بنویسند آقا. معلم حساب پنج و شش هم که نیومده آقا. - -در همین حین یکی از عکس‌های بزرگ دخمه‌های هخامنشی را که به دیوار کوبیده بود پس زد و: - -- نگاه کنید آقا... - -روی گچ دیوار با مداد قرمز و نه چندان درشت، به عجله و ناشیانه علامت داس کشیده بودند. همچنین دنبال کرد: - -- از آثار دوره‌ی اوناست آقا. کارشون همین چیزها بود. روزنومه بفروشند. تبلیغات کنند و داس چکش بکشند آقا. رئیس‌شون رو که گرفتند چه جونی کندم آقا تا حالی‌شون کنم که دست ور دارند آقا. و از روی میز پرید پایین. - -- گفتم مگه باز هم هستند؟ - -- آره آقا، پس چی! یکی همین آقازاده که هنوز نیومده آقا. هر روز نیم ساعت تأخیر داره آقا. یکی هم مثل کلاس سه. - -- خوب چرا تا حالا پاکش نکردی؟ - -- به! آخه آدم درد دلشو واسه‌ی کی بگه؟ آخه آقا در میان تو روی آدم می‌گند جاسوس، مأمور! باهاش حرفم شده آقا. کتک و کتک‌کاری! - -و بعد یک سخنرانی که چه طور مدرسه را خراب کرده‌اند و اعتماد اهل محله را چه طور از بین برده‌اند که نه انجمنی، نه کمکی به بی‌بضاعت‌ها؛ و از این حرف ها. - -بعد از سخنرانی آقای ناظم دستمالم را دادم که آن عکس‌ها را پاک کند و بعد هم راه افتادم که بروم سراغ اتاق خودم. در اتاقم را که باز کردم، داشتم دماغم با بوی خاک نم کشیده‌اش اخت می‌کرد که آخرین معلم هم آمد. آمدم توی ایوان و با صدای بلند، جوری که در تمام مدرسه بشنوند، ناظم را صدا زدم و گفتم با قلم قرمز برای آقا یک ساعت تأخیر بگذارند. - -روز سوم باز اول وقت مدرسه بودم. هنوز از پشت دیوار نپیچیده بودم که صدای سوز و بریز بچه‌ها به پیشبازم آمد. تند کردم. پنج تا از بچه‌ها توی ایوان به خودشان می‌پیچیدند و ناظم ترکه‌ای به دست داشت و به نوبت به کف دست‌شان می‌زد. بچه‌ها التماس می‌کردند؛ گریه می‌کردند؛ اما دستشان را هم دراز می‌کردند. نزدیک بود داد بزنم یا با لگد بزنم و ناظم را پرت کنم آن طرف. پشتش به من بود و من را نمی‌دید. ناگهان زمزمه‌ای توی صف‌ها افتاد که یک مرتبه مرا به صرافت انداخت که در مقام مدیریت مدرسه، به سختی می‌شود ناظم را کتک زد. این بود که خشمم را فرو خوردم و آرام از پله‌ها رفتم بالا. ناظم، تازه متوجه من شده بود در همین حین دخالتم را کردم و خواهش کردم این بار همه‌شان را به من ببخشند. - -نمی‌دانم چه کار خطایی از آنها سر زده بود که ناظم را تا این حد عصبانی کرده بود. بچه‌ها سکسکه‌کنان رفتند توی صف‌ها و بعد زنگ را زدند و صف‌ها رفتند به کلاس‌ها و دنبالشان هم معلم‌ها که همه سر وقت حاضر بودند. نگاهی به ناظم انداختم که تازه حالش سر جا آمده بود و گفتم در آن حالی که داشت، ممکن بود گردن یک کدامشان را بشکند. که مرتبه براق شد: - -- اگه یک روز جلوشونو نگیرید سوارتون می‌شند آقا. نمی‌دونید چه قاطرهای چموشی شده‌اند آقا. - -مثل بچه مدرسه‌ای‌ها آقا آقا می‌کرد. موضوع را برگرداندم و احوال مادرش را پرسیدم. خنده، صورتش را از هم باز کرد و صدا زد فراش برایش آب بیاورد. یادم هست آن روز نیم ساعتی برای آقای ناظم صحبت کردم. پیرانه. و او جوان بود و زود می‌شد رامش کرد. بعد ازش خواستم که ترکه‌ها را بشکند و آن وقت من رفتم سراغ اتاق خودم. - -در همان هفته‌ی اول به کارها وارد شدم. فردای زمستان و نه تا بخاری زغال سنگی و روزی چهار بار آب آوردن و آب و جاروی اتاق‌ها با یک فراش جور در نمی‌آید. یک فراش دیگر از اداره ی فرهنگ خواستم که هر روز منتظر ورودش بودیم. بعد از ظهرها را نمی‌رفتم. روزهای اول با دست و دل لرزان، ولی سه چهار روزه جرأت پیدا کردم. احساس می‌کردم که مدرسه زیاد هم محض خاطر من نمی‌گردد. کلاس اول هم یکسره بود و به خاطر بچه‌های جغله دلهره‌ای نداشتم. در بیابان‌های اطراف مدرسه هم ماشینی آمد و رفت نداشت و گرچه پست و بلند بود اما به هر صورت از حیاط مدرسه که بزرگ‌تر بود. معلم ها هم، هر بعد از ظهری دو تاشان به نوبت می‌رفتند یک جوری باهم کنار آمده بودند. و ترسی هم از این نبود که بچه‌ها از علم و فرهنگ ثقل سرد بکنند. یک روز هم بازرس آمد و نیم ساعتی پیزر لای پالان هم گذاشتیم و چای و احترامات متقابل! و در دفتر بازرسی تصدیق کرد که مدرسه «با وجود عدم وسایل» بسیار خوب اداره می‌شود. - -بچه‌ها مدام در مدرسه زمین می‌خوردند، بازی می‌کردند، زمین می‌خوردند. مثل اینکه تاتوله خورده بودند. ساده‌ترین شکل بازی‌هایشان در ربع ساعت‌های تفریح، دعوا بود. فکر می‌کردم علت این همه زمین خوردن شاید این باشد که بیش‌ترشان کفش حسابی ندارند. آن‌ها هم که داشتند، بچه‌ننه بودند و بلد نبودند بدوند و حتی راه بروند. این بود که روزی دو سه بار، دست و پایی خراش بر می‌داشت. پرونده‌ی برق و تلفن مدرسه را از بایگانی بسیار محقر مدرسه بیرون کشیده بودم و خوانده بودم. اگر یک خرده می‌دویدی تا دو سه سال دیگر هم برق مدرسه درست می‌شد و هم تلفنش. دوباره سری به اداره ساختمان زدم و موضوع را تازه کردم و به رفقایی که دورادور در اداره‌ی برق و تلفن داشتم، یکی دو بار رو انداختم که اول خیال می‌کردند کار خودم را می‌خواهم به اسم مدرسه راه بیندازم و ناچار رها کردم. این قدر بود که ادای وظیفه‌ای می‌کرد. مدرسه آب نداشت. نه آب خوراکی و نه آب جاری. با هرزاب بهاره، آب انبار زیر حوض را می‌انباشتند که تلمبه‌ای سرش بود و حوض را با همان پر می‌کردند و خود بچه‌ها. اما برای آب خوردن دو تا منبع صد لیتری داشتیم از آهن سفید که مثل امامزاده‌ای یا سقاخانه‌ای دو قلو، روی چهار پایه کنار حیاط بود و روزی دو بار پر و خالی می‌شد. این آب را از همان باغی می‌آوردیم که ردیف کاج‌هایش روی آسمان، لکه‌ی دراز سیاه انداخته بود. البته فراش می‌آورد. با یک سطل بزرگ و یک آب‌پاش که سوراخ بود و تا به مدرسه می‌رسید، نصف شده بود. هر دو را از جیب خودم دادم تعمیر کردند. - -یک روز هم مالک مدرسه آمد. پیرمردی موقر و سنگین که خیال می‌کرد برای سرکشی به خانه‌ی مستأجرنشینش آمده. از در وارد نشده فریادش بلند شد و فحش را کشید به فراش و به فرهنگ که چرا بچه‌ها دیوار مدرسه را با زغال سیاه کرده‌اند واز همین توپ و تشرش شناختمش. کلی با او صحبت کردیم البته او دو برابر سن من را داشت. برایش چای هم آوردیم و با معلم‌ها آشنا شد و قول‌ها داد و رفت. کنه‌ای بود. درست یک پیرمرد. یک ساعت و نیم درست نشست. ماهی یک بار هم این برنامه را داشتند که بایست پیه‌اش را به تن می‌مالیدم. - -اما معلم‌ها. هر کدام یک ابلاغ بیست و چهار ساعته در دست داشتند، ولی در برنامه به هر کدام‌شان بیست ساعت درس بیشتر نرسیده بود. کم کم قرار شد که یک معلم از فرهنگ بخواهیم و به هر کدام‌شان هجده ساعت درس بدهیم، به شرط آن‌که هیچ بعد از ظهری مدرسه تعطیل نباشد. حتی آن که دانشگاه می‌رفت می‌توانست با هفته‌ای هجده ساعت درس بسازد. و دشوارترین کار همین بود که با کدخدامنشی حل شد و من یک معلم دیگر از فرهنگ خواستم. - -اواخر هفته‌ی دوم، فراش جدید آمد. مرد پنجاه ساله‌ای باریک و زبر و زرنگ که شب‌کلاه می‌گذاشت و لباس آبی می‌پوشید و تسبیح می‌گرداند و از هر کاری سر رشته داشت. آب خوردن را نوبتی می‌آوردند. مدرسه تر و تمیز شد و رونقی گرفت. فراش جدید سرش توی حساب بود. هر دو مستخدم با هم تمام بخاری‌ها را راه انداختند و یک کارگر هم برای کمک به آن‌ها آمد. فراش قدیمی را چهار روز پشت سر هم، سر ظهر می‌فرستادیم اداره‌ی فرهنگ و هر آن منتظر زغال بودیم. هنوز یک هفته از آمدن فراش جدید نگذشته بود که صدای همه‌ی معلم‌ها در آمده بود. نه به هیچ کدامشان سلام می‌کرد و نه به دنبال خرده فرمایش‌هایشان می‌رفت. درست است که به من سلام می‌کرد، اما معلم‌ها هم، لابد هر کدام در حدود من صاحب فضایل و عنوان و معلومات بودند که از یک فراش مدرسه توقع سلام داشته باشند. اما انگار نه انگار. - -بدتر از همه این که سر خر معلم‌ها بود. من که از همان اول، خرجم را سوا کرده بودم و آن‌ها را آزاد گذاشته بودم که در مواقع بیکاری در دفتر را روی خودشان ببندند و هر چه می‌خواهند بگویند و هر کاری می‌خواهند بکنند. اما او در فاصله‌ی ساعات درس، همچه که معلم‌ها می‌آمدند، می‌آمد توی دفتر و همین طوری گوشه‌ی اتاق می‌ایستاد و معلم‌ها کلافه می‌شدند. نه می‌توانستند شلکلک‌های معلمی‌شان را در حضور او کنار بگذارند و نه جرأت می‌کردند به او چیزی بگویند. بدزبان بود و از عهده‌ی همه‌شان بر می‌آمد. یکی دوبار دنبال نخود سیاه فرستاده بودندش. اما زرنگ بود و فوری کار را انجام می‌داد و بر می‌گشت. حسابی موی دماغ شده بود. ده سال تجربه این حداقل را به من آموخته بود که اگر معلم‌ها در ربع ساعت‌های تفریح نتوانند بخندند، سر کلاس، بچه‌های مردم را کتک خواهند زد. این بود که دخالت کردم. یک روز فراش جدید را صدا زدم. اول حال و احوالپرسی و بعد چند سال سابقه دارد و چند تا بچه و چه قدر می‌گیرد... که قضیه حل شد. سی صد و خرده‌ای حقوق می‌گرفت. با بیست و پنج سال سابقه. کار از همین جا خراب بود. پیدا بود که معلم‌ها حق دارند او را غریبه بدانند. نه دیپلمی، نه کاغذپاره‌ای، هر چه باشد یک فراش که بیشتر نبود! و تازه قلدر هم بود و حق هم داشت. اول به اشاره و کنایه و بعد با صراحت بهش فهماندم که گر چه معلم جماعت اجر دنیایی ندارد، اما از او که آدم متدین و فهمیده‌ای است بعید است و از این حرف‌ها... که یک مرتبه پرید توی حرفم که: - -- ای آقا! چه می‌فرمایید؟ شما نه خودتون این کاره‌اید و نه اینارو می‌شناسید. امروز می‌خواند سیگار براشون بخرم، فردا می‌فرستنم سراغ عرق. من این‌ها رو می‌شناسم. - -راست می‌گفت. زودتر از همه، او دندان‌های مرا شمرده بود. فهمیده بود که در مدرسه هیچ‌کاره‌ام. می‌خواستم کوتاه بیایم، ولی مدیر مدرسه بودن و در مقابل یک فراش پررو ساکت ماندن!... که خر خر کامیون زغال به دادم رسید. ترمز که کرد و صدا خوابید گفتم: - -- این حرف‌ها قباحت داره. معلم جماعت کجا پولش به عرق می‌رسه؟ حالا بدو زغال آورده‌اند. - -و همین طور که داشت بیرون می‌رفت، افزودم: - -- دو روز دیگه که محتاجت شدند و ازت قرض خواستند با هم رفیق می‌شید. - -و آمدم توی ایوان. در بزرگ آهنی مدرسه را باز کرده بودند و کامیون آمده بود تو و داشتند بارش را جلوی انبار ته حیاط خالی می‌کردند و راننده، کاغذی به دست ناظم داد که نگاهی به آن انداخت و مرا نشان داد که در ایوان بالا ایستاده بودم و فرستادش بالا. کاغذش را با سلام به دستم داد. بیجک زغال بود. رسید رسمی اداره‌ی فرهنگ بود در سه نسخه و روی آن ورقه‌ی ماشین شده‌ی «باسکول» که می‌گفت کامیون و محتویاتش جمعاً دوازده خروار است. اما رسیدهای رسمی اداری فرهنگ ساکت بودند. جای مقدار زغالی که تحویل مدرسه داده شده بود، در هر سه نسخه خالی بود. پیدا بود که تحویل گیرنده باید پرشان کند. همین کار را کردم. اوراق را بردم توی اتاق و با خودنویسم عدد را روی هر سه ورق نوشتم و امضا کردم و به دست راننده دادم که راه افتاد و از همان بالا به ناظم گفتم: - -- اگر مهر هم بایست زد، خودت بزن بابا. - -و رفتم سراغ کارم که ناگهان در باز شد و ناظم آمد تو؛ بیجک زغال دستش بود و: - -- مگه نفهمیدین آقا؟ مخصوصاً جاش رو خالی گذاشته بودند آقا... - -نفهمیده بودم. اما اگر هم فهمیده بودم، فرقی نمی‌کرد و به هر صورت از چنین کودنی نا به هنگام از جا در رفتم و به شدت گفتم: - -- خوب؟ - -- هیچ چی آقا.... رسم‌شون همینه آقا. اگه باهاشون کنار نیایید کارمونو لنگ می‌گذارند آقا... - -که از جا در رفتم. به چنین صراحتی مرا که مدیر مدرسه بودم در معامله شرکت می‌داد. و فریاد زدم: - -- عجب! حالا سرکار برای من تکلیف هم معین می‌کنید؟... خاک بر سر این فرهنگ با مدیرش که من باشم! برو ورقه رو بده دست‌شون، گورشون رو گم کنند. پدر سوخته‌ها... - -چنان فریاد زده بودم که هیچ کس در مدرسه انتظار نداشت. مدیر سر به زیر و پا به راهی بودم که از همه خواهش می‌کردم و حالا ناظم مدرسه، داشت به من یاد می‌داد که به جای نه خروار زغال مثلا هجده خروار تحویل بگیرم و بعد با اداره‌ی فرهنگ کنار بیایم. هی هی!.... تا ظهر هیچ کاری نتوانستم بکنم، جز این‌که چند بار متن استعفانامه‌ام را بنویسم و پاره کنم... قدم اول را این جور جلوی پای آدم می‌گذارند. - -بارندگی که شروع شد دستور دادم بخاری‌ها را از هفت صبح بسوزانند. بچه‌ها همیشه زود می‌آمدند. حتی روزهای بارانی. مثل این‌که اول آفتاب از خانه بیرون‌شان می‌کنند. یا ناهارنخورده. خیلی سعی کردم یک روز زودتر از بچه‌ها مدرسه باشم. اما عاقبت نشد که مدرسه را خالی از نفسِ به علم‌آلوده‌ی بچه‌ها استنشاق کنم. از راه که می‌رسیدند دور بخاری جمع می‌شدند و گیوه‌هاشان را خشک می‌کردند. و خیلی زود فهمیدم که ظهر در مدرسه ماندن هم مسأله کفش بود. هر که داشت نمی‌ماند.این قاعده در مورد معلم‌ها هم صدق می‌کرد اقلاً یک پول واکس جلو بودند. وقتی که باران می‌بارید تمام کوهپایه و بدتر از آن تمام حیاط مدرسه گل می‌شد. بازی و دویدن متوقف شده بود. مدرسه سوت و کور بود. این جا هم مسأله کفش بود. چشم اغلبشان هم قرمز بود. پیدا بود باز آن روز صبح یک فصل گریه کرده‌اند و در خانه‌شان علم صراطی بوده است. - -مدرسه داشت تخته می‌شد. عده‌ی غایب‌های صبح ده برابر شده بود و ساعت اول هیچ معلمی نمی‌توانست درس بدهد. دست‌های ورم‌کرده و سرمازده کار نمی‌کرد. حتی معلم کلاس اولمان هم می‌دانست که فرهنگ و معلومات مدارس ما صرفاً تابع تمرین است. مشق و تمرین. ده بار بیست بار. دست یخ‌کرده بیل و رنده را هم نمی‌تواند به کار بگیرد که خیلی هم زمخت‌اند و دست پر کن. این بود که به فکر افتادیم. فراش جدید واردتر از همه‌ی ما بود. یک روز در اتاق دفتر، شورامانندی داشتیم که البته او هم بود. خودش را کم‌کم تحمیل کرده بود. گفت حاضر است یکی از دُم‌کلفت‌های همسایه‌ی مدرسه را وادارد که شن برایمان بفرستد به شرط آن که ما هم برویم و از انجمن محلی برای بچه‌ها کفش و لباس بخواهیم. قرار شد خودش قضیه را دنبال کند که هفته‌ی آینده جلسه‌شان کجاست و حتی بخواهد که دعوت‌مانندی از ما بکنند. دو روز بعد سه تا کامیون شن آمد. دوتایش را توی حیاط مدرسه، خالی کردیم و سومی را دم در مدرسه، و خود بچه‌ها نیم ساعته پهنش کردند. با پا و بیل و هر چه که به دست می‌رسید. - -عصر همان روز ما را به انجمن دعوت کردند. خود من و ناظم باید می‌رفتیم. معلم کلاس چهارم را هم با خودمان بردیم. خانه‌ای که محل جلسه‌ی آن شب انجمن بود، درست مثل مدرسه، دور افتاده و تنها بود. قالی‌ها و کناره‌ها را به فرهنگ می‌آلودیم و می‌رفتیم. مثل این‌که سه تا سه تا روی هم انداخته بودند. اولی که کثیف شد دومی. به بالا که رسیدیم یک حاجی آقا در حال نماز خواندن بود. و صاحب‌خانه با لهجه‌ی غلیظ یزدی به استقبال‌مان آمد. همراهانم را معرفی کردم و لابد خودش فهمید مدیر کیست. برای ما چای آوردند. سیگارم را چاق کردم و با صاحب‌خانه از قالی‌هایش حرف زدیم. ناظم به بچه‌هایی می‌ماند که در مجلس بزرگترها خوابشان می‌گیرد و دل‌شان هم نمی‌خواست دست به سر شوند. سر اعضای انجمن باز شده بود. حاجی آقا صندوقدار بود. من و ناظم عین دو طفلان مسلم بودیم و معلم کلاس چهارم عین خولی وسطمان نشسته. اغلب اعضای انجمن به زبان محلی صحبت می‌کردند و رفتار ناشی داشتند. حتی یک کدامشان نمی‌دانستند که دست و پاهای خود را چه جور ضبط و ربط کنند. بلند بلند حرف می‌زدند. درست مثل این‌که وزارتخانه‌ی دواب سه تا حیوان تازه برای باغ وحش محله‌شان وارد کرده. جلسه که رسمی شد، صاحبخانه معرفی‌مان کرد و شروع کردند. مدام از خودشان صحبت می‌کردند از این‌که دزد دیشب فلان جا را گرفته و باید درخواست پاسبان شبانه کنیم و... - -همین طور یک ساعت حرف زدند و به مهام امور رسیدگی کردند و من و معلم کلاس چهارم سیگار کشیدیم. انگار نه انگار که ما هم بودیم. نوکرشان که آمد استکان‌ها را جمع کند، چیزی روی جلد اشنو نوشتم و برای صاحبخانه فرستادم که یک مرتبه به صرافت ما افتاد و اجازه خواست و: - -- آقایان عرضی دارند. بهتر است کارهای خودمان را بگذاریم برای بعد. - -مثلاً می‌خواست بفهماند که نباید همه‌ی حرف‌ها را در حضور ما زده باشند. و اجازه دادند معلم کلاس چهار شروع کرد به نطق و او هم شروع کرد که هر چه باشد ما زیر سایه‌ی آقایانیم و خوش‌آیند نیست که بچه‌هایی باشند که نه لباس داشته باشند و نه کفش درست و حسابی و از این حرف‌ها و مدام حرف می‌زد. ناظم هم از چُرت در آمد چیزهایی را که از حفظ کرده بود گفت و التماس دعا و کار را خراب کرد.تشری به ناظم زدم که گدابازی را بگذارد کنار و حالی‌شان کردم که صحبت از تقاضا نیست و گدایی. بلکه مدرسه دور افتاده است و مستراح بی در و پیکر و از این اباطیل... چه خوب شد که عصبانی نشدم. و قرار شد که پنج نفرشان فردا عصر بیایند که مدرسه را وارسی کنند و تشکر و اظهار خوشحالی و در آمدیم. - -در تاریکی بیابان هفت تا سواری پشت در خانه ردیف بودند و راننده‌ها توی یکی از آن‌ها جمع شده بودند و اسرار ارباب‌هاشان را به هم می‌گفتند. در این حین من مدام به خودم می‌گفتم من چرا رفتم؟ به من چه؟ مگر من در بی کفش و کلاهی‌شان مقصر بودم؟ می‌بینی احمق؟ مدیر مدرسه هم که باشی باید شخصیت و غرورت را لای زرورق بپیچی و طاق کلاهت بگذاری که اقلاً نپوسد. حتی اگر بخواهی یک معلم کوفتی باشی، نه چرا دور می‌زنی؟ حتی اگر یک فراش ماهی نود تومانی باشی، باید تا خرخره توی لجن فرو بروی.در همین حین که من در فکر بودم ناظم گفت: - -- دیدید آقا چه طور باهامون رفتار کردند؟ با یکی از قالی‌هاشون آقا تمام مدرسه رو می‌خرید. - -گفتم: - -- تا سر و کارت با الف.ب است به‌پا قیاس نکنی. خودخوری می‌آره. - -و معلم کلاس چهار گفت: - -- اگه فحشمون هم می‌دادند من باز هم راضی بودم، باید واقع‌بین بود. خدا کنه پشیمون نشند. - -بعد هم مدتی درد دل کردیم و تا اتوبوس برسد و سوار بشیم، معلوم شد که معلم کلاس چهار با زنش متارکه کرده و مادر ناظم را سرطانی تشخیص دادند. و بعد هم شب بخیر... - -دو روز تمام مدرسه نرفتم. خجالت می‌کشیدم توی صورت یک کدام‌شان نگاه کنم. و در همین دو روز حاجی آقا با دو نفر آمده بودند، مدرسه را وارسی و صورت‌برداری و ناظم می‌گفت که حتی بچه‌هایی هم که کفش و کلاهی داشتند پاره و پوره آمده بودند. و برای بچه‌ها کفش و لباس خریدند. روزهای بعد احساس کردم زن‌هایی که سر راهم لب جوی آب ظرف می‌شستند، سلام می‌کنند و یک بار هم دعای خیر یکی‌شان را از عقب سر شنیدم.اما چنان از خودم بدم آمده بود که رغبتم نمی‌شد به کفش و لباس‌هاشان نگاه کنم. قربان همان گیوه‌های پاره! بله، نان گدایی فرهنگ را نو نوار کرده بود. - -تازه از دردسرهای اول کار مدرسه فارغ شده بودم که شنیدم که یک روز صبح، یکی از اولیای اطفال آمد. بعد از سلام و احوالپرسی دست کرد توی جیبش و شش تا عکس در آورد، گذاشت روی میزم. شش تا عکس زن . و هر کدام به یک حالت. یعنی چه؟ نگاه تندی به او کردم. آدم مرتبی بود. اداری مانند. کسر شأن خودم می‌دانستم که این گوشه‌ی از زندگی را طبق دستور عکاس‌باشی فلان خانه‌ی بندری ببینم. اما حالا یک مرد اتو کشیده‌ی مرتب آمده بود و شش تا از همین عکس‌ها را روی میزم پهن کرده بود و به انتظار آن که وقاحت عکس‌ها چشم‌هایم را پر کند داشت سیگار چاق می‌کرد. - -حسابی غافلگیر شده بودم... حتماً تا هر شش تای عکس‌ها را ببینم، بیش از یک دقیقه طول کشید. همه از یک نفر بود. به این فکر گریختم که الان هزار ها یا میلیون ها نسخه‌ی آن، توی جیب چه جور آدم‌هایی است و در کجاها و چه قدر خوب بود که همه‌ی این آدم‌ها را می‌شناختم یا می‌دیدم. بیش ازین نمی‌شد گریخت. یارو به تمام وزنه وقاحتش، جلوی رویم نشسته بود. سیگاری آتش زدم و چشم به او دوختم. کلافه بود و پیدا بود برای کتک‌کاری هم آماده باشد. سرخ شده بود و داشت در دود سیگارش تکیه‌گاهی برای جسارتی که می‌خواست به خرج بدهد می‌جست. عکس‌ها را با یک ورقه از اباطیلی که همان روز سیاه کرده بودم، پوشاندم و بعد با لحنی که دعوا را با آن شروع می‌کنند؛ پرسیدم: - -- خوب، غرض؟ - -و صدایم توی اتاق پیچید. حرکتی از روی بیچارگی به خودش داد و همه‌ی جسارت‌ها را با دستش توی جیبش کرد و آرام‌تر از آن چیزی که با خودش تو آورده بود، گفت: - -- چه عرض کنم؟... از معلم کلاس پنج تون بپرسید. - -که راحت شدم و او شروع کرد به این که «این چه فرهنگی است؟ خراب بشود. پس بچه‌های مردم با چه اطمینانی به مدرسه بیایند؟ - -و از این حرف‌ها... - -خلاصه این آقا معلم کاردستی کلاس پنجم، این عکس‌ها را داده به پسر آقا تا آن‌ها را روی تخته سه لایی بچسباند و دورش را سمباده بکشد و بیاورد. به هر صورت معلم کلاس پنج بی‌گدار به آب زده. و حالا من چه بکنم؟ به او چه جوابی بدهم؟ بگویم معلم را اخراج می‌کنم؟ که نه می‌توانم و نه لزومی دارد. او چه بکند؟ حتماً در این شهر کسی را ندارد که به این عکس‌ها دلخوش کرده. ولی آخر چرا این جور؟ یعنی این قدر احمق است که حتی شاگردهایش را نمی‌شناسد؟... پاشدم ناظم را صدا بزنم که خودش آمده بود بالا، توی ایوان منتظر ایستاده بود. من آخرین کسی بودم که از هر اتفاقی در مدرسه خبردار می‌شدم. حضور این ولی طفل گیجم کرده بود که چنین عکس‌هایی را از توی جیب پسرش، و لابد به همین وقاحتی که آن‌ها را روی میز من ریخت، در آورده بوده. وقتی فهمید هر دو در مانده‌ایم سوار بر اسب شد که اله می‌کنم و بله می‌کنم، در مدرسه را می‌بندم، و از این جفنگیات.... - -حتماً نمی‌دانست که اگر در هر مدرسه بسته بشود، در یک اداره بسته شده است. اما من تا او بود نمی‌توانستم فکرم را جمع کنم. می‌خواست پسرش را بخواهیم تا شهادت بدهد و چه جانی کندیم تا حالیش کنیم که پسرش هر چه خفت کشیده، بس است و وعده‌ها دادیم که معلمش را دم خورشید کباب کنیم و از نان خوردن بیندازیم. یعنی اول ناظم شروع کرد که از دست او دل پری داشت و من هم دنبالش را گرفتم. برای دک کردن او چاره‌ای جز این نبود. و بعد رفت، ما دو نفری ماندیم با شش تا عکس زن . حواسم که جمع شد به ناظم سپردم صدایش را در نیاورد و یک هفته‌ی تمام مطلب را با عکس‌ها، توی کشوی میزم قفل کردم و بعد پسرک را صدا زدم. نه عزیزدُردانه می‌نمود و نه هیچ جور دیگر. داد می‌زد که از خانواده‌ی عیال‌واری است. کم‌خونی و فقر. دیدم معلمش زیاد هم بد تشخیص نداده. یعنی زیاد بی‌گدار به آب نزده. گفتم: - -- خواهر برادر هم داری؟ - -- آ... آ...آقا داریم آقا. - -- چند تا؟ - -- آ... آقا چهار تا آقا. - -- عکس‌ها رو خودت به بابات نشون دادی؟ - -- نه به خدا آقا... به خدا قسم... - -- پس چه طور شد؟ - -و دیدم از ترس دارد قالب تهی می‌کند. گرچه چوب‌های ناظم شکسته بود، اما ترس او از من که مدیر باشم و از ناظم و از مدرسه و از تنبیه سالم مانده بود. - -- نترس بابا. کاریت نداریم. تقصیر آقا معلمه که عکس‌ها رو داده... تو کار بدی نکردی بابا جان. فهمیدی؟ اما می‌خواهم ببینم چه طور شد که عکس‌ها دست بابات افتاد. - -- آ.. آ... آخه آقا... آخه... - -می‌دانستم که باید کمکش کنم تا به حرف بیاید. - -گفتم: - -- می‌دونی بابا؟ عکس‌هام چیز بدی نبود. تو خودت فهمیدی چی بود؟ - -- آخه آقا...نه آقا.... خواهرم آقا... خواهرم می‌گفت... - -- خواهرت؟ از تو کوچک‌تره؟ - -- نه آقا. بزرگ‌تره. می‌گفتش که آقا... می‌گفتش که آقا... هیچ چی سر عکس‌ها دعوامون شد. - -دیگر تمام بود. عکس‌ها را به خواهرش نشان داده بود که لای دفترچه پر بوده از عکس آرتیست‌ها. به او پز داده بوده. اما حاضر نبوده، حتی یکی از آن‌ها را به خواهرش بدهد. آدم مورد اعتماد معلم باشد و چنین خبطی بکند؟ و تازه جواب معلم را چه بدهد؟ ناچار خواهر او را لو داده بوده. بعد از او معلم را احضار کردم. علت احضار را می‌دانست. و داد می‌زد که چیزی ندارد بگوید. پس از یک هفته مهلت، هنوز از وقاحتی که من پیدا کرده بودم، تا از آدم خلع سلاح‌شده‌ای مثل او، دست بر ندارم، در تعجب بود. به او سیگار تعارف کردم و این قصه را برایش تعریف کردم که در اوایل تأسیس وزارت معارف، یک روز به وزیر خبر می‌دهند که فلان معلم با فلان بچه روابطی دارد. وزیر فوراً او را می‌خواهد و حال و احوال او را می‌پرسد و این‌که چرا تا به حال زن نگرفته و ناچار تقصیر گردن بی‌پولی می‌افتد و دستور که فلان قدر به او کمک کنند تا عروسی راه بیندازد و خود او هم دعوت بشود و قضیه به همین سادگی تمام می‌شود. و بعد گفتم که خیلی جوان‌ها هستند که نمی‌توانند زن بگیرند و وزرای فرهنگ هم این روزها گرفتار مصاحبه‌های روزنامه‌ای و رادیویی هستند. اما در نجیب‌خانه‌ها که باز است و ازین مزخرفات... و هم‌دردی و نگذاشتم یک کلمه حرف بزند. بعد هم عکس را که توی پاکت گذاشته بودم، به دستش دادم و وقاحت را با این جمله به حد اعلا رساندم که: - -- اگر به تخته نچسبونید، ضررشون کم‌تره. - -تا حقوقم به لیست اداره‌ی فرهنگ برسه، سه ماه طول کشید. فرهنگی‌های گداگشنه و خزانه‌ی خالی و دست‌های از پا درازتر! اما خوبیش این بود که در مدرسه‌ی ما فراش جدیدمان پولدار بود و به همه‌شان قرض داد. کم کم بانک مدرسه شده بود. از سیصد و خرده‌ای تومان که می‌گرفت، پنجاه تومان را هم خرج نمی‌کرد. نه سیگار می‌کشید و نه اهل سینما بود و نه برج دیگری داشت. از این گذشته، باغبان یکی از دم‌کلفت‌های همان اطراف بود و باغی و دستگاهی و سور و ساتی و لابد آشپزخانه‌ی مرتبی. خیلی زود معلم‌ها فهمیدند که یک فراش پولدار خیلی بیش‌تر به درد می‌خورد تا یک مدیر بی‌بو و خاصیت. - -این از معلم‌ها. حقوق مرا هم هنوز از مرکز می‌دادند. با حقوق ماه بعد هم اسم مرا هم به لیست اداره منتقل کردند. درین مدت خودم برای خودم ورقه انجام کار می‌نوشتم و امضا می‌کردم و می‌رفتم از مدرسه‌ای که قبلاً در آن درس می‌دادم، حقوقم را می‌گرفتم. سر و صدای حقوق که بلند می‌شد معلم‌ها مرتب می‌شدند و کلاس ماهی سه چهار روز کاملاً دایر بود. تا ورقه‌ی انجام کار به دستشان بدهم. غیر از همان یک بار - در اوایل کار- که برای معلم حساب پنج و شش قرمز توی دفتر گذاشتیم، دیگر با مداد قرمز کاری نداشتیم و خیال همه‌شان راحت بود. وقتی برای گرفتن حقوقم به اداره رفتم، چنان شلوغی بود که به خودم گفتم کاش اصلاً حقوقم را منتقل نکرده بودم. نه می‌توانستم سر صف بایستم و نه می‌توانستم از حقوقم بگذرم. تازه مگر مواجب‌بگیر دولت چیزی جز یک انبان گشاده‌ی پای صندوق است؟..... و اگر هم می‌ماندی با آن شلوغی باید تا دو بعداز ظهر سر پا بایستی. همه‌ی جیره‌خوارهای اداره بو برده بودند که مدیرم. و لابد آن‌قدر ساده لوح بودند که فکر کنند روزی گذارشان به مدرسه‌ی ما بیفتد. دنبال سفته‌ها می‌گشتند، به حسابدار قبلی فحش می‌دادند، التماس می‌کردند که این ماه را ندیده بگیرید و همه‌ی حق و حساب‌دان شده بودند و یکی که زودتر از نوبت پولش را می‌گرفت صدای همه در می‌آمد. در لیست مدرسه، بزرگ‌ترین رقم مال من بود. درست مثل بزرگ‌ترین گناه در نامه‌ی عمل. دو برابر فراش جدیدمان حقوق می‌گرفتم. از دیدن رقم‌های مردنی حقوق دیگران چنان خجالت کشیدم که انگار مال آن‌ها را دزدیده‌ام. و تازه خلوت که شد و ده پانزده تا امضا که کردم، صندوق‌دار چشمش به من افتاد و با یک معذرت، شش صد تومان پول دزدی را گذاشت کف دستم... مرده شور! - -هنوز برف اول نباریده بود که یک روز عصر، معلم کلاس چهار رفت زیر ماشین. زیر یک سواری. مثل همه‌ی عصرها من مدرسه نبودم. دم غروب بود که فراش قدیمی مدرسه دم در خونه‌مون، خبرش را آورد. که دویدم به طرف لباسم و تا حاضر بشوم، می‌شنیدم که دارد قضیه را برای زنم تعریف می‌کند. ماشین برای یکی از آمریکایی‌ها بوده. باقیش را از خانه که در آمدیم برایم تعریف کرد. گویا یارو خودش پشت فرمون بوده و بعد هم هول شده و در رفته. بچه‌ها خبر را به مدرسه برگردانده‌اند و تا فراش و زنش برسند، جمعیت و پاسبان‌ها سوارش کرده بودند و فرستاده بوده‌اند مریض‌خانه. به اتوبوس که رسیدم، دیدم لاک پشت است. فراش را مرخص کردم و پریدم توی تاکسی. اول رفتم سراغ پاسگاه جدید کلانتری. تعاریف تکه و پاره‌ای از پرونده مطلع بود. اما پرونده تصریحی نداشت که راننده که بوده. اما هیچ کس نمی‌دانست عاقبت چه بلایی بر سر معلم کلاس چهار ما آمده است. کشیک پاسگاه همین قدر مطلع بود که درین جور موارد «طبق جریان اداری» اول می‌روند سرکلانتری، بعد دایره‌ی تصادفات و بعد بیمارستان. اگر آشنا در نمی‌آمدیم، کشیک پاسگاه مسلماً نمی‌گذاشت به پرونده نگاه چپ بکنم. احساس کردم میان اهل محل کم‌کم دارم سرشناس می‌شوم. و از این احساس خنده‌ام گرفت. - -ساعت ۸ دم در بیمارستان بودم، اگر سالم هم بود حتماً یه چیزیش شده بود. همان طور که من یه چیزیم می‌شد. روی در بیمارستان نوشته شده بود: «از ساعت ۷ به بعد ورود ممنوع». در زدم. از پشت در کسی همین آیه را صادر کرد. دیدم فایده ندارد و باید از یک چیزی کمک بگیرم. از قدرتی، از مقامی، از هیکلی، از یک چیزی. صدایم را کلفت کردم و گفتم:« من...» می‌خواستم بگویم من مدیر مدرسه‌ام. ولی فوراً پشیمان شدم. یارو لابد می‌گفت مدیر مدرسه کدام سگی است؟ این بود با کمی مکث و طمطراق فراوان جمله‌ام را این طور تمام کردم: - -- ...بازرس وزارت فرهنگم. - -که کلون صدایی کرد و لای در باز شد. یارو با چشم‌هایش سلام کرد. رفتم تو و با همان صدا پرسیدم: - -- این معلمه مدرسه که تصادف کرده... - -تا آخرش را خواند. یکی را صدا زد و دنبالم فرستاد که طبقه‌ی فلان، اتاق فلان. از حیاط به راهرو و باز به حیاط دیگر که نصفش را برف پوشانده بود و من چنان می‌دویدم که یارو از عقب سرم هن هن می‌کرد. طبقه‌ی اول و دوم و چهارم. چهار تا پله یکی. راهرو تاریک بود و پر از بوهای مخصوص بود. هن هن کنان دری را نشان داد که هل دادم و رفتم تو. بو تندتر بود و تاریکی بیشتر. تالاری بود پر از تخت و جیرجیر کفش و خرخر یک نفر. دور یک تخت چهار نفر ایستاده بودند. حتماً خودش بود. پای تخت که رسیدم، احساس کردم همه‌ی آنچه از خشونت و تظاهر و ابهت به کمک خواسته بودم آب شد و بر سر و صورتم راه افتاد. و این معلم کلاس چهارم مدرسه‌ام بود. سنگین و با شکم بر آمده دراز کشیده بود. خیلی کوتاه‌تر از زمانی که سر پا بود به نظرم آمد. صورت و سینه‌اش از روپوش چرک‌مُرد بیرون بود. صورتش را که شسته بودند کبود کبود بود، درست به رنگ جای سیلی روی صورت بچه‌ها. مرا که دید، لبخند و چه لبخندی! شاید می‌خواست بگوید مدرسه‌ای که مدیرش عصرها سر کار نباشد، باید همین جورها هم باشد. خنده توی صورت او همین طور لرزید و لرزید تا یخ زد. - -«آخر چرا تصادف کردی؟...» - -مثل این که سوال را ازو کردم. اما وقتی که دیدم نمی‌تواند حرف بزند و به جای هر جوابی همان خنده‌ی یخ‌بسته را روی صورت دارد، خودم را به عنوان او دم چک گرفتم. «آخه چرا؟ چرا این هیکل مدیر کلی را با خودت این قد این ور و آن ور می‌بری تا بزنندت؟ تا زیرت کنند؟ مگر نمی‌دانستی که معلم حق ندارد این قدر خوش‌هیکل باشد؟ آخر چرا تصادف کردی؟» به چنان عتاب و خطابی این‌ها را می‌گفتم که هیچ مطمئن نیستم بلند بلند به خودش نگفته باشم. و یک مرتبه به کله‌ام زد که «مبادا خودت چشمش زده باشی؟» و بعد: «احمق خاک بر سر! بعد از سی و چند سال عمر، تازه خرافاتی شدی!» و چنان از خودم بیزاریم گرفت که می‌خواستم به یکی فحش بدهم، کسی را بزنم. که چشمم به دکتر کشیک افتاد. - -- مرده شور این مملکتو ببره. ساعت چهار تا حالا از تن این مرد خون می‌ره. حیفتون نیومد؟... - -دستی روی شانه‌ام نشست و فریادم را خواباند. برگشتم پدرش بود. او هم می‌خندید. دو نفر دیگر هم با او بودند. همه دهاتی‌وار؛ همه خوش قد و قواره. حظ کردم! آن دو تا پسرهایش بودند یا برادرزاده‌هایش یا کسان دیگرش. تازه داشت گل از گلم می‌شکفت که شنیدم: - -- آقا کی باشند؟ - -این راهم دکتر کشیک گفت که من باز سوار شدم: - -- مرا می‌گید آقا؟ من هیشکی. یک آقا مدیر کوفتی. این هم معلمم. - -که یک مرتبه عقل هی زد و «پسر خفه شو» و خفه شدم. بغض توی گلویم بود. دلم می‌خواست یک کلمه دیگر بگوید. یک کنایه بزند... نسبت به مهارت هیچ دکتری تا کنون نتوانسته‌ام قسم بخورم. دستش را دراز کرد که به اکراه فشار دادم و بعد شیشه‌ی بزرگی را نشانم داد که وارونه بالای تخت آویزان بود و خرفهمم کرد که این جوری غذا به او می‌رسانند و عکس هم گرفته‌اند و تا فردا صبح اگر زخم‌ها چرک نکند، جا خواهند انداخت و گچ خواهند کرد. که یکی دیگر از راه رسید. گوشی به دست و سفید پوش و معطر. با حرکاتی مثل آرتیست سینما. سلامم کرد. صدایش در ته ذهنم چیزی را مختصر تکانی داد. اما احتیاجی به کنجکاوی نبود. یکی از شاگردهای نمی‌دانم چند سال پیشم بود. خودش خودش را معرفی کرد. آقای دکتر...! عجب روزگاری! هر تکه از وجودت را با مزخرفی از انبان مزخرفاتت، مثل ذره‌ای روزی در خاکی ریخته‌ای که حالا سبز کرده. چشم داری احمق. این تویی که روی تخت دراز کشیده‌ای. ده سال آزگار از پلکان ساعات و دقایق عمرت هر لحظه یکی بالا رفته و تو فقط خستگی این بار را هنوز در تن داری. این جوجه‌فکلی و جوجه‌های دیگر که نمی‌شناسی‌شان، همه از تخمی سر در آورده‌اند که روزی حصار جوانی تو بوده و حالا شکسته و خالی مانده. دستش را گرفتم و کشیدمش کناری و در گوشش هر چه بد و بی‌راه می‌دانستم، به او و همکارش و شغلش دادم. مثلاً می‌خواستم سفارش معلم کلاس چهار مدرسه‌ام را کرده باشم. بعد هم سری برای پدر تکان دادم و گریختم. از در که بیرون آمدم، حیاط بود و هوای بارانی. از در بزرگ که بیرون آمدم به این فکر می‌کردم که «اصلا به تو چه؟ اصلاً چرا آمدی؟ می‌خواستی کنجکاوی‌ات را سیرکنی؟» و دست آخر به این نتیجه رسیدم که «طعمه‌ای برای میزنشین‌های شهربانی و دادگستری به دست آمده و تو نه می‌توانی این طعمه را از دستشان بیرون بیاوری و نه هیچ کار دیگری می‌توانی بکنی...» - -و داشتم سوار تاکسی می‌شدم تا برگردم خانه که یک دفعه به صرافت افتادم که اقلاً چرا نپرسیدی چه بلایی به سرش آمده؟» خواستم عقب‌گرد کنم، اما هیکل کبود معلم کلاس چهارم روی تخت بود و دیدم نمی‌توانم. خجالت می‌کشیدم و یا می‌ترسیدم. آن شب تا ساعت دو بیدار بودم و فردا یک گزارش مفصل به امضای مدیر مدرسه و شهادت همه‌ی معلم‌ها برای اداره‌ی فرهنگ و کلانتری محل و بعد هم دوندگی در اداره‌ی بیمه و قرار بر این که روزی نه تومان بودجه برای خرج بیمارستان او بدهند و عصر پس از مدتی رفتم مدرسه و کلاس‌ها را تعطیل کردم و معلم‌ها و بچه‌های ششم را فرستادم عیادتش و دسته گل و ازین بازی‌ها... و یک ساعتی در مدرسه تنها ماندم و فارغ از همه چیز برای خودم خیال بافتم.... و فردا صبح پدرش آمد سلام و احوالپرسی و گفت یک دست و یک پایش شکسته و کمی خونریزی داخل مغز و از طرف یارو آمریکاییه آمده‌اند عیادتش و وعده و وعید که وقتی خوب شد، در اصل چهار استخدامش کنند و با زبان بی‌زبانی حالیم کرد که گزارش را بیخود داده‌ام و حالا هم داده‌ام، دنبالش نکنم و رضایت طرفین و کاسه‌ی از آش داغ‌تر و از این حرف‌ها... خاک بر سر مملکت. - -اوایل امر توجهی به بچه‌ها نداشتم. خیال می‌کردم اختلاف سِنی میان‌مان آن قدر هست که کاری به کار همدیگر نداشته باشیم. همیشه سرم به کار خودم بود. در دفتر را می‌بستم و در گرمای بخاری دولت قلم صد تا یک غاز می‌زدم. اما این کار مرتب سه چهار هفته بیش‌تر دوام نکرد. خسته شدم. ناچار به مدرسه بیشتر می‌رسیدم. یاد روزهای قدیمی با دوستان قدیمی به خیر چه آدم‌های پاک و بی‌آلایشی بودند، چه شخصیت‌های بی‌نام و نشانی و هر کدام با چه زبانی و با چه ادا و اطوارهای مخصوص به خودشان و این جوان‌های چلفته‌ای. چه مقلدهای بی‌دردسری برای فرهنگی‌مابی! نه خبری از دیروزشان داشتند و نه از املاک تازه‌ای که با هفتاد واسطه به دست‌شان داده بودند، چیزی سرشان می‌شد. بدتر از همه بی‌دست و پایی‌شان بود. آرام و مرتب درست مثل واگن شاه عبدالعظیم می‌آمدند و می‌رفتند. فقط بلد بودند روزی ده دقیقه دیرتر بیایند و همین. و از این هم بدتر تنگ‌نظری‌شان بود. - -سه بار شاهد دعواهایی بودم که سر یک گلدان میخک یا شمعدانی بود. بچه‌باغبان‌ها زیاد بودند و هر کدام‌شان حداقل ماهی یک گلدان میخک یا شمعدانی می‌آوردند که در آن برف و سرما نعمتی بود. اول تصمیم گرفتم، مدرسه را با آن‌ها زینت دهم. ولی چه فایده؟ نه کسی آب‌شان می‌داد و نه مواظبتی. و باز بدتر از همه‌ی این‌ها، بی‌شخصیتی معلم‌ها بود که درمانده‌ام کرده بود. دو کلمه نمی‌توانستند حرف بزنند. عجب هیچ‌کاره‌هایی بودند! احساس کردم که روز به روز در کلاس‌ها معلم‌ها به جای دانش‌آموزان جاافتاده‌تر می‌شوند. در نتیجه گفتم بیش‌تر متوجه بچه‌ها باشم. - -آن‌ها که تنها با ناظم سر و کار داشتند و مثل این بود که به من فقط یک سلام نیمه‌جویده بدهکارند. با این همه نومیدکننده نبودند. توی کوچه مواظب‌شان بودم. می‌خواستم حرف و سخن‌ها و درد دل‌ها و افکارشان را از یک فحش نیمه‌کاره یا از یک ادای نیمه‌تمام حدس بزنم، که سلام‌نکرده در می‌رفتند. خیلی کم تنها به مدرسه می‌آمدند. پیدا بود که سر راه همدیگر می‌ایستند یا در خانه‌ی یکدیگر می‌روند. سه چهار نفرشان هم با اسکورت می‌آمدند. از بیست سی نفری که ناهار می‌ماندند، فقط دو نفرشان چلو خورش می‌آوردند؛ فراش اولی مدرسه برایم خبر می‌آورد. بقیه گوشت‌کوبیده، پنیر گردوئی، دم پختکی و از این جور چیزها. دو نفرشان هم بودند که نان سنگک خالی می‌آوردند. برادر بودند. پنجم و سوم. صبح که می‌آمدند، جیب‌هاشان باد کرده بود. سنگک را نصف می‌کردند و توی جیب‌هاشان می‌تپاندند و ظهر می‌شد، مثل آن‌هایی که ناهارشان را در خانه می‌خورند، می‌رفتند بیرون. من فقط بیرون رفتن‌شان را می‌دیدم. اما حتی همین‌ها هر کدام روزی، یکی دو قران از فراش مدرسه خرت و خورت می‌خریدند. از همان فراش قدیمی مدرسه که ماهی پنج تومان سرایداریش را وصول کرده بودم. هر روز که وارد اتاقم می‌شدم پشت سر من می‌آمد بارانی‌ام را بر می‌داشت و شروع می‌کرد به گزارش دادن، که دیروز باز دو نفر از معلم‌ها سر یک گلدان دعوا کرده‌اند یا مأمور فرماندار نظامی آمده یا دفتردار عوض شده و از این اباطیل... پیدا بود که فراش جدید هم در مطالبی که او می‌گفت، سهمی دارد. - -یک روز در حین گزارش دادن، اشاره‌ای کرد به این مطلب که دیروز عصر یکی از بچه‌های کلاس چهار دو تا کله قند به او فروخته است. درست مثل اینکه سر کلاف را به دستم داده باشد پرسیدم: - -- چند؟ - -- دو تومنش دادم آقا. - -- زحمت کشیدی. نگفتی از کجا آورده؟ - -- من که ضامن بهشت و جهنمش نبودم آقا. - -بعد پرسیدم: - -- چرا به آقای ناظم خبر ندادی؟ - -می‌دانستم که هم او و هم فراش جدید، ناظم را هووی خودشان می‌دانند و خیلی چیزهاشان از او مخفی بود. این بود که میان من و ناظم خاصه‌خرجی می‌کردند. در جوابم همین طور مردد مانده بود که در باز شد و فراش جدید آمد تو. که: - -- اگه خبرش می‌کرد آقا بایست سهمش رو می‌داد... - -اخمم را درهم کشیدم و گفتم: - -- تو باز رفتی تو کوک مردم! اونم این جوری سر نزده که نمی‌آیند تو اتاق کسی، پیرمرد! - -و بعد اسم پسرک را ازشان پرسیدم و حالی‌شان کردم که چندان مهم نیست و فرستادمشان برایم چای بیاورند. بعد کارم را زودتر تمام کردم و رفتم به اتاق دفتر احوالی از مادر ناظم پرسیدم و به هوای ورق زدن پرونده‌ها فهمیدم که پسرک شاگرد دوساله است و پدرش تاجر بازار. بعد برگشتم به اتاقم. یادداشتی برای پدر نوشتم که پس فردا صبح، بیاید مدرسه و دادم دست فراش جدید که خودش برساند و رسیدش را بیاورد. - -و پس فردا صبح یارو آمد. باید مدیر مدرسه بود تا دانست که اولیای اطفال چه راحت تن به کوچک‌ترین خرده‌فرمایش‌های مدرسه می‌دهند. حتم دارم که اگر از اجرای ثبت هم دنبال‌شان بفرستی به این زودی‌ها آفتابی نشوند. چهل و پنج ساله مردی بود با یخه‌ی بسته بی‌کراوات و پالتویی که بیش‌تر به قبا می‌ماند. و خجالتی می‌نمود. هنوز ننشسته، پرسیدم: - -- شما دو تا زن دارید آقا؟ - -درباره‌ی پسرش برای خودم پیش‌گویی‌هایی کرده بودم و گفتم این طوری به او رودست می‌زنم. پیدا بود که از سؤالم زیاد یکه نخورده است. گفتم برایش چای آوردند و سیگاری تعارفش کردم که ناشیانه دود کرد از ترس این که مبادا جلویم در بیاید که - به شما چه مربوط است و از این اعتراض‌ها - امانش ندادم و سؤالم را این جور دنبال کردم: - -- البته می‌بخشید. چون لابد به همین علت بچه شما دو سال در یک کلاس مانده. - -شروع کرده بودم برایش یک میتینگ بدهم که پرید وسط حرفم: - -- به سر شما قسم، روزی چهار زار پول تو جیبی داره آقا. پدرسوخته‌ی نمک به حروم...! - -حالیش کردم که علت، پول تو جیبی نیست و خواستم که عصبانی نشود و قول گرفتم که اصلاً به روی پسرش هم نیاورد و آن وقت میتینگم را برایش دادم که لابد پسر در خانه مهر و محبتی نمی‌بیند و غیب‌گویی‌های دیگر... تا عاقبت یارو خجالتش ریخت و سرِ درد دلش باز شد که عفریته زن اولش همچه بوده و همچون بوده و پسرش هم به خودش برده و کی طلاقش داده و از زن دومش چند تا بچه دارد و این نره‌خر حالا باید برای خودش نان‌آور شده باشد و زنش حق دارد که با دو تا بچه‌ی خرده‌پا به او نرسد... من هم کلی برایش صحبت کردم. چایی دومش را هم سر کشید و قول‌هایش را که داد و رفت، من به این فکر افتادم که «نکند علمای تعلیم و تربیت هم، همین جورها تخم دوزرده می‌کنند!» - -یک روز صبح که رسیدم، ناظم هنوز نیامده بود. از این اتفاق‌ها کم می‌افتاد. ده دقیقه‌ای از زنگ می‌گذشت و معلم‌ها در دفتر سرگرم اختلاط بودند. خودم هم وقتی معلم بودم به این مرض دچار بودم. اما وقتی مدیر شدم تازه فهمیدم که معلم‌ها چه لذتی می‌برند. حق هم داشتند. آدم وقتی مجبور باشد شکلکی را به صورت بگذارد که نه دیگران از آن می‌خندند و نه خود آدم لذتی می‌برد، پیداست که رفع تکلیف می‌کند. زنگ را گفتم زدند و بچه‌ها سر کلاس رفتند. دو تا از کلاس‌ها بی‌معلم بود. یکی از ششمی‌ها را فرستادم سر کلاس سوم که برای‌شان دیکته بگوید و خودم رفتم سر کلاس چهار. مدیر هم که باشی، باز باید تمرین کنی که مبادا فوت و فن معلمی از یادت برود. در حال صحبت با بچه‌ها بودم که فراش خبر آورد که خانمی توی دفتر منتظرم است. خیال کردم لابد همان زنکه‌ی بیکاره‌ای است که هفته‌ای یک بار به هوای سرکشی، به وضع درس و مشق بچه‌اش سری می‌زند. زن سفیدرویی بود با چشم‌های درشت محزون و موی بور. بیست و پنج ساله هم نمی‌نمود. اما بچه‌اش کلاس سوم بود. روز اول که دیدمش لباس نارنجی به تن داشت و تن بزک کرده بود. از زیارت من خیلی خوشحال شد و از مراتب فضل و ادبم خبر داشت. - -خیلی ساده آمده بود تا با دو تا مرد حرفی زده باشد. آن طور که ناظم خبر می‌داد، یک سالی طلاق گرفته بود و روی هم رفته آمد و رفتنش به مدرسه باعث دردسر بود. وسط بیابان و مدرسه‌ای پر از معلم‌های عزب و بی‌دست و پا و یک زن زیبا... ناچار جور در نمی‌آمد. این بود که دفعات بعد دست به سرش می‌کردم، اما از رو نمی‌رفت. سراغ ناظم و اتاق دفتر را می‌گرفت و صبر می‌کرد تا زنگ را بزنند و معلم‌ها جمع بشوند و لابد حرف و سخنی و خنده‌ای و بعد از معلم کلاس سوم سراغ کار و بار و بچه‌اش را می‌گرفت و زنگ بعد را که می‌زدند، خداحافظی می‌کرد و می‌رفت. آزاری نداشت. با چشم‌هایش نفس معلم‌ها را می‌برید. و حالا باز هم همان زن بود و آمده بود و من تا از پلکان پایین بروم در ذهنم جملات زننده‌ای ردیف می‌کردم، تا پایش را از مدرسه ببرد که در را باز کردم و سلام... - -عجب! او نبود. دخترک یکی دو ساله‌ای بود با دهان گشاد و موهای زبرش را به زحمت عقب سرش گلوله کرده بود و بفهمی نفهمی دستی توی صورتش برده بود. روی هم رفته زشت نبود. اما داد می‌زد که معلم است. گفتم که مدیر مدرسه‌ام و حکمش را داد دستم که دانشسرا دیده بود و تازه استخدام شده بود. برایمان معلم فرستاده بودند. خواستم بگویم «مگر رئیس فرهنگ نمی‌داند که این جا بیش از حد مرد است» ولی دیدم لزومی ندارد و فکر کردم این هم خودش تنوعی است. - -به هر صورت زنی بود و می‌توانست محیط خشن مدرسه را که به طرز ناشیانه‌ای پسرانه بود، لطافتی بدهد و خوش‌آمد گفتم و چای آوردند که نخورد و بردمش کلاس‌های سوم و چهارم را نشانش دادم که هر کدام را مایل است، قبول کند و صحبت از هجده ساعت درس که در انتظار او بود و برگشتیم به دفتر .پرسید غیر از او هم، معلم زن داریم. گفتم: - -- متأسفانه راه مدرسه‌ی ما را برای پاشنه‌ی کفش خانم‌ها نساخته‌اند. - -که خندید و احساس کردم زورکی می‌خندد. بعد کمی این دست و آن دست کرد و عاقبت: - -- آخه من شنیده بودم شما با معلماتون خیلی خوب تا می‌کنید. - -صدای جذابی داشت. فکر کردم حیف که این صدا را پای تخته سیاه خراب خواهد کرد. و گفتم: - -- اما نه این قدر که مدرسه تعطیل بشود خانم! و لابد به عرض‌تون رسیده که همکارهای شما، خودشون نشسته‌اند و تصمیم گرفته‌اند که هجده ساعت درس بدهند. بنده هیچ‌کاره‌ام. - -- اختیار دارید. - -و نفهمیدم با این «اختیار دارید» چه می‌خواست بگوید. اما پیدا بود که بحث سر ساعات درس نیست. آناً تصمیم گرفتم، امتحانی بکنم: - -- این را هم اطلاع داشته باشید که فقط دو تا از معلم‌های ما متأهل‌اند. - -که قرمز شد و برای این که کار دیگری نکرده باشد، برخاست و حکمش را از روی میز برداشت. پا به پا می‌شد که دیدم باید به دادش برسم. ساعت را از او پرسیدم. وقت زنگ بود. فراش را صدا کردم که زنگ را بزند و بعد به او گفتم، بهتر است مشورت دیگری هم با رئیس فرهنگ بکند و ما به هر صورت خوشحال خواهیم شد که افتخار همکاری با خانمی مثل ایشان را داشته باشیم و خداحافظ شما. از در دفتر که بیرون رفت، صدای زنگ برخاست و معلم‌ها انگار موشان را آتش زده‌اند، به عجله رسیدند و هر کدام از پشت سر، آن قدر او را پاییدند تا از در بزرگ آهنی مدرسه بیرون رفت. - -فردا صبح معلوم شد که ناظم، دنبال کار مادرش بوده است که قرار بود بستری شود، تا جای سرطان گرفته را یک دوره برق بگذارند. کل کار بیمارستان را من به کمک دوستانم انجام دادم و موقع آن رسیده بود که مادرش برود بیمارستان اما وحشتش گرفته بود و حاضر نبود به بیمارستان برود. و ناظم می‌خواست رسماً دخالت کنم و با هم برویم خانه‌شان و با زبان چرب و نرمی که به قول ناظم داشتم مادرش را راضی کنم. چاره‌ای نبود. مدرسه را به معلم‌ها سپردیم و راه افتادیم. بالاخره به خانه‌ی آن‌ها رسیدیم. خانه‌ای بسیار کوچک و اجاره‌ای. مادر با چشم‌های گود نشسته و انگار زغال به صورت مالیده! سیاه نبود اما رنگش چنان تیره بود که وحشتم گرفت. اصلاً صورت نبود. زخم سیاه شده‌ای بود که انگار از جای چشم‌ها و دهان سر باز کرده است. کلی با مادرش صحبت کردم. از پسرش و کلی دروغ و دونگ، و چادرش را روی چارقدش انداختیم و علی... و خلاصه در بیمارستان بستری شدند. - -فردا که به مدرسه آمدم، ناظم سرحال بود و پیدا بود که از شر چیزی خلاص شده است و خبر داد که معلم کلاس سه را گرفته‌اند. یک ماه و خرده‌ای می‌شد که مخفی بود و ما ورقه‌ی انجام کارش را به جانشین غیر رسمی‌اش داده بودیم و حقوقش لنگ نشده بود و تا خبر رسمی بشنود و در روزنامه‌ای بیابد و قضیه به اداره‌ی فرهنگ و لیست حقوق بکشد، باز هم می‌دادیم. اما خبر که رسمی شد، جانشین واجد شرایط هم نمی‌توانست بفرستد و باید طبق مقررات رفتار می‌کردیم و بدیش همین بود. کم کم احساس کردم که مدرسه خلوت شده است و کلاس‌ها اغلب اوقات بی‌کارند. جانشین معلم کلاس چهار هنوز سر و صورتی به کارش نداده بود و حالا یک کلاس دیگر هم بی‌معلم شد. این بود که باز هم به سراغ رئیس فرهنگ رفتم. معلوم شد آن دخترک ترسیده و «نرسیده متلک پیچش کرده‌اید» رئیس فرهنگ این طور می‌گفت. و ترجیح داده بود همان زیر نظر خودش دفترداری کند. و بعد قول و قرار و فردا و پس فردا و عاقبت چهار روز دوندگی تا دو تا معلم گرفتم. یکی جوانکی رشتی که گذاشتیمش کلاس چهار و دیگری باز یکی ازین آقاپسرهای بریانتین‌زده که هر روز کراوات عوض می‌کرد، با نقش‌ها و طرح‌های عجیب. عجب فرهنگ را با قرتی‌ها در آمیخته بودند! باداباد. او را هم گذاشتیم سر کلاس سه. اواخر بهمن، یک روز ناظم آمد اتاقم که بودجه‌ی مدرسه را زنده کرده است. گفتم: - -- مبارکه، چه قدر گرفتی؟ - -- هنوز هیچ چی آقا. قراره فردا سر ظهر بیاند این جا آقا و همین جا قالش رو بکنند. - -و فردا اصلاً مدرسه نرفتم. حتماً می‌خواست من هم باشم و در بده بستان ماهی پانزده قران، حق نظافت هر اتاق نظارت کنم و از مدیریتم مایه بگذارم تا تنخواه‌گردان مدرسه و حق آب و دیگر پول‌های عقب‌افتاده وصول بشود... فردا سه نفری آمده بودند مدرسه. ناهار هم به خرج ناظم خورده بودند. و قرار دیگری برای یک سور حسابی گذاشته بودند و رفته بودند و ناظم با زبان بی‌زبانی حالیم کرد که این بار حتماً باید باشم و آن طور که می‌گفت، جای شکرش باقی بود که مراعات کرده بودند و حق بوقی نخواسته بودند. اولین باری بود که چنین اهمیتی پیدا می‌کردم. این هم یک مزیت دیگر مدیری مدرسه بود! سی صد تومان از بودجه‌ی دولت بسته به این بود که به فلان مجلس بروی یا نروی. تا سه روز دیگر موعد سور بود، اصلاً یادم نیست چه کردم. اما همه‌اش در این فکر بودم که بروم یا نروم؟ یک بار دیگر استعفانامه‌ام را توی جیبم گذاشتم و بی این که صدایش را در بیاورم، روز سور هم نرفتم. - -بعد دیدم این طور که نمی‌شود. گفتم بروم قضایا را برای رئیس فرهنگ بگویم. و رفتم. سلام و احوالپرسی نشستم. اما چه بگویم؟ بگویم چون نمی‌خواستم در خوردن سور شرکت کنم، استعفا می‌دهم؟... دیدم چیزی ندارم که بگویم. و از این گذشته خفت‌آور نبود که به خاطر سیصد تومان جا بزنم و استعفا بدهم؟ و «خداحافظ؛ فقط آمده بودم سلام عرض کنم.» و از این دروغ‌ها و استعفانامه‌ام را توی جوی آب انداختم. اما ناظم؛ یک هفته‌ای مثل سگ بود. عصبانی، پر سر و صدا و شارت و شورت! حتی نرفتم احوال مادرش را بپرسم. یک هفته‌ی تمام می‌رفتم و در اتاقم را می‌بستم و سوراخ‌های گوشم را می‌گرفتم و تا اِز و چِزّ بچه‌ها بخوابد، از این سر تا آن سر اتاق را می‌کوبیدم. ده روز تمام، قلب من و بچه‌ها با هم و به یک اندازه از ترس و وحشت تپید. تا عاقبت پول‌ها وصول شد. منتها به جای سیصد و خرده‌ای، فقط صد و پنجاه تومان. علت هم این بود که در تنظیم صورت حساب‌ها اشتباهاتی رخ داده بود که ناچار اصلاحش کرده بودند! - -غیر از آن زنی که هفته‌ای یک بار به مدرسه سری می‌زد، از اولیای اطفال دو سه نفر دیگر هم بودند که مرتب بودند. یکی همان پاسبانی که با کمربند، پاهای پسرش را بست و فلک کرد. یکی هم کارمند پست و تلگرافی بود که ده روزی یک بار می‌آمد و پدر همان بچه‌ی شیطان. و یک استاد نجار که پسرش کلاس اول بود و خودش سواد داشت و به آن می‌بالید و کارآمد می‌نمود. یک مقنی هم بود درشت استخوان و بلندقد که بچه‌اش کلاس سوم بود و هفته‌ای یک بار می‌آمد و همان توی حیاط، ده پانزده دقیقه‌ای با فراش‌ها اختلاط می‌کرد و بی سر و صدا می‌رفت. نه کاری داشت، نه چیزی از آدم می‌خواست و همان طور که آمده بود چند دقیقه‌ای را با فراش صحبت می‌کرد و بعد می رفت. فقط یک روز نمی‌دانم چرا رفته بود بالای دیوار مدرسه. البته اول فکر کردم مأمور اداره برق است ولی بعد متوجه شدم که همان مرد مقنی است. بچه‌ها جیغ و فریاد می‌کردند و من همه‌اش درین فکر بودم که چه طور به سر دیوار رفته است؟ ماحصل داد و فریادش این بود که چرا اسم پسر او را برای گرفتن کفش و لباس به انجمن ندادیم. وقتی به او رسیدم نگاهی به او انداختم و بعد تشری به ناظم و معلم ها زدم که ولش کردند و بچه‌ها رفتند سر کلاس و بعد بی این که نگاهی به او بکنم، گفتم: - -- خسته نباشی اوستا. - -و همان طور که به طرف دفتر می‌رفتم رو به ناظم و معلم‌ها افزودم: - -- لابد جواب درست و حسابی نشنیده که رفته سر دیوار. - -که پشت سرم گرپ صدایی آمد و از در دفتر که رفتم تو، او و ناظم با هم وارد شدند. گفتم نشست. و به جای این‌که حرفی بزند به گریه افتاد. هرگز گمان نمی‌کردم از چنان قد و قامتی صدای گریه در بیاید. این بود که از اتاق بیرون آمدم و فراش را صدا زدم که آب برایش بیاورد و حالش که جا آمد، بیاوردش پهلوی من. اما دیگر از او خبری نشد که نشد. نه آن روز و نه هیچ روز دیگر. آن روز چند دقیقه‌ای بعد از شیشه‌ی اتاق خودم دیدمش که دمش را لای پایش گذاشته بود از در مدرسه بیرون می‌رفت و فراش جدید آمد که بله می‌گفتند از پسرش پنج تومان خواسته بودند تا اسمش را برای کفش و لباس به انجمن بدهند. پیدا بود باز توی کوک ناظم رفته است. مرخصش کردم و ناظم را خواستم. معلوم شد می‌خواسته ناظم را بزند. همین جوری و بی‌مقدمه. - -اواخر بهمن بود که یکی از روزهای برفی با یکی دیگر از اولیای اطفال آشنا شدم. یارو مرد بسیار کوتاهی بود؛ فرنگ مآب و بزک کرده و اتو کشیده که ننشسته از تحصیلاتش و از سفرهای فرنگش حرف زد. می‌خواست پسرش را آن وقت سال از مدرسه‌ی دیگر به آن جا بیاورد. پسرش از آن بچه‌هایی بود که شیر و مربای صبحانه‌اش را با قربان صدقه توی حلقشان می‌تپانند. کلاس دوم بود و ثلث اول دو تا تجدید آورده بود. می‌گفت در باغ ییلاقی‌اش که نزدیک مدرسه است، باغبانی دارند که پسرش شاگرد ماست و درس‌خوان است و پیدا است که بچه‌ها زیر سایه شما خوب پیشرفت می‌کنند. و از این پیزرها. و حال به خاطر همین بچه، توی این برف و سرما، آمده‌اند ساکن باغ ییلاقی شده‌اند. بلند شدم ناظم را صدا کردم و دست او و بچه‌اش را توی دست ناظم گذاشتم و خداحافظ شما... و نیم ساعت بعد ناظم برگشت که یارو خانه‌ی شهرش را به یک دبیرستان اجاره داده، به ماهی سه هزار و دویست تومان، و التماس دعا داشته، یعنی معلم سرخانه می‌خواسته و حتی بدش نمی‌آمده است که خود مدیر زحمت بکشند و ازین گنده‌گوزی‌ها... احساس کردم که ناظم دهانش آب افتاده است. و من به ناظم حالی کردم خودش برود بهتر است و فقط کاری بکند که نه صدای معلم‌ها در بیاید و نه آخر سال، برای یک معدل ده احتیاجی به من بمیرم و تو بمیری پیدا کند. همان روز عصر ناظم رفته بود و قرار و مدار برای هر روز عصر یک ساعت به ماهی صد و پنجاه تومان. - -دیگر دنیا به کام ناظم بود. حال مادرش هم بهتر بود و از بیمارستان مرخصش کرده بودند و به فکر زن گرفتن افتاده بود. و هر روز هم برای یک نفر نقشه می‌کشید حتی برای من هم. یک روز در آمد که چرا ما خودمان «انجمن خانه و مدرسه» نداشته باشیم؟ نشسته بود و حسابش را کرده بود دیده بود که پنجاه شصت نفری از اولیای مدرسه دستشان به دهان‌شان می‌رسد و از آن هم که به پسرش درس خصوصی می‌داد قول مساعد گرفته بود. حالیش کردم که مواظب حرف و سخن اداره‌ای باشد و هر کار دلش می‌خواهد بکند. کاغذ دعوت را هم برایش نوشتم با آب و تاب و خودش برای اداره‌ی فرهنگ، داد ماشین کردند و به وسیله‌ی خود بچه‌ها فرستاد. و جلسه با حضور بیست و چند نفری از اولیای بچه‌ها رسمی شد. خوبیش این بود که پاسبان کشیک پاسگاه هم آمده بود و دم در برای همه، پاشنه‌هایش را به هم می‌کوبید و معلم‌ها گوش تا گوش نشسته بودند و مجلس ابهتی داشت و ناظم، چای و شیرینی تهیه کرده بود و چراغ زنبوری کرایه کرده بود و باران هم گذاشت پشتش و سالون برای اولین بار در عمرش به نوایی رسید. - -یک سرهنگ بود که رئیسش کردیم و آن زن را که هفته‌ای یک بار می‌آمد نایب رئیس. آن که ناظم به پسرش درس خصوصی می‌داد نیامده بود. اما پاکت سربسته‌ای به اسم مدیر فرستاده بود که فی‌المجلس بازش کردیم. عذرخواهی از این‌که نتوانسته بود بیاید و وجه ناقابلی جوف پاکت. صد و پنجاه تومان. و پول را روی میز صندوق‌دار گذاشتیم که ضبط و ربط کند. نائب رئیس بزک کرده و معطر شیرینی تعارف می‌کرد و معلم‌ها با هر بار که شیرینی بر می‌داشتند، یک بار تا بناگوش سرخ می‌شدند و فراش‌ها دست به دست چای می‌آوردند. - -در فکر بودم که یک مرتبه احساس کردم، سیصد چهارصد تومان پول نقد، روی میز است و هشت صد تومان هم تعهد کرده بودند. پیرزن صندوقدار که کیف پولش را همراهش نیاورده بود ناچار حضار تصویب کردند که پول‌ها فعلاً پیش ناظم باشد. و صورت مجلس مرتب شد و امضاها ردیف پای آن و فردا فهمیدم که ناظم همان شب روی خشت نشسته بوده و به معلم‌ها سور داده بوده است. اولین کاری که کردم رونوشت مجلس آن شب را برای اداره‌ی فرهنگ فرستادم. و بعد همان استاد نجار را صدا کردم و دستور دادم برای مستراح‌ها دو روزه در بسازد که ناظم خیلی به سختی پولش را داد. و بعد در کوچه‌ی مدرسه درخت کاشتیم. تور والیبال را تعویض و تعدادی توپ در اختیار بچه‌ها گذاشتیم برای تمرین در بعد از ظهرها و آمادگی برای مسابقه با دیگر مدارس و در همین حین سر و کله‌ی بازرس تربیت بدنی هم پیدا شد و هر روز سرکشی و بیا و برو. تا یک روز که به مدرسه رسیدم شنیدم که از سالون سر و صدا می‌آید. صدای هالتر بود. ناظم سر خود رفته بود و سرخود دویست سیصد تومان داده بود و هالتر خریده بود و بچه‌های لاغر زیر بار آن گردن خود را خرد می‌کردند. من در این میان حرفی نزدم. می‌توانستم حرفی بزنم؟ من چیکاره بودم؟ اصلاً به من چه ربطی داشت؟ هر کار که دلشان می‌خواهد بکنند. مهم این بود که سالون مدرسه رونقی گرفته بود. ناظم هم راضی بود و معلم‌ها هم. چون نه خبر از حسادتی بود و نه حرف و سخنی پیش آمد. فقط می‌بایست به ناظم سفارش می کردم که فکر فراش‌ها هم باشد. - -کم کم خودمان را برای امتحان‌های ثلث دوم آماده می‌کردیم. این بود که اوایل اسفند، یک روز معلم‌ها را صدا زدم و در شورا مانندی که کردیم بی‌مقدمه برایشان داستان یکی از همکاران سابقم را گفتم که هر وقت بیست می‌داد تا دو روز تب داشت. البته معلم‌ها خندیدند. ناچار تشویق شدم و داستان آخوندی را گفتم که در بچگی معلم شرعیاتمان بود و زیر عبایش نمره می‌داد و دستش چنان می‌لرزید که عبا تکان می‌خورد و درست ده دقیقه طول می‌کشید. و تازه چند؟ بهترین شاگردها دوازده. و البته باز هم خندیدند. که این بار کلافه‌ام کرد. و بعد حالیشان کردم که بد نیست در طرح سؤال‌ها مشورت کنیم و از این حرف‌ها... - -و از شنبه‌ی بعد، امتحانات شروع شد. درست از نیمه‌ی دوم اسفند. سؤال‌ها را سه نفری می‌دیدیم. خودم با معلم هر کلاس و ناظم. در سالون میزها را چیده بودیم البته از وقتی هالتردار شده بود خیلی زیباتر شده بود. در سالون کاردستی‌های بچه‌ها در همه جا به چشم می‌خورد. هر کسی هر چیزی را به عنوان کاردستی درست کرده بودند و آورده بودند. که برای این کاردستی‌ها چه پول‌ها که خرج نشده بود و چه دست‌ها که نبریده بود و چه دعواها که نشده بود و چه عرق‌ها که ریخته نشده بود. پیش از هر امتحان که می‌شد، خودم یک میتینگ برای بچه‌ها می‌دادم که ترس از معلم و امتحان بی‌جا است و باید اعتماد به نفس داشت و ازین مزخرفات....ولی مگر حرف به گوش کسی می‌رفت؟ از در که وارد می‌شدند، چنان هجومی می‌بردند که نگو! به جاهای دور از نظر. یک بار چنان بود که احساس کردم مثل این‌که از ترس، لذت می‌برند. اگر معلم نبودی یا مدیر، به راحتی می‌توانستی حدس بزنی که کی‌ها با هم قرار و مداری دارند و کدام یک پهلو دست کدام یک خواهد نشست. یکی دو بار کوشیدم بالای دست یکی‌شان بایستم و ببینم چه می‌نویسد. ولی چنان مضطرب می‌شدند و دستشان به لرزه می‌افتاد که از نوشتن باز می‌ماندند. می‌دیدم که این مردان آینده، درین کلاس‌ها و امتحان‌ها آن قدر خواهند ترسید که وقتی دیپلمه بشوند یا لیسانسه، اصلاً آدم نوع جدیدی خواهند شد. آدمی انباشته از وحشت، انبانی از ترس و دلهره. به این ترتیب یک روز بیشتر دوام نیاوردم. چون دیدم نمی‌توانم قلب بچگانه‌ای داشته باشم تا با آن ترس و وحشت بچه‌ها را درک کنم و هم‌دردی نشان بدهم.این جور بود که می‌دیدم که معلم مدرسه هم نمی‌توانم باشم. - -دو روز قبل از عید کارنامه‌ها آماده بود و منتظر امضای مدیر. دویست و سی و شش تا امضا اقلاً تا ظهر طول می‌کشید. پیش از آن هم تا می‌توانستم از امضای دفترهای حضور و غیاب می‌گریختم. خیلی از جیره‌خورهای دولت در ادارات دیگر یا در میان همکارانم دیده بودم که در مواقع بیکاری تمرین امضا می‌کنند. پیش از آن نمی‌توانستم بفهمم چه طور از مدیری یک مدرسه یا کارمندی ساده یک اداره می‌شود به وزارت رسید. یا اصلاً آرزویش را داشت. نیم‌قراضه امضای آماده و هر کدام معرف یک شخصیت، بعد نیم‌ذرع زبان چرب و نرم که با آن، مار را از سوراخ بیرون بکشی، یا همه جا را بلیسی و یک دست هم قیافه. نه یک جور. دوازده جور. - -در این فکرها بودم که ناگهان در میان کارنامه‌ها چشمم به یک اسم آشنا افتاد. به اسم پسران جناب سرهنگ که رئیس انجمن بود. رفتم توی نخ نمراتش. همه متوسط بود و جای ایرادی نبود. و یک مرتبه به صرافت افتادم که از اول سال تا به حال بچه‌های مدرسه را فقط به اعتبار وضع مالی پدرشان قضاوت کرده‌ام. درست مثل این پسر سرهنگ که به اعتبار کیابیای پدرش درس نمی‌خواند. دیدم هر کدام که پدرشان فقیرتر است به نظر من باهوش‌تر می‌آمده‌اند. البته ناظم با این حرف‌ها کاری نداشت. مر قانونی را عمل می‌کرد. از یکی چشم می‌پوشید به دیگری سخت می‌گرفت. - -اما من مثل این که قضاوتم را درباره‌ی بچه‌ها از پیش کرده باشم و چه خوب بود که نمره‌ها در اختیار من نبود و آن یکی هم «انظباط» مال آخر سال بود. مسخره‌ترین کارها آن است که کسی به اصلاح وضعی دست بزند، اما در قلمروی که تا سر دماغش بیشتر نیست. و تازه مدرسه‌ی من، این قلمروی فعالیت من، تا سر دماغم هم نبود. به همان توی ذهنم ختم می‌شد. وضعی را که دیگران ترتیب داده بودند. به این ترتیب بعد از پنج شش ماه، می‌فهمیدم که حسابم یک حساب عقلایی نبوده است. احساساتی بوده است. ضعف‌های احساساتی مرا خشونت‌های عملی ناظم جبران می‌کرد و این بود که جمعاً نمی‌توانستم ازو بگذرم. مرد عمل بود. کار را می‌برید و پیش می‌رفت. در زندگی و در هر کاری، هر قدمی بر می‌داشت، برایش هدف بود. و چشم از وجوه دیگر قضیه می‌پوشید. این بود که برش داشت. و من نمی‌توانستم. چرا که اصلاً مدیر نبودم. خلاص... - -و کارنامه‌ی پسر سرهنگ را که زیر دستم عرق کرده بود، به دقت و احتیاج خشک کردم و امضایی زیر آن گذاشتم به قدری بد خط و مسخره بود که به یاد امضای فراش جدیدمان افتادم. حتماً جناب سرهنگ کلافه می‌شد که چرا چنین آدم بی‌سوادی را با این خط و ربط امضا مدیر مدرسه کرده‌اند. آخر یک جناب سرهنگ هم می‌داند که امضای آدم معرف شخصیت آدم است. - -اواخر تعطیلات نوروز رفتم به ملاقات معلم ترکه‌ای کلاس سوم. ناظم که با او میانه‌ی خوشی نداشت. ناچار با معلم حساب کلاس پنج و شش قرار و مداری گذاشته بودم که مختصری علاقه‌ای هم به آن حرف و سخن‌ها داشت. هم به وسیله‌ی او بود که می‌دانستم نشانی‌اش کجا است و توی کدام زندان است. در راه قبل از هر چیز خبر داد که رئیس فرهنگ عوض شده و این طور که شایع است یکی از هم دوره‌ای‌های من، جایش آمده. گفتم: - -- عجب! چرا؟ مگه رئیس قبلی چپش کم بود؟ - -- چه عرض کنم. می‌گند پا تو کفش یکی از نماینده‌ها کرده. شما خبر ندارید؟ - -- چه طور؟ از کجا خبر داشته باشم؟ - -- هیچ چی... می گند دو تا از کارچاق‌کن‌های انتخاباتی یارو از صندوق فرهنگ حقوق می‌گرفته‌اند؛ شب عیدی رئیس فرهنگ حقوق‌شون رو زده. - -- عجب! پس اونم می‌خواسته اصلاحات کنه! بیچاره. - -و بعد از این حرف زدیم که الحمدالله مدرسه مرتب است و آرام و معلم‌ها همکاری می‌کنند و ناظم بیش از اندازه همه‌کاره شده است. و من فهمیدم که باز لابد مشتری خصوصی تازه‌ای پیدا شده است که سر و صدای همه همکارها بلند شده. دم در زندان شلوغ بود. کلاه مخملی‌ها، عم‌قزی گل‌بته‌ها، خاله خانباجی‌ها و... اسم نوشتیم و نوبت گرفتیم و به جای پاها، دست‌هامان زیر بار کوچکی که داشتیم، خسته شد و خواب رفت تا نوبتمان شد. از این اتاق به آن اتاق و عاقبت نرده‌های آهنی و پشت آن معلم کلاس سه و... عجب چاق شده بود!درست مثل یک آدم حسابی شده بود. خوشحال شدیم و احوالپرسی و تشکر؛ و دیگر چه بگویم؟ بگویم چرا خودت را به دردسر انداختی؟ پیدا بود از مدرسه و کلاس به او خوش‌تر می‌گذرد. ایمانی بود و او آن را داشت و خوشبخت بود و دردسری نمی‌دید و زندان حداقل برایش کلاس درس بود. عاقبت پرسیدم: - -- پرونده‌ای هم برات درست کردند یا هنوز بلاتکلیفی؟ - -- امتحانمو دادم آقا مدیر، بد از آب در نیومد. - -- یعنی چه؟ - -- یعنی بی‌تکلیف نیستم. چون اسمم تو لیست جیره‌ی زندون رفته. خیالم راحته. چون سختی‌هاش گذشته. - -دیگر چه بگویم. دیدم چیزی ندارم خداحافظی کردم و او را با معلم حساب تنها گذاشتم و آمدم بیرون و تا مدت ملاقات تمام بشود، دم در زندان قدم زدم و به زندانی فکر کردم که برای خودم ساخته بودم. یعنی آن خرپول فرهنگ‌دوست ساخته بود. و من به میل و رغبت خودم را در آن زندانی کرده بودم. این یکی را به ضرب دگنک این جا آورده بودند. ناچار حق داشت که خیالش راحت باشد. اما من به میل و رغبت رفته بودم و چه بکنم؟ ناظم چه طور؟ راستی اگر رئیس فرهنگ از هم دوره‌ای‌های خودم باشد؛ چه طور است بروم و ازو بخواهم که ناظم را جای من بگذارد، یا همین معلم حساب را؟... که معلم حساب در آمد و راه افتادیم. با او هم دیگر حرفی نداشتم. سر پیچ خداحافظ شما و تاکسی گرفتم و یک سر به اداره‌ی فرهنگ زدم. گرچه دهم عید بود، اما هنوز رفت و آمد سال نو تمام نشده بود. برو و بیا و شیرینی و چای دو جانبه. رفتم تو. سلام و تبریک و همین تعارفات را پراندم. - -بله خودش بود. یکی از پخمه‌های کلاس. که آخر سال سوم کشتیارش شدم دو بیت شعر را حفظ کند، نتوانست که نتوانست. و حالا او رئیس بود و من آقا مدیر. راستی حیف از من، که حتی وزیر چنین رئیس فرهنگ‌هایی باشم! میز همان طور پاک بود و رفته. اما زیرسیگاری انباشته از خاکستر و ته سیگار. بلند شد و چلپ و چولوپ روبوسی کردیم و پهلوی خودش جا باز کرد و گوش تا گوش جیره‌خورهای فرهنگ تبریکات صمیمانه و بدگویی از ماسبق و هندوانه و پیزرها! و دو نفر که قد و قواره‌شان به درد گود زورخانه می‌خورد یا پای صندوق انتخابات شیرینی به مردم می‌دادند. نزدیک بود شیرینی را توی ظرفش بیندازم که دیدم بسیار احمقانه است. سیگارم که تمام شد قضیه‌ی رئیس فرهنگ قبلی و آن دو نفر را در گوشی ازش پرسیدم، حرفی نزد. فقط نگاهی می‌کرد که شبیه التماس بود و من فرصت جستم تا وضع معلم کلاس سوم را برایش روشن کنم و از او بخواهم تا آن جا که می‌تواند جلوی حقوقش را نگیرد. و از در که آمدم بیرون، تازه یادم آمد که برای کار دیگری پیش رئیس فرهنگ بودم. - -باز دیروز افتضاحی به پا شد. معقول یک ماهه‌ی فروردین راحت بودیم. اول اردیبهشت ماه جلالی و کوس رسوایی سر دیوار مدرسه. نزدیک آخر وقت یک جفت پدر و مادر، بچه‌شان در میان، وارد اتاق شدند. یکی بر افروخته و دیگری رنگ و رو باخته و بچه‌شان عیناً مثل این عروسک‌های کوکی. سلام و علیک و نشستند. خدایا دیگر چه اتفاقی افتاده است؟ - -- چه خبر شده که با خانوم سرافرازمون کردید؟ - -مرد اشاره‌ای به زنش کرد که بلند شد و دست بچه را گرفت و رفت بیرون و من ماندم و پدر. اما حرف نمی‌زد. به خودش فرصت می‌داد تا عصبانیتش بپزد. سیگارم را در آوردم و تعارفش کردم. مثل این که مگس مزاحمی را از روی دماغش بپراند، سیگار را رد کرد و من که سیگارم را آتش می‌زدم، فکر کردم لابد دردی دارد که چنین دست و پا بسته و چنین متکی به خانواده به مدرسه آمده. باز پرسیدم: - -- خوب، حالا چه فرمایش داشتید؟ - -که یک مرتبه ترکید: - -- اگه من مدیر مدرسه بودم و هم‌چه اتفاقی می‌افتاد، شیکم خودمو پاره می‌کردم. خجالت بکش مرد! برو استعفا بده. تا اهل محل نریختن تیکه تیکه‌ات کنند، دو تا گوشتو وردار و دررو. بچه‌های مردم می‌آن این جا درس بخونن و حسن اخلاق. نمی‌آن که... - -- این مزخرفات کدومه آقا! حرف حساب سرکار چیه؟ - -و حرکتی کردم که او را از در بیندازم بیرون. اما آخر باید می‌فهمیدم چه مرگش است. «ولی آخر با من چه کار دارد؟» - -- آبروی من رفته. آبروی صد ساله‌ی خونواده‌ام رفته. اگه در مدرسه‌ی تو رو تخته نکنم، تخم بابام نیستم. آخه من دیگه با این بچه چی کار کنم؟ تو این مدرسه ناموس مردم در خطره. کلانتری فهمیده؛ پزشک قانونی فهمیده؛ یک پرونده درست شده پنجاه ورق؛ تازه می‌گی حرف حسابم چیه؟ حرف حسابم اینه که صندلی و این مقام از سر تو زیاده. حرف حسابم اینه که می‌دم محاکمه‌ات کنند و از نون خوردن بندازنت... - -او می‌گفت و من گوش می‌کردم و مثل دو تا سگ هار به جان هم افتاده بودیم که در باز شد و ناظم آمد تو. به دادم رسید. در همان حال که من و پدر بچه در حال دعوا بودیم زن و بچه همان آقا رفته بودند و قضایا را برای ناظم تعریف کرده بودند و او فرستاده بوده فاعل را از کلاس کشیده بودند بیرون... و گفت چه طور است زنگ بزنیم و جلوی بچه‌ها ادبش کنیم و کردیم. یعنی این بار خود من رفتم میدان. پسرک نره‌خری بود از پنجمی‌ها با لباس مرتب و صورت سرخ و سفید و سالکی به گونه. جلوی روی بچه‌ها کشیدمش زیر مشت و لگد و بعد سه تا از ترکه‌ها را که فراش جدید فوری از باغ همسایه آورده بود، به سر و صورتش خرد کردم. چنان وحشی شده بودم که اگر ترکه‌ها نمی‌رسید، پسرک را کشته بودم. این هم بود که ناظم به دادش رسید و وساطت کرد و لاشه‌اش را توی دفتر بردند و بچه‌ها را مرخص کردند و من به اتاقم برگشتم و با حالی زار روی صندلی افتادم، نه از پدر خبری بود و نه از مادر و نه از عروسک‌های کوکی‌شان که ناموسش دست کاری شده بود. و تازه احساس کردم که این کتک‌کاری را باید به او می‌زدم. خیس عرق بودم و دهانم تلخ بود. تمام فحش‌هایی که می‌بایست به آن مردکه‌ی دبنگ می‌دادم و نداده بودم، در دهانم رسوب کرده بود و مثل دم مار تلخ شده بود. اصلاً چرا زدمش؟ چرا نگذاشتم مثل همیشه ناظم میدان‌داری کند که هم کارکشته‌تر بود و هم خونسردتر. لابد پسرک با دخترعمه‌اش هم نمی‌تواند بازی کند. لابد توی خانواده‌شان، دخترها سر ده دوازده سالگی باید از پسرهای هم سن رو بگیرند. نکند عیبی کرده باشد؟ و یک مرتبه به صرافت افتادم که بروم ببینم چه بلایی به سرش آورده‌ام. بلند شدم و یکی از فراش‌ها را صدا کردم که فهمیدم روانه‌اش کرده‌اند. آبی آورد که روی دستم می‌ریخت و صورتم را می‌شستم و می‌کوشیدم که لرزش دست‌هایم را نبیند. و در گوشم آهسته گفت که پسر مدیر شرکت اتوبوسرانی است و بدجوری کتک خورده و آن‌ها خیلی سعی کرده‌اند که تر و تمیزش کنند... - -احمق مثلا داشت توی دل مرا خالی می‌کرد. نمی‌دانست که من اول تصمیم را گرفتم، بعد مثل سگ هار شدم. و تازه می‌فهمیدم کسی را زده‌ام که لیاقتش را داشته. حتماً از این اتفاق‌ها جای دیگر هم می‌افتد. آدم بردارد پایین تنه بچه‌ی خودش را، یا به قول خودش ناموسش را بگذارد سر گذر که کلانتر محل و پزشک معاینه کنند! تا پرونده درست کنند؟ با این پدرو مادرها بچه‌ها حق دارند که قرتی و دزد و دروغگو از آب در بیایند. این مدرسه‌ها را اول برای پدر و مادرها باز کنند... - -با این افکار به خانه رسیدم. زنم در را که باز کرد؛ چشم‌هایش گرد شد. همیشه وقتی می‌ترسد این طور می‌شود. برای اینکه خیال نکند آدم کشته‌ام، زود قضایا را برایش گفتم. و دیدم که در ماند. یعنی ساکت ماند. آب سرد، عرق بیدمشک، سیگار پشت سیگار فایده نداشت، لقمه از گلویم پایین نمی‌رفت و دست‌ها هنوز می‌لرزید. هر کدام به اندازه‌ی یک ماه فعالیت کرده بودند. با سیگار چهارم شروع کردم: - -- می‌دانی زن؟ بابای یارو پول‌داره. مسلماً کار به دادگستری و این جور خنس‌ها می‌کشه. مدیریت که الفاتحه. اما خیلی دلم می‌خواد قضیه به دادگاه برسه. یک سال آزگار رو دل کشیده‌ام و دیگه خسته شده‌ام. دلم می‌خواد یکی بپرسه چرا بچه‌ی مردم رو این طوری زدی، چرا تنبیه بدنی کردی! آخه یک مدیر مدرسه هم حرف‌هایی داره که باید یک جایی بزنه... - -که بلند شد و رفت سراغ تلفن. دو سه تا از دوستانم را که در دادگستری کاره‌ای بودند، گرفت و خودم قضیه را برایشان گفتم که مواظب باشند. فردا پسرک فاعل به مدرسه نیامده بود. و ناظم برایم گفت که قضیه ازین قرار بوده است که دوتایی به هوای دیدن مجموعه تمبرهای فاعل با هم به خانه‌ای می‌روند و قضایا همان جا اتفاق می‌افتد و داد و هوار و دخالت پدر و مادرهای طرفین و خط و نشان و شبانه کلانتری؛ و تمام اهل محل خبر دارند. او هم نظرش این بود که کار به دادگستری خواهد کشید. - -و من یک هفته‌ی تمام به انتظار اخطاریه‌ی دادگستری صبح و عصر به مدرسه رفتم و مثل بخت‌النصر پشت پنجره ایستادم. اما در تمام این مدت نه از فاعل خبری شد، نه از مفعول و نه از پدر و مادر ناموس‌پرست و نه از مدیر شرکت اتوبوسرانی. انگار نه انگار که اتفاقی افتاده. بچه‌ها می‌آمدند و می‌رفتند؛ برای آب خوردن عجله می‌کردند؛ به جای بازی کتک‌کاری می‌کردند و همه چیز مثل قبل بود. فقط من ماندم و یک دنیا حرف و انتظار. تا عاقبت رسید.... احضاریه‌ای با تعیین وقت قبلی برای دو روز بعد، در فلان شعبه و پیش فلان بازپرس دادگستری. آخر کسی پیدا شده بود که به حرفم گوش کند. - -تا دو روز بعد که موعد احضار بود، اصلاً از خانه در نیامدم. نشستم و ماحصل حرف‌هایم را روی کاغذ آوردم. حرف‌هایی که با همه‌ی چرندی هر وزیر فرهنگی می‌توانست با آن یک برنامه‌ی هفت ساله برای کارش بریزد. و سر ساعت معین رفتم دادگستری. اتاق معین و بازپرس معین. در را باز کردم و سلام، و تا آمدم خودم را معرفی کنم و احضاریه را در بیاورم، یارو پیش‌دستی کرد و صندلی آورد و چای سفارش داد و «احتیاجی به این حرف‌ها نیست و قضیه‌ی کوچک بود و حل شد و راضی به زحمت شما نبودیم...» - -که عرق سرد بر بدن من نشست. چایی‌ام را که خوردم، روی همان کاغذ نشان‌دار دادگستری استعفانامه‌ام را نوشتم و به نام هم‌کلاسی پخمه‌ام که تازه رئیس شده بود، دم در پست کردم. -EOT; -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fi_FI/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fi_FI/Address.php deleted file mode 100644 index d72951b..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fi_FI/Address.php +++ /dev/null @@ -1,85 +0,0 @@ -format('dmy'); - - switch ((int) ($birthdate->format('Y') / 100)) { - case 18: - $centurySign = '+'; - - break; - - case 19: - $centurySign = '-'; - - break; - - case 20: - $centurySign = 'A'; - - break; - - default: - throw new \InvalidArgumentException('Year must be between 1800 and 2099 inclusive.'); - } - - $randomDigits = self::numberBetween(0, 89); - - if ($gender && $gender == static::GENDER_MALE) { - if ($randomDigits === 0) { - $randomDigits .= static::randomElement([3, 5, 7, 9]); - } else { - $randomDigits .= static::randomElement([1, 3, 5, 7, 9]); - } - } elseif ($gender && $gender == static::GENDER_FEMALE) { - if ($randomDigits === 0) { - $randomDigits .= static::randomElement([2, 4, 6, 8]); - } else { - $randomDigits .= static::randomElement([0, 2, 4, 6, 8]); - } - } else { - if ($randomDigits === 0) { - $randomDigits .= self::numberBetween(2, 9); - } else { - $randomDigits .= (string) static::numerify('#'); - } - } - $randomDigits = str_pad($randomDigits, 3, '0', STR_PAD_LEFT); - - $checksum = $checksumCharacters[(int) ($datePart . $randomDigits) % strlen($checksumCharacters)]; - - return $datePart . $centurySign . $randomDigits . $checksum; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fi_FI/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fi_FI/PhoneNumber.php deleted file mode 100644 index db06ce2..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fi_FI/PhoneNumber.php +++ /dev/null @@ -1,101 +0,0 @@ - 'Argovie'], - ['AI' => 'Appenzell Rhodes-Intérieures'], - ['AR' => 'Appenzell Rhodes-Extérieures'], - ['BE' => 'Berne'], - ['BL' => 'Bâle-Campagne'], - ['BS' => 'Bâle-Ville'], - ['FR' => 'Fribourg'], - ['GE' => 'Genève'], - ['GL' => 'Glaris'], - ['GR' => 'Grisons'], - ['JU' => 'Jura'], - ['LU' => 'Lucerne'], - ['NE' => 'Neuchâtel'], - ['NW' => 'Nidwald'], - ['OW' => 'Obwald'], - ['SG' => 'Saint-Gall'], - ['SH' => 'Schaffhouse'], - ['SO' => 'Soleure'], - ['SZ' => 'Schwytz'], - ['TG' => 'Thurgovie'], - ['TI' => 'Tessin'], - ['UR' => 'Uri'], - ['VD' => 'Vaud'], - ['VS' => 'Valais'], - ['ZG' => 'Zoug'], - ['ZH' => 'Zurich'], - ]; - - protected static $cityFormats = [ - '{{cityName}}', - ]; - - protected static $streetNameFormats = [ - '{{streetPrefix}} {{lastName}}', - '{{streetPrefix}} de {{cityName}}', - '{{streetPrefix}} de {{lastName}}', - ]; - - protected static $streetAddressFormats = [ - '{{streetName}} {{buildingNumber}}', - ]; - protected static $addressFormats = [ - "{{streetAddress}}\n{{postcode}} {{city}}", - ]; - - /** - * Returns a random street prefix - * - * @example Rue - * - * @return string - */ - public static function streetPrefix() - { - return static::randomElement(static::$streetPrefix); - } - - /** - * Returns a random city name. - * - * @example Luzern - * - * @return string - */ - public function cityName() - { - return static::randomElement(static::$cityNames); - } - - /** - * Returns a canton - * - * @example array('BE' => 'Bern') - * - * @return array - */ - public static function canton() - { - return static::randomElement(static::$canton); - } - - /** - * Returns the abbreviation of a canton. - * - * @return string - */ - public static function cantonShort() - { - $canton = static::canton(); - - return key($canton); - } - - /** - * Returns the name of canton. - * - * @return string - */ - public static function cantonName() - { - $canton = static::canton(); - - return current($canton); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_CH/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_CH/Color.php deleted file mode 100644 index 6deb9f8..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_CH/Color.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Ain'], ['02' => 'Aisne'], ['03' => 'Allier'], ['04' => 'Alpes-de-Haute-Provence'], ['05' => 'Hautes-Alpes'], - ['06' => 'Alpes-Maritimes'], ['07' => 'Ardèche'], ['08' => 'Ardennes'], ['09' => 'Ariège'], ['10' => 'Aube'], - ['11' => 'Aude'], ['12' => 'Aveyron'], ['13' => 'Bouches-du-Rhône'], ['14' => 'Calvados'], ['15' => 'Cantal'], - ['16' => 'Charente'], ['17' => 'Charente-Maritime'], ['18' => 'Cher'], ['19' => 'Corrèze'], ['2A' => 'Corse-du-Sud'], - ['2B' => 'Haute-Corse'], ['21' => "Côte-d'Or"], ['22' => "Côtes-d'Armor"], ['23' => 'Creuse'], ['24' => 'Dordogne'], - ['25' => 'Doubs'], ['26' => 'Drôme'], ['27' => 'Eure'], ['28' => 'Eure-et-Loir'], ['29' => 'Finistère'], ['30' => 'Gard'], - ['31' => 'Haute-Garonne'], ['32' => 'Gers'], ['33' => 'Gironde'], ['34' => 'Hérault'], ['35' => 'Ille-et-Vilaine'], - ['36' => 'Indre'], ['37' => 'Indre-et-Loire'], ['38' => 'Isère'], ['39' => 'Jura'], ['40' => 'Landes'], ['41' => 'Loir-et-Cher'], - ['42' => 'Loire'], ['43' => 'Haute-Loire'], ['44' => 'Loire-Atlantique'], ['45' => 'Loiret'], ['46' => 'Lot'], - ['47' => 'Lot-et-Garonne'], ['48' => 'Lozère'], ['49' => 'Maine-et-Loire'], ['50' => 'Manche'], ['51' => 'Marne'], - ['52' => 'Haute-Marne'], ['53' => 'Mayenne'], ['54' => 'Meurthe-et-Moselle'], ['55' => 'Meuse'], ['56' => 'Morbihan'], - ['57' => 'Moselle'], ['58' => 'Nièvre'], ['59' => 'Nord'], ['60' => 'Oise'], ['61' => 'Orne'], ['62' => 'Pas-de-Calais'], - ['63' => 'Puy-de-Dôme'], ['64' => 'Pyrénées-Atlantiques'], ['65' => 'Hautes-Pyrénées'], ['66' => 'Pyrénées-Orientales'], - ['67' => 'Bas-Rhin'], ['68' => 'Haut-Rhin'], ['69' => 'Rhône'], ['70' => 'Haute-Saône'], ['71' => 'Saône-et-Loire'], - ['72' => 'Sarthe'], ['73' => 'Savoie'], ['74' => 'Haute-Savoie'], ['75' => 'Paris'], ['76' => 'Seine-Maritime'], - ['77' => 'Seine-et-Marne'], ['78' => 'Yvelines'], ['79' => 'Deux-Sèvres'], ['80' => 'Somme'], ['81' => 'Tarn'], - ['82' => 'Tarn-et-Garonne'], ['83' => 'Var'], ['84' => 'Vaucluse'], ['85' => 'Vendée'], ['86' => 'Vienne'], - ['87' => 'Haute-Vienne'], ['88' => 'Vosges'], ['89' => 'Yonne'], ['90' => 'Territoire de Belfort'], ['91' => 'Essonne'], - ['92' => 'Hauts-de-Seine'], ['93' => 'Seine-Saint-Denis'], ['94' => 'Val-de-Marne'], ['95' => "Val-d'Oise"], - ['971' => 'Guadeloupe'], ['972' => 'Martinique'], ['973' => 'Guyane'], ['974' => 'La Réunion'], ['976' => 'Mayotte'], - ]; - - protected static $secondaryAddressFormats = ['Apt. ###', 'Suite ###', 'Étage ###', 'Bât. ###', 'Chambre ###']; - - /** - * @example 'Appt. 350' - */ - public static function secondaryAddress() - { - return static::numerify(static::randomElement(static::$secondaryAddressFormats)); - } - - /** - * @example 'rue' - */ - public static function streetPrefix() - { - return static::randomElement(static::$streetPrefix); - } - - /** - * Randomly returns a french region. - * - * @example 'Guadeloupe' - * - * @return string - */ - public static function region() - { - return static::randomElement(static::$regions); - } - - /** - * Randomly returns a french department ('departmentNumber' => 'departmentName'). - * - * @example array('2B' => 'Haute-Corse') - * - * @return array - */ - public static function department() - { - return static::randomElement(static::$departments); - } - - /** - * Randomly returns a french department name. - * - * @example 'Ardèche' - * - * @return string - */ - public static function departmentName() - { - $randomDepartmentName = array_values(static::department()); - - return $randomDepartmentName[0]; - } - - /** - * Randomly returns a french department number. - * - * @example '59' - * - * @return string - */ - public static function departmentNumber() - { - $randomDepartmentNumber = array_keys(static::department()); - - return $randomDepartmentNumber[0]; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/Color.php deleted file mode 100644 index a0048ac..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/Color.php +++ /dev/null @@ -1,40 +0,0 @@ -generator->parse($format)); - - if ($this->isCatchPhraseValid($catchPhrase)) { - break; - } - } while (true); - - return $catchPhrase; - } - - /** - * Generates a siret number (14 digits) that passes the Luhn check. - * - * @see http://fr.wikipedia.org/wiki/Syst%C3%A8me_d'identification_du_r%C3%A9pertoire_des_%C3%A9tablissements - * - * @return string - */ - public function siret($formatted = true) - { - $siret = self::siren(false); - $nicFormat = static::randomElement(static::$siretNicFormats); - $siret .= $this->numerify($nicFormat); - $siret .= Luhn::computeCheckDigit($siret); - - if ($formatted) { - $siret = substr($siret, 0, 3) . ' ' . substr($siret, 3, 3) . ' ' . substr($siret, 6, 3) . ' ' . substr($siret, 9, 5); - } - - return $siret; - } - - /** - * Generates a siren number (9 digits) that passes the Luhn check. - * - * @see http://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27identification_du_r%C3%A9pertoire_des_entreprises - * - * @return string - */ - public static function siren($formatted = true) - { - $siren = self::numerify('%#######'); - $siren .= Luhn::computeCheckDigit($siren); - - if ($formatted) { - $siren = substr($siren, 0, 3) . ' ' . substr($siren, 3, 3) . ' ' . substr($siren, 6, 3); - } - - return $siren; - } - - /** - * @var array An array containing string which should not appear twice in a catch phrase. - */ - protected static $wordsWhichShouldNotAppearTwice = ['sécurité', 'simpl']; - - /** - * Validates a french catch phrase. - * - * @param string $catchPhrase The catch phrase to validate. - * - * @return bool (true if valid, false otherwise) - */ - protected static function isCatchPhraseValid($catchPhrase) - { - foreach (static::$wordsWhichShouldNotAppearTwice as $word) { - // Fastest way to check if a piece of word does not appear twice. - $beginPos = strpos($catchPhrase, $word); - $endPos = strrpos($catchPhrase, $word); - - if ($beginPos !== false && $beginPos != $endPos) { - return false; - } - } - - return true; - } - - /** - * @see http://www.pole-emploi.fr/candidat/le-code-rome-et-les-fiches-metiers-@/article.jspz?id=60702 - * - * @note Randomly took 300 from this list - */ - protected static $jobTitleFormat = [ - 'Agent d\'accueil', - 'Agent d\'enquêtes', - 'Agent d\'entreposage', - 'Agent de curage', - 'Agro-économiste', - 'Aide couvreur', - 'Aide à domicile', - 'Aide-déménageur', - 'Ambassadeur', - 'Analyste télématique', - 'Animateur d\'écomusée', - 'Animateur web', - 'Appareilleur-gazier', - 'Archéologue', - 'Armurier d\'art', - 'Armurier spectacle', - 'Artificier spectacle', - 'Artiste dramatique', - 'Aspigiculteur', - 'Assistant de justice', - 'Assistant des ventes', - 'Assistant logistique', - 'Assistant styliste', - 'Assurance', - 'Auteur-adaptateur', - 'Billettiste voyages', - 'Brigadier', - 'Bruiteur', - 'Bâtonnier d\'art', - 'Bûcheron', - 'Cameraman', - 'Capitaine de pêche', - 'Carrier', - 'Caviste', - 'Chansonnier', - 'Chanteur', - 'Chargé de recherche', - 'Chasseur-bagagiste', - 'Chef de fabrication', - 'Chef de scierie', - 'Chef des ventes', - 'Chef du personnel', - 'Chef géographe', - 'Chef monteur son', - 'Chef porion', - 'Chiropraticien', - 'Choréologue', - 'Chromiste', - 'Cintrier-machiniste', - 'Clerc hors rang', - 'Coach sportif', - 'Coffreur béton armé', - 'Coffreur-ferrailleur', - 'Commandant de police', - 'Commandant marine', - 'Commis de coupe', - 'Comptable unique', - 'Conception et études', - 'Conducteur de jumbo', - 'Conseiller culinaire', - 'Conseiller funéraire', - 'Conseiller relooking', - 'Consultant ergonome', - 'Contrebassiste', - 'Convoyeur garde', - 'Copiste offset', - 'Corniste', - 'Costumier-habilleur', - 'Coutelier d\'art', - 'Cueilleur de cerises', - 'Céramiste concepteur', - 'Danse', - 'Danseur', - 'Data manager', - 'Dee-jay', - 'Designer produit', - 'Diététicien conseil', - 'Diététique', - 'Doreur sur métaux', - 'Décorateur-costumier', - 'Défloqueur d\'amiante', - 'Dégustateur', - 'Délégué vétérinaire', - 'Délégué à la tutelle', - 'Désamianteur', - 'Détective', - 'Développeur web', - 'Ecotoxicologue', - 'Elagueur-botteur', - 'Elagueur-grimpeur', - 'Elastiqueur', - 'Eleveur d\'insectes', - 'Eleveur de chats', - 'Eleveur de volailles', - 'Embouteilleur', - 'Employé d\'accueil', - 'Employé d\'étage', - 'Employé de snack-bar', - 'Endivier', - 'Endocrinologue', - 'Epithésiste', - 'Essayeur-retoucheur', - 'Etainier', - 'Etancheur', - 'Etancheur-bardeur', - 'Etiqueteur', - 'Expert back-office', - 'Exploitant de tennis', - 'Extraction', - 'Facteur', - 'Facteur de clavecins', - 'Facteur de secteur', - 'Fantaisiste', - 'Façadier-bardeur', - 'Façadier-ravaleur', - 'Feutier', - 'Finance', - 'Flaconneur', - 'Foreur pétrole', - 'Formateur d\'italien', - 'Fossoyeur', - 'Fraiseur', - 'Fraiseur mouliste', - 'Frigoriste maritime', - 'Fromager', - 'Galeriste', - 'Gardien de résidence', - 'Garçon de chenil', - 'Garçon de hall', - 'Gendarme mobile', - 'Guitariste', - 'Gynécologue', - 'Géodésien', - 'Géologue prospecteur', - 'Géomètre', - 'Géomètre du cadastre', - 'Gérant d\'hôtel', - 'Gérant de tutelle', - 'Gériatre', - 'Hydrothérapie', - 'Hématologue', - 'Hôte de caisse', - 'Ingénieur bâtiment', - 'Ingénieur du son', - 'Ingénieur géologue', - 'Ingénieur géomètre', - 'Ingénieur halieute', - 'Ingénieur logistique', - 'Instituteur', - 'Jointeur de placage', - 'Juge des enfants', - 'Juriste financier', - 'Kiwiculteur', - 'Lexicographe', - 'Liftier', - 'Litigeur transport', - 'Logistique', - 'Logopède', - 'Magicien', - 'Manager d\'artiste', - 'Mannequin détail', - 'Maquilleur spectacle', - 'Marbrier-poseur', - 'Marin grande pêche', - 'Matelassier', - 'Maçon', - 'Maçon-fumiste', - 'Maçonnerie', - 'Maître de ballet', - 'Maïeuticien', - 'Menuisier', - 'Miroitier', - 'Modéliste industriel', - 'Moellonneur', - 'Moniteur de sport', - 'Monteur audiovisuel', - 'Monteur de fermettes', - 'Monteur de palettes', - 'Monteur en siège', - 'Monteur prototypiste', - 'Monteur-frigoriste', - 'Monteur-truquiste', - 'Mouleur sable', - 'Mouliste drapeur', - 'Mécanicien-armurier', - 'Médecin du sport', - 'Médecin scolaire', - 'Médiateur judiciaire', - 'Médiathécaire', - 'Net surfeur surfeuse', - 'Oenologue', - 'Opérateur de plateau', - 'Opérateur du son', - 'Opérateur géomètre', - 'Opérateur piquage', - 'Opérateur vidéo', - 'Ouvrier d\'abattoir', - 'Ouvrier serriste', - 'Ouvrier sidérurgiste', - 'Palefrenier', - 'Paléontologue', - 'Pareur en abattoir', - 'Parfumeur', - 'Parqueteur', - 'Percepteur', - 'Photographe d\'art', - 'Pilote automobile', - 'Pilote de soutireuse', - 'Pilote fluvial', - 'Piqueur en ganterie', - 'Pisteur secouriste', - 'Pizzaïolo', - 'Plaquiste enduiseur', - 'Plasticien', - 'Plisseur', - 'Poissonnier-traiteur', - 'Pontonnier', - 'Porion', - 'Porteur de hottes', - 'Porteur de journaux', - 'Portier', - 'Poseur de granit', - 'Posticheur spectacle', - 'Potier', - 'Praticien dentaire', - 'Praticiens médicaux', - 'Premier clerc', - 'Preneur de son', - 'Primeuriste', - 'Professeur d\'italien', - 'Projeteur béton armé', - 'Promotion des ventes', - 'Présentateur radio', - 'Pyrotechnicien', - 'Pédicure pour bovin', - 'Pédologue', - 'Pédopsychiatre', - 'Quincaillier', - 'Radio chargeur', - 'Ramasseur d\'asperges', - 'Ramasseur d\'endives', - 'Ravaleur-ragréeur', - 'Recherche', - 'Recuiseur', - 'Relieur-doreur', - 'Responsable de salle', - 'Responsable télécoms', - 'Revenue Manager', - 'Rippeur spectacle', - 'Rogneur', - 'Récupérateur', - 'Rédacteur des débats', - 'Régleur funéraire', - 'Régleur sur tour', - 'Sapeur-pompier', - 'Scannériste', - 'Scripte télévision', - 'Sculpteur sur verre', - 'Scénariste', - 'Second de cuisine', - 'Secrétaire juridique', - 'Semencier', - 'Sertisseur', - 'Services funéraires', - 'Solier-moquettiste', - 'Sommelier', - 'Sophrologue', - 'Staffeur', - 'Story boarder', - 'Stratifieur', - 'Stucateur', - 'Styliste graphiste', - 'Surjeteur-raseur', - 'Séismologue', - 'Technicien agricole', - 'Technicien bovin', - 'Technicien géomètre', - 'Technicien plateau', - 'Technicien énergie', - 'Terminologue', - 'Testeur informatique', - 'Toiliste', - 'Topographe', - 'Toréro', - 'Traducteur d\'édition', - 'Traffic manager', - 'Trieur de métaux', - 'Turbinier', - 'Téléconseiller', - 'Tôlier-traceur', - 'Vendeur carreau', - 'Vendeur en lingerie', - 'Vendeur en meubles', - 'Vendeur en épicerie', - 'Verrier d\'art', - 'Verrier à la calotte', - 'Verrier à la main', - 'Verrier à main levée', - 'Vidéo-jockey', - 'Vitrier', - ]; -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/Internet.php deleted file mode 100644 index 679919d..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ -numberBetween(1, 2); - } - - $nir .= - // Year of birth (aa) - $this->numerify('##') . - // Mont of birth (mm) - sprintf('%02d', $this->numberBetween(1, 12)); - - // Department - $department = key(Address::department()); - $nir .= $department; - - // Town number, depends on department length - if (strlen($department) === 2) { - $nir .= $this->numerify('###'); - } elseif (strlen($department) === 3) { - $nir .= $this->numerify('##'); - } - - // Born number (depending of town and month of birth) - $nir .= $this->numerify('###'); - - /** - * The key for a given NIR is `97 - 97 % NIR` - * NIR has to be an integer, so we have to do a little replacment - * for departments 2A and 2B - */ - if ($department === '2A') { - $nirInteger = str_replace('2A', '19', $nir); - } elseif ($department === '2B') { - $nirInteger = str_replace('2B', '18', $nir); - } else { - $nirInteger = $nir; - } - $nir .= sprintf('%02d', 97 - $nirInteger % 97); - - // Format is x xx xx xx xxx xxx xx - if ($formatted) { - $nir = substr($nir, 0, 1) . ' ' . substr($nir, 1, 2) . ' ' . substr($nir, 3, 2) . ' ' . substr($nir, 5, 2) . ' ' . substr($nir, 7, 3) . ' ' . substr($nir, 10, 3) . ' ' . substr($nir, 13, 2); - } - - return $nir; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php deleted file mode 100644 index 22f518d..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/PhoneNumber.php +++ /dev/null @@ -1,168 +0,0 @@ -phoneNumber06WithSeparator(); - - return str_replace(' ', '', $phoneNumber); - } - - /** - * Only 0601 to 0638, 0640 to 0689, 0695 and 0698 to 0699 are acceptable prefixes with 06 - * - * @see https://www.arcep.fr/la-regulation/grands-dossiers-thematiques-transverses/la-numerotation.html#c8961 - * @see https://www.itu.int/itu-t/nnp/#/numbering-plans?country=France%C2%A0&code=33 - */ - public function phoneNumber06WithSeparator() - { - $regex = '([0-24-8]\d|3[0-8]|9[589])( \d{2}){3}'; - - return static::regexify($regex); - } - - public function phoneNumber07() - { - $phoneNumber = $this->phoneNumber07WithSeparator(); - - return str_replace(' ', '', $phoneNumber); - } - - /** - * Only 0730 to 0789 are acceptable prefixes with 07 - * - * @see https://www.arcep.fr/la-regulation/grands-dossiers-thematiques-transverses/la-numerotation.html#c8961 - * @see https://www.itu.int/itu-t/nnp/#/numbering-plans?country=France%C2%A0&code=33 - */ - public function phoneNumber07WithSeparator() - { - $regex = '([3-8]\d)( \d{2}){3}'; - - return static::regexify($regex); - } - - public function phoneNumber08() - { - $phoneNumber = $this->phoneNumber08WithSeparator(); - - return str_replace(' ', '', $phoneNumber); - } - - /** - * Valid formats for 08: - * - * 0# ## ## ## - * 1# ## ## ## - * 2# ## ## ## - * 91 ## ## ## - * 92 ## ## ## - * 93 ## ## ## - * 97 ## ## ## - * 98 ## ## ## - * 99 ## ## ## - * - * Formats 089(4|6)## ## ## are valid, but will be - * attributed when other 089 resource ranges are exhausted. - * - * @see https://www.arcep.fr/index.php?id=8146#c9625 - * @see https://issuetracker.google.com/u/1/issues/73269839 - */ - public function phoneNumber08WithSeparator() - { - $regex = '([012]\d|(9[1-357-9])( \d{2}){3}'; - - return static::regexify($regex); - } - - /** - * @example '0601020304' - */ - public function mobileNumber() - { - $format = static::randomElement(static::$mobileFormats); - - return static::numerify($this->generator->parse($format)); - } - - /** - * @example '0891951357' - */ - public function serviceNumber() - { - $format = static::randomElement(static::$serviceFormats); - - return static::numerify($this->generator->parse($format)); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/Text.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/Text.php deleted file mode 100644 index bcd3167..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/fr_FR/Text.php +++ /dev/null @@ -1,15532 +0,0 @@ - static::latitude(46.262740, 47.564721), - 'longitude' => static::longitude(17.077949, 20.604560), - ]; - } - - protected static $streetSuffix = [ - 'árok', 'átjáró', 'dűlősor', 'dűlőút', 'erdősor', 'fasor', 'forduló', 'gát', 'határsor', 'határút', 'híd', 'játszótér', 'kert', 'körönd', 'körtér', 'körút', 'köz', 'lakótelep', 'lejáró', 'lejtő', 'lépcső', 'liget', 'mélyút', 'orom', 'országút', 'ösvény', 'park', 'part', 'pincesor', 'rakpart', 'sétány', 'sétaút', 'sor', 'sugárút', 'tér', 'tere', 'turistaút', 'udvar', 'út', 'útja', 'utca', 'üdülőpart', - ]; - protected static $postcode = ['####']; - protected static $state = [ - 'Budapest', 'Bács-Kiskun', 'Baranya', 'Békés', 'Borsod-Abaúj-Zemplén', 'Csongrád', 'Fejér', 'Győr-Moson-Sopron', 'Hajdú-Bihar', 'Heves', 'Jász-Nagykun-Szolnok', 'Komárom-Esztergom', 'Nógrád', 'Pest', 'Somogy', 'Szabolcs-Szatmár-Bereg', 'Tolna', 'Vas', 'Veszprém', 'Zala', - ]; - protected static $country = [ - 'Afganisztán', 'Albánia', 'Algéria', 'Amerikai Egyesült Államok', 'Andorra', 'Angola', 'Antigua és Barbuda', 'Argentína', 'Ausztria', 'Ausztrália', 'Azerbajdzsán', - 'Bahama-szigetek', 'Bahrein', 'Banglades', 'Barbados', 'Belgium', 'Belize', 'Benin', 'Bhután', 'Bolívia', 'Bosznia-Hercegovina', 'Botswana', 'Brazília', 'Brunei', 'Bulgária', 'Burkina Faso', 'Burma', 'Burundi', - 'Chile', 'Ciprus', 'Costa Rica', 'Csehország', 'Csád', - 'Dominikai Köztársaság', 'Dominikai Közösség', 'Dzsibuti', 'Dánia', 'Dél-Afrika', 'Dél-Korea', 'Dél-Szudán', - 'Ecuador', 'Egyenlítői-Guinea', 'Egyesült Arab Emírségek', 'Egyesült Királyság', 'Egyiptom', 'Elefántcsontpart', 'Eritrea', 'Etiópia', - 'Fehéroroszország', 'Fidzsi-szigetek', 'Finnország', 'Franciaország', 'Fülöp-szigetek', - 'Gabon', 'Gambia', 'Ghána', 'Grenada', 'Grúzia', 'Guatemala', 'Guinea', 'Guyana', 'Görögország', - 'Haiti', 'Hollandia', 'Horvátország', - 'India', 'Indonézia', 'Irak', 'Irán', 'Izland', 'Izrael', - 'Japán', 'Jemen', 'Jordánia', - 'Kambodzsa', 'Kamerun', 'Kanada', 'Katar', 'Kazahsztán', 'Kelet-Timor', 'Kenya', 'Kirgizisztán', 'Kiribati', 'Kolumbia', 'Kongói Demokratikus Köztársaság', 'Kongói Köztársaság', 'Kuba', 'Kuvait', 'Kína', 'Közép-Afrika', - 'Laosz', 'Lengyelország', 'Lesotho', 'Lettország', 'Libanon', 'Libéria', 'Liechtenstein', 'Litvánia', 'Luxemburg', 'Líbia', - 'Macedónia', 'Madagaszkár', 'Magyarország', 'Malawi', 'Maldív-szigetek', 'Mali', 'Malájzia', 'Marokkó', 'Marshall-szigetek', 'Mauritánia', 'Mexikó', 'Mikronézia', 'Moldova', 'Monaco', 'Mongólia', 'Montenegró', 'Mozambik', 'Málta', - 'Namíbia', 'Nauru', 'Nepál', 'Nicaragua', 'Niger', 'Nigéria', 'Norvégia', 'Németország', - 'Olaszország', 'Omán', 'Oroszország', - 'Pakisztán', 'Palau', 'Panama', 'Paraguay', 'Peru', 'Portugália', 'Pápua Új-Guinea', - 'Románia', 'Ruanda', - 'Saint Kitts és Nevis', 'Saint Vincent', 'Salamon-szigetek', 'Salvador', 'San Marino', 'Seychelle-szigetek', 'Spanyolország', 'Srí Lanka', 'Suriname', 'Svájc', 'Svédország', 'Szamoa', 'Szaúd-Arábia', 'Szenegál', 'Szerbia', 'Szingapúr', 'Szlovákia', 'Szlovénia', 'Szomália', 'Szudán', 'Szváziföld', 'Szíria', 'São Tomé és Príncipe', - 'Tadzsikisztán', 'Tanzánia', 'Thaiföld', 'Togo', 'Tonga', 'Trinidad és Tobago', 'Tunézia', 'Tuvalu', 'Törökország', 'Türkmenisztán', - 'Uganda', 'Ukrajna', 'Uruguay', - 'Vanuatu', 'Venezuela', 'Vietnám', - 'Zambia', 'Zimbabwe', 'Zöld-foki-szigetek', - 'Észak-Korea', 'Észtország', 'Írország', 'Örményország', 'Új-Zéland', 'Üzbegisztán', - ]; - - /** - * Source: https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1g_v%C3%A1rosainak_list%C3%A1ja - */ - protected static $capitals = ['Budapest']; - protected static $bigCities = [ - 'Békéscsaba', 'Debrecen', 'Dunaújváros', 'Eger', 'Érd', 'Győr', 'Hódmezővásárhely', 'Kaposvár', 'Kecskemét', 'Miskolc', 'Nagykanizsa', 'Nyíregyháza', 'Pécs', 'Salgótarján', 'Sopron', 'Szeged', 'Székesfehérvár', 'Szekszárd', 'Szolnok', 'Szombathely', 'Tatabánya', 'Veszprém', 'Zalaegerszeg', - ]; - protected static $smallerCities = [ - 'Ajka', 'Aszód', 'Bácsalmás', - 'Baja', 'Baktalórántháza', 'Balassagyarmat', 'Balatonalmádi', 'Balatonfüred', 'Balmazújváros', 'Barcs', 'Bátonyterenye', 'Békés', 'Bélapátfalva', 'Berettyóújfalu', 'Bicske', 'Bóly', 'Bonyhád', 'Budakeszi', - 'Cegléd', 'Celldömölk', 'Cigánd', 'Csenger', 'Csongrád', 'Csorna', 'Csurgó', - 'Dabas', 'Derecske', 'Devecser', 'Dombóvár', 'Dunakeszi', - 'Edelény', 'Encs', 'Enying', 'Esztergom', - 'Fehérgyarmat', 'Fonyód', 'Füzesabony', - 'Gárdony', 'Gödöllő', 'Gönc', 'Gyál', 'Gyomaendrőd', 'Gyöngyös', 'Gyula', - 'Hajdúböszörmény', 'Hajdúhadház', 'Hajdúnánás', 'Hajdúszoboszló', 'Hatvan', 'Heves', - 'Ibrány', - 'Jánoshalma', 'Jászapáti', 'Jászberény', - 'Kalocsa', 'Kapuvár', 'Karcag', 'Kazincbarcika', 'Kemecse', 'Keszthely', 'Kisbér', 'Kiskőrös', 'Kiskunfélegyháza', 'Kiskunhalas', 'Kiskunmajsa', 'Kistelek', 'Kisvárda', 'Komárom', 'Komló', 'Körmend', 'Kőszeg', 'Kunhegyes', 'Kunszentmárton', 'Kunszentmiklós', - 'Lenti', 'Letenye', - 'Makó', 'Marcali', 'Martonvásár', 'Mátészalka', 'Mezőcsát', 'Mezőkovácsháza', 'Mezőkövesd', 'Mezőtúr', 'Mohács', 'Monor', 'Mór', 'Mórahalom', 'Mosonmagyaróvár', - 'Nagyatád', 'Nagykálló', 'Nagykáta', 'Nagykőrös', 'Nyíradony', 'Nyírbátor', - 'Orosháza', 'Oroszlány', 'Ózd', - 'Paks', 'Pannonhalma', 'Pápa', 'Pásztó', 'Pécsvárad', 'Pétervására', 'Pilisvörösvár', 'Polgárdi', 'Püspökladány', 'Putnok', - 'Ráckeve', 'Rétság', - 'Sárbogárd', 'Sarkad', 'Sárospatak', 'Sárvár', 'Sásd', 'Sátoraljaújhely', 'Sellye', 'Siklós', 'Siófok', 'Sümeg', 'Szarvas', 'Szécsény', 'Szeghalom', 'Szentendre', 'Szentes', 'Szentgotthárd', 'Szentlőrinc', 'Szerencs', 'Szigetszentmiklós', 'Szigetvár', 'Szikszó', 'Szob', - 'Tab', 'Tamási', 'Tapolca', 'Tata', 'Tét', 'Tiszafüred', 'Tiszakécske', 'Tiszaújváros', 'Tiszavasvári', 'Tokaj', 'Tolna', 'Törökszentmiklós', - 'Vác', 'Várpalota', 'Vásárosnamény', 'Vasvár', 'Vecsés', - 'Záhony', 'Zalaszentgrót', 'Zirc', - ]; -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/hu_HU/Company.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/hu_HU/Company.php deleted file mode 100644 index 7593199..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/hu_HU/Company.php +++ /dev/null @@ -1,13 +0,0 @@ -generator->parse($format); - } - - public static function country() - { - return static::randomElement(static::$country); - } - - public static function postcode() - { - return static::toUpper(static::bothify(static::randomElement(static::$postcode))); - } - - public static function regionSuffix() - { - return static::randomElement(static::$regionSuffix); - } - - public static function region() - { - return static::randomElement(static::$region); - } - - public static function cityPrefix() - { - return static::randomElement(static::$cityPrefix); - } - - public function city() - { - return static::randomElement(static::$city); - } - - public function streetPrefix() - { - return static::randomElement(static::$streetPrefix); - } - - public static function street() - { - return static::randomElement(static::$street); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/hy_AM/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/hy_AM/Color.php deleted file mode 100644 index ebdda0d..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/hy_AM/Color.php +++ /dev/null @@ -1,12 +0,0 @@ -generator->parse(static::randomElement(static::$formats))); - } - - public function code() - { - return static::randomElement(static::$codes); - } - - public function numberFormat() - { - return static::randomElement(static::$numberFormats); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/id_ID/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/id_ID/Address.php deleted file mode 100644 index 28dd845..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/id_ID/Address.php +++ /dev/null @@ -1,319 +0,0 @@ -generator->parse($format); - } - - public static function street() - { - return static::randomElement(static::$street); - } - - public static function buildingNumber() - { - return (string) self::numberBetween(1, 999); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/id_ID/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/id_ID/Color.php deleted file mode 100644 index 14995b6..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/id_ID/Color.php +++ /dev/null @@ -1,40 +0,0 @@ -generator->parse($lastNameRandomElement); - } - - /** - * Return last name for male - * - * @return string last name - */ - public static function lastNameMale() - { - return static::randomElement(static::$lastNameMale); - } - - /** - * Return last name for female - * - * @return string last name - */ - public static function lastNameFemale() - { - return static::randomElement(static::$lastNameFemale); - } - - /** - * For academic title - * - * @return string suffix - */ - public static function suffix() - { - return static::randomElement(static::$suffix); - } - - /** - * Generates Nomor Induk Kependudukan (NIK) - * - * @see https://en.wikipedia.org/wiki/National_identification_number#Indonesia - * - * @param string|null $gender - * @param \DateTime|null $birthDate - * - * @return string - */ - public function nik($gender = null, $birthDate = null) - { - // generate first numbers (region data) - $nik = $this->birthPlaceCode(); - $nik .= $this->generator->numerify('##'); - - if (!$birthDate) { - $birthDate = $this->generator->dateTimeBetween(); - } - - if (!$gender) { - $gender = $this->generator->randomElement([self::GENDER_MALE, self::GENDER_FEMALE]); - } - - // if gender is female, add 40 to days - if ($gender == self::GENDER_FEMALE) { - $nik .= $birthDate->format('d') + 40; - } else { - $nik .= $birthDate->format('d'); - } - - $nik .= $birthDate->format('my'); - - // add last random digits - $nik .= $this->generator->numerify('####'); - - return $nik; - } - - /** - * Generates birth place code for NIK - * - * @see https://id.wikipedia.org/wiki/Nomor_Induk_Kependudukan - * @see http://informasipedia.com/wilayah-indonesia/daftar-kabupaten-kota-di-indonesia/ - */ - protected function birthPlaceCode() - { - return static::randomElement(static::$birthPlaceCode); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/id_ID/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/id_ID/PhoneNumber.php deleted file mode 100644 index c0bfaf5..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/id_ID/PhoneNumber.php +++ /dev/null @@ -1,55 +0,0 @@ - Icelandic names for women. - */ - protected static $firstNameFemale = ['Aagot', 'Abela', 'Abigael', 'Ada', 'Adda', 'Addý', 'Adela', 'Adelía', 'Adríana', 'Aðalbjörg', 'Aðalbjört', 'Aðalborg', 'Aðaldís', 'Aðalfríður', 'Aðalheiður', 'Aðalrós', 'Aðalsteina', 'Aðalsteinunn', 'Aðalveig', 'Agata', 'Agatha', 'Agða', 'Agla', 'Agnea', 'Agnes', 'Agneta', 'Alanta', 'Alba', 'Alberta', 'Albína', 'Alda', 'Aldís', 'Aldný', 'Aleta', 'Aletta', 'Alexa', 'Alexandra', 'Alexandría', 'Alexis', 'Alexía', 'Alfa', 'Alfífa', 'Alice', 'Alida', 'Alída', 'Alína', 'Alís', 'Alísa', 'Alla', 'Allý', 'Alma', 'Alrún', 'Alva', 'Alvilda', 'Amadea', 'Amal', 'Amalía', 'Amanda', 'Amelía', 'Amilía', 'Amíra', 'Amy', 'Amý', 'Analía', 'Anastasía', 'Andra', 'Andrá', 'Andrea', 'Anetta', 'Angela', 'Angelíka', 'Anika', 'Anita', 'Aníka', 'Anína', 'Aníta', 'Anja', 'Ann', 'Anna', 'Annabella', 'Annalísa', 'Anne', 'Annelí', 'Annetta', 'Anney', 'Annika', 'Annía', 'Anný', 'Antonía', 'Apríl', 'Ardís', 'Arey', 'Arinbjörg', 'Aris', 'Arisa', 'Aría', 'Aríanna', 'Aríella', 'Arín', 'Arína', 'Arís', 'Armenía', 'Arna', 'Arnbjörg', 'Arnborg', 'Arndís', 'Arney', 'Arnfinna', 'Arnfríður', 'Arngerður', 'Arngunnur', 'Arnheiður', 'Arnhildur', 'Arnika', 'Arnkatla', 'Arnlaug', 'Arnleif', 'Arnlín', 'Arnljót', 'Arnóra', 'Arnrós', 'Arnrún', 'Arnþóra', 'Arnþrúður', 'Asírí', 'Askja', 'Assa', 'Astrid', 'Atalía', 'Atena', 'Athena', 'Atla', 'Atlanta', 'Auðbjörg', 'Auðbjört', 'Auðdís', 'Auðlín', 'Auðna', 'Auðný', 'Auðrún', 'Auður', 'Aurora', 'Axelía', 'Axelma', 'Aþena', 'Ágústa', 'Ágústína', 'Álfdís', 'Álfey', 'Álfgerður', 'Álfheiður', 'Álfhildur', 'Álfrós', 'Álfrún', 'Álfsól', 'Árbjörg', 'Árbjört', 'Árdís', 'Árelía', 'Árlaug', 'Ármey', 'Árna', 'Árndís', 'Árney', 'Árnheiður', 'Árnína', 'Árný', 'Áróra', 'Ársól', 'Ársæl', 'Árún', 'Árveig', 'Árvök', 'Árþóra', 'Ása', 'Ásbjörg', 'Ásborg', 'Ásdís', 'Ásfríður', 'Ásgerður', 'Áshildur', 'Áskatla', 'Ásla', 'Áslaug', 'Ásleif', 'Ásný', 'Ásrós', 'Ásrún', 'Ást', 'Ásta', 'Ástbjörg', 'Ástbjört', 'Ástdís', 'Ástfríður', 'Ástgerður', 'Ástheiður', 'Ásthildur', 'Ástríður', 'Ástrós', 'Ástrún', 'Ástveig', 'Ástþóra', 'Ástþrúður', 'Ásvör', 'Baldey', 'Baldrún', 'Baldvina', 'Barbara', 'Barbára', 'Bassí', 'Bára', 'Bebba', 'Begga', 'Belinda', 'Bella', 'Benedikta', 'Bengta', 'Benidikta', 'Benía', 'Beníta', 'Benna', 'Benney', 'Benný', 'Benta', 'Bentey', 'Bentína', 'Bera', 'Bergdís', 'Bergey', 'Bergfríður', 'Bergheiður', 'Berghildur', 'Berglaug', 'Berglind', 'Berglín', 'Bergljót', 'Bergmannía', 'Bergný', 'Bergrán', 'Bergrín', 'Bergrós', 'Bergrún', 'Bergþóra', 'Berit', 'Bernódía', 'Berta', 'Bertha', 'Bessí', 'Bestla', 'Beta', 'Betanía', 'Betsý', 'Bettý', 'Bil', 'Birgit', 'Birgitta', 'Birna', 'Birta', 'Birtna', 'Bíbí', 'Bína', 'Bjargdís', 'Bjargey', 'Bjargheiður', 'Bjarghildur', 'Bjarglind', 'Bjarkey', 'Bjarklind', 'Bjarma', 'Bjarndís', 'Bjarney', 'Bjarnfríður', 'Bjarngerður', 'Bjarnheiður', 'Bjarnhildur', 'Bjarnlaug', 'Bjarnrún', 'Bjarnveig', 'Bjarný', 'Bjarnþóra', 'Bjarnþrúður', 'Bjartey', 'Bjartmey', 'Björg', 'Björgey', 'Björgheiður', 'Björghildur', 'Björk', 'Björney', 'Björnfríður', 'Björt', 'Bláey', 'Blíða', 'Blín', 'Blómey', 'Blædís', 'Blær', 'Bobba', 'Boga', 'Bogdís', 'Bogey', 'Bogga', 'Boghildur', 'Borg', 'Borgdís', 'Borghildur', 'Borgný', 'Borgrún', 'Borgþóra', 'Botnía', 'Bóel', 'Bót', 'Bóthildur', 'Braga', 'Braghildur', 'Branddís', 'Brá', 'Brák', 'Brigitta', 'Brimdís', 'Brimhildur', 'Brimrún', 'Brit', 'Britt', 'Britta', 'Bríana', 'Bríanna', 'Bríet', 'Bryndís', 'Brynfríður', 'Bryngerður', 'Brynheiður', 'Brynhildur', 'Brynja', 'Brynný', 'Burkney', 'Bylgja', 'Camilla', 'Carla', 'Carmen', 'Cecilia', 'Cecilía', 'Charlotta', 'Charlotte', 'Christina', 'Christine', 'Clara', 'Daðey', 'Daðína', 'Dagbjörg', 'Dagbjört', 'Dagfríður', 'Daggrós', 'Dagheiður', 'Dagmar', 'Dagmey', 'Dagný', 'Dagrún', 'Daldís', 'Daley', 'Dalía', 'Dalla', 'Dallilja', 'Dalrós', 'Dana', 'Daney', 'Danfríður', 'Danheiður', 'Danhildur', 'Danía', 'Daníela', 'Daníella', 'Dara', 'Debora', 'Debóra', 'Dendý', 'Didda', 'Dilja', 'Diljá', 'Dimmblá', 'Dimmey', 'Día', 'Díana', 'Díanna', 'Díma', 'Dís', 'Dísa', 'Dísella', 'Donna', 'Doris', 'Dorothea', 'Dóa', 'Dómhildur', 'Dóra', 'Dórey', 'Dóris', 'Dórothea', 'Dórótea', 'Dóróthea', 'Drauma', 'Draumey', 'Drífa', 'Droplaug', 'Drótt', 'Dröfn', 'Dúa', 'Dúfa', 'Dúna', 'Dýrborg', 'Dýrfinna', 'Dýrleif', 'Dýrley', 'Dýrunn', 'Dæja', 'Dögg', 'Dögun', 'Ebba', 'Ebonney', 'Edda', 'Edel', 'Edil', 'Edit', 'Edith', 'Eðna', 'Efemía', 'Egedía', 'Eggrún', 'Egla', 'Eiðný', 'Eiðunn', 'Eik', 'Einbjörg', 'Eindís', 'Einey', 'Einfríður', 'Einhildur', 'Einína', 'Einrún', 'Eir', 'Eirdís', 'Eirfinna', 'Eiríka', 'Eirný', 'Eirún', 'Elba', 'Eldbjörg', 'Eldey', 'Eldlilja', 'Eldrún', 'Eleina', 'Elektra', 'Elena', 'Elenborg', 'Elfa', 'Elfur', 'Elina', 'Elinborg', 'Elisabeth', 'Elía', 'Elíana', 'Elín', 'Elína', 'Elíná', 'Elínbet', 'Elínbjörg', 'Elínbjört', 'Elínborg', 'Elíndís', 'Elíngunnur', 'Elínheiður', 'Elínrós', 'Elírós', 'Elísa', 'Elísabet', 'Elísabeth', 'Elka', 'Ella', 'Ellen', 'Elley', 'Ellisif', 'Ellín', 'Elly', 'Ellý', 'Elma', 'Elna', 'Elsa', 'Elsabet', 'Elsie', 'Elsí', 'Elsý', 'Elva', 'Elvi', 'Elvíra', 'Elvý', 'Embla', 'Emelía', 'Emelíana', 'Emelína', 'Emeralda', 'Emilía', 'Emilíana', 'Emilíanna', 'Emilý', 'Emma', 'Emmý', 'Emý', 'Enea', 'Eneka', 'Engilbjört', 'Engilráð', 'Engilrós', 'Engla', 'Enika', 'Enja', 'Enóla', 'Eres', 'Erika', 'Erin', 'Erla', 'Erlen', 'Erlín', 'Erna', 'Esja', 'Esmeralda', 'Ester', 'Esther', 'Estiva', 'Ethel', 'Etna', 'Eufemía', 'Eva', 'Evelyn', 'Evey', 'Evfemía', 'Evgenía', 'Evíta', 'Evlalía', 'Ey', 'Eybjörg', 'Eybjört', 'Eydís', 'Eyfríður', 'Eygerður', 'Eygló', 'Eyhildur', 'Eyja', 'Eyjalín', 'Eyleif', 'Eylín', 'Eyrós', 'Eyrún', 'Eyveig', 'Eyvör', 'Eyþóra', 'Eyþrúður', 'Fanndís', 'Fanney', 'Fannlaug', 'Fanny', 'Fanný', 'Febrún', 'Fema', 'Filipía', 'Filippa', 'Filippía', 'Finna', 'Finnbjörg', 'Finnbjörk', 'Finnboga', 'Finnborg', 'Finndís', 'Finney', 'Finnfríður', 'Finnlaug', 'Finnrós', 'Fía', 'Fídes', 'Fífa', 'Fjalldís', 'Fjóla', 'Flóra', 'Folda', 'Fransiska', 'Franziska', 'Frán', 'Fregn', 'Freydís', 'Freygerður', 'Freyja', 'Freylaug', 'Freyleif', 'Friðbjörg', 'Friðbjört', 'Friðborg', 'Friðdís', 'Friðdóra', 'Friðey', 'Friðfinna', 'Friðgerður', 'Friðjóna', 'Friðlaug', 'Friðleif', 'Friðlín', 'Friðmey', 'Friðný', 'Friðrika', 'Friðrikka', 'Friðrós', 'Friðrún', 'Friðsemd', 'Friðveig', 'Friðþóra', 'Frigg', 'Fríða', 'Fríður', 'Frostrós', 'Fróðný', 'Fura', 'Fönn', 'Gabríela', 'Gabríella', 'Gauja', 'Gauthildur', 'Gefjun', 'Gefn', 'Geira', 'Geirbjörg', 'Geirdís', 'Geirfinna', 'Geirfríður', 'Geirhildur', 'Geirlaug', 'Geirlöð', 'Geirný', 'Geirríður', 'Geirrún', 'Geirþrúður', 'Georgía', 'Gerða', 'Gerður', 'Gestheiður', 'Gestný', 'Gestrún', 'Gillý', 'Gilslaug', 'Gissunn', 'Gía', 'Gígja', 'Gísela', 'Gísla', 'Gísley', 'Gíslína', 'Gíslný', 'Gíslrún', 'Gíslunn', 'Gíta', 'Gjaflaug', 'Gloría', 'Gló', 'Glóa', 'Glóbjört', 'Glódís', 'Glóð', 'Glóey', 'Gná', 'Góa', 'Gógó', 'Grein', 'Gret', 'Greta', 'Grélöð', 'Grét', 'Gréta', 'Gríma', 'Grímey', 'Grímheiður', 'Grímhildur', 'Gróa', 'Guðbjörg', 'Guðbjört', 'Guðborg', 'Guðdís', 'Guðfinna', 'Guðfríður', 'Guðjóna', 'Guðlaug', 'Guðleif', 'Guðlín', 'Guðmey', 'Guðmunda', 'Guðmundína', 'Guðný', 'Guðríður', 'Guðrún', 'Guðsteina', 'Guðveig', 'Gullbrá', 'Gullveig', 'Gullý', 'Gumma', 'Gunnbjörg', 'Gunnbjört', 'Gunnborg', 'Gunndís', 'Gunndóra', 'Gunnella', 'Gunnfinna', 'Gunnfríður', 'Gunnharða', 'Gunnheiður', 'Gunnhildur', 'Gunnjóna', 'Gunnlaug', 'Gunnleif', 'Gunnlöð', 'Gunnrún', 'Gunnur', 'Gunnveig', 'Gunnvör', 'Gunný', 'Gunnþóra', 'Gunnþórunn', 'Gurrý', 'Gúa', 'Gyða', 'Gyðja', 'Gyðríður', 'Gytta', 'Gæfa', 'Gæflaug', 'Hadda', 'Haddý', 'Hafbjörg', 'Hafborg', 'Hafdís', 'Hafey', 'Hafliða', 'Haflína', 'Hafný', 'Hafrós', 'Hafrún', 'Hafsteina', 'Hafþóra', 'Halla', 'Hallbera', 'Hallbjörg', 'Hallborg', 'Halldís', 'Halldóra', 'Halley', 'Hallfríður', 'Hallgerður', 'Hallgunnur', 'Hallkatla', 'Hallný', 'Hallrún', 'Hallveig', 'Hallvör', 'Hanna', 'Hanney', 'Hansa', 'Hansína', 'Harpa', 'Hauður', 'Hákonía', 'Heba', 'Hedda', 'Hedí', 'Heiða', 'Heiðbjörg', 'Heiðbjörk', 'Heiðbjört', 'Heiðbrá', 'Heiðdís', 'Heiðlaug', 'Heiðlóa', 'Heiðný', 'Heiðrós', 'Heiðrún', 'Heiður', 'Heiðveig', 'Hekla', 'Helen', 'Helena', 'Helga', 'Hella', 'Helma', 'Hendrikka', 'Henný', 'Henrietta', 'Henrika', 'Henríetta', 'Hera', 'Herbjörg', 'Herbjört', 'Herborg', 'Herdís', 'Herfríður', 'Hergerður', 'Herlaug', 'Hermína', 'Hersilía', 'Herta', 'Hertha', 'Hervör', 'Herþrúður', 'Hilda', 'Hildegard', 'Hildibjörg', 'Hildigerður', 'Hildigunnur', 'Hildiríður', 'Hildisif', 'Hildur', 'Hilma', 'Himinbjörg', 'Hind', 'Hinrika', 'Hinrikka', 'Hjalta', 'Hjaltey', 'Hjálmdís', 'Hjálmey', 'Hjálmfríður', 'Hjálmgerður', 'Hjálmrós', 'Hjálmrún', 'Hjálmveig', 'Hjördís', 'Hjörfríður', 'Hjörleif', 'Hjörný', 'Hjörtfríður', 'Hlaðgerður', 'Hlédís', 'Hlíf', 'Hlín', 'Hlökk', 'Hólmbjörg', 'Hólmdís', 'Hólmfríður', 'Hrafna', 'Hrafnborg', 'Hrafndís', 'Hrafney', 'Hrafngerður', 'Hrafnheiður', 'Hrafnhildur', 'Hrafnkatla', 'Hrafnlaug', 'Hrafntinna', 'Hraundís', 'Hrefna', 'Hreindís', 'Hróðný', 'Hrólfdís', 'Hrund', 'Hrönn', 'Hugbjörg', 'Hugbjört', 'Hugborg', 'Hugdís', 'Hugljúf', 'Hugrún', 'Huld', 'Hulda', 'Huldís', 'Huldrún', 'Húnbjörg', 'Húndís', 'Húngerður', 'Hvönn', 'Hödd', 'Högna', 'Hörn', 'Ida', 'Idda', 'Iða', 'Iðunn', 'Ilmur', 'Immý', 'Ina', 'Inda', 'India', 'Indiana', 'Indía', 'Indíana', 'Indíra', 'Indra', 'Inga', 'Ingdís', 'Ingeborg', 'Inger', 'Ingey', 'Ingheiður', 'Inghildur', 'Ingibjörg', 'Ingibjört', 'Ingiborg', 'Ingifinna', 'Ingifríður', 'Ingigerður', 'Ingilaug', 'Ingileif', 'Ingilín', 'Ingimaría', 'Ingimunda', 'Ingiríður', 'Ingirós', 'Ingisól', 'Ingiveig', 'Ingrid', 'Ingrún', 'Ingunn', 'Ingveldur', 'Inna', 'Irena', 'Irene', 'Irja', 'Irma', 'Irmý', 'Irpa', 'Isabel', 'Isabella', 'Ída', 'Íma', 'Ína', 'Ír', 'Íren', 'Írena', 'Íris', 'Írunn', 'Ísabel', 'Ísabella', 'Ísadóra', 'Ísafold', 'Ísalind', 'Ísbjörg', 'Ísdís', 'Ísey', 'Ísfold', 'Ísgerður', 'Íshildur', 'Ísis', 'Íslaug', 'Ísleif', 'Ísmey', 'Ísold', 'Ísól', 'Ísrún', 'Íssól', 'Ísveig', 'Íunn', 'Íva', 'Jakobína', 'Jana', 'Jane', 'Janetta', 'Jannika', 'Jara', 'Jarún', 'Jarþrúður', 'Jasmín', 'Járnbrá', 'Járngerður', 'Jenetta', 'Jenna', 'Jenný', 'Jensína', 'Jessý', 'Jovina', 'Jóa', 'Jóanna', 'Jódís', 'Jófríður', 'Jóhanna', 'Jólín', 'Jóna', 'Jónanna', 'Jónasína', 'Jónbjörg', 'Jónbjört', 'Jóndís', 'Jóndóra', 'Jóney', 'Jónfríður', 'Jóngerð', 'Jónheiður', 'Jónhildur', 'Jóninna', 'Jónída', 'Jónína', 'Jónný', 'Jóný', 'Jóra', 'Jóríður', 'Jórlaug', 'Jórunn', 'Jósebína', 'Jósefín', 'Jósefína', 'Judith', 'Júdea', 'Júdit', 'Júlía', 'Júlíana', 'Júlíanna', 'Júlíetta', 'Júlírós', 'Júnía', 'Júníana', 'Jökla', 'Jökulrós', 'Jörgína', 'Kaðlín', 'Kaja', 'Kalla', 'Kamilla', 'Kamí', 'Kamma', 'Kapitola', 'Kapítóla', 'Kara', 'Karen', 'Karin', 'Karitas', 'Karí', 'Karín', 'Karína', 'Karítas', 'Karla', 'Karlinna', 'Karlína', 'Karlotta', 'Karolína', 'Karó', 'Karólín', 'Karólína', 'Kassandra', 'Kata', 'Katarína', 'Katerína', 'Katharina', 'Kathinka', 'Katinka', 'Katla', 'Katrín', 'Katrína', 'Katý', 'Kára', 'Kellý', 'Kendra', 'Ketilbjörg', 'Ketilfríður', 'Ketilríður', 'Kiddý', 'Kira', 'Kirsten', 'Kirstín', 'Kittý', 'Kjalvör', 'Klara', 'Kládía', 'Klementína', 'Kleópatra', 'Kolbjörg', 'Kolbrá', 'Kolbrún', 'Koldís', 'Kolfinna', 'Kolfreyja', 'Kolgríma', 'Kolka', 'Konkordía', 'Konný', 'Korka', 'Kormlöð', 'Kornelía', 'Kókó', 'Krista', 'Kristbjörg', 'Kristborg', 'Kristel', 'Kristensa', 'Kristey', 'Kristfríður', 'Kristgerður', 'Kristin', 'Kristine', 'Kristíana', 'Kristíanna', 'Kristín', 'Kristína', 'Kristjana', 'Kristjóna', 'Kristlaug', 'Kristlind', 'Kristlín', 'Kristný', 'Kristólína', 'Kristrós', 'Kristrún', 'Kristveig', 'Kristvina', 'Kristþóra', 'Kría', 'Kæja', 'Laila', 'Laíla', 'Lana', 'Lara', 'Laufey', 'Laufheiður', 'Laufhildur', 'Lauga', 'Laugey', 'Laugheiður', 'Lára', 'Lárensína', 'Láretta', 'Lárey', 'Lea', 'Leikný', 'Leila', 'Lena', 'Leonóra', 'Leóna', 'Leónóra', 'Lilja', 'Liljá', 'Liljurós', 'Lill', 'Lilla', 'Lillian', 'Lillý', 'Lily', 'Lilý', 'Lind', 'Linda', 'Linddís', 'Lingný', 'Lisbeth', 'Listalín', 'Liv', 'Líba', 'Líf', 'Lífdís', 'Lín', 'Lína', 'Línbjörg', 'Líndís', 'Líneik', 'Líney', 'Línhildur', 'Lísa', 'Lísabet', 'Lísandra', 'Lísbet', 'Lísebet', 'Lív', 'Ljósbjörg', 'Ljósbrá', 'Ljótunn', 'Lofn', 'Loftveig', 'Logey', 'Lokbrá', 'Lotta', 'Louisa', 'Lousie', 'Lovísa', 'Lóa', 'Lóreley', 'Lukka', 'Lúcía', 'Lúðvíka', 'Lúísa', 'Lúna', 'Lúsinda', 'Lúsía', 'Lúvísa', 'Lydia', 'Lydía', 'Lyngheiður', 'Lýdía', 'Læla', 'Maddý', 'Magda', 'Magdalena', 'Magðalena', 'Magga', 'Maggey', 'Maggý', 'Magna', 'Magndís', 'Magnea', 'Magnes', 'Magney', 'Magnfríður', 'Magnheiður', 'Magnhildur', 'Magnúsína', 'Magný', 'Magnþóra', 'Maía', 'Maídís', 'Maísól', 'Maj', 'Maja', 'Malen', 'Malena', 'Malía', 'Malín', 'Malla', 'Manda', 'Manúela', 'Mara', 'Mardís', 'Marela', 'Marella', 'Maren', 'Marey', 'Marfríður', 'Margit', 'Margot', 'Margret', 'Margrét', 'Margrjet', 'Margunnur', 'Marheiður', 'Maria', 'Marie', 'Marikó', 'Marinella', 'Marit', 'Marí', 'María', 'Maríam', 'Marían', 'Maríana', 'Maríanna', 'Marín', 'Marína', 'Marínella', 'Maríon', 'Marísa', 'Marísól', 'Marít', 'Maríuerla', 'Marja', 'Markrún', 'Marlaug', 'Marlena', 'Marlín', 'Marlís', 'Marólína', 'Marsa', 'Marselía', 'Marselína', 'Marsibil', 'Marsilía', 'Marsý', 'Marta', 'Martha', 'Martína', 'Mary', 'Marý', 'Matta', 'Mattea', 'Matthea', 'Matthilda', 'Matthildur', 'Matthía', 'Mattíana', 'Mattína', 'Mattý', 'Maxima', 'Mábil', 'Málfríður', 'Málhildur', 'Málmfríður', 'Mánadís', 'Máney', 'Mára', 'Meda', 'Mekkin', 'Mekkín', 'Melinda', 'Melissa', 'Melkorka', 'Melrós', 'Messíana', 'Metta', 'Mey', 'Mikaela', 'Mikaelína', 'Mikkalína', 'Milda', 'Mildríður', 'Milla', 'Millý', 'Minerva', 'Minna', 'Minney', 'Minný', 'Miriam', 'Mirja', 'Mirjam', 'Mirra', 'Mist', 'Mía', 'Mínerva', 'Míra', 'Míranda', 'Mítra', 'Mjaðveig', 'Mjalldís', 'Mjallhvít', 'Mjöll', 'Mona', 'Monika', 'Módís', 'Móeiður', 'Móey', 'Móheiður', 'Móna', 'Mónika', 'Móníka', 'Munda', 'Mundheiður', 'Mundhildur', 'Mundína', 'Myrra', 'Mýr', 'Mýra', 'Mýrún', 'Mörk', 'Nadia', 'Nadía', 'Nadja', 'Nana', 'Nanna', 'Nanný', 'Nansý', 'Naomí', 'Naómí', 'Natalie', 'Natalía', 'Náttsól', 'Nella', 'Nellý', 'Nenna', 'Nicole', 'Niðbjörg', 'Nikíta', 'Nikoletta', 'Nikólína', 'Ninja', 'Ninna', 'Nína', 'Níní', 'Njála', 'Njóla', 'Norma', 'Nóa', 'Nóra', 'Nótt', 'Nýbjörg', 'Odda', 'Oddbjörg', 'Oddfreyja', 'Oddfríður', 'Oddgerður', 'Oddhildur', 'Oddlaug', 'Oddleif', 'Oddný', 'Oddrún', 'Oddveig', 'Oddvör', 'Oktavía', 'Októvía', 'Olga', 'Ollý', 'Ora', 'Orka', 'Ormheiður', 'Ormhildur', 'Otkatla', 'Otta', 'Óda', 'Ófelía', 'Óla', 'Ólafía', 'Ólafína', 'Ólavía', 'Ólivía', 'Ólína', 'Ólöf', 'Ósa', 'Ósk', 'Ótta', 'Pamela', 'París', 'Patricia', 'Patrisía', 'Pála', 'Páldís', 'Páley', 'Pálfríður', 'Pálhanna', 'Pálheiður', 'Pálhildur', 'Pálín', 'Pálína', 'Pálmey', 'Pálmfríður', 'Pálrún', 'Perla', 'Peta', 'Petra', 'Petrea', 'Petrína', 'Petronella', 'Petrónella', 'Petrós', 'Petrún', 'Petrúnella', 'Pétrína', 'Pétrún', 'Pía', 'Polly', 'Pollý', 'Pría', 'Rafney', 'Rafnhildur', 'Ragna', 'Ragnbjörg', 'Ragney', 'Ragnfríður', 'Ragnheiður', 'Ragnhildur', 'Rakel', 'Ramóna', 'Randalín', 'Randíður', 'Randý', 'Ranka', 'Rannva', 'Rannveig', 'Ráðhildur', 'Rán', 'Rebekka', 'Reginbjörg', 'Regína', 'Rein', 'Renata', 'Reyn', 'Reyndís', 'Reynheiður', 'Reynhildur', 'Rikka', 'Ripley', 'Rita', 'Ríkey', 'Rín', 'Ríta', 'Ronja', 'Rorí', 'Roxanna', 'Róberta', 'Róbjörg', 'Rós', 'Rósa', 'Rósalind', 'Rósanna', 'Rósbjörg', 'Rósborg', 'Róselía', 'Rósey', 'Rósfríður', 'Róshildur', 'Rósinkara', 'Rósinkransa', 'Róska', 'Róslaug', 'Róslind', 'Róslinda', 'Róslín', 'Rósmary', 'Rósmarý', 'Rósmunda', 'Rósný', 'Runný', 'Rut', 'Ruth', 'Rúbý', 'Rún', 'Rúna', 'Rúndís', 'Rúnhildur', 'Rúrí', 'Röfn', 'Rögn', 'Röskva', 'Sabína', 'Sabrína', 'Saga', 'Salbjörg', 'Saldís', 'Salgerður', 'Salín', 'Salína', 'Salka', 'Salma', 'Salný', 'Salome', 'Salóme', 'Salvör', 'Sandra', 'Sanna', 'Santía', 'Sara', 'Sarína', 'Sefanía', 'Selja', 'Selka', 'Selma', 'Senía', 'Septíma', 'Sera', 'Serena', 'Seselía', 'Sesilía', 'Sesselía', 'Sesselja', 'Sessilía', 'Sif', 'Sigdís', 'Sigdóra', 'Sigfríð', 'Sigfríður', 'Sigga', 'Siggerður', 'Sigmunda', 'Signa', 'Signhildur', 'Signý', 'Sigríður', 'Sigrún', 'Sigurást', 'Sigurásta', 'Sigurbára', 'Sigurbirna', 'Sigurbjörg', 'Sigurbjört', 'Sigurborg', 'Sigurdís', 'Sigurdóra', 'Sigurdríf', 'Sigurdrífa', 'Sigurða', 'Sigurey', 'Sigurfinna', 'Sigurfljóð', 'Sigurgeira', 'Sigurhanna', 'Sigurhelga', 'Sigurhildur', 'Sigurjóna', 'Sigurlaug', 'Sigurleif', 'Sigurlilja', 'Sigurlinn', 'Sigurlín', 'Sigurlína', 'Sigurmunda', 'Sigurnanna', 'Sigurósk', 'Sigurrós', 'Sigursteina', 'Sigurunn', 'Sigurveig', 'Sigurvina', 'Sigurþóra', 'Sigyn', 'Sigþóra', 'Sigþrúður', 'Silfa', 'Silfá', 'Silfrún', 'Silja', 'Silka', 'Silla', 'Silva', 'Silvana', 'Silvía', 'Sirra', 'Sirrý', 'Siv', 'Sía', 'Símonía', 'Sísí', 'Síta', 'Sjöfn', 'Skarpheiður', 'Skugga', 'Skuld', 'Skúla', 'Skúlína', 'Snjáfríður', 'Snjáka', 'Snjófríður', 'Snjólaug', 'Snorra', 'Snót', 'Snæbjörg', 'Snæbjört', 'Snæborg', 'Snæbrá', 'Snædís', 'Snæfríður', 'Snælaug', 'Snærós', 'Snærún', 'Soffía', 'Sofie', 'Sofía', 'Solveig', 'Sonja', 'Sonný', 'Sophia', 'Sophie', 'Sól', 'Sóla', 'Sólbjörg', 'Sólbjört', 'Sólborg', 'Sólbrá', 'Sólbrún', 'Sóldís', 'Sóldögg', 'Sóley', 'Sólfríður', 'Sólgerður', 'Sólhildur', 'Sólín', 'Sólkatla', 'Sóllilja', 'Sólný', 'Sólrós', 'Sólrún', 'Sólveig', 'Sólvör', 'Sónata', 'Stefana', 'Stefanía', 'Stefánný', 'Steina', 'Steinbjörg', 'Steinborg', 'Steindís', 'Steindóra', 'Steiney', 'Steinfríður', 'Steingerður', 'Steinhildur', 'Steinlaug', 'Steinrós', 'Steinrún', 'Steinunn', 'Steinvör', 'Steinþóra', 'Stella', 'Stígheiður', 'Stígrún', 'Stína', 'Stjarna', 'Styrgerður', 'Sumarlína', 'Sumarrós', 'Sunna', 'Sunnefa', 'Sunneva', 'Sunniva', 'Sunníva', 'Susan', 'Súla', 'Súsan', 'Súsanna', 'Svafa', 'Svala', 'Svalrún', 'Svana', 'Svanbjörg', 'Svanbjört', 'Svanborg', 'Svandís', 'Svaney', 'Svanfríður', 'Svanheiður', 'Svanhildur', 'Svanhvít', 'Svanlaug', 'Svanrós', 'Svanþrúður', 'Svava', 'Svea', 'Sveina', 'Sveinbjörg', 'Sveinborg', 'Sveindís', 'Sveiney', 'Sveinfríður', 'Sveingerður', 'Sveinhildur', 'Sveinlaug', 'Sveinrós', 'Sveinrún', 'Sveinsína', 'Sveinveig', 'Sylgja', 'Sylva', 'Sylvía', 'Sæbjörg', 'Sæbjört', 'Sæborg', 'Sædís', 'Sæfinna', 'Sæfríður', 'Sæhildur', 'Sælaug', 'Sæmunda', 'Sæný', 'Særós', 'Særún', 'Sæsól', 'Sæunn', 'Sævör', 'Sölva', 'Sölvey', 'Sölvína', 'Tala', 'Talía', 'Tamar', 'Tamara', 'Tanía', 'Tanja', 'Tanya', 'Tanya', 'Tara', 'Tea', 'Teitný', 'Tekla', 'Telma', 'Tera', 'Teresa', 'Teresía', 'Thea', 'Thelma', 'Theodóra', 'Theódóra', 'Theresa', 'Tindra', 'Tinna', 'Tirsa', 'Tía', 'Tíbrá', 'Tína', 'Todda', 'Torbjörg', 'Torfey', 'Torfheiður', 'Torfhildur', 'Tóbý', 'Tóka', 'Tóta', 'Tristana', 'Trú', 'Tryggva', 'Tryggvína', 'Týra', 'Ugla', 'Una', 'Undína', 'Unna', 'Unnbjörg', 'Unndís', 'Unnur', 'Urður', 'Úa', 'Úlfa', 'Úlfdís', 'Úlfey', 'Úlfheiður', 'Úlfhildur', 'Úlfrún', 'Úlla', 'Úna', 'Úndína', 'Úranía', 'Úrsúla', 'Vagna', 'Vagnbjörg', 'Vagnfríður', 'Vaka', 'Vala', 'Valbjörg', 'Valbjörk', 'Valbjört', 'Valborg', 'Valdheiður', 'Valdís', 'Valentína', 'Valería', 'Valey', 'Valfríður', 'Valgerða', 'Valgerður', 'Valhildur', 'Valka', 'Vallý', 'Valný', 'Valrós', 'Valrún', 'Valva', 'Valý', 'Valþrúður', 'Vanda', 'Vár', 'Veig', 'Veiga', 'Venus', 'Vera', 'Veronika', 'Verónika', 'Veróníka', 'Vetrarrós', 'Vébjörg', 'Védís', 'Végerður', 'Vélaug', 'Véný', 'Vibeka', 'Victoría', 'Viðja', 'Vigdís', 'Vigný', 'Viktoria', 'Viktoría', 'Vilborg', 'Vildís', 'Vilfríður', 'Vilgerður', 'Vilhelmína', 'Villa', 'Villimey', 'Vilma', 'Vilný', 'Vinbjörg', 'Vinný', 'Vinsý', 'Virginía', 'Víbekka', 'Víf', 'Vígdögg', 'Víggunnur', 'Víóla', 'Víóletta', 'Vísa', 'Von', 'Von', 'Voney', 'Vordís', 'Ylfa', 'Ylfur', 'Ylja', 'Ylva', 'Ynja', 'Yrja', 'Yrsa', 'Ýja', 'Ýma', 'Ýr', 'Ýrr', 'Þalía', 'Þeba', 'Þeódís', 'Þeódóra', 'Þjóðbjörg', 'Þjóðhildur', 'Þoka', 'Þorbjörg', 'Þorfinna', 'Þorgerður', 'Þorgríma', 'Þorkatla', 'Þorlaug', 'Þorleif', 'Þorsteina', 'Þorstína', 'Þóra', 'Þóranna', 'Þórarna', 'Þórbjörg', 'Þórdís', 'Þórða', 'Þórelfa', 'Þórelfur', 'Þórey', 'Þórfríður', 'Þórgunna', 'Þórgunnur', 'Þórhalla', 'Þórhanna', 'Þórheiður', 'Þórhildur', 'Þórkatla', 'Þórlaug', 'Þórleif', 'Þórný', 'Þórodda', 'Þórsteina', 'Þórsteinunn', 'Þórstína', 'Þórunn', 'Þórveig', 'Þórvör', 'Þrá', 'Þrúða', 'Þrúður', 'Þula', 'Þura', 'Þurí', 'Þuríður', 'Þurý', 'Þúfa', 'Þyri', 'Þyrí', 'Þöll', 'Ægileif', 'Æsa', 'Æsgerður', 'Ögmunda', 'Ögn', 'Ölrún', 'Ölveig', 'Örbrún', 'Örk', 'Ösp']; - - /** - * @var array Icelandic names for men. - */ - protected static $firstNameMale = ['Aage', 'Abel', 'Abraham', 'Adam', 'Addi', 'Adel', 'Adíel', 'Adólf', 'Adrían', 'Adríel', 'Aðalberg', 'Aðalbergur', 'Aðalbert', 'Aðalbjörn', 'Aðalborgar', 'Aðalgeir', 'Aðalmundur', 'Aðalráður', 'Aðalsteinn', 'Aðólf', 'Agnar', 'Agni', 'Albert', 'Aldar', 'Alex', 'Alexander', 'Alexíus', 'Alfons', 'Alfred', 'Alfreð', 'Ali', 'Allan', 'Alli', 'Almar', 'Alrekur', 'Alvar', 'Alvin', 'Amír', 'Amos', 'Anders', 'Andreas', 'André', 'Andrés', 'Andri', 'Anes', 'Anfinn', 'Angantýr', 'Angi', 'Annar', 'Annarr', 'Annas', 'Annel', 'Annes', 'Anthony', 'Anton', 'Antoníus', 'Aran', 'Arent', 'Ares', 'Ari', 'Arilíus', 'Arinbjörn', 'Aríel', 'Aríus', 'Arnald', 'Arnaldur', 'Arnar', 'Arnberg', 'Arnbergur', 'Arnbjörn', 'Arndór', 'Arnes', 'Arnfinnur', 'Arnfreyr', 'Arngeir', 'Arngils', 'Arngrímur', 'Arnkell', 'Arnlaugur', 'Arnleifur', 'Arnljótur', 'Arnmóður', 'Arnmundur', 'Arnoddur', 'Arnold', 'Arnór', 'Arnsteinn', 'Arnúlfur', 'Arnviður', 'Arnþór', 'Aron', 'Arthur', 'Arthúr', 'Artúr', 'Asael', 'Askur', 'Aspar', 'Atlas', 'Atli', 'Auðbergur', 'Auðbert', 'Auðbjörn', 'Auðgeir', 'Auðkell', 'Auðmundur', 'Auðólfur', 'Auðun', 'Auðunn', 'Austar', 'Austmann', 'Austmar', 'Austri', 'Axel', 'Ágúst', 'Áki', 'Álfar', 'Álfgeir', 'Álfgrímur', 'Álfur', 'Álfþór', 'Ámundi', 'Árbjartur', 'Árbjörn', 'Árelíus', 'Árgeir', 'Árgils', 'Ármann', 'Árni', 'Ársæll', 'Ás', 'Ásberg', 'Ásbergur', 'Ásbjörn', 'Ásgautur', 'Ásgeir', 'Ásgils', 'Ásgrímur', 'Ási', 'Áskell', 'Áslaugur', 'Áslákur', 'Ásmar', 'Ásmundur', 'Ásólfur', 'Ásröður', 'Ástbjörn', 'Ástgeir', 'Ástmar', 'Ástmundur', 'Ástráður', 'Ástríkur', 'Ástvald', 'Ástvaldur', 'Ástvar', 'Ástvin', 'Ástþór', 'Ásvaldur', 'Ásvarður', 'Ásþór', 'Baldur', 'Baldvin', 'Baldwin', 'Baltasar', 'Bambi', 'Barði', 'Barri', 'Bassi', 'Bastían', 'Baugur', 'Bárður', 'Beinir', 'Beinteinn', 'Beitir', 'Bekan', 'Benedikt', 'Benidikt', 'Benjamín', 'Benoný', 'Benóní', 'Benóný', 'Bent', 'Berent', 'Berg', 'Bergfinnur', 'Berghreinn', 'Bergjón', 'Bergmann', 'Bergmar', 'Bergmundur', 'Bergsteinn', 'Bergsveinn', 'Bergur', 'Bergvin', 'Bergþór', 'Bernhard', 'Bernharð', 'Bernharður', 'Berni', 'Bernódus', 'Bersi', 'Bertel', 'Bertram', 'Bessi', 'Betúel', 'Bill', 'Birgir', 'Birkir', 'Birnir', 'Birtingur', 'Birtir', 'Bjargar', 'Bjargmundur', 'Bjargþór', 'Bjarkan', 'Bjarkar', 'Bjarki', 'Bjarmar', 'Bjarmi', 'Bjarnar', 'Bjarnfinnur', 'Bjarnfreður', 'Bjarnharður', 'Bjarnhéðinn', 'Bjarni', 'Bjarnlaugur', 'Bjarnleifur', 'Bjarnólfur', 'Bjarnsteinn', 'Bjarnþór', 'Bjartmann', 'Bjartmar', 'Bjartur', 'Bjartþór', 'Bjólan', 'Bjólfur', 'Björgmundur', 'Björgólfur', 'Björgúlfur', 'Björgvin', 'Björn', 'Björnólfur', 'Blængur', 'Blær', 'Blævar', 'Boði', 'Bogi', 'Bolli', 'Borgar', 'Borgúlfur', 'Borgþór', 'Bóas', 'Bói', 'Bótólfur', 'Bragi', 'Brandur', 'Breki', 'Bresi', 'Brestir', 'Brimar', 'Brimi', 'Brimir', 'Brími', 'Brjánn', 'Broddi', 'Bruno', 'Bryngeir', 'Brynjar', 'Brynjólfur', 'Brynjúlfur', 'Brynleifur', 'Brynsteinn', 'Bryntýr', 'Brynþór', 'Burkni', 'Búi', 'Búri', 'Bæring', 'Bæringur', 'Bæron', 'Böðvar', 'Börkur', 'Carl', 'Cecil', 'Christian', 'Christopher', 'Cýrus', 'Daði', 'Dagbjartur', 'Dagfari', 'Dagfinnur', 'Daggeir', 'Dagmann', 'Dagnýr', 'Dagur', 'Dagþór', 'Dalbert', 'Dalli', 'Dalmann', 'Dalmar', 'Dalvin', 'Damjan', 'Dan', 'Danelíus', 'Daniel', 'Danival', 'Daníel', 'Daníval', 'Dante', 'Daríus', 'Darri', 'Davíð', 'Demus', 'Deníel', 'Dennis', 'Diðrik', 'Díómedes', 'Dofri', 'Dolli', 'Dominik', 'Dómald', 'Dómaldi', 'Dómaldur', 'Dónald', 'Dónaldur', 'Dór', 'Dóri', 'Dósóþeus', 'Draupnir', 'Dreki', 'Drengur', 'Dufgus', 'Dufþakur', 'Dugfús', 'Dúi', 'Dúnn', 'Dvalinn', 'Dýri', 'Dýrmundur', 'Ebbi', 'Ebeneser', 'Ebenezer', 'Eberg', 'Edgar', 'Edilon', 'Edílon', 'Edvard', 'Edvin', 'Edward', 'Eðvald', 'Eðvar', 'Eðvarð', 'Efraím', 'Eggert', 'Eggþór', 'Egill', 'Eiðar', 'Eiður', 'Eikar', 'Eilífur', 'Einar', 'Einir', 'Einvarður', 'Einþór', 'Eiríkur', 'Eivin', 'Elberg', 'Elbert', 'Eldar', 'Eldgrímur', 'Eldjárn', 'Eldmar', 'Eldon', 'Eldór', 'Eldur', 'Elentínus', 'Elfar', 'Elfráður', 'Elimar', 'Elinór', 'Elis', 'Elí', 'Elías', 'Elíeser', 'Elímar', 'Elínbergur', 'Elínmundur', 'Elínór', 'Elís', 'Ellert', 'Elli', 'Elliði', 'Ellís', 'Elmar', 'Elvar', 'Elvin', 'Elvis', 'Emanúel', 'Embrek', 'Emerald', 'Emil', 'Emmanúel', 'Engilbert', 'Engilbjartur', 'Engiljón', 'Engill', 'Enok', 'Eric', 'Erik', 'Erlar', 'Erlendur', 'Erling', 'Erlingur', 'Ernestó', 'Ernir', 'Ernst', 'Eron', 'Erpur', 'Esekíel', 'Esjar', 'Esra', 'Estefan', 'Evald', 'Evan', 'Evert', 'Eyberg', 'Eyjólfur', 'Eylaugur', 'Eyleifur', 'Eymar', 'Eymundur', 'Eyríkur', 'Eysteinn', 'Eyvar', 'Eyvindur', 'Eyþór', 'Fabrisíus', 'Falgeir', 'Falur', 'Fannar', 'Fannberg', 'Fanngeir', 'Fáfnir', 'Fálki', 'Felix', 'Fengur', 'Fenrir', 'Ferdinand', 'Ferdínand', 'Fertram', 'Feykir', 'Filip', 'Filippus', 'Finn', 'Finnbjörn', 'Finnbogi', 'Finngeir', 'Finnjón', 'Finnlaugur', 'Finnur', 'Finnvarður', 'Fífill', 'Fjalar', 'Fjarki', 'Fjólar', 'Fjólmundur', 'Fjölnir', 'Fjölvar', 'Fjörnir', 'Flemming', 'Flosi', 'Flóki', 'Flórent', 'Flóvent', 'Forni', 'Fossmar', 'Fólki', 'Francis', 'Frank', 'Franklín', 'Frans', 'Franz', 'Fránn', 'Frár', 'Freybjörn', 'Freygarður', 'Freymar', 'Freymóður', 'Freymundur', 'Freyr', 'Freysteinn', 'Freyviður', 'Freyþór', 'Friðberg', 'Friðbergur', 'Friðbert', 'Friðbjörn', 'Friðfinnur', 'Friðgeir', 'Friðjón', 'Friðlaugur', 'Friðleifur', 'Friðmann', 'Friðmar', 'Friðmundur', 'Friðrik', 'Friðsteinn', 'Friður', 'Friðvin', 'Friðþjófur', 'Friðþór', 'Friedrich', 'Fritz', 'Frímann', 'Frosti', 'Fróði', 'Fróðmar', 'Funi', 'Fúsi', 'Fylkir', 'Gabriel', 'Gabríel', 'Gael', 'Galdur', 'Gamalíel', 'Garðar', 'Garibaldi', 'Garpur', 'Garri', 'Gaui', 'Gaukur', 'Gauti', 'Gautrekur', 'Gautur', 'Gautviður', 'Geir', 'Geirarður', 'Geirfinnur', 'Geirharður', 'Geirhjörtur', 'Geirhvatur', 'Geiri', 'Geirlaugur', 'Geirleifur', 'Geirmundur', 'Geirólfur', 'Geirröður', 'Geirtryggur', 'Geirvaldur', 'Geirþjófur', 'Geisli', 'Gellir', 'Georg', 'Gerald', 'Gerðar', 'Geri', 'Gestur', 'Gilbert', 'Gilmar', 'Gils', 'Gissur', 'Gizur', 'Gídeon', 'Gígjar', 'Gísli', 'Gjúki', 'Glói', 'Glúmur', 'Gneisti', 'Gnúpur', 'Gnýr', 'Goði', 'Goðmundur', 'Gottskálk', 'Gottsveinn', 'Gói', 'Grani', 'Grankell', 'Gregor', 'Greipur', 'Greppur', 'Gretar', 'Grettir', 'Grétar', 'Grímar', 'Grímkell', 'Grímlaugur', 'Grímnir', 'Grímólfur', 'Grímur', 'Grímúlfur', 'Guðberg', 'Guðbergur', 'Guðbjarni', 'Guðbjartur', 'Guðbjörn', 'Guðbrandur', 'Guðfinnur', 'Guðfreður', 'Guðgeir', 'Guðjón', 'Guðlaugur', 'Guðleifur', 'Guðleikur', 'Guðmann', 'Guðmar', 'Guðmon', 'Guðmundur', 'Guðni', 'Guðráður', 'Guðröður', 'Guðsteinn', 'Guðvarður', 'Guðveigur', 'Guðvin', 'Guðþór', 'Gumi', 'Gunnar', 'Gunnberg', 'Gunnbjörn', 'Gunndór', 'Gunngeir', 'Gunnhallur', 'Gunnlaugur', 'Gunnleifur', 'Gunnólfur', 'Gunnóli', 'Gunnröður', 'Gunnsteinn', 'Gunnvaldur', 'Gunnþór', 'Gustav', 'Gutti', 'Guttormur', 'Gústaf', 'Gústav', 'Gylfi', 'Gyrðir', 'Gýgjar', 'Gýmir', 'Haddi', 'Haddur', 'Hafberg', 'Hafgrímur', 'Hafliði', 'Hafnar', 'Hafni', 'Hafsteinn', 'Hafþór', 'Hagalín', 'Hagbarður', 'Hagbert', 'Haki', 'Hallberg', 'Hallbjörn', 'Halldór', 'Hallfreður', 'Hallgarður', 'Hallgeir', 'Hallgils', 'Hallgrímur', 'Hallkell', 'Hallmann', 'Hallmar', 'Hallmundur', 'Hallsteinn', 'Hallur', 'Hallvarður', 'Hallþór', 'Hamar', 'Hannes', 'Hannibal', 'Hans', 'Harald', 'Haraldur', 'Harri', 'Harry', 'Harrý', 'Hartmann', 'Hartvig', 'Hauksteinn', 'Haukur', 'Haukvaldur', 'Hákon', 'Háleygur', 'Hálfdan', 'Hálfdán', 'Hámundur', 'Hárekur', 'Hárlaugur', 'Hásteinn', 'Hávar', 'Hávarður', 'Hávarr', 'Hávarr', 'Heiðar', 'Heiðarr', 'Heiðberg', 'Heiðbert', 'Heiðlindur', 'Heiðmann', 'Heiðmar', 'Heiðmundur', 'Heiðrekur', 'Heikir', 'Heilmóður', 'Heimir', 'Heinrekur', 'Heisi', 'Hektor', 'Helgi', 'Helmút', 'Hemmert', 'Hendrik', 'Henning', 'Henrik', 'Henry', 'Henrý', 'Herbert', 'Herbjörn', 'Herfinnur', 'Hergeir', 'Hergill', 'Hergils', 'Herjólfur', 'Herlaugur', 'Herleifur', 'Herluf', 'Hermann', 'Hermóður', 'Hermundur', 'Hersir', 'Hersteinn', 'Hersveinn', 'Hervar', 'Hervarður', 'Hervin', 'Héðinn', 'Hilaríus', 'Hilbert', 'Hildar', 'Hildibergur', 'Hildibrandur', 'Hildigeir', 'Hildiglúmur', 'Hildimar', 'Hildimundur', 'Hildingur', 'Hildir', 'Hildiþór', 'Hilmar', 'Hilmir', 'Himri', 'Hinrik', 'Híram', 'Hjallkár', 'Hjalti', 'Hjarnar', 'Hjálmar', 'Hjálmgeir', 'Hjálmtýr', 'Hjálmur', 'Hjálmþór', 'Hjörleifur', 'Hjörtur', 'Hjörtþór', 'Hjörvar', 'Hleiðar', 'Hlégestur', 'Hlér', 'Hlini', 'Hlíðar', 'Hlíðberg', 'Hlífar', 'Hljómur', 'Hlynur', 'Hlöðmundur', 'Hlöður', 'Hlöðvarður', 'Hlöðver', 'Hnefill', 'Hnikar', 'Hnikarr', 'Holgeir', 'Holger', 'Holti', 'Hólm', 'Hólmar', 'Hólmbert', 'Hólmfastur', 'Hólmgeir', 'Hólmgrímur', 'Hólmkell', 'Hólmsteinn', 'Hólmþór', 'Hóseas', 'Hrafn', 'Hrafnar', 'Hrafnbergur', 'Hrafnkell', 'Hrafntýr', 'Hrannar', 'Hrappur', 'Hraunar', 'Hreggviður', 'Hreiðar', 'Hreiðmar', 'Hreimur', 'Hreinn', 'Hringur', 'Hrímnir', 'Hrollaugur', 'Hrolleifur', 'Hróaldur', 'Hróar', 'Hróbjartur', 'Hróðgeir', 'Hróðmar', 'Hróðólfur', 'Hróðvar', 'Hrói', 'Hrólfur', 'Hrómundur', 'Hrútur', 'Hrærekur', 'Hugberg', 'Hugi', 'Huginn', 'Hugleikur', 'Hugo', 'Hugó', 'Huldar', 'Huxley', 'Húbert', 'Húgó', 'Húmi', 'Húnbogi', 'Húni', 'Húnn', 'Húnröður', 'Hvannar', 'Hyltir', 'Hylur', 'Hængur', 'Hænir', 'Höður', 'Högni', 'Hörður', 'Höskuldur', 'Illugi', 'Immanúel', 'Indriði', 'Ingberg', 'Ingi', 'Ingiberg', 'Ingibergur', 'Ingibert', 'Ingibjartur', 'Ingibjörn', 'Ingileifur', 'Ingimagn', 'Ingimar', 'Ingimundur', 'Ingivaldur', 'Ingiþór', 'Ingjaldur', 'Ingmar', 'Ingólfur', 'Ingvaldur', 'Ingvar', 'Ingvi', 'Ingþór', 'Ismael', 'Issi', 'Ían', 'Ígor', 'Ími', 'Ísak', 'Ísar', 'Ísarr', 'Ísbjörn', 'Íseldur', 'Ísgeir', 'Ísidór', 'Ísleifur', 'Ísmael', 'Ísmar', 'Ísólfur', 'Ísrael', 'Ívan', 'Ívar', 'Jack', 'Jafet', 'Jaki', 'Jakob', 'Jakop', 'Jamil', 'Jan', 'Janus', 'Jarl', 'Jason', 'Járngrímur', 'Játgeir', 'Játmundur', 'Játvarður', 'Jenni', 'Jens', 'Jeremías', 'Jes', 'Jesper', 'Jochum', 'Johan', 'John', 'Joshua', 'Jóakim', 'Jóann', 'Jóel', 'Jóhann', 'Jóhannes', 'Jói', 'Jómar', 'Jómundur', 'Jón', 'Jónar', 'Jónas', 'Jónatan', 'Jónbjörn', 'Jóndór', 'Jóngeir', 'Jónmundur', 'Jónsteinn', 'Jónþór', 'Jósafat', 'Jósavin', 'Jósef', 'Jósep', 'Jósteinn', 'Jósúa', 'Jóvin', 'Julian', 'Júlí', 'Júlían', 'Júlíus', 'Júní', 'Júníus', 'Júrek', 'Jökull', 'Jörfi', 'Jörgen', 'Jörmundur', 'Jörri', 'Jörundur', 'Jörvar', 'Jörvi', 'Kaj', 'Kakali', 'Kaktus', 'Kaldi', 'Kaleb', 'Kali', 'Kalman', 'Kalmann', 'Kalmar', 'Kaprasíus', 'Karel', 'Karim', 'Karkur', 'Karl', 'Karles', 'Karli', 'Karvel', 'Kaspar', 'Kasper', 'Kastíel', 'Katarínus', 'Kató', 'Kár', 'Kári', 'Keran', 'Ketilbjörn', 'Ketill', 'Kilían', 'Kiljan', 'Kjalar', 'Kjallakur', 'Kjaran', 'Kjartan', 'Kjarval', 'Kjárr', 'Kjói', 'Klemens', 'Klemenz', 'Klængur', 'Knútur', 'Knörr', 'Koðrán', 'Koggi', 'Kolbeinn', 'Kolbjörn', 'Kolfinnur', 'Kolgrímur', 'Kolmar', 'Kolskeggur', 'Kolur', 'Kolviður', 'Konráð', 'Konstantínus', 'Kormákur', 'Kornelíus', 'Kort', 'Kópur', 'Kraki', 'Kris', 'Kristall', 'Kristberg', 'Kristbergur', 'Kristbjörn', 'Kristdór', 'Kristens', 'Krister', 'Kristfinnur', 'Kristgeir', 'Kristian', 'Kristinn', 'Kristján', 'Kristjón', 'Kristlaugur', 'Kristleifur', 'Kristmann', 'Kristmar', 'Kristmundur', 'Kristofer', 'Kristófer', 'Kristvaldur', 'Kristvarður', 'Kristvin', 'Kristþór', 'Krummi', 'Kveldúlfur', 'Lambert', 'Lars', 'Laufar', 'Laugi', 'Lauritz', 'Lár', 'Lárent', 'Lárentíus', 'Lárus', 'Leiðólfur', 'Leif', 'Leifur', 'Leiknir', 'Leo', 'Leon', 'Leonard', 'Leonhard', 'Leó', 'Leópold', 'Leví', 'Lér', 'Liljar', 'Lindar', 'Lindberg', 'Línberg', 'Líni', 'Ljósálfur', 'Ljótur', 'Ljúfur', 'Loðmundur', 'Loftur', 'Logi', 'Loki', 'Lórens', 'Lórenz', 'Ludvig', 'Lundi', 'Lúðvíg', 'Lúðvík', 'Lúkas', 'Lúter', 'Lúther', 'Lyngar', 'Lýður', 'Lýtingur', 'Maggi', 'Magngeir', 'Magni', 'Magnús', 'Magnþór', 'Makan', 'Manfred', 'Manfreð', 'Manúel', 'Mar', 'Marbjörn', 'Marel', 'Margeir', 'Margrímur', 'Mari', 'Marijón', 'Marinó', 'Marías', 'Marínó', 'Marís', 'Maríus', 'Marjón', 'Markó', 'Markús', 'Markþór', 'Maron', 'Marri', 'Mars', 'Marsellíus', 'Marteinn', 'Marten', 'Marthen', 'Martin', 'Marvin', 'Mathías', 'Matthías', 'Matti', 'Mattías', 'Max', 'Maximus', 'Máni', 'Már', 'Márus', 'Mekkinó', 'Melkíor', 'Melkólmur', 'Melrakki', 'Mensalder', 'Merkúr', 'Methúsalem', 'Metúsalem', 'Meyvant', 'Michael', 'Mikael', 'Mikjáll', 'Mikkael', 'Mikkel', 'Mildinberg', 'Mías', 'Mímir', 'Míó', 'Mír', 'Mjöllnir', 'Mjölnir', 'Moli', 'Morgan', 'Moritz', 'Mosi', 'Móði', 'Móri', 'Mórits', 'Móses', 'Muggur', 'Muni', 'Muninn', 'Múli', 'Myrkvi', 'Mýrkjartan', 'Mörður', 'Narfi', 'Natan', 'Natanael', 'Nataníel', 'Náttmörður', 'Náttúlfur', 'Neisti', 'Nenni', 'Neptúnus', 'Nicolas', 'Nikanor', 'Nikolai', 'Nikolas', 'Nikulás', 'Nils', 'Níels', 'Níls', 'Njáll', 'Njörður', 'Nonni', 'Norbert', 'Norðmann', 'Normann', 'Nóam', 'Nóel', 'Nói', 'Nóni', 'Nóri', 'Nóvember', 'Númi', 'Nývarð', 'Nökkvi', 'Oddbergur', 'Oddbjörn', 'Oddfreyr', 'Oddgeir', 'Oddi', 'Oddkell', 'Oddleifur', 'Oddmar', 'Oddsteinn', 'Oddur', 'Oddvar', 'Oddþór', 'Oktavíus', 'Októ', 'Októvíus', 'Olaf', 'Olav', 'Olgeir', 'Oliver', 'Olivert', 'Orfeus', 'Ormar', 'Ormur', 'Orri', 'Orvar', 'Otkell', 'Otri', 'Otti', 'Ottó', 'Otur', 'Óðinn', 'Ófeigur', 'Ólafur', 'Óli', 'Óliver', 'Ólíver', 'Ómar', 'Ómi', 'Óskar', 'Ósvald', 'Ósvaldur', 'Ósvífur', 'Óttar', 'Óttarr', 'Parmes', 'Patrek', 'Patrekur', 'Patrick', 'Patrik', 'Páll', 'Pálmar', 'Pálmi', 'Pedró', 'Per', 'Peter', 'Pétur', 'Pjetur', 'Príor', 'Rafael', 'Rafn', 'Rafnar', 'Rafnkell', 'Ragnar', 'Ragúel', 'Randver', 'Rannver', 'Rasmus', 'Ráðgeir', 'Ráðvarður', 'Refur', 'Reginbaldur', 'Reginn', 'Reidar', 'Reifnir', 'Reimar', 'Reinar', 'Reinhart', 'Reinhold', 'Reynald', 'Reynar', 'Reynir', 'Reyr', 'Richard', 'Rikharð', 'Rikharður', 'Ríkarður', 'Ríkharð', 'Ríkharður', 'Ríó', 'Robert', 'Rolf', 'Ronald', 'Róbert', 'Rólant', 'Róman', 'Rómeó', 'Rósant', 'Rósar', 'Rósberg', 'Rósenberg', 'Rósi', 'Rósinberg', 'Rósinkar', 'Rósinkrans', 'Rósmann', 'Rósmundur', 'Rudolf', 'Runi', 'Runólfur', 'Rúbar', 'Rúben', 'Rúdólf', 'Rúnar', 'Rúrik', 'Rútur', 'Röðull', 'Rögnvald', 'Rögnvaldur', 'Rögnvar', 'Rökkvi', 'Safír', 'Sakarías', 'Salmann', 'Salmar', 'Salómon', 'Salvar', 'Samson', 'Samúel', 'Sandel', 'Sandri', 'Sandur', 'Saxi', 'Sebastian', 'Sebastían', 'Seifur', 'Seimur', 'Sesar', 'Sesil', 'Sigbergur', 'Sigbert', 'Sigbjartur', 'Sigbjörn', 'Sigdór', 'Sigfastur', 'Sigfinnur', 'Sigfreður', 'Sigfús', 'Siggeir', 'Sighvatur', 'Sigjón', 'Siglaugur', 'Sigmann', 'Sigmar', 'Sigmundur', 'Signar', 'Sigri', 'Sigríkur', 'Sigsteinn', 'Sigtryggur', 'Sigtýr', 'Sigur', 'Sigurbaldur', 'Sigurberg', 'Sigurbergur', 'Sigurbjarni', 'Sigurbjartur', 'Sigurbjörn', 'Sigurbrandur', 'Sigurdór', 'Sigurður', 'Sigurfinnur', 'Sigurgeir', 'Sigurgestur', 'Sigurgísli', 'Sigurgrímur', 'Sigurhans', 'Sigurhjörtur', 'Sigurjón', 'Sigurkarl', 'Sigurlaugur', 'Sigurlás', 'Sigurleifur', 'Sigurliði', 'Sigurlinni', 'Sigurmann', 'Sigurmar', 'Sigurmon', 'Sigurmundur', 'Sigurnýas', 'Sigurnýjas', 'Siguroddur', 'Siguróli', 'Sigurpáll', 'Sigursteinn', 'Sigursveinn', 'Sigurvaldi', 'Sigurvin', 'Sigurþór', 'Sigvaldi', 'Sigvarður', 'Sigþór', 'Silli', 'Sindri', 'Símon', 'Sírnir', 'Sírus', 'Sívar', 'Sjafnar', 'Skafti', 'Skapti', 'Skarphéðinn', 'Skefill', 'Skeggi', 'Skíði', 'Skírnir', 'Skjöldur', 'Skorri', 'Skuggi', 'Skúli', 'Skúta', 'Skær', 'Skæringur', 'Smári', 'Smiður', 'Smyrill', 'Snjóki', 'Snjólaugur', 'Snjólfur', 'Snorri', 'Snæbjartur', 'Snæbjörn', 'Snæhólm', 'Snælaugur', 'Snær', 'Snæringur', 'Snævar', 'Snævarr', 'Snæþór', 'Soffanías', 'Sophanías', 'Sophus', 'Sófónías', 'Sófus', 'Sókrates', 'Sólberg', 'Sólbergur', 'Sólbjartur', 'Sólbjörn', 'Sólimann', 'Sólmar', 'Sólmundur', 'Sólon', 'Sólver', 'Sólvin', 'Spartakus', 'Sporði', 'Spói', 'Stanley', 'Stapi', 'Starkaður', 'Starri', 'Stefan', 'Stefán', 'Stefnir', 'Steinar', 'Steinarr', 'Steinberg', 'Steinbergur', 'Steinbjörn', 'Steindór', 'Steinfinnur', 'Steingrímur', 'Steini', 'Steinkell', 'Steinmann', 'Steinmar', 'Steinmóður', 'Steinn', 'Steinólfur', 'Steinröður', 'Steinvarður', 'Steinþór', 'Stirnir', 'Stígur', 'Stormur', 'Stórólfur', 'Sturla', 'Sturlaugur', 'Sturri', 'Styr', 'Styrbjörn', 'Styrkár', 'Styrmir', 'Styrr', 'Sumarliði', 'Svafar', 'Svali', 'Svan', 'Svanberg', 'Svanbergur', 'Svanbjörn', 'Svangeir', 'Svanhólm', 'Svani', 'Svanlaugur', 'Svanmundur', 'Svanur', 'Svanþór', 'Svavar', 'Sváfnir', 'Sveinar', 'Sveinberg', 'Sveinbjartur', 'Sveinbjörn', 'Sveinjón', 'Sveinlaugur', 'Sveinmar', 'Sveinn', 'Sveinungi', 'Sveinþór', 'Svend', 'Sverre', 'Sverrir', 'Svölnir', 'Svörfuður', 'Sýrus', 'Sæberg', 'Sæbergur', 'Sæbjörn', 'Sæi', 'Sælaugur', 'Sæmann', 'Sæmundur', 'Sær', 'Sævald', 'Sævaldur', 'Sævar', 'Sævarr', 'Sævin', 'Sæþór', 'Sölmundur', 'Sölvar', 'Sölvi', 'Sören', 'Sörli', 'Tandri', 'Tarfur', 'Teitur', 'Theodór', 'Theódór', 'Thomas', 'Thor', 'Thorberg', 'Thór', 'Tindar', 'Tindri', 'Tindur', 'Tinni', 'Tími', 'Tímon', 'Tímoteus', 'Tímóteus', 'Tístran', 'Tjaldur', 'Tjörfi', 'Tjörvi', 'Tobías', 'Tolli', 'Tonni', 'Torfi', 'Tóbías', 'Tói', 'Tóki', 'Tómas', 'Tór', 'Trausti', 'Tristan', 'Trostan', 'Trúmann', 'Tryggvi', 'Tumas', 'Tumi', 'Tyrfingur', 'Týr', 'Ubbi', 'Uggi', 'Ulrich', 'Uni', 'Unnar', 'Unnbjörn', 'Unndór', 'Unnsteinn', 'Unnþór', 'Urðar', 'Uxi', 'Úddi', 'Úlfar', 'Úlfgeir', 'Úlfhéðinn', 'Úlfkell', 'Úlfljótur', 'Úlftýr', 'Úlfur', 'Úlrik', 'Úranus', 'Vagn', 'Vakur', 'Valberg', 'Valbergur', 'Valbjörn', 'Valbrandur', 'Valdemar', 'Valdi', 'Valdimar', 'Valdór', 'Valentín', 'Valentínus', 'Valgarð', 'Valgarður', 'Valgeir', 'Valíant', 'Vallaður', 'Valmar', 'Valmundur', 'Valsteinn', 'Valter', 'Valtýr', 'Valur', 'Valves', 'Valþór', 'Varmar', 'Vatnar', 'Váli', 'Vápni', 'Veigar', 'Veigur', 'Ver', 'Vermundur', 'Vernharð', 'Vernharður', 'Vestar', 'Vestmar', 'Veturliði', 'Vébjörn', 'Végeir', 'Vékell', 'Vélaugur', 'Vémundur', 'Vésteinn', 'Victor', 'Viðar', 'Vigfús', 'Viggó', 'Vignir', 'Vigri', 'Vigtýr', 'Vigur', 'Vikar', 'Viktor', 'Vilberg', 'Vilbergur', 'Vilbert', 'Vilbjörn', 'Vilbogi', 'Vilbrandur', 'Vilgeir', 'Vilhelm', 'Vilhjálmur', 'Vili', 'Viljar', 'Vilji', 'Villi', 'Vilmar', 'Vilmundur', 'Vincent', 'Vinjar', 'Virgill', 'Víðar', 'Víðir', 'Vífill', 'Víglundur', 'Vígmar', 'Vígmundur', 'Vígsteinn', 'Vígþór', 'Víkingur', 'Vopni', 'Vorm', 'Vöggur', 'Völundur', 'Vörður', 'Vöttur', 'Walter', 'Werner', 'Wilhelm', 'Willard', 'William', 'Willum', 'Ylur', 'Ymir', 'Yngvar', 'Yngvi', 'Yrkill', 'Ýmir', 'Ýrar', 'Zakaría', 'Zakarías', 'Zophanías', 'Zophonías', 'Zóphanías', 'Zóphonías', 'Þangbrandur', 'Þengill', 'Þeyr', 'Þiðrandi', 'Þiðrik', 'Þinur', 'Þjálfi', 'Þjóðann', 'Þjóðbjörn', 'Þjóðgeir', 'Þjóðleifur', 'Þjóðmar', 'Þjóðólfur', 'Þjóðrekur', 'Þjóðvarður', 'Þjóstar', 'Þjóstólfur', 'Þorberg', 'Þorbergur', 'Þorbjörn', 'Þorbrandur', 'Þorfinnur', 'Þorgarður', 'Þorgautur', 'Þorgeir', 'Þorgestur', 'Þorgils', 'Þorgísl', 'Þorgnýr', 'Þorgrímur', 'Þorkell', 'Þorlaugur', 'Þorlákur', 'Þorleifur', 'Þorleikur', 'Þormar', 'Þormóður', 'Þormundur', 'Þorri', 'Þorsteinn', 'Þorvaldur', 'Þorvar', 'Þorvarður', 'Þór', 'Þórar', 'Þórarinn', 'Þórbergur', 'Þórbjörn', 'Þórður', 'Þórgnýr', 'Þórgrímur', 'Þórhaddur', 'Þórhalli', 'Þórhallur', 'Þórir', 'Þórlaugur', 'Þórleifur', 'Þórlindur', 'Þórmar', 'Þórmundur', 'Þóroddur', 'Þórormur', 'Þórólfur', 'Þórsteinn', 'Þórörn', 'Þrastar', 'Þráinn', 'Þrándur', 'Þróttur', 'Þrúðmar', 'Þrymur', 'Þröstur', 'Þyrnir', 'Ægir', 'Æsir', 'Ævar', 'Ævarr', 'Ögmundur', 'Ögri', 'Ölnir', 'Ölver', 'Ölvir', 'Öndólfur', 'Önundur', 'Örlaugur', 'Örlygur', 'Örn', 'Örnólfur', 'Örvar', 'Össur', 'Öxar']; - - /** - * @var array Icelandic middle names. - */ - protected static $middleName = [ - 'Aðaldal', 'Aldan', 'Arnberg', 'Arnfjörð', 'Austan', 'Austdal', 'Austfjörð', 'Áss', 'Bakkdal', 'Bakkmann', 'Bald', 'Ben', 'Bergholt', 'Bergland', 'Bíldsfells', 'Bjarg', 'Bjarndal', 'Bjarnfjörð', 'Bláfeld', 'Blómkvist', 'Borgdal', 'Brekkmann', 'Brim', 'Brúnsteð', 'Dalhoff', 'Dan', 'Diljan', 'Ektavon', 'Eldberg', 'Elísberg', 'Elvan', 'Espólín', 'Eyhlíð', 'Eyvík', 'Falk', 'Finndal', 'Fossberg', 'Freydal', 'Friðhólm', 'Giljan', 'Gilsfjörð', 'Gnarr', 'Gnurr', 'Grendal', 'Grindvík', 'Gull', 'Haffjörð', 'Hafnes', 'Hafnfjörð', 'Har', 'Heimdal', 'Heimsberg', 'Helgfell', 'Herberg', 'Hildiberg', 'Hjaltdal', 'Hlíðkvist', 'Hnappdal', 'Hnífsdal', 'Hofland', 'Hofteig', 'Hornfjörð', 'Hólmberg', 'Hrafnan', 'Hrafndal', 'Hraunberg', 'Hreinberg', 'Hreindal', 'Hrútfjörð', 'Hvammdal', 'Hvítfeld', 'Höfðdal', 'Hörðdal', 'Íshólm', 'Júl', 'Kjarrval', 'Knaran', 'Knarran', 'Krossdal', 'Laufkvist', 'Laufland', 'Laugdal', 'Laxfoss', 'Liljan', 'Linddal', 'Línberg', 'Ljós', 'Loðmfjörð', 'Lyngberg', 'Magdal', 'Magg', 'Matt', 'Miðdal', 'Miðvík', 'Mjófjörð', 'Móberg', 'Mýrmann', 'Nesmann', 'Norðland', 'Núpdal', 'Ólfjörð', 'Ósland', 'Ósmann', 'Reginbald', 'Reykfell', 'Reykfjörð', 'Reynholt', 'Salberg', 'Sandhólm', 'Seljan', 'Sigurhólm', 'Skagalín', 'Skíðdal', 'Snæberg', 'Snædahl', 'Sólan', 'Stardal', 'Stein', 'Steinbekk', 'Steinberg', 'Storm', 'Straumberg', 'Svanhild', 'Svarfdal', 'Sædal', 'Val', 'Valagils', 'Vald', 'Varmdal', 'Vatnsfjörð', 'Vattar', 'Vattnes', 'Viðfjörð', 'Vídalín', 'Víking', 'Vopnfjörð', 'Yngling', 'Þor', 'Önfjörð', 'Örbekk', 'Öxdal', 'Öxndal', - ]; - - /** - * Randomly return an Icelandic middle name. - * - * @return string - */ - public static function middleName() - { - return static::randomElement(static::$middleName); - } - - /** - * Generate prepared last name for further processing. - * - * @return string - */ - public function lastName() - { - $name = static::firstNameMale(); - - if (substr($name, -2) === 'ur') { - $name = substr($name, 0, strlen($name) - 2); - } - - if (substr($name, -1) !== 's') { - $name .= 's'; - } - - return $name; - } - - /** - * Randomly return an Icelandic last name for a woman. - * - * @return string - */ - public function lastNameMale() - { - return $this->lastName() . 'son'; - } - - /** - * Randomly return an Icelandic last name for a man. - * - * @return string - */ - public function lastNameFemale() - { - return $this->lastName() . 'dóttir'; - } - - /** - * Return a random Icelandic Kennitala (Social Security number). - * - * @see http://en.wikipedia.org/wiki/Kennitala - * - * @return string - */ - public static function ssn() - { - // random birth date - $birthdate = DateTime::dateTimeThisCentury(); - - // last four buffer - $lastFour = null; - - // security variable reference - $ref = '32765432'; - - // valid flag - $valid = false; - - while (!$valid) { - // make two random numbers - $rand = static::randomDigit() . static::randomDigit(); - - // 8 char string with birth date and two random numbers - $tmp = $birthdate->format('dmy') . $rand; - - // loop through temp string - for ($i = 7, $sum = 0; $i >= 0; --$i) { - // calculate security variable - $sum += ($tmp[$i] * $ref[$i]); - } - - // subtract 11 if not 11 - $chk = ($sum % 11 === 0) ? 0 : (11 - ($sum % 11)); - - if ($chk < 10) { - $lastFour = $rand . $chk . substr($birthdate->format('Y'), 1, 1); - - $valid = true; - } - } - - return sprintf('%s-%s', $birthdate->format('dmy'), $lastFour); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/is_IS/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/is_IS/PhoneNumber.php deleted file mode 100644 index 7118666..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/is_IS/PhoneNumber.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Argovia'], - ['AI' => 'Appenzello Interno'], - ['AR' => 'Appenzello Esterno'], - ['BE' => 'Berna'], - ['BL' => 'Basilea Campagna'], - ['BS' => 'Basilea Città'], - ['FR' => 'Friburgo'], - ['GE' => 'Ginevra'], - ['GL' => 'Glarona'], - ['GR' => 'Grigioni'], - ['JU' => 'Giura'], - ['LU' => 'Lucerna'], - ['NE' => 'Neuchâtel'], - ['NW' => 'Nidvaldo'], - ['OW' => 'Obvaldo'], - ['SG' => 'San Gallo'], - ['SH' => 'Sciaffusa'], - ['SO' => 'Soletta'], - ['SZ' => 'Svitto'], - ['TG' => 'Turgovia'], - ['TI' => 'Ticino'], - ['UR' => 'Uri'], - ['VD' => 'Vaud'], - ['VS' => 'Vallese'], - ['ZG' => 'Zugo'], - ['ZH' => 'Zurigo'], - ]; - - protected static $cityFormats = [ - '{{cityName}}', - ]; - - protected static $streetNameFormats = [ - '{{streetSuffix}} {{firstName}}', - '{{streetSuffix}} {{lastName}}', - ]; - - protected static $streetAddressFormats = [ - '{{streetName}} {{buildingNumber}}', - ]; - protected static $addressFormats = [ - "{{streetAddress}}\n{{postcode}} {{city}}", - ]; - - /** - * Returns a random street prefix - * - * @example Via - * - * @return string - */ - public static function streetPrefix() - { - return static::randomElement(static::$streetPrefix); - } - - /** - * Returns a random city name. - * - * @example Luzern - * - * @return string - */ - public function cityName() - { - return static::randomElement(static::$cityNames); - } - - /** - * Returns a canton - * - * @example array('BE' => 'Bern') - * - * @return array - */ - public static function canton() - { - return static::randomElement(static::$canton); - } - - /** - * Returns the abbreviation of a canton. - * - * @return string - */ - public static function cantonShort() - { - $canton = static::canton(); - - return key($canton); - } - - /** - * Returns the name of canton. - * - * @return string - */ - public static function cantonName() - { - $canton = static::canton(); - - return current($canton); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/it_CH/Company.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/it_CH/Company.php deleted file mode 100644 index bb5f946..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/it_CH/Company.php +++ /dev/null @@ -1,15 +0,0 @@ -generator->parse($format); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ja_JP/Company.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ja_JP/Company.php deleted file mode 100644 index 0e4b88d..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ja_JP/Company.php +++ /dev/null @@ -1,17 +0,0 @@ -generator->parse($format)); - } - - /** - * @example 'yamada.jp' - */ - public function domainName() - { - return static::randomElement(static::$lastNameAscii) . '.' . $this->tld(); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ja_JP/Person.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ja_JP/Person.php deleted file mode 100644 index 399e559..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ja_JP/Person.php +++ /dev/null @@ -1,147 +0,0 @@ -generator->parse($format); - } - - /** - * @param string|null $gender 'male', 'female' or null for any - * - * @return string - * - * @example 'アキラ' - */ - public function firstKanaName($gender = null) - { - if ($gender === static::GENDER_MALE) { - return static::firstKanaNameMale(); - } - - if ($gender === static::GENDER_FEMALE) { - return static::firstKanaNameFemale(); - } - - return $this->generator->parse(static::randomElement(static::$firstKanaNameFormat)); - } - - /** - * @example 'アキラ' - */ - public static function firstKanaNameMale() - { - return static::randomElement(static::$firstKanaNameMale); - } - - /** - * @example 'アケミ' - */ - public static function firstKanaNameFemale() - { - return static::randomElement(static::$firstKanaNameFemale); - } - - /** - * @example 'アオタ' - */ - public static function lastKanaName() - { - return static::randomElement(static::$lastKanaName); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ja_JP/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ja_JP/PhoneNumber.php deleted file mode 100644 index 1e0595e..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ja_JP/PhoneNumber.php +++ /dev/null @@ -1,19 +0,0 @@ -generator->parse($format); - } - - public static function companyPrefix() - { - return static::randomElement(static::$companyPrefixes); - } - - public static function companyNameElement() - { - return static::randomElement(static::$companyElements); - } - - public static function companyNameSuffix() - { - return static::randomElement(static::$companyNameSuffixes); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ka_GE/DateTime.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ka_GE/DateTime.php deleted file mode 100644 index 375c32a..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ka_GE/DateTime.php +++ /dev/null @@ -1,43 +0,0 @@ - 'კვირა', - 'Monday' => 'ორშაბათი', - 'Tuesday' => 'სამშაბათი', - 'Wednesday' => 'ოთხშაბათი', - 'Thursday' => 'ხუთშაბათი', - 'Friday' => 'პარასკევი', - 'Saturday' => 'შაბათი', - ]; - $week = static::dateTime($max)->format('l'); - - return $map[$week] ?? $week; - } - - public static function monthName($max = 'now') - { - $map = [ - 'January' => 'იანვარი', - 'February' => 'თებერვალი', - 'March' => 'მარტი', - 'April' => 'აპრილი', - 'May' => 'მაისი', - 'June' => 'ივნისი', - 'July' => 'ივლისი', - 'August' => 'აგვისტო', - 'September' => 'სექტემბერი', - 'October' => 'ოქტომბერი', - 'November' => 'ნოემბერი', - 'December' => 'დეკემბერი', - ]; - $month = static::dateTime($max)->format('F'); - - return $map[$month] ?? $month; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ka_GE/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ka_GE/Internet.php deleted file mode 100644 index d07e41c..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ka_GE/Internet.php +++ /dev/null @@ -1,15 +0,0 @@ -generator->parse($format); - } - - public static function companyPrefix() - { - return static::randomElement(static::$companyPrefixes); - } - - public static function companyNameElement() - { - return static::randomElement(static::$companyElements); - } - - public static function companyNameSuffix() - { - return static::randomElement(static::$companyNameSuffixes); - } - - /** - * National Business Identification Numbers - * - * @see http://egov.kz/wps/portal/Content?contentPath=%2Fegovcontent%2Fbus_business%2Ffor_businessmen%2Farticle%2Fbusiness_identification_number&lang=en - * - * @return string 12 digits, like 150140000019 - */ - public static function businessIdentificationNumber(?\DateTime $registrationDate = null) - { - if (!$registrationDate) { - $registrationDate = \Faker\Provider\DateTime::dateTimeThisYear(); - } - - $dateAsString = $registrationDate->format('ym'); - $legalEntityType = (string) self::numberBetween(4, 6); - $legalEntityAdditionalType = (string) self::numberBetween(0, 3); - $randomDigits = (string) static::numerify('######'); - - return $dateAsString . $legalEntityType . $legalEntityAdditionalType . $randomDigits; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/Internet.php deleted file mode 100644 index 0328da0..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - self::CENTURY_19TH => self::MALE_CENTURY_19TH, - self::CENTURY_20TH => self::MALE_CENTURY_20TH, - self::CENTURY_21ST => self::MALE_CENTURY_21ST, - ], - self::GENDER_FEMALE => [ - self::CENTURY_19TH => self::FEMALE_CENTURY_19TH, - self::CENTURY_20TH => self::FEMALE_CENTURY_20TH, - self::CENTURY_21ST => self::FEMALE_CENTURY_21ST, - ], - ]; - - /** - * @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F - * - * @var array - */ - protected static $maleNameFormats = [ - '{{lastName}}ұлы {{firstNameMale}}', - ]; - - /** - * @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F - * - * @var array - */ - protected static $femaleNameFormats = [ - '{{lastName}}қызы {{firstNameFemale}}', - ]; - - /** - * @see http://koshpendi.kz/index.php/nomad/imena/ - * - * @var array - */ - protected static $firstNameMale = [ - 'Аылғазы', - 'Әбдіқадыр', - 'Бабағожа', - 'Ғайса', - 'Дәмен', - 'Егізбек', - 'Жазылбек', - 'Зұлпықар', - 'Игісін', - 'Кәдіржан', - 'Қадырқан', - 'Латиф', - 'Мағаз', - 'Нармағамбет', - 'Оңалбай', - 'Өндіріс', - 'Пердебек', - 'Рақат', - 'Сағындық', - 'Танабай', - 'Уайыс', - 'Ұйықбай', - 'Үрімбай', - 'Файзрахман', - 'Хангелді', - 'Шаттық', - 'Ыстамбақы', - 'Ібни', - ]; - - /** - * @see http://koshpendi.kz/index.php/nomad/imena/ - * - * @var array - */ - protected static $firstNameFemale = [ - 'Асылтас', - 'Әужа', - 'Бүлдіршін', - 'Гүлшаш', - 'Ғафура', - 'Ділдә', - 'Еркежан', - 'Жібек', - 'Зылиқа', - 'Ирада', - 'Күнсұлу', - 'Қырмызы', - 'Ләтипа', - 'Мүштәри', - 'Нұршара', - 'Орынша', - 'Өрзия', - 'Перизат', - 'Рухия', - 'Сындыбала', - 'Тұрсынай', - 'Уәсима', - 'Ұрқия', - 'Үрия', - 'Фируза', - 'Хафиза', - 'Шырынгүл', - 'Ырысты', - 'Іңкәр', - ]; - - /** - * @see http://koshpendi.kz/index.php/nomad/imena/ - * @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F - * - * @var array - */ - protected static $lastName = [ - 'Адырбай', - 'Әжібай', - 'Байбөрі', - 'Ғизат', - 'Ділдабек', - 'Ешмұхамбет', - 'Жігер', - 'Зікірия', - 'Иса', - 'Кунту', - 'Қыдыр', - 'Лұқпан', - 'Мышырбай', - 'Нысынбай', - 'Ошақбай', - 'Өтетілеу', - 'Пірәлі', - 'Рүстем', - 'Сырмұхамбет', - 'Тілеміс', - 'Уәлі', - 'Ұлықбек', - 'Үстем', - 'Фахир', - 'Хұсайын', - 'Шілдебай', - 'Ыстамбақы', - 'Ісмет', - ]; - - /** - * Note! When calculating individual identification number - * 2000-01-01 - 2000-12-31 counts as 21th century - * 1900-01-01 - 1900-12-31 counts as 20th century - * - * @param int $year - * - * @return int - */ - private static function getCenturyByYear($year) - { - if (($year >= 2100) || ($year < 1800)) { - throw new \InvalidArgumentException('Unexpected century'); - } - - if ($year >= 2000) { - return self::CENTURY_21ST; - } - - if ($year >= 1900) { - return self::CENTURY_20TH; - } - - return self::CENTURY_19TH; - } - - /** - * National Individual Identification Numbers - * - * @see http://egov.kz/wps/portal/Content?contentPath=%2Fegovcontent%2Fcitizen_migration%2Fpassport_id_card%2Farticle%2Fiin_info&lang=en - * @see https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80 - * - * @param int $gender - * - * @return string 12 digits, like 780322300455 - */ - public static function individualIdentificationNumber(?\DateTime $birthDate = null, $gender = self::GENDER_MALE) - { - if (!$birthDate) { - $birthDate = DateTime::dateTimeBetween(); - } - - do { - $population = self::numberBetween(1000, 2000); - $century = self::getCenturyByYear((int) $birthDate->format('Y')); - - $iin = $birthDate->format('ymd'); - $iin .= (string) self::$genderCenturyMap[$gender][$century]; - $iin .= (string) $population; - $checksum = self::checkSum($iin); - } while ($checksum === 10); - - return $iin . (string) $checksum; - } - - /** - * @param string $iinValue - * - * @return int - */ - public static function checkSum($iinValue) - { - $controlDigit = self::getControlDigit($iinValue, self::$firstSequenceBitWeights); - - if ($controlDigit === 10) { - return self::getControlDigit($iinValue, self::$secondSequenceBitWeights); - } - - return $controlDigit; - } - - /** - * @param string $iinValue - * @param array $sequence - * - * @return int - */ - protected static function getControlDigit($iinValue, $sequence) - { - $sum = 0; - - for ($i = 0; $i <= 10; ++$i) { - $sum += (int) $iinValue[$i] * $sequence[$i]; - } - - return $sum % 11; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/PhoneNumber.php deleted file mode 100644 index c5d6440..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/kk_KZ/PhoneNumber.php +++ /dev/null @@ -1,16 +0,0 @@ -generator->parse($format)); - } - - /** - * @example 'kim.kr' - */ - public function domainName() - { - return static::randomElement(static::$lastNameAscii) . '.' . $this->tld(); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ko_KR/Person.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ko_KR/Person.php deleted file mode 100644 index 71f6175..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ko_KR/Person.php +++ /dev/null @@ -1,54 +0,0 @@ -generator->parse($format)); - } - - public function cellPhoneNumber() - { - $format = self::randomElement(array_slice(static::$formats, 6, 1)); - - return self::numerify($this->generator->parse($format)); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ko_KR/Text.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ko_KR/Text.php deleted file mode 100644 index 8182f89..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ko_KR/Text.php +++ /dev/null @@ -1,1725 +0,0 @@ -에 나오는 요귀의 불빛 모양으로 푸르무레 하게 허공을 비추오. 동경의 불바다는 내 마음을 더욱 음침하게 하였소. -이 때에 뒤에서, -"모시모시(여보세요)." -하는 소리가 들렸소. 그것은 흰 저고리를 입은 호텔 보이였소. -"왜?" -하고 나는 고개만 돌렸소. -"손님이 오셨습니다." -"손님?" -하고 나는 보이에게로 한 걸음 가까이 갔소. 나를 찾을 손님이 어디 있나 하고 나는 놀란 것이오. -"따님께서 오셨습니다. 방으로 모셨습니다." -하고 보이는 들어가 버리고 말았소. -"따님?" -하고 나는 더욱 놀랐소. 순임이가 서울서 나를 따라왔나? 그것은 안 될 말이오. 순임이가 내 뒤를 따라 떠났더라도 아무리 빨리 와도 내일이 아니면 못 왔을 것이오. 그러면 누군가. 정임인가. 정임이가 병원에서 뛰어온 것인가. -나는 두근거리는 가슴을 억지로 진정하면서 내 방문을 열었소. -그것은 정임이었소. 정임은 내가 쓰다가 둔 편지를 보고 있다가 벌떡 일어나 내게 달려들어 안겨 버렸소. 나는 얼빠진 듯이 정임이가 하라는 대로 내버려두었소. 그 편지는 부치려고 쓴 것도 아닌데 그 편지를 정임이가 본 것이 안되었다고 생각하였소. -형! 나를 책망하시오. 심히 부끄러운 말이지마는 나는 정임을 힘껏 껴안아 주고 싶었소. 나는 몇 번이나 정임의 등을 굽어 보면서 내 팔에 힘을 넣으려고 하였소. 정임은 심히 귀여웠소. 정임이가 그처럼 나를 사모하는 것이 심히 기뻤소. 나는 감정이 재우쳐서 눈이 안 보이고 정신이 몽롱하여짐을 깨달았소. 나는 아프고 쓰린 듯한 기쁨을 깨달았소. 영어로 엑스터시라든지, 한문으로 무아의 경지란 이런 것이 아닌가 하였소. 나는 사십 평생에 이러한 경험을 처음 한 것이오. -형! 형이 아시다시피 나는 내 아내 이외에 젊은 여성에게 이렇게 안겨 본 일이 없소. 물론 안아 본 일도 없소. -그러나 형! 나는 나를 눌렀소. 내 타오르는 애욕을 차디찬 이지의 입김으로 불어서 끄려고 애를 썼소. -"글쎄 웬일이냐. 앓는 것이 이 밤중에 비를 맞고 왜 나온단 말이냐. 철없는 것 같으니." -하고 나는 아버지의 위엄으로 정임의 두 어깨를 붙들어 암체어에 앉혔소. 그리고 나도 테이블을 하나 세워 두고 맞은편에 앉았소. -정임은 부끄러운 듯이 두 손으로 낯을 가리우고 제 무릎에 엎드려 울기를 시작하오. -정임은 누런 갈색의 외투를 입었소. 무엇을 타고 왔는지 모르지마는 구두에는 꽤 많이 물이 묻고 모자에는 빗방울 얼룩이 보이오. -"네가 이러다가 다시 병이 더치면 어찌한단 말이냐. 아이가 왜 그렇게 철이 없니?" -하고 나는 더욱 냉정한 어조로 책망하고 데스크 위에 놓인 내 편지 초를 집어 박박 찢어 버렸소. 종이 찢는 소리에 정임은 잠깐 고개를 들어서 처음에는 내 손을 보고 다음에는 내 얼굴을 보았소. 그러나 나는 모르는 체하고 도로 교의에 돌아와 앉아서 가만히 눈을 감았소. 그리고 도무지 흥분되지 아니한 모양을 꾸몄소. -형! 어떻게나 힘드는 일이오? 참으면 참을수록 내 이빨이 마주 부딪고, 얼굴의 근육은 씰룩거리고 손은 불끈불끈 쥐어지오. -"정말 내일 가세요?" -하고 아마 오 분 동안이나 침묵을 지키다가 정임이가 고개를 들고 물었소. -"그럼, 가야지." -하고 나는 빙그레 웃어 보였소. -"저도 데리고 가세요!" -하는 정임의 말은 마치 서릿발이 날리는 칼날과 같았소. 나는 깜짝 놀라서 정임을 바라보았소. 그의 눈은 빛나고 입은 꼭 다물고 얼굴의 근육은 팽팽하게 켕겼소. 정임의 얼굴에는 찬바람이 도는 무서운 기운이 있었소. -나는 즉각적으로 죽기를 결심한 여자의 모양이라고 생각하였소. 열정으로 불덩어리가 되었던 정임은 내가 보이는 냉랭한 태도로 말미암아 갑자기 얼어 버린 것 같았소. -"어디를?" -하고 나는 정임의 `저도 데리고 가세요.' 하는 담대한 말에 놀라면서 물었소. -"어디든지, 아버지 가시는 데면 어디든지 저를 데리고 가세요. 저는 아버지를 떠나서는 혼자서는 못 살 것을 지나간 반 달 동안에 잘 알았습니다. 아까 아버지 오셨다 가신 뒤에 생각해 보니깐 암만해도 아버지는 다시 저에게 와 보시지 아니하고 가실 것만 같애요. 그리고 저로 해서 아버지께서는 무슨 큰 타격을 당하신 것만 같으셔요. 처음 뵈올 적에 벌써 가슴이 뜨끔했습니다. 그리고 여행을 떠나신다는 말씀을 듣고는 반드시 무슨 큰일이 나셨느니라고만 생각했습니다. 그리고 저어, 저로 해서 그러신 것만 같고, 저를 버리시고 혼자 가시려는 것만 같고, 그래서 달려왔더니 여기 써 놓으신 편지를 보고 그 편지에 다른 말씀은 어찌 됐든지, 네 일기를 보았다 하신 말씀을 보고는 다 알았습니다. 저와 한 방에 있는 애가 암만해도 어머니 스파인가봐요. 제가 입원하기 전에도 제 눈치를 슬슬 보고 또 책상 서랍도 뒤지는 눈치가 보이길래 일기책은 늘 쇠 잠그는 서랍에 넣어 두었는데 아마 제가 정신 없이 앓고 누웠는 동안에 제 핸드백에서 쇳대를 훔쳐 갔던가봐요. 그래서는 그 일기책을 꺼내서 서울로 보냈나봐요. 그걸루 해서 아버지께서는 불명예스러운 누명을 쓰시고 학교일도 내놓으시게 되고 집도 떠나시게 되셨나봐요. 다시는 집에 안 돌아오실 양으로 결심을 하셨나봐요. 아까 병원에서도 하시는 말씀이 모두 유언하시는 것만 같아서 퍽 의심을 가졌었는데 지금 그 쓰시던 편지를 보고는 다 알았습니다. 그렇지만 그렇지만." -하고 웅변으로 내려 말하던 정임은 갑자기 복받치는 열정을 이기지 못하는 듯이, 한 번 한숨을 지우고, -"그렇지만 저는 아버지를 따라가요. 절루 해서 아버지께서는 집도 잃으시고 명예도 잃으시고 사업도 잃으시고 인생의 모든 것을 다 잃으셨으니 저는 아버지를 따라가요. 어디를 가시든지 저는 어린 딸로 아버지를 따라다니다가 아버지께서 먼저 돌아가시면 저도 따라 죽어서 아버지 발 밑에 묻힐 테야요. 제가 먼저 죽거든 제가 병이 있으니깐 물론 제가 먼저 죽지요. 죽어도 좋습니다. 병원에서 앓다가 혼자 죽는 건 싫어요. 아버지 곁에서 죽으면 아버지께서, 오 내 딸 정임아 하시고 귀해 주시고 불쌍히 여겨 주시겠지요. 그리고 제 몸을 어디든지 땅에 묻으시고 `사랑하는 내 딸 정임의 무덤'이라고 패라도 손수 쓰셔서 세워 주시지 않겠습니까." -하고 정임은 비쭉비쭉하다가 그만 무릎 위에 엎더져 울고 마오. -나는 다만 죽은 사람 모양으로 반쯤 눈을 감고 앉아 있었소. 가슴 속에는 정임의 곁에서 지지 않는 열정을 품으면서도 정임의 말대로 정임을 데리고 아무도 모르는 곳으로 가 버리고 싶으면서도 나는 이 열정의 불길을 내 입김으로 꺼 버리지 아니하면 아니 되는 것이었소. -"아아, 제가 왜 났어요? 왜 하나님께서 저를 세상에 보내셨어요? 아버지의 일생을 파멸시키려 난 것이지요? 제가 지금 죽어 버려서 아버지의 명예를 회복할 수 있다면 저는 죽어 버릴 터이야요. 기쁘게 죽어 버리겠습니다. 제가 여덟 살부터 오늘날까지 받은 은혜를 제 목숨 하나로 갚을 수가 있다면 저는 지금으로 죽어 버리겠습니다. 그렇지만 그렇지만……. -그렇지만 그렇지만 저는 다만 얼마라도 다만 하루라도 아버지 곁에서 살고 싶어요 다만 하루만이라도, 아버지! 제가 왜 이렇습니까, 네? 제가 어려서 이렇습니까. 미친 년이 되어서 이렇습니까. 아버지께서는 아실 테니 말씀해 주세요. 하루만이라도 아버지를 모시고 아버지 곁에서 살았으면 죽어도 한이 없겠습니다. 제 생각이 잘못이야요? 제 생각이 죄야요? 왜 죄입니까? 아버지, 저를 버리시고 혼자 가시지 마세요, 네? `정임아, 너를 데리고 가마.' 하고 약속해 주세요, 네." -정임은 아주 담대하게 제가 하고자 하는 말을 다 하오. 그 얌전한, 수삽한정임의 속에 어디 그러한 용기가 있었던가, 참 이상한 일이오. 나는 귀여운 어린 계집애 정임의 속에 엉큼한 여자가 들어앉은 것을 발견하였소. 그가 몇 가지 재료(내가 여행을 떠난다는 것과 제 일기를 보았다는 것)를 종합하여 나와 저와의 새에, 또 그 때문에 어떠한 일이 일어난 것을 추측하는 그 상상력도 놀랍거니와 그렇게 내 앞에서는 별로 입도 벌리지 아니하던 그가 이처럼 담대하게 제 속에 있는 말을 거리낌없이 다 해 버리는 용기를 아니 놀랄 수 없었소. 내가, 사내요 어른인 내가 도리어 정임에게 리드를 받고 놀림을 받음을 깨달았소. -그러나 정임을 위해서든지, 중년 남자의 위신을 위해서든지 나는 의지력으로, 도덕력으로, 정임을 누르고 훈계하지 아니하면 아니 되겠다고 생각하였소. -"정임아." -하고 나는 비로소 입을 열어서 불렀소. 내 어성은 장중하였소. 나는 할 수 있는 위엄을 다하여 `정임아.' 하고 부른 것이오. -"정임아, 네 속은 다 알았다. 네 마음 네 뜻은 그만하면 다 알았다. 네가 나를 그처럼 생각해 주는 것을 고맙게 생각한다. 기쁘게도 생각한다. 그러나 정임아." -하고 나는 일층 태도와 소리를 엄숙하게 하여, -"네가 청하는 말은 절대로 들을 수 없는 말이다. 내가 너를 친딸같이 사랑하기 때문에 나는 너를 데리고 가지 못하는 것이다. 나는 세상에서 죽고 조선에서 죽더라도 너는 죽어서 아니 된다. 차마 너까지는 죽이고 싶지 아니하단 말이다. 내가 어디 가서 없어져 버리면 세상은 네게 씌운 누명이 애매한 줄을 알게 될 것이 아니냐. 그리되면 너는 조선의 좋은 일꾼이 되어서 일도 많이 하고 또 사랑하는 남편을 맞아서 행복된 생활도 할 수 있을 것이 아니냐. 그것이 내가 네게 바라는 것이다. 내가 어디 가 있든지, 내가 살아 있는 동안 나는 네가 잘되는 것만, 행복되게 사는 것만 바라보고 혼자 기뻐할 것이 아니냐. -네가 다 옳게 알았다. 나는 네 말대로 조선을 영원히 떠나기로 하였다. 그렇지마는 나는 이렇게 된 것을 조금도 슬퍼하지 아니한다. 너를 위해서 내가 무슨 희생을 한다고 하면 내게는 그것이 큰 기쁨이다. 그뿐 아니라, 나는 인제는 세상이 싫어졌다. 더 살기가 싫어졌다. 내가 십여 년 동안 전생명을 바쳐서 교육한 학생들에게까지 배척을 받을 때에는 나는 지금까지 살아온 것을 생각만 하여도 진저리가 난다. 그렇지마는 나는 이것이 다 내가 부족한 때문인 줄을 잘 안다. 나는 조선을 원망한다든가, 내 동포를 원망한다든가, 그럴 생각은 없다. 원망을 한다면 나 자신의 부족을 원망할 뿐이다. 내가 원체 교육을 한다든지 남의 지도자가 된다든지 할 자격이 없음을 원망한다면 원망할까, 내가 어떻게 조선이나 조선 사람을 원망하느냐. 그러니까 인제 내게 남은 일은 나를 조선에서 없애 버리는 것이다. 감히 십여 년 간 교육가라고 자처해 오던 거짓되고 외람된 생활을 끊어 버리는 것이다. 남편 노릇도 못 하고 아버지 노릇도 못 하는 사람이 남의 스승은 어떻게 되고 지도자는 어떻게 되느냐. 하니까 나는 이제 세상을 떠나 버리는 것이 조금도 슬프지 아니하고 도리어 몸이 가뜬하고 유쾌해지는 것 같다. -오직 하나 마음에 걸리는 것은 내 선배요 사랑하는 동지이던 남 선생의 유일한 혈육이던 네게다가 누명을 씌우고 가는 것이다." -"그게 어디 아버지 잘못입니까?" -하고 정임은 입술을 깨물었소. -"모두 제가 철이 없어서 저 때문에……." -하고 정임은 몸을 떨고 울었소. -"아니! 그렇게 생각하지 마라. 내가 지금 세상을 버릴 때에 무슨 기쁨이 한 가지 남는 것이 있다고 하면 너 하나가, 이 세상에서 오직 너 하나가 나를 따라 주는 것이다. 아마 너도 나를 잘못 알고 따라 주는 것이겠지마는 세상이 다 나를 버리고, 처자까지도 다 나를 버릴 때에 오직 너 하나가 나를 소중히 알아 주니 어찌 고맙지 않겠느냐. 그러니까 정임아 너는 몸을 조심하여서 건강을 회복하여서 오래 잘 살고, 그리고 나를 생각해 다오." -하고 나도 울었소. -형! 내가 정임에게 이런 말을 한 것이 잘못이지요. 그러나 나는 그 때에 이런 말을 아니 할 수 없었소. 왜 그런고 하니, 그것이 내 진정이니까. 나도 학교 선생으로, 교장으로, 또 주제넘게 지사로의 일생을 보내노라고 마치 오직 얼음 같은 의지력만 가진 사람 모양으로 사십 평생을 살아 왔지마는 내 속에도 열정은 있었던 것이오. 다만 그 열정을 누르고 죽이고 있었을 뿐이오. 물론 나는 아마 일생에 이 열정의 고삐를 놓아 줄 날이 없겠지요. 만일 내가 이 열정의 고삐를 놓아서 자유로 달리게 한다고 하면 나는 이 경우에 정임을 안고, 내 열정으로 정임을 태워 버렸을는지도 모르오. 그러나 나는 정임이가 열정으로 탈수록 나는 내 열정의 고삐를 두 손으로 꽉 붙들고 이를 악물고 매달릴 결심을 한 것이오. -열한 시! -"정임아. 인제 병원으로 가거라." -하고 나는 엄연하게 명령하였소. -"내일 저를 보시고 떠나시지요?" -하고 정임은 눈물을 씻고 물었소. -"그럼, J조교수도 만나고 너도 보고 떠나지." -하고 나는 거짓말을 하였소. 이 경우에 내가 거짓말쟁이라는 큰 죄인이 되는 것이 정임에게 대하여 정임을 위하여 가장 옳은 일이라고 생각한 까닭이오. -정임은, 무서운 직각력과 상상력을 가진 정임은 내 말의 진실성을 의심하는 듯이 나를 뚫어지게 바라보았소. 나는 차마 정임의 시선을 마주 보지 못하여 외면하여 버렸소. -정임은 수건으로 눈물을 씻고 체경 앞에 가서 화장을 고치고 그리고, -"저는 가요." -하고 내 앞에 허리를 굽혀서 작별 인사를 하였소. -"오, 가 자거라." -하고 나는 극히 범연하게 대답하였소. 나는 자리옷을 입었기 때문에 현관까지 작별할 수도 없어서 보이를 불러 자동차를 하나 준비하라고 명하고 내 방에서 작별할 생각을 하였소. -"내일 병원에 오세요?" -하고 정임은 고개를 숙이고 낙루하였소. -"오, 가마." -하고 나는 또 거짓말을 하였소. 세상을 버리기로 결심한 사람의 거짓말은 하나님께서도 용서하시겠지요. 설사 내가 거짓말을 한 죄로 지옥에 간다 하더라도 이 경우에 정임을 위하여 거짓말을 아니 할 수가 없지 않소? 내가 거짓말을 아니 하면 정임은 아니 갈 것이 분명하였소. -"전 가요." -하고 정임은 또 한 번 절을 하였으나 소리를 내어서 울었소. -"울지 마라! 몸 상한다." -하고 나는 정임에게 대한 최후의 친절을 정임의 곁에 한 걸음 가까이 가서 어깨를 또닥또닥하여 주고, 외투를 입혀 주었소. -"안녕히 주무세요." -하고 정임은 문을 열고 나가 버렸소. -정임의 걸어가는 소리가 차차 멀어졌소. -나는 얼빠진 사람 모양으로 그 자리에 우두커니 서 있었소. -창에 부딪히는 빗발 소리가 들리고 자동차 소리가 먼 나라에서 오는 것같이 들리오. 이것이 정임이가 타고 가는 자동차 소리인가. 나는 정임을 따라가서 붙들어 오고 싶었소. 내 몸과 마음은 정임을 따라서 허공에 떠가는 것 같았소. -아아 이렇게 나는 정임을 곁에 두고 싶을까. 이렇게 내가 정임의 곁에 있고 싶을까. 그러하건마는 나는 정임을 떼어 버리고 가지 아니하면 아니 된다! 그것은 애끓는 일이다. 기막히는 일이다! 그러나 내 도덕적 책임은 엄정하게 그렇게 명령하지 않느냐. 나는 이 도덕적 책임의 명령 그것은 더위가 없는 명령이다 을 털끝만치라도 휘어서는 아니 된다. -그러나 정임이가 호텔 현관까지 자동차를 타기 전에 한 번만 더 바라보는 것도 못 할 일일까. 한 번만, 잠깐만 더 바라보는 것도 못 할 일일까. 잠깐만 일 분만 아니 일 초만 한 시그마라는 극히 짧은 동안만 바라보는 것도 못 할 일일까. 아니, 정임을 한 시그마 동안만 더 보고 싶다 나는 이렇게 생각하고 벌떡 일어나서 도어의 핸들에 손을 대었소. -`안 된다! 옳잖다!' -하고 나는 내 소파에 돌아와서 털썩 몸을 던졌소. -`최후의 순간이 아니냐. 최후의 순간에 용감히 이겨야 할 것이 아니냐. 아서라! 아서라!' -하고 나는 혼자 주먹을 불끈불끈 쥐었소. -이 때에 짜박짜박 하고 걸어오는 소리가 들리오. 내 가슴은 쌍방망이로 두들기는 것같이 뛰었소. -`설마 정임일까.' -하면서도 나는 숨을 죽이고 귀를 기울였소. -그 발자국 소리는 분명 내 문 밖에 와서 그쳤소. 그리고는 소리가 없었소. -`내 귀의 환각인가.' -하고 나는 한숨을 내쉬었소. -그러나 다음 순간 또 두어 번 문을 두드리는 소리가 들렸소. -"이에스." -하고 나는 대답하고 문을 바라보았소. -문이 열렸소. -들어오는 이는 정임이었소. -"웬일이냐." -하고 나는 엄숙한 태도를 지었소. 그것으로 일 초의 일천분지 일이라도 다시 한 번 보고 싶던 정임을 보고 기쁨을 카무플라주한 것이오. -정임은 서슴지 않고 내 뒤에 와서 내 교의에 몸을 기대며, -"암만해도 오늘이 마지막인 것만 같아서, 다시 뵈올 기약은 없는 것만 같아서 가다가 도로 왔습니다. 한 번만 더 뵙고 갈 양으로요. 그래 도로 와서도 들어올까 말까 하고 주저주저하다가 이것이 마지막인데 하고 용기를 내어서 들어왔습니다. 내일 저를 보시고 가신다는 것이 부러 하신 말씀만 같고, 마지막 뵈옵고, 뵈온대도 그래도 한 번 더 뵈옵기만 해도……." -하고 정임의 말은 끝을 아물지 못하였소. 그는 내 등 뒤에 서 있기 때문에 그가 어떠한 표정을 하고 있는지는 볼 수가 없었소. 나는 다만 아버지의 위엄으로 정면을 바라보고 있었을 뿐이오. -`정임아, 나도 네가 보고 싶었다. 네 뒤를 따라가고 싶었다. 내 몸과 마음은 네 뒤를 따라서 허공으로 날았다. 나는 너를 한 초라도 한 초의 천분지 일 동안이라도 한 번 더 보고 싶었다. 정임아, 내 진정은 너를 언제든지 내 곁에 두고 싶다. 정임아, 지금 내 생명이 가진 것은 오직 너뿐이다.' -이런 말이라도 하고 싶었소. 그러나 이런 말을 하여서는 아니 되오! 만일 내가 이런 말을 하여 준다면 정임이가 기뻐하겠지요. 그러나 나는 정임이에게 이런 기쁨을 주어서는 아니 되오! -나는 어디까지든지 아버지의 위엄, 아버지의 냉정함을 아니 지켜서는 아니 되오. -그렇지마는 내 가슴에 타오르는 이름지을 수 없는 열정의 불길은 내 이성과 의지력을 태워 버리려 하오. 나는 눈이 아뜩아뜩함을 깨닫소. 나는 내 생명의 불길이 깜박깜박함을 깨닫소. -그렇지마는! 아아 그렇지마는 나는 이 도덕적 책임의 무상 명령의 발령자인 쓴 잔을 마시지 아니하여서는 아니 되는 것이오. -`산! 바위!' -나는 정신을 가다듬어서 이것을 염하였소. -그러나 열정의 파도가 치는 곳에 산은 움직이지 아니하오? 바위는 흔들리지 아니하오? 태산과 반석이 그 흰 불길에 타서 재가 되지는 아니하오? 인생의 모든 힘 가운데 열정보다 더 폭력적인 것이 어디 있소? 아마도 우주의 모든 힘 가운데 사람의 열정과 같이 폭력적, 불가항력적인 것은 없으리라. 뇌성, 벽력, 글쎄 그것에나 비길까. 차라리 천체와 천체가 수학적으로 계산할 수 없는 비상한 속력을 가지고 마주 달려들어서 우리의 귀로 들을 수 없는 큰 소리와 우리가 굳다고 일컫는 금강석이라도 증기를 만들고야 말 만한 열을 발하는 충돌의 순간에나 비길까. 형. 사람이라는 존재가 우주의 모든 존재 중에 가장 비상한 존재인 것 모양으로 사람의 열정의 힘은 우주의 모든 신비한 힘 가운데 가장 신비한 힘이 아니겠소? 대체 우주의 모든 힘은 그것이 아무리 큰 힘이라고 하더라도 저 자신을 깨뜨리는 것은 없소. 그렇지마는 사람이라는 존재의 열정은 능히 제 생명을 깨뜨려 가루를 만들고 제 생명을 살라서 소지를 올리지 아니하오? 여보, 대체 이에서 더 폭력이요, 신비적인 것이 어디 있단 말이오. -이 때 내 상태, 어깨 뒤에서 열정으로 타고 섰는 정임을 느끼는 내 상태는 바야흐로 대폭발, 대충돌을 기다리는 아슬아슬한 때가 아니었소. 만일 조금만이라도 내가 내 열정의 고삐에 늦춤을 준다고 하면 무서운 대폭발이 일어났을 것이오. -"정임아!" -하고 나는 충분히 마음을 진정해 가지고 고개를 옆으로 돌려 정임의 얼굴을 찾았소. -"네에." -하고 정임은 입을 약간 내 귀 가까이로 가져와서 그 씨근거리는 소리가 분명히 내 귀에 들리고 그 후끈후끈하는 뜨거운 입김이 내 목과 뺨에 감각되었소. -억지로 진정하였던 내 가슴은 다시 설레기를 시작하였소. 그 불규칙한 숨소리와 뜨거운 입김 때문이었을까. -"시간 늦는다. 어서 가거라. 이 아버지는 언제까지든지 너를 사랑하는 딸 로 소중히 소중히 가슴에 품고 있으마. 또 후일에 다시 만날 때도 있을지 아느냐. 설사 다시 만날 때가 없다기로니 그것이 무엇이 그리 대수냐. 나이 많은 사람은 먼저 죽고 젊은 사람은 오래 살아서 인생의 일을 많이 하는 것이 순서가 아니냐. 너는 몸이 아직 약하니 마음을 잘 안정해서 어서 건강을 회복하여라. 그리고 굳세게 굳세게, 힘있게 힘있게 살아 다오. 조선은 사람을 구한다. 나 같은 사람은 인제 조선서 더 일할 자격을 잃어버린 사람이지마는 네야 어떠냐. 설사 누가 무슨 말을 해서 학교에서 학비를 아니 준다거든 내가 네게 준 재산을 가지고 네 마음대로 공부를 하려무나. 네가 그렇게 해 주어야 나를 위하는 것이다. 자 인제 가거라. 네 앞길이 양양하지 아니하냐. 자 인제 가거라. 나는 내일 아침 동경을 떠날란다. 자 어서." -하고 나는 화평하게 웃는 낯으로 일어섰소. -정임은 울먹울먹하고 고개를 숙이오. -밖에서는 바람이 점점 강해져서 소리를 하고 유리창을 흔드오. -"그럼, 전 가요." -하고 정임은 고개를 들었소. -"그래. 어서 가거라. 벌써 열한시 반이다. 병원 문은 아니 닫니!" -정임은 대답이 없소. -"어서!" -하고 나는 보이를 불러 자동차를 하나 준비하라고 일렀소. -"갈랍니다." -하고 정임은 고개를 숙여서 내게 인사를 하고 문을 향하여 한 걸음 걷다가 잠깐 주저하더니, 다시 돌아서서, -"저를 한 번만 안아 주셔요. 아버지가 어린 딸을 안듯이 한 번만 안아 주셔요." -하고 내 앞으로 가까이 와 서오. -나는 팔을 벌려 주었소. 정임은 내 가슴을 향하고 몸을 던졌소. 그리고 제 이뺨 저뺨을 내 가슴에 대고 비볐소. 나는 두 팔을 정임의 어깨 위에 가벼이 놓았소. -이러한 지 몇 분이 지났소. 아마 일 분도 다 못 되었는지 모르오. -정임은 내 가슴에서 고개를 들어 나를 뚫어지게 우러러보더니, 다시 내 가슴에 낯을 대더니 아마 내 심장이 무섭게 뛰는 소리를 정임은 들었을 것이오 정임은 다시 고개를 들고, -"어디를 가시든지 편지나 주셔요." -하고 굵은 눈물을 떨구고는 내게서 물러서서 또 한 번 절하고, -"안녕히 가셔요. 만주든지 아령이든지 조선 사람 많이 사는 곳에 가셔서 일하고 사셔요. 돌아가실 생각은 마셔요. 제가, 아버지 말씀대로 혼자 떨어져 있으니 아버지도 제 말씀대로 돌아가실 생각은 마셔요, 네, 그렇다고 대답하셔요!" -하고는 또 한 번 내 가슴에 몸을 기대오. -죽기를 결심한 나는 `오냐, 그러마.' 하는 대답을 할 수는 없었소. 그래서, -"오, 내 살도록 힘쓰마." -하는 약속을 주어서 정임을 돌려보냈소. -정임의 발자국 소리가 안 들리게 된 때에 나는 빠른 걸음으로 옥상 정원으로 나갔소. 비가 막 뿌리오. -나는 정임이가 타고 나가는 자동차라도 볼 양으로 호텔 현관 앞이 보이는 꼭대기로 올라갔소. 현관을 떠난 자동차 하나가 전찻길로 나서서는 북을 향하고 달아나서 순식간에 그 꽁무니에 달린 붉은 불조차 스러져 버리고 말았소. -나는 미친 사람 모양으로, -"정임아, 정임아!" -하고 수없이 불렀소. 나는 사 층이나 되는 이 꼭대기에서 뛰어내려서 정임이가 타고 간 자동차의 뒤를 따르고 싶었소. -"아아 영원한 인생의 이별!" -나는 그 옥상에 얼마나 오래 섰던지를 모르오. 내 머리와 낯과 배스로브에서는 물이 흐르오. 방에 들어오니 정임이가 끼치고 간 향기와 추억만 남았소. -나는 방 안 구석구석에 정임의 모양이 보이는 것을 깨달았소. 특별히 정임이가 고개를 숙이고 서 있던 내 교의 뒤에는 분명히 갈색 외투를 입은 정임의 모양이 완연하오. -"정임아!" -하고 나는 그 곳으로 따라가오. 그러나 가면 거기는 정임은 없소. -나는 교의에 앉소. 그러면 정임의 씨근씨근하는 숨소리와 더운 입김이 분명 내 오른편에 감각이 되오. 아아 무서운 환각이여! -나는 자리에 눕소. 그리고 정임의 환각을 피하려고 불을 끄오. 그러면 정임이가 내게 안기던 자리쯤에 환하게 정임의 모양이 나타나오. -나는 불을 켜오. 또 불을 끄오. -날이 밝자 나는 비가 갠 것을 다행으로 비행장에 달려가서 비행기를 얻어 탔소. -나는 다시 조선의 하늘을 통과하기가 싫어서 북강에서 비행기에서 내려서 문사에 와서 대련으로 가는 배를 탔소. -나는 대련에서 내려서 하룻밤을 여관에서 자고는 곧 장춘 가는 급행을 탔소. 물론 아무에게도 엽서 한 장 한 일 없었소. 그것은 인연을 끊은 세상에 대하여 연연한 마음을 가지는 것을 부끄럽게 생각한 까닭이오. -차가 옛날에는 우리 조상네가 살고 문화를 짓던 옛 터전인 만주의 벌판을 달릴 때에는 감회도 없지 아니하였소. 그러나 나는 지금 그런 한가한 감상을 쓸 겨를이 없소. -내가 믿고 가는 곳은 하얼빈에 있는 어떤 친구요. 그는 R라는 사람으로서 경술년에 A씨 등의 망명객을 따라 나갔다가 아라사에서 무관 학교를 졸업하고 아라사 사관으로서 구주 대전에도 출정을 하였다가, 혁명 후에도 이내 적위군에 머물러서 지금까지 소비에트 장교로 있는 사람이오. 지금은 육군 소장이라던가. -나는 하얼빈에 그 사람을 찾아가는 것이오. 그 사람을 찾아야 아라사에 들어갈 여행권을 얻을 것이요, 여행권을 얻어야 내가 평소에 이상하게도 그리워하던 바이칼 호를 볼 것이오. -하얼빈에 내린 것은 해가 뉘엿뉘엿 넘어가는 석양이었소. -나는 안중근이 이등박문(伊藤博文:이토 히로부미)을 쏜 곳이 어딘가 하고 벌판과 같이 넓은 플랫폼에 내렸소. 과연 국제 도시라 서양 사람, 중국 사람, 일본 사람이 각기 제 말로 지껄이오. 아아 조선 사람도 있을 것이오마는 다들 양복을 입거나 청복을 입거나 하고 또 사람이 많은 곳에서는 말도 잘 하지 아니하여 아무쪼록 조선 사람인 것을 표시하지 아니하는 판이라 그 골격과 표정을 살피기 전에는 어느 것이 조선 사람인지 알 길이 없소. 아마 허름하게 차리고 기운 없이, 비창한 빛을 띠고 사람의 눈을 슬슬 피하는 저 순하게 생긴 사람들이 조선 사람이겠지요. 언제나 한 번 가는 곳마다 동양이든지, 서양이든지, -`나는 조선 사람이오!' -하고 뽐내고 다닐 날이 있을까 하면 눈물이 나오. 더구나, 하얼빈과 같은 각색 인종이 모여서 생존 경쟁을 하는 마당에 서서 이런 비감이 간절하오. 아아 이 불쌍한 유랑의 무리 중에 나도 하나를 더 보태는가 하면 눈물을 씻지 아니할 수 없었소. -나는 역에서 나와서 어떤 아라사 병정 하나를 붙들고 R의 아라사 이름을 불렀소. 그리고 아느냐고 영어로 물었소. -그 병정은 내 말을 잘못 알아들었는지, 또는 R를 모르는지 무엇이라고 아라사말로 지껄이는 모양이나 나는 물론 그것을 알아들을 수가 없었소. 그러나 나는 그 병정의 표정에서 내게 호의를 가진 것을 짐작하고 한 번 더 분명히, -"요십 알렉산드로비치 리가이." -라고 불러 보았소. -그 병정은 빙그레 웃고 고개를 흔드오. 이 두 외국 사람의 이상한 교섭에 흥미를 가지고 여러 아라사 병정과 동양 사람들이 십여 인이나 우리 주위에 모여드오. -그 병정이 나를 바라보고 또 한 번 그 이름을 불러 보라는 모양 같기로 나는 이번에는 R의 아라사 이름에 `제너럴'이라는 말을 붙여 불러 보았소. -그랬더니 어떤 다른 병정이 뛰어들며, -"게네라우 리가이!" -하고 안다는 표정을 하오. `게네라우'라는 것이 아마 아라사말로 장군이란 말인가 하였소. -"예스. 예스." -하고 나는 기쁘게 대답하였소. 그리고는 아라사 병정들끼리 무에라고 지껄이더니, 그 중에 한 병정이 나서면서 고개를 끄덕끄덕하고, 제가 마차 하나를 불러서 나를 태우고 저도 타고 어디로 달려가오. -그 아라사 병정은 친절히 알지도 못하는 말로 이것저것을 가리키면서 설명을 하더니 내가 못 알아듣는 줄을 생각하고 내 어깨를 툭 치고 웃소. 어린애와 같이 순한 사람들이구나 하고 나는 고맙다는 표로 고개만 끄덕끄덕하였소. -어디로 어떻게 가는지 서양 시가로 달려가다가 어떤 큰 저택 앞에 이르러서 마차를 그 현관 앞으로 들이몰았소. -현관에서는 종졸이 나왔소. 내가 명함을 들여보냈더니 부관인 듯한 아라사 장교가 나와서 나를 으리으리한 응접실로 인도하였소. 얼마 있노라니 중년이 넘은 어떤 대장이 나오는데 군복에 칼끈만 늘였소. -"이게 누구요." -하고 그 대장은 달려들어서 나를 껴안았소. 이십오 년 만에 만나는 우리는 서로 알아본 것이오. -이윽고 나는 그의 부인과 자녀들도 만났소. 그들은 다 아라사 사람이오. -저녁이 끝난 뒤에 나는 R의 부인과 딸의 음악과 그림 구경과 기타의 관대를 받고 단둘이 이야기할 기회를 얻었소. 경술년 당시 이야기도 나오고, A씨의 이야기도 나오고, R의 신세 타령도 나오고, 내 이십오 년 간의 생활 이야기도 나오고, 소비에트 혁명 이야기도 나오고, 하얼빈 이야기도 나오고, 우리네가 어려서 서로 사귀던 회구담도 나오고 이야기가 그칠 바를 몰랐소. "조선은 그립지 않은가." -하는 내 말에 쾌활하던 R는 고개를 숙이고 추연한 빛을 보였소. -나는 R의 추연한 태도를 아마 고국을 그리워하는 것으로만 여겼소. 그래서 나는 그리 침음하는 것을 보고, -"얼마나 고국이 그립겠나. 나는 고국을 떠난 지가 일 주일도 안 되건마는 못 견디게 그리운데." -하고 동정하는 말을 하였소. -했더니, 이 말 보시오. 그는 침음을 깨뜨리고 고개를 번쩍 들며, -"아니! 나는 고국이 조금도 그립지 아니하이. 내가 지금 생각한 것은 자네 말을 듣고 고국이 그리운가 그리워할 것이 있는가를 생각해 본 것일세. 그랬더니 아무리 생각하여도 나는 고국이 그립다는 생각을 가질 수가 없어. 그야 어려서 자라날 때에 보던 강산이라든지 내 기억에 남은 아는 사람들이라든지, 보고 싶다 하는 생각도 없지 아니하지마는 그것이 고국이 그리운 것이라고 할 수가 있을까. 그 밖에는 나는 아무리 생각하여도 고국이 그리운 것을 찾을 길이 없네. 나도 지금 자네를 보고 또 자네 말을 듣고 오래 잊어버렸던 고국을 좀 그립게, 그립다 하게 생각하려고 해 보았지마는 도무지 나는 고국이 그립다는 생각이 나지 않네." -이 말에 나는 깜짝 놀랐소. 몸서리치게 무서웠소. 나는 해외에 오래 표랑하는 사람은 으레 고국을 그리워할 것으로 믿고 있었소. 그런데 이 사람이, 일찍은 고국을 사랑하여 목숨까지도 바치려던 이 사람이 도무지 이처럼 고국을 잊어버린다는 것은 놀라운 정도를 지나서 괘씸하기 그지없었소. 나도 비록 조선을 떠난다고, 영원히 버린다고 나서기는 했지마는 나로는 죽기 전에는 아니 비록 죽더라도 잊어버리지 못할 고국을 잊어버린 R의 심사가 난측하고 원망스러웠소. -"고국이 그립지가 않아?" -하고 R에게 묻는 내 어성에는 격분한 빛이 있었소. -"이상하게 생각하시겠지. 하지만 고국에 무슨 그리울 것이 있단 말인가. 그 빈대 끓는 오막살이가 그립단 말인가. 나무 한 개 없는 산이 그립단 말인가. 물보다도 모래가 많은 다 늙어빠진 개천이 그립단 말인가. 그 무기력하고 가난한, 시기 많고 싸우고 하는 그 백성을 그리워한단 말인가. 그렇지 아니하면 무슨 그리워할 음악이 있단 말인가, 미술이 있단 말인가, 문학이 있단 말인가, 사상이 있단 말인가, 사모할 만한 인물이 있단 말인가! 날더러 고국의 무엇을 그리워하란 말인가. 나는 조국이 없는 사람일세. 내가 소비에트 군인으로 있으니 소비에트가 내 조국이겠지. 그러나 진심으로 내 조국이라는 생각은 나지 아니하네." -하고 저녁 먹을 때에 약간 붉었던 R의 얼굴은 이상한 흥분으로 더욱 붉어지오.유 정유 정 -R는 먹던 담배를 화나는 듯이 재떨이에 집어던지며, -"내가 하얼빈에 온 지가 인제 겨우 삼사 년밖에 안 되지마는 조선 사람 때문에 나는 견딜 수가 없어. 와서 달라는 것도 달라는 것이지마는 조선 사람이 또 어찌하였느니 또 어찌하였느니 하는 불명예한 말을 들을 때에는 나는 금시에 죽어 버리고 싶단 말일세. 내게 가장 불쾌한 것이 있다고 하면 그것은 고국이라는 기억과 조선 사람의 존잴세. 내가 만일 어느 나라의 독재자가 된다고 하면 나는 첫째로 조선인 입국 금지를 단행하려네. 만일 조선이라는 것을 잊어버릴 약이 있다고 하면 나는 생명과 바꾸어서라도 사 먹고 싶어." -하고 R는 약간 흥분된 어조를 늦추어서, -"나도 모스크바에 있다가 처음 원동에 나왔을 적에는 길을 다녀도 혹시 동포가 눈에 뜨이지나 아니하나 하고 찾았네. 그래서 어디서든지 동포를 만나면 반가이 손을 잡았지. 했지만 점점 그들은 오직 귀찮은 존재에 지나지 못하다는 것을 알았단 말일세. 인제는 조선 사람이라고만 하면 만나기가 무섭고 끔찍끔찍하고 진저리가 나는 걸 어떡허나. 자네 명함이 들어온 때에도 조선 사람인가 하고 가슴이 뜨끔했네." -하고 R는 웃지도 아니하오. 그의 얼굴에는, 군인다운 기운찬 얼굴에는 증오와 분노의 빛이 넘쳤소. -"나도 자네 집에 환영받는 나그네는 아닐세그려." -하고 나는 이 견디기 어려운 불쾌하고 무서운 공기를 완화하기 위하여 농담삼아 한 마디를 던지고 웃었소. -나는 R의 말이 과격함에 놀랐지마는, 또 생각하면 R가 한 말 가운데는 들을 만한 이유도 없지 아니하오. 그것을 생각할 때에 나는 R를 괘씸하게 생각하기 전에 내가 버린다는 조선을 위하여서 가슴이 아팠소. 그렇지만 이제 나 따위가 가슴을 아파한대야 무슨 소용이 있소. 조선에 남아 계신 형이나 R의 말을 참고삼아 쓰시기 바라오. 어쨌으나 나는 R에게서 목적한 여행권을 얻었소. R에게는 다만, -`나는 피곤한 몸을 좀 정양하고 싶다. 나는 내가 평소에 즐겨하는 바이칼 호반에서 눈과 얼음의 한겨울을 지내고 싶다.' -는 것을 여행의 이유로 삼았소. -R는 나의 초췌한 모양을 짐작하고 내 핑계를 그럴듯하게 아는 모양이었소. 그리고 나더러, `이왕 정양하려거든 카프카 지방으로 가거라. 거기는 기후 풍경도 좋고 또 요양원의 설비도 있다.'는 것을 말하였소. 나도 톨스토이의 소설에서, 기타의 여행기 등속에서 이 지방에 관한 말을 못 들은 것이 아니나 지금 내 처지에는 그런 따뜻하고 경치 좋은 지방을 가릴 여유도 없고 또 그러한 지방보다도 눈과 얼음과 바람의 시베리아의 겨울이 합당한 듯하였소. -그러나 나는 R의 호의를 굳이 사양할 필요도 없어서 그가 써 주는 대로 소개장을 다 받아 넣었소. 그는 나를 처남 매부 간이라고 소개해 주었소. -나는 모스크바 가는 다음 급행을 기다리는 사흘 동안 R의 집의 손이 되어서 R부처의 친절한 대우를 받았소. -그 후에는 나는 R와 조선에 관한 토론을 한 일은 없지마는 R가 이름지어 말을 할 때에는 조선을 잊었노라, 그리워할 것이 없노라, 하지마는 무의식적으로 말을 할 때에는 조선을 못 잊고 또 조선을 여러 점으로 그리워하는 양을 보았소. 나는 그것으로써 만족하게 여겼소. -나는 금요일 오후 세시 모스크바 가는 급행으로 하얼빈을 떠났소. 역두에는 R와 R의 가족이 나와서 꽃과 과일과 여러 가지 선물로 나를 전송하였소. R와 R의 가족은 나를 정말 형제의 예로 대우하여 차가 떠나려 할 때에 포옹과 키스로 작별하여 주었소. -이 날은 퍽 따뜻하고 일기가 좋은 날이었소. 하늘에 구름 한 점, 땅에 바람 한 점 없이 마치 늦은 봄날과 같이 따뜻한 날이었소. -차는 떠났소. 판다는 둥 안 판다는 둥 말썽 많은 동중로(지금은 북만 철로라고 하오.)의 국제 열차에 몸을 의탁한 것이오. -송화강(松花江:쑹화 강)의 철교를 건너오. 아아 그리도 낯익은 송화강! 송화강이 왜 낯이 익소. 이 송화강은 불함산(장백산)에 근원을 발하여 광막한 북만주의 사람도 없는 벌판을 혼자 소리도 없이 흘러가는 것이 내 신세와 같소. 이 북만주의 벌판을 만든 자가 송화강이지마는 나는 그만한 힘이 없는 것이 부끄러울 뿐이오. 이 광막한 북만의 벌판을 내 손으로 개척하여서 조선 사람의 낙원을 만들자 하고 뽐내어 볼까. 그것은 형이 하시오. 내 어린것이 자라거든 그놈에게나 그러한 생각을 넣어 주시오. -동양의 국제적 괴물인 하얼빈 시가도 까맣게 안개에서 스러져 버리고 말았소. 그러나 그 시가를 싼 까만 기운이 국제적 풍운을 포장한 것이라고 할까요. -가도가도 벌판. 서리맞은 마른 풀바다. 실개천 하나도 없는 메마른 사막. 어디를 보아도 산 하나 없으니 하늘과 땅이 착 달라붙은 듯한 천지. 구름 한 점 없건만도 그 큰 태양 가지고도 미처 다 비추지 못하여 지평선 호를 그린 지평선 위에는 항상 황혼이 떠도는 듯한 세계. 이 속으로 내가 몸을 담은 열차는 서쪽으로 서쪽으로 해가 가는 걸음을 따라서 달리고 있소. 열차가 달리는 바퀴 소리도 반향할 곳이 없어 힘없는 한숨같이 스러지고 마오. -기쁨 가진 사람이 지루해서 못 견딜 이 풍경은 나같이 수심 가진 사람에게는 가장 공상의 말을 달리기에 합당한 곳이오. -이 곳에도 산도 있고 냇물도 있고 삼림도 있고 꽃도 피고 날짐승, 길짐승이 날고 기던 때도 있었겠지요. 그러던 것이 몇만 년 지나는 동안에 산은 낮아지고 골은 높아져서 마침내 이 꼴이 된 것인가 하오. 만일 큰 힘이 있어 이 광야를 파낸다 하면 물 흐르고 고기 놀던 강과, 울고 웃던 생물이 살던 자취가 있을 것이오. 아아 이 모든 기억을 꽉 품고 죽은 듯이 잠잠한 광야에! -내가 탄 차가 F역에 도착하였을 때에는 북만주 광야의 석양의 아름다움은 그 극도에 달한 것 같았소. 둥긋한 지평선 위에 거의 걸린 커다란 해! 아마 그 신비하고 장엄함이 내 경험으로는 이 곳에서밖에는 볼 수 없는 것이라고생각하오. 이글이글 이글이글 그러면서도 둥글다는 체모를 변치 아니하는 그 지는 해! -게다가 먼 지평선으로부터 기어드는 황혼은 인제는 대지를 거의 다 덮어 버려서 마른 풀로 된 지면은 가뭇가뭇한 빛을 띠고 사막의 가는 모래를 머금은 지는 해의 광선을 반사하여서 대기는 짙은 자줏빛을 바탕으로 한 가지각색의 명암을 가진, 오색이 영롱한, 도무지 내가 일찍 경험해 보지 못한 색채의 세계를 이루었소. 아 좋다! -그 속에 수은같이 빛나는, 수없는 작고 큰 호수들의 빛! 그 속으로 날아오는 수없고 이름 모를 새들의 떼도 이 세상의 것이라고는 생각하지 아니하오. -나는 거의 무의식적으로 차에서 뛰어내렸소. 거의 떠날 시간이 다 되어서 짐의 일부분은 미처 가지지도 못하고 뛰어내렸소. 반쯤 미친 것이오. -정거장 앞 조그마한 아라사 사람의 여관에다가 짐을 맡겨 버리고 나는 단장을 끌고 철도 선로를 뛰어 건너서 호수의 수은빛 나는 곳을 찾아서 지향 없이 걸었소. -한 호수를 가서 보면 또 저 편 호수가 더 아름다워 보이오. 원컨대 저 지는 해가 다 지기 전에 이 광야에 있는 호수를 다 돌아보고 싶소. -내가 호숫 가에 섰을 때에 그 거울같이 잔잔한 호수면에 비치는 내 그림자의 외로움이여, 그러나 아름다움이여! 그 호수는 영원한 우주의 신비를 품고 하늘이 오면 하늘을, 새가 오면 새를, 구름이 오면 구름을, 그리고 내가 오면 나를 비추지 아니하오. 나는 호수가 되고 싶소. 그러나 형! 나는 이 호수면에서 얼마나 정임의 얼굴을 찾았겠소. 그것은 물리학적으로 불가능한 일이겠지요. 동경의 병실에 누워 있는 정임의 모양이 몽고 사막의 호수면에 비칠 리야 있겠소. 없겠지마는 나는 호수마다 정임의 그림자를 찾았소. 그러나 보이는 것은 외로운 내 그림자뿐이오. -`가자. 끝없는 사막으로 한없이 가자. 가다가 내 기운이 진하는 자리에 나는 내 손으로 모래를 파고 그 속에 내 몸을 묻고 죽어 버리자. 살아서 다시 볼 수 없는 정임의 「이데아」를 안고 이 깨끗한 광야에서 죽어 버리 자.' -하고 나는 지는 해를 향하고 한정 없이 걸었소. 사막이 받았던 따뜻한 기운은 아직도 다 식지는 아니하였소. 사막에는 바람 한 점도 없소. 소리 하나도 없소. 발자국 밑에서 우는 마른 풀과 모래의 바스락거리는 소리가 들릴 뿐이오. -나는 허리를 지평선에 걸었소. 그 신비한 광선은 내 가슴으로부터 위에만을 비추고 있소. -문득 나는 해를 따라가는 별 두 개를 보았소. 하나는 앞을 서고 하나는 뒤를 섰소. 앞의 별은 좀 크고 뒤의 별은 좀 작소. 이런 별들은 산 많은 나라 다시 말하면 서쪽 지평선을 보기 어려운 나라에서만 생장한 나로서는 보지 못하던 별이오. 나는 그 별의 이름을 모르오. `두 별'이오. -해가 지평선에서 뚝 떨어지자 대기의 자줏빛은 남빛으로 변하였소. 오직 해가 금시 들어간 자리에만 주홍빛의 여광이 있을 뿐이오. 내 눈앞에서는 남빛 안개가 피어오르는 듯하였소. 앞에 보이는 호수만이 유난히 빛나오. 또 한 떼의 이름 모를 새들이 수면을 스치며 날 저문 것을 놀라는 듯이 어지러이 날아 지나가오. 그들은 소리도 아니 하오. 날개치는 소리도 아니 들리오. 그것들은 사막의 황혼의 허깨비인 것 같소. -나는 자꾸 걷소. 해를 따르던 나는 두 별을 따라서 자꾸 걷소. -별들은 진 해를 따라서 바삐 걷는 것도 같고, 헤매는 나를 어떤 나라로 끄는 것도 같소. -아니 두 별 중에 앞선 별이 한 번 반짝하고는 최후로 한 번 반짝하고는 지평선 밑에 숨어 버리고 마오. 뒤에 남은 외별의 외로움이여! 나는 울고 싶었소. 그러나 나는 하나만 남은 작은 별 외로운 작은 별을 따라서 더 빨리 걸음을 걸었소. 그 한 별마저 넘어가 버리면 나는 어찌하오. -내가 웬일이오. 나는 시인도 아니요, 예술가도 아니오. 나는 정으로 행동한 일은 없다고 믿는 사람이오. 그러나 형! 이 때에 미친 것이 아니요, 내 가슴에는 무엇인지 모를 것을 따를 요샛말로 이른바 동경으로 찼소. -`아아 저 작은 별!' -그것도 지평선에 닿았소. -`아아 저 작은 별. 저것마저 넘어가면 나는 어찌하나.' -인제는 어둡소. 광야의 황혼은 명색뿐이요, 순식간이요, 해지자 신비하다고 할 만한 극히 짧은 동안에 아름다운 황혼을 조금 보이고는 곧 칠과 같은 암흑이오. 호수의 물만이 어디서 은빛을 받았는지 뿌옇게 나만이 유일한 존재다, 나만이 유일한 빛이다 하는 듯이 인제는 수은빛이 아니라 남빛을 발하고 있을 뿐이오. -나는 그 중 빛을 많이 받은, 그 중 환해 보이는 호수면을 찾아 두리번거리며, 그러나 빠른 걸음으로 헤매었소. 그러나 내가 좀더 맑은 호수면을 찾는 동안에 이 광야의 어둠은 더욱더욱 짙어지오. -나는 어떤 조그마한 호숫 가에 펄썩 앉았소. 내 앞에는 짙은 남빛의 수면에 조그마한 거울만한 밝은 데가 있소. 마치 내 눈에서 무슨 빛이 나와서, 아마 정임을 그리워하는 빛이 나와서 그 수면에 반사하는 듯이. 나는 허겁지겁 그 빤한 수면을 들여다보았소. 혹시나 정임의 모양이 거기 나타나지나 아니할까 하고. 세상에는 그러한 기적도 있지 아니한가 하고. -물에는 정임의 얼굴이 어른거리는 것 같았소. 이따금 정임의 눈도 어른거리고 코도 번뜻거리고 입도 번뜻거리는 것 같소. 그러나 수면은 점점 어두워 가서 그 환영조차 더욱 희미해지오. -나는 호수면에 빤하던 한 조각조차 캄캄해지는 것을 보고 숨이 막힐 듯함을 깨달으면서 고개를 들었소. -고개를 들려고 할 때에, 형이여, 이상한 일도 다 있소. 그 수면에 정임의 모양이, 얼굴만 아니라, 그 몸 온통이 그 어깨, 가슴, 팔, 다리까지도, 그 눈과 입까지도, 그 얼굴의 흰 것과 입술이 불그레한 것까지도, 마치 환한 대낮에 실물을 대한 모양으로 소상하게 나타났소. -"정임이!" -하고 나는 소리를 지르며 물로 뛰어들려 하였소. 그러나 형, 그 순간에 정임의 모양은 사라져 버리고 말았소. -나는 이 어둠 속에 어디 정임이가 나를 따라온 것같이 생각했소. 혹시나 정임이가 죽어서 그 몸은 동경의 대학 병원에 벗어 내어던지고 혼이 빠져 나와서 물에 비치었던 것이 아닐까, 나는 가슴이 울렁거림을 진정치 못하면서 호숫 가에서 벌떡 일어나서 어둠 속에 정임을 만져보려는 듯이, 어두워서 눈에 보지는 못하더라도 자꾸 헤매노라면 몸에 부딪히기라도 할 것 같아서 함부로 헤매었소. 그리고는 눈앞에 번뜻거리는 정임의 환영을 팔을 벌려서 안고 소리를 내어서 불렀소. -"정임이, 정임이." -하고 나는 수없이 정임을 부르면서 헤매었소. -그러나 형, 이것도 죄지요. 이것도 하나님께서 금하시는 일이지요. 그러길래 광야에 아주 어둠이 덮이고 새까만 하늘에 별이 총총하게 나고는 영 정임의 헛그림자조차 아니 보이지요. 나는 죄를 피해서 정임을 떠나서 멀리 온 것이니 정임의 헛그림자를 따라다니는 것도 옳지 않지요. -그렇지만 내가 이렇게 혼자서 정임을 생각만 하는 것이야 무슨 죄 될 것이 있을까요. 내가 정임을 만 리나 떠나서 이렇게 헛그림자나 그리며 그리워하는 것이야 무슨 죄가 될까요. 설사 죄가 되기로서니 낸들 이것까지야 어찌하오. 내가 내 혼을 죽여 버리기 전에야 내 힘으로 어찌하오. 설사 죄가 되어서 내가 지옥의 꺼지지 않는 유황불 속에서 영원한 형벌을 받게 되기로서니 그것을 어찌하오. 형, 이것, 이것도 말아야 옳은가요. 정임의 헛그림자까지도 끊어 버려야 옳은가요. -이 때요. 바로 이 때요. 내 앞 수십 보나 될까(캄캄한 밤이라 먼지 가까운지 분명히 알 수 없지마는) 하는 곳에 난데없는 등불 하나가 나서오. 나는 깜짝 놀라서 우뚝 섰소. 이 무인지경, 이 밤중에 갑자기 보이는 등불 그것은 마치 이 세상 같지 아니하였소. -저 등불이 어떤 등불일까, 그 등불이 몇 걸음 가까이 오니, 그 등불 뒤에 사람의 다리가 보이오. -"누구요?" -하는 것은 귀에 익은 조선말이오. 어떻게 이 몽고의 광야에서 조선말을 들을까 하고 나는 등불을 처음 볼 때보다 더욱 놀랐소. -"나는 지나가던 사람이오." -하고 나도 등불을 향하여 마주 걸어갔소. -그 사람은 등불을 들어서 내 얼굴을 비추어 보더니, -"당신 조선 사람이오?" -하고 묻소. -"네, 나는 조선 사람이오. 당신도 음성을 들으니 조선 사람인데, 어떻게 이런 광야에, 아닌 밤중에, 여기 계시단 말이오." -하고 나는 놀라는 표정 그대로 대답하였소. -"나는 이 근방에 사는 사람이니까 여기 오는 것도 있을 일이지마는 당신이야말로 이 아닌 밤중에." -하고 육혈포를 집어넣고, 손을 내밀어서 내게 악수를 구하오. -나는 반갑게 그의 손을 잡았소. 그러나 나는 `죽을 지경에 어떻게 오셨단 말이오.' 하고, 그가 내가 무슨 악의를 가진 흉한이 아닌 줄을 알고 손에 빼어들었던 육혈포로 시기를 잠깐이라도 노린 것을 불쾌하게 생각하였던 것이오. -그도 내 이름도 묻지 아니하고 또 나도 그의 이름을 묻지 아니하고 나는 그에게 끌려서 그가 인도하는 곳으로 갔소. 그 곳이란 것은 아까 등불이 처음 나타나던 곳인 듯한데, 거기서 또 한 번 놀란 것은 어떤 부인이 있는 것이오. 남자는 아라사식 양복을 입었으나 부인은 중국 옷 비슷한 옷을 입었소. 남자는 나를 끌어서 그 부인에게 인사하게 하고, -"이는 내 아내요." -하고 또 그 아내라는 부인에게는, -"이 이는 조선 양반이오. 성함이 뉘시죠?" -하고 그는 나를 바라보오. 나는, -"최석입니다." -하고 바로 대답하였소. -"최석 씨?" -하고 그 남자는 소개하던 것도 잊어버리고 내 얼굴을 들여다보오. -"네, 최석입니다." -"아 ●●학교 교장으로 계신 최석 씨." -하고 그 남자는 더욱 놀라오. -"네, 어떻게 내 이름을 아세요?" -하고 나도 그가 혹시 아는 사람이나 아닌가 하고 등불 빛에 얼굴을 들여다 보았으나 도무지 그 얼굴이 본 기억이 없소. -"최 선생을 내가 압니다. 남 선생한테 말씀을 많이 들었지요. 그런데 남 선생도 돌아가신 지가 벌써 몇 핸가." -하고 감개무량한 듯이 그 아내를 돌아보오. -"십오 년이지요." -하고 곁에 섰던 부인이 말하오. -"벌써 십오 년인가." -하고 그 남자는 나를 보고, -"정임이 잘 자랍니까? 벌써 이십이 넘었지." -하고 또 부인을 돌아보오. -"스물세 살이지." -하고 부인이 확실치 아니한 듯이 대답하오. -"네, 스물세 살입니다. 지금 동경에 있습니다. 병이 나서 입원한 것을 보고 왔는데." -하고 나는 번개같이 정임의 병실과 정임의 호텔 장면 등을 생각하고 가슴이 설렘을 깨달았소. 의외인 곳에서 의외인 사람들을 만나서 정임의 말을 하게 된 것을 기뻐하였소. -"무슨 병입니까. 정임이가 본래 몸이 약해서." -하고 부인이 직접 내게 묻소. -"네. 몸이 좀 약합니다. 병이 좀 나은 것을 보고 떠났습니다마는 염려가 됩니다." -하고 나는 무의식중에 고개를 동경이 있는 방향으로 돌렸소. 마치 고개를 동으로 돌리면 정임이가 보이기나 할 것같이. -"자, 우리 집으로 갑시다." -하고 나는 아직 그의 성명도 모르는 남자는, 그의 아내를 재촉하더니, -"우리가 조선 동포를 만난 것이 십여 년 만이오. 그런데 최 선생, 이것을 좀 보시고 가시지요." -하고 그는 빙그레 웃으면서 나를 서너 걸음 끌고 가오. 거기는 조그마한 무덤이 있고 그 앞에는 석 자 높이나 되는 목패를 세웠는데 그 목패에는 `두 별 무덤'이라는 넉 자를 썼소. -내가 이상한 눈으로 그 무덤과 목패를 보고 있는 것을 보고 그는, -"이게 무슨 무덤인지 아십니까?" -하고 유쾌하게 묻소. -"두 별 무덤이라니 무슨 뜻인가요?" -하고 나도 그의 유쾌한 표정에 전염이 되어서 웃고 물었소. -"이것은 우리 둘의 무덤이외다." -하고 그는 아내의 어깨를 치며 유쾌하게 웃었소. 부인은 부끄러운 듯이 웃고 고개를 숙이오. -도무지 모두 꿈 같고 환영 같소. -"자 갑시다. 자세한 말은 우리 집에 가서 합시다." -하고 서너 걸음 어떤 방향으로 걸어가니 거기는 말을 세 필이나 맨 마차가 있소. 몽고 사람들이 가족을 싣고 수초를 따라 돌아다니는 그러한 마차요. 삿자리로 홍예형의 지붕을 만들고 그 속에 들어가 앉게 되었소. 그의 부인과 나와는 이 지붕 속에 들어앉고 그는 손수 어자대에 앉아서 입으로 쮸쮸쮸쮸 하고 말을 모오. 등불도 꺼 버리고 캄캄한 속으로 달리오. -"불이 있으면 군대에서 의심을 하지요. 도적놈이 엿보지요. 게다가 불이 있으면 도리어 앞이 안 보인단 말요. 쯧쯧쯧쯧!" -하는 소리가 들리오. -대체 이 사람은 무슨 사람인가. 또 이 부인은 무슨 사람인가 하고 나는 어두운 속에서 혼자 생각하였소. 다만 잠시 본 인상으로 보아서 그들은 행복된 부부인 것 같았소. 그들이 무엇 하러 이 아닌 밤중에 광야에 나왔던가. 또 그 이상야릇한 두 별 무덤이란 무엇인가. -나는 불현듯 집을 생각하였소. 내 아내와 어린것들을 생각하였소. 가정과 사회에서 쫓겨난 내가 아니오. 쫓겨난 자의 생각은 언제나 슬픔뿐이었소. -나는 내 아내를 원망치 아니하오. 그는 결코 악한 여자가 아니오. 다만 보통 여자요. 그는 질투 때문에 이성의 힘을 잃은 것이오. 여자가 질투 때문에 이성을 잃는 것이 천직이 아닐까요. 그가 나를 사랑하길래 나를 위해서 질투를 가지는 것이 아니오. -설사 질투가 그로 하여금 칼을 들어 내 가슴을 찌르게 하였다 하더라도 나는 감사한 생각을 가지고 눈을 감을 것이오. 사랑하는 자는 질투한다고 하오. 질투를 누르는 것도 아름다운 일이지마는 질투에 타는 것도 아름다운 일이 아닐까요. -덜크럭덜크럭 하고 차바퀴가 철로길을 넘어가는 소리가 나더니 이윽고 마차는 섰소. -앞에 빨갛게 불이 비치오. -"자 이게 우리 집이오." -하고 그가 마차에서 뛰어내리는 양이 보이오. 내려 보니까 달이 올라오오. 굉장히 큰 달이, 붉은 달이 지평선으로서 넘석하고 올라오오. -달빛에 비추인 바를 보면 네모나게 담 담이라기보다는 성을 둘러쌓은 달 뜨는 곳으로 열린 대문을 들어서서 넓은 마당에 내린 것을 발견하였소. -"아버지!" -"엄마!" -하고 아이들이 뛰어나오오. 말만큼이나 큰 개가 네 놈이나 꼬리를 치고 나오오. 그놈들이 주인집 마차 소리를 알아듣고 짖지 아니한 모양이오. -큰 아이는 계집애로 여남은 살, 작은 아이는 사내로 육칠 세, 모두 중국 옷을 입었소. -우리는 방으로 들어갔소. 방은 아라사식 절반, 중국식 절반으로 세간이 놓여 있고 벽에는 조선 지도와 단군의 초상이 걸려 있소. -그들 부처는 지도와 단군 초상 앞에 허리를 굽혀 배례하오. 나도 무의식적으로 그대로 하였소. -그는 차를 마시며 이렇게 말하오. -"우리는 자식들을 이 흥안령 가까운 무변 광야에서 기르는 것으로 낙을 삼고 있지요. 조선 사람들은 하도 마음이 작아서 걱정이니 이런 호호탕탕한 넓은 벌판에서 길러나면 마음이 좀 커질까 하지요. 또 흥안령 밑에서 지나 중원을 통일한 제왕이 많이 났으니 혹시나 그 정기가 남아 있을까 하지요. 우리 부처의 자손이 몇 대를 두고 퍼지는 동안에는 행여나 마음 큰 인물이 하나 둘 날는지 알겠어요, 하하하하." -하고 그는 제 말을 제가 비웃는 듯이 한바탕 웃고 나서, -"그러나 이건 내 진정이외다. 우리도 이렇게 고국을 떠나 있지마는 그래도 고국 소식이 궁금해서 신문 하나는 늘 보지요. 하지만 어디 시원한 소식이 있어요. 그저 조리복소니가 되어가는 것이 아니면 조그마한 생각을 가지고, 눈곱만한 야심을 가지고, 서 푼어치 안 되는 이상을 가지고 찧고 까불고 싸우고 하는 것밖에 안 보이니 이거 어디 살 수가 있나. 그래서 나는 마음 큰 자손을 낳아서 길러 볼까 하고 이를테면 새 민족을 하나 만들어 볼까 하고, 둘째 단군, 둘째 아브라함이나 하나 낳아 볼까 하고 하하하하앗하." -하고 유쾌하게, 그러나 비통하게 웃소. -나는 저녁을 굶어서 배가 고프고, 밤길을 걸어서 몸이 곤한 것도 잊고 그의 말을 들었소. -부인이 김이 무럭무럭 나는 호떡을 큰 뚝배기에 담고 김치를 작은 뚝배기에 담고, 또 돼지고기 삶은 것을 한 접시 담아다가 탁자 위에 놓소. -건넌방이라고 할 만한 방에서 젖먹이 우는 소리가 들리오. 부인은 삼십이나 되었을까, 남편은 서른댓 되었을 듯한 키가 훨쩍 크고 눈과 코가 크고 손도 큰 건장한 대장부요, 음성이 부드러운 것이 체격에 어울리지 아니하나 그것이 아마 그의 정신 생활이 높은 표겠지요. -"신문에서 최 선생이 학교를 고만두시게 되었다는 말도 보았지요. 그러나 나는 그것이 다 최 선생에게 대한 중상인 줄을 짐작하였고, 또 오늘 이렇게 만나 보니까 더구나 그것이 다 중상인 줄을 알지요." -하고 그는 확신 있는 어조로 말하오. -"고맙습니다." -나는 이렇게밖에 대답할 말이 없었소. -"아, 머, 고맙다고 하실 것도 없지요." -하고 그는 머리를 뒤로 젖히고 한참이나 생각을 하더니 우선 껄껄 한바탕 웃고 나서, -"내가 최 선생이 당하신 경우와 꼭 같은 경우를 당하였거든요. 이를테면 과부 설움은 동무 과부가 안다는 것이지요." -하고 그는 자기의 내력을 말하기 시작하오. -"내 집은 본래 서울입니다. 내가 어렸을 적에 내 선친께서 시국에 대해서 불평을 품고 당신 삼 형제의 가족을 끌고 재산을 모두 팔아 가지고 간도에를 건너오셨지요. 간도에 맨 먼저 ●●학교를 세운 이가 내 선친이지요." -여기까지 하는 말을 듣고 나는 그가 누구인지를 알았소. 그는 R씨라고 간도 개척자요, 간도에 조선인 문화를 세운 이로 유명한 이의 아들인 것이 분명하오. 나는 그의 이름이 누구인지도 물어 볼 것 없이 알았소. -"아 그러십니까. 네, 그러세요." -하고 나는 감탄하였소. -"네, 내 선친을 혹 아실는지요. 선친의 말씀이 노 그러신단 말씀야요. 조선 사람은 속이 좁아서 못쓴다고 <정감록>에도 그런 말이 있다고 조선은 산이 많고 들이 좁아서 사람의 마음이 작아서 큰일하기가 어렵고, 큰사람이 나기가 어렵다고. 웬만치 큰사람이 나면 서로 시기해서 큰일할 새가 없이 한다고 그렇게 <정감록>에도 있다더군요. 그래서 선친께서 자손에게나 희망을 붙이고 간도로 오신 모양이지요. 거기서 자라났다는 것이 내 꼴입니다마는, 아하하. -내가 자라서 아버지께서 세우신 K여학교의 교사로 있을 때 일입니다. 지금 내 아내는 그 때 학생으로 있었구. 그러자 내 아버지께서 재산이 다 없어져서 학교를 독담하실 수가 없고, 또 얼마 아니해서 아버지께서 돌아가시고 보니 학교에는 세력 다툼이 생겨서 아버지의 후계자로 추정되는 나를 배척하게 되었단 말씀이오. 거기서 나를 배척하는 자료를 삼은 것이 나와 지금 내 아내가 된 학생의 관계란 것인데 이것은 전연 무근지설인 것은 말할 것도 없소. 나도 총각이요, 그는 처녀니까 혼인을 하자면 못 할 것도 없지마는 그것이 사제 관계라면 중대 문제거든. 그래서 나는 단연히 사직을 하고 내가 사직한 것은 제 죄를 승인한 것이라 하여서 그 학생 지금 내 아내도 출교 처분을 당한 것이오. 그러고 보니, 그 여자의 아버지 내 장인이지요 그 여자의 아버지는 나를 죽일 놈같이 원망을 하고 그 딸을 죽일 년이라고 감금을 하고 어쨌으나 조그마한 간도 사회에서 큰 파문을 일으켰단 말이오. -이 문제를 더 크게 만든 것은 지금 내 아내인, 그 딸의 자백이오. 무어라고 했는고 하니, 나는 그 사람을 사랑하오, 그 사람한테가 아니면 시집을 안 가오, 하고 뻗댔단 말요. -나는 이 여자가 이렇게 나를 생각하는가 할 때 의분심이 나서 나는 어떻게 해서든지 이 여자와 혼인하리라고 결심을 하였소. 나는 마침내 정식으로 K장로라는 내 장인에게 청혼을 하였으나 단박에 거절을 당하고 말았지요. K장로는 그 딸을 간도에 두는 것이 옳지 않다고 해서 서울로 보내기로 하였단 말을 들었소. 그래서 나는 최후의 결심으로 그 여자 지금 내 아내 된 사람을 데리고 간도에서 도망하였소. 하하하하. 밤중에 단둘이서. -지금 같으면야 사제간에 결혼을 하기로 그리 큰 문제가 될 것이 없지마는 그 때에 어디 그랬나요. 사제간에 혼인이란 것은 부녀간에 혼인한다는 것과 같이 생각하였지요. 더구나 그 때 간도 사회에는 청교도적 사상과 열렬한 애국심이 있어서 도덕 표준이 여간 높지 아니하였지요. 그런 시대니까 내가 내 제자인 여학생을 데리고 달아난다는 것은 살인 강도를 하는 이상으로 무서운 일이었지요. 지금도 나는 그렇게 생각합니다마는. -그래서 우리 두 사람은 우리 두 사람이라는 것보다도 내 생각에는 어찌하였으나 나를 위해서 제 목숨을 버리려는 그에게 사실 나도 마음 속으로는 그를 사랑하였지요. 다만 사제간이니까 영원히 달할 수는 없는 사랑이라고 단념하였을 뿐이지요. 그러니까 비록 부처 생활은 못 하더라도 내가 그의 사랑을 안다는 것과 나도 그를 이만큼 사랑한다는 것만을 보여 주자는 것이지요. -때는 마침 가을이지마는, 몸에 지닌 돈도 얼마 없고 천신만고로 길림까지를 나와 가지고는 배를 타고 송화강을 내려서 하얼빈에 가 가지고 거 기서 간신히 치타까지의 여비와 여행권을 얻어 가지고 차를 타고 떠나지 않았어요. 그것이 바로 십여 년 전 오늘이란 말이오." -이 때에 부인이 옥수수로 만든 국수와 감자 삶은 것을 가지고 들어오오. -나는 R의 말을 듣던 끝이라 유심히 부인을 바라보았소. 그는 중키나 되는 둥근 얼굴이 혈색이 좋고 통통하여 미인이라기보다는 씩씩한 여자요. 그런 중에 조선 여자만이 가지는 아담하고 점잖은 맛이 있소. -"앉으시지요. 지금 두 분께서 처음 사랑하시던 말씀을 듣고 있습니다." -하고 나는 부인에게 교의를 권하였소. -"아이, 그런 말씀은 왜 하시오." -하고 부인은 갑자기 십 년이나 어려지는 모양으로 수삽한 빛을 보이고 고개를 숙이고 달아나오. -"그래서요. 그래 오늘이 기념일이외다그려." -하고 나도 웃었소. -"그렇지요. 우리는 해마다 오늘이 오면 우리 무덤에 성묘를 가서 하룻밤을 새우지요. 오늘은 손님이 오셔서 중간에 돌아왔지만, 하하하하." -하고 그는 유쾌하게 웃소. -"성묘라니?" -하고 나는 물었소. -"아까 보신 두 별 무덤 말이오. 그것이 우리 내외의 무덤이지요. 하하하하." -"…………." -나는 영문을 모르고 가만히 앉았소. -"내 이야기를 들으시지요. 그래 둘이서 차를 타고 오지 않았겠어요. 물론 여전히 선생님과 제자지요. 그렇지만 워낙 여러 날 단둘이서 같이 고생을 하고 여행을 했으니 사랑의 불길이 탈 것이야 물론 아니겠어요. 다만 사제라는 굳은 의리가 그것을 겉에 나오지 못하도록 누른 것이지요. ……그런데 꼭 오늘같이 좋은 날인데 여기는 대개 일기가 일정합니다. 좀체로 비가 오는 일도 없고 흐리는 날도 없지요. 헌데 F역에를 오니까 참 석양 경치가 좋단 말이오. 그 때에 불현듯, 에라 여기서 내려서 이 석양 속에 저 호숫 가에 둘이서 헤매다가 깨끗이 사제의 몸으로 이 깨끗한 광야에 묻혀 버리자 하는 생각이 나겠지요. 그래 그 때 말을 내 아내 그 때에는 아직 아내가 아니지요 내 아내에게 그런 말을 하였더니 참 좋다고 박장을 하고 내 어깨에 매달리는구려. 그래서 우리 둘은 차가 거의 떠날 임박해서 차에서 뛰어내렸지요." -하고 그는 그때 광경을 눈앞에 그리는 모양으로 말을 끊고 우두커니 허공을 바라보오. 그러나 그의 입 언저리에는 유쾌한 회고에서 나오는 웃음이었소. -"이야기 다 끝났어요?" -하고 부인이 크바스라는 청량 음료를 들고 들어오오. -"아니오. 이제부터가 정통이니 당신도 거기 앉으시오. 지금 차에서 내린 데까지 왔는데 당신도 앉아서 한 파트를 맡으시오." -하고 R는 부인의 손을 잡아서 자리에 앉히오. 부인도 웃으면서 앉소. -"최 선생 처지가 꼭 나와 같단 말요. 정임의 처지가 당신과 같고." -하고 그는 말을 계속하오. -"그래 차에서 내려서 나는 이 양반하고 물을 찾아 헤매었지요. 아따, 석양이 어떻게 좋은지 이 양반은 박장을 하고 노래를 부르고 우리 둘은 마치 유쾌하게 산보하는 사람 같았지요." -"참 좋았어요. 그 때에는 참 좋았어요. 그 석양에 비친 광야와 호수라는 건 어떻게 좋은지 그 수은 같은 물 속에 텀벙 뛰어들고 싶었어요. 그 후엔 해마다 보아도 그만 못해." -하고 부인이 참견을 하오. -아이들은 다 자는 모양이오. -"그래 지향없이 헤매는데 해는 뉘엿뉘엿 넘어가구, 어스름은 기어들고 그 때 마침 하늘에는 별 둘이 나타났단 말이야. 그것을 이 여학생이 먼저 보고서 갑자기 추연해지면서 선생님 저 별 보셔요, 앞선 큰 별은 선생님이 구 따라가는 작은 별은 저야요, 하겠지요. 그 말이, 또 그 태도가 어떻게 가련한지. 그래서 나는 하늘을 바라보니깐 과연 별 두 개가 지는 해를 따르는 듯이 따라간다 말요. 말을 듣고 보니 과연 우리 신세와도 같지 않아요? -그리고는 이 사람이 또 이럽니다그려 `선생님, 앞선 큰 별은 아무리 따라도 저 작은 별은 영원히 따라잡지 못하겠지요. 영원히 영원히 따라가다가 따라가다가 못 해서 마침내는 저 작은 별은 죽어서 검은 재가 되고 말겠지요? 저 작은 별이 제 신세와 어쩌면 그리 같을까.' 하고 한탄을 하겠지요. 그 때에 한탄을 하고 눈물을 흘리고 섰는 어린 처녀의 석양빛에 비췬 모양을 상상해 보세요, 하하하하. 그 때에는 당신도 미인이었소. 하하하하." -하고 내외가 유쾌하게 웃는 것을 보니 나는 더욱 적막하여짐을 깨달았소. 어쩌면 그 석양, 그 두 별이 이들에게와 내게 꼭 같은 인상을 주었을까 하니 참으로 이상하다 하였소. -"그래 인제." -하고 R는 다시 이야기를 계속하오. -"그래 인제 둘이서 그야말로 감개무량하게 두 별을 바라보며 걸었지요. 그러다가 해가 넘어가고 앞선 큰 별이 넘어가고 그리고는 혼자서 깜빡깜빡하고 가던 작은 별이 넘어가니 우리는 그만 땅에 주저앉았소. 거기가 어딘고 하니 그 두 별 무덤이 있는 곳이지요. `선생님 저를 여기다가 파묻어 주시고 가셔요. 선생님 손수 저를 여기다가 묻어 놓고 가 주셔요.' 하고 이 사람이 조르지요." -하는 것을 부인은, -"내가 언제." -하고 남편을 흘겨보오. -"그럼 무에라고 했소? 어디 본인이 한 번 옮겨 보오." -하고 R가 말을 끊소. -"간도를 떠난 지가 한 달이 되도록 단둘이 다녀도 요만큼도 귀해 주는 점이 안 뵈니 그럼 파묻어 달라고 안 해요?" -하고 부인은 웃소. -"흥흥." -하고 R는 부인의 말에 웃고 나서, -"그 자리에 묻어 달란 말을 들으니까, 어떻게 측은한지, 그럼 나도 함께 묻히자고 그랬지요. 나는 그 때에 참말 그 자리에 함께 묻히고 싶었어요. 그래서 나는 손으로 곧 구덩이를 팠지요. 떡가루 같은 모래판이니까 파기는 힘이 아니 들겠지요. 이이도 물끄러미 내가 땅을 파는 것을 보고 섰더니만 자기도 파기를 시작하겠지요." -하고 내외가 다 웃소. -"그래 순식간에……." -하고 R는 이야기를 계속하오. -"순식간에 둘이 드러누울 만한 구덩이를 아마 두 자 깊이나 되게, 네모나게 파 놓고는 내가 들어가 누워 보고 그러고는 또 파고 하여 아주 편안한 구덩이를 파고 나서는 나는 아주 세상을 하직할 셈으로 사방을 둘러보 고 사방이래야 컴컴한 어둠밖에 없지만 사방을 둘러보고, 이를테면 세상과 작별을 하고 드러누웠지요. 지금 이렇게 회고담을 할 때에는 우습기도 하지마는 그 때에는 참으로 종교적이라 할 만한 엄숙이었소. 그때 우리 둘의 처지는 앞도 절벽, 뒤도 절벽이어서 죽는 길밖에 없었지요. 또 그뿐 아니라 인생의 가장 깨끗하고 가장 사랑의 맑은 정이 타고 가장 기쁘고도 슬프고도 이를테면 모든 감정이 절정에 달하고, 그러한 순간에 목숨을 끊어 버리는 것이 가장 좋은 일이요, 가장 마땅한 일같이 생각하였지요. 광야에 아름다운 황혼이 순간에 스러지는 모양으로 우리 두 생명의 아름다움도 순간에 스러지자는 우리는 철학자도 시인도 아니지마는 우리들의 환경이 우리 둘에게 그러한 생각을 넣어 준 것이지요. -그래서 내가 가만히 드러누워 있는 것을 저이가 물끄러미 보고 있더니 자기도 내 곁에 들어와 눕겠지요. 그런 뒤에는 황혼에 남은 빛도 다 스러지고 아주 캄캄한 암흑 세계가 되어 버렸지요. 하늘에 어떻게 그렇게 별이 많은지. 가만히 하늘을 바라보노라면 참 별이 많아요. 우주란 참 커요. 그런데 이 끝없이 큰 우주에 한없이 많은 별들이 다 제자리를 지키고 제 길을 지켜서 서로 부딪지도 아니하고 끝없이 긴 시간에 질서를 유지하고 있는 것을 보면 우주에는 어떤 주재하는 뜻, 섭리하는 뜻이 있다 하는 생각이 나겠지요. 나도 예수교인의 가정에서 자라났지마는 이 때처럼 하나님이라 할까 이름은 무엇이라고 하든지 간에 우주의 섭리자의 존재를 강렬하게 의식한 일은 없었지요. -그렇지만 `사람의 마음에 비기면 저까짓 별들이 다 무엇이오?' 하고 그때 겨우 열여덟 살밖에 안 된 이이가 내 귀에 입을 대고 말할 때에는 나도 참으로 놀랐습니다. 나이는 나보다 오륙 년 상관밖에 안 되지마는 이십 세 내외에 오륙 년 상관이 적은 것인가요? 게다가 나는 선생이요 자기는 학생이니까 어린애로만 알았던 것이 그런 말을 하니 놀랍지 않아요? 어째서 사람의 마음이 하늘보다도 더 이상할까 하고 내가 물으니까, 그 대답이 `나는 무엇이라고 설명할 수가 없지마는 내 마음 속에 일어나는 것이 하늘이나 땅에 일어나는 모든 것보다도 더 아름답고 더 알 수 없고 더 뜨겁고 그런 것 같아요.' 그러겠지요. 생명이란 모든 아름다운 것 중에 가장 아름다운 것이라는 것을 나는 깨달았어요. 그 말에, `그렇다 하면 이 아름답고 신비한 생명을 내는 우주는 더 아름다운 것이 아니오?' 하고 내가 반문하니까, 당신(부인을 향하여) 말이, `전 모르겠어요, 어쨌으나 전 행복합니다. 저는 이 행복을 깨뜨리고 싶지 않습니다. 놓쳐 버리고 싶지 않습니다. 이 행복 선생님 곁에 있는 이 행복을 꽉 안고 죽고 싶어요.' 그러지 않았소?" -"누가 그랬어요? 아이 난 다 잊어버렸어요." -하고 부인은 차를 따르오. R는 인제는 하하하 하는 웃음조차 잊어버리고, 부인에게 농담을 붙이는 것조차 잊어버리고, 그야말로 종교적 엄숙 그대로말을 이어, -"`자 저는 약을 먹어요.' 하고 손을 입으로 가져가는 동작이 감행되겠지요. 약이란 것은 하얼빈에서 준비한 아편이지요. 하얼빈서 치타까지 가는 동안에 흥안령이나 어느 삼림지대나 어디서나 죽을 자리를 찾자고 준비한 것이니까. 나는 입 근처로 가는 그의 손을 붙들었어요. 붙들면서 나는 `잠깐만 기다리오. 오늘 밤 안으로 그 약을 먹으면 고만이 아니오? 이 행복된 순간을 잠깐이라도 늘립시다. 달 올라올 때까지만.' 나는 이렇게 말했지요. `선생님도 행복되셔요? 선생님은 불행이시지. 저 때문에 불행이시지. 저만 이곳에 묻어 주시구는 선생님은 세상에 돌아가 사셔요, 오래오래 사셔요, 일 많이 하고 사셔요.' 하고 울지 않겠어요. 나는 그 때에 내 아내가 하던 말을 한 마디도 잊지 아니합니다. 그 말을 듣던 때의 내 인상은 아마 일생 두고 잊히지 아니하겠지요. -나는 자백합니다. 그 순간에 나는 처음으로 내 아내를 안고 키스를 하였지요. 내 속에 눌리고 눌리고 쌓이고 하였던 열정이 그만 일시에 폭발되었던 것이오. 아아 이것이 최초의 것이요, 동시에 최후의 것이로구나 할 때에 내 눈에서는 끓는 듯한 눈물이 흘렀소이다. 두 사람의 심장이 뛰는 소리, 두 사람의 풀무 불길 같은 숨소리. -이윽고 달이 떠올라 왔습니다. 가이없는 벌판이니까 달이 뜨니까 갑자기 천지가 환해지고 우리 둘이 손으로 파서 쌓아 놓은 흙무더기가 이 산 없는 세상에 산이나 되는 것같이 조그마한 검은 그림자를 지고 있겠지요. `자 우리 달빛을 띠고 좀 돌아다닐까.' 하고 나는 아내를 안아 일으켰지요. 내 팔에 안겨서 고개를 뒤로 젖힌 내 아내의 얼굴이 달빛에 비친 양을 나는 잘 기억합니다. 실신한 듯한, 만족한 듯한, 그리고도 절망한 듯한 그 표정을 무엇으로 그릴지 모릅니다. 그림도 그릴 줄 모르고 조각도 할 줄 모르고 글도 쓸 줄 모르는 내가 그것을 어떻게 그립니까. 그저 가슴 속에 품고 이렇게 오늘의 내 아내를 바라볼 뿐이지요. -나는 내 아내를 팔에 걸고 네, 걸었다고 하는 것이 가장 합당하지 요 이렇게 팔에다 걸고 달빛을 받은 황량한 벌판, 아무리 하여도 환하게 밝아지지는 아니하는 벌판을 헤매었습니다. 이따금 내 아내가, `어서 죽고 싶어요, 전 죽고만 싶어요.' 하는 말에는 대답도 아니 하고. 죽고 싶다는 그 말은 물론 진정일 것이지요. 아무리 맑은 일기라 하더라도 오후가 되면 흐려지는 법이니까 오래 살아가는 동안에 늘 한 모양으로 이 순간같이 깨끗하고 뜨거운 기분으로 갈 수는 없지 않아요? 불쾌한 일도 생기고, 보기 흉한 일도 생길는지 모르거든. 그러니까 이 완전한 깨끗과 완전한 사랑과 완전한 행복 속에 죽어 버리자는 뜻을 나는 잘 알지요. 더구나 우리들이 살아 남는대야 앞길이 기구하지 평탄할 리는 없지 아니해요? 그래서 나는 `죽지, 우리 이 달밤에 실컷 돌아다니다가, 더 돌아다니기가 싫거든 그 구덩에 돌아가서 약을 먹읍시다.' 이렇게 말하고 우리 둘은 헤맸지요. 낮에 보면 어디까지나 평평한 벌판인 것만 같지마는 달밤에 보면 이 사막에도 아직 채 스러지지 아니한 산의 형적이 남아 있어서 군데군데 거뭇거뭇한 그림자가 있겠지요. 그 그림자 속에는 걸어 들어가면 어떤 데는 우리 허리만큼 그림자에 가리우고 어떤 데는 우리 둘을 다 가리워 버리는 데도 있단 말야요. 죽음의 그림자라는 생각이 나면 그래도 몸에 소름이 끼쳐요. -차차 달이 높아지고 추위가 심해져서 바람결이 지나갈 때에는 눈에서 눈물이 날 지경이지요. 원체 대기 중에 수분이 적으니까 서리도 많지 않지마는, 그래도 대기 중에 있는 수분은 다 얼어 버려서 얼음가루가 되었는 게지요. 공중에는 반짝반짝하는 수정가루 같은 것이 보입니다. 낮에는 땀이 흐르리만큼 덥던 사막도 밤이 되면 이렇게 기온이 내려가지요. 춥다고 생각은 하면서도 춥다는 말은 아니 하고 우리는 어떤 때에는 달을 따라서, 어떤 때에는 달을 등지고, 어떤 때에는 호수에 비친 달을 굽어보고, 이 모양으로 한없이 말도 없이 돌아다녔지요. 이 세상 생명의 마지막 순간을 힘껏 의식하려는 듯이. -마침내 `나는 더 못 걸어요.' 하고 이이가 내 어깨에 매달려 버리고 말았지요." -하고 R가 부인을 돌아보니 부인은 편물하던 손을 쉬고, -"다리가 아픈 줄은 모르겠는데 다리가 이리 뉘구 저리 뉘구 해서 걸음을 걸을 수가 없었어요. 춥기는 하구." -하고 소리를 내어서 웃소. -"그럴 만도 하지." -하고 R는 긴장한 표정을 약간 풀고 앉은 자세를 잠깐 고치며, -"그 후에 그 날 밤 돌아다닌 곳을 더듬어 보니까, 자세히는 알 수 없지마는 삼십 리는 더 되는 것 같거든. 다리가 아프지 아니할 리가 있나." -하고 차를 한 모금 마시고 나서 말을 계속하오. -"그래서 나는 내 외투를 벗어서, 이이(부인)를 싸서 어린애 안듯이 안고 걸었지요. 외투로 쌌으니 자기도 춥지 않구, 나는 또 무거운 짐을 안았으니 땀이 날 지경이구, 그뿐 아니라 내가 제게 주는 최후의 서비스라 하니 기쁘고, 말하자면 일거 삼득이지요. 하하하하. 지난 일이니 웃지마는 그 때 사정을 생각해 보세요, 어떠했겠나." -하고 R는 약간 처참한 빛을 띠면서, -"그러니 그 구덩이를 어디 찾을 수가 있나. 얼마를 찾아 돌아다니다가 아무 데서나 죽을 생각도 해 보았지마는 몸뚱이를 그냥 벌판에 내놓고 죽고 싶지는 아니하고 또 그 구덩이가 우리 두 사람에게 특별한 의미가 있는 것 같아서 기어코 그것을 찾아 내고야 말았지요. 그 때는 벌써 새벽이 가까웠던 모양이오. 열 시나 넘어서 뜬 하현달이 낮이 기울었으니 그렇지 않겠어요. 그 구덩이에 와서 우리는 한 번 더 하늘과 달과 별과, 그리고 마음 속에 떠오른 사람들과 하직하고 약 먹을 준비를 했지요. -약을 검은 고약과 같은 아편을 맛이 쓰다는 아편을 물도 없이 먹으려 들었지요. -우리 둘은 아까 모양으로 가지런히 누워서 하늘을 바라보았는데 달이 밝으니까 보이던 별들 중에 숨은 별이 많고 또 별들의 위치 우리에게 낯익은 북두칠성 자리도 변했을 것 아니야요. 이상한 생각이 나요. 우리가 벌판으로 헤매는 동안에 천지가 모두 변한 것 같아요. 사실 변하였지요. 그 변한 것이 우스워서 나는 껄껄 웃었지요. 워낙 내가 웃음이 좀 헤프지만 이 때처럼 헤프게 실컷 웃어 본 일은 없습니다. -왜 웃느냐고 아내가 좀 성을 낸 듯이 묻기로, `천지와 인생이 변하는 것이 우스워서 웃었소.' 그랬지요. 그랬더니, `천지와 인생은 변할는지 몰라도 내 마음은 안 변해요!' 하고 소리를 지르겠지요. 퍽 분개했던 모양이야." -하고 R는 그 아내를 보오. -"그럼 분개 안 해요? 남은 죽을 결심을 하고 발발 떨구 있는데 곁에서 껄껄거리고 웃으니, 어째 분하지가 않아요. 나는 분해서 달아나려고 했어요." -하고 부인은 아직도 분함이 남은 것같이 말하오. -"그래 달아나지 않았소?" -하고 R는 부인이 벌떡 일어나서 비틀거리고 달아나는 흉내를 팔과 다리로 내고 나서, -"이래서 죽는 시간이 지체가 되었지요. 그래서 내가 빌고 달래고 해서 가까스로 안정을 시키고 나니 손에 쥐었던 아편이 땀에 푹 젖었겠지요. 내가 웃은 것은 죽기 전 한 번 천지와 인생을 웃어 버린 것인데 그렇게 야단이니…… 하하하하." -R는 식은 차를 한 모금 더 마시며, -"참 목도 마르기도 하더니. 입에는 침 한 방울 없고. 그러나 못물을 먹을 생각도 없고. 나중에는 말을 하려고 해도 혀가 안 돌아가겠지요. -이러는 동안에 달빛이 희미해지길래 웬일인가 하고 고개를 번쩍 들었더니 해가 떠오릅니다그려. 어떻게 붉고 둥글고 씩씩한지. `저 해 보오.' 하고 나는 기계적으로 벌떡 일어나서 구덩이에서 뛰어나왔지요." -하고 빙그레 웃소. R의 빙그레 웃는 양이 참 좋았소. -"내가 뛰어나오는 것을 보고 이이도 뿌시시 일어났지요. 그 해! 그 해의 새 빛을 받는 하늘과 땅의 빛! 나는 그것을 형용할 말을 가지지 못합니다. 다만 힘껏 소리치고 싶고 기운껏 달음박질치고 싶은 생각이 날 뿐이어요. -`우리 삽시다, 죽지 말고 삽시다, 살아서 새 세상을 하나 만들어 봅시다.' 이렇게 말하였지요. 하니까 이이가 처음에는 깜짝 놀라는 것 같아요. 그러나 마침내 아내도 죽을 뜻을 변하였지요. 그래서 남 선생을 청하여다가 그 말씀을 여쭈었더니 남 선생께서 고개를 끄덕끄덕하시고 우리 둘의 혼인 주례를 하셨지요. 그 후 십여 년에 우리는 밭 갈고 아이 기르고 이런 생활을 하고 있는데 언제나 여기 새 민족이 생기고 누가 새 단군이 될는지요. 하하하하, 아하하하. 피곤하시겠습니다. 이야기가 너무 길어서." -하고 R는 말을 끊소. -나는 R부처가 만류하는 것도 다 뿌리치고 여관으로 돌아왔소. R와 함께 달빛 속, 개 짖는 소리 속을 지나서 아라사 사람의 조그마한 여관으로 돌아왔소. 여관 주인도 R를 아는 모양이어서 반갑게 인사하고 또 내게 대한 부탁도 하는 모양인가 보오. -R는 내 방에 올라와서 내일 하루 지날 일도 이야기하고 또 남 선생과 정임에게 관한 이야기도 하였으나, 나는 그가 무슨 이야기를 하는지 잘 들을 만한 마음의 여유도 없어서 마음 없는 대답을 할 뿐이었소. -R가 돌아간 뒤에 나는 옷도 벗지 아니하고 침대에 드러누웠소. 페치카를 때기는 한 모양이나 방이 써늘하기 그지없소. -`그 두 별 무덤이 정말 R와 그 여학생과 두 사람이 영원히 달치 못할 꿈을 안은 채로 깨끗하게 죽어서 묻힌 무덤이었으면 얼마나 좋을까. 만일 그렇다 하면 내일 한 번 더 가서 보토라도 하고 오련마는.' -하고 나는 R부처의 생활에 대하여 일종의 불만과 환멸을 느꼈소. -그리고 내가 정임을 여기나 시베리아나 어떤 곳으로 불러다가 만일 R와 같은 흉내를 낸다 하면, 하고 생각해 보고는 나는 진저리를 쳤소. 나는 내머리 속에 다시 그러한 생각이 한 조각이라도 들어올 것을 두려워하였소. -급행을 기다리자면 또 사흘을 기다리지 아니하면 아니 되기로 나는 이튿날 새벽에 떠나는 구간차를 타고 F역을 떠나 버렸소. R에게는 고맙다는 편지 한 장만을 써 놓고. 나는 R를 더 보기를 원치 아니하였소. 그것은 반드시 R를 죄인으로 보아서 그런 것은 아니오마는 그저 나는 다시 R를 대면하기를 원치 아니한 것이오. -나는 차가 R의 집 앞을 지날 때에도 R의 집에 대하여서는 외면하였소. -이 모양으로 나는 흥안령을 넘고, 하일라르의 솔밭을 지나서 마침내 이 곳에 온 것이오. -형! 나는 인제는 이 편지를 끝내오. 더 쓸 말도 없거니와 인제는 이것을 쓰기도 싫증이 났소. -이 편지를 쓰기 시작할 때에는 바이칼에 물결이 흉용하더니 이 편지를 끝내는 지금에는 가의 가까운 물에는 얼음이 얼었소. 그리고 저 멀리 푸른 물이 늠실늠실 하얗게 눈 덮인 산 빛과 어울리게 되었소. -사흘이나 이어서 오던 눈이 밤새에 개고 오늘 아침에는 칼날 같은 바람이 눈을 날리고 있소. -나는 이 얼음 위로 걸어서 저 푸른 물 있는 곳까지 가고 싶은 유혹을 금할 수 없소. 더구나 이 편지도 다 쓰고 나니, 인제는 내가 이 세상에서 할 마지막 일까지 다 한 것 같소. -내가 이 앞에 어디로 가서 어찌 될는지는 나도 모르지마는 희미한 소원을 말하면 눈 덮인 시베리아의 인적 없는 삼림 지대로 한정 없이 헤매다가 기운 진하는 곳에서 이 목숨을 마치고 싶소. -최석 군은 `끝'이라는 글자를 썼다가 지워 버리고 딴 종이에다가 이런 말을 썼다 -다 쓰고 나니 이런 편지도 다 부질없는 일이오. 내가 이런 말을 한대야 세상이 믿어 줄 리도 없지 않소. 말이란 소용 없는 것이오. 내가 아무리 내 아내에게 말을 했어도 아니 믿었거든 내 아내도 내 말을 아니 믿었거든 하물며 세상이 내 말을 믿을 리가 있소. 믿지 아니할 뿐 아니라 내 말 중에서 자기네 목적에 필요한 부분만은 믿고, 또 자기네 목적에 필요한 부분은 마음대로 고치고 뒤집고 보태고 할 것이니까, 나는 이 편지를 쓴 것이 한 무익하고 어리석은 일인 줄을 깨달았소. -형이야 이 편지를 아니 보기로니 나를 안 믿겠소? 그 중에는 혹 형이 지금까지 모르던 자료도 없지 아니하니, 형만 혼자 보시고 형만 혼자 내 사정을 알아 주시면 다행이겠소. 세상에 한 믿는 친구를 가지는 것이 저마다 하는 일이겠소? -나는 이 쓸데없는 편지를 몇 번이나 불살라 버리려고 하였으나 그래도 거기도 일종의 애착심이 생기고 미련이 생기는구려. 형 한 분이라도 보여 드리고 싶은 마음이 생기는구려. 내가 S형무소에 입감해 있을 적에 형무소 벽에 죄수가 손톱으로 성명을 새긴 것을 보았소. 뒤에 물었더니 그것은 흔히 사형수가 하는 짓이라고. 사형수가 교수대에 끌려 나가기 바로 전에 흔히 손톱으로 담벼락이나 마룻바닥에 제 이름을 새기는 일이 있다고 하는 말을 들었소. 내가 형에게 쓰는 이 편지도 그 심리와 비슷한 것일까요? -형! 나는 보통 사람보다는, 정보다는 지로, 상식보다는 이론으로, 이해보다는 의리로 살아 왔다고 자신하오. 이를테면 논리학적으로 윤리학적으로 살아온 것이라고 할까. 나는 엄격한 교사요, 교장이었소. 내게는 의지력과 이지력밖에 없는 것 같았소. 그러한 생활을 수십 년 해 오지 아니하였소? 나는 이 앞에 몇십 년을 더 살더라도 내 이 성격이나 생활 태도에는 변함이 없으리라고 자신하였소. 불혹지년이 지났으니 그렇게 생각하였을 것이 아니오? -그런데 형! 참 이상한 일이 있소. 그것은 내가 지금까지 처해 있던 환경을벗어나서 호호 탕탕하게 넓은 세계에 알몸을 내어던짐을 당하니 내 마음 속에는 무서운 여러 가지 변화가 일어나는구려. 나는 이 말도 형에게 아니 하려고 생각하였소. 노여워하지 마시오, 내게까지도 숨기느냐고. 그런 것이 아니오, 형은커녕 나 자신에게까지도 숨기려고 하였던 것이오. 혹시 그런 기다리지 아니 하였던 원, 그런 생각이 내 마음의 하늘에 일어나리라고 상상도 아니하였던, 그런 생각이 일어날 때에는 나는 스스로 놀라고 스스로 슬퍼하였소. 그래서 스스로 숨기기로 하였소. -그 숨긴다는 것이 무엇이냐 하면 그것은 열정이요, 정의 불길이요, 정의 광풍이요, 정의 물결이오. 만일 내 의식이 세계를 평화로운 풀 있고, 꽃 있고, 나무 있는 벌판이라고 하면 거기 난데없는 미친 짐승들이 불을 뿜고 소리를 지르고 싸우고, 영각을 하고 날쳐서, 이 동산의 평화의 화초를 다 짓밟아 버리고 마는 그러한 모양과 같소. -형! 그 이상야릇한 짐승들이 여태껏, 사십 년 간을 어느 구석에 숨어 있었소? 그러다가 인제 뛰어나와 각각 제 권리를 주장하오? -지금 내 가슴 속은 끓소. 내 몸은 바짝 여위었소. 그것은 생리학적으로나 심리학적으로나 타는 것이요, 연소하는 것이오. 그래서 다만 내 몸의 지방만이 타는 것이 아니라, 골수까지 타고, 몸이 탈 뿐이 아니라 생명 그 물건이 타고 있는 것이오. 그러면 어찌할까. -지위, 명성, 습관, 시대 사조 등등으로 일생에 눌리고 눌렸던 내 자아의 일부분이 혁명을 일으킨 것이오? 한 번도 자유로 권세를 부려 보지 못한 본능과 감정들이 내 생명이 끝나기 전에 한 번 날뛰어 보려는 것이오. 이것이 선이오? 악이오? -그들은 내가 지금까지 옳다고 여기고 신성하다고 여기던 모든 권위를 모조리 둘러엎으려고 드오. 그러나 형! 나는 도저히 이 혁명을 용인할 수가 없소. 나는 죽기까지 버티기로 결정을 하였소. 내 속에서 두 세력이 싸우다가 싸우다가 승부가 결정이 못 된다면 나는 승부의 결정을 기다리지 아니하고 살기를 그만두려오. -나는 눈 덮인 삼림 속으로 들어가려오. 나는 V라는 대삼림 지대가 어디인 줄도 알고 거기를 가려면 어느 정거장에서 내릴 것도 다 알아 놓았소. -만일 단순히 죽는다 하면 구태여 멀리 찾아갈 필요도 없지마는 그래도 나 혼자로는 내 사상과 감정의 청산을 하고 싶소. 살 수 있는 날까지 세상을 떠난 곳에서 살다가 완전한 해결을 얻는 날 나는 혹은 승리의, 혹은 패배의 종막을 닫칠 것이오. 만일 해결이 안 되면 안 되는 대로 그치면 그만이지요. -나는 이 붓을 놓기 전에 어젯밤에 꾼 꿈 이야기 하나는 하려오. 꿈이 하도 수상해서 마치 내 전도에 대한 신의 계시와도 같기로 하는 말이오. 그 꿈은 이러하였소. -내가 꽁이깨(꼬이까라는 아라사말로 침대라는 말이 조선 동포의 입으로 변한 말이오.) 짐을 지고 삽을 메고 눈이 덮인 삼림 속을 혼자 걸었소. 이 꽁이깨 짐이란 것은 금점꾼들이 그 여행 중에 소용품, 마른 빵, 소금, 내복 등속을 침대 매트리스에 넣어서 지고 다니는 것이오. 이 짐하고 삽 한 개, 도끼 한 개, 그것이 시베리아로 금을 찾아 헤매는 조선 동포들의 행색이오. 내가 이르쿠츠크에서 이러한 동포를 만났던 것이 꿈으로 되어 나온 모양이오. -나는 꿈에는 세상을 다 잊어버린, 아주 깨끗하고 침착한 사람으로 이 꽁이깨 짐을 지고 삽을 메고 밤인지 낮인지 알 수 없으나 땅은 눈빛으로 희고, 하늘은 구름빛으로 회색인 삼림 지대를 허덕허덕 걸었소. 길도 없는 데를, 인적도 없는 데를. -꿈에도 내 몸은 퍽 피곤해서 쉴 자리를 찾는 마음이었소. -나는 마침내 어떤 언덕 밑 한 군데를 골랐소. 그리고 상시에 이야기에서 들은 대로 삽으로 내가 누울 자리만한 눈을 치고, 그리고는 도끼로 곁에 선 나무 몇 개를 찍어 누이고 거기다가 불을 놓고 그 불김에 녹은 땅을 두어 자나 파내고 그 속에 드러누웠소. 훈훈한 것이 아주 편안하였소. -하늘에는 별이 반짝거렸소. F역에서 보던 바와 같이 큰 별 작은 별도 보이고 평시에 보지 못하던 붉은 별, 푸른 별 들도 보였소. 나는 이 이상한 하늘, 이상한 별들이 있는 하늘을 보고 드러누워 있노라니까 문득 어디서 발자국 소리가 들렸소. 퉁퉁퉁퉁 우루루루…… 나는 벌떡 일어나려 하였으나 몸이 천 근이나 되어서 움직일 수가 없었소. 가까스로 고개를 조금 들고 보니 뿔이 길다랗고 눈이 불같이 붉은 사슴의 떼가 무엇에 놀랐는지 껑충껑충 뛰어 지나가오. 이것은 아마 크로포트킨의 <상호 부조론> 속에 말한 시베리아의 사슴의 떼가 꿈이 되어 나온 모양이오. -그러더니 그 사슴의 떼가 다 지나간 뒤에, 그 사슴의 떼가 오던 방향으로서 정임이가 걸어오는 것이 아니라 스르륵 하고 미끄러져 오오. 마치 인형을 밀어 주는 것같이. -"정임아!" -하고 나는 소리를 치고 몸을 일으키려 하였소. -정임의 모양은 나를 잠깐 보고는 미끄러지는 듯이 흘러가 버리오. -나는 정임아, 정임아를 부르고 팔다리를 부둥거렸소. 그러다가 마침내 내 몸이 번쩍 일으켜짐을 깨달았소. 나는 정임의 뒤를 따랐소. -나는 눈 위로 삼림 속으로 정임의 그림자를 따랐소. 보일 듯 안 보일 듯, 잡힐 듯 안 잡힐 듯, 나는 무거운 다리를 끌고 정임을 따랐소. -정임은 이 추운 날이언만 눈과 같이 흰 옷을 입었소. 그 옷은 옛날 로마 여인의 옷과 같이 바람결에 펄렁거렸소. -"오지 마세요. 저를 따라오지 못하십니다." -하고 정임은 눈보라 속에 가리워 버리고 말았소. 암만 불러도 대답이 없고 눈보라가 다 지나간 뒤에도 붉은 별, 푸른 별과 뿔 긴 사슴의 떼뿐이오. 정임은 보이지 아니하였소. 나는 미칠 듯이 정임을 찾고 부르다가 잠을 깨었소. -꿈은 이것뿐이오. 꿈을 깨어서 창 밖을 바라보니 얼음과 눈에 덮인 바이칼호 위에는 새벽의 겨울 달이 비치어 있었소. 저 멀리 검푸르게 보이는 것이 채 얼어붙지 아니한 물이겠지요. 오늘 밤에 바람이 없고 기온이 내리면 그것마저 얼어붙을는지 모르지요. 벌써 살얼음이 잡혔는지도 모르지요. 아아, 그 속은 얼마나 깊을까. 나는 바이칼의 물 속이 관심이 되어서 못 견디겠소. -형! 나는 자백하지 아니할 수 없소. 이 꿈은 내 마음의 어떤 부분을 설명한 것이라고. 그러나 형! 나는 이것을 부정하려오. 굳세게 부정하려오. 나는 이 꿈을 부정하려오. 억지로라도 부정하려오. 나는 결코 내 속에 일어난 혁명을 용인하지 아니하려오. 나는 그것을 혁명으로 인정하지 아니하려오. 아니오! 아니오! 그것은 반란이오! 내 인격의 통일에 대한 반란이오. 단연코 무단적으로 진정하지 아니하면 아니 될 반란이오. 보시오! 나는 굳게 서서 한 걸음도 뒤로 물러서지 아니할 것이오. 만일에 형이 광야에 구르는 내 시체나 해골을 본다든지, 또는 무슨 인연으로 내 무덤을 발견하는 날이 있다고 하면 그 때에 형은 내가 이 모든 반란을 진정한 개선의 군주로 죽은 것을 알아 주시오. -인제 바이칼에 겨울의 석양이 비치었소. 눈을 인 나지막한 산들이 지는 햇빛에 자줏빛을 발하고 있소. 극히 깨끗하고 싸늘한 광경이오. 아디유! -이 편지를 우편에 부치고는 나는 최후의 방랑의 길을 떠나오. 찾을 수도 없고, 편지 받을 수도 없는 곳으로. -부디 평안히 계시오. 일 많이 하시오. 부인께 문안 드리오. 내 가족과 정임의 일 맡기오. 아디유! -이것으로 최석 군의 편지는 끝났다. -나는 이 편지를 받고 울었다. 이것이 일 편의 소설이라 하더라도 슬픈 일이어든, 하물며 내가 가장 믿고 사랑하는 친구의 일임에야. -이 편지를 받고 나는 곧 최석 군의 집을 찾았다. 주인을 잃은 이 집에서는아이들이 마당에서 떠들고 있었다. -"삼청동 아자씨 오셨수. 어머니, 삼청동 아자씨." -하고 최석 군의 작은딸이 나를 보고 뛰어들어갔다. -최석의 부인이 나와 나를 맞았다. -부인은 머리도 빗지 아니하고, 얼굴에는 조금도 화장을 아니하고, 매무시도 흘러내릴 지경으로 정돈되지 못하였다. 일 주일이나 못 만난 동안에 부인의 모양은 더욱 초췌하였다. -"노석헌테서 무슨 기별이나 있습니까." -하고 나는 무슨 말로 말을 시작할지 몰라서 이런 말을 하였다. -"아니오. 왜 그이가 집에 편지하나요?" -하고 부인은 성난 빛을 보이며, -"집을 떠난 지가 근 사십 일이 되건만 엽서 한 장 있나요. 집안 식구가 다 죽기로 눈이나 깜짝할 인가요. 그저 정임이헌테만 미쳐서 죽을지 살지를 모르지요." -하고 울먹울먹한다. -"잘못 아십니다. 부인께서 노석의 마음을 잘못 아십니다. 그런 것이 아닙니다." -하고 나는 확신 있는 듯이 말을 시작하였다. -"노석의 생각을 부인께서 오해하신 줄은 벌써부터 알았지마는 오늘 노석의 편지를 받아보고 더욱 분명히 알았습니다." -하고 나는 부인의 표정의 변화를 엿보았다. -"편지가 왔어요?" -하고 부인은 놀라면서, -"지금 어디 있어요? 일본 있지요?" -하고 질투의 불길을 눈으로 토하였다. -"일본이 아닙니다. 노석은 지금 아라사에 있습니다." -"아라사요?" -하고 부인은 놀라는 빛을 보이더니, -"그럼 정임이를 데리고 아주 아라사로 가케오치를 하였군요." -하고 히스테리컬한 웃음을 보이고는 몸을 한 번 떨었다. -부인은 남편과 정임의 관계를 말할 때마다 이렇게 경련적인 웃음을 웃고 몸을 떠는 것이 버릇이었다. -"아닙니다. 노석은 혼자 가 있습니다. 그렇게 오해를 마세요." -하고 나는 보에 싼 최석의 편지를 내어서 부인의 앞으로 밀어 놓으며, -"이것을 보시면 다 아실 줄 압니다. 어쨌으나 노석은 결코 정임이를 데리고 간 것이 아니요, 도리어 정임이를 멀리 떠나서 간 것입니다. 그러나 그보다도 중대 문제가 있습니다. 노석은 이 편지를 보면 죽을 결심을 한 모양입니다." -하고 부인의 주의를 질투로부터 그 남편에게 대한 동정에 끌어 보려 하였다. -"흥. 왜요? 시체 정사를 하나요? 좋겠습니다. 머리가 허연 것이 딸자식 같은 계집애허구 정사를 한다면 그 꼴 좋겠습니다. 죽으라지요. 죽으래요. 죽는 것이 낫지요. 그리구 살아서 무엇 해요?" -내 뜻은 틀려 버렸다. 부인의 표정과 말에서는 더욱더욱 독한 질투의 안개와 싸늘한 얼음가루가 날았다. -나는 부인의 이 태도에 반감을 느꼈다. 아무리 질투의 감정이 강하다 하기로, 사람의 생명이 제 남편의 생명이 위태함에도 불구하고 오직 제 질투의 감정에만 충실하려 하는 그 태도가 불쾌하였다. 그래서 나는, -"나는 그만큼 말씀해 드렸으니 더 할 말씀은 없습니다. 아무려나 좀더 냉정하게 생각해 보세요. 그리고 이것을 읽어 보세요." -하고 일어나서 집으로 돌아와 버리고 말았다. -도무지 불쾌하기 그지없는 날이다. 최석의 태도까지도 불쾌하다. 달아나긴 왜 달아나? 죽기는 왜 죽어? 못난 것! 기운 없는 것! 하고 나는 최석이가 곁에 섰기나 한 것처럼 눈을 흘기고 중얼거렸다. -최석의 말대로 최석의 부인은 악한 사람이 아니요, 그저 보통인 여성일는지 모른다. 그렇다 하면 여자의 마음이란 너무도 질투의 종이 아닐까. 설사 남편 되는 최석의 사랑이 아내로부터 정임에게로 옮아 갔다고 하더라도 그것을 질투로 회복하려는 것은 어리석은 일이다. 이미 사랑이 떠난 남편을 네 마음대로 가거라 하고 자발적으로 내어버릴 것이지마는 그것을 못 할 사정이 있다고 하면 모르는 체하고 내버려 둘 것이 아닌가. 그래도 이것은 우리네 남자의 이론이요, 여자로는 이런 경우에 질투라는 반응밖에 없도록 생긴 것일까 나는 이런 생각을 하고 있었다. -시계가 아홉시를 친다. -남대문 밖 정거장을 떠나는 열차의 기적 소리가 들린다. -나는 만주를 생각하고, 시베리아를 생각하고 최석을 생각하였다. 마음으로는 정임을 사랑하면서 그 사랑을 발표할 수 없어서 시베리아의 눈 덮인 삼림 속으로 방황하는 최석의 모양이 최석의 꿈 이야기에 있는 대로 눈앞에 선하게 떠나온다. -`사랑은 목숨을 빼앗는다.' -하고 나는 사랑일래 일어나는 인생의 비극을 생각하였다. 그러나 최석의 경우는 보통 있는 공식과는 달라서 사랑을 죽이기 위해서 제 목숨을 죽이는 것이었다. 그렇다 하더라도, -`사랑은 목숨을 빼앗는다.' -는 데에는 다름이 없다. -나는 불쾌도 하고 몸도 으스스하여 얼른 자리에 누웠다. 며느리가 들어온 뒤부터 사랑 생활을 하는 지가 벌써 오 년이나 되었다. 우리 부처란 인제는 한 역사적 존재요, 윤리적 관계에 불과하였다. 오래 사귄 친구와 같은 익숙함이 있고, 집에 없지 못할 사람이라는 필요감도 있지마는 젊은 부처가 가지는 듯한 그런 정은 벌써 없는 지 오래였다. 아내도 나를 대하면 본체만체, 나도 아내를 대하면 본체만체, 무슨 필요가 있어서 말을 붙이더라도 아무쪼록 듣기 싫기를 원하는 듯이 톡톡 내던졌다. 아내도 근래에 와서는 옷도 아무렇게나, 머리도 아무렇게나, 어디 출입할 때밖에는 도무지 화장을 아니 하였다. -그러나 그렇다고 우리 부처의 새가 좋지 못한 것도 아니었다. 서로 소중히 여기는 마음도 있었다. 아내가 안에 있다고 생각하면 마음이 든든하고 또 아내의 말에 의하건대 내가 사랑에 있거니 하면 마음이 든든하다고 한다. -우리 부처의 관계는 이러한 관계다. -나는 한 방에서 혼자 잠을 자는 것이 습관이 되어서 누가 곁에 있으면 잠이 잘 들지 아니하였다. 혹시 어린것들이 매를 얻어맞고 사랑으로 피난을 와서 울다가 내 자리에서 잠이 들면 귀엽기는 귀여워도 잠자리는 편안치 아니하였다. 나는 책을 보고 글을 쓰고 공상을 하고 있으면 족하였다. 내게는 아무 애욕적 요구도 없었다. 이것은 내 정력이 쇠모한 까닭인지 모른다. -그러나 최석의 편지를 본 그 날 밤에는 도무지 잠이 잘 들지 아니하였다. 최석의 편지가 최석의 고민이 내 졸던 의식에 무슨 자극을 준 듯하였다. 적막한 듯하였다. 허전한 듯하였다. 무엇인지 모르나 그리운 것이 있는 것 같았다. -"어, 이거 안되었군." -하고 나는 벌떡 일어나 담배를 피워 물었다. -"나으리 주무셔 곕시오?" -하고 아범이 전보를 가지고 왔다. -"명조 경성 착 남정임" -이라는 것이었다. -"정임이가 와?" -하고 나는 전보를 다시 읽었다. -최석의 그 편지를 보면 최석 부인에게는 어떤 반응이 일어나고 정임에게는 어떤 반응이 일어날까, 하고 생각하면 자못 마음이 편하지 못하였다. -이튿날 아침에 나는 부산서 오는 차를 맞으려고 정거장에를 나갔다. -차는 제 시간에 들어왔다. 남정임은 슈트케이스 하나를 들고 차에서 내렸다. 검은 외투에 검은 모자를 쓴 그의 얼굴은 더욱 해쓱해 보였다. -"선생님!" -하고 정임은 나를 보고 손에 들었던 짐을 땅바닥에 내려놓고, 내 앞으로 왔다. -"풍랑이나 없었나?" -하고 나는 내 손에 잡힌 정임의 손이 싸늘한 것을 근심하였다. -"네. 아주 잔잔했습니다. 저같이 약한 사람도 밖에 나와서 바다 경치를 구경하였습니다." -하고 정임은 사교적인 웃음을 웃었다. 그러나 그의 눈에는 눈물이 있는 것 같았다. -"최 선생님 어디 계신지 아세요?" -하고 정임은 나를 따라 서면서 물었다. -"나도 지금까지 몰랐는데 어제 편지를 하나 받았지." -하는 것이 내 대답이었다. -"네? 편지 받으셨어요? 어디 계십니까?" -하고 정임은 걸음을 멈추었다. -"나도 몰라." -하고 나도 정임과 같이 걸음을 멈추고, -"그 편지를 쓴 곳도 알고 부친 곳도 알지마는 지금 어디로 갔는지 그것은 모르지. 찾을 생각도 말고 편지할 생각도 말라고 했으니까." -하고 사실대로 대답하였다. -"어디야요? 그 편지 부치신 곳이 어디야요? 저 이 차로 따라갈 테야요." -하고 정임은 조급하였다. -"갈 때에는 가더라도 이 차에야 갈 수가 있나." -하고 나는 겨우 정임을 끌고 들어왔다. -정임을 집으로 데리고 와서 대강 말을 하고, 이튿날 새벽 차로 떠난다는 것을, -"가만 있어. 어떻게 계획을 세워 가지고 해야지." -하여 가까스로 붙들어 놓았다. -아침을 먹고 나서 최석 집에를 가 보려고 할 즈음에 순임이가 와서 마루 끝에 선 채로, -"선생님, 어머니가 잠깐만 오십시사구요." -하였다. -"정임이가 왔다." -하고 내가 그러니까, -"정임이가요?" -하고 순임은 깜짝 놀라면서, -"정임이는 아버지 계신 데를 알아요?" -하고 물었다. -"정임이도 모른단다. 너 아버지는 시베리아에 계시고 정임이는 동경 있다가 왔는데 알 리가 있니?" -하고 나는 순임의 생각을 깨뜨리려 하였다. 순임은, -"정임이가 어디 있어요?" -하고 방들 있는 곳을 둘러보며, -"언제 왔어요?" -하고는 그제야 정임에게 대한 반가운 정이 발하는 듯이, -"정임아!" -하고 불러 본다. -"언니요? 여기 있수." -하고 정임이가 머릿방 문을 열고 옷을 갈아입던 채로 고개를 내어민다. -순임은 구두를 차내버리듯이 벗어 놓고 정임의 방으로 뛰어들어간다. -나는 최석의 집에를 가느라고 외투를 입고 모자를 쓰고 정임의 방문을 열어 보았다. 두 처녀는 울고 있었다. -"정임이도 가지. 아주머니 뵈러 안 가?" -하고 나는 정임을 재촉하였다. -"선생님 먼저 가 계셔요." -하고 순임이가 눈물을 씻고 일어나면서, -"이따가 제가 정임이허구 갑니다." -하고 내게 눈을 끔쩍거려 보였다. 갑자기 정임이가 가면 어머니와 정임이와 사이에 어떠한 파란이 일어나지나 아니할까 하고 순임이가 염려하는 것이었다. 순임도 인제는 노성하여졌다고 나는 생각하였다. -"선생님 이 편지가 다 참말일까요?" -하고 나를 보는 길로 최석 부인이 물었다. 최석 부인은 히스테리를 일으킨 사람 모양으로 머리와 손을 떨었다. -나는 참말이냐 하는 것이 무엇을 가리키는 말인지 분명하지 아니하여서, -"노석이 거짓말할 사람입니까?" -하고 대체론으로 대답하였다. -"앉으십쇼. 앉으시란 말씀도 안 하고." -하고 부인은 침착한 모양을 보이려고 빙그레 웃었으나, 그것은 실패였다. -"그게 참말일까요? 정임이가 아기를 뗀 것이 아니라, 폐가 나빠서 피를 토하고 입원하였다는 것이?" -하고 부인은 중대하다는 표정을 가지고 묻는다. -"그럼 그것이 참말이 아니구요. 아직도 그런 의심을 가지고 계십니까. 정임이와 한 방에 있는 학생이 모함한 것이라고 안 그랬어요? 그게 말이 됩니까." -하고 언성을 높여서 대답하였다. -"그럼 왜 정임이가 호텔에서 왜 아버지한테 한 번 안아 달라고 그래요? 그 편지에 쓴 대로 한 번 안아만 보았을까요?" -이것은 부인의 둘째 물음이었다. -"나는 그뿐이라고 믿습니다. 그것이 도리어 깨끗하다는 표라고 믿습니다. 안 그렇습니까?" -하고 나는 딱하다는 표정을 하였다. -"글쎄요." -하고 부인은 한참이나 생각하고 있다가, -"정말 애 아버지가 혼자 달아났을까요? 정임이를 데리고 가케오치한 것이 아닐까요? 꼭 그랬을 것만 같은데." -하고 부인은 괴로운 표정을 감추려는 듯이 고개를 숙인다. -나는 남편에게 대한 아내의 의심이 어떻게 깊은가에 아니 놀랄 수가 없어서, -"허." -하고 한 마디 웃고, -"그렇게 수십 년 동안 부부 생활을 하시고도 그렇게 노석의 인격을 몰라 주십니까. 나는 부인께서 하시는 말씀이 부러 하시는 농담으로밖에 아니 들립니다. 정임이가 지금 서울 있습니다." -하고 또 한 번 웃었다. 정말 기막힌 웃음이었다. -"정임이가 서울 있어요?" -하고 부인은 펄쩍 뛰면서, -"어디 있다가 언제 왔습니까? 그게 정말입니까?" -하고 의아한 빛을 보인다. 꼭 최석이하고 함께 달아났을 정임이가 서울에 있을 리가 없는 것이었다. -"동경서 오늘 아침에 왔습니다. 지금 우리 집에서 순임이허구 이야기를 하고 있으니까 조금 있으면 뵈오러 올 것입니다." -하고 나는 정임이가 분명히 서울 있는 것을 일일이 증거를 들어서 증명하였다. 그리고 우스운 것을 속으로 참았다. 그러나 다음 순간에는 이 병들고 늙은 아내의 질투와 의심으로 괴로워서 덜덜덜덜 떨고 앉았는 것을 가엾게 생각하였다. -정임이가 지금 서울에 있는 것이 더 의심할 여지가 없는 사실임이 판명되매, 부인은 도리어 낙망하는 듯하였다. 그가 제 마음대로 그려 놓고 믿고 하던 모든 철학의 계통이 무너진 것이었다. -한참이나 흩어진 정신을 못 수습하는 듯이 앉아 있더니 아주 기운 없는 어조로, -"선생님 애 아버지가 정말 죽을까요? 정말 영영 집에를 안 돌아올까요?" -하고 묻는다. 그 눈에는 벌써 눈물이 어리었다. -"글쎄요. 내 생각 같아서는 다시는 집에 돌아오지 아니할 것 같습니다. 또 그만치 망신을 했으니, 이제 무슨 낯으로 돌아옵니까. 내라도 다시 집에 돌아올 생각은 아니 내겠습니다." -하고 나는 의식적으로 악의를 가지고 부인의 가슴에 칼을 하나 박았다. -그 칼은 분명히 부인의 가슴에 아프게 박힌 모양이었다. -"선생님. 어떡하면 좋습니까. 애 아버지가 죽지 않게 해 주세요. 그렇지 않아도 순임이년이 제가 걔 아버지를 달아나게나 한 것처럼 원망을 하는데요. 그러다가 정녕 죽으면 어떻게 합니까. 제일 딴 자식들의 원망을 들을까봐 겁이 납니다. 선생님, 어떻게 애 아버지를 붙들어다 주세요." -하고 마침내 참을 수 없이 울었다. 말은 비록 자식들의 원망이 두렵다고 하지마는 질투의 감정이 스러질 때에 그에게는 남편에게 대한 아내의 애정이 막혔던 물과 같이 터져 나온 것이라고 나는 해석하였다. -"글쎄, 어디 있는 줄 알고 찾습니까. 노석의 성미에 한번 아니 한다고 했으면 다시 편지할 리는 만무하다고 믿습니다." -하여 나는 부인의 가슴에 둘째 칼날을 박았다. -나는 비록 최석의 부인이 청하지 아니하더라도 최석을 찾으러 떠나지 아니하면 아니 될 의무를 진다. 산 최석을 못 찾더라도 최석의 시체라도, 무덤이라도, 죽은 자리라도, 마지막 있던 곳이라도 찾아보지 아니하면 아니 될 의무를 깨닫는다. -그러나 시국이 변하여 그 때에는 아라사에 가는 것은 여간 곤란한 일이 아니었다. 그 때에는 북만의 풍운이 급박하여 만주리를 통과하기는 사실상 불가능에 가까웠다. 마점산(馬占山) 일파의 군대가 흥안령, 하일라르 등지에 웅거하여 언제 대충돌이 폭발될는지 모르던 때였다. 이 때문에 시베리아에 들어가기는 거의 절망 상태라고 하겠고, 또 관헌도 아라사에 들어가는 여행권을 잘 교부할 것 같지 아니하였다. -부인은 울고, 나는 이런 생각 저런 생각 하고 있는 동안에 문 밖에는 순임이, 정임이가 들어오는 소리가 들렸다. -"아이, 정임이냐." -하고 부인은 반갑게 허리 굽혀 인사하는 정임의 어깨에 손을 대고, -"자 앉아라. 그래 인제 병이 좀 나으냐…… 수척했구나. 더 노성해지구 반 년도 못 되었는데." -하고 정임에게 대하여 애정을 표하는 것을 보고 나는 의외지마는 다행으로 생각하였다. 나는 정임이가 오면 보기 싫은 한 신을 연출하지 않나 하고 근심하였던 것이다. -"희 잘 자라요?" -하고 정임은 한참이나 있다가 비로소 입을 열었다. -"응, 잘 있단다. 컸나 가 보아라." -하고 부인은 더욱 반가운 표정을 보인다. -"어느 방이야?" -하고 정임은 선물 보퉁이를 들고 순임과 함께 나가 버린다. 여자인 정임은 희와 순임과 부인과 또 순임의 다른 동생에게 선물 사 오는 것을 잊어버리지 아니하였다. -정임과 순임은 한 이삼 분 있다가 돌아왔다. 밖에서 희가 무엇이라고 지절대는 소리가 들린다. 아마 정임이가 사다 준 선물을 받고 좋아하는 모양이다. -정임은 들고 온 보퉁이에서 여자용 배스로브 하나를 내어서 부인에게주며, -"맞으실까?" -하였다. -"아이 그건 무어라고 사 왔니?" -하고 부인은 좋아라고 입어 보고, 이리 보고 저리 보고 하면서, -"난 이런 거 처음 입어 본다." -하고 자꾸 끈을 동여맨다. -"정임이가 난 파자마를 사다 주었어." -하고 순임은 따로 쌌던 굵은 줄 있는 융 파자마를 내어서 경매장 사람 모양으로 흔들어 보이며, -"어머니 그 배스로브 나 주우. 어머닌 늙은이가 그건 입어서 무엇 하우?" -하고 부인이 입은 배스로브를 벗겨서 제가 입고 두 호주머니에 손을 넣고 어기죽어기죽하고 서양 부인네 흉내를 낸다. -"저런 말괄량이가 너도 정임이처럼 좀 얌전해 보아라." -하고 부인은 순임을 향하여 눈을 흘긴다. -이 모양으로 부인과 정임과의 대면은 가장 원만하게 되었다. -그러나 부인은 정임에게 최석의 편지를 보이기를 원치 아니하였다. 편지가 왔다는 말조차 입 밖에 내지 아니하였다. 그러나 순임이가 정임에게 대하여 표하는 애정은 여간 깊지 아니하였다. 그 둘은 하루 종일 같이 있었다. 정임은 그 날 저녁에 나를 보고, -"순임이헌테 최 선생님 편지 사연은 다 들었어요. 순임이가 그 편지를 훔쳐다가 얼른얼른 몇 군데 읽어도 보았습니다. 순임이가 저를 퍽 동정하면서 절더러 최 선생을 따라가 보라고 그래요. 혼자 가기가 어려우면 자기허구 같이 가자고. 가서 최 선생을 데리고 오자고. 어머니가 못 가게 하거든 몰래 둘이 도망해 가자고. 그래서 그러자고 그랬습니다. 안됐지요. 선생님?" -하고 저희끼리 작정은 다 해 놓고는 슬쩍 내 의향을 물었다. -"젊은 여자 단둘이서 먼 여행을 어떻게 한단 말이냐? 게다가 지금 북만주 형세가 대단히 위급한 모양인데. 또 정임이는 그 건강 가지고 어디를 가, 이 추운 겨울에?" -하고 나는 이런 말이 다 쓸데없는 말인 줄 알면서도 어른으로서 한 마디 안 할 수 없어서 하였다. 정임은 더 제 뜻을 주장하지도 아니하였다. -그 날 저녁에 정임은 순임의 집에서 잤는지 집에 오지를 아니하였다. -나는 이 일을 어찌하면 좋은가, 이 두 여자의 행동을 어찌하면 좋은가 하고 혼자 끙끙 생각하고 있었다. -이튿날 나는 궁금해서 최석의 집에를 갔더니 부인이, -"우리 순임이 댁에 갔어요?" -하고 의외의 질문을 하였다. -"아니오." -하고 나는 놀랐다. -"그럼, 이것들이 어딜 갔어요? 난 정임이허구 댁에서 잔 줄만 알았는데." -하고 부인은 무슨 불길한 것이나 본 듯이 몸을 떤다. 히스테리가 일어난 것이었다. -나는 입맛을 다시었다. 분명히 이 두 여자가 시베리아를 향하고 떠났구나 하였다. -그 날은 소식이 없이 지났다. 그 이튿날도 소식이 없이 지났다. -최석 부인은 딸까지 잃어버리고 미친 듯이 울고 애통하다가 머리를 싸매고 누워 버리고 말았다. -정임이와 순임이가 없어진 지 사흘 만에 아침 우편에 편지 한 장을 받았다. 그 봉투는 봉천 야마도 호텔 것이었다. 그 속에는 편지 두 장이 들어 있었다. 한 장은 , -선생님! 저는 아버지를 위하여, 정임을 위하여 정임과 같이 집을 떠났습니다. -어머님께서 슬퍼하실 줄은 알지마는 저희들이 다행히 아버지를 찾아서 모시고 오면 어머니께서도 기뻐하실 것을 믿습니다. 저희들이 가지 아니하고는 아버지는 살아서 돌아오실 것 같지 아니합니다. 아버지를 이처럼 불행하시게 한 죄는 절반은 어머니께 있고, 절반은 제게 있습니다. 저는 아버지 일을 생각하면 가슴이 미어지고 이가 갈립니다. 저는 아무리 해서라도 아버지를 찾아내어야겠습니다. -저는 정임을 무한히 동정합니다. 저는 어려서 정임을 미워하고 아버지를 미워하였지마는 지금은 아버지의 마음과 정임의 마음을 알아볼 만치 자랐습니다. -선생님! 저희들은 둘이 손을 잡고 어디를 가서든지 아버지를 찾아내겠습니다. 하나님의 사자가 낮에는 구름이 되고 밤에는 별이 되어서 반드시 저희들의 앞길을 인도할 줄 믿습니다. -선생님, 저희 어린것들의 뜻을 불쌍히 여기셔서 돈 천 원만 전보로 보내 주시기를 바랍니다. -만일 만주리로 가는 길이 끊어지면 몽고로 자동차로라도 가려고 합니다. 아버지 편지에 적힌 F역의 R씨를 찾고, 그리고 바이칼 호반의 바이칼리스코에를 찾아, 이 모양으로 찾으면 반드시 아버지를 찾아 내고야 말 것을 믿습니다. -선생님, 돈 천 원만 봉천 야마도 호텔 최순임 이름으로 부쳐 주세요. 그리고 어머니헌테는 아직 말씀 말아 주세요. -선생님. 이렇게 걱정하시게 해서 미안합니다. 용서하세요. -순임 상서 -이렇게 써 있다. 또 한 장에는, -선생님! 저는 마침내 돌아오지 못할 길을 떠나나이다. 어디든지 최 선생님을 뵈옵는 곳에서 이 몸을 묻어 버리려 하나이다. 지금 또 몸에 열이 나는 모양이요, 혈담도 보이오나 최 선생을 뵈올 때까지는 아무리 하여서라도 이 목숨을 부지하려 하오며, 최 선생을 뵈옵고 제가 진 은혜를 감사하는 한 말씀만 사뢰면 고대 죽사와도 여한이 없을까 하나이다. -순임 언니가 제게 주시는 사랑과 동정은 오직 눈물과 감격밖에 더 표할 말씀이 없나이다. 순임 언니가 저를 보호하여 주니 마음이 든든하여이다……. -이라고 하였다. -편지를 보아야 별로 놀랄 것은 없었다. 다만 말괄량이로만 알았던 순임의 속에 어느새에 그러한 감정이 발달하였나 하는 것을 놀랄 뿐이었다. -그러나 걱정은 이것이다. 순임이나 정임이나 다 내가 감독해야 할 처지에 있거늘 그들이 만리 긴 여행을 떠난다고 하니 감독자인 내 태도를 어떻게 할까 하는 것이다. -나는 편지를 받는 길로 우선 돈 천 원을 은행에 가서 찾아다 놓았다. -암만해도 내가 서울에 가만히 앉아서 두 아이에게 돈만 부쳐 주는 것이 인정에 어그러지는 것 같아서 나는 여러 가지로 주선을 하여서 여행의 양해를 얻어 가지고 봉천을 향하여 떠났다. -내가 봉천에 도착한 것은 밤 열시가 지나서였다. 순임과 정임은 자리옷 바람으로 내 방으로 달려와서 반가워하였다. 그들이 반가워하는 양은 실로 눈물이 흐를 만하였다. -"아이구 선생님!" -"아이구 어쩌면!" -하는 것이 그들의 내게 대한 인사의 전부였다. -"정임이 어떠오?" -하고 나는 순임의 편지에 정임이가 열이 있단 말을 생각하였다. -"무어요. 괜찮습니다." -하고 정임은 웃었다. -전등빛에 보이는 정임의 얼굴은 그야말로 대리석으로 깎은 듯하였다. 여위고 핏기가 없는 것이 더욱 정임의 용모에 엄숙한 맛을 주었다. -"돈 가져오셨어요?" -하고 순임이가 어리광 절반으로 묻다가 내가 웃고 대답이 없음을 보고, -"우리를 붙들러 오셨어요?" -하고 성내는 양을 보인다. -"그래 둘이서들 간다니 어떻게 간단 말인가. 시베리아가 어떤 곳에 붙었는지 알지도 못하면서." -하고 나는 두 사람이 그리 슬퍼하지 아니하는 순간을 보는 것이 다행하여서 농담삼아 물었다. -"왜 몰라요? 시베리아가 저기 아니야요?" -하고 순임이가 산해관 쪽을 가리키며, -"우리도 지리에서 배워서 다 알아요. 어저께 하루 종일 지도를 사다 놓고 연구를 하였답니다. 봉천서 신경, 신경서 하얼빈, 하얼빈에서 만주리, 만주리에서 이르쿠츠크, 보세요, 잘 알지 않습니까. 또 만일 중동 철도가 불통이면 어떻게 가는고 하니 여기서 산해관을 가고, 산해관서 북경을 가지요. 그리고는 북경서 장가구를 가지 않습니까. 장가구서 자동차를 타고 몽고를 통과해서 가거든요. 잘 알지 않습니까." -하고 정임의 허리를 안으며, -"그렇지이?" -하고 자신 있는 듯이 웃는다. -"또 몽고로도 못 가게 되어서 구라파를 돌게 되면?" -하고 나는 교사가 생도에게 묻는 모양으로 물었다. -"네, 저 인도양으로 해서 지중해로 해서 프랑스로 해서 그렇게 가지요." -"허, 잘 아는구나." -하고 나는 웃었다. -"그렇게만 알아요? 또 해삼위로 해서 가는 길도 알아요. 저희를 어린애로 아시네." -"잘못했소." -"하하." -"후후." -사실 그들은 벌써 어린애들은 아니었다. 순임도 벌써 그 아버지의 말할 수 없는 사정에 동정할 나이가 되었다. 순임이가 기어다닌 것은 본 나로는 이것도 이상하게 보였다. 나는 벌써 나이 많았구나 하는 생각이 나지 아니할 수 없었다. -나는 잠 안 드는 하룻밤을 지내면서 옆방에서 정임이가 기침을 짓는 소리를 들었다. 그 소리는 내 가슴을 아프게 하였다. -이튿날 나는 두 사람에게 돈 천 원을 주어서 신경 가는 급행차를 태워 주었다. 대륙의 이 건조하고 추운 기후에 정임의 병든 폐가 견디어 날까 하고 마음이 놓이지 아니하였다. 그러나 나는 그들을 가라고 권할 수는 있어도 가지 말라고 붙들 수는 없었다. 다만 제 아버지, 제 애인을 죽기 전에 만날 수 있기만 빌 뿐이었다. -나는 두 아이를 북쪽으로 떠나 보내고 혼자 여관에 들어와서 도무지 정신을 진정하지 못하여 술을 먹고 잊으려 하였다. 그러다가 그 날 밤차로 서울로 돌아왔다. -이튿날 아침에 나는 최석 부인을 찾아서 순임과 정임이가 시베리아로 갔단 말을 전하였다. -그 때에 최 부인은 거의 아무 정신이 없는 듯하였다. 아무 말도 하지 아니하고 울고만 있었다. -얼마 있다가 부인은, -"그것들이 저희들끼리 가서 괜찮을까요?" -하는 한 마디를 할 뿐이었다. -며칠 후에 순임에게서 편지가 왔다. 그것은 하얼빈에서 부친 것이었다. -하얼빈을 오늘 떠납니다. 하얼빈에 와서 아버지 친구 되시는 R소장을 만나뵈옵고 아버지 일을 물어 보았습니다. 그리고 저희 둘이서 찾아 떠났다는 말씀을 하였더니 R소장이 대단히 동정하여서 여행권도 준비해 주시기로 저희는 아버지를 찾아서 오늘 오후 모스크바 가는 급행으로 떠납니다. 가다가 F역에 내리기는 어려울 듯합니다. 정임의 건강이 대단히 좋지 못합니다. 일기가 갑자기 추워지는 관계인지 정임의 신열이 오후면 삼십팔 도를 넘고 기침도 대단합니다. 저는 염려가 되어서 정임더러 하얼빈에서 입원하여 조리를 하라고 권하였지마는 도무지 듣지를 아니합니다. 어디까지든지 가는 대로 가다가 더 못 가게 되면 그 곳에서 죽는다고 합니다. -저는 그 동안 며칠 정임과 같이 있는 중에 정임이가 어떻게 아름답고 높고 굳세게 깨끗한 여자인 것을 발견하였습니다. 저는 지금까지 정임을 몰라본 것을 부끄럽게 생각합니다. 그리고 또 제 아버지께서 어떻게 갸륵한 어른이신 것을 인제야 깨달았습니다. 자식 된 저까지도 아버지와 정임과의 관계를 의심하였습니다. 의심하는 것보다는 세상에서 말하는 대로 믿고 있었습니다. 그러나 정임을 만나 보고 정임의 말을 듣고 아버지께서 선생님께 드린 편지가 모두 참인 것을 깨달았습니다. 아버지께서는 친구의 의지 없는 딸인 정임을 당신의 친혈육인 저와 꼭 같이 사랑하려고 하신 것이었습니다. 그것이 얼마나 갸륵한 일입니까. 그런데 제 어머니와 저는 그 갸륵하신 정신을 몰라보고 오해하였습니다. 어머니는 질투하시고 저는 시기하였습니다. 이것이 얼마나 아버지를 그렇게 갸륵하신 아버지를 몰라뵈온 것입니다. 이것이 얼마나 부끄럽고 원통한 일입니까. -선생님께서도 여러 번 아버지의 인격이 높다는 것을 저희 모녀에게 설명해 주셨습니다마는 마음이 막힌 저는 선생님의 말씀도 믿지 아니하였습니다. -선생님, 정임은 참으로 아버지를 사랑합니다. 정임에게는 이 세상에 아버지밖에는 사랑하는 아무것도 없이, 그렇게 외●으로, 그렇게 열렬하게 아버지를 사모하고 사랑합니다. 저는 잘 압니다. 정임이가 처음에는 아버지로 사랑하였던 것을, 그러나 어느 새에 정임의 아버지에게 대한 사랑이 무엇인지 모를 사랑으로 변한 것을, 그것이 연애냐 하고 물으면 정임은 아니라고 할 것입니다. 정임의 그 대답은 결코 거짓이 아닙니다. 정임은 숙성하지마는 아직도 극히 순결합니다. 정임은 부모를 잃은 후에 아버지밖에 사랑한 사람이 없습니다. 또 아버지에게밖에 사랑받던 일도 없습니다. 그러니깐 정임은 아버지를 그저 사랑합니다 전적으로 사랑합니다. 선생님, 정임의 사랑에는 아버지에 대한 자식의 사랑, 오라비에 대한 누이의 사랑, 사내 친구에 대한 여자 친구의 사랑, 애인에 대한 애인의 사랑, 이 밖에 존경하고 숭배하는 선생에 대한 제자의 사랑까지, 사랑의 모든 종류가 포함되어 있는 것을 저는 발견하였습니다. -선생님, 정임의 정상은 차마 볼 수가 없습니다. 아버지의 안부를 근심하는 양은 제 몇십 배나 되는지 모르게 간절합니다. 정임은 저 때문에 아버지가 불행하게 되셨다고 해서 차마 볼 수 없게 애통하고 있습니다. 진정을 말씀하오면 저는 지금 아버지보다도 어머니보다도 정임에게 가장 동정이 끌립니다. 선생님, 저는 아버지를 찾아가는 것이 아니라 정임을 돕기 위하여 간호하기 위하여 가는 것 같습니다. -선생님, 저는 아직 사랑이란 것이 무엇인지를 모릅니다. 그러나 정임을 보고 사랑이란 것이 어떻게 신비하고 열렬하고 놀라운 것인가를 안 것 같습니다. -순임의 편지는 계속된다. -선생님, 하얼빈에 오는 길에 송화강 굽이를 볼 때에는 정임이가 어떻게나 울었는지, 그것은 차마 볼 수가 없었습니다. 아버지께서 송화강을 보시고 감상이 깊으셨더란 것을 생각한 것입니다. 무인지경으로, 허옇게 눈이 덮인 벌판으로 흘러가는 송화강 굽이, 그것은 슬픈 풍경입니다. 아버지께서 여기를 지나실 때에는 마른 풀만 있는 광야였을 것이니 그 때에는 더욱 황량하였을 것이라고 정임은 말하고 웁니다. -정임은 제가 아버지를 아는 것보다 아버지를 잘 아는 것 같습니다. 평소에 아버지와는 그리 접촉이 없건마는 정임은 아버지의 의지력, 아버지의 숨은 열정, 아버지의 성미까지 잘 압니다. 저는 정임의 말을 듣고야 비로소 참 그래, 하는 감탄을 발한 일이 여러 번 있습니다. -정임의 말을 듣고야 비로소 아버지가 남보다 뛰어나신 인물인 것을 깨달았습니다. 아버지는 정의감이 굳세고 겉으로는 싸늘하도록 이지적이지마는 속에는 불 같은 열정이 있으시고, 아버지는 쇠 같은 의지력과 칼날 같은 판단력이 있어서 언제나 주저하심이 없고 또 흔들리심이 없다는 것, 아버지께서는 모든 것을 용서하고 모든 것을 호의로 해석하여서 누구를 미워하거나 원망하심이 없는 등, 정임은 아버지의 마음의 목록과 설명서를 따로 외우는 것처럼 아버지의 성격을 설명합니다. 듣고 보아서 비로소 아버지의 딸인 저는 내 아버지가 어떤 아버지인가를 알았습니다. -선생님, 이해가 사랑을 낳는단 말씀이 있지마는 저는 정임을 보아서 사랑이 이해를 낳는 것이 아닌가 합니다. -어쩌면 어머니와 저는 평생을 아버지를 모시고 있으면서도 아버지를 몰랐습니까. 이성이 무디고 양심이 흐려서 그랬습니까. 정임은 진실로 존경할 여자입니다. 제가 남자라 하더라도 정임을 아니 사랑하고는 못 견디겠습니다. -아버지는 분명 정임을 사랑하신 것입니다. 처음에는 친구의 딸로, 다음에는 친딸과 같이, 또 다음에는 무엇인지 모르게 뜨거운 사랑이 생겼으리라고 믿습니다. 그것을 아버지는 죽인 것입니다. 그것을 죽이려고 이 달할 수 없는 사랑을 죽이려고 시베리아로 달아나신 것입니다. 인제야 아버지께서 선생님께 하신 편지의 뜻이 알아진 것 같습니다. 백설이 덮인 시베리아의 삼림 속으로 혼자 헤매며 정임에게로 향하는 사랑을 죽이려고 무진 애를 쓰시는 그 심정이 알아지는 것 같습니다. -선생님 이것이 얼마나 비참한 일입니까. 저는 정임의 짐에 지니고 온 일기를 보다가 이러한 구절을 발견하였습니다. -선생님. 저는 세인트 오거스틴의 <참회록>을 절반이나 다 보고 나도 잠이 들지 아니합니다. 잠이 들기 전에 제가 항상 즐겨하는 아베마리아의 노래를 유성기로 듣고 나서 오늘 일기를 쓰려고 하니 슬픈 소리만 나옵니다. -사랑하는 어른이여. 저는 멀리서 당신을 존경하고 신뢰하는 마음에서만 살아야 할 것을 잘 압니다. 여기에서 영원한 정지를 하지 아니하면 아니 됩니다. 비록 제 생명이 괴로움으로 끊어지고 제 혼이 피어 보지 못하고 스러져 버리더라도 저는 이 멀리서 바라보는 존경과 신뢰의 심경에서 한 발자국이라도 옮기지 않아야 할 것을 잘 압니다. 나를 위하여 놓여진 생의 궤도는 나의 생명을 부인하는 억지의 길입니다. 제가 몇 년 전 기숙사 베드에서 이런 밤에 내다보면 즐겁고 아름답던 내 생의 꿈은 다 깨어졌습니다. -제 영혼의 한 조각이 먼 세상 알지 못할 세계로 떠다니고 있습니다. 잃어버린 마음 조각 어찌하다가 제가 이렇게 되었는지 모릅니다. -피어 오르는 생명의 광채를 스스로 사형에 처하지 아니하면 아니 될 때 어찌 슬픔이 없겠습니까. 이것은 현실로 사람의 생명을 죽이는 것보다 더 무서운 죄가 아니오리까. 나의 세계에서 처음이요 마지막으로 발견한 빛을 어둠 속에 소멸해 버리라는 이 일이 얼마나 떨리는 직무오리까. 이 허깨비의 형의 사람이 살기 위하여 내 손으로 칼을 들어 내 영혼의 환희를 쳐야 옳습니까. 저는 하나님을 원망합니다. -이렇게 씌어 있습니다. 선생님 이것이 얼마나 피 흐르는 고백입니까. -선생님, 저는 정임의 이 고백을 보고 무조건으로 정임의 사랑을 시인합니다. 선생님, 제 목숨을 바쳐서 하는 일에 누가 시비를 하겠습니까. 더구나 그 동기에 티끌만큼도 불순한 것이 없음에야 무조건으로 시인하지 아니하고 어찌합니까. -바라기는 정임의 병이 크게 되지 아니하고 아버지께서 무사히 계셔서 속히 만나뵙게 되는 것입니다마는 앞길이 망망하여 가슴이 두근거림을 금치 못합니다. 게다가 오늘은 함박눈이 퍼부어서 천지가 온통 회색으로 한 빛이 되었으니 더욱 전도가 막막합니다. 그러나 선생님 저는 앓는 정임을 데리고 용감하게 시베리아 길을 떠납니다. -한 일 주일 후에 또 편지 한 장이 왔다. 그것도 순임의 편지여서 이러한 말이 있었다. -……오늘 새벽에 흥안령을 지났습니다. 플랫폼의 한란계는 영하 이십삼 도를 가리켰습니다. 사람들의 얼굴은 솜털에 성에가 슬어서 남녀 노소 할 것 없이 하얗게 분을 바른 것 같습니다. 유리에 비친 내 얼굴도 그와 같이 흰 것을 보고 놀랐습니다. 숨을 들이쉴 때에는 코털이 얼어서 숨이 끊기고 바람결이 지나가면 눈물이 얼어서 눈썹이 마주 붙습니다. 사람들은 털과 가죽에 싸여서 곰같이 보입니다. -또 이런 말도 있었다. -아라사 계집애들이 우유병들을 품에 품고 서서 손님이 사기를 기다리고 있습니다. 저도 두 병을 사서 정임이와 나누어 먹었습니다. 우유는 따뜻합니다. 그것을 식히지 아니할 양으로 품에 품고 섰던 것입니다. -또 이러한 구절도 있었다. -정거장에 닿을 때마다 저희들은 밖을 내다봅니다. 행여나 아버지가 거기 계시지나 아니할까 하고요. 차가 어길 때에는 더구나 마음이 조입니다. 아버지가 그 차를 타고 지나가시지나 아니하는가 하고요. 그리고는 정임은 웁니다. 꼭 뵈올 어른을 놓쳐나 버린 듯이. -그리고는 이 주일 동안이나 소식이 없다가 편지 한 장이 왔다. 그것은 정임의 글씨였다. -선생님, 저는 지금 최 선생께서 계시던 바이칼 호반의 그 집에 와서 홀로 누웠습니다. 순임은 주인 노파와 함께 F역으로 최 선생을 찾아서 오늘 아침에 떠나고 병든 저만 혼자 누워서 얼음에 싸인 바이칼 호의 눈보라치는 바람 소리를 듣고 있습니다. 열은 삼십팔 도로부터 구 도 사이를 오르내리고 기침은 나고 몸의 괴로움을 견딜 수 없습니다. 그러하오나 선생님, 저는 하나님을 불러서 축원합니다. 이 실낱 같은 생명이 다 타 버리기 전에 최 선생의 낯을 다만 일 초 동안이라도 보여지이라고. 그러하오나 선생님, 이 축원이 이루어지겠습니까. -저는 한사코 F역까지 가려 하였사오나 순임 형이 울고 막사오며 또 주인 노파가 본래 미국 사람과 살던 사람으로 영어를 알아서 순임 형의 도움이 되겠기로 저는 이 곳에 누워 있습니다. 순임 형은 기어코 아버지를 찾아 모시고 오마고 약속하였사오나 이 넓은 시베리아에서 어디 가서 찾겠습니까. -선생님, 저는 죽음을 봅니다. 죽음이 바로 제 앞에 와서 선 것을 봅니다. 그의 손은 제 여윈 손을 잡으려고 들먹거림을 봅니다. -선생님, 죽은 뒤에도 의식이 남습니까. 만일 의식이 남는다 하면 죽은 뒤에도 이 아픔과 괴로움을 계속하지 아니하면 아니 됩니까. 죽은 뒤에는 오직 영원한 어둠과 잊어버림이 있습니까. 죽은 뒤에는 혹시나 생전에 먹었던 마음을 자유로 펼 도리가 있습니까. 이 세상에서 그립고 사모하던 이를 죽은 뒤에는 자유로 만나 보고 언제나 마음껏 같이할 수가 있습니까. 그런 일도 있습니까. 이런 일을 바라는 것도 죄가 됩니까. -정임의 편지는 더욱 절망적인 어조로 찬다. -저는 처음 병이 났을 때에는 죽는 것이 싫고 무서웠습니다. 그러나 지금은 죽는 것이 조금도 무섭지 아니합니다. 다만 차마 죽지 못하는 것이 한. -하고는 `다만 차마' 이하를 박박 지워 버렸다. 그리고는 새로 시작하여 나와내 가족에게 대한 문안을 하고는 끝을 막았다. -나는 이 편지를 받고 울었다. 무슨 큰 비극이 가까운 것을 예상하게 하였다. -그 후 한 십여 일이나 지나서 전보가 왔다. 그것은 영문으로 씌었는데, -"아버지 병이 급하다. 나로는 어쩔 수 없다. 돈 가지고 곧 오기를 바란다." -하고 그 끝에 B호텔이라고 주소를 적었다. 전보 발신국이 이르쿠츠크인 것을 보니 B호텔이라 함은 이르쿠츠크인 것이 분명하였다. -나는 최석 부인에게 최석이가 아직 살아 있다는 것을 전하고 곧 여행권 수속을 하였다. 절망으로 알았던 여행권은 사정이 사정인만큼 곧 발부되었다. -나는 비행기로 여의도를 떠났다. 백설에 개개한 땅을, 남빛으로 푸른 바다를 굽어보는 동안에 대련을 들러 거기서 다른 비행기를 갈아타고 봉천, 신경, 하얼빈을 거쳐, 치치하얼에 들렀다가 만주리로 급행하였다. -웅대한 대륙의 설경도 나에게 아무러한 인상도 주지 못하였다. 다만 푸른 하늘과 희고 평평한 땅과의 사이로 한량 없이 허공을 날아간다는 생각밖에 없었다. 그것은 사랑하는 두 친구가 목숨이 경각에 달린 것을 생각할 때에 마음에 아무 여유도 없는 까닭이었다. -만주리에서도 비행기를 타려 하였으나 소비에트 관헌이 허락을 아니 하여 열차로 갈 수밖에 없었다. -초조한 몇 밤을 지나고 이르쿠츠크에 내린 것이 오전 두시. 나는 B호텔로 이스보스치카라는 마차를 몰았다. 죽음과 같이 고요하게 눈 속에 자는 시간에는 여기저기 전등이 반짝거릴 뿐, 이따금 밤의 시가를 경계하는 병정들의 눈이 무섭게 빛나는 것이 보였다. -B호텔에서 미스 초이(최 양)를 찾았으나 순임은 없고 어떤 서양 노파가 나와서, -"유 미스터 Y?" -하고 의심스러운 눈으로 나를 보았다. -그렇다는 내 대답을 듣고는 노파는 반갑게 손을 내밀어서 내 손을 잡았다. -나는 넉넉하지 못한 영어로 그 노파에게서 최석이가 아직 살았다는 말과 정임의 소식은 들은 지 오래라는 말과 최석과 순임은 여기서 삼십 마일이나 떨어진 F역에서도 썰매로 더 가는 삼림 속에 있다는 말을 들었다. -나는 그 밤을 여기서 지내고 이튿날 아침에 떠나는 완행차로 그 노파와 함께 이르쿠츠크를 떠났다. -이 날도 천지는 오직 눈뿐이었다. 차는 가끔 삼림 중으로 가는 모양이나 모두 회색빛에 가리워서 분명히 보이지를 아니하였다. -F역이라는 것은 삼림 속에 있는 조그마한 정거장으로 집이라고는 정거장 집밖에 없었다. 역부 두엇이 털옷에 하얗게 눈을 뒤쓰고 졸리는 듯이 오락가락할 뿐이었다. -우리는 썰매 하나를 얻어 타고 어디가 길인지 분명치도 아니한 눈 속으로 말을 몰았다. -바람은 없는 듯하지마는 그래도 눈발을 한편으로 비끼는 모양이어서 아름드리 나무들의 한쪽은 하얗게 눈으로 쌓이고 한쪽은 검은 빛이 더욱 돋보였다. 백 척은 넘을 듯한 꼿꼿한 침엽수(전나무 따윈가)들이 어디까지든지, 하늘에서 곧 내려박은 못 모양으로, 수없이 서 있는 사이로 우리 썰매는 간다. 땅에 덮인 눈은 새로 피워 놓은 솜같이 희지마는 하늘에서 내리는 눈은 구름빛과 공기빛과 어울려서 밥 잦힐 때에 굴뚝에서 나오는 연기와 같이 연회색이다. -바람도 불지 아니하고 새도 날지 아니하건마는 나무 높은 가지에 쌓인 눈이 이따금 덩치로 떨어져서는 고요한 수풀 속에 작은 동요를 일으킨다. -우리 썰매가 가는 길이 자연스러운 복잡한 커브를 도는 것을 보면 필시 얼음 언 개천 위로 달리는 모양이었다. -한 시간이나 달린 뒤에 우리 썰매는 늦은 경사지를 올랐다. 말을 어거하는 아라사 사람은 쭈쭈쭈쭈, 후르르 하고 주문을 외우듯이 입으로 말을 재촉하고 고삐를 이리 들고 저리 들어 말에게 방향을 가리킬 뿐이요, 채찍은 보이기만하고 한 번도 쓰지 아니하였다. 그와 말과는 완전히 뜻과 정이 맞는 동지인 듯하였다. -처음에는 몰랐으나 차차 추워짐을 깨달았다. 발과 무르팍이 시렸다. -"얼마나 머오?" -하고 나는 오래간만에 입을 열어서 노파에게 물었다. 노파는 털수건으로 머리를 싸매고 깊숙한 눈만 남겨 가지고 실신한 사람 모양으로 허공만 바라보고 있다가, 내가 묻는 말에 비로소 잠이나 깬 듯이, -"멀지 않소. 인젠 한 십오 마일." -하고는 나를 바라보았다. 그 눈은 아마 웃는 모양이었다. -그 얼굴, 그 눈, 그 음성이 모두 이 노파가 인생 풍파의 슬픈 일 괴로운 일에 부대끼고 지친 것을 표하였다. 그리고 죽는 날까지 살아간다 하는 듯하였다. -경사지를 올라서서 보니 그것은 한 산등성이였다. 방향은 알 수 없으나 우리가 가는 방향에는 더 높은 등성이가 있는 모양이나 다른 곳은 다 이보다 낮은 것 같아서 하얀 눈바다가 끝없이 보이는 듯하였다. 그 눈보라는 들쑹날쑹이 있는 것을 보면 삼림의 꼭대기인 것이 분명하였다. 더구나 여기저기 뾰족뾰족 눈송이 붙을 수 없는 마른 나뭇가지가 거뭇거뭇 보이는 것을 보아서 그러하였다. 만일 눈이 걷혀 주었으면 얼마나 안계가 넓으랴, 최석 군이 고민하는 가슴을 안고 이리로 헤매었구나 하면서 나는 목을 둘러서 사방을 바라보았다. -우리는 그 등성이를 내려갔다. 말이 미처 발을 땅에 놓을 수가 없는 정도로 빨리 내려갔다. 여기는 산불이 났던 자리인 듯하여 거뭇거뭇 불탄 자국 있는 마른 나무들이 드문드문 서 있었다. 그 나무들은 찍어 가는 사람도 없으매 저절로 썩어서 없어지기를 기다릴 수밖에 없었다. 그들은 나서 아주 썩어 버리기까지 천 년 이상은 걸린다고 하니 또한 장한 일이다. -이 대삼림에 불이 붙는다 하면 그것은 장관일 것이다. 달밤에 높은 곳에서 이 경치를 내려다본다 하면 그도 장관일 것이요, 여름에 한창 기운을 펼 때도 장관일 것이다. 나는 오뉴월경에 시베리아를 여행하는 이들이 끝없는 꽃바다를 보았다는 기록을 생각하였다. -"저기요!" -하는 노파의 말에 나는 생각의 줄을 끊었다. 저기라고 가리키는 곳을 보니 거기는 집이라고 생각되는 물건이 나무 사이로 보였다. 창이 있으니 분명 집이었다. -우리 이스보스치카가 가까이 오는 것을 보았는지, 그 집 같은 물건의 문 같은 것이 열리며 검은 외투 입은 여자 하나가 팔을 허우적거리며 뛰어나온다. 아마 소리도 치는 모양이겠지마는 그 소리는 아니 들렸다. 나는 그것이 순임인 줄을 얼른 알았다. 또 순임이밖에 될 사람도 없었다. -순임은 한참 달음박질로 오다가 눈이 깊어서 걸음을 걷기가 힘이 드는지 멈칫 섰다. 그의 검은 외투는 어느덧 흰 점으로 얼려져 가지고 어깨는 희게 되는 것이 보였다. -순임의 갸름한 얼굴이 보였다. -"선생님!" -하고 순임도 나를 알아보고는 또 팔을 허우적거리며 소리를 질렀다. -나도 반가워서 모자를 벗어 둘렀다. -"아이 선생님!" -하고 순임은 내가 썰매에서 일어서기도 전에 내게 와서 매달리며 울었다. -"아버지 어떠시냐?" -하고 나는 순임의 등을 두드렸다. 나는 다리가 마비가 되어서 곧 일어설 수가 없었다. -"아버지 어떠시냐?" -하고 나는 한 번 더 물었다. -순임은 벌떡 일어나 두 주먹으로 흐르는 눈물을 쳐내 버리며, -"대단하셔요." -하고도 울음을 금치 못하였다. -노파는 벌써 썰매에서 내려서 기운 없는 걸음으로 비틀비틀 걷기를 시작하였다. -나는 순임을 따라서 언덕을 오르며, -"그래 무슨 병환이시냐?" -하고 물었다. -"몰라요. 신열이 대단하셔요." -"정신은 차리시든?" -"처음 제가 여기 왔을 적에는 그렇지 않더니 요새에는 가끔 혼수 상태에 빠지시는 모양이야요." -이만한 지식을 가지고 나는 최석이가 누워 있는 집 앞에 다다랐다. -이 집은 통나무를 댓 개 우물 정자로 가로놓고 지붕은 무엇으로 했는지 모르나 눈이 덮이고, 문 하나 창 하나를 내었는데 문은 나무껍질인 모양이나 창은 젖빛 나는 유리창인 줄 알았더니 뒤에 알아본즉 그것은 유리가 아니요, 양목을 바르고 물을 뿜어서 얼려 놓은 것이었다. 그리고 통나무와 통나무 틈바구니에는 쇠털과 같은 마른 풀을 꼭꼭 박아서 바람을 막았다. -문을 열고 들어서니 부엌에 들어서는 모양으로 쑥 빠졌는데 화끈화끈하는 것이 한증과 같다. 그렇지 않아도 침침한 날에 언 눈으로 광선 부족한 방에 들어오니, 캄캄 절벽이어서 아무것도 보이지 아니하였다. -순임이가 앞서서 양초에 불을 켠다. 촛불 빛은 방 한편 쪽 침대라고 할 만한 높은 곳에 담요를 덮고 누운 최석의 시체와 같은 흰 얼굴을 비춘다. -"아버지, 아버지 샌전 아저씨 오셨어요." -하고 순임은 최석의 귀에 입을 대고 가만히 불렀다. -그러나 대답이 없었다. -나는 최석의 이마를 만져 보았다. 축축하게 땀이 흘렀다. 그러나 그리 더운 줄은 몰랐다. -방 안의 공기는 숨이 막힐 듯하였다. 그 난방 장치는 삼굿의 원리를 이용한 것이었다. 돌멩이로 아궁이를 쌓고 그 위에 큰 돌멩이들을 많이 쌓고 거기다가 불을 때어서 달게 한 뒤에 거기 눈을 부어 뜨거운 증기를 발하는 것이었다. -이 건축법은 조선 동포들이 시베리아로 금광을 찾아다니면서 하는 법이란 말을 들었으나 최석이가 누구에게서 배워 가지고 어떤 모양으로 지었는지는 최석의 말을 듣기 전에는 알 수 없는 일이다. -나는 내 힘이 미치는 데까지 최석의 병 치료에 대한 손을 쓰고 어떻게 해서든지 이르쿠츠크의 병원으로 최석을 데려다가 입원시킬 도리를 궁리하였다. 그러나 냉정하게 생각하면 최석은 살아날 가망이 없는 것만 같았다. -내가 간 지 사흘 만에 최석은 처음으로 정신을 차려서 눈을 뜨고 나를 알아보았다. -그는 반가운 표정을 하고 빙그레 웃기까지 하였다. -"다 일없나?" -이런 말도 알아들을 수가 있었다. -그러나 심히 기운이 없는 모양이기로 나는 많이 말을 하지 아니하였다. -최석은 한참이나 눈을 감고 있더니, -"정임이 소식 들었나?" -하였다. -"괜찮대요." -하고 곁에서 순임이가 말하였다. -그리고는 또 혼몽하는 듯하였다. -그 날 또 한 번 최석은 정신을 차리고 순임더러는 저리로 가라는 뜻을 표하고 나더러 귀를 가까이 대라는 뜻을 보이기로 그대로 하였더니, -"내 가방 속에 일기가 있으니 그걸 자네만 보고는 불살라 버려. 내가 죽은 뒤에라도 그것이 세상 사람의 눈에 들면 안 되지. 순임이가 볼까 걱정이 되지마는 내가 몸을 꼼짝할 수가 있나." -하는 뜻을 말하였다. -"그러지." -하고 나는 고개를 끄덕여 보였다. -그러고 난 뒤에 나는 최석이가 시킨 대로 가방을 열고 책들을 뒤져서 그 일기책이라는 공책을 꺼내었다. -"순임이 너 이거 보았니?" -하고 나는 곁에서 내가 책 찾는 것을 보고 섰던 순임에게 물었다. -"아니오. 그게 무어여요?" -하고 순임은 내 손에 든 책을 빼앗으려는 듯이 손을 내밀었다. -나는 순임의 손이 닿지 않도록 책을 한편으로 비키며, -"이것이 네 아버지 일기인 모양인데 너는 보이지 말고 나만 보라고 하셨다. 네 아버지가 네가 이것을 보았을까 해서 염려를 하시는데 안 보았으면 다행이다." -하고 나는 그 책을 들고 밖으로 나왔다. -날이 밝다. 해는 중천에 있다. 중천이래야 저 남쪽 지평선 가까운 데다. 밤이 열여덟 시간, 낮이 대여섯 시간밖에 안 되는 북쪽 나라다. 멀건 햇빛이다. -나는 볕이 잘 드는 곳을 골라서 나무에 몸을 기대고 최석의 일기를 읽기 시작하였다. 읽은 중에서 몇 구절을 골라 볼까. -"집이 다 되었다. 이 집은 내가 생전 살고 그 속에서 이 세상을 마칠 집이다. 마음이 기쁘다. 시끄러운 세상은 여기서 멀지 아니하냐. 내가 여기 홀로 있기로 누가 찾을 사람도 없을 것이다. 내가 여기서 죽기로 누가 슬퍼해 줄 사람도 없을 것이다. 때로 곰이나 찾아올까. 지나가던 사슴이나 들여다볼까. -이것이 내 소원이 아니냐. 세상의 시끄러움을 떠나는 것이 내 소원이 아니냐. 이 속에서 나는 나를 이기기를 공부하자." -첫날은 이런 평범한 소리를 썼다. -그 이튿날에는. -"어떻게나 나는 약한 사람인고. 제 마음을 제가 지배하지 못하는 사람인고. 밤새도록 나는 정임을 생각하였다. 어두운 허공을 향하여 정임을 불렀다. 정임이가 나를 찾아서 동경을 떠나서 이리로 오지나 아니하나 하고 생각하였다. 어떻게나 부끄러운 일인고? 어떻게나 가증한 일인고? -나는 아내를 생각하려 하였다. 아이들을 생각하려 하였다. 아내와 아이들을 생각함으로 정임의 생각을 이기려 하였다. -최석아, 너는 남편이 아니냐. 아버지가 아니냐. 정임은 네 딸이 아니냐. 이런 생각을 하였다. -그래도 정임의 일류전은 아내와 아이들의 생각을 밀치고 달려오는 절대 위력을 가진 듯하였다. -아, 나는 어떻게나 파렴치한 사람인고. 나이 사십이 넘어 오십을 바라보는 놈이 아니냐. 사십에 불혹이라고 아니 하느냐. 교육가로 깨끗한 교인으로 일생을 살아 왔다고 자처하는 내가 아니냐 하고 나는 내 입으로 내 손가락을 물어서 두 군데나 피를 내었다." -최석의 둘째 날 일기는 계속된다. -"내 손가락에서 피가 날 때에 나는 유쾌하였다. 나는 승첩의 기쁨을 깨달았다. -그러나 아아 그러나 그 빨간, 참회의 핏방울 속에서도 애욕의 불길이 일지 아니하는가. 나는 마침내 제도할 수 없는 인생인가." -이 집에 든 지 둘째날에 벌써 이러한 비관적 말을 하였다. -또 며칠을 지난 뒤 일기에, -"나는 동경으로 돌아가고 싶다. 정임의 곁으로 가고 싶다. 시베리아의광야의 유혹도 아무 힘이 없다. 어젯밤은 삼림의 좋은 달을 보았으나 그 달을 아름답게 보려 하였으나 아무리 하여도 아름답게 보이지를 아니하였다. -하늘이나 달이나 삼림이나 모두 무의미한 존재다. 이처럼 무의미한 존재를 나는 경험한 일이 없다. 그것은 다만 기쁨을 자아내지 아니할 뿐더러 슬픔도 자아내지 못하였다. 그것은 잿더미였다. 아무도 듣는 이 없는 데서 내 진정을 말하라면 그것은 이 천지에 내게 의미 있는 것은 정임이밖에 없다는 것이다. -나는 정임의 곁에 있고 싶다. 정임을 내 곁에 두고 싶다. 왜? 그것은 나도 모른다. -만일 이 움 속에라도 정임이가 있다 하면 얼마나 이것이 즐거운 곳이 될까. -그러나 이것은 불가능한 일이다. 이 일이 있어서는 아니 된다. 나는 이 생각을 죽여야 한다. 다시 거두를 못 하도록 목숨을 끊어 버려야 한다. -이것을 나는 원한다. 원하지마는 내게는 그 힘이 없는 모양이다. -나는 종교를 생각하여 본다. 철학을 생각하여 본다. 인류를 생각하여 본다. 나라를 생각하여 본다. 이것을 가지고 내 애욕과 바꾸려고 애써 본다. 그렇지마는 내게 그러한 힘이 없다. 나는 완전히 헬플리스함을 깨닫는다. -아아 나는 어찌할꼬? -나는 못생긴 사람이다. 그까짓 것을 못 이겨? 그까짓 것을 못 이겨? -나는 예수의 광야에서의 유혹을 생각한다. 천하를 주마 하는 유혹을 생각한다. 나는 싯다르타 태자가 왕궁을 버리고 나온 것을 생각하고, 또 스토아 철학자의 의지력을 생각하였다. -그러나 나는 그러한 생각으로도 이 생각을 이길 수가 없는 것 같다. -나는 혁명가를 생각하였다. 모든 것 사랑도 목숨도 다 헌신짝같이 집어던지고 피 흐르는 마당으로 뛰어나가는 용사를 생각하였다. 나는 이끝없는 삼림 속으로 혁명의 용사 모양으로 달음박질치다가 기운이 진한 곳에서 죽어 버리는 것이 소원이었다. 그러나 거기까지도 이 생각은 따르지 아니할까. -나는 지금 곧 죽어 버릴까. 나는 육혈포를 손에 들어 보았다. 이 방아쇠를 한 번만 튕기면 내 생명은 없어지는 것이 아닌가. 그리 되면 모든 이 마음의 움직임은 소멸되는 것이 아닌가. 이것으로 만사가 해결되는 것이 아닌가. -아 하나님이시여, 힘을 주시옵소서. 천하를 이기는 힘보다도 나 자신을 이기는 힘을 주시옵소서. 이 죄인으로 하여금 하나님의 눈에 의롭고 깨끗한 사람으로 이 일생을 마치게 하여 주시옵소서, 이렇게 나는 기도를 한다. -그러나 하나님께서는 나를 버리셨다. 하나님께서는 내게 힘을 주시지 아니하시었다. 나를 이 비참한 자리에서 썩어져 죽게 하시었다." -최석은 어떤 날 일기에 또 이런 것도 썼다. 그것은 예전 내게 보낸 편지에 있던 꿈 이야기를 연상시키는 것이었다. 그것은 이러하다. -"오늘 밤은 달이 좋다. 시베리아의 겨울 해는 참 못생긴 사람과도 같이 기운이 없지마는 하얀 땅, 검푸른 하늘에 저쪽 지평선을 향하고 흘러가는 반달은 참으로 맑음 그것이었다. -나는 평생 처음 시 비슷한 것을 지었다. -임과 이별하던 날 밤에는 남쪽 나라에 바람비가 쳤네 -임 타신 자동차의 뒷불이 빨간 뒷불이 빗발에 찢겼네 -임 떠나 혼자 헤매는 시베리아의 오늘 밤에는 -지려는 쪽달이 눈 덮인 삼림에 걸렸구나 -아아 저 쪽달이여 -억지로 반을 갈겨진 것도 같아라 -아아 저 쪽달이여 -잃어진 짝을 찾아 -차디찬 허공 속을 영원히 헤매는 것도 같구나 -나도 저 달과 같이 잃어버린 반쪽을 찾아 무궁한 시간과 공간에서 헤매는 것만 같다. -에익. 내가 왜 이리 약한가. 어찌하여 크나큰 많은 일을 돌아보지 못하고 요만한 애욕의 포로가 되는가. -그러나 나는 차마 그 달을 버리고 들어올 수가 없었다. 내가 왜 이렇게 센티멘털하게 되었는고. 내 쇠 같은 의지력이 어디로 갔는고. 내 누를 수 없는 자존심이 어디로 갔는고. 나는 마치 유모의 손에 달린 젖먹이와도 같다. 내 일신은 도시 애욕 덩어리로 화해 버린 것 같다. -이른바 사랑 사랑이란 말은 종교적 의미인 것 이외에도 입에 담기도 싫어하던 말이다 이런 것은 내 의지력과 자존심을 녹여 버렸는가. 또 이 부자연한 고독의 생활이 나를 이렇게 내 인격을 이렇게 파괴하였는가. -그렇지 아니하면 내 자존심이라는 것이나, 의지력이라는 것이나, 인격이라는 것이 모두 세상의 습관과 사조에 휩쓸리던 것인가. 남들이 그러니까 남들이 옳다니까 남들이 무서우니까 이 애욕의 무덤에 회를 발랐던 것인가. 그러다가 고독과 반성의 기회를 얻으매 모든 회칠과 가면을 떼어 버리고 빨가벗은 애욕의 뭉텅이가 나온 것인가. -그렇다 하면, 이것이 참된 나인가. 이것이 하나님께서 지어 주신 대로의 나인가. 가슴에 타오르는 애욕의 불길 이 불길이 곧 내 영혼의 불길인가. -어쩌면 그 모든 높은 이상들 인류에 대한, 민족에 대한, 도덕에 대한, 신앙에 대한 그 높은 이상들이 이렇게도 만만하게 마치 바람에 불리는 재 모양으로 자취도 없이 흩어져 버리고 말까. 그리고 그 뒤에는 평소에그렇게도 미워하고 천히 여기던 애욕의 검은 흙만 남고 말까. -아아 저 눈 덮인 땅이여, 차고 맑은 달이여, 허공이여! 나는 너희들을 부러워하노라. -불교도들의 해탈이라는 것이 이러한 애욕이 불붙는 지옥에서 눈과 같이 싸늘하고 허공과 같이 빈 곳으로 들어감을 이름인가. -석가의 팔 년 간 설산 고행이 이 애욕의 뿌리를 끊으려 함이라 하고 예수의 사십 일 광야의 고행과 겟세마네의 고민도 이 애욕의 뿌리 때문이었던가. -그러나 그것을 이기어 낸 사람이 천지 개벽 이래에 몇몇이나 되었는고? 나 같은 것이 그 중에 한 사람 되기를 바랄 수가 있을까. -나 같아서는 마침내 이 애욕의 불길에 다 타서 재가 되어 버릴 것만 같다. 아아 어떻게나 힘있고 무서운 불길인고." -이러한 고민의 자백도 있었다. -또 어떤 날 일기에는 최석은 이런 말을 썼다. -"나는 단연히 동경으로 돌아가기를 결심하였다." -그리고는 그 이튿날은, -"나는 단연히 동경으로 돌아가리란 결심을 한 것을 굳세게 취소한다. 나는 이러한 결심을 하는 나 자신을 굳세게 부인한다." -또 이런 말도 있다. -"나는 정임을 시베리아로 부르련다." -또 그 다음에는, -"아아 나는 하루바삐 죽어야 한다. 이 목숨을 연장하였다가는 무슨 일을 저지를는지 모른다. 나는 깨끗하게 나를 이기는 도덕적 인격으로 이 일생을 마쳐야 한다. 이 밖에 내 사업이 무엇이냐." -또 어떤 곳에는, -"아아 무서운 하룻밤이었다. 나는 지난 하룻밤을 누를 수 없는 애욕의 불길에 탔다. 나는 내 주먹으로 내 가슴을 두드리고 머리를 벽에 부딪쳤다. 나는 주먹으로 담벽을 두드려 손등이 터져서 피가 흘렀다. 나는 내 머리카락을 쥐어뜯었다. 나는 수없이 발을 굴렀다. 나는 이 무서운 유혹을 이기려고 내 몸을 아프게 하였다. 나는 견디다 못하여 문을 박차고 뛰어나갔다. 밖에는 달이 있고 눈이 있었다. 그러나 눈은 핏빛이요, 달은 찌그러진 것 같았다. 나는 눈 속으로 달음박질쳤다. 달을 따라서 엎드러지며 자빠지며 달음질쳤다. 나는 소리를 질렀다. 나는 미친 사람 같았다." -그러고는 어디까지 갔다가 어느 때에 어떠한 심경의 변화를 얻어 가지고 돌아왔다는 말은 쓰이지 아니하였으나 최석의 병의 원인을 설명하는 것 같았다. -"열이 나고 기침이 난다. 가슴이 아프다. 이것이 폐렴이 되어서 혼자 깨끗하게 이 생명을 마치게 하여 주소서 하고 빈다. 나는 오늘부터 먹고 마시기를 그치련다." -이러한 말을 썼다. 그러고는, -"정임, 정임, 정임, 정임." -하고 정임의 이름을 수없이 쓴 것도 있고, 어떤 데는, -"Overcome, Overcome." -하고 영어로 쓴 것도 있었다. -그리고 마지막에, -"나는 죽음과 대면하였다. 사흘째 굶고 앓은 오늘에 나는 극히 맑고 침착한 정신으로 죽음과 대면하였다. 죽음은 검은 옷을 입었으나 그 얼굴에는 자비의 표정이 있었다. 죽음은 곧 검은 옷을 입은 구원의 손이었다. 죽음은 아름다운 그림자였다. 죽음은 반가운 애인이요, 결코 무서운 원수가 아니었다. 나는 죽음의 손을 잡노라. 감사하는 마음으로 죽음의 품에 안기노라. 아멘." -이것을 쓴 뒤에는 다시는 일기가 없었다. 이것으로 최석이가 그 동안 지난 일을 적어도 심리적 변화만은 대강 추측할 수가 있었다. -다행히 최석의 병은 점점 돌리는 듯하였다. 열도 내리고 식은땀도 덜 흘렸다. 안 먹는다고 고집하던 음식도 먹기를 시작하였다. -정임에게로 갔던 노파에게서는 정임도 열이 내리고 일어나 앉을 만하다는 편지가 왔다. -나는 노파의 편지를 최석에게 읽어 주었다. 최석은 그 편지를 듣고 매우 흥분하는 모양이었으나 곧 안심하는 빛을 보였다. -나는 최석의 병이 돌리는 것을 보고 정임을 찾아볼 양으로 떠나려 하였으나 순임이가 듣지 아니하였다. 혼자서 앓는 아버지를 맡아 가지고 있을 수는 없다는 것이었다. 그래서 노파가 오기를 기다리기로 하였다. -나는 최석이가 먹을 음식도 살 겸 우편국에도 들를 겸 시가까지 가기로 하고 이 곳 온 지 일 주일이나 지나서 처음으로 산에서 나왔다. -나는 이르쿠츠크에 가서 최석을 위하여 약품과 먹을 것을 사고 또 순임을 위해서도 먹을 것과 의복과 또 하모니카와 손풍금도 사 가지고 정거장에 나와서 돌아올 차를 기다리고 있었다. -나는 순후해 보이는 아라사 사람들이 정거장에서 오락가락하는 것을 보고 속으로는 최석이가 병이 좀 나은 것을 다행으로 생각하고, 또 최석과 정임의 장래가 어찌 될까 하는 것도 생각하면서 뷔페(식당)에서 뜨거운 차이(차)를 마시고 있었다. -이 때에 밖을 바라보고 있던 내 눈은 문득 이상한 것을 보았다. 그것은 그 노파가 이리로 향하고 걸어오는 것인데 그 노파와 팔을 걸은 젊은 여자가 있는 것이다. 머리를 검은 수건으로 싸매고 입과 코를 가리웠으니 분명히 알 수 없으나 혹은 정임이나 아닌가 할 수밖에 없었다. 정임이가 몸만 기동하게 되면 최석을 보러 올 것은 정임의 열정적인 성격으로 보아서 당연한 일이기 때문이었다. -나는 반쯤 먹던 차를 놓고 뷔페 밖으로 뛰어나갔다. -"오 미시즈 체스터필드?" -하고 나는 노파 앞에 손을 내어밀었다. 노파는 체스터필드라는 미국 남편의 성을 따라서 부르는 것을 기억하였다. -"선생님!" -하는 것은 정임이었다. 그 소리만은 변치 아니하였다. 나는 검은 장갑을 낀 정임의 손을 잡았다. 나는 여러 말 아니하고 노파와 정임을 뷔페로 끌고 들어왔다. -늙은 뷔페 보이는 번쩍번쩍하는 사모바르에서 차 두 잔을 따라다가 노파와 정임의 앞에 놓았다. -노파는 어린애에게 하는 모양으로 정임의 수건을 벗겨 주었다. 그 속에서는 해쓱하게 여윈 정임의 얼굴이 나왔다. 두 볼에 불그레하게 홍훈이 도는 것도 병 때문인가. -"어때? 신열은 없나?" -하고 나는 정임에게 물었다. -"괜찮아요." -하고 정임은 웃으며, -"최 선생님께서는 어떠세요?" -하고 묻는다. -"좀 나으신 모양이야. 그래서 나는 오늘 정임을 좀 보러 가려고 했는데 이 체스터필드 부인께서 아니 오시면 순임이가 혼자 있을 수가 없다고 해서, 그래 이렇게 최 선생 자실 것을 사 가지고 가는 길이야." -하고 말을 하면서도 나는 정임의 눈과 입과 목에서 그의 병과 마음을 알아보려고 애를 썼다. -중병을 앓은 깐 해서는 한 달 전 남대문서 볼 때보다 얼마 더 초췌한 것 같지는 아니하였다. -"네에." -하고 정임은 고개를 숙였다. 그의 안경알에는 이슬이 맺혔다. -"선생님 댁은 다 안녕하셔요?" -"응, 내가 떠날 때에는 괜찮았어." -"최 선생님 댁도?" -"응." -"선생님 퍽은 애를 쓰셨어요." -하고 정임은 울음인지 웃음인지 모를 웃음을 웃는다. -말을 모르는 노파는 우리가 하는 말을 눈치나 채려는 듯이 멀거니 보고 있다가 서투른 영어로, -"아직 미스 남은 신열이 있답니다. 그래도 가 본다고, 죽어도 가 본다고 내 말을 안 듣고 따라왔지요." -하고 정임에게 애정 있는 눈흘김을 주며, -"유 노티 차일드(말썽꾼이)." -하고 입을 씰룩하며 정임을 안경 위로 본다. -"니체워, 마뚜슈까(괜찮아요, 어머니)." -하고 정임은 노파를 보고 웃었다. 정임의 서양 사람에게 대한 행동은 서양식으로 째었다고 생각하였다. -정임은 도리어 유쾌한 빛을 보였다. 다만 그의 붉은빛 띤 눈과 마른 입술이 그의 몸에 열이 있음을 보였다. 나는 그의 손끝과 발끝이 싸늘하게 얼었을 것을 상상하였다. -마침 이 날은 날이 온화하였다. 엷은 햇빛도 오늘은 두꺼워진 듯하였다. -우리 세 사람은 F역에서 내려서 썰매 하나를 얻어 타고 산으로 향하였다. 산도 아니지마는 산 있는 나라에서 살던 우리는 최석이가 사는 곳을 산이라고 부르는 습관을 지었다. 삼림이 있으니 산같이 생각된 까닭이었다. -노파가 오른편 끝에 앉고, 가운데다가 정임을 앉히고 왼편 끝에 내가 앉았다. -쩟쩟쩟 하는 소리에 말은 달리기 시작하였다. 한 필은 키 큰 말이요, 한 필은 키가 작은 말인데 키 큰 말은 아마 늙은 군마 퇴물인가 싶게 허우대는 좋으나 몸이 여위고 털에는 윤이 없었다. 조금만 올라가는 길이 되어도 고개를 숙이고 애를 썼다. 작은 말은 까불어서 가끔 채찍으로 얻어맞았다. -"아이 삼림이 좋아요." -하고 정임은 정말 기쁜 듯이 나를 돌아보았다. -"좋아?" -하고 나는 멋없이 대꾸하고 나서, 후회되는 듯이, -"밤낮 삼림 속에서만 사니까 지루한데." -하는 말을 붙였다. -"저는 저 눈 있는 삼림 속으로 한정 없이 가고 싶어요. 그러나 저는 인제 기운이 없으니깐 웬걸 그래 보겠어요?" -하고 한숨을 쉬었다. -"왜 그런 소릴 해. 인제 나을걸." -하고 나는 정임의 눈을 들여다보았다. 마치 슬픈 눈물 방울이나 찾으려는 듯이. -"제가 지금도 열이 삼십팔 도가 넘습니다. 정신이 흐릿해지는 것을 보니까 아마 더 올라가나 봐요. 그래도 괜찮아요. 오늘 하루야 못 살라고요. 오늘 하루만 살면 괜찮아요. 최 선생님만 한 번 뵙고 죽으면 괜찮아요." -"왜 그런 소릴 해?" -하고 나는 책망하는 듯이 언성을 높였다. -정임은 기침을 시작하였다. 한바탕 기침을 하고는 기운이 진한 듯이 노파에게 기대며 조선말로, -"추워요." -하였다. 이 여행이 어떻게 정임의 병에 좋지 못할 것은 의사가 아닌 나로도 짐작할 수가 있었다. 그러나 나로는 더 어찌할 수가 없었다. -나는 외투를 벗어서 정임에게 입혀 주고 노파는 정임을 안아서 몸이 덜 흔들리도록 또 춥지 않도록 하였다. -나는 정임의 모양을 애처로워서 차마 볼 수가 없었다. 그러나 이것은 하나님밖에는 어찌할 도리가 없는 일이었다. -얼마를 지나서 정임은 갑자기 고개를 들고 일어나며, -"인제 몸이 좀 녹았습니다. 선생님 추우시겠어요. 이 외투 입으셔요." -하고 그의 입만 웃는 웃음을 웃었다. -"난 춥지 않아. 어서 입고 있어." -하고 나는 정임이가 외투를 벗는 것을 막았다. 정임은 더 고집하려고도 아니하고, -"선생님 시베리아의 삼림은 참 좋아요. 눈 덮인 것이 더 좋은 것 같아요. 저는 이 인적 없고 자유로운 삼림 속으로 헤매어 보고 싶어요." -하고 아까 하던 것과 같은 말을 또 하였다. -"며칠 잘 정양하여서, 날이나 따뜻하거든 한 번 산보나 해 보지." -하고 나는 정임의 말 뜻이 다른 데 있는 줄을 알면서도 부러 평범하게 대답하였다. -정임은 대답이 없었다. -"여기서도 아직 멀어요?" -하고 정임은 몸이 흔들리는 것을 심히 괴로워하는 모양으로 두 손을 자리에 짚어 몸을 버티면서 말하였다. -"고대야, 최 선생이 반가워할 터이지. 오죽이나 반갑겠나." -하고 나는 정임을 위로하는 뜻으로 말하였다. -"아이 참 미안해요. 제가 죄인이야요. 저 때문에 애매한 누명을 쓰시고 저렇게 사업도 버리시고 병환까지 나시니 저는 어떡허면 이 죄를 씻습니까?" -하고 눈물 고인 눈으로 정임은 나를 쳐다보았다. -나는 정임과 최석을 이 자유로운 시베리아의 삼림 속에 단둘이 살게 하고 싶었다. 그러나 최석은 살아나가겠지마는 정임이가 살아날 수가 있을까, 하고 나는 정임의 어깨를 바라보았다. 그의 목숨은 실낱 같은 것 같았다. 바람받이에 놓인 등잔불과만 같은 것 같았다. 이 목숨이 끊어지기 전에 사랑하는 이의 얼굴을 한 번 대하겠다는 것밖에 아무 소원이 없는 정임은 참으로 가엾어서 가슴이 미어지는 것 같았다. -"염려 말어. 무슨 걱정이야? 최 선생도 병이 돌리고 정임도 인제 얼마 정양하면 나을 것 아닌가. 아무 염려 말아요." -하고 나는 더욱 최석과 정임과 두 사람의 사랑을 달하게 할 결심을 하였다. 하나님께서 계시다면 이 가엾은 간절한 두 사람의 마음을 가슴 미어지게 아니 생각할 리가 없다고 생각하였다. 우주의 모든 일 중에 정임의 정경보다 더 슬프고 불쌍한 정경이 또 있을까 하였다. 차디찬 눈으로 덮인 시베리아의 광야에 병든 정임의 사랑으로 타는 불똥과 같이 날아가는 이 정경은 인생이 가질 수 있는 최대한 비극인 것 같았다. -정임은 지쳐서 고개를 숙이고 있다가도 가끔 고개를 들어서는 기운 나는 양을 보이려고, 유쾌한 양을 보이려고 애를 썼다. -"저 나무 보셔요. 오백 년은 살았겠지요?" -이런 말도 하였다. 그러나 그것은 다 억지로 지어서 하는 것이었다. 그러다가는 또 기운이 지쳐서는 고개를 숙이고, 혹은 노파의 어깨에 혹은 내 어깨에 쓰러졌다. -마침내 우리가 향하고 가는 움집이 보였다. -"정임이, 저기야." -하고 나는 움집을 가리켰다. -"네에?" -하고 정임은 내 손가락 가는 곳을 보고 다음에는 내 얼굴을 보았다. 잘 보이지 않는 모양이다. -"저기 저것 말야. 저기 저 고작 큰 전나무 두 개가 있지 않아? 그 사이로 보이는 저, 저거 말야. 옳지 옳지, 순임이 지금 나오지 않아?" -하였다. -순임이가 무엇을 가지러 나오는지 문을 열고 나와서는 밥 짓느라고 지어 놓은 이를테면 부엌에를 들어갔다가 나오는 길에 이 쪽을 바라보다가 우리를 발견하였는지 몇 걸음 빨리 오다가는 서서 보고 오다가는 서서 보더니 내가 모자를 내두르는 것을 보고야 우리 일행인 것을 확실히 알고 달음박질을 쳐서 나온다. -우리 썰매를 만나자, -"정임이야? 어쩌면 이 추운데." -하고 순임은 정임을 안고 그 안경으로 정임의 눈을 들여다본다. -"어쩌면 앓으면서 이렇게 와?" -하고 순임은 노파와 나를 책망하는 듯이 돌아보았다. -"아버지 어떠시냐?" -하고 나는 짐을 들고 앞서서 오면서 뒤따르는 순임에게 물었다. -"아버지요?" -하고 순임은 어른에게 대한 경의를 표하노라고 내 곁에 와서 걸으며, -"아버지께서 오늘은 말씀을 많이 하셨어요. 순임이가 고생하는구나 고맙다, 이런 말씀도 하시고, 지금 같아서는 일어날 것도 같은데 기운이 없어서, 이런 말씀도 하시고, 또 선생님이 이르쿠츠크에를 들어가셨으니 무엇을 사 오실 듯싶으냐, 알아맞혀 보아라, 이런 농담도 하시고, 정임이가 어떤가 한 번 보았으면, 이런 말씀도 하시겠지요. 또 순임아, 내가 죽더라도 정임을 네 친동생으로 알아서 부디 잘 사랑해 주어라, 정임은 불쌍한 애다, 참 정임은 불쌍해! 이런 말씀도 하시겠지요. 그렇게 여러 가지 말씀을 많이 하시더니, 순임아 내가 죽거든 선생님을 아버지로 알고 그 지도를 받아라, 그러시길래 제가 아버지 안 돌아가셔요! 그랬더니 아버지께서 웃으시면서, 죽지 말까, 하시고는 어째 가슴이 좀 거북한가, 하시더니 잠이 드셨어요. 한 시간이나 되었을까, 온." -집 앞에 거의 다 가서는 순임은 정임의 팔을 꼈던 것을 놓고 빨리 집으로 뛰어들어갔다. -치마폭을 펄럭거리고 뛰는 양에는 어렸을 적 말괄량이 순임의 모습이 남아 있어서 나는 혼자 웃었다. 순임은 정임이가 왔다는 기쁜 소식을 한 시각이라도 빨리 아버지께 전하고 싶었던 것이다. -"아버지, 주무시우? 정임이가 왔어요. 정임이가 왔습니다." -하고 부르는 소리가 밖에서도 들렸다. -나도 방에 들어서고, 정임도 뒤따라 들어서고, 노파는 부엌으로 물건을 두러 들어갔다. -방은 절벽같이 어두웠다. -"순임아, 불을 좀 켜려무나." -하고 최석의 얼굴을 찾느라고 눈을 크게 뜨고 고개를 숙이며, -"자나? 정임이가 왔네." -하고 불렀다. -정임도 곁에 와서 선다. -최석은 대답이 없었다. -순임이가 촛불을 켜자 최석의 얼굴이 환하게 보였다. -"여보게, 여봐. 자나?" -하고 나는 무서운 예감을 가지면서 최석의 어깨를 흔들었다. -그것이 무엇인지 모르지마는 최석은 시체라 하는 것을 나는 내 손을 통해서 깨달았다. -나는 깜짝 놀라서 이불을 벗기고 최석의 팔을 잡아 맥을 짚어 보았다. 거기는 맥이 없었다. -나는 최석의 자리옷 가슴을 헤치고 귀를 가슴에 대었다. 그 살은 얼음과 같이 차고 그 가슴은 고요하였다. 심장은 뛰기를 그친 것이었다. -나는 최석의 가슴에서 귀를 떼고 일어서면서, -"네 아버지는 돌아가셨다. 네 손으로 눈이나 감겨 드려라." -하였다. 내 눈에서는 눈물이 흘렀다. -"선생님!" -하고 정임은 전연히 절제할 힘을 잃어버린 듯이 최석의 가슴에 엎어졌다. 그러고는 소리를 내어 울었다. 순임은, -"아버지, 아버지!" -하고 최석의 베개 곁에 이마를 대고 울었다. -아라사 노파도 울었다. -방 안에는 오직 울음 소리뿐이요, 말이 없었다. 최석은 벌써 이 슬픈 광경도 몰라보는 사람이었다. -최석이가 자기의 싸움을 이기고 죽었는지, 또는 끝까지 지다가 죽었는지 그것은 영원한 비밀이어서 알 도리가 없었다. 그러나 이것만은 확실하다 그의 의식이 마지막으로 끝나는 순간에 그의 의식기에 떠오르던 오직 하나가 정임이었으리라는 것만은. -지금 정임이가 그의 가슴에 엎어져 울지마는, 정임의 뜨거운 눈물이 그의 가슴을 적시건마는 최석의 가슴은 뛸 줄을 모른다. 이것이 죽음이란 것이다. -뒤에 경찰의가 와서 검사한 결과에 의하면, 최석은 폐렴으로 앓던 결과로 심장마비를 일으킨 것이라고 하였다. -나는 최석의 장례를 끝내고 순임과 정임을 데리고 오려 하였으나 정임은 듣지 아니하고 노파와 같이 바이칼 촌으로 가 버렸다. -그런 뒤로는 정임에게서는 일체 음신이 없다. 때때로 노파에게서 편지가 오는데 정임은 최석이가 있던 방에 가만히 있다고만 하였다. -서투른 영어가 뜻을 충분히 발표하지 못하는 것이었다. -나는 정임에게 안심하고 병을 치료하라는 편지도 하고 돈이 필요하거든 청구하라는 편지도 하나 영 답장이 없다. -만일 정임이가 죽었다는 기별이 오면 나는 한 번 더 시베리아에 가서 둘을 가지런히 묻고 `두 별 무덤'이라는 비를 세워 줄 생각이다. 그러나 나는 정임이가 조선으로 오기를 바란다. -여러분은 최석과 정임에게 대한 이 기록을 믿고 그 두 사람에게 대한 오해를 풀라. -EOT; -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/Address.php deleted file mode 100644 index f8967ff..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/Address.php +++ /dev/null @@ -1,209 +0,0 @@ -generator->parse($format); - } - - public static function country() - { - return static::randomElement(static::$country); - } - - public static function postcode() - { - return static::toUpper(static::bothify(static::randomElement(static::$postcode))); - } - - public static function regionSuffix() - { - return static::randomElement(static::$regionSuffix); - } - - public static function region() - { - return static::randomElement(static::$region); - } - - public static function citySuffix() - { - return static::randomElement(static::$citySuffix); - } - - public function city() - { - return static::randomElement(static::$city); - } - - public static function streetSuffix() - { - return static::randomElement(static::$streetSuffix); - } - - public static function street() - { - return static::randomElement(static::$street); - } - - /** - * Lithuania municipality - * - * @see https://en.wikipedia.org/wiki/Municipality - * - * @return string - */ - public function municipality() - { - return static::randomElement(static::$municipality); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/Company.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/Company.php deleted file mode 100644 index 89370b3..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/Company.php +++ /dev/null @@ -1,15 +0,0 @@ -generator->parse(static::randomElement(static::$lastNameFormat)); - } - - /** - * Return male last name - * - * @return string - * - * @example 'Vasiliauskas' - */ - public function lastNameMale() - { - return static::randomElement(static::$lastNameMale); - } - - /** - * Return female last name - * - * @return string - * - * @example 'Žukauskaitė' - */ - public function lastNameFemale() - { - return static::randomElement(static::$lastNameFemale); - } - - /** - * Return driver license number - * - * @return string - * - * @example 12345678 - */ - public function driverLicence() - { - return $this->bothify('########'); - } - - /** - * Return passport number - * - * @return string - * - * @example 12345678 - */ - public function passportNumber() - { - return $this->bothify('########'); - } - - /** - * National Personal Identity number (asmens kodas) - * - * @see https://en.wikipedia.org/wiki/National_identification_number#Lithuania - * @see https://lt.wikipedia.org/wiki/Asmens_kodas - * - * @param string $gender [male|female] - * @param string $randomNumber three integers - * - * @return string on format XXXXXXXXXXX - */ - public function personalIdentityNumber($gender = 'male', ?\DateTime $birthdate = null, $randomNumber = '') - { - if (!$birthdate) { - $birthdate = \Faker\Provider\DateTime::dateTimeThisCentury(); - } - - $genderNumber = ($gender == 'male') ? 1 : 0; - $firstNumber = (int) floor($birthdate->format('Y') / 100) * 2 - 34 - $genderNumber; - - $datePart = $birthdate->format('ymd'); - $randomDigits = (string) (!$randomNumber || strlen($randomNumber) < 3) ? static::numerify('###') : substr($randomNumber, 0, 3); - $partOfPerosnalCode = $firstNumber . $datePart . $randomDigits; - - $sum = self::calculateSum($partOfPerosnalCode, 1); - $liekana = $sum % 11; - - if ($liekana !== 10) { - $lastNumber = $liekana; - - return $firstNumber . $datePart . $randomDigits . $lastNumber; - } - - $sum = self::calculateSum($partOfPerosnalCode, 2); - $liekana = $sum % 11; - - $lastNumber = ($liekana !== 10) ? $liekana : 0; - - return $firstNumber . $datePart . $randomDigits . $lastNumber; - } - - /** - * Calculate the sum of personal code - * - * @see https://en.wikipedia.org/wiki/National_identification_number#Lithuania - * @see https://lt.wikipedia.org/wiki/Asmens_kodas - * - * @param string $numbers - * @param int $time [1|2] - * - * @return int - */ - private static function calculateSum($numbers, $time = 1) - { - if ($time == 1) { - $multipliers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1]; - } else { - $multipliers = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3]; - } - - $sum = 0; - - for ($i = 1; $i <= 10; ++$i) { - $sum += ((int) $numbers[$i - 1]) * $multipliers[$i - 1]; - } - - return (int) $sum; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/PhoneNumber.php deleted file mode 100644 index 05e32d3..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lt_LT/PhoneNumber.php +++ /dev/null @@ -1,17 +0,0 @@ -generator->parse($format); - } - - public static function country() - { - return static::randomElement(static::$country); - } - - public static function postcode() - { - return static::toUpper(static::bothify(static::randomElement(static::$postcode))); - } - - public static function regionSuffix() - { - return static::randomElement(static::$regionSuffix); - } - - public static function region() - { - return static::randomElement(static::$region); - } - - public static function cityPrefix() - { - return static::randomElement(static::$cityPrefix); - } - - public function city() - { - return static::randomElement(static::$city); - } - - public static function streetPrefix() - { - return static::randomElement(static::$streetPrefix); - } - - public static function street() - { - return static::randomElement(static::$street); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lv_LV/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lv_LV/Color.php deleted file mode 100644 index 04c895f..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lv_LV/Color.php +++ /dev/null @@ -1,19 +0,0 @@ -format('Y'); - - if ($year >= 2000 && $year <= 2099) { - $century = 2; - } elseif ($year >= 1900 && $year <= 1999) { - $century = 1; - } else { - $century = 0; - } - - $datePart = $birthdate->format('dmy'); - $serialNumber = static::numerify('###'); - - $partialNumberSplit = str_split($datePart . $century . $serialNumber); - - $idDigitValidator = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; - $total = 0; - - foreach ($partialNumberSplit as $key => $digit) { - if (isset($idDigitValidator[$key])) { - $total += $idDigitValidator[$key] * (int) $digit; - } - } - - $checksumDigit = (1101 - $total) % 11 % 10; - - return $datePart . '-' . $century . $serialNumber . $checksumDigit; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lv_LV/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lv_LV/PhoneNumber.php deleted file mode 100644 index 2cfdcb5..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/lv_LV/PhoneNumber.php +++ /dev/null @@ -1,15 +0,0 @@ - static::latitude(42.43, 42.45), - 'longitude' => static::longitude(19.16, 19.27), - ]; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/me_ME/Company.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/me_ME/Company.php deleted file mode 100644 index 2483c20..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/me_ME/Company.php +++ /dev/null @@ -1,49 +0,0 @@ -generator->parse(static::$idNumberFormat)); - } - - /** - * @return string - * - * @example 'Ф' - */ - public function alphabet() - { - return static::randomElement(static::$alphabet); - } - - /** - * @return string - * - * @example 'Э' - */ - public function namePrefix() - { - return static::randomElement(static::$namePrefix); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/mn_MN/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/mn_MN/PhoneNumber.php deleted file mode 100644 index b6706f3..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/mn_MN/PhoneNumber.php +++ /dev/null @@ -1,13 +0,0 @@ - Townships - * @see https://en.wikipedia.org/wiki/Template:Johor > Townships - * @see https://en.wikipedia.org/wiki/Template:Kedah > Townships - * @see https://en.wikipedia.org/wiki/Template:Kelantan > Townships - * @see https://en.wikipedia.org/wiki/Template:Melaka > Townships - * @see https://en.wikipedia.org/wiki/Template:Negeri_Sembilan > Townships - * @see https://en.wikipedia.org/wiki/Template:Perak > Townships - * @see https://en.wikipedia.org/wiki/Template:Penang > Townships - * @see https://en.wikipedia.org/wiki/Template:Selangor > Townships - * @see https://en.wikipedia.org/wiki/Template:Terengganu > Townships - */ - protected static $townshipPrefix = [ - 'Alam', 'Apartment', 'Ara', - 'Bandar', 'Bandar', 'Bandar', 'Bandar', 'Bandar', 'Bandar', - 'Bandar Bukit', 'Bandar Seri', 'Bandar Sri', 'Bandar Baru', 'Batu', 'Bukit', - 'Desa', 'Damansara', - 'Kampung', 'Kampung Baru', 'Kampung Baru', 'Kondominium', 'Kota', - 'Laman', 'Lembah', - 'Medan', - 'Pandan', 'Pangsapuri', 'Petaling', 'Puncak', - 'Seri', 'Sri', - 'Taman', 'Taman', 'Taman', 'Taman', 'Taman', 'Taman', - 'Taman Desa', - ]; - protected static $townshipSuffix = [ - 'Aman', 'Amanjaya', 'Anggerik', 'Angkasa', 'Antarabangsa', 'Awan', - 'Bahagia', 'Bangsar', 'Baru', 'Belakong', 'Bendahara', 'Bestari', 'Bintang', 'Brickfields', - 'Casa', 'Changkat', 'Country Heights', - 'Damansara', 'Damai', 'Dato Harun', 'Delima', 'Duta', - 'Flora', - 'Gembira', 'Genting', - 'Harmoni', 'Hartamas', - 'Impian', 'Indah', 'Intan', - 'Jasa', 'Jaya', - 'Keramat', 'Kerinchi', 'Kiara', 'Kinrara', 'Kuchai', - 'Laksamana', - 'Mahkota', 'Maluri', 'Manggis', 'Maxwell', 'Medan', 'Melawati', 'Menjalara', 'Meru', 'Mulia', 'Mutiara', - 'Pahlawan', 'Perdana', 'Pertama', 'Permai', 'Pelangi', 'Petaling', 'Pinang', 'Puchong', 'Puteri', 'Putra', - 'Rahman', 'Rahmat', 'Raya', 'Razak', 'Ria', - 'Saujana', 'Segambut', 'Selamat', 'Selatan', 'Semarak', 'Sentosa', 'Seputeh', 'Setapak', 'Setia Jaya', 'Sinar', 'Sungai Besi', 'Sungai Buaya', 'Sungai Long', 'Suria', - 'Tasik Puteri', 'Tengah', 'Timur', 'Tinggi', 'Tropika', 'Tun Hussein Onn', 'Tun Perak', 'Tunku', - 'Ulu', 'Utama', 'Utara', - 'Wangi', - ]; - - /** - * @see https://en.wikipedia.org/wiki/Template:Greater_Kuala_Lumpur - * @see https://en.wikipedia.org/wiki/Template:Johor - * @see https://en.wikipedia.org/wiki/Template:Kedah - * @see https://en.wikipedia.org/wiki/Template:Kelantan - * @see https://en.wikipedia.org/wiki/Template:Labuan - * @see https://en.wikipedia.org/wiki/Template:Melaka - * @see https://en.wikipedia.org/wiki/Template:Negeri_Sembilan - * @see https://en.wikipedia.org/wiki/Template:Pahang - * @see https://en.wikipedia.org/wiki/Template:Perak - * @see https://en.wikipedia.org/wiki/Template:Perlis - * @see https://en.wikipedia.org/wiki/Template:Penang - * @see https://en.wikipedia.org/wiki/Template:Sabah - * @see https://en.wikipedia.org/wiki/Template:Sarawak - * @see https://en.wikipedia.org/wiki/Template:Selangor - * @see https://en.wikipedia.org/wiki/Template:Terengganu - */ - protected static $towns = [ - 'johor' => [ - 'Ayer Hitam', - 'Batu Pahat', 'Bukit Gambir', 'Bukit Kepong', 'Bukit Naning', - 'Desaru', - 'Endau', - 'Gelang Patah', 'Gemas Baharu', - 'Iskandar Puteri', - 'Jementah', 'Johor Lama', 'Johor Bahru', - 'Kempas', 'Kluang', 'Kota Iskandar', 'Kota Tinggi', 'Kukup', 'Kulai', - 'Labis ', 'Larkin', 'Layang-Layang', - 'Mersing', 'Muar', - 'Pagoh', 'Paloh', 'Parit Jawa', 'Pasir Gudang', 'Pekan Nanas', 'Permas Jaya', 'Pontian Kechil', - 'Renggam', - 'Segamat', 'Senai', 'Simpang Renggam', 'Skudai', 'Sri Gading', - 'Tangkak', 'Tebrau', - 'Ulu Tiram', - 'Yong Peng', - ], - 'kedah' => [ - 'Alor Setar', - 'Baling', 'Bukit Kayu Hitam', - 'Changlun', - 'Durian Burung', - 'Gurun', - 'Jitra', - 'Kepala Batas', 'Kuah', 'Kuala Kedah', 'Kuala Ketil', 'Kulim', - 'Langgar', 'Lunas', - 'Merbok', - 'Padang Serai', 'Pendang', - 'Serdang', 'Sintok', 'Sungai Petani', - 'Tawar, Baling', - 'Yan', - ], - 'kelantan' => [ - 'Bachok', 'Bunut Payong', - 'Dabong', - 'Gua Musang', - 'Jeli', - 'Ketereh', 'Kota Bharu', 'Kuala Krai', - 'Lojing', - 'Machang', - 'Pasir Mas', 'Pasir Puteh', - 'Rantau Panjang', - 'Salor', - 'Tok Bali', - 'Wakaf Bharu', 'Wakaf Che Yeh', - ], - 'kl' => [ - 'Ampang', - 'Bandar Tasik Selatan', 'Bandar Tun Razak', 'Bangsar', 'Batu', 'Brickfields', 'Bukit Bintang', 'Bukit Jalil', 'Bukit Tunku', - 'Cheras', 'Chow Kit', - 'Damansara Town Centre', 'Dang Wangi', 'Desa Petaling', 'Desa Tun Hussein Onn', - 'Jinjang', - 'Kampung Baru', 'Kampung Kasipillay', 'Kampung Pandan', 'Kampung Sungai Penchala', 'Kepong', 'KLCC', 'Kuchai Lama', - 'Lake Gardens', 'Lembah Pantai', - 'Medan Tuanku', 'Mid Valley City', 'Mont Kiara', - 'Pantai Dalam', 'Pudu', - 'Salak South', 'Segambut', 'Semarak', 'Sentul', 'Setapak', 'Setiawangsa', 'Seputeh', 'Sri Hartamas', 'Sri Petaling', 'Sungai Besi', - 'Taman Desa', 'Taman Melawati', 'Taman OUG', 'Taman Tun Dr Ismail', 'Taman U-Thant', 'Taman Wahyu', 'Titiwangsa', 'Tun Razak Exchange', - 'Wangsa Maju', - ], - 'labuan' => [ - 'Batu Manikar', - 'Kiamsam', - 'Layang-Layang', - 'Rancha-Rancha', - ], - 'melaka' => [ - 'Alor Gajah', - 'Bandaraya Melaka', 'Batu Berendam', 'Bukit Beruang', 'Bukit Katil', - 'Cheng', - 'Durian Tunggal', - 'Hang Tuah Jaya', - 'Jasin', - 'Klebang', - 'Lubuk China', - 'Masjid Tanah', - 'Naning', - 'Pekan Asahan', - 'Ramuan China', - 'Simpang Ampat', - 'Tanjung Bidara', 'Telok Mas', - 'Umbai', - ], - 'nsembilan' => [ - 'Ayer Kuning', 'Ampangan', - 'Bahau', 'Batang Benar', - 'Chembong', - 'Dangi', - 'Gemas', - 'Juasseh', - 'Kuala Pilah', - 'Labu', 'Lenggeng', 'Linggi', - 'Mantin', - 'Nilai', - 'Pajam', 'Pedas', 'Pengkalan Kempas', 'Port Dickson', - 'Rantau', 'Rompin', - 'Senawang', 'Seremban', 'Sungai Gadut', - 'Tampin', 'Tiroi', - ], - 'pahang' => [ - 'Bandar Tun Razak', 'Bentong', 'Brinchang', 'Bukit Fraser', 'Bukit Tinggi', - 'Chendor', - 'Gambang', 'Genting Highlands', 'Genting Sempah', - 'Jerantut', - 'Karak', 'Kemayan', 'Kota Shahbandar', 'Kuala Lipis', 'Kuala Pahang', 'Kuala Rompin', 'Kuantan', - 'Lanchang', 'Lubuk Paku', - 'Maran', 'Mengkuang', 'Mentakab', - 'Nenasi', - 'Panching', - 'Pekan', 'Penor', - 'Raub', - 'Sebertak', 'Sungai Lembing', - 'Tanah Rata', 'Tanjung Sepat', 'Tasik Chini', 'Temerloh', 'Teriang', 'Tringkap', - ], - 'penang' => [ - 'Air Itam', - 'Balik Pulau', 'Batu Ferringhi', 'Batu Kawan', 'Bayan Lepas', 'Bukit Mertajam', 'Butterworth', - 'Gelugor', 'George Town', - 'Jelutong', - 'Kepala Batas', - 'Nibong Tebal', - 'Permatang Pauh', 'Pulau Tikus', - 'Simpang Ampat', - 'Tanjung Bungah', 'Tanjung Tokong', - ], - 'perak' => [ - 'Ayer Tawar', - 'Bagan Serai', 'Batu Gajah', 'Behrang', 'Bidor', 'Bukit Gantang', 'Bukit Merah', - 'Changkat Jering', 'Chemor', 'Chenderiang', - 'Damar Laut', - 'Gerik', 'Gopeng', 'Gua Tempurung', - 'Hutan Melintang', - 'Ipoh', - 'Jelapang', - 'Kamunting', 'Kampar', 'Kuala Kangsar', - 'Lekir', 'Lenggong', 'Lumut', - 'Malim Nawar', 'Manong', 'Menglembu', - 'Pantai Remis', 'Parit', 'Parit Buntar', 'Pasir Salak', 'Proton City', - 'Simpang Pulai', 'Sitiawan', 'Slim River', 'Sungai Siput', 'Sungkai', - 'Taiping', 'Tambun', 'Tanjung Malim', 'Tanjung Rambutan', 'Tapah', 'Teluk Intan', - 'Ulu Bernam', - ], - 'perlis' => [ - 'Arau', - 'Beseri', - 'Chuping', - 'Kaki Bukit', 'Kangar', 'Kuala Perlis', - 'Mata Ayer', - 'Padang Besar', - 'Sanglang', 'Simpang Empat', - 'Wang Kelian', - ], - 'putrajaya' => [ - 'Precinct 1', 'Precinct 4', 'Precinct 5', - 'Precinct 6', 'Precinct 8', 'Precinct 10', - 'Precinct 11', 'Precinct 12', 'Precinct 13', - 'Precinct 16', 'Precinct 18', 'Precinct 19', - ], - 'sabah' => [ - 'Beaufort', 'Bingkor', - 'Donggongon', - 'Inanam', - 'Kinabatangan', 'Kota Belud', 'Kota Kinabalu', 'Kuala Penyu', 'Kimanis', 'Kundasang', - 'Lahad Datu', 'Likas', 'Lok Kawi', - 'Manggatal', - 'Nabawan', - 'Papar', 'Pitas', - 'Ranau', - 'Sandakan', 'Sapulut', 'Semporna', 'Sepanggar', - 'Tambunan', 'Tanjung Aru', 'Tawau', 'Tenom', 'Tuaran', - 'Weston', - ], - 'sarawak' => [ - 'Asajaya', - 'Ba\'kelalan', 'Bario', 'Batu Kawa', 'Batu Niah', 'Betong', 'Bintulu', - 'Dalat', 'Daro', - 'Engkilili', - 'Julau', - 'Kapit', 'Kota Samarahan', 'Kuching', - 'Lawas', 'Limbang', 'Lubok Antu', - 'Marudi', 'Matu', 'Miri', - 'Oya', - 'Pakan', - 'Sadong Jaya', 'Sematan', 'Sibu', 'Siburan', 'Song', 'Sri Aman', 'Sungai Tujoh', - 'Tanjung Kidurong', 'Tanjung Manis', 'Tatau', - ], - 'selangor' => [ - 'Ampang', 'Assam Jawa', - 'Balakong', 'Bandar Baru Bangi', 'Bandar Baru Selayang', 'Bandar Sunway', 'Bangi', 'Banting', 'Batang Kali', 'Batu Caves', 'Bestari Jaya', 'Bukit Lanjan', - 'Cheras', 'Cyberjaya', - 'Damansara', 'Dengkil', - 'Ijok', - 'Jenjarom', - 'Kajang', 'Kelana Jaya', 'Klang', 'Kuala Kubu Bharu', 'Kuala Selangor', 'Kuang', - 'Lagong', - 'Morib', - 'Pandamaran', 'Paya Jaras', 'Petaling Jaya', 'Port Klang', 'Puchong', - 'Rasa', 'Rawang', - 'Salak Tinggi', 'Sekinchan', 'Selayang', 'Semenyih', 'Sepang', 'Serendah', 'Seri Kembangan', 'Shah Alam', 'Subang', 'Subang Jaya', 'Sungai Buloh', - 'Tanjung Karang', 'Tanjung Sepat', - 'Ulu Klang', 'Ulu Yam', - ], - 'terengganu' => [ - 'Ajil', - 'Bandar Ketengah Jaya', 'Bandar Permaisuri', 'Bukit Besi', 'Bukit Payong', - 'Chukai', - 'Jerteh', - 'Kampung Raja', 'Kerteh', 'Kijal', 'Kuala Besut', 'Kuala Berang', 'Kuala Dungun', 'Kuala Terengganu', - 'Marang', 'Merchang', - 'Pasir Raja', - 'Rantau Abang', - 'Teluk Kalung', - 'Wakaf Tapai', - ], - ]; - - /** - * @see https://en.wikipedia.org/wiki/States_and_federal_territories_of_Malaysia - */ - protected static $states = [ - 'johor' => [ - 'Johor Darul Ta\'zim', - 'Johor', - ], - 'kedah' => [ - 'Kedah Darul Aman', - 'Kedah', - ], - 'kelantan' => [ - 'Kelantan Darul Naim', - 'Kelantan', - ], - 'kl' => [ - 'KL', - 'Kuala Lumpur', - 'WP Kuala Lumpur', - ], - 'labuan' => [ - 'Labuan', - ], - 'melaka' => [ - 'Malacca', - 'Melaka', - ], - 'nsembilan' => [ - 'Negeri Sembilan Darul Khusus', - 'Negeri Sembilan', - ], - 'pahang' => [ - 'Pahang Darul Makmur', - 'Pahang', - ], - 'penang' => [ - 'Penang', - 'Pulau Pinang', - ], - 'perak' => [ - 'Perak Darul Ridzuan', - 'Perak', - ], - 'perlis' => [ - 'Perlis Indera Kayangan', - 'Perlis', - ], - 'putrajaya' => [ - 'Putrajaya', - ], - 'sabah' => [ - 'Sabah', - ], - 'sarawak' => [ - 'Sarawak', - ], - 'selangor' => [ - 'Selangor Darul Ehsan', - 'Selangor', - ], - 'terengganu' => [ - 'Terengganu Darul Iman', - 'Terengganu', - ], - ]; - - /** - * @see https://ms.wikipedia.org/wiki/Senarai_negara_berdaulat - */ - protected static $country = [ - 'Abkhazia', 'Afghanistan', 'Afrika Selatan', 'Republik Afrika Tengah', 'Akrotiri dan Dhekelia', 'Albania', 'Algeria', 'Amerika Syarikat', 'Andorra', 'Angola', 'Antigua dan Barbuda', 'Arab Saudi', 'Argentina', 'Armenia', 'Australia', 'Austria', 'Azerbaijan', - 'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belanda', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bhutan', 'Bolivia', 'Bonaire', 'Bosnia dan Herzegovina', 'Botswana', 'Brazil', 'Brunei Darussalam', 'Bulgaria', 'Burkina Faso', 'Burundi', - 'Cameroon', 'Chad', 'Chile', 'Republik Rakyat China', 'Republik China di Taiwan', 'Colombia', 'Comoros', 'Republik Demokratik Congo', 'Republik Congo', 'Kepulauan Cook', 'Costa Rica', 'Côte d\'Ivoire (Ivory Coast)', 'Croatia', 'Cuba', 'Curaçao', 'Cyprus', 'Republik Turki Cyprus Utara', 'Republik Czech', - 'Denmark', 'Djibouti', 'Dominika', 'Republik Dominika', - 'Ecuador', 'El Salvador', 'Emiriah Arab Bersatu', 'Eritrea', 'Estonia', - 'Kepulauan Faroe', 'Fiji', 'Filipina', 'Finland', - 'Gabon', 'Gambia', 'Georgia', 'Ghana', 'Grenada', 'Greece (Yunani)', 'Guatemala', 'Guinea', 'Guinea-Bissau', 'Guinea Khatulistiwa', 'Guiana Perancis', 'Guyana', - 'Habsyah (Etiopia)', 'Haiti', 'Honduras', 'Hungary', - 'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Ireland', 'Israel', 'Itali', - 'Jamaika', 'Jepun', 'Jerman', 'Jordan', - 'Kanada', 'Kazakhstan', 'Kemboja', 'Kenya', 'Kiribati', 'Korea Selatan', 'Korea Utara', 'Kosovo', 'Kuwait', 'Kyrgyzstan', - 'Laos', 'Latvia', 'Lesotho', 'Liberia', 'Libya', 'Liechtenstein', 'Lithuania', 'Lubnan', 'Luxembourg', - 'Macedonia', 'Madagaskar', 'Maghribi', 'Malawi', 'Malaysia', 'Maldives', 'Mali', 'Malta', 'Kepulauan Marshall', 'Mauritania', 'Mauritius', 'Mesir', 'Mexico', 'Persekutuan Micronesia', 'Moldova', 'Monaco', 'Montenegro', 'Mongolia', 'Mozambique', 'Myanmar', - 'Namibia', 'Nauru', 'Nepal', 'New Zealand', 'Nicaragua', 'Niger', 'Nigeria', 'Niue', 'Norway', - 'Oman', 'Ossetia Selatan', - 'Pakistan', 'Palau', 'Palestin', 'Panama', 'Papua New Guinea', 'Paraguay', 'Perancis', 'Peru', 'Poland', 'Portugal', - 'Qatar', - 'Romania', 'Russia', 'Rwanda', - 'Sahara Barat', 'Saint Kitts dan Nevis', 'Saint Lucia', 'Saint Vincent dan Grenadines', 'Samoa', 'San Marino', 'São Tomé dan Príncipe', 'Scotland', 'Senegal', 'Sepanyol', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapura', 'Slovakia', 'Slovenia', 'Kepulauan Solomon', 'Somalia', 'Somaliland', 'Sri Lanka', 'Sudan', 'Sudan Selatan', 'Suriname', 'Swaziland', 'Sweden', 'Switzerland', 'Syria', - 'Tajikistan', 'Tanjung Verde', 'Tanzania', 'Thailand', 'Timor Leste', 'Togo', 'Tonga', 'Transnistria', 'Trinidad dan Tobago', 'Tunisia', 'Turki', 'Turkmenistan', 'Tuvalu', - 'Uganda', 'Ukraine', 'United Kingdom', 'Uruguay', 'Uzbekistan', - 'Vanuatu', 'Kota Vatican', 'Venezuela', 'Vietnam', - 'Yaman', - 'Zambia', 'Zimbabwe', - ]; - - /** - * Return a building prefix - * - * @example 'No.' - * - * @return string - */ - public static function buildingPrefix() - { - return static::randomElement(static::$buildingPrefix); - } - - /** - * Return a building number - * - * @example '123' - * - * @return string - */ - public static function buildingNumber() - { - return static::toUpper(static::lexify(static::numerify(static::randomElement(static::$buildingNumber)))); - } - - /** - * Return a street prefix - * - * @example 'Jalan' - */ - public function streetPrefix() - { - $format = static::randomElement(static::$streetPrefix); - - return $this->generator->parse($format); - } - - /** - * Return a complete streename - * - * @example 'Jalan Utama 7' - * - * @return string - */ - public function streetName() - { - $format = static::toUpper(static::lexify(static::numerify(static::randomElement(static::$streetNameFormats)))); - - return $this->generator->parse($format); - } - - /** - * Return a randown township - * - * @example Taman Bahagia - * - * @return string - */ - public function township() - { - $format = static::toUpper(static::lexify(static::numerify(static::randomElement(static::$townshipFormats)))); - - return $this->generator->parse($format); - } - - /** - * Return a township prefix abbreviation - * - * @example 'USJ' - * - * @return string - */ - public function townshipPrefixAbbr() - { - return static::randomElement(static::$townshipPrefixAbbr); - } - - /** - * Return a township prefix - * - * @example 'Taman' - * - * @return string - */ - public function townshipPrefix() - { - return static::randomElement(static::$townshipPrefix); - } - - /** - * Return a township suffix - * - * @example 'Bahagia' - */ - public function townshipSuffix() - { - return static::randomElement(static::$townshipSuffix); - } - - /** - * Return a postcode based on state - * - * @example '55100' - * - * @see https://en.wikipedia.org/wiki/Postal_codes_in_Malaysia#States - * - * @param string|null $state 'state' or null - * - * @return string - */ - public static function postcode($state = null) - { - $format = [ - 'perlis' => [ // (01000 - 02800) - '0' . self::numberBetween(1000, 2800), - ], - 'kedah' => [ // (05000 - 09810) - '0' . self::numberBetween(5000, 9810), - ], - 'penang' => [ // (10000 - 14400) - self::numberBetween(10000, 14400), - ], - 'kelantan' => [ // (15000 - 18500) - self::numberBetween(15000, 18500), - ], - 'terengganu' => [ // (20000 - 24300) - self::numberBetween(20000, 24300), - ], - 'pahang' => [ // (25000 - 28800 | 39000 - 39200 | 49000, 69000) - self::numberBetween(25000, 28800), - self::numberBetween(39000, 39200), - self::numberBetween(49000, 69000), - ], - 'perak' => [ // (30000 - 36810) - self::numberBetween(30000, 36810), - ], - 'selangor' => [ // (40000 - 48300 | 63000 - 68100) - self::numberBetween(40000, 48300), - self::numberBetween(63000, 68100), - ], - 'kl' => [ // (50000 - 60000) - self::numberBetween(50000, 60000), - ], - 'putrajaya' => [ // (62000 - 62988) - self::numberBetween(62000, 62988), - ], - 'nsembilan' => [ // (70000 - 73509) - self::numberBetween(70000, 73509), - ], - 'melaka' => [ // (75000 - 78309) - self::numberBetween(75000, 78309), - ], - 'johor' => [ // (79000 - 86900) - self::numberBetween(79000, 86900), - ], - 'labuan' => [ // (87000 - 87033) - self::numberBetween(87000, 87033), - ], - 'sabah' => [ // (88000 - 91309) - self::numberBetween(88000, 91309), - ], - 'sarawak' => [ // (93000 - 98859) - self::numberBetween(93000, 98859), - ], - ]; - - $postcode = null === $state ? static::randomElement($format) : $format[$state]; - - return (string) static::randomElement($postcode); - } - - /** - * Return the complete town address with matching postcode and state - * - * @example 55100 Bukit Bintang, Kuala Lumpur - * - * @return string - */ - public function townState() - { - $state = static::randomElement(array_keys(static::$states)); - $postcode = static::postcode($state); - $town = static::randomElement(static::$towns[$state]); - $state = static::randomElement(static::$states[$state]); - - return $postcode . ' ' . $town . ', ' . $state; - } - - /** - * Return a random city (town) - * - * @example 'Ampang' - * - * @return string - */ - public function city() - { - $state = static::randomElement(array_keys(static::$towns)); - - return static::randomElement(static::$towns[$state]); - } - - /** - * Return a random state - * - * @example 'Johor' - * - * @return string - */ - public function state() - { - $state = static::randomElement(array_keys(static::$states)); - - return static::randomElement(static::$states[$state]); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/Company.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/Company.php deleted file mode 100644 index 4dc8b2c..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/Company.php +++ /dev/null @@ -1,105 +0,0 @@ -generator->parse($formats); - } - - /** - * Return Peninsular prefix alphabet - * - * @example 'W' - * - * @return string - */ - public static function peninsularPrefix() - { - return static::randomElement(static::$peninsularPrefix); - } - - /** - * Return Sarawak state prefix alphabet - * - * @example 'QA' - * - * @return string - */ - public static function sarawakPrefix() - { - return static::randomElement(static::$sarawakPrefix); - } - - /** - * Return Sabah state prefix alphabet - * - * @example 'SA' - * - * @return string - */ - public static function sabahPrefix() - { - return static::randomElement(static::$sabahPrefix); - } - - /** - * Return specialty licence plate prefix - * - * @example 'G1M' - * - * @return string - */ - public static function specialPrefix() - { - return static::randomElement(static::$specialPrefix); - } - - /** - * Return a valid license plate alphabet - * - * @example 'A' - * - * @return string - */ - public static function validAlphabet() - { - return static::randomElement(static::$validAlphabets); - } - - /** - * Return a valid number sequence between 1 and 9999 - * - * @example '1234' - * - * @return int - */ - public static function numberSequence() - { - return self::numberBetween(1, 9999); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/Payment.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/Payment.php deleted file mode 100644 index b64c2bb..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/Payment.php +++ /dev/null @@ -1,244 +0,0 @@ -generator->parse($formats); - } - - /** - * Return a Malaysian Bank account number - * - * @example '1234567890123456' - * - * @return string - */ - public function bankAccountNumber() - { - $formats = static::randomElement(static::$bankAccountNumberFormats); - - return static::numerify($formats); - } - - /** - * Return a Malaysian Local Bank - * - * @example 'Public Bank' - * - * @return string - */ - public static function localBank() - { - return static::randomElement(static::$localBanks); - } - - /** - * Return a Malaysian Foreign Bank - * - * @example 'Citibank Berhad' - * - * @return string - */ - public static function foreignBank() - { - return static::randomElement(static::$foreignBanks); - } - - /** - * Return a Malaysian Government Bank - * - * @example 'Bank Simpanan Nasional' - * - * @return string - */ - public static function governmentBank() - { - return static::randomElement(static::$governmentBanks); - } - - /** - * Return a Malaysian insurance company - * - * @example 'AIA Malaysia' - * - * @return string - */ - public static function insurance() - { - return static::randomElement(static::$insuranceCompanies); - } - - /** - * Return a Malaysian Bank SWIFT Code - * - * @example 'MBBEMYKLXXX' - * - * @return string - */ - public static function swiftCode() - { - return static::toUpper(static::lexify(static::randomElement(static::$swiftCodes))); - } - - /** - * Return the Malaysian currency symbol - * - * @example 'RM' - * - * @return string - */ - public static function currencySymbol() - { - return static::randomElement(static::$currencySymbol); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/Person.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/Person.php deleted file mode 100644 index d685715..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/Person.php +++ /dev/null @@ -1,812 +0,0 @@ -generator->parse(static::randomElement($formats)); - } - - /** - * Return a Malaysian I.C. No. - * - * @example '890123-45-6789' - * - * @see https://en.wikipedia.org/wiki/Malaysian_identity_card#Structure_of_the_National_Registration_Identity_Card_Number_(NRIC) - * - * @param string|null $gender 'male', 'female' or null for any - * @param bool|string|null $hyphen true, false, or any separator characters - * - * @return string - */ - public static function myKadNumber($gender = null, $hyphen = false) - { - // year of birth - $yy = self::numberBetween(0, 99); - - // month of birth - $mm = DateTime::month(); - - // day of birth - $dd = DateTime::dayOfMonth(); - - // place of birth (1-59 except 17-20) - while (in_array($pb = self::numberBetween(1, 59), [17, 18, 19, 20], false)) { - } - - // random number - $nnn = self::numberBetween(0, 999); - - // gender digit. Odd = MALE, Even = FEMALE - $g = self::numberBetween(0, 9); - - //Credit: https://gist.github.com/mauris/3629548 - if ($gender === static::GENDER_MALE) { - $g = $g | 1; - } elseif ($gender === static::GENDER_FEMALE) { - $g = $g & ~1; - } - - // formatting with hyphen - if ($hyphen === true) { - $hyphen = '-'; - } elseif ($hyphen === false) { - $hyphen = ''; - } - - return sprintf('%02d%02d%02d%s%02d%s%03d%01d', $yy, $mm, $dd, $hyphen, $pb, $hyphen, $nnn, $g); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/PhoneNumber.php deleted file mode 100644 index 7cce02f..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ms_MY/PhoneNumber.php +++ /dev/null @@ -1,217 +0,0 @@ -generator->parse($format)); - } - - return static::numerify($this->generator->parse($format)); - } - - /** - * Return prefix digits for 011 numbers - * - * @example '10' - * - * @return string - */ - public static function zeroOneOnePrefix() - { - return static::numerify(static::randomElement(static::$zeroOneOnePrefix)); - } - - /** - * Return prefix digits for 014 numbers - * - * @example '2' - * - * @return string - */ - public static function zeroOneFourPrefix() - { - return static::numerify(static::randomElement(static::$zeroOneFourPrefix)); - } - - /** - * Return prefix digits for 015 numbers - * - * @example '1' - * - * @return string - */ - public static function zeroOneFivePrefix() - { - return static::numerify(static::randomElement(static::$zeroOneFivePrefix)); - } - - /** - * Return a Malaysian Fixed Line Phone Number. - * - * @example '+603-4567-8912' - * - * @param bool $countryCodePrefix true, false - * @param bool $formatting true, false - * - * @return string - */ - public function fixedLineNumber($countryCodePrefix = true, $formatting = true) - { - if ($formatting) { - $format = static::randomElement(static::$fixedLineNumberFormatsWithFormatting); - } else { - $format = static::randomElement(static::$fixedLineNumberFormats); - } - - if ($countryCodePrefix) { - return static::countryCodePrefix($formatting) . static::numerify($this->generator->parse($format)); - } - - return static::numerify($this->generator->parse($format)); - } - - /** - * Return a Malaysian VoIP Phone Number. - * - * @example '+6015-678-9234' - * - * @param bool $countryCodePrefix true, false - * @param bool $formatting true, false - * - * @return string - */ - public function voipNumber($countryCodePrefix = true, $formatting = true) - { - if ($formatting) { - $format = static::randomElement(static::$voipNumberWithFormatting); - } else { - $format = static::randomElement(static::$voipNumber); - } - - if ($countryCodePrefix) { - return static::countryCodePrefix($formatting) . static::numerify($this->generator->parse($format)); - } - - return static::numerify($this->generator->parse($format)); - } - - /** - * Return a Malaysian Country Code Prefix. - * - * @example '+6' - * - * @param bool $formatting true, false - * - * @return string - */ - public static function countryCodePrefix($formatting = true) - { - if ($formatting) { - return static::randomElement(static::$plusSymbol) . static::randomElement(static::$countryCodePrefix); - } - - return static::randomElement(static::$countryCodePrefix); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nb_NO/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nb_NO/Address.php deleted file mode 100644 index cbc39d7..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nb_NO/Address.php +++ /dev/null @@ -1,197 +0,0 @@ -format('dmy'); - - /** - * @todo These number should be random based on birth year - * - * @see http://no.wikipedia.org/wiki/F%C3%B8dselsnummer - */ - $randomDigits = (string) static::numerify('##'); - - switch ($gender) { - case static::GENDER_MALE: - $genderDigit = static::randomElement([1, 3, 5, 7, 9]); - - break; - - case static::GENDER_FEMALE: - $genderDigit = static::randomElement([0, 2, 4, 6, 8]); - - break; - - default: - $genderDigit = (string) static::numerify('#'); - } - - $digits = $datePart . $randomDigits . $genderDigit; - - /** - * @todo Calculate modulo 11 of $digits - * - * @see http://no.wikipedia.org/wiki/F%C3%B8dselsnummer - */ - $checksum = (string) static::numerify('##'); - - return $digits . $checksum; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nb_NO/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nb_NO/PhoneNumber.php deleted file mode 100644 index 4767db4..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nb_NO/PhoneNumber.php +++ /dev/null @@ -1,41 +0,0 @@ -generator->parse($format)); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ne_NP/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ne_NP/Address.php deleted file mode 100644 index 59b31de..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ne_NP/Address.php +++ /dev/null @@ -1,131 +0,0 @@ -format('ymd')); - $help = $date->format('Y') >= 2000 ? 2 : null; - - $check = (int) ($help . $dob . $middle); - $rest = sprintf('%02d', 97 - ($check % 97)); - - return $dob . $middle . $rest; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nl_BE/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nl_BE/PhoneNumber.php deleted file mode 100644 index 9e4a391..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nl_BE/PhoneNumber.php +++ /dev/null @@ -1,20 +0,0 @@ -generator->lastName(); - - break; - } - - if (Miscellaneous::boolean()) { - return $companyName . ' ' . static::randomElement(static::$companySuffix); - } - - return $companyName; - } - - /** - * Belasting Toegevoegde Waarde (BTW) = VAT - * - * @example 'NL123456789B01' - * - * @see https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/zakelijk/btw/administratie_bijhouden/btw_nummers_controleren/uw_btw_nummer - * - * @return string VAT Number - */ - public static function vat() - { - return sprintf('%s%d%s%d', 'NL', self::randomNumber(9, true), 'B', self::randomNumber(2, true)); - } - - /** - * Alias dutch vat number format - * - * @return string - */ - public static function btw() - { - return self::vat(); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nl_NL/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nl_NL/Internet.php deleted file mode 100644 index bf30e79..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nl_NL/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ - 9) { - if ($nr[1] > 0) { - $nr[0] = 8; - --$nr[1]; - } else { - $nr[0] = 1; - ++$nr[1]; - } - } - - return implode('', array_reverse($nr)); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nl_NL/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nl_NL/PhoneNumber.php deleted file mode 100644 index 5d4163a..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/nl_NL/PhoneNumber.php +++ /dev/null @@ -1,39 +0,0 @@ - ['D', 'V'], - 'kujawsko-pomorskie' => ['C'], - 'lubelskie' => ['L'], - 'lubuskie' => ['F'], - 'łódzkie' => ['E'], - 'małopolskie' => ['K', 'J'], - 'mazowieckie' => ['W', 'A'], - 'opolskie' => ['O'], - 'podkarpackie' => ['R', 'Y'], - 'podlaskie' => ['B'], - 'pomorskie' => ['G', 'X'], - 'śląskie' => ['S', 'I'], - 'świętokrzyskie' => ['T'], - 'warmińsko-mazurskie' => ['N'], - 'wielkopolskie' => ['P', 'M'], - 'zachodniopomorskie' => ['Z'], - ]; - - /** - * @var array list of special vehicle registration number prefixes. - */ - protected static $specials = [ - 'army' => ['U'], - 'services' => ['H'], - ]; - - /** - * @var array list of Polish counties and respective vehicle registration number prefixes. - */ - protected static $counties = [ - 'dolnośląskie' => [ - 'Jelenia Góra' => ['J'], - 'Legnica' => ['L'], - 'Wałbrzych' => ['B'], - 'Wrocław' => ['W', 'X'], - 'bolesławiecki' => ['BL'], - 'dzierżoniowski' => ['DZ'], - 'głogowski' => ['GL'], - 'górowski' => ['GR'], - 'jaworski' => ['JA'], - 'jeleniogórski' => ['JE'], - 'kamiennogórski' => ['KA'], - 'kłodzki' => ['KL'], - 'legnicki' => ['LE'], - 'lubański' => ['LB'], - 'lubiński' => ['LU'], - 'lwówecki' => ['LW'], - 'milicki' => ['MI'], - 'oleśnicki' => ['OL'], - 'oławski' => ['OA'], - 'polkowicki' => ['PL'], - 'strzeliński' => ['ST'], - 'średzki' => ['SR'], - 'świdnicki' => ['SW'], - 'trzebnicki' => ['TR'], - 'wałbrzyski' => ['BA'], - 'wołowski' => ['WL'], - 'wrocławski' => ['WR'], - 'ząbkowicki' => ['ZA'], - 'zgorzelecki' => ['ZG'], - 'złotoryjski' => ['ZL'], - ], - 'kujawsko-pomorskie' => [ - 'Bydgoszcz' => ['B'], - 'Grudziądz' => ['G'], - 'Toruń' => ['T'], - 'Włocławek' => ['W'], - 'aleksandrowski' => ['AL'], - 'brodnicki' => ['BR'], - 'bydgoski' => ['BY'], - 'chełmiński' => ['CH'], - 'golubsko-dobrzyński' => ['GD'], - 'grudziądzki' => ['GR'], - 'inowrocławski' => ['IN'], - 'lipnowski' => ['LI'], - 'mogileński' => ['MG'], - 'nakielski' => ['NA'], - 'radziejowski' => ['RA'], - 'rypiński' => ['RY'], - 'sępoleński' => ['SE'], - 'świecki' => ['SW'], - 'toruński' => ['TR'], - 'tucholski' => ['TU'], - 'wąbrzeski' => ['WA'], - 'włocławski' => ['WL'], - 'żniński' => ['ZN'], - ], - 'lubelskie' => [ - 'Biała Podlaska' => ['B'], - 'Chełm' => ['C'], - 'Lublin' => ['U'], - 'Zamość' => ['Z'], - 'bialski' => ['BI'], - 'biłgorajski' => ['BL'], - 'chełmski' => ['CH'], - 'hrubieszowski' => ['HR'], - 'janowski' => ['JA'], - 'krasnostawski' => ['KS'], - 'kraśnicki' => ['KR'], - 'lubartowski' => ['LB'], - 'lubelski' => ['UB'], - 'łęczyński' => ['LE'], - 'łukowski' => ['LU'], - 'opolski' => ['OP'], - 'parczewski' => ['PA'], - 'puławski' => ['PU'], - 'radzyński' => ['RA'], - 'rycki' => ['RY'], - 'świdnicki' => ['SW'], - 'tomaszowski' => ['TM'], - 'włodawski' => ['WL'], - 'zamojski' => ['ZA'], - ], - 'lubuskie' => [ - 'Gorzów Wielkopolski' => ['G'], - 'Zielona Góra' => ['Z'], - 'gorzowski' => ['GW'], - 'krośnieński' => ['KR'], - 'międzyrzecki' => ['MI'], - 'nowosolski' => ['NW'], - 'słubicki' => ['SL'], - 'strzelecko-drezdenecki' => ['SD'], - 'sulęciński' => ['SU'], - 'świebodziński' => ['SW'], - 'wschowski' => ['WS'], - 'zielonogórski' => ['ZI'], - 'żagański' => ['ZG'], - 'żarski' => ['ZA'], - ], - 'łódzkie' => [ - 'Łódź' => ['L', 'D'], - 'Piotrków Trybunalski' => ['P'], - 'Skierniewice' => ['S'], - 'brzeziński' => ['BR'], - 'bełchatowski' => ['BE'], - 'kutnowski' => ['KU'], - 'łaski' => ['LA'], - 'łęczycki' => ['LE'], - 'łowicki' => ['LC'], - 'łódzki wschodni' => ['LW'], - 'opoczyński' => ['OP'], - 'pabianicki' => ['PA'], - 'pajęczański' => ['PJ'], - 'piotrkowski' => ['PI'], - 'poddębicki' => ['PD'], - 'radomszczański' => ['RA'], - 'rawski' => ['RW'], - 'sieradzki' => ['SI'], - 'skierniewicki' => ['SK'], - 'tomaszowski' => ['TM'], - 'wieluński' => ['WI'], - 'wieruszowski' => ['WE'], - 'zduńskowolski' => ['ZD'], - 'zgierski' => ['ZG'], - ], - 'małopolskie' => [ - 'Kraków' => ['R', 'K'], - 'Nowy Sącz' => ['N'], - 'Tarnów' => ['T'], - 'bocheński' => ['BA', 'BC'], - 'brzeski' => ['BR'], - 'chrzanowski' => ['CH'], - 'dąbrowski' => ['DA'], - 'gorlicki' => ['GR'], - 'krakowski' => ['RA', 'RK'], - 'limanowski' => ['LI'], - 'miechowski' => ['MI'], - 'myślenicki' => ['MY'], - 'nowosądecki' => ['NS'], - 'nowotarski' => ['NT'], - 'olkuski' => ['OL'], - 'oświęcimski' => ['OS'], - 'proszowicki' => ['PR'], - 'suski' => ['SU'], - 'tarnowski' => ['TA'], - 'tatrzański' => ['TT'], - 'wadowicki' => ['WA'], - 'wielicki' => ['WI'], - ], - 'mazowieckie' => [ - 'Ostrołęka' => ['O'], - 'Płock' => ['P'], - 'Radom' => ['R'], - 'Siedlce' => ['S'], - 'białobrzeski' => ['BR'], - 'ciechanowski' => ['CI'], - 'garwoliński' => ['G'], - 'gostyniński' => ['GS'], - 'grodziski' => ['GM'], - 'grójecki' => ['GR'], - 'kozienicki' => ['KZ'], - 'legionowski' => ['L'], - 'lipski' => ['LI'], - 'łosicki' => ['LS'], - 'makowski' => ['MA'], - 'miński' => ['M'], - 'mławski' => ['ML'], - 'nowodworski' => ['ND'], - 'ostrołęcki' => ['OS'], - 'ostrowski' => ['OR'], - 'otwocki' => ['OT'], - 'piaseczyński' => ['PA', 'PI', 'PW', 'PX'], - 'płocki' => ['PL'], - 'płoński' => ['PN'], - 'pruszkowski' => ['PP', 'PR', 'PS'], - 'przasnyski' => ['PZ'], - 'przysuski' => ['PY'], - 'pułtuski' => ['PU'], - 'radomski' => ['RA'], - 'siedlecki' => ['SI'], - 'sierpecki' => ['SE'], - 'sochaczewski' => ['SC'], - 'sokołowski' => ['SK'], - 'szydłowiecki' => ['SZ'], - 'warszawski' => ['A', 'B', 'D', 'E', 'F', 'H', 'I', 'J', 'K', 'N', 'T', 'U', 'W', 'X', 'Y'], - 'warszawski zachodni' => ['Z'], - 'węgrowski' => ['WE'], - 'wołomiński' => ['WL', 'V'], - 'wyszkowski' => ['WY'], - 'zwoleński' => ['ZW'], - 'żuromiński' => ['ZU'], - 'żyrardowski' => ['ZY'], - ], - 'opolskie' => [ - 'Opole' => ['P'], - 'brzeski' => ['B'], - 'głubczycki' => ['GL'], - 'kędzierzyńsko-kozielski' => ['K'], - 'kluczborski' => ['KL'], - 'krapkowicki' => ['KR'], - 'namysłowski' => ['NA'], - 'nyski' => ['NY'], - 'oleski' => ['OL'], - 'opolski' => ['PO'], - 'prudnicki' => ['PR'], - 'strzelecki' => ['ST'], - ], - 'podkarpackie' => [ - 'Krosno' => ['K'], - 'Przemyśl' => ['P'], - 'Rzeszów' => ['Z'], - 'Tarnobrzeg' => ['T'], - 'bieszczadzki' => ['BI'], - 'brzozowski' => ['BR'], - 'dębicki' => ['DE'], - 'jarosławski' => ['JA'], - 'jasielski' => ['JS'], - 'kolbuszowski' => ['KL'], - 'krośnieński' => ['KR'], - 'leski' => ['LS'], - 'leżajski' => ['LE'], - 'lubaczowski' => ['LU'], - 'łańcucki' => ['LA'], - 'mielecki' => ['MI'], - 'niżański' => ['NI'], - 'przemyski' => ['PR'], - 'przeworski' => ['PZ'], - 'ropczycko-sędziszowski' => ['RS'], - 'rzeszowski' => ['ZE', 'ZR', 'ZZ'], - 'sanocki' => ['SA'], - 'stalowowolski' => ['ST'], - 'strzyżowski' => ['SR'], - 'tarnobrzeski' => ['TA'], - ], - 'podlaskie' => [ - 'Białystok' => ['I'], - 'Łomża' => ['L'], - 'Suwałki' => ['S'], - 'augustowski' => ['AU'], - 'białostocki' => ['IA', 'IB'], - 'bielski' => ['BI'], - 'grajewski' => ['GR'], - 'hajnowski' => ['HA'], - 'kolneński' => ['KL'], - 'łomżyński' => ['LM'], - 'moniecki' => ['MN'], - 'sejneński' => ['SE'], - 'siemiatycki' => ['SI'], - 'sokólski' => ['SK'], - 'suwalski' => ['SU'], - 'wysokomazowiecki' => ['WM'], - 'zambrowski' => ['ZA'], - ], - 'pomorskie' => [ - 'Gdańsk' => ['D'], - 'Gdynia' => ['A'], - 'Słupsk' => ['S'], - 'Sopot' => ['SP'], - 'bytowski' => ['BY'], - 'chojnicki' => ['CH'], - 'człuchowski' => ['CZ'], - 'gdański' => ['DA'], - 'kartuski' => ['KA', 'KY', 'KZ'], - 'kościerski' => ['KS'], - 'kwidzyński' => ['KW'], - 'lęborski' => ['LE'], - 'malborski' => ['MB'], - 'nowodworski' => ['ND'], - 'pucki' => ['PU'], - 'słupski' => ['SL'], - 'starogardzki' => ['ST'], - 'sztumski' => ['SZ'], - 'tczewski' => ['TC'], - 'wejherowski' => ['WE', 'WO'], - ], - 'śląskie' => [ - 'Bielsko-Biała' => ['B'], - 'Bytom' => ['Y'], - 'Chorzów' => ['H'], - 'Częstochowa' => ['C'], - 'Dąbrowa Górnicza' => ['D'], - 'Gliwice' => ['G'], - 'Jastrzębie-Zdrój' => ['JZ'], - 'Jaworzno' => ['J'], - 'Katowice' => ['K'], - 'Mysłowice' => ['M'], - 'Piekary Śląskie' => ['PI'], - 'Ruda Śląska,' => ['L', 'RS'], - 'Rybnik' => ['R'], - 'Siemianowice Śląskie' => ['I'], - 'Sosnowiec' => ['O'], - 'Świętochłowice' => ['W'], - 'Tychy' => ['T'], - 'Zabrze' => ['Z'], - 'Żory' => ['ZO'], - 'będziński' => ['BE', 'BN', 'E'], - 'bielski' => ['BI'], - 'cieszyński' => ['CI', 'CN'], - 'częstochowski' => ['CZ'], - 'gliwicki' => ['GL'], - 'kłobucki' => ['KL'], - 'lubliniecki' => ['LU'], - 'mikołowski' => ['MI'], - 'myszkowski' => ['MY'], - 'pszczyński' => ['PS'], - 'raciborski' => ['RC'], - 'rybnicki' => ['RB'], - 'tarnogórski' => ['TA'], - 'bieruńsko - lędziński' => ['BL'], - 'wodzisławski' => ['WD', 'WZ'], - 'zawierciański' => ['ZA'], - 'żywiecki' => ['ZY'], - ], - 'świętokrzyskie' => [ - 'Kielce' => ['K'], - 'buski' => ['BU'], - 'jędrzejowski' => ['JE'], - 'kazimierski' => ['KA'], - 'kielecki' => ['KI'], - 'konecki' => ['KN'], - 'opatowski' => ['OP'], - 'ostrowiecki' => ['OS'], - 'pińczowski' => ['PI'], - 'sandomierski' => ['SA'], - 'skarżyski' => ['SK'], - 'starachowicki' => ['ST'], - 'staszowski' => ['SZ'], - 'włoszczowski' => ['LW'], - ], - 'warmińsko-mazurskie' => [ - 'Elbląg' => ['E'], - 'Olsztyn' => ['O'], - 'bartoszycki' => ['BA'], - 'braniewski' => ['BR'], - 'działdowski' => ['DZ'], - 'elbląski' => ['EB'], - 'ełcki' => ['EL'], - 'giżycki' => ['GI'], - 'iławski' => ['IL'], - 'kętrzyński' => ['KE'], - 'lidzbarski' => ['LI'], - 'mrągowski' => ['MR'], - 'nidzicki' => ['NI'], - 'nowomiejski' => ['NM'], - 'olecki' => ['OE'], - 'gołdapski' => ['GO'], - 'olsztyński' => ['OL'], - 'ostródzki' => ['OS'], - 'piski' => ['PI'], - 'szczycieński' => ['SZ'], - 'węgorzewski' => ['WE'], - ], - 'wielkopolskie' => [ - 'Kalisz' => ['A', 'K'], - 'Konin' => ['KO', 'N'], - 'Leszno' => ['L'], - 'Poznań' => ['O', 'Y'], - 'chodzieski' => ['CH'], - 'czarnkowsko-trzcianecki' => ['CT'], - 'gnieźnieński' => ['GN'], - 'gostyński' => ['GS'], - 'grodziski' => ['GO'], - 'jarociński' => ['JA'], - 'kaliski' => ['KA'], - 'kępiński' => ['KE'], - 'kolski' => ['KL'], - 'koniński' => ['KN'], - 'kościański' => ['KS'], - 'krotoszyński' => ['KR'], - 'leszczyński' => ['LE'], - 'międzychodzki' => ['MI'], - 'nowotomyski' => ['NT'], - 'obornicki' => ['OB'], - 'ostrowski' => ['OS'], - 'ostrzeszowski' => ['OT'], - 'pilski' => ['P'], - 'pleszewski' => ['PL'], - 'poznański' => ['OZ', 'Z'], - 'rawicki' => ['RA'], - 'słupecki' => ['SL'], - 'szamotulski' => ['SZ'], - 'średzki' => ['SR'], - 'śremski' => ['SE'], - 'turecki' => ['TU'], - 'wągrowiecki' => ['WA'], - 'wolsztyński' => ['WL'], - 'wrzesiński' => ['WR'], - 'złotowski' => ['ZL'], - ], - 'zachodniopomorskie' => [ - 'Koszalin' => ['K'], - 'Szczecin' => ['S', 'Z'], - 'Świnoujście' => ['SW'], - 'białogardzki' => ['BI'], - 'choszczeński' => ['CH'], - 'drawski' => ['DR'], - 'goleniowski' => ['GL'], - 'gryficki' => ['GY'], - 'gryfiński' => ['GR'], - 'kamieński' => ['KA'], - 'kołobrzeski' => ['KL'], - 'koszaliński' => ['KO'], - 'łobeski' => ['LO'], - 'myśliborski' => ['MY'], - 'policki' => ['PL'], - 'pyrzycki' => ['PY'], - 'sławieński' => ['SL'], - 'stargardzki' => ['ST'], - 'szczecinecki' => ['SZ'], - 'świdwiński' => ['SD'], - 'wałecki' => ['WA'], - ], - 'army' => [ - 'Siły Zbrojne Rzeczypospolitej Polskiej' => ['A', 'B', 'C', 'D', 'E', 'G', 'I', 'J', 'K', 'L'], - ], - 'services' => [ - 'Centralne Biuro Antykorupcyjne' => ['A'], - 'Służba Ochrony Państwa' => ['BA', 'BB', 'BE', 'BF', 'BG'], - 'Służba Celno-Skarbowa' => ['CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'CG', 'CH', 'CJ', 'CK', 'CL', 'CM', 'CN', 'CO', 'CP', 'CR'], - 'Agencja Bezpieczeństwa Wewnętrznego' => ['K'], - 'Agencja Wywiadu' => ['K'], - 'Służba Kontrwywiadu Wojskowego' => ['M'], - 'Służba Wywiadu Wojskowego' => ['M'], - 'Policja' => ['PA', 'PB', 'PC', 'PD', 'PE', 'PF', 'PG', 'PH', 'PJ', 'PK', 'PL', 'PL', 'PL', 'PL', 'PL', 'PM', 'PN', 'PP', 'PS', 'PT', 'PU', 'PW', 'PZ'], - 'Straż Graniczna' => ['WA', 'WK'], - ], - ]; - - /** - * @var array list of regex expressions matching Polish license plate suffixess when county code is 1 character long. - */ - protected static $plateSuffixesGroup1 = [ - '\d{5}', - '\d{4}[A-PR-Z]', - '\d{3}[A-PR-Z]{2}', - '[1-9][A-PR-Z]\d{3}', - '[1-9][A-PR-Z]{2}\d{2}', - ]; - - /** - * @var array list of regex expressions matching Polish license plate suffixess when county code is 2 characters long. - */ - protected static $plateSuffixesGroup2 = [ - '[A-PR-Z]\d{3}', - '\d{2}[A-PR-Z]{2}', - '[1-9][A-PR-Z]\d{2}', - '\d{2}[A-PR-Z][1-9]', - '[1-9][A-PR-Z]{2}[1-9]', - '[A-PR-Z]{2}\d{2}', - '\d{5}', - '\d{4}[A-PR-Z]', - '\d{3}[A-PR-Z]{2}', - '[A-PR-Z]\d{2}[A-PR-Z]', - '[A-PR-Z][1-9][A-PR-Z]{2}', - ]; - - /** - * Generates random license plate. - * - * @param bool $special whether special license plates should be included - * @param array|null $voivodeships list of voivodeships license plate should be generated from - * @param array|null $counties list of counties license plate should be generated from - */ - public static function licensePlate( - bool $special = false, - ?array $voivodeships = null, - ?array $counties = null - ): string { - $voivodeshipsAvailable = static::$voivodeships + ($special ? static::$specials : []); - $voivodeshipSelected = static::selectRandomArea($voivodeshipsAvailable, $voivodeships); - $voivodeshipCode = static::randomElement($voivodeshipsAvailable[$voivodeshipSelected]); - - $countiesAvailable = static::$counties[$voivodeshipSelected]; - $countySelected = self::selectRandomArea($countiesAvailable, $counties); - - $countyCode = static::randomElement(static::$counties[$voivodeshipSelected][$countySelected]); - - $suffix = static::regexify(static::randomElement(strlen($countyCode) === 1 ? static::$plateSuffixesGroup1 : static::$plateSuffixesGroup2)); - - return "{$voivodeshipCode}{$countyCode} {$suffix}"; - } - - /** - * Selects random area from the list of available and requested. - * - * @return string - */ - protected static function selectRandomArea(array $available, ?array $requested) - { - $requested = array_intersect(array_keys($available), $requested ?? []); - - if (empty($requested)) { - $requested = array_keys($available); - } - - return static::randomElement($requested); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pl_PL/Payment.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pl_PL/Payment.php deleted file mode 100644 index f2a6030..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pl_PL/Payment.php +++ /dev/null @@ -1,120 +0,0 @@ - 'Narodowy Bank Polski', - '102' => 'Powszechna Kasa Oszczędności Bank Polski Spółka Akcyjna', - '103' => 'Bank Handlowy w Warszawie Spółka Akcyjna', - '105' => 'ING Bank Śląski Spółka Akcyjna', - '106' => 'Bank BPH Spółka Akcyjna', - '109' => 'Santander Bank Polska Spółka Akcyjna', - '113' => 'Bank Gospodarstwa Krajowego', - '114' => 'mBank Spółka Akcyjna', - '116' => 'Bank Millennium Spółka Akcyjna', - '122' => 'Bank Handlowo-Kredytowy Spółka Akcyjna w Katowicach w likwidacji', - '124' => 'Bank Polska Kasa Opieki Spółka Akcyjna', - '132' => 'Bank Pocztowy Spółka Akcyjna', - '154' => 'Bank Ochrony Środowiska Spółka Akcyjna', - '158' => 'Mercedes-Benz Bank Polska Spółka Akcyjna', - '161' => 'SGB-Bank Spółka Akcyjna', - '168' => 'PLUS BANK Spółka Akcyjna', - '184' => 'Société Générale Spółka Akcyjna Oddział w Polsce', - '187' => 'Nest Bank Spółka Akcyjna', - '189' => 'Pekao Bank Hipoteczny Spółka Akcyjna', - '191' => 'Deutsche Bank Polska Spółka Akcyjna', - '193' => 'BANK POLSKIEJ SPÓŁDZIELCZOŚCI SPÓŁKA AKCYJNA', - '194' => 'Credit Agricole Bank Polska Spółka Akcyjna', - '195' => 'Idea Bank Spółka Akcyjna', - '203' => 'BNP Paribas Bank Polska Spółka Akcyjna', - '212' => 'Santander Consumer Bank Spółka Akcyjna', - '215' => 'mBank Hipoteczny Spółka Akcyjna', - '216' => 'Toyota Bank Polska Spółka Akcyjna', - '219' => 'DNB Bank Polska Spółka Akcyjna', - '224' => 'Banque PSA Finance Spółka Akcyjna Oddział w Polsce', - '225' => 'Svenska Handelsbanken AB Spółka Akcyjna Oddział w Polsce', - '235' => 'BNP Paribas S.A. Oddział w Polsce ', - '236' => 'Danske Bank A/S Spółka Akcyjna Oddział w Polsce', - '237' => 'Skandinaviska Enskilda Banken AB (Spółka Akcyjna) - Oddział w Polsce', - '239' => 'CAIXABANK, S.A. (SPÓŁKA AKCYJNA) ODDZIAŁ W POLSCE', - '241' => 'Elavon Financial Services Designated Activity Company (Spółka z O.O. o Wyznaczonym Przedmiocie Działalności) Oddział w Polsce', - '243' => 'BNP Paribas Securities Services Spółka Komandytowo - Akcyjna Oddział w Polsce', - '247' => 'HAITONG BANK, S.A. Spółka Akcyjna Oddział w Polsce', - '248' => 'Getin Noble Bank Spółka Akcyjna', - '249' => 'Alior Bank Spółka Akcyjna', - '251' => 'Aareal Bank Aktiengesellschaft (Spółka Akcyjna) - Oddział w Polsce', - '254' => 'Citibank Europe plc (Publiczna Spółka Akcyjna) Oddział w Polsce', - '255' => 'Ikano Bank AB (publ) Spółka Akcyjna Oddział w Polsce', - '256' => 'Nordea Bank Abp Spółka Akcyjna Oddział w Polsce', - '258' => 'J.P. Morgan Europe Limited Spółka z ograniczoną odpowiedzialnością Oddział w Polsce', - '260' => 'Bank of China (Luxembourg) S.A. Spółka Akcyjna Oddział w Polsce', - '262' => 'Industrial and Commercial Bank of China (Europe) S.A. (Spółka Akcyjna) Oddział w Polsce', - '264' => 'RCI Banque Spółka Akcyjna Oddział w Polsce', - '265' => 'EUROCLEAR Bank SA/NV (Spółka Akcyjna) - Oddział w Polsce', - '266' => 'Intesa Sanpaolo S.p.A. Spółka Akcyjna Oddział w Polsce', - '267' => 'Western Union International Bank GmbH, Sp. z o.o. Oddział w Polsce', - '269' => 'PKO Bank Hipoteczny Spółka Akcyjna', - '270' => 'TF BANK AB (Spółka z ograniczoną odpowiedzialnością) Oddział w Polsce', - '271' => 'FCE Bank Spółka Akcyjna Oddział w Polsce', - '272' => 'AS Inbank Spółka Akcyjna - Oddział w Polsce', - '273' => 'China Construction Bank (Europe) S.A. (Spółka Akcyjna) Oddział w Polsce', - '274' => 'MUFG Bank (Europe) N.V. S.A. Oddział w Polsce', - '275' => 'John Deere Bank S.A. Spółka Akcyjna Oddział w Polsce ', - '277' => 'Volkswagen Bank GmbH Spółka z ograniczoną odpowiedzialnością Oddział w Polsce', - '278' => 'ING Bank Hipoteczny Spółka Akcyjna', - '279' => 'Raiffeisen Bank International AG (Spółka Akcyjna) Oddział w Polsce', - '280' => 'HSBC France (Spółka Akcyjna) Oddział w Polsce', - '281' => 'Goldman Sachs Bank Europe SE Spółka Europejska Oddział w Polsce', - '283' => 'J.P. Morgan AG (Spółka Akcyjna) Oddział w Polsce', - '284' => 'UBS Europe SE (Spółka Europejska) Oddział w Polsce', - '285' => 'Banca Farmafactoring S.p.A. Spółka Akcyjna Oddział w Polsce', - '286' => 'FCA Bank S.p.A. Spółka Akcyjna Oddział w Polsce', - '287' => 'Bank Nowy BFG Spółka Akcyjna', - '288' => 'ALLFUNDS BANK S.A.U. (SPÓŁKA AKCYJNA) ODDZIAŁ W POLSCE', - ]; - - /** - * @example 'Euro Bank SA' - */ - public static function bank() - { - return static::randomElement(static::$banks); - } - - /** - * International Bank Account Number (IBAN) - * - * @see http://en.wikipedia.org/wiki/International_Bank_Account_Number - * - * @param string $prefix for generating bank account number of a specific bank - * @param string $countryCode ISO 3166-1 alpha-2 country code - * @param int $length total length without country code and 2 check digits - * - * @return string - */ - public static function bankAccountNumber($prefix = '', $countryCode = 'PL', $length = null) - { - return static::iban($countryCode, $prefix, $length); - } - - protected static function addBankCodeChecksum($iban, $countryCode = 'PL') - { - if ($countryCode != 'PL' || strlen($iban) <= 8) { - return $iban; - } - $checksum = 0; - $weights = [7, 1, 3, 9, 7, 1, 3]; - - for ($i = 0; $i < 7; ++$i) { - $checksum += $weights[$i] * (int) $iban[$i]; - } - $checksum = $checksum % 10; - - return substr($iban, 0, 7) . $checksum . substr($iban, 8); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pl_PL/Person.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pl_PL/Person.php deleted file mode 100644 index 6d7312d..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pl_PL/Person.php +++ /dev/null @@ -1,243 +0,0 @@ -generator->parse(static::randomElement(static::$lastNameFormat)); - } - - public static function lastNameMale() - { - return static::randomElement(static::$lastNameMale); - } - - public static function lastNameFemale() - { - return static::randomElement(static::$lastNameFemale); - } - - public function title($gender = null) - { - return static::randomElement(static::$title); - } - - /** - * replaced by specific unisex Polish title - */ - public static function titleMale() - { - return static::randomElement(static::$title); - } - - /** - * replaced by specific unisex Polish title - */ - public static function titleFemale() - { - return static::randomElement(static::$title); - } - - /** - * PESEL - Universal Electronic System for Registration of the Population - * - * @see http://en.wikipedia.org/wiki/PESEL - * - * @param DateTime $birthdate - * @param string $sex M for male or F for female - * - * @return string 11 digit number, like 44051401358 - */ - public static function pesel($birthdate = null, $sex = null) - { - if ($birthdate === null) { - $birthdate = \Faker\Provider\DateTime::dateTimeThisCentury(); - } - - $weights = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3]; - $length = count($weights); - - $fullYear = (int) $birthdate->format('Y'); - $year = (int) $birthdate->format('y'); - $month = $birthdate->format('m') + (((int) ($fullYear / 100) - 14) % 5) * 20; - $day = $birthdate->format('d'); - - $result = [(int) ($year / 10), $year % 10, (int) ($month / 10), $month % 10, (int) ($day / 10), $day % 10]; - - for ($i = 6; $i < $length; ++$i) { - $result[$i] = static::randomDigit(); - } - - $result[$length - 1] |= 1; - - if ($sex == 'F') { - $result[$length - 1] -= 1; - } - - $checksum = 0; - - for ($i = 0; $i < $length; ++$i) { - $checksum += $weights[$i] * $result[$i]; - } - $checksum = (10 - ($checksum % 10)) % 10; - $result[] = $checksum; - - return implode('', $result); - } - - /** - * National Identity Card number - * - * @see http://en.wikipedia.org/wiki/Polish_National_Identity_Card - * - * @return string 3 letters and 6 digits, like ABA300000 - */ - public static function personalIdentityNumber() - { - $range = str_split('ABCDEFGHIJKLMNPRSTUVWXYZ'); - $low = ['A', static::randomElement($range), static::randomElement($range)]; - $high = [static::randomDigit(), static::randomDigit(), static::randomDigit(), static::randomDigit(), static::randomDigit()]; - $weights = [7, 3, 1, 7, 3, 1, 7, 3]; - $checksum = 0; - - for ($i = 0, $size = count($low); $i < $size; ++$i) { - $checksum += $weights[$i] * (ord($low[$i]) - 55); - } - - for ($i = 0, $size = count($high); $i < $size; ++$i) { - $checksum += $weights[$i + 3] * $high[$i]; - } - $checksum %= 10; - - return implode('', $low) . $checksum . implode('', $high); - } - - /** - * Taxpayer Identification Number (NIP in Polish) - * - * @see http://en.wikipedia.org/wiki/PESEL#Other_identifiers - * @see http://pl.wikipedia.org/wiki/NIP - * - * @return string 10 digit number - */ - public static function taxpayerIdentificationNumber() - { - $weights = [6, 5, 7, 2, 3, 4, 5, 6, 7]; - $result = []; - - do { - $result = [ - static::randomDigitNotNull(), static::randomDigitNotNull(), static::randomDigitNotNull(), - static::randomDigit(), static::randomDigit(), static::randomDigit(), - static::randomDigit(), static::randomDigit(), static::randomDigit(), - ]; - $checksum = 0; - - for ($i = 0, $size = count($result); $i < $size; ++$i) { - $checksum += $weights[$i] * $result[$i]; - } - $checksum %= 11; - } while ($checksum == 10); - $result[] = $checksum; - - return implode('', $result); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pl_PL/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pl_PL/PhoneNumber.php deleted file mode 100644 index d421539..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pl_PL/PhoneNumber.php +++ /dev/null @@ -1,18 +0,0 @@ - - - Prof. Hart will answer or forward your message. - - We would prefer to send you information by email. - - - **The Legal Small Print** - - - (Three Pages) - - ***START**THE SMALL PRINT!**FOR PUBLIC DOMAIN EBOOKS**START*** - Why is this "Small Print!" statement here? You know: lawyers. - They tell us you might sue us if there is something wrong with - your copy of this eBook, even if you got it for free from - someone other than us, and even if what's wrong is not our - fault. So, among other things, this "Small Print!" statement - disclaims most of our liability to you. It also tells you how - you may distribute copies of this eBook if you want to. - - *BEFORE!* YOU USE OR READ THIS EBOOK - By using or reading any part of this PROJECT GUTENBERG-tm - eBook, you indicate that you understand, agree to and accept - this "Small Print!" statement. If you do not, you can receive - a refund of the money (if any) you paid for this eBook by - sending a request within 30 days of receiving it to the person - you got it from. If you received this eBook on a physical - medium (such as a disk), you must return it with your request. - - ABOUT PROJECT GUTENBERG-TM EBOOKS - This PROJECT GUTENBERG-tm eBook, like most PROJECT GUTENBERG-tm eBooks, - is a "public domain" work distributed by Professor Michael S. Hart - through the Project Gutenberg Association (the "Project"). - Among other things, this means that no one owns a United States copyright - on or for this work, so the Project (and you!) can copy and - distribute it in the United States without permission and - without paying copyright royalties. Special rules, set forth - below, apply if you wish to copy and distribute this eBook - under the "PROJECT GUTENBERG" trademark. - - Please do not use the "PROJECT GUTENBERG" trademark to market - any commercial products without permission. - - To create these eBooks, the Project expends considerable - efforts to identify, transcribe and proofread public domain - works. Despite these efforts, the Project's eBooks and any - medium they may be on may contain "Defects". Among other - things, Defects may take the form of incomplete, inaccurate or - corrupt data, transcription errors, a copyright or other - intellectual property infringement, a defective or damaged - disk or other eBook medium, a computer virus, or computer - codes that damage or cannot be read by your equipment. - - LIMITED WARRANTY; DISCLAIMER OF DAMAGES - But for the "Right of Replacement or Refund" described below, - [1] Michael Hart and the Foundation (and any other party you may - receive this eBook from as a PROJECT GUTENBERG-tm eBook) disclaims - all liability to you for damages, costs and expenses, including - legal fees, and [2] YOU HAVE NO REMEDIES FOR NEGLIGENCE OR - UNDER STRICT LIABILITY, OR FOR BREACH OF WARRANTY OR CONTRACT, - INCLUDING BUT NOT LIMITED TO INDIRECT, CONSEQUENTIAL, PUNITIVE - OR INCIDENTAL DAMAGES, EVEN IF YOU GIVE NOTICE OF THE - POSSIBILITY OF SUCH DAMAGES. - - If you discover a Defect in this eBook within 90 days of - receiving it, you can receive a refund of the money (if any) - you paid for it by sending an explanatory note within that - time to the person you received it from. If you received it - on a physical medium, you must return it with your note, and - such person may choose to alternatively give you a replacement - copy. If you received it electronically, such person may - choose to alternatively give you a second opportunity to - receive it electronically. - - THIS EBOOK IS OTHERWISE PROVIDED TO YOU "AS-IS". NO OTHER - WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, ARE MADE TO YOU AS - TO THE EBOOK OR ANY MEDIUM IT MAY BE ON, INCLUDING BUT NOT - LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A - PARTICULAR PURPOSE. - - Some states do not allow disclaimers of implied warranties or - the exclusion or limitation of consequential damages, so the - above disclaimers and exclusions may not apply to you, and you - may have other legal rights. - - INDEMNITY - You will indemnify and hold Michael Hart, the Foundation, - and its trustees and agents, and any volunteers associated - with the production and distribution of Project Gutenberg-tm - texts harmless, from all liability, cost and expense, including - legal fees, that arise directly or indirectly from any of the - following that you do or cause: [1] distribution of this eBook, - [2] alteration, modification, or addition to the eBook, - or [3] any Defect. - - DISTRIBUTION UNDER "PROJECT GUTENBERG-tm" - You may distribute copies of this eBook electronically, or by - disk, book or any other medium if you either delete this - "Small Print!" and all other references to Project Gutenberg, - or: - - [1] Only give exact copies of it. Among other things, this - requires that you do not remove, alter or modify the - eBook or this "small print!" statement. You may however, - if you wish, distribute this eBook in machine readable - binary, compressed, mark-up, or proprietary form, - including any form resulting from conversion by word - processing or hypertext software, but only so long as - *EITHER*: - - [*] The eBook, when displayed, is clearly readable, and - does *not* contain characters other than those - intended by the author of the work, although tilde - (~), asterisk (*) and underline (_) characters may - be used to convey punctuation intended by the - author, and additional characters may be used to - indicate hypertext links; OR - - [*] The eBook may be readily converted by the reader at - no expense into plain ASCII, EBCDIC or equivalent - form by the program that displays the eBook (as is - the case, for instance, with most word processors); - OR - - [*] You provide, or agree to also provide on request at - no additional cost, fee or expense, a copy of the - eBook in its original plain ASCII form (or in EBCDIC - or other equivalent proprietary form). - - [2] Honor the eBook refund and replacement provisions of this - "Small Print!" statement. - - [3] Pay a trademark license fee to the Foundation of 20% of the - gross profits you derive calculated using the method you - already use to calculate your applicable taxes. If you - don't derive profits, no royalty is due. Royalties are - payable to "Project Gutenberg Literary Archive Foundation" - the 60 days following each date you prepare (or were - legally required to prepare) your annual (or equivalent - periodic) tax return. Please contact us beforehand to - let us know your plans and to work out the details. - - WHAT IF YOU *WANT* TO SEND MONEY EVEN IF YOU DON'T HAVE TO? - Project Gutenberg is dedicated to increasing the number of - public domain and licensed works that can be freely distributed - in machine readable form. - - The Project gratefully accepts contributions of money, time, - public domain materials, or royalty free copyright licenses. - Money should be paid to the: - "Project Gutenberg Literary Archive Foundation." - - If you are interested in contributing scanning equipment or - software or other items, please contact Michael Hart at: - hart@pobox.com - - [Portions of this eBook's header and trailer may be reprinted only - when distributed free of all fees. Copyright (C) 2001, 2002 by - Michael S. Hart. Project Gutenberg is a TradeMark and may not be - used in any sales of Project Gutenberg eBooks or other materials be - they hardware or software or any other related product without - express permission.] - - *END THE SMALL PRINT! FOR PUBLIC DOMAIN EBOOKS*Ver.02/11/02*END* - - */ -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Address.php deleted file mode 100644 index 10bdd57..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Address.php +++ /dev/null @@ -1,154 +0,0 @@ -generator->numerify('########0001'); - $n .= check_digit($n); - $n .= check_digit($n); - - return $formatted ? vsprintf('%d%d.%d%d%d.%d%d%d/%d%d%d%d-%d%d', str_split($n)) : $n; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Internet.php deleted file mode 100644 index fc68ae6..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - '4##############', - ], - 'MasterCard' => [ - '5##############', - ], - 'American Express' => [ - '34############', - '37############', - ], - 'Discover Card' => [ - '6011###########', - '622############', - '64#############', - '65#############', - ], - 'Diners' => [ - '301############', - '301##########', - '305############', - '305##########', - '36#############', - '36###########', - '38#############', - '38###########', - ], - 'Elo' => [ - '636368#########', - '438935#########', - '504175#########', - '451416#########', - '636297#########', - '5067###########', - '4576###########', - '4011###########', - ], - 'Hipercard' => [ - '38#############', - '60#############', - ], - 'Aura' => [ - '50#############', - ], - ]; - - /** - * International Bank Account Number (IBAN) - * - * @see http://en.wikipedia.org/wiki/International_Bank_Account_Number - * - * @param string $prefix for generating bank account number of a specific bank - * @param string $countryCode ISO 3166-1 alpha-2 country code - * @param int $length total length without country code and 2 check digits - * - * @return string - */ - public static function bankAccountNumber($prefix = '', $countryCode = 'BR', $length = null) - { - return static::iban($countryCode, $prefix, $length); - } - - /** - * @see list of Brazilians banks (2018-02-15), source: https://pt.wikipedia.org/wiki/Lista_de_bancos_do_Brasil - */ - protected static $banks = [ - 'BADESUL Desenvolvimento S.A. – Agência de Fomento/RS', - 'Banco Central do Brasil', - 'Banco da Amazônia', - 'Banco de Brasília', - 'Banco de Desenvolvimento de Minas Gerais', - 'Banco de Desenvolvimento do Espírito Santo', - 'Banco de Desenvolvimento do Paraná', - 'Banco do Brasil', - 'Banco do Estado de Sergipe Banese Estadual', - 'Banco do Estado do Espírito Santo Banestes', - 'Banco do Estado do Pará', - 'Banco do Estado do Rio Grande do Sul', - 'Banco do Nordeste do Brasil', - 'Banco Nacional de Desenvolvimento Econômico e Social', - 'Banco Regional de Desenvolvimento do Extremo Sul', - 'Caixa Econômica Federal', - 'Banco ABN Amro S.A.', - 'Banco Alfa', - 'Banco Banif', - 'Banco BBM', - 'Banco BMG', - 'Banco Bonsucesso', - 'Banco BTG Pactual', - 'Banco Cacique', - 'Banco Caixa Geral - Brasil', - 'Banco Citibank', - 'Banco Credibel', - 'Banco Credit Suisse', - 'Góis Monteiro & Co', - 'Banco Fator', - 'Banco Fibra', - 'Agibank', - 'Banco Guanabara', - 'Banco Industrial do Brasil', - 'Banco Industrial e Comercial', - 'Banco Indusval', - 'Banco Inter', - 'Banco Itaú BBA', - 'Banco ItaúBank', - 'Banco Itaucred Financiamentos', - 'Banco Mercantil do Brasil', - 'Banco Modal Modal', - 'Banco Morada', - 'Banco Pan', - 'Banco Paulista', - 'Banco Pine', - 'Banco Renner', - 'Banco Ribeirão Preto', - 'Banco Safra', - 'Banco Santander', - 'Banco Sofisa', - 'Banco Topázio', - 'Banco Votorantim', - 'Bradesco Bradesco', - 'Itaú Unibanco', - 'Banco Original', - 'Banco Neon', - 'Nu Pagamentos S.A', - 'XP Investimentos Corretora de Câmbio Títulos e Valores Mobiliários S.A', - ]; - - /** - * @example 'Banco Neon' - */ - public static function bank() - { - return static::randomElement(static::$banks); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Person.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Person.php deleted file mode 100644 index 6331e7b..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Person.php +++ /dev/null @@ -1,159 +0,0 @@ -generator->numerify('#########'); - $n .= check_digit($n); - $n .= check_digit($n); - - return $formatted ? vsprintf('%d%d%d.%d%d%d.%d%d%d-%d%d', str_split($n)) : $n; - } - - /** - * A random RG number, following Sao Paulo state's rules. - * - * @see http://pt.wikipedia.org/wiki/C%C3%A9dula_de_identidade - * - * @param bool $formatted If the number should have dots/dashes or not. - * - * @return string - */ - public function rg($formatted = true) - { - $n = $this->generator->numerify('########'); - $n .= check_digit($n); - - return $formatted ? vsprintf('%d%d.%d%d%d.%d%d%d-%s', str_split($n)) : $n; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/PhoneNumber.php deleted file mode 100644 index 6601658..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/PhoneNumber.php +++ /dev/null @@ -1,150 +0,0 @@ - '']); - } - - return $number; - } - - /** - * Generates an 9-digit landline number without formatting characters. - * - * @param bool $formatted [def: true] If it should return a formatted number or not. - * - * @return string - */ - public static function landline($formatted = true) - { - $number = static::numerify(static::randomElement(static::$landlineFormats)); - - if (!$formatted) { - $number = strtr($number, ['-' => '']); - } - - return $number; - } - - /** - * Randomizes between cellphone and landline numbers. - * - * @param bool $formatted [def: true] If it should return a formatted number or not. - */ - public static function phone($formatted = true) - { - $options = static::randomElement([ - ['cellphone', false], - ['cellphone', true], - ['landline', null], - ]); - - return call_user_func([static::class, $options[0]], $formatted, $options[1]); - } - - /** - * Generates a complete phone number. - * - * @param string $type [def: landline] One of "landline" or "cellphone". Defaults to "landline" on invalid values. - * @param bool $formatted [def: true] If the number should be formatted or not. - * - * @return string - */ - protected static function anyPhoneNumber($type, $formatted = true) - { - $area = static::areaCode(); - $number = ($type == 'cellphone') ? - static::cellphone($formatted) : - static::landline($formatted); - - return $formatted ? "($area) $number" : $area . $number; - } - - /** - * Concatenates {@link areaCode} and {@link cellphone} into a national cellphone number. - * - * @param bool $formatted [def: true] If it should return a formatted number or not. - * - * @return string - */ - public static function cellphoneNumber($formatted = true) - { - return static::anyPhoneNumber('cellphone', $formatted); - } - - /** - * Concatenates {@link areaCode} and {@link landline} into a national landline number. - * - * @param bool $formatted [def: true] If it should return a formatted number or not. - * - * @return string - */ - public static function landlineNumber($formatted = true) - { - return static::anyPhoneNumber('landline', $formatted); - } - - /** - * Randomizes between complete cellphone and landline numbers. - */ - public function phoneNumber() - { - $method = static::randomElement(['cellphoneNumber', 'landlineNumber']); - - return call_user_func([static::class, $method], true); - } - - /** - * Randomizes between complete cellphone and landline numbers, cleared from formatting symbols. - */ - public static function phoneNumberCleared() - { - $method = static::randomElement(['cellphoneNumber', 'landlineNumber']); - - return call_user_func([static::class, $method], false); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Text.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Text.php deleted file mode 100644 index ce60728..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_BR/Text.php +++ /dev/null @@ -1,3427 +0,0 @@ -= 12; - $verifier = 0; - - for ($i = 1; $i <= $length; ++$i) { - if (!$second_algorithm) { - $multiplier = $i + 1; - } else { - $multiplier = ($i >= 9) ? $i - 7 : $i + 1; - } - $verifier += $numbers[$length - $i] * $multiplier; - } - - $verifier = 11 - ($verifier % 11); - - if ($verifier >= 10) { - $verifier = 0; - } - - return $verifier; -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_PT/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_PT/Address.php deleted file mode 100644 index 0d3f850..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_PT/Address.php +++ /dev/null @@ -1,130 +0,0 @@ - 0; --$i) { - $numbers[$i] = substr($number, $i - 1, 1); - $partial[$i] = $numbers[$i] * $factor; - $sum += $partial[$i]; - - if ($factor == $base) { - $factor = 1; - } - ++$factor; - } - $res = $sum % 11; - - if ($res == 0 || $res == 1) { - $digit = 0; - } else { - $digit = 11 - $res; - } - - return $digit; - } - - /** - * @see http://nomesportugueses.blogspot.pt/2012/01/lista-dos-cem-nomes-mais-usados-em.html - */ - protected static $firstNameMale = [ - 'Rodrigo', 'João', 'Martim', 'Afonso', 'Tomás', 'Gonçalo', 'Francisco', 'Tiago', - 'Diogo', 'Guilherme', 'Pedro', 'Miguel', 'Rafael', 'Gabriel', 'Santiago', 'Dinis', - 'David', 'Duarte', 'José', 'Simão', 'Daniel', 'Lucas', 'Gustavo', 'André', 'Denis', - 'Salvador', 'António', 'Vasco', 'Henrique', 'Lourenço', 'Manuel', 'Eduardo', 'Bernardo', - 'Leandro', 'Luís', 'Diego', 'Leonardo', 'Alexandre', 'Rúben', 'Mateus', 'Ricardo', - 'Vicente', 'Filipe', 'Bruno', 'Nuno', 'Carlos', 'Rui', 'Hugo', 'Samuel', 'Álvaro', - 'Matias', 'Fábio', 'Ivo', 'Paulo', 'Jorge', 'Xavier', 'Marco', 'Isaac', 'Raúl', 'Benjamim', - 'Renato', 'Artur', 'Mário', 'Frederico', 'Cristiano', 'Ivan', 'Sérgio', 'Micael', - 'Vítor', 'Edgar', 'Kevin', 'Joaquim', 'Igor', 'Ângelo', 'Enzo', 'Valentim', 'Flávio', - 'Joel', 'Fernando', 'Sebastião', 'Tomé', 'César', 'Cláudio', 'Nelson', 'Lisandro', 'Jaime', - 'Gil', 'Mauro', 'Sandro', 'Hélder', 'Matheus', 'William', 'Gaspar', 'Márcio', - 'Martinho', 'Emanuel', 'Marcos', 'Telmo', 'Davi', 'Wilson', - ]; - - protected static $firstNameFemale = [ - 'Maria', 'Leonor', 'Matilde', 'Mariana', 'Ana', 'Beatriz', 'Inês', 'Lara', 'Carolina', 'Margarida', - 'Joana', 'Sofia', 'Diana', 'Francisca', 'Laura', 'Sara', 'Madalena', 'Rita', 'Mafalda', 'Catarina', - 'Luana', 'Marta', 'Íris', 'Alice', 'Bianca', 'Constança', 'Gabriela', 'Eva', 'Clara', 'Bruna', 'Daniela', - 'Iara', 'Filipa', 'Vitória', 'Ariana', 'Letícia', 'Bárbara', 'Camila', 'Rafaela', 'Carlota', 'Yara', - 'Núria', 'Raquel', 'Ema', 'Helena', 'Benedita', 'Érica', 'Isabel', 'Nicole', 'Lia', 'Alícia', 'Mara', - 'Jéssica', 'Soraia', 'Júlia', 'Luna', 'Victória', 'Luísa', 'Teresa', 'Miriam', 'Adriana', 'Melissa', - 'Andreia', 'Juliana', 'Alexandra', 'Yasmin', 'Tatiana', 'Leticia', 'Luciana', 'Eduarda', 'Cláudia', - 'Débora', 'Fabiana', 'Renata', 'Kyara', 'Kelly', 'Irina', 'Mélanie', 'Nádia', 'Cristiana', 'Liliana', - 'Patrícia', 'Vera', 'Doriana', 'Ângela', 'Mia', 'Erica', 'Mónica', 'Isabela', 'Salomé', 'Cátia', - 'Verónica', 'Violeta', 'Lorena', 'Érika', 'Vanessa', 'Iris', 'Anna', 'Viviane', 'Rebeca', 'Neuza', - ]; - - protected static $lastName = [ - 'Abreu', 'Almeida', 'Alves', 'Amaral', 'Amorim', 'Andrade', 'Anjos', 'Antunes', 'Araújo', 'Assunção', - 'Azevedo', 'Baptista', 'Barbosa', 'Barros', 'Batista', 'Borges', 'Branco', 'Brito', 'Campos', 'Cardoso', - 'Carneiro', 'Carvalho', 'Castro', 'Coelho', 'Correia', 'Costa', 'Cruz', 'Cunha', 'Domingues', 'Esteves', - 'Faria', 'Fernandes', 'Ferreira', 'Figueiredo', 'Fonseca', 'Freitas', 'Garcia', 'Gaspar', 'Gomes', - 'Gonçalves', 'Guerreiro', 'Henriques', 'Jesus', 'Leal', 'Leite', 'Lima', 'Lopes', 'Loureiro', 'Lourenço', - 'Macedo', 'Machado', 'Magalhães', 'Maia', 'Marques', 'Martins', 'Matias', 'Matos', 'Melo', 'Mendes', - 'Miranda', 'Monteiro', 'Morais', 'Moreira', 'Mota', 'Moura', 'Nascimento', 'Neto', 'Neves', 'Nogueira', - 'Nunes', 'Oliveira', 'Pacheco', 'Paiva', 'Pereira', 'Pinheiro', 'Pinho', 'Pinto', 'Pires', 'Ramos', - 'Reis', 'Ribeiro', 'Rocha', 'Rodrigues', 'Santos', 'Silva', 'Simões', 'Soares', 'Sousa', - 'Sá', 'Tavares', 'Teixeira', 'Torres', 'Valente', 'Vaz', 'Vicente', 'Vieira', - ]; -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_PT/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_PT/PhoneNumber.php deleted file mode 100644 index 948ba94..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/pt_PT/PhoneNumber.php +++ /dev/null @@ -1,50 +0,0 @@ - '01', 'AR' => '02', 'AG' => '03', 'B' => '40', 'BC' => '04', 'BH' => '05', - 'BN' => '06', 'BT' => '07', 'BV' => '08', 'BR' => '09', 'BZ' => '10', 'CS' => '11', - 'CL' => '51', 'CJ' => '12', 'CT' => '13', 'CV' => '14', 'DB' => '15', 'DJ' => '16', - 'GL' => '17', 'GR' => '52', 'GJ' => '18', 'HR' => '19', 'HD' => '20', 'IL' => '21', - 'IS' => '22', 'IF' => '23', 'MM' => '24', 'MH' => '25', 'MS' => '26', 'NT' => '27', - 'OT' => '28', 'PH' => '29', 'SM' => '30', 'SJ' => '31', 'SB' => '32', 'SV' => '33', - 'TR' => '34', 'TM' => '35', 'TL' => '36', 'VS' => '37', 'VL' => '38', 'VN' => '39', - - 'B1' => '41', 'B2' => '42', 'B3' => '43', 'B4' => '44', 'B5' => '45', 'B6' => '46', - ]; - - /** - * Personal Numerical Code (CNP) - * - * @see http://ro.wikipedia.org/wiki/Cod_numeric_personal - * - * @example 1111111111118 - * - * @param string|null $gender Person::GENDER_MALE or Person::GENDER_FEMALE - * @param string|null $dateOfBirth (1800-2099) 'Y-m-d', 'Y-m', 'Y' I.E. '1981-06-16', '2085-03', '1900' - * @param string|null $county county code where the CNP was issued - * @param bool|null $isResident flag if the person resides in Romania - * - * @return string 13 digits CNP code - */ - public function cnp($gender = null, $dateOfBirth = null, $county = null, $isResident = true) - { - $genders = [Person::GENDER_MALE, Person::GENDER_FEMALE]; - - if (empty($gender)) { - $gender = static::randomElement($genders); - } elseif (!in_array($gender, $genders, false)) { - throw new \InvalidArgumentException("Gender must be '{Person::GENDER_MALE}' or '{Person::GENDER_FEMALE}'"); - } - - $date = $this->getDateOfBirth($dateOfBirth); - - if (null === $county) { - $countyCode = static::randomElement(array_values(static::$cnpCountyCodes)); - } elseif (!array_key_exists($county, static::$cnpCountyCodes)) { - throw new \InvalidArgumentException("Invalid county code '{$county}' received"); - } else { - $countyCode = static::$cnpCountyCodes[$county]; - } - - $cnp = (string) $this->getGenderDigit($date, $gender, $isResident) - . $date->format('ymd') - . $countyCode - . static::numerify('##%') - ; - - $checksum = $this->getChecksumDigit($cnp); - - return $cnp . $checksum; - } - - /** - * @param string|null $dateOfBirth - * - * @return \DateTime - */ - protected function getDateOfBirth($dateOfBirth) - { - if (empty($dateOfBirth)) { - $dateOfBirthParts = [self::numberBetween(1800, 2099)]; - } else { - $dateOfBirthParts = explode('-', $dateOfBirth); - } - $baseDate = \Faker\Provider\DateTime::dateTimeBetween("first day of January {$dateOfBirthParts[0]}", "last day of December {$dateOfBirthParts[0]}"); - - switch (count($dateOfBirthParts)) { - case 1: - $dateOfBirthParts[] = $baseDate->format('m'); - //don't break, we need the day also - // no break - case 2: - $dateOfBirthParts[] = $baseDate->format('d'); - //don't break, next line will - // no break - case 3: - break; - - default: - throw new \InvalidArgumentException("Invalid date of birth - must be null or in the 'Y-m-d', 'Y-m', 'Y' format"); - } - - if ($dateOfBirthParts[0] < 1800 || $dateOfBirthParts[0] > 2099) { - throw new \InvalidArgumentException("Invalid date of birth - year must be between 1800 and 2099, '{$dateOfBirthParts[0]}' received"); - } - - $dateOfBirthFinal = implode('-', $dateOfBirthParts); - $date = \DateTime::createFromFormat('Y-m-d', $dateOfBirthFinal); - - //a full (invalid) date might have been supplied, check if it converts - if ($date->format('Y-m-d') !== $dateOfBirthFinal) { - throw new \InvalidArgumentException("Invalid date of birth - '{$date->format('Y-m-d')}' generated based on '{$dateOfBirth}' received"); - } - - return $date; - } - - /** - * https://ro.wikipedia.org/wiki/Cod_numeric_personal#S - * - * @param bool $isResident - * @param string $gender - * - * @return int - */ - protected static function getGenderDigit(\DateTime $dateOfBirth, $gender, $isResident) - { - if (!$isResident) { - return 9; - } - - if ($dateOfBirth->format('Y') < 1900) { - if ($gender == Person::GENDER_MALE) { - return 3; - } - - return 4; - } - - if ($dateOfBirth->format('Y') < 2000) { - if ($gender == Person::GENDER_MALE) { - return 1; - } - - return 2; - } - - if ($gender == Person::GENDER_MALE) { - return 5; - } - - return 6; - } - - /** - * Calculates a checksum for the Personal Numerical Code (CNP). - * - * @param string $value 12 digit CNP - * - * @return int checksum digit - */ - protected function getChecksumDigit($value) - { - $checkNumber = 279146358279; - - $checksum = 0; - - foreach (range(0, 11) as $digit) { - $checksum += (int) substr($value, $digit, 1) * (int) substr($checkNumber, $digit, 1); - } - $checksum = $checksum % 11; - - return $checksum == 10 ? 1 : $checksum; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ro_RO/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ro_RO/PhoneNumber.php deleted file mode 100644 index 01c5859..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ro_RO/PhoneNumber.php +++ /dev/null @@ -1,62 +0,0 @@ - [ - '021#######', // Bucharest - '023#######', - '024#######', - '025#######', - '026#######', - '027#######', // non-geographic - '031#######', // Bucharest - '033#######', - '034#######', - '035#######', - '036#######', - '037#######', // non-geographic - ], - 'mobile' => [ - '07########', - ], - ]; - - protected static $specialFormats = [ - 'toll-free' => [ - '0800######', - '0801######', // shared-cost numbers - '0802######', // personal numbering - '0806######', // virtual cards - '0807######', // pre-paid cards - '0870######', // internet dial-up - ], - 'premium-rate' => [ - '0900######', - '0903######', // financial information - '0906######', // adult entertainment - ], - ]; - - /** - * @see http://en.wikipedia.org/wiki/Telephone_numbers_in_Romania#Last_years - */ - public function phoneNumber() - { - $type = static::randomElement(array_keys(static::$normalFormats)); - - return static::numerify(static::randomElement(static::$normalFormats[$type])); - } - - public static function tollFreePhoneNumber() - { - return static::numerify(static::randomElement(static::$specialFormats['toll-free'])); - } - - public static function premiumRatePhoneNumber() - { - return static::numerify(static::randomElement(static::$specialFormats['premium-rate'])); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ro_RO/Text.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ro_RO/Text.php deleted file mode 100644 index 1e40597..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ro_RO/Text.php +++ /dev/null @@ -1,155 +0,0 @@ -generator->parse($format); - } - - public static function country() - { - return static::randomElement(static::$country); - } - - public static function postcode() - { - return static::toUpper(static::bothify(static::randomElement(static::$postcode))); - } - - public static function regionSuffix() - { - return static::randomElement(static::$regionSuffix); - } - - public static function region() - { - return static::randomElement(static::$region); - } - - public static function cityPrefix() - { - return static::randomElement(static::$cityPrefix); - } - - public function city() - { - return static::randomElement(static::$city); - } - - public static function streetPrefix() - { - return static::randomElement(static::$streetPrefix); - } - - public static function street() - { - return static::randomElement(static::$street); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/Color.php deleted file mode 100644 index d31d120..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/Color.php +++ /dev/null @@ -1,23 +0,0 @@ -generator->parse($format); - } - - public static function companyPrefix() - { - return static::randomElement(static::$companyPrefixes); - } - - public static function companyNameElement() - { - return static::randomElement(static::$companyElements); - } - - public static function companyNameSuffix() - { - return static::randomElement(static::$companyNameSuffixes); - } - - /** - * Generates a Russian Taxpayer Personal Identification Number - * - * @param string $area_code - * - * @return string - * - * @deprecated use {@link \Faker\Provider\ru_RU\Company::inn10()} instead - * @see \Faker\Provider\ru_RU\Company::inn10() - */ - public static function inn($area_code = '') - { - return self::inn10($area_code); - } - - /** - * Generates a Russian Taxpayer Personal Identification Number - * - * @param string $area_code - * - * @return string - */ - public static function inn10($area_code = '') - { - if ($area_code === '' || (int) $area_code === 0) { - //Simple generation code for areas in Russian without check for valid - $area_code = self::numberBetween(1, 91); - } else { - $area_code = (int) $area_code; - } - $area_code = str_pad($area_code, 2, '0', STR_PAD_LEFT); - $inn_base = $area_code . static::numerify('#######'); - - return $inn_base . self::inn10Checksum($inn_base); - } - - public static function kpp($inn = '') - { - if ($inn === '' || strlen($inn) < 4) { - $inn = self::inn10(); - } - - return substr($inn, 0, 4) . '01001'; - } - - /** - * Generates INN Checksum - * - * @see https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0 - * - * @param string $inn - * - * @return string Checksum (one digit) - */ - public static function inn10Checksum($inn) - { - $multipliers = [2, 4, 10, 3, 5, 9, 4, 6, 8]; - $sum = 0; - - for ($i = 0; $i < 9; ++$i) { - $sum += (int) $inn[$i] * $multipliers[$i]; - } - - return (string) (($sum % 11) % 10); - } - - /** - * Checks whether an INN has a valid checksum - * - * @param string $inn - * - * @return bool - */ - public static function inn10IsValid($inn) - { - return strlen($inn) === 10 && self::inn10Checksum($inn) === $inn[9]; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/Internet.php deleted file mode 100644 index 195ef5f..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ -.*<' | \ - * sed -r 's/—//' | sed -r 's/[\<\>]//g' | sed -r "s/(^|$)/'/g" | sed -r 's/$/,/' | sed -r 's/\&(laquo|raquo);/"/g' | \ - * sed -r 's/\s+/ /g'" - */ - protected static $banks = [ - 'Новый Промышленный Банк', - 'Новый Символ', - 'Нокссбанк', - 'Ноосфера', - 'Нордеа Банк', - 'Нота-Банк', - 'НС Банк', - 'НСТ-Банк', - 'Нэклис-Банк', - 'Образование', - 'Объединенный Банк Промышленных Инвестиций', - 'Объединенный Банк Республики', - 'Объединенный Капитал', - 'Объединенный Кредитный Банк', - 'Объединенный Кредитный Банк Московский филиал', - 'Объединенный Национальный Банк', - 'Объединенный Резервный Банк', - 'Океан Банк', - 'ОЛМА-Банк', - 'Онего', - 'Оней Банк', - 'ОПМ-Банк', - 'Оргбанк', - 'Оренбург', - 'ОТП Банк', - 'ОФК Банк', - 'Охабанк', - 'Первобанк', - 'Первомайский', - 'Первоуральскбанк', - 'Первый Дортрансбанк', - 'Первый Инвестиционный банк', - 'Первый Клиентский Банк', - 'Первый Чешско-Российский Банк', - 'Пересвет', - 'Пермь', - 'Петербургский Социальный Коммерческий Банк', - 'Петрокоммерц', - 'ПИР Банк', - 'Платина', - 'Плато-Банк', - 'Плюс Банк', - 'Пойдем!', - 'Почтобанк', - 'Прайм Финанс', - 'Преодоление', - 'Приморье', - 'Примсоцбанк', - 'Примтеркомбанк', - 'Прио-Внешторгбанк', - 'Приобье', - 'Приполярный', - 'Приско Капитал Банк', - 'Пробизнесбанк', - 'Проинвестбанк', - 'Прокоммерцбанк', - 'Проминвестбанк', - 'Промрегионбанк', - 'Промсвязьбанк', - 'Промсвязьинвестбанк', - 'Промсельхозбанк', - 'Промтрансбанк', - 'Промышленно-Финансовое Сотрудничество', - 'Промэнергобанк', - 'Профессионал Банк', - 'Профит Банк', - 'Прохладный', - 'Пульс Столицы', - 'Радиотехбанк', - 'Развитие', - 'Развитие-Столица', - 'Райффайзенбанк', - 'Расчетно-Кредитный Банк', - 'Расчетный Дом', - 'РБА', - 'Региональный Банк Развития', - 'Региональный Банк Сбережений', - 'Региональный Коммерческий Банк', - 'Региональный Кредит', - 'Регионфинансбанк', - 'Регнум', - 'Резерв', - 'Ренессанс', - 'Ренессанс Кредит', - 'Рента-Банк', - 'РЕСО Кредит', - 'Республиканский Кредитный Альянс', - 'Ресурс-Траст', - 'Риабанк', - 'Риал-Кредит', - 'Ринвестбанк', - 'Ринвестбанк Московский офис', - 'РИТ-Банк', - 'РН Банк', - 'Росавтобанк', - 'Росбанк', - 'Росбизнесбанк', - 'Росгосстрах Банк', - 'Росдорбанк', - 'РосЕвроБанк', - 'РосинтерБанк', - 'Роспромбанк', - 'Россельхозбанк', - 'Российская Финансовая Корпорация', - 'Российский Капитал', - 'Российский Кредит', - 'Российский Национальный Коммерческий Банк', - 'Россита-Банк', - 'Россия', - 'Рост Банк', - 'Ростфинанс', - 'Росэксимбанк', - 'Росэнергобанк', - 'Роял Кредит Банк', - 'РСКБ', - 'РТС-Банк', - 'РУБанк', - 'Рублев', - 'Руна-Банк', - 'Рунэтбанк', - 'Рускобанк', - 'Руснарбанк', - 'Русский Банк Сбережений', - 'Русский Ипотечный Банк', - 'Русский Международный Банк', - 'Русский Национальный Банк', - 'Русский Стандарт', - 'Русский Торговый Банк', - 'Русский Трастовый Банк', - 'Русский Финансовый Альянс', - 'Русский Элитарный Банк', - 'Русславбанк', - 'Руссобанк', - 'Русстройбанк', - 'Русфинанс Банк', - 'Русь', - 'РусьРегионБанк', - 'Русьуниверсалбанк', - 'РусЮгбанк', - 'РФИ Банк', - 'Саммит Банк', - 'Санкт-Петербургский Банк Инвестиций', - 'Саратов', - 'Саровбизнесбанк', - 'Сбербанк России', - 'Связной Банк', - 'Связь-Банк', - 'СДМ-Банк', - 'Севастопольский Морской банк', - 'Северный Кредит', - 'Северный Народный Банк', - 'Северо-Восточный Альянс', - 'Северо-Западный 1 Альянс Банк', - 'Северстройбанк', - 'Севзапинвестпромбанк', - 'Сельмашбанк', - 'Сервис-Резерв', - 'Сетелем Банк', - 'СИАБ', - 'Сибирский Банк Реконструкции и Развития', - 'Сибнефтебанк', - 'Сибсоцбанк', - 'Сибэс', - 'Сибэс Московский офис', - 'Синергия', - 'Синко-Банк', - 'Система', - 'Сити Инвест Банк', - 'Ситибанк', - 'СКА-Банк', - 'СКБ-Банк', - 'Славия', - 'Славянбанк', - 'Славянский Кредит', - 'Смартбанк', - 'СМБ-Банк', - 'Смолевич', - 'СМП Банк', - 'Снежинский', - 'Собинбанк', - 'Соверен Банк', - 'Советский', - 'Совкомбанк', - 'Современные Стандарты Бизнеса', - 'Содружество', - 'Соколовский', - 'Солид Банк', - 'Солидарность (Москва)', - 'Солидарность (Самара)', - 'Социнвестбанк', - 'Социнвестбанк Московский филиал', - 'Социум-Банк', - 'Союз', - 'Союзный', - 'Спецстройбанк', - 'Спиритбанк', - 'Спурт Банк', - 'Спутник', - 'Ставропольпромстройбанк', - 'Сталь Банк', - 'Стандарт-Кредит', - 'Стар Альянс', - 'СтарБанк', - 'Старооскольский Агропромбанк', - 'Старый Кремль', - 'Стелла-Банк', - 'Столичный Кредит', - 'Стратегия', - 'Строительно-Коммерческий Банк', - 'Стройлесбанк', - 'Сумитомо Мицуи', - 'Сургутнефтегазбанк', - 'СЭБ Банк', - 'Таатта', - 'Таврический', - 'Таганрогбанк', - 'Тагилбанк', - 'Тайдон', - 'Тайм Банк', - 'Тальменка-Банк', - 'Тальменка-Банк Московский филиал', - 'Тамбовкредитпромбанк', - 'Татагропромбанк', - 'Татсоцбанк', - 'Татфондбанк', - 'Таурус Банк', - 'ТверьУниверсалБанк', - 'Тексбанк', - 'Темпбанк', - 'Тендер-Банк', - 'Терра', - 'Тетраполис', - 'Тимер Банк', - 'Тинькофф Банк', - 'Тихоокеанский Внешторгбанк', - 'Тойота Банк', - 'Тольяттихимбанк', - 'Томскпромстройбанк', - 'Торгово-Промышленный Банк Китая', - 'Торговый Городской Банк', - 'Торжокуниверсалбанк', - 'Транскапиталбанк', - 'Транснациональный Банк', - 'Транспортный', - 'Трансстройбанк', - 'Траст Капитал Банк', - 'Тройка-Д Банк', - 'Тульский Промышленник', - 'Тульский Промышленник Московский офис', - 'Тульский Расчетный Центр', - 'Турбобанк', - 'Тусар', - 'ТЭМБР-Банк', - 'ТЭСТ', - 'Углеметбанк', - 'Уздан', - 'Унифин', - 'Унифондбанк', - 'Уралкапиталбанк', - 'Уралприватбанк', - 'Уралпромбанк', - 'Уралсиб', - 'Уралтрансбанк', - 'Уралфинанс', - 'Уральский Банк Реконструкции и Развития', - 'Уральский Межрегиональный Банк', - 'Уральский Финансовый Дом', - 'Ури Банк', - 'Уссури', - 'ФДБ', - 'ФИА-Банк', - 'Финам Банк', - 'Финанс Бизнес Банк', - 'Финансово-Промышленный Капитал', - 'Финансовый Капитал', - 'Финансовый Стандарт', - 'Финарс Банк', - 'Финпромбанк (ФПБ Банк)', - 'Финтрастбанк', - 'ФК Открытие (бывш. НОМОС-Банк)', - 'Флора-Москва', - 'Фольксваген Банк Рус', - 'Фондсервисбанк', - 'Фора-Банк', - 'Форбанк', - 'Форус Банк', - 'Форштадт', - 'Фьючер', - 'Хакасский Муниципальный Банк', - 'Ханты-Мансийский банк Открытие', - 'Химик', - 'Хлынов', - 'Хованский', - 'Холдинвестбанк', - 'Холмск', - 'Хоум Кредит Банк', - 'Центр-инвест', - 'Центрально-Азиатский', - 'Центрально-Европейский Банк', - 'Центркомбанк', - 'ЦентроКредит', - 'Церих', - 'Чайна Констракшн', - 'Чайнасельхозбанк', - 'Челиндбанк', - 'Челябинвестбанк', - 'Черноморский банк развития и реконструкции', - 'Чувашкредитпромбанк', - 'Эйч-Эс-Би-Си Банк (HSBC)', - 'Эко-Инвест', - 'Экономбанк', - 'Экономикс-Банк', - 'Экси-Банк', - 'Эксперт Банк', - 'Экспобанк', - 'Экспресс-Волга', - 'Экспресс-Кредит', - 'Эл Банк', - 'Элита', - 'Эльбин', - 'Энергобанк', - 'Энергомашбанк', - 'Энерготрансбанк', - 'Эно', - 'Энтузиастбанк', - 'Эргобанк', - 'Ю Би Эс Банк', - 'ЮГ-Инвестбанк', - 'Югра', - 'Южный Региональный Банк', - 'ЮМК', - 'Юниаструм Банк', - 'ЮниКредит Банк', - 'Юнистрим', - 'Япы Креди Банк Москва', - 'ЯР-Банк', - 'Яринтербанк', - 'Ярославич', - 'K2 Банк', - 'АББ', - 'Абсолют Банк', - 'Авангард', - 'Аверс', - 'Автоградбанк', - 'АвтоКредитБанк', - 'Автоторгбанк', - 'Агроинкомбанк', - 'Агропромкредит', - 'Агророс', - 'Агросоюз', - 'Адамон Банк', - 'Адамон Банк Московский филиал', - 'Аделантбанк', - 'Адмиралтейский', - 'Азиатско-Тихоокеанский Банк', - 'Азимут', - 'Азия Банк', - 'Азия-Инвест Банк', - 'Ай-Си-Ай-Си-Ай Банк (ICICI)', - 'Айви Банк', - 'АйМаниБанк', - 'Ак Барс', - 'Акибанк', - 'Аккобанк', - 'Акрополь', - 'Аксонбанк', - 'Актив Банк', - 'АктивКапитал Банк', - 'АктивКапитал Банк Московский филиал', - 'АктивКапитал Банк Санкт-Петербургский филиал', - 'Акцент', - 'Акцепт', - 'Акция', - 'Алданзолотобанк', - 'Александровский', - 'Алеф-Банк', - 'Алжан', - 'Алмазэргиэнбанк', - 'АлтайБизнес-Банк', - 'Алтайкапиталбанк', - 'Алтынбанк', - 'Альба Альянс', - 'Альта-Банк', - 'Альтернатива', - 'Альфа-Банк', - 'АМБ Банк', - 'Америкэн Экспресс Банк', - 'Анелик РУ', - 'Анкор Банк', - 'Анталбанк', - 'Апабанк', - 'Аресбанк', - 'Арзамас', - 'Арксбанк', - 'Арсенал', - 'Аспект', - 'Ассоциация', - 'БайкалБанк', - 'БайкалИнвестБанк', - 'Байкалкредобанк', - 'Балаково-Банк', - 'Балтийский Банк', - 'Балтика', - 'Балтинвестбанк', - 'Банк "Акцент" Московский филиал', - 'Банк "МБА-Москва"', - 'Банк "Санкт-Петербург"', - 'Банк АВБ', - 'Банк БКФ', - 'Банк БФА', - 'Банк БЦК-Москва', - 'Банк Город', - 'Банк Жилищного Финансирования', - 'Банк Инноваций и Развития', - 'Банк Интеза', - 'Банк ИТБ', - 'Банк Казани', - 'Банк Китая (Элос)', - 'Банк Кредит Свисс', - 'Банк МБФИ', - 'Банк Москвы', - 'Банк на Красных Воротах', - 'Банк Оранжевый (бывш. Промсервисбанк)', - 'Банк оф Токио-Мицубиси', - 'Банк Премьер Кредит', - 'Банк ПСА Финанс Рус', - 'Банк Развития Технологий', - 'Банк Расчетов и Сбережений', - 'Банк Раунд', - 'Банк РСИ', - 'Банк Сберегательно-кредитного сервиса', - 'Банк СГБ', - 'Банк Торгового Финансирования', - 'Банк Финсервис', - 'Банк Экономический Союз', - 'Банкирский Дом', - 'Банкхаус Эрбе', - 'Башкомснаббанк', - 'Башпромбанк', - 'ББР Банк', - 'Белгородсоцбанк', - 'Бенифит-Банк', - 'Берейт', - 'Бест Эффортс Банк', - 'Бизнес для Бизнеса', - 'Бинбанк', - 'БИНБАНК кредитные карты', - 'Бинбанк Мурманск', - 'БКС Инвестиционный Банк', - 'БМВ Банк', - 'БНП Париба Банк', - 'Богородский', - 'Богородский Муниципальный Банк', - 'Братский АНКБ', - 'БСТ-Банк', - 'Булгар Банк', - 'Бум-Банк', - 'Бумеранг', - 'БФГ-Кредит', - 'БыстроБанк', - 'Вакобанк', - 'Вега-Банк', - 'Век', - 'Великие Луки Банк', - 'Венец', - 'Верхневолжский', - 'Верхневолжский Крымский филиал', - 'Верхневолжский Московский филиал', - 'Верхневолжский Невский филиал', - 'Верхневолжский Таврический филиал', - 'Верхневолжский Ярославский филиал', - 'Веста', - 'Вестинтербанк', - 'Взаимодействие', - 'Викинг', - 'Витабанк', - 'Витязь', - 'Вкабанк', - 'Владбизнесбанк', - 'Владпромбанк', - 'Внешпромбанк', - 'Внешфинбанк', - 'Внешэкономбанк', - 'Военно-Промышленный Банк', - 'Возрождение', - 'Вокбанк', - 'Вологдабанк', - 'Вологжанин', - 'Воронеж', - 'Восточно-Европейский Трастовый Банк', - 'Восточный Экспресс Банк', - 'ВостСибтранскомбанк', - 'ВРБ Москва', - 'Всероссийский Банк Развития Регионов', - 'ВТБ', - 'ВТБ 24', - 'ВУЗ-Банк', - 'Выборг-Банк', - 'Выборг-Банк Московский филиал', - 'Вэлтон Банк', - 'Вятич', - 'Вятка-Банк', - 'Гагаринский', - 'Газбанк', - 'Газнефтьбанк', - 'Газпромбанк', - 'Газстройбанк', - 'Газтрансбанк', - 'Газэнергобанк', - 'Ганзакомбанк', - 'Гарант-Инвест', - 'Гаранти Банк Москва', - 'Геленджик-Банк', - 'Генбанк', - 'Геобанк', - 'Гефест', - 'Глобус', - 'Глобэкс', - 'Голдман Сакс Банк', - 'Горбанк', - 'ГПБ-Ипотека', - 'Гранд Инвест Банк', - 'Гринкомбанк', - 'Гринфилдбанк', - 'Грис-Банк', - 'Гута-Банк', - 'Далена', - 'Далетбанк', - 'Далта-Банк', - 'Дальневосточный Банк', - 'Данске Банк', - 'Девон-Кредит', - 'ДельтаКредит', - 'Денизбанк Москва', - 'Держава', - 'Дж. П. Морган Банк', - 'Джаст Банк', - 'Джей энд Ти Банк', - 'Дил-Банк', - 'Динамичные Системы', - 'Дойче Банк', - 'Долинск', - 'Дом-Банк', - 'Дон-Тексбанк', - 'Донкомбанк', - 'Донхлеббанк', - 'Дорис Банк', - 'Дружба', - 'ЕАТП Банк', - 'Евразийский Банк', - 'Евроазиатский Инвестиционный Банк', - 'ЕвроАксис Банк', - 'Евроальянс', - 'Еврокапитал-Альянс', - 'Еврокоммерц', - 'Еврокредит', - 'Евромет', - 'Европейский Стандарт', - 'Европлан Банк', - 'ЕвроситиБанк', - 'Еврофинанс Моснарбанк', - 'Единственный', - 'Единый Строительный Банк', - 'Екатеринбург', - 'Екатерининский', - 'Енисей', - 'Енисейский Объединенный Банк', - 'Ермак', - 'Живаго-Банк', - 'Жилкредит', - 'Жилстройбанк', - 'Запсибкомбанк', - 'Заречье', - 'Заубер Банк', - 'Земкомбанк', - 'Земский Банк', - 'Зенит', - 'Зенит Сочи', - 'Зернобанк', - 'Зираат Банк', - 'Златкомбанк', - 'И.Д.Е.А. Банк', - 'Иваново', - 'Идеалбанк', - 'Ижкомбанк', - 'ИК Банк', - 'Икано Банк', - 'Инбанк', - 'Инвест-Экобанк', - 'Инвестиционный Банк Кубани', - 'Инвестиционный Республиканский Банк', - 'Инвестиционный Союз', - 'Инвесткапиталбанк', - 'Инвестсоцбанк', - 'Инвестторгбанк', - 'ИНГ Банк', - 'Индустриальный Сберегательный Банк', - 'Инкаробанк', - 'Интерактивный Банк', - 'Интеркоммерц Банк', - 'Интеркоопбанк', - 'Интеркредит', - 'Интернациональный Торговый Банк', - 'Интерпрогрессбанк', - 'Интерпромбанк', - 'Интехбанк', - 'Информпрогресс', - 'Ипозембанк', - 'ИпоТек Банк', - 'Иронбанк', - 'ИРС', - 'Итуруп', - 'Ишбанк', - 'Йошкар-Ола', - 'Калуга', - 'Камский Горизонт', - 'Камский Коммерческий Банк', - 'Камчаткомагропромбанк', - 'Канский', - 'Капитал', - 'Капиталбанк', - 'Кедр', - 'Кемсоцинбанк', - 'Кетовский Коммерческий Банк', - 'Киви Банк', - 'Классик Эконом Банк', - 'Клиентский', - 'Кольцо Урала', - 'Коммерцбанк (Евразия)', - 'Коммерческий Банк Развития', - 'Коммерческий Индо Банк', - 'Консервативный Коммерческий Банк', - 'Констанс-Банк', - 'Континенталь', - 'Конфидэнс Банк', - 'Кор', - 'Кореа Эксчендж Банк Рус', - 'Королевский Банк Шотландии', - 'Космос', - 'Костромаселькомбанк', - 'Кошелев-Банк', - 'Крайинвестбанк', - 'Кранбанк', - 'Креди Агриколь КИБ', - 'Кредит Европа Банк', - 'Кредит Урал Банк', - 'Кредит Экспресс', - 'Кредит-Москва', - 'Кредитинвест', - 'Кредо Финанс', - 'Кредпромбанк', - 'Кремлевский', - 'Крокус-Банк', - 'Крона-Банк', - 'Кросна-Банк', - 'Кроссинвестбанк', - 'Крыловский', - 'КС Банк', - 'Кубанский Универсальный Банк', - 'Кубань Кредит', - 'Кубаньторгбанк', - 'Кузбассхимбанк', - 'Кузнецкбизнесбанк', - 'Кузнецкий', - 'Кузнецкий Мост', - 'Курган', - 'Курскпромбанк', - 'Лада-Кредит', - 'Лайтбанк', - 'Ланта-Банк', - 'Левобережный', - 'Легион', - 'Леноблбанк', - 'Лесбанк', - 'Лето Банк', - 'Липецккомбанк', - 'Логос', - 'Локо-Банк', - 'Лэнд-Банк', - 'М2М Прайвет Банк', - 'Майкопбанк', - 'Майский', - 'МАК-Банк', - 'Максима', - 'Максимум', - 'МАСТ-Банк', - 'Мастер-Капитал', - 'МВС Банк', - 'МДМ Банк', - 'Мегаполис', - 'Международный Акционерный Банк', - 'Международный Банк Развития', - 'Международный Банк Санкт-Петербурга (МБСП)', - 'Международный Коммерческий Банк', - 'Международный Расчетный Банк', - 'Международный Строительный Банк', - 'Международный Финансовый Клуб', - 'Межотраслевая Банковская Корпорация', - 'Межрегиональный Банк Реконструкции', - 'Межрегиональный Клиринговый Банк', - 'Межрегиональный Почтовый Банк', - 'Межрегиональный промышленно-строительный банк', - 'Межрегионбанк', - 'Межтопэнергобанк', - 'Межтрастбанк', - 'Мерседес-Бенц Банк Рус', - 'Металлинвестбанк', - 'Металлург', - 'Меткомбанк (Каменск-Уральский)', - 'Меткомбанк (Череповец)', - 'Метробанк', - 'Метрополь', - 'Мидзухо Банк', - 'Мико-Банк', - 'Милбанк', - 'Миллениум Банк', - 'Мир Бизнес Банк', - 'Мираф-Банк', - 'Мираф-Банк Московский филиал', - 'Миръ', - 'Михайловский ПЖСБ', - 'Морган Стэнли Банк', - 'Морской Банк', - 'Мосводоканалбанк', - 'Москва', - 'Москва-Сити', - 'Московский Вексельный Банк', - 'Московский Индустриальный Банк', - 'Московский Коммерческий Банк', - 'Московский Кредитный Банк', - 'Московский Национальный Инвестиционный Банк', - 'Московский Нефтехимический Банк', - 'Московский Областной Банк', - 'Московско-Парижский Банк', - 'Московское Ипотечное Агентство', - 'Москоммерцбанк', - 'Мосстройэкономбанк (М Банк)', - 'Мострансбанк', - 'Мосуралбанк', - 'МС Банк Рус', - 'МСП Банк', - 'МТИ-Банк', - 'МТС Банк', - 'Муниципальный Камчатпрофитбанк', - 'Мурманский Социальный Коммерческий Банк', - 'МФБанк', - 'Н-Банк', - 'Нальчик', - 'Наратбанк', - 'Народный Банк', - 'Народный Банк Республики Тыва', - 'Народный Доверительный Банк', - 'Народный Земельно-Промышленный Банк', - 'Народный Инвестиционный Банк', - 'Натиксис Банк', - 'Нацинвестпромбанк', - 'Национальная Факторинговая Компания', - 'Национальный Банк "Траст"', - 'Национальный Банк Взаимного Кредита', - 'Национальный Банк Сбережений', - 'Национальный Залоговый Банк', - 'Национальный Клиринговый Банк', - 'Национальный Клиринговый Центр', - 'Национальный Корпоративный Банк', - 'Национальный Резервный Банк', - 'Национальный Стандарт', - 'Наш Дом', - 'НБД-Банк', - 'НБК-Банк', - 'Невастройинвест', - 'Невский Банк', - 'Нейва', - 'Нерюнгрибанк', - 'Нефтепромбанк', - 'Нефтяной Альянс', - 'Нижневолжский Коммерческий Банк', - 'Нико-Банк', - 'НК Банк', - 'НоваховКапиталБанк', - 'Новация', - 'Новикомбанк', - 'Новобанк', - 'Новое Время', - 'Новокиб', - 'Новопокровский', - 'Новый Век', - 'Новый Кредитный Союз', - 'Новый Московский Банк', - ]; - - /** - * @example 'Новый Московский Банк' - */ - public static function bank() - { - return static::randomElement(static::$banks); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/Person.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/Person.php deleted file mode 100644 index b0e17d4..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/Person.php +++ /dev/null @@ -1,188 +0,0 @@ -middleNameMale(); - } - - if ($gender === static::GENDER_FEMALE) { - return $this->middleNameFemale(); - } - - return $this->middleName(static::randomElement([ - static::GENDER_MALE, - static::GENDER_FEMALE, - ])); - } - - /** - * Return last name for the specified gender. - * - * @param string|null $gender A gender of the last name should be generated - * for. If the argument is skipped a random gender will be used. - * - * @return string Last name - */ - public function lastName($gender = null) - { - if (static::GENDER_FEMALE === $gender) { - return $this->lastNameFemale(); - } - - if (static::GENDER_MALE === $gender) { - return $this->lastNameMale(); - } - - return static::randomElement(static::$lastName) . static::randomElement(static::$lastNameSuffix); - } - - public function lastNameMale(): string - { - return static::randomElement(static::$lastName); - } - - public function lastNameFemale(): string - { - return static::randomElement(static::$lastName) . 'а'; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/PhoneNumber.php deleted file mode 100644 index 06f6337..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/ru_RU/PhoneNumber.php +++ /dev/null @@ -1,14 +0,0 @@ -generator->parse(static::randomElement(static::$lastNameFormat)); - } - - public static function lastNameMale() - { - return static::randomElement(static::$lastNameMale); - } - - public static function lastNameFemale() - { - return static::randomElement(static::$lastNameFemale); - } - - /** - * @example 'PhD' - */ - public static function suffix() - { - return static::randomElement(static::$suffix); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/sk_SK/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/sk_SK/PhoneNumber.php deleted file mode 100644 index bd195e4..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/sk_SK/PhoneNumber.php +++ /dev/null @@ -1,15 +0,0 @@ -format('ymd'); - $randomDigits = $this->getBirthNumber($gender); - - $checksum = Luhn::computeCheckDigit($datePart . $randomDigits); - - return $datePart . '-' . $randomDigits . $checksum; - } - - /** - * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE - * - * @return string of three digits - */ - protected function getBirthNumber($gender = null) - { - if ($gender && $gender === static::GENDER_MALE) { - return (string) static::numerify('##') . static::randomElement([1, 3, 5, 7, 9]); - } - - $zeroCheck = static function ($callback) { - do { - $randomDigits = $callback(); - } while ($randomDigits === '000'); - - return $randomDigits; - }; - - if ($gender && $gender === static::GENDER_FEMALE) { - return $zeroCheck(static function () { - return (string) static::numerify('##') . static::randomElement([0, 2, 4, 6, 8]); - }); - } - - return $zeroCheck(static function () { - return (string) static::numerify('###'); - }); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/sv_SE/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/sv_SE/PhoneNumber.php deleted file mode 100644 index 2d5c588..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/sv_SE/PhoneNumber.php +++ /dev/null @@ -1,64 +0,0 @@ - Swedish mobile number formats - */ - protected static array $mobileFormats = [ - '+467########', - '+46(0)7########', - '+46 (0)7## ## ## ##', - '+46 (0)7## ### ###', - '07## ## ## ##', - '07## ### ###', - '07##-## ## ##', - '07##-### ###', - '07# ### ## ##', - '07#-### ## ##', - '07#-#######', - ]; - - public function mobileNumber(): string - { - $format = static::randomElement(static::$mobileFormats); - - return self::numerify($this->generator->parse($format)); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/th_TH/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/th_TH/Address.php deleted file mode 100644 index 4918281..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/th_TH/Address.php +++ /dev/null @@ -1,141 +0,0 @@ -format('a') === 'am' ? 'öö' : 'ös'; - } - - public static function dayOfWeek($max = 'now') - { - $map = [ - 'Sunday' => 'Pazar', - 'Monday' => 'Pazartesi', - 'Tuesday' => 'Salı', - 'Wednesday' => 'Çarşamba', - 'Thursday' => 'Perşembe', - 'Friday' => 'Cuma', - 'Saturday' => 'Cumartesi', - ]; - $week = static::dateTime($max)->format('l'); - - return $map[$week] ?? $week; - } - - public static function monthName($max = 'now') - { - $map = [ - 'January' => 'Ocak', - 'February' => 'Şubat', - 'March' => 'Mart', - 'April' => 'Nisan', - 'May' => 'Mayıs', - 'June' => 'Haziran', - 'July' => 'Temmuz', - 'August' => 'Ağustos', - 'September' => 'Eylül', - 'October' => 'Ekim', - 'November' => 'Kasım', - 'December' => 'Aralık', - ]; - $month = static::dateTime($max)->format('F'); - - return $map[$month] ?? $month; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/tr_TR/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/tr_TR/Internet.php deleted file mode 100644 index 9d82111..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/tr_TR/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ - $digit) { - if ($index % 2 === 0) { - $evenSum += $digit; - } else { - $oddSum += $digit; - } - } - - $tenthDigit = (7 * $evenSum - $oddSum) % 10; - $eleventhDigit = ($evenSum + $oddSum + $tenthDigit) % 10; - - return $tenthDigit . $eleventhDigit; - } - - /** - * Checks whether a TCNo has a valid checksum - * - * @param string $tcNo - * - * @return bool - */ - public static function tcNoIsValid($tcNo) - { - return self::tcNoChecksum(substr($tcNo, 0, -2)) === substr($tcNo, -2, 2); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/tr_TR/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/tr_TR/PhoneNumber.php deleted file mode 100644 index 3103c77..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/tr_TR/PhoneNumber.php +++ /dev/null @@ -1,186 +0,0 @@ -generator->parse($format); - } - - public static function streetPrefix() - { - return static::randomElement(static::$streetPrefix); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/uk_UA/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/uk_UA/Color.php deleted file mode 100644 index 502161c..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/uk_UA/Color.php +++ /dev/null @@ -1,23 +0,0 @@ -generator->parse($format); - } - - public static function companyPrefix() - { - return static::randomElement(static::$companyPrefix); - } - - public static function companyName() - { - return static::randomElement(static::$companyName); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/uk_UA/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/uk_UA/Internet.php deleted file mode 100644 index 6119354..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/uk_UA/Internet.php +++ /dev/null @@ -1,9 +0,0 @@ -middleNameMale(); - } - - if ($gender === static::GENDER_FEMALE) { - return $this->middleNameFemale(); - } - - return $this->middleName(static::randomElement([ - static::GENDER_MALE, - static::GENDER_FEMALE, - ])); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/uk_UA/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/uk_UA/PhoneNumber.php deleted file mode 100644 index 15b443f..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/uk_UA/PhoneNumber.php +++ /dev/null @@ -1,72 +0,0 @@ -generator->parse($format)); - } - - public function hamletPrefix() - { - return static::randomElement(static::$hamletPrefix); - } - - public function wardName() - { - $format = static::randomElement(static::$wardNameFormats); - - return static::bothify($this->generator->parse($format)); - } - - public function wardPrefix() - { - return static::randomElement(static::$wardPrefix); - } - - public function districtName() - { - $format = static::randomElement(static::$districtNameFormats); - - return static::bothify($this->generator->parse($format)); - } - - public function districtPrefix() - { - return static::randomElement(static::$districtPrefix); - } - - /** - * @example 'Hà Nội' - */ - public function city() - { - return static::randomElement(static::$city); - } - - /** - * @example 'Bắc Giang' - */ - public static function province() - { - return static::randomElement(static::$province); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/vi_VN/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/vi_VN/Color.php deleted file mode 100644 index df78855..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/vi_VN/Color.php +++ /dev/null @@ -1,36 +0,0 @@ -generator->parse(static::randomElement(static::$middleNameFormat)); - } - - public static function middleNameMale() - { - return static::randomElement(static::$middleNameMale); - } - - public static function middleNameFemale() - { - return static::randomElement(static::$middleNameFemale); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/vi_VN/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/vi_VN/PhoneNumber.php deleted file mode 100644 index a6f47f1..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/vi_VN/PhoneNumber.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - '0[a] ### ####', - '(0[a]) ### ####', - '0[a]-###-####', - '(0[a])###-####', - '84-[a]-###-####', - '(84)([a])###-####', - '+84-[a]-###-####', - ], - '8' => [ - '0[a] #### ####', - '(0[a]) #### ####', - '0[a]-####-####', - '(0[a])####-####', - '84-[a]-####-####', - '(84)([a])####-####', - '+84-[a]-####-####', - ], - ]; - - public function phoneNumber() - { - $areaCode = static::randomElement(static::$areaCodes); - $areaCodeLength = strlen($areaCode); - $digits = 7; - - if ($areaCodeLength < 2) { - $digits = 8; - } - - return static::numerify(str_replace('[a]', $areaCode, static::randomElement(static::$formats[$digits]))); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_CN/Address.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_CN/Address.php deleted file mode 100644 index 00b9eb7..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_CN/Address.php +++ /dev/null @@ -1,148 +0,0 @@ -city() . static::area(); - } - - public static function postcode() - { - $prefix = str_pad(self::numberBetween(1, 85), 2, 0, STR_PAD_LEFT); - $suffix = '00'; - - return $prefix . self::numberBetween(10, 88) . $suffix; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_CN/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_CN/Color.php deleted file mode 100644 index 254fd07..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_CN/Color.php +++ /dev/null @@ -1,66 +0,0 @@ -format('a') === 'am' ? '上午' : '下午'; - } - - public static function dayOfWeek($max = 'now') - { - $map = [ - 'Sunday' => '星期日', - 'Monday' => '星期一', - 'Tuesday' => '星期二', - 'Wednesday' => '星期三', - 'Thursday' => '星期四', - 'Friday' => '星期五', - 'Saturday' => '星期六', - ]; - $week = static::dateTime($max)->format('l'); - - return $map[$week] ?? $week; - } - - public static function monthName($max = 'now') - { - $map = [ - 'January' => '一月', - 'February' => '二月', - 'March' => '三月', - 'April' => '四月', - 'May' => '五月', - 'June' => '六月', - 'July' => '七月', - 'August' => '八月', - 'September' => '九月', - 'October' => '十月', - 'November' => '十一月', - 'December' => '十二月', - ]; - $month = static::dateTime($max)->format('F'); - - return $map[$month] ?? $month; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_CN/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_CN/Internet.php deleted file mode 100644 index e1a8796..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_CN/Internet.php +++ /dev/null @@ -1,24 +0,0 @@ - [ - '板橋區', '三重區', '中和區', '永和區', - '新莊區', '新店區', '樹林區', '鶯歌區', - '三峽區', '淡水區', '汐止區', '瑞芳區', - '土城區', '蘆洲區', '五股區', '泰山區', - '林口區', '深坑區', '石碇區', '坪林區', - '三芝區', '石門區', '八里區', '平溪區', - '雙溪區', '貢寮區', '金山區', '萬里區', - '烏來區', - ], - '宜蘭縣' => [ - '宜蘭市', '羅東鎮', '蘇澳鎮', '頭城鎮', '礁溪鄉', - '壯圍鄉', '員山鄉', '冬山鄉', '五結鄉', '三星鄉', - '大同鄉', '南澳鄉', - ], - '桃園市' => [ - '桃園區', '中壢區', '大溪區', '楊梅區', '蘆竹區', - '大園區', '龜山區', '八德區', '龍潭區', '平鎮區', - '新屋區', '觀音區', '復興區', - ], - '新竹縣' => [ - '竹北市', '竹東鎮', '新埔鎮', '關西鎮', '湖口鄉', - '新豐鄉', '芎林鄉', '橫山鄉', '北埔鄉', '寶山鄉', - '峨眉鄉', '尖石鄉', '五峰鄉', - ], - '苗栗縣' => [ - '苗栗市', '苑裡鎮', '通霄鎮', '竹南鎮', '頭份鎮', - '後龍鎮', '卓蘭鎮', '大湖鄉', '公館鄉', '銅鑼鄉', - '南庄鄉', '頭屋鄉', '三義鄉', '西湖鄉', '造橋鄉', - '三灣鄉', '獅潭鄉', '泰安鄉', - ], - '臺中市' => [ - '豐原區', '東勢區', '大甲區', '清水區', '沙鹿區', - '梧棲區', '后里區', '神岡區', '潭子區', '大雅區', - '新社區', '石岡區', '外埔區', '大安區', '烏日區', - '大肚區', '龍井區', '霧峰區', '太平區', '大里區', - '和平區', '中區', '東區', '南區', '西區', '北區', - '西屯區', '南屯區', '北屯區', - ], - '彰化縣' => [ - '彰化市', '鹿港鎮', '和美鎮', '線西鄉', '伸港鄉', - '福興鄉', '秀水鄉', '花壇鄉', '芬園鄉', '員林鎮', - '溪湖鎮', '田中鎮', '大村鄉', '埔鹽鄉', '埔心鄉', - '永靖鄉', '社頭鄉', '二水鄉', '北斗鎮', '二林鎮', - '田尾鄉', '埤頭鄉', '芳苑鄉', '大城鄉', '竹塘鄉', - '溪州鄉', - ], - '南投縣' => [ - '南投市', '埔里鎮', '草屯鎮', '竹山鎮', '集集鎮', - '名間鄉', '鹿谷鄉', '中寮鄉', '魚池鄉', '國姓鄉', - '水里鄉', '信義鄉', '仁愛鄉', - ], - '雲林縣' => [ - '斗六市', '斗南鎮', '虎尾鎮', '西螺鎮', '土庫鎮', - '北港鎮', '古坑鄉', '大埤鄉', '莿桐鄉', '林內鄉', - '二崙鄉', '崙背鄉', '麥寮鄉', '東勢鄉', '褒忠鄉', - '臺西鄉', '元長鄉', '四湖鄉', '口湖鄉', '水林鄉', - ], - '嘉義縣' => [ - '太保市', '朴子市', '布袋鎮', '大林鎮', '民雄鄉', - '溪口鄉', '新港鄉', '六腳鄉', '東石鄉', '義竹鄉', - '鹿草鄉', '水上鄉', '中埔鄉', '竹崎鄉', '梅山鄉', - '番路鄉', '大埔鄉', '阿里山鄉', - ], - '臺南市' => [ - '新營區', '鹽水區', '白河區', '柳營區', '後壁區', - '東山區', '麻豆區', '下營區', '六甲區', '官田區', - '大內區', '佳里區', '學甲區', '西港區', '七股區', - '將軍區', '北門區', '新化區', '善化區', '新市區', - '安定區', '山上區', '玉井區', '楠西區', '南化區', - '左鎮區', '仁德區', '歸仁區', '關廟區', '龍崎區', - '永康區', '東區', '南區', '西區', '北區', '中區', - '安南區', '安平區', - ], - '高雄市' => [ - '鳳山區', '林園區', '大寮區', '大樹區', '大社區', - '仁武區', '鳥松區', '岡山區', '橋頭區', '燕巢區', - '田寮區', '阿蓮區', '路竹區', '湖內區', '茄萣區', - '永安區', '彌陀區', '梓官區', '旗山區', '美濃區', - '六龜區', '甲仙區', '杉林區', '內門區', '茂林區', - '桃源區', '三民區', '鹽埕區', '鼓山區', '左營區', - '楠梓區', '三民區', '新興區', '前金區', '苓雅區', - '前鎮區', '旗津區', '小港區', - ], - '屏東縣' => [ - '屏東市', '潮州鎮', '東港鎮', '恆春鎮', '萬丹鄉', - '長治鄉', '麟洛鄉', '九如鄉', '里港鄉', '鹽埔鄉', - '高樹鄉', '萬巒鄉', '內埔鄉', '竹田鄉', '新埤鄉', - '枋寮鄉', '新園鄉', '崁頂鄉', '林邊鄉', '南州鄉', - '佳冬鄉', '琉球鄉', '車城鄉', '滿州鄉', '枋山鄉', - '三地門鄉', '霧臺鄉', '瑪家鄉', '泰武鄉', '來義鄉', - '春日鄉', '獅子鄉', '牡丹鄉', - ], - '臺東縣' => [ - '臺東市', '成功鎮', '關山鎮', '卑南鄉', '鹿野鄉', - '池上鄉', '東河鄉', '長濱鄉', '太麻里鄉', '大武鄉', - '綠島鄉', '海端鄉', '延平鄉', '金峰鄉', '達仁鄉', - '蘭嶼鄉', - ], - '花蓮縣' => [ - '花蓮市', '鳳林鎮', '玉里鎮', '新城鄉', '吉安鄉', - '壽豐鄉', '光復鄉', '豐濱鄉', '瑞穗鄉', '富里鄉', - '秀林鄉', '萬榮鄉', '卓溪鄉', - ], - '澎湖縣' => [ - '馬公市', '湖西鄉', '白沙鄉', '西嶼鄉', '望安鄉', - '七美鄉', - ], - '基隆市' => [ - '中正區', '七堵區', '暖暖區', '仁愛區', '中山區', - '安樂區', '信義區', - ], - '新竹市' => [ - '東區', '北區', '香山區', - ], - '嘉義市' => [ - '東區', '西區', - ], - '臺北市' => [ - '松山區', '信義區', '大安區', '中山區', '中正區', - '大同區', '萬華區', '文山區', '南港區', '內湖區', - '士林區', '北投區', - ], - '連江縣' => [ - '南竿鄉', '北竿鄉', '莒光鄉', '東引鄉', - ], - '金門縣' => [ - '金城鎮', '金沙鎮', '金湖鎮', '金寧鄉', '烈嶼鄉', '烏坵鄉', - ], - ]; - - /** - * @see http://terms.naer.edu.tw/download/287/ - */ - protected static $country = [ - '不丹', '中非', '丹麥', '伊朗', '冰島', '剛果', - '加彭', '北韓', '南非', '卡達', '印尼', '印度', - '古巴', '哥德', '埃及', '多哥', '寮國', '尼日', - '巴曼', '巴林', '巴紐', '巴西', '希臘', '帛琉', - '德國', '挪威', '捷克', '教廷', '斐濟', '日本', - '智利', '東加', '查德', '汶萊', '法國', '波蘭', - '波赫', '泰國', '海地', '瑞典', '瑞士', '祕魯', - '秘魯', '約旦', '紐埃', '緬甸', '美國', '聖尼', - '聖普', '肯亞', '芬蘭', '英國', '荷蘭', '葉門', - '蘇丹', '諾魯', '貝南', '越南', '迦彭', - '迦納', '阿曼', '阿聯', '韓國', '馬利', - '以色列', '以色利', '伊拉克', '俄羅斯', - '利比亞', '加拿大', '匈牙利', '南極洲', - '南蘇丹', '厄瓜多', '吉布地', '吐瓦魯', - '哈撒克', '哈薩克', '喀麥隆', '喬治亞', - '土庫曼', '土耳其', '塔吉克', '塞席爾', - '墨西哥', '大西洋', '奧地利', '孟加拉', - '安哥拉', '安地卡', '安道爾', '尚比亞', - '尼伯爾', '尼泊爾', '巴哈馬', '巴拉圭', - '巴拿馬', '巴貝多', '幾內亞', '愛爾蘭', - '所在國', '摩洛哥', '摩納哥', '敍利亞', - '敘利亞', '新加坡', '東帝汶', '柬埔寨', - '比利時', '波扎那', '波札那', '烏克蘭', - '烏干達', '烏拉圭', '牙買加', '獅子山', - '甘比亞', '盧安達', '盧森堡', '科威特', - '科索夫', '科索沃', '立陶宛', '紐西蘭', - '維德角', '義大利', '聖文森', '艾塞亞', - '菲律賓', '萬那杜', '葡萄牙', '蒲隆地', - '蓋亞納', '薩摩亞', '蘇利南', '西班牙', - '貝里斯', '賴索托', '辛巴威', '阿富汗', - '阿根廷', '馬其頓', '馬拉威', '馬爾他', - '黎巴嫩', '亞塞拜然', '亞美尼亞', '保加利亞', - '南斯拉夫', '厄利垂亞', '史瓦濟蘭', '吉爾吉斯', - '吉里巴斯', '哥倫比亞', '坦尚尼亞', '塞內加爾', - '塞内加爾', '塞爾維亞', '多明尼加', '多米尼克', - '奈及利亞', '委內瑞拉', '宏都拉斯', '尼加拉瓜', - '巴基斯坦', '庫克群島', '愛沙尼亞', '拉脫維亞', - '摩爾多瓦', '摩里西斯', '斯洛伐克', '斯里蘭卡', - '格瑞那達', '模里西斯', '波多黎各', '澳大利亞', - '烏茲別克', '玻利維亞', '瓜地馬拉', '白俄羅斯', - '突尼西亞', '納米比亞', '索馬利亞', '索馬尼亞', - '羅馬尼亞', '聖露西亞', '聖馬利諾', '莫三比克', - '莫三鼻克', '葛摩聯盟', '薩爾瓦多', '衣索比亞', - '西薩摩亞', '象牙海岸', '賴比瑞亞', '賽普勒斯', - '馬來西亞', '馬爾地夫', '克羅埃西亞', - '列支敦斯登', '哥斯大黎加', '布吉納法索', - '布吉那法索', '幾內亞比索', '幾內亞比紹', - '斯洛維尼亞', '索羅門群島', '茅利塔尼亞', - '蒙特內哥羅', '赤道幾內亞', '阿爾及利亞', - '阿爾及尼亞', '阿爾巴尼亞', '馬紹爾群島', - '馬達加斯加', '密克羅尼西亞', '沙烏地阿拉伯', - '千里達及托巴哥', - ]; - - protected static $postcode = ['###-##', '###']; - - public function street() - { - return static::randomElement(static::$street); - } - - public static function randomChineseNumber() - { - $digits = [ - '', '一', '二', '三', '四', '五', '六', '七', '八', '九', - ]; - - return $digits[static::randomDigitNotNull()]; - } - - public static function randomNumber2() - { - return static::randomNumber(2) + 1; - } - - public static function randomNumber3() - { - return static::randomNumber(3) + 1; - } - - public static function localLatitude() - { - return static::randomFloat(6, 22, 25); - } - - public static function localLongitude() - { - return static::randomFloat(6, 120, 122); - } - - public function city() - { - $county = static::randomElement(array_keys(static::$city)); - $city = static::randomElement(static::$city[$county]); - - return $county . $city; - } - - public function state() - { - return '臺灣省'; - } - - public static function stateAbbr() - { - return '臺'; - } - - public static function cityPrefix() - { - return ''; - } - - public static function citySuffix() - { - return ''; - } - - public static function secondaryAddress() - { - return (static::randomNumber(2) + 1) . static::randomElement(static::$secondaryAddressSuffix); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/Color.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/Color.php deleted file mode 100644 index 19fa6d8..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/Color.php +++ /dev/null @@ -1,66 +0,0 @@ -generator->parse($format); - } - - public static function companyModifier() - { - return static::randomElement(static::$companyModifier); - } - - public static function companyPrefix() - { - return static::randomElement(static::$companyPrefix); - } - - public function catchPhrase() - { - return static::randomElement(static::$catchPhrase); - } - - public function bs() - { - $result = ''; - - foreach (static::$bsWords as &$word) { - $result .= static::randomElement($word); - } - - return $result; - } - - /** - * return standard VAT / Tax ID / Uniform Serial Number - * - * @example 28263822 - * - * @return int - */ - public function VAT() - { - return static::randomNumber(8, true); - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/DateTime.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/DateTime.php deleted file mode 100644 index 102a716..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/DateTime.php +++ /dev/null @@ -1,48 +0,0 @@ -format('a') === 'am' ? '上午' : '下午'; - } - - public static function dayOfWeek($max = 'now') - { - $map = [ - 'Sunday' => '星期日', - 'Monday' => '星期一', - 'Tuesday' => '星期二', - 'Wednesday' => '星期三', - 'Thursday' => '星期四', - 'Friday' => '星期五', - 'Saturday' => '星期六', - ]; - $week = static::dateTime($max)->format('l'); - - return $map[$week] ?? $week; - } - - public static function monthName($max = 'now') - { - $map = [ - 'January' => '一月', - 'February' => '二月', - 'March' => '三月', - 'April' => '四月', - 'May' => '五月', - 'June' => '六月', - 'July' => '七月', - 'August' => '八月', - 'September' => '九月', - 'October' => '十月', - 'November' => '十一月', - 'December' => '十二月', - ]; - $month = static::dateTime($max)->format('F'); - - return $map[$month] ?? $month; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/Internet.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/Internet.php deleted file mode 100644 index c3fb5ff..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/Internet.php +++ /dev/null @@ -1,28 +0,0 @@ - 10, - 'B' => 11, - 'C' => 12, - 'D' => 13, - 'E' => 14, - 'F' => 15, - 'G' => 16, - 'H' => 17, - 'I' => 34, - 'J' => 18, - 'K' => 19, - 'M' => 21, - 'N' => 22, - 'O' => 35, - 'P' => 23, - 'Q' => 24, - 'T' => 27, - 'U' => 28, - 'V' => 29, - 'W' => 32, - 'X' => 30, - 'Z' => 33, - ]; - - /** - * @see https://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E5%9C%8B%E6%B0%91%E8%BA%AB%E5%88%86%E8%AD%89 - */ - public static $idDigitValidator = [1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1]; - - protected static $maleNameFormats = [ - '{{lastName}}{{firstNameMale}}', - ]; - - protected static $femaleNameFormats = [ - '{{lastName}}{{firstNameFemale}}', - ]; - - protected static $titleMale = ['先生', '博士', '教授']; - protected static $titleFemale = ['小姐', '太太', '博士', '教授']; - - /** - * @see http://zh.wikipedia.org/wiki/%E7%99%BE%E5%AE%B6%E5%A7%93 - */ - protected static $lastName = [ - '趙', '錢', '孫', '李', '周', '吳', '鄭', '王', '馮', - '陳', '褚', '衛', '蔣', '沈', '韓', '楊', '朱', '秦', - '尤', '許', '何', '呂', '施', '張', '孔', '曹', '嚴', - '華', '金', '魏', '陶', '姜', '戚', '謝', '鄒', '喻', - '柏', '水', '竇', '章', '雲', '蘇', '潘', '葛', - '奚', '范', '彭', '郎', '魯', '韋', '昌', '馬', - '苗', '鳳', '花', '方', '俞', '任', '袁', '柳', - '酆', '鮑', '史', '唐', '費', '廉', '岑', '薛', - '雷', '賀', '倪', '湯', '滕', '殷', '羅', '畢', - '郝', '鄔', '安', '常', '樂', '于', '時', '傅', - '皮', '卞', '齊', '康', '伍', '余', '元', '卜', - '顧', '孟', '平', '黃', '和', '穆', '蕭', '尹', - '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', - '米', '貝', '明', '臧', '計', '伏', '成', '戴', - '談', '宋', '茅', '龐', '熊', '紀', '舒', '屈', - '項', '祝', '董', '梁', '杜', '阮', '藍', '閔', - '席', '季', '麻', '強', '賈', '路', '婁', '危', - '江', '童', '顏', '郭', '梅', '盛', '林', '刁', - '鍾', '徐', '丘', '駱', '高', '夏', '蔡', '田', - '樊', '胡', '凌', '霍', '虞', '萬', '支', '柯', - '昝', '管', '盧', '莫', '經', '房', '裘', '繆', - '干', '解', '應', '宗', '丁', '宣', '賁', '鄧', - '郁', '單', '杭', '洪', '包', '諸', '左', '石', - '崔', '吉', '鈕', '龔', '程', '嵇', '邢', '滑', - '裴', '陸', '榮', '翁', '荀', '羊', '於', '惠', - '甄', '麴', '家', '封', '芮', '羿', '儲', '靳', - '汲', '邴', '糜', '松', '井', '段', '富', '巫', - '烏', '焦', '巴', '弓', '牧', '隗', '山', '谷', - '車', '侯', '宓', '蓬', '全', '郗', '班', '仰', - '秋', '仲', '伊', '宮', '甯', '仇', '欒', '暴', - '甘', '鈄', '厲', '戎', '祖', '武', '符', '劉', - '景', '詹', '束', '龍', '葉', '幸', '司', '韶', - '郜', '黎', '薊', '薄', '印', '宿', '白', '懷', - '蒲', '邰', '從', '鄂', '索', '咸', '籍', '賴', - '卓', '藺', '屠', '蒙', '池', '喬', '陰', '鬱', - '胥', '能', '蒼', '雙', '聞', '莘', '黨', '翟', - '譚', '貢', '勞', '逄', '姬', '申', '扶', '堵', - '冉', '宰', '酈', '雍', '郤', '璩', '桑', '桂', - '濮', '牛', '壽', '通', '邊', '扈', '燕', '冀', - '郟', '浦', '尚', '農', '溫', '別', '莊', '晏', - '柴', '瞿', '閻', '充', '慕', '連', '茹', '習', - '宦', '艾', '魚', '容', '向', '古', '易', '慎', - '戈', '廖', '庾', '終', '暨', '居', '衡', '步', - '都', '耿', '滿', '弘', '匡', '國', '文', '寇', - '廣', '祿', '闕', '東', '歐', '殳', '沃', '利', - '蔚', '越', '夔', '隆', '師', '鞏', '厙', '聶', - '晁', '勾', '敖', '融', '冷', '訾', '辛', '闞', - '那', '簡', '饒', '空', '曾', '毋', '沙', '乜', - '養', '鞠', '須', '豐', '巢', '關', '蒯', '相', - '查', '后', '荊', '紅', '游', '竺', '權', '逯', - '蓋', '益', '桓', '公', '万俟', '司馬', '上官', - '歐陽', '夏侯', '諸葛', '聞人', '東方', '赫連', - '皇甫', '尉遲', '公羊', '澹臺', '公冶', '宗政', - '濮陽', '淳于', '單于', '太叔', '申屠', '公孫', - '仲孫', '軒轅', '令狐', '鍾離', '宇文', '長孫', - '慕容', '鮮于', '閭丘', '司徒', '司空', '亓官', - '司寇', '仉', '督', '子車', '顓孫', '端木', '巫馬', - '公西', '漆雕', '樂正', '壤駟', '公良', '拓跋', - '夾谷', '宰父', '穀梁', '晉', '楚', '閆', '法', - '汝', '鄢', '涂', '欽', '段干', '百里', '東郭', - '南門', '呼延', '歸', '海', '羊舌', '微生', '岳', - '帥', '緱', '亢', '況', '後', '有', '琴', '梁丘', - '左丘', '東門', '西門', '商', '牟', '佘', '佴', - '伯', '賞', '南宮', '墨', '哈', '譙', '笪', '年', - '愛', '陽', '佟', '第五', '言', '福', - ]; - - /** - * @see http://technology.chtsai.org/namefreq/ - */ - protected static $characterMale = [ - '佳', '俊', '信', '偉', '傑', '冠', '君', '哲', - '嘉', '威', '宇', '安', '宏', '宗', '宜', '家', - '庭', '廷', '建', '彥', '心', '志', '思', '承', - '文', '柏', '樺', '瑋', '穎', '美', '翰', '華', - '詩', '豪', '賢', '軒', '銘', '霖', - ]; - - protected static $characterFemale = [ - '伶', '佩', '佳', '依', '儀', '冠', '君', '嘉', - '如', '娟', '婉', '婷', '安', '宜', '家', '庭', - '心', '思', '怡', '惠', '慧', '文', '欣', '涵', - '淑', '玲', '珊', '琪', '琬', '瑜', '穎', '筑', - '筱', '美', '芬', '芳', '華', '萍', '萱', '蓉', - '詩', '貞', '郁', '鈺', '雅', '雯', '靜', '馨', - ]; - - public static function randomName($pool, $n) - { - $name = ''; - - for ($i = 0; $i < $n; ++$i) { - $name .= static::randomElement($pool); - } - - return $name; - } - - public static function firstNameMale() - { - return static::randomName(static::$characterMale, self::numberBetween(1, 2)); - } - - public static function firstNameFemale() - { - return static::randomName(static::$characterFemale, self::numberBetween(1, 2)); - } - - public static function suffix() - { - return ''; - } - - /** - * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE - * - * @see https://en.wikipedia.org/wiki/National_Identification_Card_(Republic_of_China) - * - * @return string Length 10 alphanumeric characters, begins with 1 latin character (birthplace), - * 1 number (gender) and then 8 numbers (the last one is check digit). - */ - public function personalIdentityNumber($gender = null) - { - $birthPlace = self::randomKey(self::$idBirthplaceCode); - $birthPlaceCode = self::$idBirthplaceCode[$birthPlace]; - - $gender = ($gender != null) ? $gender : self::randomElement([self::GENDER_FEMALE, self::GENDER_MALE]); - $genderCode = ($gender === self::GENDER_MALE) ? 1 : 2; - - $randomNumberCode = self::randomNumber(7, true); - - $codes = str_split($birthPlaceCode . $genderCode . $randomNumberCode); - $total = 0; - - foreach ($codes as $key => $code) { - $total += $code * self::$idDigitValidator[$key]; - } - - $checkSumDigit = 10 - ($total % 10); - - if ($checkSumDigit == 10) { - $checkSumDigit = 0; - } - - return $birthPlace . $genderCode . $randomNumberCode . $checkSumDigit; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/PhoneNumber.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/PhoneNumber.php deleted file mode 100644 index db9ac32..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/Provider/zh_TW/PhoneNumber.php +++ /dev/null @@ -1,19 +0,0 @@ - 251: - $temp .= $chars[++$i]; - // no break - case $ord > 247: - $temp .= $chars[++$i]; - // no break - case $ord > 239: - $temp .= $chars[++$i]; - // no break - case $ord > 223: - $temp .= $chars[++$i]; - // no break - case $ord > 191: - $temp .= $chars[++$i]; - } - - $encoding[] = $temp; - } - - return $encoding; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/UniqueGenerator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/UniqueGenerator.php deleted file mode 100644 index fef167b..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/UniqueGenerator.php +++ /dev/null @@ -1,87 +0,0 @@ - ['0123' => null], - * 'city' => ['London' => null, 'Tokyo' => null], - * ] - * - * @var array> - */ - protected $uniques = []; - - /** - * @param Extension|Generator $generator - * @param int $maxRetries - * @param array> $uniques - */ - public function __construct($generator, $maxRetries = 10000, &$uniques = []) - { - $this->generator = $generator; - $this->maxRetries = $maxRetries; - $this->uniques = &$uniques; - } - - public function ext(string $id) - { - return new self($this->generator->ext($id), $this->maxRetries, $this->uniques); - } - - /** - * Catch and proxy all generator calls but return only unique values - * - * @param string $attribute - * - * @deprecated Use a method instead. - */ - public function __get($attribute) - { - trigger_deprecation('fakerphp/faker', '1.14', 'Accessing property "%s" is deprecated, use "%s()" instead.', $attribute, $attribute); - - return $this->__call($attribute, []); - } - - /** - * Catch and proxy all generator calls with arguments but return only unique values - * - * @param string $name - * @param array $arguments - */ - public function __call($name, $arguments) - { - if (!isset($this->uniques[$name])) { - $this->uniques[$name] = []; - } - $i = 0; - - do { - $res = call_user_func_array([$this->generator, $name], $arguments); - ++$i; - - if ($i > $this->maxRetries) { - throw new \OverflowException(sprintf('Maximum retries of %d reached without finding a unique value', $this->maxRetries)); - } - } while (array_key_exists(serialize($res), $this->uniques[$name])); - $this->uniques[$name][serialize($res)] = null; - - return $res; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/Faker/ValidGenerator.php b/v3_ci4/vendor/fakerphp/faker/src/Faker/ValidGenerator.php deleted file mode 100644 index bf40945..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/Faker/ValidGenerator.php +++ /dev/null @@ -1,78 +0,0 @@ -valid() - * - * @mixin Generator - */ -class ValidGenerator -{ - protected $generator; - protected $validator; - protected $maxRetries; - - /** - * @param Extension|Generator $generator - * @param callable|null $validator - * @param int $maxRetries - */ - public function __construct($generator, $validator = null, $maxRetries = 10000) - { - if (null === $validator) { - $validator = static function () { - return true; - }; - } elseif (!is_callable($validator)) { - throw new \InvalidArgumentException('valid() only accepts callables as first argument'); - } - $this->generator = $generator; - $this->validator = $validator; - $this->maxRetries = $maxRetries; - } - - public function ext(string $id) - { - return new self($this->generator->ext($id), $this->validator, $this->maxRetries); - } - - /** - * Catch and proxy all generator calls but return only valid values - * - * @param string $attribute - * - * @deprecated Use a method instead. - */ - public function __get($attribute) - { - trigger_deprecation('fakerphp/faker', '1.14', 'Accessing property "%s" is deprecated, use "%s()" instead.', $attribute, $attribute); - - return $this->__call($attribute, []); - } - - /** - * Catch and proxy all generator calls with arguments but return only valid values - * - * @param string $name - * @param array $arguments - */ - public function __call($name, $arguments) - { - $i = 0; - - do { - $res = call_user_func_array([$this->generator, $name], $arguments); - ++$i; - - if ($i > $this->maxRetries) { - throw new \OverflowException(sprintf('Maximum retries of %d reached without finding a valid value', $this->maxRetries)); - } - } while (!call_user_func($this->validator, $res)); - - return $res; - } -} diff --git a/v3_ci4/vendor/fakerphp/faker/src/autoload.php b/v3_ci4/vendor/fakerphp/faker/src/autoload.php deleted file mode 100644 index a4dfa9e..0000000 --- a/v3_ci4/vendor/fakerphp/faker/src/autoload.php +++ /dev/null @@ -1,29 +0,0 @@ - - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the _Software_), to deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED **AS IS**, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/README.md b/v3_ci4/vendor/fidry/cpu-core-counter/README.md deleted file mode 100644 index 6b554d2..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/README.md +++ /dev/null @@ -1,138 +0,0 @@ -# CPU Core Counter - -This package is a tiny utility to get the number of CPU cores. - -```sh -composer require fidry/cpu-core-counter -``` - - -## Usage - -```php -use Fidry\CpuCoreCounter\CpuCoreCounter; -use Fidry\CpuCoreCounter\NumberOfCpuCoreNotFound; -use Fidry\CpuCoreCounter\Finder\DummyCpuCoreFinder; - -$counter = new CpuCoreCounter(); - -// For knowing the number of cores you can use for launching parallel processes: -$counter->getAvailableForParallelisation()->availableCpus; - -// Get the number of CPU cores (by default it will use the logical cores count): -try { - $counter->getCount(); // e.g. 8 -} catch (NumberOfCpuCoreNotFound) { - return 1; // Fallback value -} - -// An alternative form where we not want to catch the exception: - -$counter = new CpuCoreCounter([ - ...CpuCoreCounter::getDefaultFinders(), - new DummyCpuCoreFinder(1), // Fallback value -]); - -// A type-safe alternative form: -$counter->getCountWithFallback(1); - -// Note that the result is memoized. -$counter->getCount(); // e.g. 8 - -``` - - -## Advanced usage - -### Changing the finders - -When creating `CpuCoreCounter`, you may want to change the order of the finders -used or disable a specific finder. You can easily do so by passing the finders -you want - -```php -// Remove WindowsWmicFinder -$finders = array_filter( - CpuCoreCounter::getDefaultFinders(), - static fn (CpuCoreFinder $finder) => !($finder instanceof WindowsWmicFinder) -); - -$cores = (new CpuCoreCounter($finders))->getCount(); -``` - -```php -// Use CPUInfo first & don't use Nproc -$finders = [ - new CpuInfoFinder(), - new WindowsWmicFinder(), - new HwLogicalFinder(), -]; - -$cores = (new CpuCoreCounter($finders))->getCount(); -``` - -### Choosing only logical or physical finders - -`FinderRegistry` provides two helpful entries: - -- `::getDefaultLogicalFinders()`: gives an ordered list of finders that will - look for the _logical_ CPU cores count. -- `::getDefaultPhysicalFinders()`: gives an ordered list of finders that will - look for the _physical_ CPU cores count. - -By default, when using `CpuCoreCounter`, it will use the logical finders since -it is more likely what you are looking for and is what is used by PHP source to -build the PHP binary. - - -### Checks what finders find what on your system - -You have three scrips available that provides insight about what the finders -can find: - -```shell -# Checks what each given finder will find on your system with details about the -# information it had. -make diagnose # From this repository -./vendor/fidry/cpu-core-counter/bin/diagnose.php # From the library -``` - -And: -```shell -# Execute all finders and display the result they found. -make execute # From this repository -./vendor/fidry/cpu-core-counter/bin/execute.php # From the library -``` - - -### Debug the results found - -You have 3 methods available to help you find out what happened: - -1. If you are using the default configuration of finder registries, you can check - the previous section which will provide plenty of information. -2. If what you are interested in is how many CPU cores were found, you can use - the `CpuCoreCounter::trace()` method. -3. If what you are interested in is how the calculation of CPU cores available - for parallelisation was done, you can inspect the values of `ParallelisationResult` - returned by `CpuCoreCounter::getAvailableForParallelisation()`. - - -## Backward Compatibility Promise (BCP) - -The policy is for the major part following the same as [Symfony's one][symfony-bc-policy]. -Note that the code marked as `@private` or `@internal` are excluded from the BCP. - -The following elements are also excluded: - -- The `diagnose` and `execute` commands: those are for debugging/inspection purposes only -- `FinderRegistry::get*Finders()`: new finders may be added or the order of finders changed at any time - - -## License - -This package is licensed using the MIT License. - -Please have a look at [`LICENSE.md`](LICENSE.md). - -[symfony-bc-policy]: https://symfony.com/doc/current/contributing/code/bc.html diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/bin/diagnose.php b/v3_ci4/vendor/fidry/cpu-core-counter/bin/diagnose.php deleted file mode 100644 index 7dd894a..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/bin/diagnose.php +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -use Fidry\CpuCoreCounter\Diagnoser; -use Fidry\CpuCoreCounter\Finder\FinderRegistry; - -require_once __DIR__.'/../vendor/autoload.php'; - -echo 'Running diagnosis...'.PHP_EOL.PHP_EOL; -echo Diagnoser::diagnose(FinderRegistry::getAllVariants()).PHP_EOL; - -echo 'Logical CPU cores finders...'.PHP_EOL.PHP_EOL; -echo Diagnoser::diagnose(FinderRegistry::getDefaultLogicalFinders()).PHP_EOL; - -echo 'Physical CPU cores finders...'.PHP_EOL.PHP_EOL; -echo Diagnoser::diagnose(FinderRegistry::getDefaultPhysicalFinders()).PHP_EOL; diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/bin/execute.php b/v3_ci4/vendor/fidry/cpu-core-counter/bin/execute.php deleted file mode 100644 index edadebb..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/bin/execute.php +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -use Fidry\CpuCoreCounter\Diagnoser; -use Fidry\CpuCoreCounter\Finder\FinderRegistry; - -require_once __DIR__.'/../vendor/autoload.php'; - -echo 'Executing finders...'.PHP_EOL.PHP_EOL; -echo Diagnoser::execute(FinderRegistry::getAllVariants()).PHP_EOL; diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/bin/trace.php b/v3_ci4/vendor/fidry/cpu-core-counter/bin/trace.php deleted file mode 100644 index adb52e2..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/bin/trace.php +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -use Fidry\CpuCoreCounter\CpuCoreCounter; -use Fidry\CpuCoreCounter\Finder\FinderRegistry; - -require_once __DIR__.'/../vendor/autoload.php'; - -$separator = str_repeat('–', 80); - -echo 'With all finders...'.PHP_EOL.PHP_EOL; -echo (new CpuCoreCounter(FinderRegistry::getAllVariants()))->trace().PHP_EOL; -echo $separator.PHP_EOL.PHP_EOL; - -echo 'Logical CPU cores finders...'.PHP_EOL.PHP_EOL; -echo (new CpuCoreCounter(FinderRegistry::getDefaultLogicalFinders()))->trace().PHP_EOL; -echo $separator.PHP_EOL.PHP_EOL; - -echo 'Physical CPU cores finders...'.PHP_EOL.PHP_EOL; -echo (new CpuCoreCounter(FinderRegistry::getDefaultPhysicalFinders()))->trace().PHP_EOL; -echo $separator.PHP_EOL.PHP_EOL; diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/composer.json b/v3_ci4/vendor/fidry/cpu-core-counter/composer.json deleted file mode 100644 index 6ca8df6..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/composer.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "fidry/cpu-core-counter", - "description": "Tiny utility to get the number of CPU cores.", - "license": "MIT", - "type": "library", - "keywords": [ - "cpu", - "core" - ], - "authors": [ - { - "name": "Théo FIDRY", - "email": "theo.fidry@gmail.com" - } - ], - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "fidry/makefile": "^0.2.0", - "fidry/php-cs-fixer-config": "^1.1.2", - "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-deprecation-rules": "^2.0.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^8.5.31 || ^9.5.26", - "webmozarts/strict-phpunit": "^7.5" - }, - "autoload": { - "psr-4": { - "Fidry\\CpuCoreCounter\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Fidry\\CpuCoreCounter\\Test\\": "tests/" - } - }, - "config": { - "allow-plugins": { - "ergebnis/composer-normalize": true, - "infection/extension-installer": true, - "phpstan/extension-installer": true - }, - "sort-packages": true - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php deleted file mode 100644 index d115031..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php +++ /dev/null @@ -1,270 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter; - -use Fidry\CpuCoreCounter\Finder\CpuCoreFinder; -use Fidry\CpuCoreCounter\Finder\EnvVariableFinder; -use Fidry\CpuCoreCounter\Finder\FinderRegistry; -use InvalidArgumentException; -use function implode; -use function max; -use function sprintf; -use function sys_getloadavg; -use const PHP_EOL; - -final class CpuCoreCounter -{ - /** - * @var list - */ - private $finders; - - /** - * @var positive-int|null - */ - private $count; - - /** - * @param list|null $finders - */ - public function __construct(?array $finders = null) - { - $this->finders = $finders ?? FinderRegistry::getDefaultLogicalFinders(); - } - - /** - * @param positive-int|0 $reservedCpus Number of CPUs to reserve. This is useful when you want - * to reserve some CPUs for other processes. If the main - * process is going to be busy still, you may want to set - * this value to 1. - * @param non-zero-int|null $countLimit The maximum number of CPUs to return. If not provided, it - * may look for a limit in the environment variables, e.g. - * KUBERNETES_CPU_LIMIT. If negative, the limit will be - * the total number of cores found minus the absolute value. - * For instance if the system has 10 cores and countLimit=-2, - * then the effective limit considered will be 8. - * @param float|null $loadLimit Element of [0., 1.]. Percentage representing the - * amount of cores that should be used among the available - * resources. For instance, if set to 0.7, it will use 70% - * of the available cores, i.e. if 1 core is reserved, 11 - * cores are available and 5 are busy, it will use 70% - * of (11-1-5)=5 cores, so 3 cores. Set this parameter to null - * to skip this check. Beware that 1 does not mean "no limit", - * but 100% of the _available_ resources, i.e. with the - * previous example, it will return 5 cores. How busy is - * the system is determined by the system load average - * (see $systemLoadAverage). - * @param float|null $systemLoadAverage The system load average. If passed, it will use - * this information to limit the available cores based - * on the _available_ resources. For instance, if there - * is 10 cores but 3 are busy, then only 7 cores will - * be considered for further calculation. If set to - * `null`, it will use `sys_getloadavg()` to check the - * load of the system in the past minute. You can - * otherwise pass an arbitrary value. Should be a - * positive float. - * - * @see https://php.net/manual/en/function.sys-getloadavg.php - */ - public function getAvailableForParallelisation( - int $reservedCpus = 0, - ?int $countLimit = null, - ?float $loadLimit = null, - ?float $systemLoadAverage = 0. - ): ParallelisationResult { - self::checkCountLimit($countLimit); - self::checkLoadLimit($loadLimit); - self::checkSystemLoadAverage($systemLoadAverage); - - $totalCoreCount = $this->getCountWithFallback(1); - $availableCores = max(1, $totalCoreCount - $reservedCpus); - - // Adjust available CPUs based on current load - if (null !== $loadLimit) { - // https://github.com/phpstan/phpstan/issues/13198 - /** @var float $correctedSystemLoadAverage */ - $correctedSystemLoadAverage = null === $systemLoadAverage - ? sys_getloadavg()[0] ?? 0. - : $systemLoadAverage; - - $availableCores = max( - 1, - $loadLimit * ($availableCores - $correctedSystemLoadAverage) - ); - } - - if (null === $countLimit) { - $correctedCountLimit = self::getKubernetesLimit(); - } else { - $correctedCountLimit = $countLimit > 0 - ? $countLimit - : max(1, $totalCoreCount + $countLimit); - } - - if (null !== $correctedCountLimit && $availableCores > $correctedCountLimit) { - $availableCores = $correctedCountLimit; - } - - return new ParallelisationResult( - $reservedCpus, - $countLimit, - $loadLimit, - $systemLoadAverage, - $correctedCountLimit, - $correctedSystemLoadAverage ?? $systemLoadAverage, - $totalCoreCount, - (int) $availableCores - ); - } - - /** - * @throws NumberOfCpuCoreNotFound - * - * @return positive-int - */ - public function getCount(): int - { - // Memoize result - if (null === $this->count) { - $this->count = $this->findCount(); - } - - return $this->count; - } - - /** - * @param positive-int $fallback - * - * @return positive-int - */ - public function getCountWithFallback(int $fallback): int - { - try { - return $this->getCount(); - } catch (NumberOfCpuCoreNotFound $exception) { - return $fallback; - } - } - - /** - * This method is mostly for debugging purposes. - */ - public function trace(): string - { - $output = []; - - foreach ($this->finders as $finder) { - $output[] = sprintf( - 'Executing the finder "%s":', - $finder->toString() - ); - $output[] = $finder->diagnose(); - - $cores = $finder->find(); - - if (null !== $cores) { - $output[] = 'Result found: '.$cores; - - break; - } - - $output[] = '–––'; - } - - return implode(PHP_EOL, $output); - } - - /** - * @throws NumberOfCpuCoreNotFound - * - * @return positive-int - */ - private function findCount(): int - { - foreach ($this->finders as $finder) { - $cores = $finder->find(); - - if (null !== $cores) { - return $cores; - } - } - - throw NumberOfCpuCoreNotFound::create(); - } - - /** - * @throws NumberOfCpuCoreNotFound - * - * @return array{CpuCoreFinder, positive-int} - */ - public function getFinderAndCores(): array - { - foreach ($this->finders as $finder) { - $cores = $finder->find(); - - if (null !== $cores) { - return [$finder, $cores]; - } - } - - throw NumberOfCpuCoreNotFound::create(); - } - - /** - * @return positive-int|null - */ - public static function getKubernetesLimit(): ?int - { - $finder = new EnvVariableFinder('KUBERNETES_CPU_LIMIT'); - - return $finder->find(); - } - - private static function checkCountLimit(?int $countLimit): void - { - if (0 === $countLimit) { - throw new InvalidArgumentException( - 'The count limit must be a non zero integer. Got "0".' - ); - } - } - - private static function checkLoadLimit(?float $loadLimit): void - { - if (null === $loadLimit) { - return; - } - - if ($loadLimit < 0. || $loadLimit > 1.) { - throw new InvalidArgumentException( - sprintf( - 'The load limit must be in the range [0., 1.], got "%s".', - $loadLimit - ) - ); - } - } - - private static function checkSystemLoadAverage(?float $systemLoadAverage): void - { - if (null !== $systemLoadAverage && $systemLoadAverage < 0.) { - throw new InvalidArgumentException( - sprintf( - 'The system load average must be a positive float, got "%s".', - $systemLoadAverage - ) - ); - } - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Diagnoser.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Diagnoser.php deleted file mode 100644 index 872b55f..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Diagnoser.php +++ /dev/null @@ -1,101 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter; - -use Fidry\CpuCoreCounter\Finder\CpuCoreFinder; -use function array_map; -use function explode; -use function implode; -use function max; -use function str_repeat; -use const PHP_EOL; - -/** - * Utility to debug. - * - * @private - */ -final class Diagnoser -{ - /** - * Provides an aggregated diagnosis based on each finders diagnosis. - * - * @param list $finders - */ - public static function diagnose(array $finders): string - { - $diagnoses = array_map( - static function (CpuCoreFinder $finder): string { - return self::diagnoseFinder($finder); - }, - $finders - ); - - return implode(PHP_EOL, $diagnoses); - } - - /** - * Executes each finders. - * - * @param list $finders - */ - public static function execute(array $finders): string - { - $diagnoses = array_map( - static function (CpuCoreFinder $finder): string { - $coresCount = $finder->find(); - - return implode( - '', - [ - $finder->toString(), - ': ', - null === $coresCount ? 'NULL' : $coresCount, - ] - ); - }, - $finders - ); - - return implode(PHP_EOL, $diagnoses); - } - - private static function diagnoseFinder(CpuCoreFinder $finder): string - { - $diagnosis = $finder->diagnose(); - - $maxLineLength = max( - array_map( - 'strlen', - explode(PHP_EOL, $diagnosis) - ) - ); - - $separator = str_repeat('-', $maxLineLength); - - return implode( - '', - [ - $finder->toString().':'.PHP_EOL, - $separator.PHP_EOL, - $diagnosis.PHP_EOL, - $separator.PHP_EOL, - ] - ); - } - - private function __construct() - { - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php deleted file mode 100644 index d526ce1..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Executor; - -use function fclose; -use function function_exists; -use function is_resource; -use function proc_close; -use function proc_open; -use function stream_get_contents; - -final class ProcOpenExecutor implements ProcessExecutor -{ - public function execute(string $command): ?array - { - if (!function_exists('proc_open')) { - return null; - } - - $pipes = []; - - $process = @proc_open( - $command, - [ - ['pipe', 'rb'], - ['pipe', 'wb'], // stdout - ['pipe', 'wb'], // stderr - ], - $pipes - ); - // https://github.com/phpstan/phpstan/issues/13197 - /** @var array{resource, resource, resource} $pipes */ - if (!is_resource($process)) { - return null; - } - - fclose($pipes[0]); - - $stdout = stream_get_contents($pipes[1]); - $stderr = stream_get_contents($pipes[2]); - - proc_close($process); - - return [$stdout, $stderr]; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php deleted file mode 100644 index 287c01e..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Executor; - -interface ProcessExecutor -{ - /** - * @return array{string, string}|null STDOUT & STDERR tuple - */ - public function execute(string $command): ?array; -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php deleted file mode 100644 index 4065064..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function preg_match; - -/** - * Find the number of logical CPU cores for Windows leveraging the Get-CimInstance - * cmdlet, which is a newer version that is recommended over Get-WmiObject. - */ -final class CmiCmdletLogicalFinder extends ProcOpenBasedFinder -{ - private const CPU_CORE_COUNT_REGEX = '/NumberOfLogicalProcessors[\s\n]-+[\s\n]+(?\d+)/'; - - protected function getCommand(): string - { - return 'Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -Property NumberOfLogicalProcessors'; - } - - public function toString(): string - { - return 'CmiCmdletLogicalFinder'; - } - - protected function countCpuCores(string $process): ?int - { - if (0 === preg_match(self::CPU_CORE_COUNT_REGEX, $process, $matches)) { - return parent::countCpuCores($process); - } - - /** @phpstan-ignore offsetAccess.notFound */ - $count = $matches['count']; - - return parent::countCpuCores($count); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php deleted file mode 100644 index 4559021..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function preg_match; - -/** - * Find the number of physical CPU cores for Windows. - * - * @see https://github.com/paratestphp/paratest/blob/c163539818fd96308ca8dc60f46088461e366ed4/src/Runners/PHPUnit/Options.php#L912-L916 - */ -final class CmiCmdletPhysicalFinder extends ProcOpenBasedFinder -{ - private const CPU_CORE_COUNT_REGEX = '/NumberOfCores[\s\n]-+[\s\n]+(?\d+)/'; - - protected function getCommand(): string - { - return 'Get-CimInstance -ClassName Win32_Processor | Select-Object -Property NumberOfCores'; - } - - public function toString(): string - { - return 'CmiCmdletPhysicalFinder'; - } - - protected function countCpuCores(string $process): ?int - { - if (0 === preg_match(self::CPU_CORE_COUNT_REGEX, $process, $matches)) { - return parent::countCpuCores($process); - } - - /** @phpstan-ignore offsetAccess.notFound */ - $count = $matches['count']; - - return parent::countCpuCores($count); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php deleted file mode 100644 index edb40e8..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -interface CpuCoreFinder -{ - /** - * Provides an explanation which may offer some insight as to what the finder - * will be able to find. - * - * This is practical to have an idea of what each finder will find collect - * information for the unit tests, since integration tests are quite complicated - * as dependent on complex infrastructures. - */ - public function diagnose(): string; - - /** - * Find the number of CPU cores. If it could not find it, returns null. The - * means used to find the cores are at the implementation discretion. - * - * @return positive-int|null - */ - public function find(): ?int; - - public function toString(): string; -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php deleted file mode 100644 index 8013877..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function file_get_contents; -use function is_file; -use function sprintf; -use function substr_count; -use const PHP_EOL; - -/** - * Find the number of CPU cores looking up at the cpuinfo file which is available - * on Linux systems and Windows systems with a Linux sub-system. - * - * @see https://github.com/paratestphp/paratest/blob/c163539818fd96308ca8dc60f46088461e366ed4/src/Runners/PHPUnit/Options.php#L903-L909 - * @see https://unix.stackexchange.com/questions/146051/number-of-processors-in-proc-cpuinfo - */ -final class CpuInfoFinder implements CpuCoreFinder -{ - private const CPU_INFO_PATH = '/proc/cpuinfo'; - - public function diagnose(): string - { - if (!is_file(self::CPU_INFO_PATH)) { - return sprintf( - 'The file "%s" could not be found.', - self::CPU_INFO_PATH - ); - } - - $cpuInfo = file_get_contents(self::CPU_INFO_PATH); - - if (false === $cpuInfo) { - return sprintf( - 'Could not get the content of the file "%s".', - self::CPU_INFO_PATH - ); - } - - return sprintf( - 'Found the file "%s" with the content:%s%s%sWill return "%s".', - self::CPU_INFO_PATH, - PHP_EOL, - $cpuInfo, - PHP_EOL, - self::countCpuCores($cpuInfo) - ); - } - - /** - * @return positive-int|null - */ - public function find(): ?int - { - $cpuInfo = self::getCpuInfo(); - - return null === $cpuInfo ? null : self::countCpuCores($cpuInfo); - } - - public function toString(): string - { - return 'CpuInfoFinder'; - } - - private static function getCpuInfo(): ?string - { - if (!@is_file(self::CPU_INFO_PATH)) { - return null; - } - - $cpuInfo = @file_get_contents(self::CPU_INFO_PATH); - - return false === $cpuInfo - ? null - : $cpuInfo; - } - - /** - * @internal - * - * @return positive-int|null - */ - public static function countCpuCores(string $cpuInfo): ?int - { - $processorCount = substr_count($cpuInfo, 'processor'); - - return $processorCount > 0 ? $processorCount : null; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php deleted file mode 100644 index 8c99612..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function sprintf; - -/** - * This finder returns whatever value you gave to it. This is useful for testing - * or as a fallback to avoid to catch the NumberOfCpuCoreNotFound exception. - */ -final class DummyCpuCoreFinder implements CpuCoreFinder -{ - /** - * @var positive-int - */ - private $count; - - public function diagnose(): string - { - return sprintf( - 'Will return "%d".', - $this->count - ); - } - - /** - * @param positive-int $count - */ - public function __construct(int $count) - { - $this->count = $count; - } - - /** @phpstan-ignore return.unusedType */ - public function find(): ?int - { - return $this->count; - } - - public function toString(): string - { - return sprintf( - 'DummyCpuCoreFinder(value=%d)', - $this->count - ); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php deleted file mode 100644 index 52d0411..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function getenv; -use function preg_match; -use function sprintf; -use function var_export; - -final class EnvVariableFinder implements CpuCoreFinder -{ - /** @var string */ - private $environmentVariableName; - - public function __construct(string $environmentVariableName) - { - $this->environmentVariableName = $environmentVariableName; - } - - public function diagnose(): string - { - $value = getenv($this->environmentVariableName); - - return sprintf( - 'parse(getenv(%s)=%s)=%s', - $this->environmentVariableName, - var_export($value, true), - self::isPositiveInteger($value) ? $value : 'null' - ); - } - - public function find(): ?int - { - $value = getenv($this->environmentVariableName); - - if (is_string($value) && 1 === preg_match('/^(\d+)m$/', $value, $matches)) { - $millicores = $matches[1]; - $value = (string) floor($millicores / 1000); - } - - return self::isPositiveInteger($value) - ? (int) $value - : null; - } - - public function toString(): string - { - return sprintf( - 'getenv(%s)', - $this->environmentVariableName - ); - } - - /** - * @param string|false $value - */ - private static function isPositiveInteger($value): bool - { - return false !== $value - && 1 === preg_match('/^\d+$/', $value) - && (int) $value > 0; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/FinderRegistry.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/FinderRegistry.php deleted file mode 100644 index ca9b860..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/FinderRegistry.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -final class FinderRegistry -{ - /** - * @return list List of all the known finders with all their variants. - */ - public static function getAllVariants(): array - { - return [ - new CpuInfoFinder(), - new DummyCpuCoreFinder(1), - new HwLogicalFinder(), - new HwPhysicalFinder(), - new LscpuLogicalFinder(), - new LscpuPhysicalFinder(), - new _NProcessorFinder(), - new NProcessorFinder(), - new NProcFinder(true), - new NProcFinder(false), - new NullCpuCoreFinder(), - SkipOnOSFamilyFinder::forWindows( - new DummyCpuCoreFinder(1) - ), - OnlyOnOSFamilyFinder::forWindows( - new DummyCpuCoreFinder(1) - ), - new OnlyInPowerShellFinder(new CmiCmdletLogicalFinder()), - new OnlyInPowerShellFinder(new CmiCmdletPhysicalFinder()), - new WindowsRegistryLogicalFinder(), - new WmicPhysicalFinder(), - new WmicLogicalFinder(), - ]; - } - - /** - * @return list - */ - public static function getDefaultLogicalFinders(): array - { - return [ - OnlyOnOSFamilyFinder::forWindows( - new OnlyInPowerShellFinder( - new CmiCmdletLogicalFinder() - ) - ), - OnlyOnOSFamilyFinder::forWindows(new WindowsRegistryLogicalFinder()), - OnlyOnOSFamilyFinder::forWindows(new WmicLogicalFinder()), - new NProcFinder(), - new HwLogicalFinder(), - new _NProcessorFinder(), - new NProcessorFinder(), - new LscpuLogicalFinder(), - new CpuInfoFinder(), - ]; - } - - /** - * @return list - */ - public static function getDefaultPhysicalFinders(): array - { - return [ - OnlyOnOSFamilyFinder::forWindows( - new OnlyInPowerShellFinder( - new CmiCmdletPhysicalFinder() - ) - ), - OnlyOnOSFamilyFinder::forWindows(new WmicPhysicalFinder()), - new HwPhysicalFinder(), - new LscpuPhysicalFinder(), - ]; - } - - private function __construct() - { - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php deleted file mode 100644 index d112903..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -/** - * Find the number of logical CPU cores for Linux, BSD and OSX. - * - * @see https://github.com/paratestphp/paratest/blob/c163539818fd96308ca8dc60f46088461e366ed4/src/Runners/PHPUnit/Options.php#L903-L909 - * @see https://opensource.apple.com/source/xnu/xnu-792.2.4/libkern/libkern/sysctl.h.auto.html - */ -final class HwLogicalFinder extends ProcOpenBasedFinder -{ - protected function getCommand(): string - { - return 'sysctl -n hw.logicalcpu'; - } - - public function toString(): string - { - return 'HwLogicalFinder'; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php deleted file mode 100644 index 65ca1cf..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -/** - * Find the number of physical CPU cores for Linux, BSD and OSX. - * - * @see https://github.com/paratestphp/paratest/blob/c163539818fd96308ca8dc60f46088461e366ed4/src/Runners/PHPUnit/Options.php#L903-L909 - * @see https://opensource.apple.com/source/xnu/xnu-792.2.4/libkern/libkern/sysctl.h.auto.html - */ -final class HwPhysicalFinder extends ProcOpenBasedFinder -{ - protected function getCommand(): string - { - return 'sysctl -n hw.physicalcpu'; - } - - public function toString(): string - { - return 'HwPhysicalFinder'; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php deleted file mode 100644 index bce09eb..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function count; -use function explode; -use function is_array; -use function preg_grep; -use const PHP_EOL; - -/** - * The number of logical cores. - * - * @see https://stackoverflow.com/a/23378780/5846754 - */ -final class LscpuLogicalFinder extends ProcOpenBasedFinder -{ - public function getCommand(): string - { - return 'lscpu -p'; - } - - protected function countCpuCores(string $process): ?int - { - $lines = explode(PHP_EOL, $process); - $actualLines = preg_grep('/^\d+,/', $lines); - - if (!is_array($actualLines)) { - return null; - } - - $count = count($actualLines); - - return 0 === $count ? null : $count; - } - - public function toString(): string - { - return 'LscpuLogicalFinder'; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php deleted file mode 100644 index c89bcb9..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function count; -use function explode; -use function is_array; -use function preg_grep; -use function strtok; -use const PHP_EOL; - -/** - * The number of physical processors. - * - * @see https://stackoverflow.com/a/23378780/5846754 - */ -final class LscpuPhysicalFinder extends ProcOpenBasedFinder -{ - public function toString(): string - { - return 'LscpuPhysicalFinder'; - } - - public function getCommand(): string - { - return 'lscpu -p'; - } - - protected function countCpuCores(string $process): ?int - { - $lines = explode(PHP_EOL, $process); - /** @var string[]|false $actualLines */ - $actualLines = preg_grep('/^\d+/', $lines); - - if (!is_array($actualLines)) { - return null; - } - - $cores = []; - foreach ($actualLines as $line) { - strtok($line, ','); - $core = strtok(','); - - if (false === $core) { - continue; - } - - $cores[$core] = true; - } - unset($cores['-']); - - $count = count($cores); - - return 0 === $count ? null : $count; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.php deleted file mode 100644 index c0f7a6f..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use Fidry\CpuCoreCounter\Executor\ProcessExecutor; -use function sprintf; - -/** - * The number of (logical) cores. - * - * @see https://github.com/infection/infection/blob/fbd8c44/src/Resource/Processor/CpuCoresCountProvider.php#L69-L82 - * @see https://unix.stackexchange.com/questions/146051/number-of-processors-in-proc-cpuinfo - */ -final class NProcFinder extends ProcOpenBasedFinder -{ - /** - * @var bool - */ - private $all; - - /** - * @param bool $all If disabled will give the number of cores available for the current process - * only. This is disabled by default as it is known to be "buggy" on virtual - * environments as the virtualization tool, e.g. VMWare, might over-commit - * resources by default. - */ - public function __construct( - bool $all = false, - ?ProcessExecutor $executor = null - ) { - parent::__construct($executor); - - $this->all = $all; - } - - public function toString(): string - { - return sprintf( - 'NProcFinder(all=%s)', - $this->all ? 'true' : 'false' - ); - } - - protected function getCommand(): string - { - return 'nproc'.($this->all ? ' --all' : ''); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php deleted file mode 100644 index 9143e31..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -/** - * Find the number of logical CPU cores for FreeSBD, Solaris and the likes. - * - * @see https://twitter.com/freebsdfrau/status/1052016199452700678?s=20&t=M2pHkRqmmna-UF68lfL2hw - */ -final class NProcessorFinder extends ProcOpenBasedFinder -{ - protected function getCommand(): string - { - return 'getconf NPROCESSORS_ONLN'; - } - - public function toString(): string - { - return 'NProcessorFinder'; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php deleted file mode 100644 index 50af2d4..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -/** - * This finder returns whatever value you gave to it. This is useful for testing. - */ -final class NullCpuCoreFinder implements CpuCoreFinder -{ - public function diagnose(): string - { - return 'Will return "null".'; - } - - public function find(): ?int - { - return null; - } - - public function toString(): string - { - return 'NullCpuCoreFinder'; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php deleted file mode 100644 index d36d030..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function getenv; -use function sprintf; - -final class OnlyInPowerShellFinder implements CpuCoreFinder -{ - /** - * @var CpuCoreFinder - */ - private $decoratedFinder; - - public function __construct(CpuCoreFinder $decoratedFinder) - { - $this->decoratedFinder = $decoratedFinder; - } - - public function diagnose(): string - { - $powerShellModulePath = getenv('PSModulePath'); - - return $this->skip() - ? sprintf( - 'Skipped; no power shell module path detected ("%s").', - $powerShellModulePath - ) - : $this->decoratedFinder->diagnose(); - } - - public function find(): ?int - { - return $this->skip() - ? null - : $this->decoratedFinder->find(); - } - - public function toString(): string - { - return sprintf( - 'OnlyInPowerShellFinder(%s)', - $this->decoratedFinder->toString() - ); - } - - private function skip(): bool - { - return false === getenv('PSModulePath'); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php deleted file mode 100644 index 3147808..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function implode; -use function sprintf; -use const PHP_OS_FAMILY; - -final class OnlyOnOSFamilyFinder implements CpuCoreFinder -{ - /** - * @var list - */ - private $skippedOSFamilies; - - /** - * @var CpuCoreFinder - */ - private $decoratedFinder; - - /** - * @param string|list $skippedOSFamilyOrFamilies - */ - public function __construct( - $skippedOSFamilyOrFamilies, - CpuCoreFinder $decoratedFinder - ) { - $this->skippedOSFamilies = (array) $skippedOSFamilyOrFamilies; - $this->decoratedFinder = $decoratedFinder; - } - - public static function forWindows(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'Windows', - $decoratedFinder - ); - } - - public static function forBSD(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'BSD', - $decoratedFinder - ); - } - - public static function forDarwin(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'Darwin', - $decoratedFinder - ); - } - - public static function forSolaris(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'Solaris', - $decoratedFinder - ); - } - - public static function forLinux(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'Linux', - $decoratedFinder - ); - } - - public function diagnose(): string - { - return $this->skip() - ? sprintf( - 'Skipped platform detected ("%s").', - PHP_OS_FAMILY - ) - : $this->decoratedFinder->diagnose(); - } - - public function find(): ?int - { - return $this->skip() - ? null - : $this->decoratedFinder->find(); - } - - public function toString(): string - { - return sprintf( - 'OnlyOnOSFamilyFinder(only=(%s),%s)', - implode(',', $this->skippedOSFamilies), - $this->decoratedFinder->toString() - ); - } - - private function skip(): bool - { - return !in_array(PHP_OS_FAMILY, $this->skippedOSFamilies, true); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php deleted file mode 100644 index 4d51f89..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php +++ /dev/null @@ -1,107 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use Fidry\CpuCoreCounter\Executor\ProcessExecutor; -use Fidry\CpuCoreCounter\Executor\ProcOpenExecutor; -use function filter_var; -use function function_exists; -use function is_int; -use function sprintf; -use function trim; -use const FILTER_VALIDATE_INT; -use const PHP_EOL; - -abstract class ProcOpenBasedFinder implements CpuCoreFinder -{ - /** - * @var ProcessExecutor - */ - private $executor; - - public function __construct(?ProcessExecutor $executor = null) - { - $this->executor = $executor ?? new ProcOpenExecutor(); - } - - public function diagnose(): string - { - if (!function_exists('proc_open')) { - return 'The function "proc_open" is not available.'; - } - - $command = $this->getCommand(); - $output = $this->executor->execute($command); - - if (null === $output) { - return sprintf( - 'Failed to execute the command "%s".', - $command - ); - } - - [$stdout, $stderr] = $output; - $failed = '' !== trim($stderr); - - return $failed - ? sprintf( - 'Executed the command "%s" which wrote the following output to the STDERR:%s%s%sWill return "null".', - $command, - PHP_EOL, - $stderr, - PHP_EOL - ) - : sprintf( - 'Executed the command "%s" and got the following (STDOUT) output:%s%s%sWill return "%s".', - $command, - PHP_EOL, - $stdout, - PHP_EOL, - $this->countCpuCores($stdout) ?? 'null' - ); - } - - /** - * @return positive-int|null - */ - public function find(): ?int - { - $output = $this->executor->execute($this->getCommand()); - - if (null === $output) { - return null; - } - - [$stdout, $stderr] = $output; - $failed = '' !== trim($stderr); - - return $failed - ? null - : $this->countCpuCores($stdout); - } - - /** - * @internal - * - * @return positive-int|null - */ - protected function countCpuCores(string $process): ?int - { - $cpuCount = filter_var($process, FILTER_VALIDATE_INT); - - return is_int($cpuCount) && $cpuCount > 0 ? $cpuCount : null; - } - - abstract protected function getCommand(): string; -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php deleted file mode 100644 index 66a5016..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function implode; -use function in_array; -use function sprintf; - -final class SkipOnOSFamilyFinder implements CpuCoreFinder -{ - /** - * @var list - */ - private $skippedOSFamilies; - - /** - * @var CpuCoreFinder - */ - private $decoratedFinder; - - /** - * @param string|list $skippedOSFamilyOrFamilies - */ - public function __construct( - $skippedOSFamilyOrFamilies, - CpuCoreFinder $decoratedFinder - ) { - $this->skippedOSFamilies = (array) $skippedOSFamilyOrFamilies; - $this->decoratedFinder = $decoratedFinder; - } - - public static function forWindows(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'Windows', - $decoratedFinder - ); - } - - public static function forBSD(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'BSD', - $decoratedFinder - ); - } - - public static function forDarwin(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'Darwin', - $decoratedFinder - ); - } - - public static function forSolaris(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'Solaris', - $decoratedFinder - ); - } - - public static function forLinux(CpuCoreFinder $decoratedFinder): self - { - return new self( - 'Linux', - $decoratedFinder - ); - } - - public function diagnose(): string - { - return $this->skip() - ? sprintf( - 'Skipped platform detected ("%s").', - PHP_OS_FAMILY - ) - : $this->decoratedFinder->diagnose(); - } - - public function find(): ?int - { - return $this->skip() - ? null - : $this->decoratedFinder->find(); - } - - public function toString(): string - { - return sprintf( - 'SkipOnOSFamilyFinder(skip=(%s),%s)', - implode(',', $this->skippedOSFamilies), - $this->decoratedFinder->toString() - ); - } - - private function skip(): bool - { - return in_array(PHP_OS_FAMILY, $this->skippedOSFamilies, true); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php deleted file mode 100644 index b223652..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function array_filter; -use function count; -use function explode; -use const PHP_EOL; - -/** - * Find the number of logical CPU cores for Windows. - * - * @see https://knowledge.informatica.com/s/article/151521 - */ -final class WindowsRegistryLogicalFinder extends ProcOpenBasedFinder -{ - protected function getCommand(): string - { - return 'reg query HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor'; - } - - public function toString(): string - { - return 'WindowsRegistryLogicalFinder'; - } - - protected function countCpuCores(string $process): ?int - { - $count = count( - array_filter( - explode(PHP_EOL, $process), - static function (string $line): bool { - return '' !== trim($line); - } - ) - ); - - return $count > 0 ? $count : null; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php deleted file mode 100644 index 0beb21e..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function preg_match; - -/** - * Find the number of logical CPU cores for Windows. - * - * @see https://github.com/paratestphp/paratest/blob/c163539818fd96308ca8dc60f46088461e366ed4/src/Runners/PHPUnit/Options.php#L912-L916 - */ -final class WmicLogicalFinder extends ProcOpenBasedFinder -{ - private const CPU_CORE_COUNT_REGEX = '/NumberOfLogicalProcessors[\s\n]+(?\d+)/'; - - protected function getCommand(): string - { - return 'wmic cpu get NumberOfLogicalProcessors'; - } - - public function toString(): string - { - return 'WmicLogicalFinder'; - } - - protected function countCpuCores(string $process): ?int - { - if (0 === preg_match(self::CPU_CORE_COUNT_REGEX, $process, $matches)) { - return parent::countCpuCores($process); - } - - /** @phpstan-ignore offsetAccess.notFound */ - $count = $matches['count']; - - return parent::countCpuCores($count); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php deleted file mode 100644 index 04abdc5..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -use function preg_match; - -/** - * Find the number of physical CPU cores for Windows. - * - * @see https://github.com/paratestphp/paratest/blob/c163539818fd96308ca8dc60f46088461e366ed4/src/Runners/PHPUnit/Options.php#L912-L916 - */ -final class WmicPhysicalFinder extends ProcOpenBasedFinder -{ - private const CPU_CORE_COUNT_REGEX = '/NumberOfCores[\s\n]+(?\d+)/'; - - protected function getCommand(): string - { - return 'wmic cpu get NumberOfCores'; - } - - public function toString(): string - { - return 'WmicPhysicalFinder'; - } - - protected function countCpuCores(string $process): ?int - { - if (0 === preg_match(self::CPU_CORE_COUNT_REGEX, $process, $matches)) { - return parent::countCpuCores($process); - } - - /** @phpstan-ignore offsetAccess.notFound */ - $count = $matches['count']; - - return parent::countCpuCores($count); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php deleted file mode 100644 index 23f452e..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter\Finder; - -/** - * Find the number of logical CPU cores for Linux and the likes. - * - * @see https://twitter.com/freebsdfrau/status/1052016199452700678?s=20&t=M2pHkRqmmna-UF68lfL2hw - */ -final class _NProcessorFinder extends ProcOpenBasedFinder -{ - protected function getCommand(): string - { - return 'getconf _NPROCESSORS_ONLN'; - } - - public function toString(): string - { - return '_NProcessorFinder'; - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php deleted file mode 100644 index e54f893..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter; - -use RuntimeException; - -final class NumberOfCpuCoreNotFound extends RuntimeException -{ - public static function create(): self - { - return new self( - 'Could not find the number of CPU cores available.' - ); - } -} diff --git a/v3_ci4/vendor/fidry/cpu-core-counter/src/ParallelisationResult.php b/v3_ci4/vendor/fidry/cpu-core-counter/src/ParallelisationResult.php deleted file mode 100644 index 1f29434..0000000 --- a/v3_ci4/vendor/fidry/cpu-core-counter/src/ParallelisationResult.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Fidry\CpuCoreCounter; - -/** - * @readonly - */ -final class ParallelisationResult -{ - /** - * @var positive-int|0 - */ - public $passedReservedCpus; - - /** - * @var non-zero-int|null - */ - public $passedCountLimit; - - /** - * @var float|null - */ - public $passedLoadLimit; - - /** - * @var float|null - */ - public $passedSystemLoadAverage; - - /** - * @var non-zero-int|null - */ - public $correctedCountLimit; - - /** - * @var float|null - */ - public $correctedSystemLoadAverage; - - /** - * @var positive-int - */ - public $totalCoresCount; - - /** - * @var positive-int - */ - public $availableCpus; - - /** - * @param positive-int|0 $passedReservedCpus - * @param non-zero-int|null $passedCountLimit - * @param non-zero-int|null $correctedCountLimit - * @param positive-int $totalCoresCount - * @param positive-int $availableCpus - */ - public function __construct( - int $passedReservedCpus, - ?int $passedCountLimit, - ?float $passedLoadLimit, - ?float $passedSystemLoadAverage, - ?int $correctedCountLimit, - ?float $correctedSystemLoadAverage, - int $totalCoresCount, - int $availableCpus - ) { - $this->passedReservedCpus = $passedReservedCpus; - $this->passedCountLimit = $passedCountLimit; - $this->passedLoadLimit = $passedLoadLimit; - $this->passedSystemLoadAverage = $passedSystemLoadAverage; - $this->correctedCountLimit = $correctedCountLimit; - $this->correctedSystemLoadAverage = $correctedSystemLoadAverage; - $this->totalCoresCount = $totalCoresCount; - $this->availableCpus = $availableCpus; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/LICENSE b/v3_ci4/vendor/friendsofphp/php-cs-fixer/LICENSE deleted file mode 100644 index 871def0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012+ Fabien Potencier, Dariusz Rumiński - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/README.md b/v3_ci4/vendor/friendsofphp/php-cs-fixer/README.md deleted file mode 100644 index c5a5df8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/README.md +++ /dev/null @@ -1,97 +0,0 @@ -

- - PHP CS Fixer logo - -

- -# PHP Coding Standards Fixer - -The PHP Coding Standards Fixer (PHP CS Fixer) fixes your code to follow the standards. - -If you are already using a linter to identify coding standards problems in your -code, you know that fixing them by hand is tedious, especially on large -projects. This tool not only detects them, but also fixes them for you. - -PHP CS Fixer has built-in rule sets, whether you want to follow PHP coding standards as defined by [PHP-FIG's PER Coding Style](https://www.php-fig.org/per/coding-style/) - [`@PER-CS`](./doc/ruleSets/PER-CS.rst), -a wide community like the [Symfony](https://symfony.com/doc/current/contributing/code/standards.html) - [`@Symfony`](./doc/ruleSets/Symfony.rst), -or our opinionated one - [@PhpCsFixer](./doc/ruleSets/PhpCsFixer.rst). -You can also define your (team's) style through the [configuration file](./doc/config.rst). - -PHP CS Fixer can not only unify the style of your code, but also help to modernise your codebase towards -newer PHP (e.g. [`@autoPHPMigration`](./doc/ruleSets/AutoPHPMigration.rst) and [`@autoPHPMigration:risky`](./doc/ruleSets/AutoPHPMigrationRisky.rst)) and newer PHPUnit (e.g. [`@autoPHPUnitMigration:risky`](./doc/ruleSets/AutoPHPUnitMigrationRisky.rst)). - -There are also [`@auto`](./doc/ruleSets/Auto.rst) and [`@auto:risky`](./doc/ruleSets/AutoRisky.rst) that aim to provide good base rules. - -## Supported PHP Versions - -* PHP 7.4 - PHP 8.5 - -> [!NOTE] -> Each new PHP version requires a huge effort to support the new syntax. -> That's why the latest PHP version might not be supported yet. If you need it, -> please consider supporting the project in any convenient way, for example, -> with code contributions or reviewing existing PRs. To run PHP CS Fixer on yet -> unsupported versions "at your own risk" - use `--allow-unsupported-php-version=yes` option. - -## Documentation - -### Installation - -The recommended way to install PHP CS Fixer is to use [Composer](https://getcomposer.org/download/): - -```sh -composer require --dev friendsofphp/php-cs-fixer -## or when facing conflicts in dependencies: -composer require --dev php-cs-fixer/shim -``` - -For more details and other installation methods (also with Docker or behind CI), see -[installation instructions](./doc/installation.rst). - -### Usage - -Assuming you installed PHP CS Fixer as instructed above, you can -initialise base config for your project by using following command: - -```sh -./vendor/bin/php-cs-fixer init -``` - -To automatically fix your project, or only check against the need of changes, run: - -```sh -./vendor/bin/php-cs-fixer fix -./vendor/bin/php-cs-fixer check -``` - -See [usage](./doc/usage.rst), list of [built-in rules](./doc/rules/index.rst), list of [rule sets](./doc/ruleSets/index.rst) -and [configuration file](./doc/config.rst) documentation for more details. - -If you need to apply code styles that are not built-in into the tool, you can -[create custom rules](./doc/custom_rules.rst). - -## Editor Integration - -Native support exists for: - -* [PhpStorm](https://www.jetbrains.com/help/phpstorm/using-php-cs-fixer.html) - -Community plugins exist for: - -* [NetBeans](https://plugins.netbeans.apache.org/catalogue/?id=36) -* [Sublime Text](https://github.com/benmatselby/sublime-phpcs) -* [Vim](https://github.com/stephpy/vim-php-cs-fixer) -* [VS Code](https://github.com/junstyle/vscode-php-cs-fixer) - -## Community - -The PHP CS Fixer is maintained on GitHub at . -Contributions, bug reports and ideas about new features are welcome there. - -You can reach us in the [GitHub Discussions](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/discussions/) regarding the -project, configuration, possible improvements, ideas and questions. - -## Contribute - -The tool comes with quite a few built-in fixers, but everyone is more than -welcome to [contribute](./CONTRIBUTING.md) more of them. diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/composer.json b/v3_ci4/vendor/friendsofphp/php-cs-fixer/composer.json deleted file mode 100644 index ec2e7a2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/composer.json +++ /dev/null @@ -1,220 +0,0 @@ -{ - "name": "friendsofphp/php-cs-fixer", - "description": "A tool to automatically fix PHP code style", - "license": "MIT", - "type": "application", - "keywords": [ - "fixer", - "standards", - "static analysis", - "static code analysis" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" - } - ], - "require": { - "php": "^7.4 || ^8.0", - "ext-filter": "*", - "ext-hash": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "clue/ndjson-react": "^1.3", - "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.5", - "ergebnis/agent-detector": "^1.2", - "fidry/cpu-core-counter": "^1.3", - "react/child-process": "^0.6.6", - "react/event-loop": "^1.5", - "react/socket": "^1.16", - "react/stream": "^1.4", - "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0 || ^8.0 || ^9.0", - "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", - "symfony/polyfill-mbstring": "^1.37", - "symfony/polyfill-php80": "^1.37", - "symfony/polyfill-php81": "^1.37", - "symfony/polyfill-php84": "^1.37", - "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2 || ^8.0", - "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" - }, - "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.11.0", - "infection/infection": "^0.32.7", - "justinrainbow/json-schema": "^6.10.0", - "keradus/cli-executor": "^2.3", - "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.9.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.8", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.8", - "phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.55", - "symfony/polyfill-php85": "^1.38", - "symfony/var-dumper": "^5.4.48 || ^6.4.36 || ^7.4.8 || ^8.1.0", - "symfony/yaml": "^5.4.53 || ^6.4.41 || ^7.4.13 || ^8.1.0" - }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." - }, - "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - }, - "exclude-from-classmap": [ - "src/**/Internal/" - ] - }, - "autoload-dev": { - "psr-4": { - "PhpCsFixer\\PHPStan\\": "dev-tools/phpstan/src/", - "PhpCsFixer\\Tests\\": "tests/" - }, - "exclude-from-classmap": [ - "tests/Fixtures/" - ] - }, - "bin": [ - "php-cs-fixer" - ], - "config": { - "allow-plugins": { - "ergebnis/composer-normalize": true, - "infection/extension-installer": false - }, - "prefer-stable": true, - "sort-packages": true - }, - "scripts": { - "post-autoload-dump": [ - "@install-tools" - ], - "analyse-deps": "@php dev-tools/vendor/bin/composer-dependency-analyser", - "auto-review": [ - "Composer\\Config::disableProcessTimeout", - "@php ./vendor/bin/paraunit run --testsuite auto-review" - ], - "cs:check": "@php php-cs-fixer check --verbose --diff", - "cs:fix": "@php php-cs-fixer fix", - "cs:fix:parallel": [ - "echo '⚠️ This script is deprecated! Utilise built-in parallelisation instead.';", - "@cs:fix" - ], - "docs": "@php dev-tools/php-cs-fixer-internal docs", - "infection": "@test:mutation", - "install-tools": [ - "./dev-tools/install.sh", - "@composer install --working-dir=dev-tools" - ], - "internal": "@php dev-tools/php-cs-fixer-internal", - "mess-detector": "@php dev-tools/vendor/bin/phpmd . ansi dev-tools/mess-detector/phpmd.xml --exclude vendor/*,dev-tools/vendor/*,dev-tools/phpstan/*,tests/Fixtures/*", - "normalize": [ - "@composer normalize --working-dir=dev-tools --dry-run ../composer.json", - "@composer normalize --working-dir=dev-tools --dry-run composer.json" - ], - "normalize:fix": [ - "@composer normalize --working-dir=dev-tools ../composer.json", - "@composer normalize --working-dir=dev-tools composer.json" - ], - "php-compatibility": "@php dev-tools/vendor/bin/phpcs -p --standard=dev-tools/php-compatibility/phpcs-php-compatibility.xml", - "phpstan": "@php -d memory_limit=512M dev-tools/vendor/bin/phpstan analyse", - "phpstan:baseline": [ - "@php -d memory_limit=512M dev-tools/vendor/bin/phpstan analyse --generate-baseline=./dev-tools/phpstan/baseline/_loader.php", - "@php dev-tools/vendor/bin/split-phpstan-baseline ./dev-tools/phpstan/baseline/_loader.php --no-error-count" - ], - "qa": "@quality-assurance", - "quality-assurance": [ - "Composer\\Config::disableProcessTimeout", - "@install-tools --quiet", - "@self-check", - "@static-analysis", - "@test" - ], - "sa": "@static-analysis", - "self-check": [ - "./dev-tools/check_file_permissions.sh", - "./dev-tools/check_trailing_spaces.sh", - "./dev-tools/check_shell_scripts.sh", - "./dev-tools/check_no_american_english.sh", - "@composer dump-autoload --dry-run --optimize --strict-psr", - "@normalize", - "@analyse-deps", - "@auto-review" - ], - "static-analysis": [ - "@cs:check", - "@phpstan", - "@php-compatibility", - "@mess-detector" - ], - "test": "@test:all", - "test:all": [ - "@test:unit", - "@test:short-open-tag", - "@test:integration" - ], - "test:coverage": [ - "Composer\\Config::disableProcessTimeout", - "@composer show facile-it/paraunit ^2 && (paraunit coverage --testsuite unit --pass-through=--exclude-group=covers-nothing) || (paraunit coverage --testsuite unit --exclude-group covers-nothing)" - ], - "test:integration": [ - "Composer\\Config::disableProcessTimeout", - "@php ./vendor/bin/paraunit run --testsuite integration" - ], - "test:mutation": [ - "Composer\\Config::disableProcessTimeout", - "infection --threads=max --only-covering-test-cases --min-covered-msi=80" - ], - "test:short-open-tag": [ - "Composer\\Config::disableProcessTimeout", - "@php -d short_open_tag=1 ./vendor/bin/phpunit --do-not-cache-result --testsuite short-open-tag" - ], - "test:smoke": [ - "Composer\\Config::disableProcessTimeout", - "@php ./vendor/bin/paraunit run --testsuite smoke" - ], - "test:unit": [ - "Composer\\Config::disableProcessTimeout", - "@php ./vendor/bin/paraunit run --testsuite unit" - ] - }, - "scripts-descriptions": { - "analyse-deps": "Analyse Composer dependencies", - "auto-review": "Execute Auto-review", - "cs:check": "Check coding standards", - "cs:fix": "Fix coding standards", - "cs:fix:parallel": "⚠️DEPRECATED! Use cs:fix with proper parallel config", - "docs": "Regenerate docs", - "infection": "Alias for 'test:mutation'", - "install-tools": "Install DEV tools", - "internal": "Run internal commands", - "mess-detector": "Analyse code with Mess Detector", - "normalize": "Check normalization for composer.json files", - "normalize:fix": "Run normalization for composer.json files", - "php-compatibility": "Check compatibility with all supported PHP versions", - "phpstan": "Run PHPStan analysis", - "phpstan:baseline": "Dump PHPStan baseline file - use only for updating, do not add new errors when possible", - "post-autoload-dump": "Run additional tasks after installing/updating main dependencies", - "qa": "Alias for 'quality-assurance'", - "quality-assurance": "Run QA suite", - "sa": "Alias for 'static-analysis'", - "self-check": "Run set of self-checks ensuring repository's validity", - "static-analysis": "Run static analysis", - "test": "Alias for 'test:all'", - "test:all": "Run Unit and Integration tests (but *NOT* Smoke tests)", - "test:coverage": "Run tests that provide code coverage", - "test:integration": "Run Integration tests", - "test:mutation": "Run mutation tests", - "test:short-open-tag": "Run tests with \"short_open_tag\" enabled", - "test:smoke": "Run Smoke tests", - "test:unit": "Run Unit tests" - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/php-cs-fixer b/v3_ci4/vendor/friendsofphp/php-cs-fixer/php-cs-fixer deleted file mode 100644 index 89db199..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/php-cs-fixer +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env php - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use Composer\XdebugHandler\XdebugHandler; -use PhpCsFixer\Console\Application; - -error_reporting(\E_ALL & ~\E_DEPRECATED & ~\E_USER_DEPRECATED); - -set_error_handler(static function (int $severity, string $message, string $file, int $line): bool { - if (0 !== ($severity & error_reporting())) { - throw new \ErrorException($message, 0, $severity, $file, $line); - } - - return true; -}); - -// check environment requirements -(static function (): void { - if (\PHP_VERSION_ID === (int) '80000') { // TODO use 8_00_00 once only PHP 7.4+ is supported by this entry file - fwrite(\STDERR, "PHP CS Fixer is not able run on PHP 8.0.0 due to bug in PHP tokenizer (https://bugs.php.net/bug.php?id=80462).\n"); - fwrite(\STDERR, "Update PHP version to unblock execution.\n"); - - exit(1); - } - - // PHPStan knows our min PHP version, but we want to check the min version here - // because entrypoint file allows wider PHP range than project itself - // @phpstan-ignore smaller.alwaysFalse - if (\PHP_VERSION_ID < (int) '70400') { - fwrite(\STDERR, "PHP needs to be a minimum version of PHP 7.4.0.\n"); - fwrite(\STDERR, 'Current PHP version: '.\PHP_VERSION.".\n"); - - exit(1); - } - - // @TODO 4.0 cleanup - if (false !== getenv('PHP_CS_FIXER_IGNORE_ENV')) { - fwrite(\STDERR, "Setting PHP_CS_FIXER_IGNORE_ENV environment variable is deprecated and will be removed in 4.0, use unsupportedPhpVersionAllowed config instead.\n"); - } - - foreach (['json', 'tokenizer'] as $extension) { - if (!\extension_loaded($extension)) { - fwrite(\STDERR, \sprintf("PHP extension ext-%s is missing from your system. Install or enable it.\n", $extension)); - - if (filter_var(getenv('PHP_CS_FIXER_IGNORE_ENV'), \FILTER_VALIDATE_BOOLEAN)) { - fwrite(\STDERR, "Ignoring environment requirements because `PHP_CS_FIXER_IGNORE_ENV` is set. Execution may be unstable.\n"); - } else { - exit(1); - } - } - } -})(); - -// load dependencies -(static function (): void { - $require = true; - if (class_exists(\Phar::class)) { - // Maybe this file is used as phar-stub? Let's try! - try { - \Phar::mapPhar('php-cs-fixer.phar'); - - /** @phpstan-ignore requireOnce.fileNotFound */ - require_once 'phar://php-cs-fixer.phar/vendor/autoload.php'; - - $require = false; - } catch (\PharException $e) { - } - } - - if ($require) { - // OK, it's not, let give Composer autoloader a try! - $possibleFiles = [__DIR__.'/../../autoload.php', __DIR__.'/../autoload.php', __DIR__.'/vendor/autoload.php']; - $file = null; - foreach ($possibleFiles as $possibleFile) { - if (file_exists($possibleFile)) { - $file = $possibleFile; - - break; - } - } - - if (null === $file) { - throw new \RuntimeException('Unable to locate autoload.php file.'); - } - - require_once $file; - } -})(); - -// Restart if xdebug is loaded, unless the environment variable PHP_CS_FIXER_ALLOW_XDEBUG is set. -$xdebug = new XdebugHandler('PHP_CS_FIXER'); -$xdebug->check(); -unset($xdebug); - -$application = new Application(); -$application->run(); - -__HALT_COMPILER(); diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/resources/.php-cs-fixer.dist.php.template b/v3_ci4/vendor/friendsofphp/php-cs-fixer/resources/.php-cs-fixer.dist.php.template deleted file mode 100644 index bdd3711..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/resources/.php-cs-fixer.dist.php.template +++ /dev/null @@ -1,26 +0,0 @@ -setRiskyAllowed(/*{{ IS_RISKY_ALLOWED }}*/) - ->setRules(/*{{ RULES }}*/) - // 💡 by default, Fixer looks for `*.php` files excluding `./vendor/` - here, you can groom this config - ->setFinder( - (new Finder()) - // 💡 root folder to check - ->in(__DIR__) - // 💡 additional files, eg bin entry file - // ->append([__DIR__.'/bin-entry-file']) - // 💡 folders to exclude, if any - // ->exclude([/* ... */]) - // 💡 path patterns to exclude, if any - // ->notPath([/* ... */]) - // 💡 extra configs - // ->ignoreDotFiles(false) // true by default in v3, false in v4 or future mode - // ->ignoreVCS(true) // true by default - ) -; diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php deleted file mode 100644 index c96ff54..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php +++ /dev/null @@ -1,228 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Doctrine\Annotation\Tokens as DoctrineAnnotationTokens; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @internal - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * ignored_tags?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * ignored_tags: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractDoctrineAnnotationFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - private const CLASS_MODIFIERS = [\T_ABSTRACT, \T_FINAL, FCT::T_READONLY]; - private const MODIFIER_KINDS = [\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_FINAL, \T_ABSTRACT, \T_NS_SEPARATOR, \T_STRING, CT::T_NULLABLE_TYPE, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET]; - - /** - * @var array - */ - private array $classyElements; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - // fetch indices one time, this is safe as we never add or remove a token during fixing - $analyzer = new TokensAnalyzer($tokens); - $this->classyElements = $analyzer->getClassyElements(); - - foreach ($tokens->findGivenKind(\T_DOC_COMMENT) as $index => $docCommentToken) { - if (!$this->nextElementAcceptsDoctrineAnnotations($tokens, $index)) { - continue; - } - - $doctrineAnnotationTokens = DoctrineAnnotationTokens::createFromDocComment( - $docCommentToken, - $this->configuration['ignored_tags'], // @phpstan-ignore-line - ); - - $this->fixAnnotations($doctrineAnnotationTokens); - $tokens[$index] = new Token([\T_DOC_COMMENT, $doctrineAnnotationTokens->getCode()]); - } - } - - /** - * Fixes Doctrine annotations from the given PHPDoc style comment. - */ - abstract protected function fixAnnotations(DoctrineAnnotationTokens $doctrineAnnotationTokens): void; - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('ignored_tags', 'List of tags that must not be treated as Doctrine Annotations.')) - ->setAllowedTypes(['string[]']) - ->setDefault([ - // PHPDocumentor 1 - 'abstract', - 'access', - 'code', - 'deprec', - 'encode', - 'exception', - 'final', - 'ingroup', - 'inheritdoc', - 'inheritDoc', - 'magic', - 'name', - 'toc', - 'tutorial', - 'private', - 'static', - 'staticvar', - 'staticVar', - 'throw', - - // PHPDocumentor 2 - 'api', - 'author', - 'category', - 'copyright', - 'deprecated', - 'example', - 'filesource', - 'global', - 'ignore', - 'internal', - 'license', - 'link', - 'method', - 'package', - 'param', - 'property', - 'property-read', - 'property-write', - 'return', - 'see', - 'since', - 'source', - 'subpackage', - 'throws', - 'todo', - 'TODO', - 'usedBy', - 'uses', - 'var', - 'version', - - // PHPUnit - 'after', - 'afterClass', - 'backupGlobals', - 'backupStaticAttributes', - 'before', - 'beforeClass', - 'codeCoverageIgnore', - 'codeCoverageIgnoreStart', - 'codeCoverageIgnoreEnd', - 'covers', - 'coversDefaultClass', - 'coversNothing', - 'dataProvider', - 'depends', - 'expectedException', - 'expectedExceptionCode', - 'expectedExceptionMessage', - 'expectedExceptionMessageRegExp', - 'group', - 'large', - 'medium', - 'preserveGlobalState', - 'requires', - 'runTestsInSeparateProcesses', - 'runInSeparateProcess', - 'small', - 'test', - 'testdox', - 'ticket', - 'uses', - - // PHPCheckStyle - 'SuppressWarnings', - - // PHPStorm - 'noinspection', - - // PEAR - 'package_version', - - // PlantUML - 'enduml', - 'startuml', - - // Psalm - 'psalm', - - // PHPStan - 'phpstan', - 'template', - - // other - 'fix', - 'FIXME', - 'fixme', - 'override', - ]) - ->getOption(), - ]); - } - - private function nextElementAcceptsDoctrineAnnotations(Tokens $tokens, int $index): bool - { - do { - $index = $tokens->getNextMeaningfulToken($index); - - if (null === $index) { - return false; - } - } while ($tokens[$index]->isGivenKind(self::CLASS_MODIFIERS)); - - if ($tokens[$index]->isGivenKind(\T_CLASS)) { - return true; - } - - while ($tokens[$index]->isGivenKind(self::MODIFIER_KINDS)) { - $index = $tokens->getNextMeaningfulToken($index); - } - - if (!isset($this->classyElements[$index])) { - return false; - } - - return $tokens[$this->classyElements[$index]['classIndex']]->isGivenKind(\T_CLASS); // interface, enums and traits cannot have doctrine annotations - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractFixer.php deleted file mode 100644 index 0a40386..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractFixer.php +++ /dev/null @@ -1,110 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\ConfigurationException\RequiredFixerConfigurationException; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractFixer implements FixerInterface -{ - protected WhitespacesFixerConfig $whitespacesConfig; - - /** - * @readonly - */ - private string $name; - - public function __construct() - { - $nameParts = explode('\\', static::class); - $name = substr(end($nameParts), 0, -\strlen('Fixer')); - $this->name = Utils::camelCaseToUnderscore($name); - - if ($this instanceof ConfigurableFixerInterface) { - try { - $this->configure([]); - } catch (RequiredFixerConfigurationException $e) { - // ignore - } - } - - if ($this instanceof WhitespacesAwareFixerInterface) { - $this->whitespacesConfig = $this->getDefaultWhitespacesFixerConfig(); - } - } - - final public function fix(\SplFileInfo $file, Tokens $tokens): void - { - if ($this instanceof ConfigurableFixerInterface && property_exists($this, 'configuration') && null === $this->configuration) { - throw new RequiredFixerConfigurationException($this->getName(), 'Configuration is required.'); - } - - if (0 < $tokens->count() && $this->isCandidate($tokens) && $this->supports($file)) { - $this->applyFix($file, $tokens); - } - } - - public function isRisky(): bool - { - return false; - } - - public function getName(): string - { - return $this->name; - } - - public function getPriority(): int - { - return 0; - } - - public function supports(\SplFileInfo $file): bool - { - return true; - } - - public function setWhitespacesConfig(WhitespacesFixerConfig $config): void - { - if (!$this instanceof WhitespacesAwareFixerInterface) { - throw new \LogicException('Cannot run method for class not implementing "PhpCsFixer\Fixer\WhitespacesAwareFixerInterface".'); - } - - $this->whitespacesConfig = $config; - } - - abstract protected function applyFix(\SplFileInfo $file, Tokens $tokens): void; - - private function getDefaultWhitespacesFixerConfig(): WhitespacesFixerConfig - { - static $defaultWhitespacesFixerConfig = null; - - if (null === $defaultWhitespacesFixerConfig) { - $defaultWhitespacesFixerConfig = new WhitespacesFixerConfig(' ', "\n"); - } - - return $defaultWhitespacesFixerConfig; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php deleted file mode 100644 index ed169c9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php +++ /dev/null @@ -1,122 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractFopenFlagFixer extends AbstractFunctionReferenceFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAllTokenKindsFound([\T_STRING, \T_CONSTANT_ENCAPSED_STRING]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - $index = 0; - $end = $tokens->count() - 1; - while (true) { - $candidate = $this->find('fopen', $tokens, $index, $end); - - if (null === $candidate) { - break; - } - - $index = $candidate[1]; // proceed to '(' of `fopen` - - // fetch arguments - $arguments = $argumentsAnalyzer->getArguments( - $tokens, - $index, - $candidate[2], - ); - - $argumentsCount = \count($arguments); // argument count sanity check - - if ($argumentsCount < 2 || $argumentsCount > 4) { - continue; - } - - // get second argument index - $argumentKeys = array_keys($arguments); - \assert(isset($argumentKeys[1])); - $argumentStartIndex = $argumentKeys[1]; - - \assert(isset($arguments[$argumentStartIndex])); - $this->fixFopenFlagToken( - $tokens, - $argumentStartIndex, - $arguments[$argumentStartIndex], - ); - } - } - - abstract protected function fixFopenFlagToken(Tokens $tokens, int $argumentStartIndex, int $argumentEndIndex): void; - - protected function isValidModeString(string $mode): bool - { - $modeLength = \strlen($mode); - if ($modeLength < 1 || $modeLength > 13) { // 13 === length 'r+w+a+x+c+etb' - return false; - } - - $validFlags = [ - 'a' => true, - 'b' => true, - 'c' => true, - 'e' => true, - 'r' => true, - 't' => true, - 'w' => true, - 'x' => true, - ]; - - if (!isset($validFlags[$mode[0]])) { - return false; - } - - unset($validFlags[$mode[0]]); - - for ($i = 1; $i < $modeLength; ++$i) { - if (isset($validFlags[$mode[$i]])) { - unset($validFlags[$mode[$i]]); - - continue; - } - - if ('+' !== $mode[$i] - || ( - 'a' !== $mode[$i - 1] // 'a+','c+','r+','w+','x+' - && 'c' !== $mode[$i - 1] - && 'r' !== $mode[$i - 1] - && 'w' !== $mode[$i - 1] - && 'x' !== $mode[$i - 1] - ) - ) { - return false; - } - } - - return true; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php deleted file mode 100644 index 2e53056..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @author Vladimir Reznichenko - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractFunctionReferenceFixer extends AbstractFixer -{ - private ?FunctionsAnalyzer $functionsAnalyzer = null; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - /** - * Looks up Tokens sequence for suitable candidates and delivers boundaries information, - * which can be supplied by other methods in this abstract class. - * - * @return ?array{int, int, int} returns $functionName, $openParenthesis, $closeParenthesis packed into array - */ - protected function find(string $functionNameToSearch, Tokens $tokens, int $start = 0, ?int $end = null): ?array - { - if (null === $this->functionsAnalyzer) { - $this->functionsAnalyzer = new FunctionsAnalyzer(); - } - - // make interface consistent with findSequence - $end ??= $tokens->count(); - - // find raw sequence which we can analyse for context - $candidateSequence = [[\T_STRING, $functionNameToSearch], '(']; - $matches = $tokens->findSequence($candidateSequence, $start, $end, false); - - if (null === $matches) { - return null; // not found, simply return without further attempts - } - - // translate results for humans - \assert(isset(array_keys($matches)[1])); - [$functionName, $openParenthesis] = array_keys($matches); - - if (!$this->functionsAnalyzer->isGlobalFunctionCall($tokens, $functionName)) { - return $this->find($functionNameToSearch, $tokens, $openParenthesis, $end); - } - - return [$functionName, $openParenthesis, $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesis)]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php deleted file mode 100644 index 8ac22a4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php +++ /dev/null @@ -1,207 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractNoUselessElseFixer extends AbstractFixer -{ - public function getPriority(): int - { - // should be run before NoWhitespaceInBlankLineFixer, NoExtraBlankLinesFixer, BracesFixer and after NoEmptyStatementFixer. - return 39; - } - - protected function isSuperfluousElse(Tokens $tokens, int $index): bool - { - $previousBlockStart = $index; - - do { - // Check if all 'if', 'else if ' and 'elseif' blocks above this 'else' always end, - // if so this 'else' is overcomplete. - [$previousBlockStart, $previousBlockEnd] = $this->getPreviousBlock($tokens, $previousBlockStart); - - // short 'if' detection - $previous = $previousBlockEnd; - if ($tokens[$previous]->equals('}')) { - $previous = $tokens->getPrevMeaningfulToken($previous); - } - - if ( - !$tokens[$previous]->equals(';') // 'if' block doesn't end with semicolon, keep 'else' - || $tokens[$tokens->getPrevMeaningfulToken($previous)]->equals('{') // empty 'if' block, keep 'else' - ) { - return false; - } - - $candidateIndex = $tokens->getPrevTokenOfKind( - $previous, - [ - ';', - [\T_BREAK], - [\T_CLOSE_TAG], - [\T_CONTINUE], - [\T_EXIT], - [\T_GOTO], - [\T_IF], - [\T_RETURN], - [\T_THROW], - ], - ); - - if (null === $candidateIndex || $tokens[$candidateIndex]->equalsAny([';', [\T_CLOSE_TAG], [\T_IF]])) { - return false; - } - - if ($tokens[$candidateIndex]->isGivenKind(\T_THROW)) { - $previousIndex = $tokens->getPrevMeaningfulToken($candidateIndex); - - if (!$tokens[$previousIndex]->equalsAny([';', '{'])) { - return false; - } - } - - if ($this->isInConditional($tokens, $candidateIndex, $previousBlockStart) - || $this->isInConditionWithoutBraces($tokens, $candidateIndex, $previousBlockStart) - ) { - return false; - } - - // implicit continue, i.e. delete candidate - } while (!$tokens[$previousBlockStart]->isGivenKind(\T_IF)); - - return true; - } - - /** - * Return the first and last token index of the previous block. - * - * [0] First is either T_IF, T_ELSE or T_ELSEIF - * [1] Last is either '}' or ';' / T_CLOSE_TAG for short notation blocks - * - * @param int $index T_IF, T_ELSE, T_ELSEIF - * - * @return array{int, int} - */ - private function getPreviousBlock(Tokens $tokens, int $index): array - { - $close = $previous = $tokens->getPrevMeaningfulToken($index); - // short 'if' detection - if ($tokens[$close]->equals('}')) { - $previous = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $close); - } - - $open = $tokens->getPrevTokenOfKind($previous, [[\T_IF], [\T_ELSE], [\T_ELSEIF]]); - if ($tokens[$open]->isGivenKind(\T_IF)) { - $elseCandidate = $tokens->getPrevMeaningfulToken($open); - if ($tokens[$elseCandidate]->isGivenKind(\T_ELSE)) { - $open = $elseCandidate; - } - } - - return [$open, $close]; - } - - /** - * @param int $index Index of the token to check - * @param int $lowerLimitIndex Lower limit index. Since the token to check will always be in a conditional we must stop checking at this index - */ - private function isInConditional(Tokens $tokens, int $index, int $lowerLimitIndex): bool - { - $candidateIndex = $tokens->getPrevTokenOfKind($index, [')', ';', ':']); - if ($tokens[$candidateIndex]->equals(':')) { - return true; - } - - if (!$tokens[$candidateIndex]->equals(')')) { - return false; // token is ';' or close tag - } - - // token is always ')' here. - // If it is part of the condition the token is always in, return false. - // If it is not it is a nested condition so return true - $open = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $candidateIndex); - - return $tokens->getPrevMeaningfulToken($open) > $lowerLimitIndex; - } - - /** - * For internal use only, as it is not perfect. - * - * Returns if the token at given index is part of an if/elseif/else statement - * without {}. Assumes not passing the last `;`/close tag of the statement, not - * out of range index, etc. - * - * @param int $index Index of the token to check - */ - private function isInConditionWithoutBraces(Tokens $tokens, int $index, int $lowerLimitIndex): bool - { - do { - if ($tokens[$index]->isComment() || $tokens[$index]->isWhitespace()) { - $index = $tokens->getPrevMeaningfulToken($index); - } - - $token = $tokens[$index]; - if ($token->isGivenKind([\T_IF, \T_ELSEIF, \T_ELSE])) { - return true; - } - - if ($token->equals(';')) { - return false; - } - - if ($token->equals('{')) { - $index = $tokens->getPrevMeaningfulToken($index); - - // OK if belongs to: for, do, while, foreach - // Not OK if belongs to: if, else, elseif - if ($tokens[$index]->isGivenKind(\T_DO)) { - --$index; - - continue; - } - - if (!$tokens[$index]->equals(')')) { - return false; // like `else {` - } - - $index = $tokens->findBlockStart( - Tokens::BLOCK_TYPE_PARENTHESIS, - $index, - ); - - $index = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$index]->isGivenKind([\T_IF, \T_ELSEIF])) { - return false; - } - } elseif ($token->equals(')')) { - $type = Tokens::detectBlockType($token); - $index = $tokens->findBlockStart( - $type['type'], - $index, - ); - - $index = $tokens->getPrevMeaningfulToken($index); - } else { - --$index; - } - } while ($index > $lowerLimitIndex); - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php deleted file mode 100644 index ee620ed..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php +++ /dev/null @@ -1,348 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\Tokenizer\Analyzer\NamespacesAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @phpstan-type _CommonTypeInfo array{commonType: string, isNullable: bool} - * @phpstan-type _AutogeneratedInputConfiguration array{ - * scalar_types?: bool, - * types_map?: array, - * union_types?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * scalar_types: bool, - * types_map: array, - * union_types: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractPhpdocToTypeDeclarationFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const REGEX_CLASS = '(?:\\\?+'.TypeExpression::REGEX_IDENTIFIER - .'(\\\\'.TypeExpression::REGEX_IDENTIFIER.')*+)'; - - /** - * @var array - */ - private array $versionSpecificTypes = [ - 'void' => 7_01_00, - 'iterable' => 7_01_00, - 'object' => 7_02_00, - 'mixed' => 8_00_00, - 'never' => 8_01_00, - ]; - - /** - * @var array - */ - private array $scalarTypes = [ - 'bool' => true, - 'float' => true, - 'int' => true, - 'string' => true, - ]; - - /** - * @var array - */ - private static array $syntaxValidationCache = []; - - public function isRisky(): bool - { - return true; - } - - abstract protected function isSkippedType(string $type): bool; - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('scalar_types', 'Fix also scalar types; may have unexpected behaviour due to PHP bad type coercion system.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('union_types', 'Fix also union types; turned on by default on PHP >= 8.0.0.')) - ->setAllowedTypes(['bool']) - ->setDefault(\PHP_VERSION_ID >= 8_00_00) - ->getOption(), - (new FixerOptionBuilder('types_map', 'Map of custom types, e.g. template types from PHPStan.')) - ->setAllowedTypes(['array']) - ->setDefault([]) - ->getOption(), - ]); - } - - /** - * @param int $index The index of the function token - */ - protected function findFunctionDocComment(Tokens $tokens, int $index): ?int - { - do { - $index = $tokens->getPrevNonWhitespace($index); - } while ($tokens[$index]->isGivenKind([ - \T_COMMENT, - \T_ABSTRACT, - \T_FINAL, - \T_PRIVATE, - \T_PROTECTED, - \T_PUBLIC, - \T_STATIC, - ])); - - if ($tokens[$index]->isGivenKind(\T_DOC_COMMENT)) { - return $index; - } - - return null; - } - - /** - * @return list - */ - protected function getAnnotationsFromDocComment(string $name, Tokens $tokens, int $docCommentIndex): array - { - $namespacesAnalyzer = new NamespacesAnalyzer(); - $namespace = $namespacesAnalyzer->getNamespaceAt($tokens, $docCommentIndex); - - $namespaceUsesAnalyzer = new NamespaceUsesAnalyzer(); - $namespaceUses = $namespaceUsesAnalyzer->getDeclarationsInNamespace($tokens, $namespace); - - $doc = new DocBlock( - $tokens[$docCommentIndex]->getContent(), - $namespace, - $namespaceUses, - ); - - return $doc->getAnnotationsOfType($name); - } - - /** - * @return list - */ - protected function createTypeDeclarationTokens(string $type, bool $isNullable): array - { - $newTokens = []; - - if (true === $isNullable && 'mixed' !== $type) { - $newTokens[] = new Token([CT::T_NULLABLE_TYPE, '?']); - } - - $newTokens = array_merge( - $newTokens, - $this->createTokensFromRawType($type)->toArray(), - ); - - // 'scalar's, 'void', 'iterable' and 'object' must be unqualified - foreach ($newTokens as $i => $token) { - if ($token->isGivenKind(\T_STRING)) { - $typeUnqualified = $token->getContent(); - - if ( - (isset($this->scalarTypes[$typeUnqualified]) || isset($this->versionSpecificTypes[$typeUnqualified])) - && isset($newTokens[$i - 1]) - && '\\' === $newTokens[$i - 1]->getContent() - ) { - unset($newTokens[$i - 1]); - } - } - } - - return array_values($newTokens); - } - - /** - * Each fixer inheriting from this class must define a way of creating token collection representing type - * gathered from phpDoc, e.g. `Foo|Bar` should be transformed into 3 tokens (`Foo`, `|` and `Bar`). - * This can't be standardised, because some types may be allowed in one place, and invalid in others. - * - * @param string $type Type determined (and simplified) from phpDoc - */ - abstract protected function createTokensFromRawType(string $type): Tokens; - - /** - * @return ?_CommonTypeInfo - */ - protected function getCommonTypeInfo(TypeExpression $typesExpression, bool $isReturnType): ?array - { - $commonType = $typesExpression->getCommonType(); - $isNullable = $typesExpression->allowsNull(); - - if (null === $commonType) { - return null; - } - - if ($isNullable && 'void' === $commonType) { - return null; - } - - if ('static' === $commonType && (!$isReturnType || \PHP_VERSION_ID < 8_00_00)) { - $commonType = 'self'; - } - - if ($this->isSkippedType($commonType)) { - return null; - } - - if (\array_key_exists($commonType, $this->configuration['types_map'])) { - $commonType = $this->configuration['types_map'][$commonType]; - } - - if (isset($this->versionSpecificTypes[$commonType]) && \PHP_VERSION_ID < $this->versionSpecificTypes[$commonType]) { - return null; - } - - if (isset($this->scalarTypes[$commonType])) { - if (false === $this->configuration['scalar_types']) { - return null; - } - } elseif (!Preg::match('/^'.self::REGEX_CLASS.'$/', $commonType)) { - return null; - } - - return ['commonType' => $commonType, 'isNullable' => $isNullable]; - } - - protected function getUnionTypes(TypeExpression $typesExpression, bool $isReturnType): ?string - { - if (\PHP_VERSION_ID < 8_00_00) { - return null; - } - - if (!$typesExpression->isUnionType()) { - return null; - } - - if (false === $this->configuration['union_types']) { - return null; - } - - $types = $typesExpression->getTypes(); - $isNullable = $typesExpression->allowsNull(); - $unionTypes = []; - $containsOtherThanIterableType = false; - $containsOtherThanEmptyType = false; - - foreach ($types as $type) { - if ('null' === $type) { - continue; - } - - if ($this->isSkippedType($type)) { - return null; - } - - if (isset($this->versionSpecificTypes[$type]) && \PHP_VERSION_ID < $this->versionSpecificTypes[$type]) { - return null; - } - - $typeExpression = new TypeExpression($type, null, []); - $commonTypeInfo = $this->getCommonTypeInfo($typeExpression, $isReturnType); - - if (null === $commonTypeInfo) { - return null; - } - - $commonType = $commonTypeInfo['commonType']; - - if (!$containsOtherThanIterableType && !\in_array($commonType, ['array', \Traversable::class, 'iterable'], true)) { - $containsOtherThanIterableType = true; - } - if ($isReturnType && !$containsOtherThanEmptyType && !\in_array($commonType, ['null', 'void', 'never'], true)) { - $containsOtherThanEmptyType = true; - } - - if (!$isNullable && $commonTypeInfo['isNullable']) { - $isNullable = true; - } - - $unionTypes[] = $commonType; - } - - if (!$containsOtherThanIterableType) { - return null; - } - if ($isReturnType && !$containsOtherThanEmptyType) { - return null; - } - - if ($isNullable) { - $unionTypes[] = 'null'; - } - - return implode($typesExpression->getTypesGlue(), array_unique($unionTypes)); - } - - final protected function isValidSyntax(string $code): bool - { - if (!isset(self::$syntaxValidationCache[$code])) { - try { - Tokens::fromCode($code); - self::$syntaxValidationCache[$code] = true; - } catch (\ParseError $e) { - self::$syntaxValidationCache[$code] = false; - } - } - - return self::$syntaxValidationCache[$code]; - } - - /** - * @return list - */ - final protected static function getTypesToExclude(string $content): array - { - $typesToExclude = []; - - $docBlock = new DocBlock($content); - - foreach ($docBlock->getAnnotationsOfType(['phpstan-type', 'psalm-type']) as $annotation) { - $typesToExclude[] = $annotation->getTypeExpression()->toString(); - } - - foreach ($docBlock->getAnnotationsOfType(['phpstan-import-type', 'psalm-import-type']) as $annotation) { - $content = trim($annotation->getContent()); - if (Preg::match('/\bas\s+('.TypeExpression::REGEX_IDENTIFIER.')$/', $content, $matches)) { - $typesToExclude[] = $matches[1]; - - continue; - } - $typesToExclude[] = $annotation->getTypeExpression()->toString(); - } - - return $typesToExclude; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php deleted file mode 100644 index c8cdebe..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php +++ /dev/null @@ -1,93 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * This abstract fixer provides a base for fixers to fix types in PHPDoc. - * - * @author Graham Campbell - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractPhpdocTypesFixer extends AbstractFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - $annotations = $doc->getAnnotationsOfType(Annotation::TAGS_WITH_TYPES); - - if (0 === \count($annotations)) { - continue; - } - - foreach ($annotations as $annotation) { - $this->fixType($annotation); - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } - - /** - * Actually normalize the given type. - */ - abstract protected function normalize(string $type): string; - - /** - * Fix the type at the given line. - * - * We must be super careful not to modify parts of words. - * - * This will be nicely handled behind the scenes for us by the annotation class. - */ - private function fixType(Annotation $annotation): void - { - $typeExpression = $annotation->getTypeExpression(); - - if (null === $typeExpression) { - return; - } - - $newTypeExpression = $typeExpression->mapTypes(function (TypeExpression $type) { - if (!$type->isCompositeType()) { - $value = $this->normalize($type->toString()); - - return new TypeExpression($value, null, []); - } - - return $type; - }); - - $annotation->setTypes([$newTypeExpression->toString()]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php deleted file mode 100644 index 3bd1d19..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php +++ /dev/null @@ -1,110 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractProxyFixer extends AbstractFixer -{ - /** - * @var non-empty-array - */ - protected array $proxyFixers; - - public function __construct() - { - $proxyFixers = []; - foreach (Utils::sortFixers($this->createProxyFixers()) as $proxyFixer) { - $proxyFixers[$proxyFixer->getName()] = $proxyFixer; - } - $this->proxyFixers = $proxyFixers; - - parent::__construct(); - } - - public function isCandidate(Tokens $tokens): bool - { - foreach ($this->proxyFixers as $fixer) { - if ($fixer->isCandidate($tokens)) { - return true; - } - } - - return false; - } - - public function isRisky(): bool - { - foreach ($this->proxyFixers as $fixer) { - if ($fixer->isRisky()) { - return true; - } - } - - return false; - } - - public function getPriority(): int - { - if (\count($this->proxyFixers) > 1) { - throw new \LogicException('You need to override this method to provide the priority of combined fixers.'); - } - - return reset($this->proxyFixers)->getPriority(); - } - - public function supports(\SplFileInfo $file): bool - { - foreach ($this->proxyFixers as $fixer) { - if ($fixer->supports($file)) { - return true; - } - } - - return false; - } - - public function setWhitespacesConfig(WhitespacesFixerConfig $config): void - { - parent::setWhitespacesConfig($config); - - foreach ($this->proxyFixers as $fixer) { - if ($fixer instanceof WhitespacesAwareFixerInterface) { - $fixer->setWhitespacesConfig($config); - } - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($this->proxyFixers as $fixer) { - $fixer->fix($file, $tokens); - } - } - - /** - * @return non-empty-list - */ - abstract protected function createProxyFixers(): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/Cache.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/Cache.php deleted file mode 100644 index b713784..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/Cache.php +++ /dev/null @@ -1,154 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -use PhpCsFixer\Config\NullRuleCustomisationPolicy; -use PhpCsFixer\Utils; - -/** - * @author Andreas Möller - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Cache implements CacheInterface -{ - private SignatureInterface $signature; - - /** - * @var array - */ - private array $hashes = []; - - public function __construct(SignatureInterface $signature) - { - $this->signature = $signature; - } - - public function getSignature(): SignatureInterface - { - return $this->signature; - } - - public function has(string $file): bool - { - return \array_key_exists($file, $this->hashes); - } - - public function get(string $file): ?string - { - return $this->hashes[$file] ?? null; - } - - public function set(string $file, string $hash): void - { - $this->hashes[$file] = $hash; - } - - public function clear(string $file): void - { - unset($this->hashes[$file]); - } - - public function toJson(): string - { - try { - return json_encode( - [ - 'php' => $this->getSignature()->getPhpVersion(), - 'version' => $this->getSignature()->getFixerVersion(), - 'indent' => $this->getSignature()->getIndent(), - 'lineEnding' => $this->getSignature()->getLineEnding(), - 'rules' => $this->getSignature()->getRules(), - 'ruleCustomisationPolicyVersion' => $this->getSignature()->getRuleCustomisationPolicyVersion(), - 'hashes' => $this->hashes, - ], - \JSON_THROW_ON_ERROR, - ); - } catch (\JsonException $e) { - throw new \UnexpectedValueException(\sprintf( - 'Cannot encode cache signature to JSON, error: "%s". If you have non-UTF8 chars in your signature, like in license for `header_comment`, consider enabling `ext-mbstring` or install `symfony/polyfill-mbstring`.', - $e->getMessage(), - )); - } - } - - /** - * @throws \InvalidArgumentException - */ - public static function fromJson(string $json): self - { - try { - $data = json_decode($json, true, 512, \JSON_THROW_ON_ERROR); - } catch (\JsonException $e) { - throw new \InvalidArgumentException(\sprintf( - 'Value needs to be a valid JSON string, got "%s", error: "%s".', - $json, - $e->getMessage(), - )); - } - - $requiredKeys = [ - 'php', - 'version', - 'indent', - 'lineEnding', - 'rules', - // 'ruleCustomisationPolicyVersion', // @TODO v4: require me - 'hashes', - ]; - - $missingKeys = array_diff_key(array_flip($requiredKeys), $data); - - if (\count($missingKeys) > 0) { - throw new \InvalidArgumentException(\sprintf( - 'JSON data is missing keys %s', - Utils::naturalLanguageJoin(array_keys($missingKeys)), - )); - } - - $signature = new Signature( - $data['php'], - $data['version'], - $data['indent'], - $data['lineEnding'], - $data['rules'], - $data['ruleCustomisationPolicyVersion'] ?? NullRuleCustomisationPolicy::VERSION_FOR_CACHE, - ); - - $cache = new self($signature); - - // before v3.11.1 the hashes were crc32 encoded and saved as integers - // @TODO v4: remove the to string cast/array_map - $cache->hashes = array_map(static fn ($v): string => \is_int($v) ? (string) $v : $v, $data['hashes']); - - return $cache; - } - - /** - * @internal - */ - public function backfillHashes(self $oldCache): bool - { - if (!$this->getSignature()->equals($oldCache->getSignature())) { - return false; - } - - $this->hashes = array_merge($oldCache->hashes, $this->hashes); - - return true; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php deleted file mode 100644 index 2a6cca9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php +++ /dev/null @@ -1,37 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -/** - * @author Andreas Möller - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface CacheInterface -{ - public function getSignature(): SignatureInterface; - - public function has(string $file): bool; - - public function get(string $file): ?string; - - public function set(string $file, string $hash): void; - - public function clear(string $file): void; - - public function toJson(): string; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php deleted file mode 100644 index 3115344..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface CacheManagerInterface -{ - public function needFixing(string $file, string $fileContent): bool; - - public function setFile(string $file, string $fileContent): void; - - public function setFileHash(string $file, string $hash): void; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/Directory.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/Directory.php deleted file mode 100644 index e7bc196..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/Directory.php +++ /dev/null @@ -1,53 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Directory implements DirectoryInterface -{ - private string $directoryName; - - public function __construct(string $directoryName) - { - $this->directoryName = $directoryName; - } - - public function getRelativePathTo(string $file): string - { - $file = $this->normalizePath($file); - - if ( - '' === $this->directoryName - || !str_starts_with(strtolower($file), strtolower($this->directoryName.\DIRECTORY_SEPARATOR)) - ) { - return $file; - } - - return substr($file, \strlen($this->directoryName) + 1); - } - - private function normalizePath(string $path): string - { - return str_replace(['\\', '/'], \DIRECTORY_SEPARATOR, $path); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php deleted file mode 100644 index 9b5bb26..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface DirectoryInterface -{ - public function getRelativePathTo(string $file): string; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php deleted file mode 100644 index 5c539f0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php +++ /dev/null @@ -1,147 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -use PhpCsFixer\Hasher; - -/** - * Class supports caching information about state of fixing files. - * - * Cache is supported only for phar version and version installed via composer. - * - * File will be processed by PHP CS Fixer only if any of the following conditions is fulfilled: - * - cache is corrupt - * - fixer version changed - * - rules changed - * - file is new - * - file changed - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FileCacheManager implements CacheManagerInterface -{ - public const WRITE_FREQUENCY = 10; - - private FileHandlerInterface $handler; - - private SignatureInterface $signature; - - private bool $isDryRun; - - private DirectoryInterface $cacheDirectory; - - private int $writeCounter = 0; - - private bool $signatureWasUpdated = false; - - private CacheInterface $cache; - - public function __construct( - FileHandlerInterface $handler, - SignatureInterface $signature, - bool $isDryRun = false, - ?DirectoryInterface $cacheDirectory = null - ) { - $this->handler = $handler; - $this->signature = $signature; - $this->isDryRun = $isDryRun; - $this->cacheDirectory = $cacheDirectory ?? new Directory(''); - - $this->readCache(); - } - - public function __destruct() - { - if (true === $this->signatureWasUpdated || 0 !== $this->writeCounter) { - $this->writeCache(); - } - } - - /** - * This class is not intended to be serialized, - * and cannot be deserialized (see __wakeup method). - */ - public function __serialize(): array - { - throw new \BadMethodCallException('Cannot serialize '.__CLASS__); - } - - /** - * Disable the deserialization of the class to prevent attacker executing - * code by leveraging the __destruct method. - * - * @param array $data - * - * @see https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection - */ - public function __unserialize(array $data): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); - } - - public function needFixing(string $file, string $fileContent): bool - { - $file = $this->cacheDirectory->getRelativePathTo($file); - - return !$this->cache->has($file) || $this->cache->get($file) !== $this->calcHash($fileContent); - } - - public function setFile(string $file, string $fileContent): void - { - $this->setFileHash($file, $this->calcHash($fileContent)); - } - - public function setFileHash(string $file, string $hash): void - { - $file = $this->cacheDirectory->getRelativePathTo($file); - - if ($this->isDryRun && $this->cache->has($file) && $this->cache->get($file) !== $hash) { - $this->cache->clear($file); - } else { - $this->cache->set($file, $hash); - } - - if (self::WRITE_FREQUENCY === ++$this->writeCounter) { - $this->writeCounter = 0; - $this->writeCache(); - } - } - - private function readCache(): void - { - $cache = $this->handler->read(); - - if (null === $cache || !$this->signature->equals($cache->getSignature())) { - $cache = new Cache($this->signature); - $this->signatureWasUpdated = true; - } - - $this->cache = $cache; - } - - private function writeCache(): void - { - $this->handler->write($this->cache); - } - - private function calcHash(string $content): string - { - return Hasher::calculate($content); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php deleted file mode 100644 index 252ed8c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php +++ /dev/null @@ -1,186 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -use Symfony\Component\Filesystem\Exception\IOException; - -/** - * @author Andreas Möller - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FileHandler implements FileHandlerInterface -{ - private \SplFileInfo $fileInfo; - - private int $fileMTime = 0; - - public function __construct(string $file) - { - $this->fileInfo = new \SplFileInfo($file); - } - - public function getFile(): string - { - return $this->fileInfo->getPathname(); - } - - public function read(): ?CacheInterface - { - if (!$this->fileInfo->isFile() || !$this->fileInfo->isReadable()) { - return null; - } - - $fileObject = $this->fileInfo->openFile('r'); - - $cache = $this->readFromHandle($fileObject); - $this->fileMTime = $this->getFileCurrentMTime(); - - unset($fileObject); // explicitly close file handler - - return $cache; - } - - public function write(CacheInterface $cache): void - { - $this->ensureFileIsWriteable(); - - $fileObject = $this->fileInfo->openFile('r+'); - - if (method_exists($cache, 'backfillHashes') && $this->fileMTime < $this->getFileCurrentMTime()) { - $resultOfFlock = $fileObject->flock(\LOCK_EX); - if (false === $resultOfFlock) { - // Lock failed, OK - we continue without the lock. - // noop - } - - $oldCache = $this->readFromHandle($fileObject); - - $fileObject->rewind(); - - if (null !== $oldCache) { - $cache->backfillHashes($oldCache); - } - } - - $resultOfTruncate = $fileObject->ftruncate(0); - if (false === $resultOfTruncate) { - // Truncate failed. OK - we do not save the cache. - return; - } - - $resultOfWrite = $fileObject->fwrite($cache->toJson()); - if (false === $resultOfWrite) { - // Write failed. OK - we did not save the cache. - return; - } - - $resultOfFlush = $fileObject->fflush(); - if (false === $resultOfFlush) { - // Flush failed. OK - part of cache can be missing, in case this was last chunk in this pid. - // noop - } - - $this->fileMTime = time(); // we could take the fresh `mtime` of file that we just modified with `$this->getFileCurrentMTime()`, but `time()` should be good enough here and reduce IO operation - } - - private function getFileCurrentMTime(): int - { - clearstatcache(true, $this->fileInfo->getPathname()); - - $mtime = $this->fileInfo->getMTime(); - - if (false === $mtime) { - // cannot check mtime? OK - let's pretend file is old. - $mtime = 0; - } - - return $mtime; - } - - private function readFromHandle(\SplFileObject $fileObject): ?CacheInterface - { - try { - $size = $fileObject->getSize(); - if (false === $size || 0 === $size) { - return null; - } - - $content = $fileObject->fread($size); - - if (false === $content) { - return null; - } - - return Cache::fromJson($content); - } catch (\InvalidArgumentException $exception) { - return null; - } - } - - private function ensureFileIsWriteable(): void - { - if ($this->fileInfo->isFile() && $this->fileInfo->isWritable()) { - // all good - return; - } - - if ($this->fileInfo->isDir()) { - throw new IOException( - \sprintf('Cannot write cache file "%s" as the location exists as directory.', $this->fileInfo->getRealPath()), - 0, - null, - $this->fileInfo->getPathname(), - ); - } - - if ($this->fileInfo->isFile() && !$this->fileInfo->isWritable()) { - throw new IOException( - \sprintf('Cannot write to file "%s" as it is not writable.', $this->fileInfo->getRealPath()), - 0, - null, - $this->fileInfo->getPathname(), - ); - } - - $this->createFile($this->fileInfo->getPathname()); - } - - private function createFile(string $file): void - { - $dir = \dirname($file); - - // Ensure path is created, but ignore if already exists. FYI: ignore EA suggestion in IDE, - // `mkdir()` returns `false` for existing paths, so we can't mix it with `is_dir()` in one condition. - if (!@is_dir($dir)) { - @mkdir($dir, 0777, true); - } - - if (!@is_dir($dir)) { - throw new IOException( - \sprintf('Directory of cache file "%s" does not exists and couldn\'t be created.', $file), - 0, - null, - $file, - ); - } - - @touch($file); - @chmod($file, 0666); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php deleted file mode 100644 index 7f8b430..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -/** - * @author Andreas Möller - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface FileHandlerInterface -{ - public function getFile(): string; - - public function read(): ?CacheInterface; - - public function write(CacheInterface $cache): void; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php deleted file mode 100644 index 808c0f0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php +++ /dev/null @@ -1,35 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -/** - * @author Andreas Möller - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NullCacheManager implements CacheManagerInterface -{ - public function needFixing(string $file, string $fileContent): bool - { - return true; - } - - public function setFile(string $file, string $fileContent): void {} - - public function setFileHash(string $file, string $hash): void {} -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/Signature.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/Signature.php deleted file mode 100644 index a33efa1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/Signature.php +++ /dev/null @@ -1,124 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -use PhpCsFixer\Future; - -/** - * @author Andreas Möller - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Signature implements SignatureInterface -{ - private string $phpVersion; - - private string $fixerVersion; - - private string $indent; - - private string $lineEnding; - - /** - * @var array|bool> - */ - private array $rules; - - private string $ruleCustomisationPolicyVersion; - - /** - * @param array|bool> $rules - */ - public function __construct(string $phpVersion, string $fixerVersion, string $indent, string $lineEnding, array $rules, string $ruleCustomisationPolicyVersion) - { - $this->phpVersion = $phpVersion; - $this->fixerVersion = $fixerVersion; - $this->indent = $indent; - $this->lineEnding = $lineEnding; - $this->rules = self::makeJsonEncodable($rules); - $this->ruleCustomisationPolicyVersion = $ruleCustomisationPolicyVersion; - } - - public function getPhpVersion(): string - { - return $this->phpVersion; - } - - public function getFixerVersion(): string - { - return $this->fixerVersion; - } - - public function getIndent(): string - { - return $this->indent; - } - - public function getLineEnding(): string - { - return $this->lineEnding; - } - - public function getRules(): array - { - return $this->rules; - } - - public function getRuleCustomisationPolicyVersion(): string - { - return $this->ruleCustomisationPolicyVersion; - } - - public function equals(SignatureInterface $signature): bool - { - return $this->phpVersion === $signature->getPhpVersion() - && $this->fixerVersion === $signature->getFixerVersion() - && $this->indent === $signature->getIndent() - && $this->lineEnding === $signature->getLineEnding() - && $this->rules === $signature->getRules() - && $this->ruleCustomisationPolicyVersion === $signature->getRuleCustomisationPolicyVersion(); - } - - /** - * @param array|bool> $data - * - * @return array|bool> - */ - private static function makeJsonEncodable(array $data): array - { - array_walk_recursive($data, static function (&$item, $key): void { - if (\is_string($item) && false === mb_detect_encoding($item, 'utf-8', true)) { - $item = base64_encode($item); - } elseif (\is_object($item)) { - if ($item instanceof \JsonSerializable) { - $item = \get_class($item).'#'.json_encode($item, \JSON_THROW_ON_ERROR); - } else { - Future::triggerDeprecation(new \InvalidArgumentException(\sprintf( - 'Can not serialize cache signature, unhandled object under "%s" key: "%s" - implement "%s".', - $key, - \get_class($item), - \JsonSerializable::class, - ))); - } - } - }); - - return $data; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php deleted file mode 100644 index 19659c6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php +++ /dev/null @@ -1,42 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Cache; - -/** - * @author Andreas Möller - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface SignatureInterface -{ - public function getPhpVersion(): string; - - public function getFixerVersion(): string; - - public function getIndent(): string; - - public function getLineEnding(): string; - - /** - * @return array|bool> - */ - public function getRules(): array; - - public function getRuleCustomisationPolicyVersion(): string; - - public function equals(self $signature): bool; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ComposerJsonReader.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ComposerJsonReader.php deleted file mode 100644 index ed57020..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ComposerJsonReader.php +++ /dev/null @@ -1,178 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use Composer\Semver\Semver; -use Symfony\Component\Filesystem\Exception\IOException; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ComposerJsonReader -{ - private const COMPOSER_FILENAME = 'composer.json'; - - private bool $isProcessed = false; - - private ?string $php = null; - - private ?string $phpUnit = null; - - private static ?self $singleton = null; - - public static function createSingleton(): self - { - if (null === self::$singleton) { - self::$singleton = new self(); - } - - return self::$singleton; - } - - public function getPhp(): ?string - { - $this->processFile(); - - return $this->php; - } - - public function getPhpUnit(): ?string - { - $this->processFile(); - - return $this->phpUnit; - } - - private function processFile(): void - { - if (true === $this->isProcessed) { - return; - } - - if (!file_exists(self::COMPOSER_FILENAME)) { - throw new IOException(\sprintf('Failed to read file "%s".', self::COMPOSER_FILENAME)); - } - - $readResult = file_get_contents(self::COMPOSER_FILENAME); - if (false === $readResult) { - throw new IOException(\sprintf('Failed to read file "%s".', self::COMPOSER_FILENAME)); - } - - $this->processJson($readResult); - } - - private function processJson(string $json): void - { - if (true === $this->isProcessed) { - return; - } - - $composerJson = json_decode($json, true, 512, \JSON_THROW_ON_ERROR); - - $this->php = self::getMinSemVer(self::detectPhp($composerJson)); - $this->phpUnit = self::getMinSemVer(self::detectPackage($composerJson, 'phpunit/phpunit')); - - $this->isProcessed = true; - } - - private static function getMinSemVer(?string $version): ?string - { - if ('' === $version || null === $version) { - return null; - } - - /** @var non-empty-list $arr */ - $arr = Preg::split('/\s*\|\|?\s*/', trim($version)); - - $arr = array_map(static function ($v) { - $v = ltrim($v, 'v^~>= '); - - $v = substr($v, 0, strcspn($v, ' ,-')); - - if (str_ends_with($v, '.*')) { - $v = substr($v, 0, -\strlen('.*')); - } - - return $v; - }, $arr); - - $textVersion = array_find($arr, static fn ($v) => true === Preg::match('/^\D/', $v)); - - if (null !== $textVersion) { - return null; - } - - /** @var non-empty-list $sortedArr */ - $sortedArr = Semver::sort($arr); - - $min = $sortedArr[0]; - $parts = explode('.', $min); - - return \sprintf('%s.%s', (int) $parts[0], (int) ($parts[1] ?? 0)); - } - - /** - * @param array $composerJson - */ - private static function detectPhp(array $composerJson): ?string - { - $version = []; - - if (isset($composerJson['config']['platform']['php'])) { - $version[] = $composerJson['config']['platform']['php']; - } - - if (isset($composerJson['require-dev']['php'])) { - $version[] = $composerJson['require-dev']['php']; - } - - if (isset($composerJson['require']['php'])) { - $version[] = $composerJson['require']['php']; - } - - if (\count($version) > 0) { - return implode(' || ', $version); - } - - return null; - } - - /** - * @param array $composerJson - * @param non-empty-string $package - */ - private static function detectPackage(array $composerJson, string $package): ?string - { - $version = []; - - if (isset($composerJson['require-dev'][$package])) { - $version[] = $composerJson['require-dev'][$package]; - } - - if (isset($composerJson['require'][$package])) { - $version[] = $composerJson['require'][$package]; - } - - if (\count($version) > 0) { - return implode(' || ', $version); - } - - return null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config.php deleted file mode 100644 index 979aef7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config.php +++ /dev/null @@ -1,321 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Config\RuleCustomisationPolicyAwareConfigInterface; -use PhpCsFixer\Config\RuleCustomisationPolicyInterface; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; -use PhpCsFixer\Runner\Parallel\ParallelConfig; -use PhpCsFixer\Runner\Parallel\ParallelConfigFactory; - -/** - * @author Fabien Potencier - * @author Katsuhiro Ogawa - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - * - * @api-extendable - */ -class Config implements ConfigInterface, ParallelAwareConfigInterface, UnsupportedPhpVersionAllowedConfigInterface, CustomRulesetsAwareConfigInterface, RuleCustomisationPolicyAwareConfigInterface -{ - /** - * @var non-empty-string - */ - private string $cacheFile = '.php-cs-fixer.cache'; - - /** - * @var list - */ - private array $customFixers = []; - - /** - * @var array - */ - private array $customRuleSets = []; - - /** - * @var null|iterable<\SplFileInfo> - */ - private ?iterable $finder = null; - - private string $format; - - private bool $hideProgress = false; - - /** - * @var non-empty-string - */ - private string $indent = ' '; - - private bool $isRiskyAllowed = false; - - /** - * @var non-empty-string - */ - private string $lineEnding = "\n"; - - private string $name; - - private ParallelConfig $parallelConfig; - - private ?string $phpExecutable = null; - - /** - * @TODO: 4.0 - update to @PER - * - * @var array|bool> - */ - private array $rules; - - private bool $usingCache = true; - - private bool $isUnsupportedPhpVersionAllowed = false; - - private ?RuleCustomisationPolicyInterface $ruleCustomisationPolicy = null; - - public function __construct(string $name = 'default') - { - $this->name = $name.(Future::isFutureModeEnabled() ? ' (future mode)' : ''); - $this->rules = Future::getV4OrV3(['@PER-CS' => true], ['@PSR12' => true]); // @TODO 4.0 | 3.x switch to '@auto' for v4 - $this->format = Future::getV4OrV3('@auto', 'txt'); - $this->parallelConfig = ParallelConfigFactory::detect(); - - // @TODO 4.0 cleanup - if (false !== getenv('PHP_CS_FIXER_IGNORE_ENV')) { - $this->isUnsupportedPhpVersionAllowed = filter_var(getenv('PHP_CS_FIXER_IGNORE_ENV'), \FILTER_VALIDATE_BOOL); - } - } - - /** - * @return non-empty-string - */ - public function getCacheFile(): string - { - return $this->cacheFile; - } - - public function getCustomFixers(): array - { - return $this->customFixers; - } - - public function getCustomRuleSets(): array - { - return array_values($this->customRuleSets); - } - - /** - * @return iterable<\SplFileInfo> - */ - public function getFinder(): iterable - { - $this->finder ??= new Finder(); - - return $this->finder; - } - - public function getFormat(): string - { - return $this->format; - } - - public function getHideProgress(): bool - { - return $this->hideProgress; - } - - public function getIndent(): string - { - return $this->indent; - } - - public function getLineEnding(): string - { - return $this->lineEnding; - } - - public function getName(): string - { - return $this->name; - } - - public function getParallelConfig(): ParallelConfig - { - return $this->parallelConfig; - } - - public function getPhpExecutable(): ?string - { - return $this->phpExecutable; - } - - public function getRiskyAllowed(): bool - { - return $this->isRiskyAllowed; - } - - public function getRules(): array - { - return $this->rules; - } - - public function getUsingCache(): bool - { - return $this->usingCache; - } - - public function getUnsupportedPhpVersionAllowed(): bool - { - return $this->isUnsupportedPhpVersionAllowed; - } - - public function getRuleCustomisationPolicy(): ?RuleCustomisationPolicyInterface - { - return $this->ruleCustomisationPolicy; - } - - public function registerCustomFixers(iterable $fixers): ConfigInterface - { - foreach ($fixers as $fixer) { - $this->addCustomFixer($fixer); - } - - return $this; - } - - /** - * @param list $ruleSets - */ - public function registerCustomRuleSets(array $ruleSets): ConfigInterface - { - foreach ($ruleSets as $ruleset) { - $this->customRuleSets[$ruleset->getName()] = $ruleset; - } - - return $this; - } - - /** - * @param non-empty-string $cacheFile - */ - public function setCacheFile(string $cacheFile): ConfigInterface - { - $this->cacheFile = $cacheFile; - - return $this; - } - - public function setFinder(iterable $finder): ConfigInterface - { - $this->finder = $finder; - - return $this; - } - - public function setFormat(string $format): ConfigInterface - { - $this->format = $format; - - return $this; - } - - public function setHideProgress(bool $hideProgress): ConfigInterface - { - $this->hideProgress = $hideProgress; - - return $this; - } - - /** - * @param non-empty-string $indent - */ - public function setIndent(string $indent): ConfigInterface - { - $this->indent = $indent; - - return $this; - } - - /** - * @param non-empty-string $lineEnding - */ - public function setLineEnding(string $lineEnding): ConfigInterface - { - $this->lineEnding = $lineEnding; - - return $this; - } - - public function setParallelConfig(ParallelConfig $config): ConfigInterface - { - $this->parallelConfig = $config; - - return $this; - } - - public function setPhpExecutable(?string $phpExecutable): ConfigInterface - { - $this->phpExecutable = $phpExecutable; - - return $this; - } - - public function setRiskyAllowed(bool $isRiskyAllowed): ConfigInterface - { - $this->isRiskyAllowed = $isRiskyAllowed; - - return $this; - } - - public function setRules(array $rules): ConfigInterface - { - $this->rules = $rules; - - return $this; - } - - public function setUsingCache(bool $usingCache): ConfigInterface - { - $this->usingCache = $usingCache; - - return $this; - } - - public function setUnsupportedPhpVersionAllowed(bool $isUnsupportedPhpVersionAllowed): ConfigInterface - { - $this->isUnsupportedPhpVersionAllowed = $isUnsupportedPhpVersionAllowed; - - return $this; - } - - public function setRuleCustomisationPolicy(?RuleCustomisationPolicyInterface $ruleCustomisationPolicy): ConfigInterface - { - // explicitly prevent policy with no proper version defined - if (null !== $ruleCustomisationPolicy && '' === $ruleCustomisationPolicy->getPolicyVersionForCache()) { - throw new \InvalidArgumentException('The Rule Customisation Policy version cannot be an empty string.'); - } - - $this->ruleCustomisationPolicy = $ruleCustomisationPolicy; - - return $this; - } - - private function addCustomFixer(FixerInterface $fixer): void - { - $this->customFixers[] = $fixer; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config/NullRuleCustomisationPolicy.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config/NullRuleCustomisationPolicy.php deleted file mode 100644 index e6753bb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config/NullRuleCustomisationPolicy.php +++ /dev/null @@ -1,38 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Config; - -/** - * EXPERIMENTAL: This feature is experimental and does not fall under the backward compatibility promise. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NullRuleCustomisationPolicy implements RuleCustomisationPolicyInterface -{ - /** - * @internal - */ - public const VERSION_FOR_CACHE = 'null-policy'; - - public function getPolicyVersionForCache(): string - { - return self::VERSION_FOR_CACHE; - } - - public function getRuleCustomisers(): array - { - return []; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyAwareConfigInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyAwareConfigInterface.php deleted file mode 100644 index 5f9c511..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyAwareConfigInterface.php +++ /dev/null @@ -1,45 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Config; - -use PhpCsFixer\ConfigInterface; - -/** - * EXPERIMENTAL: This feature is experimental and does not fall under the backward compatibility promise. - * - * @TODO 4.0 Include support for this in main ConfigInterface - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface RuleCustomisationPolicyAwareConfigInterface extends ConfigInterface -{ - /** - * EXPERIMENTAL: This feature is experimental and does not fall under the backward compatibility promise. - * Registers a filter to be applied to fixers right before running them. - * - * @todo v4 Introduce it in main ConfigInterface - * - * @return $this - */ - public function setRuleCustomisationPolicy(?RuleCustomisationPolicyInterface $ruleCustomisationPolicy): ConfigInterface; - - /** - * EXPERIMENTAL: This feature is experimental and does not fall under the backward compatibility promise. - * Gets the filter to be applied to fixers right before running them. - * - * @todo v4 Introduce it in main ConfigInterface - */ - public function getRuleCustomisationPolicy(): ?RuleCustomisationPolicyInterface; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyInterface.php deleted file mode 100644 index fbef9fe..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Config/RuleCustomisationPolicyInterface.php +++ /dev/null @@ -1,80 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Config; - -use PhpCsFixer\Fixer\FixerInterface; - -/** - * EXPERIMENTAL: This feature is experimental and does not fall under the backward compatibility promise. - * - * @todo v3.999 replace \SplFileInfo with \Symfony\Component\Finder\SplFileInfo - * - * @phpstan-type _RuleCustomisationPolicyCallback \Closure(\SplFileInfo): (bool|FixerInterface) - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface RuleCustomisationPolicyInterface -{ - /** - * Returns a string that changes when the policy implementation changes in a way that - * would affect the cache validity. - * - * @example you may use the following snippet if your policy does not depend on any code outside of the file - * `return hash_file(\PHP_VERSION_ID >= 8_01_00 ? 'xxh128' : 'md5', __FILE__);` - * - * @return non-empty-string - */ - public function getPolicyVersionForCache(): string; - - /** - * Customise fixers for given files. - * - * Array keys are fixer names, values are closures that will be invoked before applying the fixer to a specific file. - * The closures receive the file as argument and must return: - * - true to apply the fixer as is to the file - * - false to skip applying the fixer to the file - * - a new fixer instance to apply a customised version of the fixer - * - * When PHP CS Fixer is about to start fixing files, it will check that the currently used fixers include at least - * all the fixers for which customisation rules are defined. If a customiser is defined for a fixer that is not currently applied, - * an exception will be thrown. - * This ensures that customisers are actually used for expected fixerswhich may be replaced by newer fixers in newer versions of PHP CS Fixer. - * Since fixer sets may change even in patch releases, this also means that your implementation of this interface may need to be updated accordingly, even in patch releases. - * So, we can't guarantee semver compatibility for Rule Customisation Policies. - * - * @example - * ``` - * [ - * 'array_syntax' => static function (\SplFileInfo $file) { - * if (str_ends_with($file->getPathname(), '/tests/foo.php')) { - * // Disable the fixer for the file tests/foo.php - * return false; - * } - * if (str_ends_with($file->getPathname(), '/bin/entrypoint')) { - * // For the file bin/entrypoint let's create a new fixer instance with a different configuration - * $fixer = new ArraySyntaxFixer(); - * $fixer->configure(['syntax' => 'long']); - * return $fixer; - * } - * // Keep the default configuration for other files - * return true; - * }, - * ] - * ``` - * - * @return array - */ - public function getRuleCustomisers(): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigInterface.php deleted file mode 100644 index 46f6a9e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigInterface.php +++ /dev/null @@ -1,192 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Fixer\FixerInterface; - -/** - * @author Fabien Potencier - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface ConfigInterface -{ - /** @internal */ - public const PHP_VERSION_SYNTAX_SUPPORTED = '8.5'; - - /** - * Returns the path to the cache file. - * - * @return null|non-empty-string Returns null if not using cache - */ - public function getCacheFile(): ?string; - - /** - * Returns the custom fixers to use. - * - * @return list - */ - public function getCustomFixers(): array; - - /** - * Returns files to scan. - * - * @return iterable<\SplFileInfo> - */ - public function getFinder(): iterable; - - public function getFormat(): string; - - /** - * Returns true if progress should be hidden. - */ - public function getHideProgress(): bool; - - /** - * @return non-empty-string - */ - public function getIndent(): string; - - /** - * @return non-empty-string - */ - public function getLineEnding(): string; - - /** - * Returns the name of the configuration. - * - * The name must be all lowercase and without any spaces. - * - * @return string The name of the configuration - */ - public function getName(): string; - - /** - * Get configured PHP executable, if any. - * - * @deprecated - * - * @TODO 4.0 remove me - */ - public function getPhpExecutable(): ?string; - - /** - * Check if it is allowed to run risky fixers. - */ - public function getRiskyAllowed(): bool; - - /** - * Get rules. - * - * Keys of array are names of fixers/sets, values are true/false. - * - * @return array|bool> - */ - public function getRules(): array; - - /** - * Returns true if caching should be enabled. - */ - public function getUsingCache(): bool; - - /** - * Adds a suite of custom fixers. - * - * Name of custom fixer should follow `VendorName/rule_name` convention. - * - * @param iterable $fixers - * - * @return $this - */ - public function registerCustomFixers(iterable $fixers): self; - - /** - * Sets the path to the cache file. - * - * @param non-empty-string $cacheFile - * - * @return $this - */ - public function setCacheFile(string $cacheFile): self; - - /** - * @param iterable<\SplFileInfo> $finder - * - * @return $this - */ - public function setFinder(iterable $finder): self; - - /** - * @return $this - */ - public function setFormat(string $format): self; - - /** - * @return $this - */ - public function setHideProgress(bool $hideProgress): self; - - /** - * @param non-empty-string $indent - * - * @return $this - */ - public function setIndent(string $indent): self; - - /** - * @param non-empty-string $lineEnding - * - * @return $this - */ - public function setLineEnding(string $lineEnding): self; - - /** - * Set PHP executable. - * - * @deprecated - * - * @TODO 4.0 remove me - * - * @return $this - */ - public function setPhpExecutable(?string $phpExecutable): self; - - /** - * Set if it is allowed to run risky fixers. - * - * @return $this - */ - public function setRiskyAllowed(bool $isRiskyAllowed): self; - - /** - * Set rules. - * - * Keys of array are names of fixers or sets. - * Value for set must be bool (turn it on or off). - * Value for fixer may be bool (turn it on or off) or array of configuration - * (turn it on and contains configuration for FixerInterface::configure method). - * - * @param array|bool> $rules - * - * @return $this - */ - public function setRules(array $rules): self; - - /** - * @return $this - */ - public function setUsingCache(bool $usingCache): self; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php deleted file mode 100644 index e863bc4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php +++ /dev/null @@ -1,38 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\ConfigurationException; - -use PhpCsFixer\Console\Command\FixCommandExitStatusCalculator; - -/** - * Exceptions of this type are thrown on misconfiguration of the Fixer. - * - * @internal - * - * @final Only internal extending this class is supported - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -class InvalidConfigurationException extends \InvalidArgumentException -{ - public function __construct(string $message, ?int $code = null, ?\Throwable $previous = null) - { - parent::__construct( - $message, - $code ?? FixCommandExitStatusCalculator::EXIT_STATUS_FLAG_HAS_INVALID_CONFIG, - $previous, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php deleted file mode 100644 index 1e1f5f0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php +++ /dev/null @@ -1,47 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\ConfigurationException; - -use PhpCsFixer\Console\Command\FixCommandExitStatusCalculator; - -/** - * Exception thrown by Fixers on misconfiguration. - * - * @internal - * - * @final Only internal extending this class is supported - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -class InvalidFixerConfigurationException extends InvalidConfigurationException -{ - private string $fixerName; - - public function __construct(string $fixerName, string $message, ?\Throwable $previous = null) - { - parent::__construct( - \sprintf('[%s] %s', $fixerName, $message), - FixCommandExitStatusCalculator::EXIT_STATUS_FLAG_HAS_INVALID_FIXER_CONFIG, - $previous, - ); - - $this->fixerName = $fixerName; - } - - public function getFixerName(): string - { - return $this->fixerName; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php deleted file mode 100644 index 4479039..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\ConfigurationException; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class InvalidForEnvFixerConfigurationException extends InvalidFixerConfigurationException {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php deleted file mode 100644 index 437d4f1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\ConfigurationException; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RequiredFixerConfigurationException extends InvalidFixerConfigurationException {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/UnresolvableAutoRuleSetConfigurationException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/UnresolvableAutoRuleSetConfigurationException.php deleted file mode 100644 index 6f22dc2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ConfigurationException/UnresolvableAutoRuleSetConfigurationException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\ConfigurationException; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class UnresolvableAutoRuleSetConfigurationException extends InvalidConfigurationException {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Application.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Application.php deleted file mode 100644 index 7f5422f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Application.php +++ /dev/null @@ -1,250 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console; - -use PhpCsFixer\Console\Command\CheckCommand; -use PhpCsFixer\Console\Command\DescribeCommand; -use PhpCsFixer\Console\Command\FixCommand; -use PhpCsFixer\Console\Command\HelpCommand; -use PhpCsFixer\Console\Command\InitCommand; -use PhpCsFixer\Console\Command\ListFilesCommand; -use PhpCsFixer\Console\Command\ListRulesCommand; -use PhpCsFixer\Console\Command\ListSetsCommand; -use PhpCsFixer\Console\Command\SelfUpdateCommand; -use PhpCsFixer\Console\Command\WorkerCommand; -use PhpCsFixer\Console\SelfUpdate\GithubClient; -use PhpCsFixer\Console\SelfUpdate\NewVersionChecker; -use PhpCsFixer\Future; -use PhpCsFixer\PharChecker; -use PhpCsFixer\Runner\Parallel\WorkerException; -use PhpCsFixer\ToolInfo; -use Symfony\Component\Console\Application as BaseApplication; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Command\CompleteCommand; -use Symfony\Component\Console\Command\DumpCompletionCommand; -use Symfony\Component\Console\Command\ListCommand; -use Symfony\Component\Console\Exception\CommandNotFoundException; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Fabien Potencier - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Application extends BaseApplication -{ - public const NAME = 'PHP CS Fixer'; - public const VERSION = '3.95.11'; - public const VERSION_CODENAME = 'Adalbertus'; - - /** - * @readonly - */ - private ToolInfo $toolInfo; - - private ?Command $executedCommand = null; - - public function __construct() - { - parent::__construct(self::NAME, self::VERSION); - - $this->toolInfo = new ToolInfo(); - - // in alphabetical order - $this->add(new CheckCommand($this->toolInfo)); - $this->add(new DescribeCommand()); - $this->add(new FixCommand($this->toolInfo)); - $this->add(new InitCommand()); - $this->add(new ListFilesCommand($this->toolInfo)); - $this->add(new ListRulesCommand()); - $this->add(new ListSetsCommand()); - $this->add(new SelfUpdateCommand( - new NewVersionChecker(new GithubClient()), - $this->toolInfo, - new PharChecker(), - )); - $this->add(new WorkerCommand($this->toolInfo)); - } - - // polyfill for `add` method, as it is not available in Symfony 8.0 - public function add(Command $command): ?Command - { - if (method_exists($this, 'addCommand')) { // @phpstan-ignore-line - return $this->addCommand($command); - } - - return parent::add($command); // @phpstan-ignore-line - } - - public static function getMajorVersion(): int - { - return (int) explode('.', self::VERSION)[0]; - } - - public function doRun(InputInterface $input, OutputInterface $output): int - { - $stdErr = $output instanceof ConsoleOutputInterface - ? $output->getErrorOutput() - : ($input->hasParameterOption('--format', true) && 'txt' !== $input->getParameterOption('--format', null, true) ? null : $output); - - if (null !== $stdErr) { - $warningsDetector = new WarningsDetector($this->toolInfo); - $warningsDetector->detectOldVendor(); - $warningsDetector->detectOldMajor(); - - try { - $commandName = $this->getCommandName($input); - if (null === $commandName) { - throw new CommandNotFoundException('No command name found.'); - } - $command = $this->find($commandName); - - if (($command instanceof CheckCommand) || ($command instanceof FixCommand)) { - $warningsDetector->detectHigherPhpVersion(); - $warningsDetector->detectNonMonolithic(); - } - } catch (CommandNotFoundException $e) { - // no-op - } - - $warnings = $warningsDetector->getWarnings(); - - if (\count($warnings) > 0) { - foreach ($warnings as $warning) { - $stdErr->writeln(\sprintf($stdErr->isDecorated() ? '%s' : '%s', $warning)); - } - $stdErr->writeln(''); - } - } - - $result = parent::doRun($input, $output); - - if ( - null !== $stdErr - && $output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE - ) { - $triggeredDeprecations = Future::getTriggeredDeprecations(); - - if (\count($triggeredDeprecations) > 0) { - $stdErr->writeln(''); - $stdErr->writeln($stdErr->isDecorated() ? 'Detected deprecations in use (they will stop working in next major release):' : 'Detected deprecations in use (they will stop working in next major release):'); - foreach ($triggeredDeprecations as $deprecation) { - $stdErr->writeln(\sprintf('- %s', $deprecation)); - } - } - } - - return $result; - } - - /** - * @internal - */ - public static function getAbout(bool $decorated = false): string - { - $longVersion = \sprintf('%s %s', self::NAME, self::VERSION); - - // value of `$commitPlaceholderPossiblyEvaluated` will be changed during phar building, other value will not - $commitPlaceholderPossiblyEvaluated = '@git-commit@'; - $commitPlaceholder = implode('', ['@', 'git-commit@']); // do not replace with imploded value, as here we need to prevent phar builder to replace the placeholder - - $versionCommit = $commitPlaceholder !== $commitPlaceholderPossiblyEvaluated - ? substr($commitPlaceholderPossiblyEvaluated, 0, 7) // for phar builds - : ''; - - $about = implode('', [ - $longVersion, - $versionCommit ? \sprintf(' (%s)', $versionCommit) : '', // @phpstan-ignore-line to avoid `Ternary operator condition is always true|false.` - self::VERSION_CODENAME ? \sprintf(' %s', self::VERSION_CODENAME) : '', // @phpstan-ignore-line to avoid `Ternary operator condition is always true|false.` - ' by Fabien Potencier, Dariusz Ruminski and contributors.', - ]); - - if (false === $decorated) { - return strip_tags($about); - } - - return $about; - } - - /** - * @internal - */ - public static function getAboutWithRuntime(bool $decorated = false): string - { - $about = self::getAbout(true)."\nPHP runtime: ".\PHP_VERSION.''; - if (false === $decorated) { - return strip_tags($about); - } - - return $about; - } - - public function getLongVersion(): string - { - return self::getAboutWithRuntime(true); - } - - protected function getDefaultCommands(): array - { - return [new HelpCommand(), new ListCommand(), new CompleteCommand(), new DumpCompletionCommand()]; - } - - /** - * @throws \Throwable - */ - protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output): int - { - $this->executedCommand = $command; - - return parent::doRunCommand($command, $input, $output); - } - - protected function doRenderThrowable(\Throwable $e, OutputInterface $output): void - { - // Since parallel analysis utilises child processes, and they have their own output, - // we need to capture the output of the child process to determine it there was an exception. - // Default render format is not machine-friendly, so we need to override it for `worker` command, - // in order to be able to easily parse exception data for further displaying on main process' side. - if ($this->executedCommand instanceof WorkerCommand) { - $output->writeln(WorkerCommand::ERROR_PREFIX.json_encode( - [ - 'class' => \get_class($e), - 'message' => $e->getMessage(), - 'file' => $e->getFile(), - 'line' => $e->getLine(), - 'code' => $e->getCode(), - 'trace' => $e->getTraceAsString(), - ], - \JSON_THROW_ON_ERROR, - )); - - return; - } - - parent::doRenderThrowable($e, $output); - - if ($output->isVeryVerbose() && $e instanceof WorkerException) { - $output->writeln('Original trace from worker:'); - $output->writeln(''); - $output->writeln($e->getOriginalTraceAsString()); - $output->writeln(''); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php deleted file mode 100644 index 17eec10..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php +++ /dev/null @@ -1,62 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use PhpCsFixer\Preg; -use PhpCsFixer\ToolInfoInterface; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; - -/** - * @author Greg Korba - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'check', description: 'Checks if configured files/directories comply with configured rules.')] -final class CheckCommand extends FixCommand -{ - public function __construct(ToolInfoInterface $toolInfo) - { - parent::__construct($toolInfo); - $this->setName('check'); - $this->setDescription('Checks if configured files/directories comply with configured rules.'); - } - - public function getHelp(): string - { - return Preg::replace('@\v\V*--dry-run\V*\v@', '', parent::getHelp()); - } - - protected function configure(): void - { - parent::configure(); - - $this->setDefinition([ - ...array_values($this->getDefinition()->getArguments()), - ...array_values(array_filter( - $this->getDefinition()->getOptions(), - static fn (InputOption $option): bool => 'dry-run' !== $option->getName(), - )), - ]); - } - - protected function isDryRun(InputInterface $input): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php deleted file mode 100644 index ca27c8b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php +++ /dev/null @@ -1,769 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use PhpCsFixer\Config; -use PhpCsFixer\Console\Application; -use PhpCsFixer\Console\ConfigurationResolver; -use PhpCsFixer\Differ\DiffConsoleFormatter; -use PhpCsFixer\Differ\FullDiffer; -use PhpCsFixer\Documentation\DocumentationTag; -use PhpCsFixer\Documentation\DocumentationTagGenerator; -use PhpCsFixer\Documentation\DocumentationTagType; -use PhpCsFixer\Documentation\FixerDocumentGenerator; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\FixerConfiguration\AliasedFixerOption; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\DeprecatedFixerOption; -use PhpCsFixer\FixerDefinition\CodeSampleInterface; -use PhpCsFixer\FixerDefinition\FileSpecificCodeSampleInterface; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSampleInterface; -use PhpCsFixer\FixerFactory; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\RuleSet\AutomaticRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSet; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSets; -use PhpCsFixer\StdinFileInfo; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\ToolInfo; -use PhpCsFixer\Utils; -use PhpCsFixer\WordMatcher; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Helper\TreeHelper; -use Symfony\Component\Console\Helper\TreeNode; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Style\SymfonyStyle; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'describe', description: 'Describe rule / ruleset.')] -final class DescribeCommand extends Command -{ - private const SET_ALIAS_TO_DESCRIBE_CONFIG = '@'; - private const SET_ALIAS_TO_DESCRIBE_RULES_WITHOUT_SET = '@-'; - - /** - * @var ?list - */ - private ?array $setNames = null; - - private FixerFactory $fixerFactory; - - /** - * @var null|array - */ - private ?array $fixers = null; - - public function __construct(?FixerFactory $fixerFactory = null) - { - parent::__construct('describe'); - $this->setDescription('Describe rule / ruleset.'); - - if (null === $fixerFactory) { - $fixerFactory = new FixerFactory(); - $fixerFactory->registerBuiltInFixers(); - } - - $this->fixerFactory = $fixerFactory; - } - - protected function configure(): void - { - $this->setDefinition( - [ - new InputArgument('name', InputArgument::OPTIONAL, 'Name of rule / set.', null, fn () => array_merge($this->getSetNames(), array_keys($this->getFixers()))), - new InputOption('config', '', InputOption::VALUE_REQUIRED, 'The path to a .php-cs-fixer.php file.'), - new InputOption('expand', '', InputOption::VALUE_NONE, 'Shall nested sets be expanded into nested rules.'), - new InputOption('format', '', InputOption::VALUE_REQUIRED, 'To output results in other formats (txt, tree).', 'txt', ['txt', 'tree']), - ], - ); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - if ($output instanceof ConsoleOutputInterface) { - $stdErr = $output->getErrorOutput(); - $stdErr->writeln(Application::getAboutWithRuntime(true)); - } - - $resolver = new ConfigurationResolver( - new Config(), - ['config' => $input->getOption('config')], - getcwd(), // @phpstan-ignore argument.type - new ToolInfo(), - ); - - $this->fixerFactory->registerCustomFixers($resolver->getConfig()->getCustomFixers()); - - /** @var ?string $name */ - $name = $input->getArgument('name'); - $expand = $input->getOption('expand'); - $format = $input->getOption('format'); - - if (null === $name) { - if (false === $input->isInteractive()) { - throw new RuntimeException('Not enough arguments (missing: "name") when not running interactively.'); - } - - $io = new SymfonyStyle($input, $output); - $shallDescribeConfigInUse = 'yes' === $io->choice( - 'Do you want to describe used configuration? (alias:`@`', - ['yes', 'no'], - 'yes', - ); - if ($shallDescribeConfigInUse) { - $name = self::SET_ALIAS_TO_DESCRIBE_CONFIG; - } else { - $name = $io->choice( - 'Please select rule / set to describe', - array_merge($this->getSetNames(), array_keys($this->getFixers())), - ); - } - } - - if ('tree' === $format) { - if (!str_starts_with($name, '@')) { - throw new \InvalidArgumentException( - 'The "--format=tree" option is available only when describing a set (name starting with "@").', - ); - } - if (!class_exists(TreeHelper::class)) { - throw new \RuntimeException('The "--format=tree" option requires symfony/console 7.3+.'); - } - } - - if (!str_starts_with($name, '@')) { - if (true === $expand) { - throw new \InvalidArgumentException( - 'The "--expand" option is available only when describing a set (name starting with "@").', - ); - } - } - - try { - if (str_starts_with($name, '@')) { - $this->describeSet($input, $output, $name, $resolver); - - return 0; - } - - $this->describeRule($output, $name); - } catch (DescribeNameNotFoundException $e) { - $matcher = new WordMatcher( - 'set' === $e->getType() ? $this->getSetNames() : array_keys($this->getFixers()), - ); - - $alternative = $matcher->match($name); - - $this->describeList($output, $e->getType()); - - throw new \InvalidArgumentException(\sprintf( - '%s "%s" not found.%s', - ucfirst($e->getType()), - $name, - null === $alternative ? '' : ' Did you mean "'.$alternative.'"?', - )); - } - - return 0; - } - - private function describeRule(OutputInterface $output, string $name): void - { - $fixers = $this->getFixers(); - - if (!isset($fixers[$name])) { - throw new DescribeNameNotFoundException($name, 'rule'); - } - - $fixer = $fixers[$name]; - - $definition = $fixer->getDefinition(); - - $output->writeln(\sprintf('Description of the `%s` rule.', $name)); - $output->writeln(''); - - if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) { - $output->writeln(\sprintf('Fixer class: %s.', \get_class($fixer))); - $output->writeln(''); - } - - $output->writeln($definition->getSummary()); - - $description = $definition->getDescription(); - - if (null !== $description) { - $output->writeln($description); - } - - $output->writeln(''); - - $tags = DocumentationTagGenerator::analyseRule($fixer); - - foreach ($tags as $tag) { - if (DocumentationTagType::DEPRECATED === $tag->type) { - Future::triggerDeprecation(new \RuntimeException(str_replace( - '`', - '"', - \sprintf( - '%s%s', - str_replace('This rule', \sprintf('Rule "%s"', $name), $tag->title), - null !== $tag->description ? '. '.$tag->description : '', - ), - ))); - } elseif (DocumentationTagType::CONFIGURABLE === $tag->type) { - continue; // skip, handled later - } - - $output->writeln(\sprintf('%s', $tag->title)); - $tagDescription = $tag->description; - - if (null !== $tagDescription) { - $tagDescription = Preg::replace('/(`[^`]+`)/', '$1', $tagDescription); - $output->writeln($tagDescription); - } - - $output->writeln(''); - } - - if ($fixer instanceof ConfigurableFixerInterface) { - $configurationDefinition = $fixer->getConfigurationDefinition(); - $options = $configurationDefinition->getOptions(); - - $output->writeln(\sprintf('Fixer is configurable using following option%s:', 1 === \count($options) ? '' : 's')); - - foreach ($options as $option) { - $line = '* '.OutputFormatter::escape($option->getName()).''; - $allowed = HelpCommand::getDisplayableAllowedValues($option); - - if (null === $allowed) { - $allowedTypes = $option->getAllowedTypes(); - if (null !== $allowedTypes) { - $allowed = array_map( - static fn (string $type): string => ''.$type.'', - $allowedTypes, - ); - } - } else { - $allowed = array_map(static fn ($value): string => $value instanceof AllowedValueSubset - ? 'a subset of '.Utils::toString($value->getAllowedValues()).'' - : ''.Utils::toString($value).'', $allowed); - } - - if (null !== $allowed) { - $line .= ' ('.Utils::naturalLanguageJoin($allowed, '').')'; - } - - $description = Preg::replace('/(`.+?`)/', '$1', OutputFormatter::escape($option->getDescription())); - $line .= ': '.lcfirst(Preg::replace('/\.$/', '', $description)).'; '; - - if ($option->hasDefault()) { - $line .= \sprintf( - 'defaults to %s', - Utils::toString($option->getDefault()), - ); - } else { - $line .= 'required'; - } - - if ($option instanceof DeprecatedFixerOption) { - $line .= '. DEPRECATED: '.Preg::replace( - '/(`.+?`)/', - '$1', - OutputFormatter::escape(lcfirst($option->getDeprecationMessage())), - ); - } - - if ($option instanceof AliasedFixerOption) { - $line .= '; DEPRECATED alias: '.$option->getAlias().''; - } - - $output->writeln($line); - } - - $output->writeln(''); - } - - $codeSamples = array_filter($definition->getCodeSamples(), static function (CodeSampleInterface $codeSample): bool { - if ($codeSample instanceof VersionSpecificCodeSampleInterface) { - return $codeSample->isSuitableFor(\PHP_VERSION_ID); - } - - return true; - }); - - if (0 === \count($definition->getCodeSamples())) { - $output->writeln([ - 'Fixing examples are not available for this rule.', - '', - ]); - } elseif (0 === \count($codeSamples)) { - $output->writeln([ - 'Fixing examples cannot be demonstrated on the current PHP version.', - '', - ]); - } else { - $output->writeln('Fixing examples:'); - - $differ = new FullDiffer(); - $diffFormatter = new DiffConsoleFormatter( - $output->isDecorated(), - \sprintf( - ' ---------- begin diff ----------%s%%s%s ----------- end diff -----------', - \PHP_EOL, - \PHP_EOL, - ), - ); - - foreach ($codeSamples as $index => $codeSample) { - $old = $codeSample->getCode(); - $tokens = Tokens::fromCode($old); - - $configuration = $codeSample->getConfiguration(); - - if ($fixer instanceof ConfigurableFixerInterface) { - $fixer->configure($configuration ?? []); - } - - $file = $codeSample instanceof FileSpecificCodeSampleInterface - ? $codeSample->getSplFileInfo() - : new StdinFileInfo(); - - $fixer->fix($file, $tokens); - - $diff = $differ->diff($old, $tokens->generateCode()); - - if ($fixer instanceof ConfigurableFixerInterface) { - if (null === $configuration) { - $output->writeln(\sprintf(' * Example #%d. Fixing with the default configuration.', $index + 1)); - } else { - $output->writeln(\sprintf(' * Example #%d. Fixing with configuration: %s.', $index + 1, Utils::toString($codeSample->getConfiguration()))); - } - } else { - $output->writeln(\sprintf(' * Example #%d.', $index + 1)); - } - - $output->writeln([$diffFormatter->format($diff, ' %s'), '']); - } - } - - $ruleSetConfigs = FixerDocumentGenerator::getSetsOfRule($name); - - if ([] !== $ruleSetConfigs) { - ksort($ruleSetConfigs); - $plural = 1 !== \count($ruleSetConfigs) ? 's' : ''; - $output->writeln("The fixer is part of the following rule set{$plural}:"); - - $ruleSetDefinitions = RuleSets::getSetDefinitions(); - - foreach ($ruleSetConfigs as $set => $config) { - \assert(isset($ruleSetDefinitions[$set])); - $ruleSetDefinition = $ruleSetDefinitions[$set]; - - if ($ruleSetDefinition instanceof AutomaticRuleSetDefinitionInterface) { - continue; - } - - $deprecatedDesc = ($ruleSetDefinition instanceof DeprecatedRuleSetDefinitionInterface) ? ' *(deprecated)*' : ''; - if (null !== $config) { - $output->writeln(\sprintf('* %s with config: %s', $set.$deprecatedDesc, Utils::toString($config))); - } else { - $output->writeln(\sprintf('* %s with default config', $set.$deprecatedDesc)); - } - } - - $output->writeln(''); - } - } - - private function describeSet(InputInterface $input, OutputInterface $output, string $name, ConfigurationResolver $resolver): void - { - if ( - !\in_array($name, [self::SET_ALIAS_TO_DESCRIBE_CONFIG, self::SET_ALIAS_TO_DESCRIBE_RULES_WITHOUT_SET], true) - && !\in_array($name, $this->getSetNames(), true)) { - throw new DescribeNameNotFoundException($name, 'set'); - } - - if (self::SET_ALIAS_TO_DESCRIBE_CONFIG === $name) { - $aliasedRuleSetDefinition = $this->createRuleSetDefinition( - null, - [], - [ - 'getDescription' => null === $resolver->getConfigFile() ? 'Default rules, no config file.' : 'Rules defined in used config.', - 'getName' => \sprintf('@ - %s', $resolver->getConfig()->getName()), - 'getRules' => $resolver->getConfig()->getRules(), - 'isRisky' => $resolver->getRiskyAllowed(), - ], - ); - } elseif (self::SET_ALIAS_TO_DESCRIBE_RULES_WITHOUT_SET === $name) { - $rulesWithoutSet = array_filter( - $this->getFixers(), - static fn (string $name): bool => [] === FixerDocumentGenerator::getSetsOfRule($name), - \ARRAY_FILTER_USE_KEY, - ); - - $aliasedRuleSetDefinition = $this->createRuleSetDefinition( - null, - [], - [ - 'getDescription' => 'Rules that are not part of any set.', - 'getName' => '@- - rules without set', - 'getRules' => array_combine( - array_map( - static fn (FixerInterface $fixer): string => $fixer->getName(), - $rulesWithoutSet, - ), - array_fill(0, \count($rulesWithoutSet), true), - ), - 'isRisky' => array_any( - $rulesWithoutSet, - static fn (FixerInterface $fixer): bool => $fixer->isRisky(), - ), - ], - ); - } - - $ruleSetDefinitions = RuleSets::getSetDefinitions(); - $ruleSetDefinition = $aliasedRuleSetDefinition ?? $ruleSetDefinitions[$name]; - $fixers = $this->getFixers(); - - if (true === $input->getOption('expand')) { - $ruleSetDefinition = $this->createRuleSetDefinition($ruleSetDefinition, ['expand'], []); - } else { - $output->writeln("You may the '--expand' option to see nested sets expanded into nested rules."); - } - - $output->writeln(\sprintf('Description of the `%s` set.', $ruleSetDefinition->getName())); - $output->writeln(''); - - $output->writeln($this->replaceRstLinks($ruleSetDefinition->getDescription())); - $output->writeln(''); - - $tags = DocumentationTagGenerator::analyseRuleSet($ruleSetDefinition); - - foreach ($tags as $tag) { - if (DocumentationTagType::DEPRECATED === $tag->type) { - Future::triggerDeprecation(new \RuntimeException(str_replace( - '`', - '"', - \sprintf( - '%s%s', - str_replace('This rule set', \sprintf('Rule set "%s"', $name), $tag->title), - null !== $tag->description ? '. '.$tag->description : '', - ), - ))); - } - - $output->writeln(\sprintf('%s', $tag->title)); - $tagDescription = $tag->description; - - if (null !== $tagDescription) { - $tagDescription = Preg::replace('/(`[^`]+`)/', '$1', $tagDescription); - $output->writeln($tagDescription); - } - - $output->writeln(''); - } - - if ('tree' === $input->getOption('format')) { - $this->describeSetContentAsTree($output, $ruleSetDefinition, $ruleSetDefinitions, $fixers); - } else { - $this->describeSetContentAsTxt($output, $ruleSetDefinition, $ruleSetDefinitions, $fixers); - } - } - - /** - * @param array $ruleSetDefinitions - * @param array $fixers - */ - private function createTreeNode(RuleSetDefinitionInterface $ruleSetDefinition, array $ruleSetDefinitions, array $fixers): TreeNode - { - $tags = DocumentationTagGenerator::analyseRuleSet($ruleSetDefinition); - $extra = [] !== $tags - ? ' '.implode(' ', array_map( - static fn (DocumentationTag $tag): string => "{$tag->type}", - $tags, - )) - : ''; - - $node = new TreeNode($ruleSetDefinition->getName().$extra); - - $rules = $ruleSetDefinition->getRules(); - $rulesKeys = array_keys($rules); - natcasesort($rulesKeys); - - foreach ($rulesKeys as $rule) { - \assert(isset($rules[$rule])); - $config = $rules[$rule]; - if (str_starts_with($rule, '@')) { - \assert(isset($ruleSetDefinitions[$rule])); - $child = $this->createTreeNode($ruleSetDefinitions[$rule], $ruleSetDefinitions, $fixers); - } else { - \assert(isset($fixers[$rule])); - $fixer = $fixers[$rule]; - $tags = DocumentationTagGenerator::analyseRule($fixer); - $extra = [] !== $tags - ? ' '.implode(' ', array_map( - static fn (DocumentationTag $tag): string => "{$tag->type}", - $tags, - )) - : ''; - if (false === $config) { - $extra = \sprintf(' | Configuration: %s', Utils::toString($config)); - } elseif (true !== $config) { - $extra = \sprintf(' | Configuration: %s', Utils::toString($config)); - } - $child = new TreeNode($rule.$extra); - } - $node->addChild($child); - } - - return $node; - } - - /** - * @param array $ruleSetDefinitions - * @param array $fixers - */ - private function describeSetContentAsTree(OutputInterface $output, RuleSetDefinitionInterface $ruleSetDefinition, array $ruleSetDefinitions, array $fixers): void - { - $io = new SymfonyStyle( - new ArrayInput([]), - $output, - ); - - $root = $this->createTreeNode($ruleSetDefinition, $ruleSetDefinitions, $fixers); - $tree = TreeHelper::createTree($io, $root); - $tree->render(); - } - - /** - * @param array $ruleSetDefinitions - * @param array $fixers - */ - private function describeSetContentAsTxt(OutputInterface $output, RuleSetDefinitionInterface $ruleSetDefinition, array $ruleSetDefinitions, array $fixers): void - { - $help = ''; - - foreach ($ruleSetDefinition->getRules() as $rule => $config) { - if (str_starts_with($rule, '@')) { - \assert(isset($ruleSetDefinitions[$rule])); - $set = $ruleSetDefinitions[$rule]; - $tags = DocumentationTagGenerator::analyseRuleSet($set); - $help .= \sprintf( - " * %s%s%s\n | %s\n\n", - $rule, - [] !== $tags ? ' ' : '', - implode(' ', array_map( - static fn (DocumentationTag $tag): string => "{$tag->type}", - $tags, - )), - $this->replaceRstLinks($set->getDescription()), - ); - - continue; - } - - \assert(isset($fixers[$rule])); - $fixer = $fixers[$rule]; - $tags = DocumentationTagGenerator::analyseRule($fixer); - - $definition = $fixer->getDefinition(); - $help .= \sprintf( - " * %s%s%s\n | %s\n%s\n", - $rule, - [] !== $tags ? ' ' : '', - implode(' ', array_map( - static fn (DocumentationTag $tag): string => "{$tag->type}", - $tags, - )), - $definition->getSummary(), - true !== $config ? \sprintf(" | Configuration: %s\n", Utils::toString($config)) : '', - ); - } - - $output->write($help); - } - - /** - * @return array - */ - private function getFixers(): array - { - if (null !== $this->fixers) { - return $this->fixers; - } - - $fixers = []; - - foreach ($this->fixerFactory->getFixers() as $fixer) { - $fixers[$fixer->getName()] = $fixer; - } - - $this->fixers = $fixers; - ksort($this->fixers); - - return $this->fixers; - } - - /** - * @return list - */ - private function getSetNames(): array - { - if (null !== $this->setNames) { - return $this->setNames; - } - - $this->setNames = RuleSets::getSetDefinitionNames(); - - return $this->setNames; - } - - /** - * @param string $type 'rule'|'set' - */ - private function describeList(OutputInterface $output, string $type): void - { - if ($output->getVerbosity() < OutputInterface::VERBOSITY_VERBOSE) { - return; - } - - if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE || 'set' === $type) { - $output->writeln('Defined sets:'); - - $items = $this->getSetNames(); - foreach ($items as $item) { - $output->writeln(\sprintf('* %s', $item)); - } - } - - if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE || 'rule' === $type) { - $output->writeln('Defined rules:'); - - $items = array_keys($this->getFixers()); - foreach ($items as $item) { - $output->writeln(\sprintf('* %s', $item)); - } - } - } - - private function replaceRstLinks(string $content): string - { - return Preg::replaceCallback( - '/(`[^<]+<[^>]+>`_)/', - static fn (array $matches) => Preg::replaceCallback( - '/`(.*)<(.*)>`_/', - static fn (array $matches): string => $matches[1].'('.$matches[2].')', - $matches[1], - ), - $content, - ); - } - - /** - * @param list<'expand'> $adjustments - * @param array{getDescription?: string, getName?: string, getRules?: array|bool>, isRisky?: bool} $overrides - */ - private function createRuleSetDefinition(?RuleSetDefinitionInterface $ruleSetDefinition, array $adjustments, array $overrides): RuleSetDefinitionInterface - { - return new class($ruleSetDefinition, $adjustments, $overrides) implements RuleSetDefinitionInterface { - private ?RuleSetDefinitionInterface $original; - - /** @var list<'expand'> */ - private array $adjustments; - - /** @var array{getDescription?: string, getName?: string, getRules?: array|bool>, isRisky?: bool} */ - private array $overrides; - - /** - * @param list<'expand'> $adjustments - * @param array{getDescription?: string, getName?: string, getRules?: array|bool>, isRisky?: bool} $overrides - */ - public function __construct( - ?RuleSetDefinitionInterface $original, - array $adjustments, - array $overrides - ) { - $this->original = $original; - $this->adjustments = $adjustments; - $this->overrides = $overrides; - } - - public function getDescription(): string - { - return $this->overrides[__FUNCTION__] - ?? (null !== $this->original ? $this->original->{__FUNCTION__}() : 'unknown description'); // @phpstan-ignore method.dynamicName - } - - public function getName(): string - { - $value = $this->overrides[__FUNCTION__] - ?? (null !== $this->original ? $this->original->{__FUNCTION__}() : 'unknown name'); // @phpstan-ignore method.dynamicName - - if (\in_array('expand', $this->adjustments, true)) { - $value .= ' (expanded)'; - } - - return $value; - } - - public function getRules(): array - { - $value = $this->overrides[__FUNCTION__] - ?? (null !== $this->original ? $this->original->{__FUNCTION__}() : null); // @phpstan-ignore method.dynamicName - - if (null === $value) { - throw new \LogicException('Cannot get rules from unknown original rule set and missing overrides.'); - } - - if (\in_array('expand', $this->adjustments, true)) { - $value = (new RuleSet($value))->getRules(); - } - - return $value; - } - - public function isRisky(): bool - { - $value = $this->overrides[__FUNCTION__] - ?? (null !== $this->original ? $this->original->{__FUNCTION__}() : null); // @phpstan-ignore method.dynamicName - - if (null === $value) { - throw new \LogicException('Cannot get isRisky from unknown original rule set and missing overrides.'); - } - - return $value; - } - }; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php deleted file mode 100644 index af63896..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php +++ /dev/null @@ -1,48 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DescribeNameNotFoundException extends \InvalidArgumentException -{ - private string $name; - - /** - * 'rule'|'set'. - */ - private string $type; - - public function __construct(string $name, string $type) - { - $this->name = $name; - $this->type = $type; - - parent::__construct(); - } - - public function getName(): string - { - return $this->name; - } - - public function getType(): string - { - return $this->type; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php deleted file mode 100644 index a3c183b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php +++ /dev/null @@ -1,460 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use PhpCsFixer\Config; -use PhpCsFixer\ConfigInterface; -use PhpCsFixer\ConfigurationException\InvalidConfigurationException; -use PhpCsFixer\Console\Application; -use PhpCsFixer\Console\ConfigurationResolver; -use PhpCsFixer\Console\Output\ErrorOutput; -use PhpCsFixer\Console\Output\OutputContext; -use PhpCsFixer\Console\Output\Progress\ProgressOutputFactory; -use PhpCsFixer\Console\Output\Progress\ProgressOutputType; -use PhpCsFixer\Console\Report\FixReport\ReporterFactory; -use PhpCsFixer\Console\Report\FixReport\ReportSummary; -use PhpCsFixer\Error\ErrorsManager; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\FixerFactory; -use PhpCsFixer\RuleSet\RuleSets; -use PhpCsFixer\Runner\Event\FileProcessed; -use PhpCsFixer\Runner\Runner; -use PhpCsFixer\ToolInfoInterface; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Style\SymfonyStyle; -use Symfony\Component\Console\Terminal; -use Symfony\Component\EventDispatcher\EventDispatcher; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\Stopwatch\Stopwatch; - -/** - * @author Fabien Potencier - * @author Dariusz Rumiński - * - * @final - * - * @TODO 4.0: mark as final - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'fix', description: 'Fixes a directory or a file.')] -/* final */ class FixCommand extends Command -{ - private EventDispatcherInterface $eventDispatcher; - - private ErrorsManager $errorsManager; - - private Stopwatch $stopwatch; - - private ConfigInterface $defaultConfig; - - private ToolInfoInterface $toolInfo; - - private ProgressOutputFactory $progressOutputFactory; - - public function __construct(ToolInfoInterface $toolInfo) - { - parent::__construct('fix'); - $this->setDescription('Fixes a directory or a file.'); - - $this->eventDispatcher = new EventDispatcher(); - $this->errorsManager = new ErrorsManager(); - $this->stopwatch = new Stopwatch(); - $this->defaultConfig = new Config(); - $this->toolInfo = $toolInfo; - $this->progressOutputFactory = new ProgressOutputFactory(); - } - - /** - * {@inheritdoc} - * - * Override here to only generate the help copy when used. - */ - public function getHelp(): string - { - return <<<'EOF' - The %command.name% command tries to %command.name% as much coding standards - problems as possible on a given file or files in a given directory and its subdirectories: - - $ php %command.full_name% /path/to/dir - $ php %command.full_name% /path/to/file - - By default --path-mode is set to `override`, which means, that if you specify the path to a file or a directory via - command arguments, then the paths provided to a `Finder` in config file will be ignored. You can use --path-mode=intersection - to merge paths from the config file and from the argument: - - $ php %command.full_name% --path-mode=intersection /path/to/dir - - The --format option for the output format. Supported formats are `@auto` (default one on v4+), `txt` (default one on v3), `json`, `xml`, `checkstyle`, `junit` and `gitlab`. - - * `@auto` aims to auto-select best reporter for given CI or local execution (resolution into best format is outside of BC promise and is future-ready) - * `gitlab` for GitLab - * `@auto,{format}` takes `@auto` under CI, and {format} otherwise - - NOTE: the output for the following formats are generated in accordance with schemas - - * `checkstyle` follows the common `"checkstyle" XML schema `_ - * `gitlab` follows the `codeclimate JSON schema `_ - * `json` follows the `own JSON schema `_ - * `junit` follows the `JUnit XML schema from Jenkins `_ - * `xml` follows the `own XML schema `_ - - The --quiet Do not output any message. - - The --verbose option will show the applied rules. When using the `txt` format it will also display progress notifications. - - NOTE: if there is an error like "errors reported during linting after fixing", you can use this to be even more verbose for debugging purpose - - * `-v`: verbose - * `-vv`: very verbose - * `-vvv`: debug - - EOF. /* @TODO: 4.0 - change to @PER */ <<<'EOF' - - The --rules option allows to explicitly select rules to use, - overriding the default PSR-12 or your own project config: - - $ php %command.full_name% . --rules=line_ending,full_opening_tag,indentation_type - - You can also exclude the rules you don't want by placing a dash in front of the rule name, like -name_of_fixer. - - $ php %command.full_name% . --rules=@Symfony,-@PSR1,-blank_line_before_statement,strict_comparison - - Complete configuration for rules can be supplied using a `json` formatted string as well. - - $ php %command.full_name% . --rules='{"concat_space": {"spacing": "none"}}' - - The --dry-run flag will run the fixer without making changes to your files. - - The --sequential flag will enforce sequential analysis even if parallel config is provided. - - The --diff flag can be used to let the fixer output all the changes it makes. - - The --allow-risky option (pass `yes` or `no`) allows you to set whether risky rules may run. Default value is taken from config file. - A rule is considered risky if it could change code behaviour. By default no risky rules are run. - - The --stop-on-violation flag stops the execution upon first file that needs to be fixed. - - The --show-progress option allows you to choose the way process progress is rendered: - - * none: disables progress output; - * dots: multiline progress output with number of files and percentage on each line. - * bar: single line progress output with number of files and calculated percentage. - - If the option is not provided, it defaults to bar unless a config file that disables output is used, in which case it defaults to none. This option has no effect if the verbosity of the command is less than verbose. - - $ php %command.full_name% --verbose --show-progress=dots - - By using --using-cache option with `yes` or `no` you can set if the caching - mechanism should be used. - - The command can also read from standard input, in which case it won't - automatically fix anything: - - $ cat foo.php | php %command.full_name% --diff - - - Finally, if you don't need BC kept on CLI level, you might use `PHP_CS_FIXER_FUTURE_MODE` to start using options that - would be default in next MAJOR release and to forbid using deprecated configuration: - - $ PHP_CS_FIXER_FUTURE_MODE=1 php %command.full_name% -v --diff - - Exit code - --------- - - Exit code of the `%command.name%` command is built using following bit flags: - - * 0 - OK. - * 1 - General error (or PHP minimal requirement not matched). - * 4 - Some files have invalid syntax (only in dry-run mode). - * 8 - Some files need fixing (only in dry-run mode). - * 16 - Configuration error of the application. - * 32 - Configuration error of a Fixer. - * 64 - Exception raised within the application. - - EOF; - } - - protected function configure(): void - { - $reporterFactory = new ReporterFactory(); - $reporterFactory->registerBuiltInReporters(); - $formats = $reporterFactory->getFormats(); - array_unshift($formats, '@auto', '@auto,txt'); - - $progressOutputTypes = ProgressOutputType::all(); - - $this->setDefinition( - [ - new InputArgument('path', InputArgument::IS_ARRAY, 'The path(s) that rules will be run against (each path can be a file or directory).'), - new InputOption('path-mode', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('Specify path mode (%s).', ConfigurationResolver::PATH_MODE_VALUES), ConfigurationResolver::PATH_MODE_OVERRIDE, ConfigurationResolver::PATH_MODE_VALUES), - new InputOption('allow-risky', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('Are risky fixers allowed (%s).', ConfigurationResolver::BOOL_VALUES), null, ConfigurationResolver::BOOL_VALUES), - new InputOption('config', '', InputOption::VALUE_REQUIRED, 'The path to a config file.'), - new InputOption('dry-run', '', InputOption::VALUE_NONE, 'Only shows which files would have been modified.'), - new InputOption('rules', '', InputOption::VALUE_REQUIRED, 'List of rules that should be run against configured paths.', null, static function () { - $fixerFactory = new FixerFactory(); - $fixerFactory->registerBuiltInFixers(); - $fixers = array_map(static fn (FixerInterface $fixer) => $fixer->getName(), $fixerFactory->getFixers()); - - return array_merge(RuleSets::getSetDefinitionNames(), $fixers); - }), - new InputOption('using-cache', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('Should cache be used (%s).', ConfigurationResolver::BOOL_VALUES), null, ConfigurationResolver::BOOL_VALUES), - new InputOption('allow-unsupported-php-version', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('Should the command refuse to run on unsupported PHP version (%s).', ConfigurationResolver::BOOL_VALUES), null, ConfigurationResolver::BOOL_VALUES), - new InputOption('cache-file', '', InputOption::VALUE_REQUIRED, 'The path to the cache file.'), - new InputOption('diff', '', InputOption::VALUE_NONE, 'Prints diff for each file.'), - new InputOption('format', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('To output results in other formats (%s).', $formats), null, $formats), - new InputOption('stop-on-violation', '', InputOption::VALUE_NONE, 'Stop execution on first violation.'), - new InputOption('show-progress', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('Type of progress indicator (%s).', $progressOutputTypes), null, $progressOutputTypes), - new InputOption('sequential', '', InputOption::VALUE_NONE, 'Enforce sequential analysis.'), - ], - ); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $verbosity = $output->getVerbosity(); - - $passedConfig = $input->getOption('config'); - $passedRules = $input->getOption('rules'); - - if (null !== $passedConfig && ConfigurationResolver::IGNORE_CONFIG_FILE !== $passedConfig && null !== $passedRules) { - throw new InvalidConfigurationException('Passing both `--config` and `--rules` options is not allowed.'); - } - - $resolver = new ConfigurationResolver( - $this->defaultConfig, - [ - 'allow-risky' => $input->getOption('allow-risky'), - 'config' => $passedConfig, - 'dry-run' => $this->isDryRun($input), - 'rules' => $passedRules, - 'path' => $input->getArgument('path'), - 'path-mode' => $input->getOption('path-mode'), - 'using-cache' => $input->getOption('using-cache'), - 'allow-unsupported-php-version' => $input->getOption('allow-unsupported-php-version'), - 'cache-file' => $input->getOption('cache-file'), - 'format' => $input->getOption('format'), - 'diff' => $input->getOption('diff'), - 'stop-on-violation' => $input->getOption('stop-on-violation'), - 'verbosity' => $verbosity, - 'show-progress' => $input->getOption('show-progress'), - 'sequential' => $input->getOption('sequential'), - ], - getcwd(), // @phpstan-ignore argument.type - $this->toolInfo, - ); - - $reporter = $resolver->getReporter(); - - $stdErr = $output instanceof ConsoleOutputInterface - ? $output->getErrorOutput() - : ('txt' === $reporter->getFormat() ? $output : null); - - if (null !== $stdErr) { - $stdErr->writeln(Application::getAboutWithRuntime(true)); - - if (version_compare(\PHP_VERSION, ConfigInterface::PHP_VERSION_SYNTAX_SUPPORTED.'.99', '>')) { - $message = \sprintf( - 'PHP CS Fixer currently supports PHP syntax only up to PHP %s, current PHP version: %s.', - ConfigInterface::PHP_VERSION_SYNTAX_SUPPORTED, - \PHP_VERSION, - ); - - if (!$resolver->getUnsupportedPhpVersionAllowed()) { - $message .= ' Add `Config::setUnsupportedPhpVersionAllowed(true)` to allow executions on unsupported PHP versions. Such execution may be unstable and you may experience code modified in a wrong way.'; - $stdErr->writeln(\sprintf( - $stdErr->isDecorated() ? '%s' : '%s', - $message, - )); - - return 1; - } - $message .= ' Execution may be unstable. You may experience code modified in a wrong way. Please report such cases at https://github.com/PHP-CS-Fixer/PHP-CS-Fixer. Remove Config::setUnsupportedPhpVersionAllowed(true) to allow executions only on supported PHP versions.'; - $stdErr->writeln(\sprintf( - $stdErr->isDecorated() ? '%s' : '%s', - $message, - )); - } - - $configFile = $resolver->getConfigFile(); - $stdErr->writeln(\sprintf('Loaded config %s%s.', $resolver->getConfig()->getName(), null === $configFile ? '' : ' from "'.$configFile.'"')); - - if (null === $configFile && ConfigurationResolver::IGNORE_CONFIG_FILE !== $passedConfig && null === $passedRules) { - if (false === $input->isInteractive()) { - $stdErr->writeln( - \sprintf( - $stdErr->isDecorated() ? '%s' : '%s', - 'No config file found. Please create one using `php-cs-fixer init`.', - ), - ); - } else { - $io = new SymfonyStyle($input, $stdErr); - $shallCreateConfigFile = 'yes' === $io->choice( - 'Do you want to create the config file?', - ['yes', 'no'], - 'yes', - ); - if ($shallCreateConfigFile) { - $returnCode = $this->getApplication()->doRun( - new ArrayInput([ - 'command' => 'init', - ]), - $output, - ); - $stdErr->writeln('Config file created, re-run the command to put it in action.'); - - return $returnCode; - } - } - } - - $isParallel = $resolver->getParallelConfig()->getMaxProcesses() > 1; - - $stdErr->writeln(\sprintf( - 'Running analysis on %d core%s.', - $resolver->getParallelConfig()->getMaxProcesses(), - $isParallel ? \sprintf( - 's with %d file%s per process', - $resolver->getParallelConfig()->getFilesPerProcess(), - $resolver->getParallelConfig()->getFilesPerProcess() > 1 ? 's' : '', - ) : ' sequentially', - )); - - if ($resolver->getUsingCache()) { - $cacheFile = $resolver->getCacheFile(); - - if (is_file($cacheFile)) { - $stdErr->writeln(\sprintf('Using cache file "%s".', $cacheFile)); - } - } - } - - $finder = new \ArrayIterator(array_filter( - iterator_to_array($resolver->getFinder()), - static fn (\SplFileInfo $fileInfo) => false !== $fileInfo->getRealPath(), - )); - - if (null !== $stdErr) { - if ($resolver->configFinderIsOverridden()) { - $stdErr->writeln( - \sprintf($stdErr->isDecorated() ? '%s' : '%s', 'Paths from configuration have been overridden by paths provided as command arguments.'), - ); - } - - if ($resolver->configRulesAreOverridden()) { - $stdErr->writeln( - \sprintf($stdErr->isDecorated() ? '%s' : '%s', 'Rules from configuration have been overridden by rules provided as command argument.'), - ); - } - } - - $progressType = $resolver->getProgressType(); - $progressOutput = $this->progressOutputFactory->create( - $progressType, - new OutputContext( - $stdErr, - (new Terminal())->getWidth(), - \count($finder), - ), - ); - - $runner = new Runner( - $finder, - $resolver->getFixers(), - $resolver->getDiffer(), - ProgressOutputType::NONE !== $progressType ? $this->eventDispatcher : null, - $this->errorsManager, - $resolver->getLinter(), - $resolver->isDryRun(), - $resolver->getCacheManager(), - $resolver->getDirectory(), - $resolver->shouldStopOnViolation(), - $resolver->getParallelConfig(), - $input, - $resolver->getConfigFile(), - $resolver->getRuleCustomisationPolicy(), - ); - - $this->eventDispatcher->addListener(FileProcessed::NAME, [$progressOutput, 'onFixerFileProcessed']); - $this->stopwatch->start('fixFiles'); - $changed = $runner->fix(); - $this->stopwatch->stop('fixFiles'); - $this->eventDispatcher->removeListener(FileProcessed::NAME, [$progressOutput, 'onFixerFileProcessed']); - - $progressOutput->printLegend(); - - $fixEvent = $this->stopwatch->getEvent('fixFiles'); - - $reportSummary = new ReportSummary( - $changed, - \count($finder), - (int) $fixEvent->getDuration(), // ignore microseconds fraction - memory_get_peak_usage(true) + $runner->getWorkersMemoryUsage(), - OutputInterface::VERBOSITY_VERBOSE <= $verbosity, - $resolver->isDryRun(), - $output->isDecorated(), - ); - - $output->isDecorated() - ? $output->write($reporter->generate($reportSummary)) - : $output->write($reporter->generate($reportSummary), false, OutputInterface::OUTPUT_RAW); - - $invalidErrors = $this->errorsManager->getInvalidErrors(); - $exceptionErrors = $this->errorsManager->getExceptionErrors(); - $lintErrors = $this->errorsManager->getLintErrors(); - - if (null !== $stdErr) { - $errorOutput = new ErrorOutput($stdErr); - - if (\count($invalidErrors) > 0) { - $errorOutput->listErrors('linting before fixing', $invalidErrors); - } - - if (\count($exceptionErrors) > 0) { - $errorOutput->listErrors('fixing', $exceptionErrors); - if ($isParallel) { - $stdErr->writeln('To see details of the error(s), re-run the command with `--sequential -vvv [file]`'); - } - } - - if (\count($lintErrors) > 0) { - $errorOutput->listErrors('linting after fixing', $lintErrors); - } - } - - $exitStatusCalculator = new FixCommandExitStatusCalculator(); - - return $exitStatusCalculator->calculate( - $resolver->isDryRun(), - \count($changed) > 0, - \count($invalidErrors) > 0, - \count($exceptionErrors) > 0, - \count($lintErrors) > 0, - ); - } - - protected function isDryRun(InputInterface $input): bool - { - return $input->getOption('dry-run'); // @phpstan-ignore symfonyConsole.optionNotFound (Because PHPStan doesn't recognise the method is overridden in the child class and this parameter is _not_ used in the child class.) - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php deleted file mode 100644 index 233ba75..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php +++ /dev/null @@ -1,58 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixCommandExitStatusCalculator -{ - // Exit status 1 is reserved for environment constraints not matched. - public const EXIT_STATUS_FLAG_HAS_INVALID_FILES = 4; - public const EXIT_STATUS_FLAG_HAS_CHANGED_FILES = 8; - public const EXIT_STATUS_FLAG_HAS_INVALID_CONFIG = 16; - public const EXIT_STATUS_FLAG_HAS_INVALID_FIXER_CONFIG = 32; - public const EXIT_STATUS_FLAG_EXCEPTION_IN_APP = 64; - - public function calculate( - bool $isDryRun, - bool $hasChangedFiles, - bool $hasInvalidErrors, - bool $hasExceptionErrors, - bool $hasLintErrorsAfterFixing - ): int { - $exitStatus = 0; - - if ($isDryRun) { - if ($hasChangedFiles) { - $exitStatus |= self::EXIT_STATUS_FLAG_HAS_CHANGED_FILES; - } - - if ($hasInvalidErrors) { - $exitStatus |= self::EXIT_STATUS_FLAG_HAS_INVALID_FILES; - } - } - - if ($hasExceptionErrors || $hasLintErrorsAfterFixing) { - $exitStatus |= self::EXIT_STATUS_FLAG_EXCEPTION_IN_APP; - } - - return $exitStatus; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php deleted file mode 100644 index ae10e39..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php +++ /dev/null @@ -1,94 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerOptionInterface; -use PhpCsFixer\Utils; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\HelpCommand as BaseHelpCommand; -use Symfony\Component\Console\Formatter\OutputFormatterStyle; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Fabien Potencier - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'help')] -final class HelpCommand extends BaseHelpCommand -{ - public function __construct() - { - parent::__construct('help'); - } - - /** - * Formats the description of an option to include its allowed values. - * - * @param string $description description with a single `%s` placeholder for the allowed values - * @param non-empty-list $allowedValues - */ - public static function getDescriptionWithAllowedValues(string $description, array $allowedValues): string - { - $allowedValues = Utils::naturalLanguageJoinWithBackticks($allowedValues, 'or'); - - return \sprintf($description, 'can be '.$allowedValues); - } - - /** - * Returns the allowed values of the given option that can be converted to a string. - * - * @return null|non-empty-list - */ - public static function getDisplayableAllowedValues(FixerOptionInterface $option): ?array - { - $allowed = $option->getAllowedValues(); - - if (null !== $allowed) { - $allowed = array_filter($allowed, static fn ($value): bool => !$value instanceof \Closure); - - usort($allowed, static function ($valueA, $valueB): int { - if ($valueA instanceof AllowedValueSubset) { - return -1; - } - - if ($valueB instanceof AllowedValueSubset) { - return 1; - } - - return strcasecmp( - Utils::toString($valueA), - Utils::toString($valueB), - ); - }); - - if (0 === \count($allowed)) { - $allowed = null; - } - } - - return $allowed; - } - - protected function initialize(InputInterface $input, OutputInterface $output): void - { - $output->getFormatter()->setStyle('url', new OutputFormatterStyle('blue')); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/InitCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/InitCommand.php deleted file mode 100644 index 89813d9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/InitCommand.php +++ /dev/null @@ -1,211 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use PhpCsFixer\Console\Application; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSets; -use PhpCsFixer\RuleSet\Sets\AutoRiskySet; -use PhpCsFixer\RuleSet\Sets\AutoSet; -use PhpCsFixer\RuleSet\Sets\PhpCsFixerRiskySet; -use PhpCsFixer\RuleSet\Sets\PhpCsFixerSet; -use PhpCsFixer\RuleSet\Sets\SymfonyRiskySet; -use PhpCsFixer\RuleSet\Sets\SymfonySet; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Style\SymfonyStyle; -use Symfony\Component\Filesystem\Exception\IOException; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'init', description: 'Create config file.')] -final class InitCommand extends Command -{ - private const FIXER_FILENAME = '.php-cs-fixer.dist.php'; - - public function __construct() - { - parent::__construct('init'); - $this->setDescription('Create config file.'); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $stdErr = $output; - - if ($output instanceof ConsoleOutputInterface) { - $stdErr = $output->getErrorOutput(); - $stdErr->writeln(Application::getAboutWithRuntime(true)); - } - - $io = new SymfonyStyle($input, $stdErr); - - $io->warning('This command is experimental'); - - if (file_exists(self::FIXER_FILENAME)) { - $io->error(\sprintf('Configuration file `%s` already exists.', self::FIXER_FILENAME)); - - return Command::FAILURE; - } - - $io->note([ - 'While we start, we must tell you that we put our diligence to NOT change the meaning of your codebase.', - 'Yet, some of the rules are explicitly _risky_ to apply. A rule is _risky_ if it could change code behaviour, e.g. transforming `==` into `===` or removal of trailing whitespaces within multiline strings.', - 'Such rules are improving your codebase even further, yet you shall always review changes proposed by _risky_ rules carefully.', - ]); - $isRiskyAllowed = 'yes' === $io->choice( - 'Do you want to enable _risky_ rules?', - ['yes', 'no'], - 'no', - ); - - $setsByName = RuleSets::getBuiltInSetDefinitions(); - - $setAuto = new AutoSet(); - $setAutoRisky = new AutoRiskySet(); - $setAutoWithOptionalRiskySetNamesTextual = $isRiskyAllowed ? '`@auto`/`@auto:risky`' : '`@auto`'; - - $io->note("We recommend usage of {$setAutoWithOptionalRiskySetNamesTextual} rulesets. They take insights from your existing `composer.json` to configure project the best:"); - - $generateSetsBehindAutoSet = static function () use ($setAuto, $setAutoRisky, $isRiskyAllowed): array { - $sets = array_merge( - array_keys($setAuto->getRulesCandidates()), - $isRiskyAllowed ? array_keys($setAutoRisky->getRulesCandidates()) : [], - ); - natcasesort($sets); - - return $sets; - }; - $setsBehindAutoSet = $generateSetsBehindAutoSet(); - - $io->listing( - array_map( - static fn (RuleSetDefinitionInterface $item): string => \sprintf( - '`%s` - %s', - $item->getName(), - $item->getDescription(), - ), - array_map( - static fn (string $name): RuleSetDefinitionInterface => $setsByName[$name], // @phpstan-ignore-line offsetAccess.notFound - $setsBehindAutoSet, - ), - ), - ); - - $rules = []; - - $useAutoSet = 'yes' === $io->choice( - "Do you want to use {$setAutoWithOptionalRiskySetNamesTextual} ruleset?", - ['yes', 'no'], - 'yes', - ); - - if ($useAutoSet) { - $rules[] = $setAuto->getName(); - if ($isRiskyAllowed) { - $rules[] = $setAutoRisky->getName(); - } - } - - $generateExtraSets = static function () use ($isRiskyAllowed): array { - $setSymfony = new SymfonySet(); - $setPhpCsFixer = new PhpCsFixerSet(); - - $extraSets = [ - $setSymfony->getName(), - $setPhpCsFixer->getName(), - ]; - - if ($isRiskyAllowed) { - $setSymfonyRisky = new SymfonyRiskySet(); - $setPhpCsFixerRisky = new PhpCsFixerRiskySet(); - - $extraSets[] = $setSymfonyRisky->getName(); - $extraSets[] = $setPhpCsFixerRisky->getName(); - } - - return $extraSets; - }; - - $extraSets = array_merge( - false === $useAutoSet ? $setsBehindAutoSet : [], - $generateExtraSets(), - ); - natcasesort($extraSets); - - $sets = $io->choice( - 'Do you want to use any of other recommended ruleset? (multi-choice)', - array_combine( - $extraSets, - array_map( - static fn (string $item): string => $setsByName[$item]->getDescription(), // @phpstan-ignore-line offsetAccess.notFound - $extraSets, - ), - ) + ['none' => 'none'], - 'none', - true, - ); - - // older Symfony version can return single string instead of array with single string, let's unify - if (!\is_array($sets)) { - $sets = [$sets]; - } - - $rules = array_merge( - $rules, - array_unique(array_filter($sets, static fn ($item) => 'none' !== $item)), - ); - - $readResult = @file_get_contents(__DIR__.'/../../../resources/.php-cs-fixer.dist.php.template'); - if (false === $readResult) { - throw new IOException('Failed to read template file.'); - } - - $content = str_replace( - [ - '/*{{ IS_RISKY_ALLOWED }}*/', - '/*{{ RULES }}*/', - ], - [ - $isRiskyAllowed ? 'true' : 'false', - "[\n".implode( - ",\n", - array_map( - static fn ($item) => " '{$item}' => true", - $rules, - ), - )."\n ]", - ], - $readResult, - ); - - $writeResult = @file_put_contents(self::FIXER_FILENAME, $content); - if (false === $writeResult) { - throw new IOException(\sprintf('Failed to write file "%s".', self::FIXER_FILENAME)); - } - - $io->success(\sprintf('Configuration file created successfully as `%s`.', self::FIXER_FILENAME)); - - return Command::SUCCESS; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php deleted file mode 100644 index 10a64de..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php +++ /dev/null @@ -1,90 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use PhpCsFixer\Config; -use PhpCsFixer\ConfigInterface; -use PhpCsFixer\Console\ConfigurationResolver; -use PhpCsFixer\ToolInfoInterface; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Filesystem\Path; - -/** - * @author Markus Staab - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'list-files', description: 'List all files being fixed by the given config.')] -final class ListFilesCommand extends Command -{ - private ConfigInterface $defaultConfig; - - private ToolInfoInterface $toolInfo; - - public function __construct(ToolInfoInterface $toolInfo) - { - parent::__construct('list-files'); - $this->setDescription('List all files being fixed by the given config.'); - - $this->defaultConfig = new Config(); - $this->toolInfo = $toolInfo; - } - - protected function configure(): void - { - $this->setDefinition( - [ - new InputOption('config', '', InputOption::VALUE_REQUIRED, 'The path to a .php-cs-fixer.php file.'), - ], - ); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $passedConfig = $input->getOption('config'); - - $cwd = getcwd(); - \assert(false !== $cwd); - - $resolver = new ConfigurationResolver( - $this->defaultConfig, - [ - 'config' => $passedConfig, - ], - $cwd, - $this->toolInfo, - ); - - $finder = $resolver->getFinder(); - - foreach ($finder as $file) { - if ($file->isFile()) { - $relativePath = './'.Path::makeRelative($file->getRealPath(), $cwd); - // unify directory separators across operating system - $relativePath = str_replace('/', \DIRECTORY_SEPARATOR, $relativePath); - - $output->writeln(escapeshellarg($relativePath)); - } - } - - return 0; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListRulesCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListRulesCommand.php deleted file mode 100644 index d70140d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListRulesCommand.php +++ /dev/null @@ -1,98 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use PhpCsFixer\ConfigurationException\InvalidConfigurationException; -use PhpCsFixer\Console\Report\ListRulesReport\ReporterFactory; -use PhpCsFixer\Console\Report\ListRulesReport\ReporterInterface; -use PhpCsFixer\Console\Report\ListRulesReport\ReportSummary; -use PhpCsFixer\Console\Report\ListRulesReport\TextReporter; -use PhpCsFixer\FixerFactory; -use PhpCsFixer\Utils; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'list-rules', description: 'List all available Rules.')] -final class ListRulesCommand extends Command -{ - public function __construct() - { - parent::__construct('list-rules'); - $this->setDescription('List all available Rules.'); - } - - protected function configure(): void - { - $reporterFactory = new ReporterFactory(); - $reporterFactory->registerBuiltInReporters(); - $formats = $reporterFactory->getFormats(); - \assert([] !== $formats); - - $this->setDefinition( - [ - new InputOption('format', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('To output results in other formats (%s).', $formats), (new TextReporter())->getFormat(), $formats), - ], - ); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $reporter = $this->resolveReporterWithFactory( - $input->getOption('format'), - new ReporterFactory(), - ); - - $fixerFactory = new FixerFactory(); - $fixerFactory->registerBuiltInFixers(); - - $reportSummary = new ReportSummary( - $fixerFactory->getFixers(), - ); - - $report = $reporter->generate($reportSummary); - - $output->isDecorated() - ? $output->write(OutputFormatter::escape($report)) - : $output->write($report, false, OutputInterface::OUTPUT_RAW); - - return 0; - } - - private function resolveReporterWithFactory(string $format, ReporterFactory $factory): ReporterInterface - { - try { - $factory->registerBuiltInReporters(); - $reporter = $factory->getReporter($format); - } catch (\UnexpectedValueException $e) { - $formats = $factory->getFormats(); - sort($formats); - - throw new InvalidConfigurationException(\sprintf('The format "%s" is not defined, supported are %s.', $format, Utils::naturalLanguageJoin($formats))); - } - - return $reporter; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php deleted file mode 100644 index a5eed6f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php +++ /dev/null @@ -1,95 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use PhpCsFixer\ConfigurationException\InvalidConfigurationException; -use PhpCsFixer\Console\Report\ListSetsReport\ReporterFactory; -use PhpCsFixer\Console\Report\ListSetsReport\ReporterInterface; -use PhpCsFixer\Console\Report\ListSetsReport\ReportSummary; -use PhpCsFixer\Console\Report\ListSetsReport\TextReporter; -use PhpCsFixer\RuleSet\RuleSets; -use PhpCsFixer\Utils; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'list-sets', description: 'List all available RuleSets.')] -final class ListSetsCommand extends Command -{ - public function __construct() - { - parent::__construct('list-sets'); - $this->setDescription('List all available RuleSets.'); - } - - protected function configure(): void - { - $reporterFactory = new ReporterFactory(); - $reporterFactory->registerBuiltInReporters(); - $formats = $reporterFactory->getFormats(); - \assert([] !== $formats); - - $this->setDefinition( - [ - new InputOption('format', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('To output results in other formats (%s).', $formats), (new TextReporter())->getFormat(), $formats), - ], - ); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $reporter = $this->resolveReporterWithFactory( - $input->getOption('format'), - new ReporterFactory(), - ); - - $reportSummary = new ReportSummary( - array_values(RuleSets::getSetDefinitions()), - ); - - $report = $reporter->generate($reportSummary); - - $output->isDecorated() - ? $output->write(OutputFormatter::escape($report)) - : $output->write($report, false, OutputInterface::OUTPUT_RAW); - - return 0; - } - - private function resolveReporterWithFactory(string $format, ReporterFactory $factory): ReporterInterface - { - try { - $factory->registerBuiltInReporters(); - $reporter = $factory->getReporter($format); - } catch (\UnexpectedValueException $e) { - $formats = $factory->getFormats(); - sort($formats); - - throw new InvalidConfigurationException(\sprintf('The format "%s" is not defined, supported are %s.', $format, Utils::naturalLanguageJoin($formats))); - } - - return $reporter; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php deleted file mode 100644 index 3e71cbb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php +++ /dev/null @@ -1,188 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use PhpCsFixer\Console\Application; -use PhpCsFixer\Console\SelfUpdate\NewVersionCheckerInterface; -use PhpCsFixer\PharCheckerInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\ToolInfoInterface; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Igor Wiedler - * @author Stephane PY - * @author Grégoire Pineau - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'self-update', description: 'Update php-cs-fixer.phar to the latest stable version.')] -final class SelfUpdateCommand extends Command -{ - private NewVersionCheckerInterface $versionChecker; - - private ToolInfoInterface $toolInfo; - - private PharCheckerInterface $pharChecker; - - public function __construct( - NewVersionCheckerInterface $versionChecker, - ToolInfoInterface $toolInfo, - PharCheckerInterface $pharChecker - ) { - parent::__construct('self-update'); - $this->setDescription('Update php-cs-fixer.phar to the latest stable version.'); - - $this->versionChecker = $versionChecker; - $this->toolInfo = $toolInfo; - $this->pharChecker = $pharChecker; - } - - /** - * {@inheritdoc} - * - * Override here to only generate the help copy when used. - */ - public function getHelp(): string - { - return <<<'EOT' - The %command.name% command replace your php-cs-fixer.phar by the - latest version released on: - https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases - - $ php php-cs-fixer.phar %command.name% - - EOT; - } - - protected function configure(): void - { - $this - ->setAliases(['selfupdate']) - ->setDefinition( - [ - new InputOption('--force', '-f', InputOption::VALUE_NONE, 'Force update to next major version if available.'), - ], - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - if ($output instanceof ConsoleOutputInterface) { - $stdErr = $output->getErrorOutput(); - $stdErr->writeln(Application::getAboutWithRuntime(true)); - } - - if (!$this->toolInfo->isInstalledAsPhar()) { - $output->writeln('Self-update is available only for PHAR version.'); - - return 1; - } - - $currentVersion = $this->getApplication()->getVersion(); - - try { - if (Preg::match('/^v?(?\d+)\./', $currentVersion, $matches)) { - $currentMajor = (int) $matches['major']; - } else { - throw new \Exception('Unable to determine major version.'); - } - - $latestVersion = $this->versionChecker->getLatestVersion(); - $latestVersionOfCurrentMajor = $this->versionChecker->getLatestVersionOfMajor($currentMajor); - } catch (\Exception $exception) { - $output->writeln(\sprintf( - 'Unable to determine newest version: %s', - $exception->getMessage(), - )); - - return 1; - } - - if (1 !== $this->versionChecker->compareVersions($latestVersion, $currentVersion)) { - $output->writeln('PHP CS Fixer is already up-to-date.'); - - return 0; - } - - $remoteTag = $latestVersion; - - if ( - 0 !== $this->versionChecker->compareVersions($latestVersionOfCurrentMajor, $latestVersion) - && true !== $input->getOption('force') - ) { - $output->writeln(\sprintf('A new major version of PHP CS Fixer is available (%s)', $latestVersion)); - $output->writeln(\sprintf('Before upgrading please read https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/%s/UPGRADE-v%s.md', $latestVersion, $currentMajor + 1)); - $output->writeln('If you are ready to upgrade run this command with -f'); - $output->writeln('Checking for new minor/patch version...'); - - if (1 !== $this->versionChecker->compareVersions($latestVersionOfCurrentMajor, $currentVersion)) { - $output->writeln('No minor update for PHP CS Fixer.'); - - return 0; - } - - $remoteTag = $latestVersionOfCurrentMajor; - } - - \assert(isset($_SERVER['argv'])); - $localFilename = $_SERVER['argv'][0]; - $realPath = realpath($localFilename); - if (false !== $realPath) { - $localFilename = $realPath; - } - - if (!is_writable($localFilename)) { - $output->writeln(\sprintf('No permission to update "%s" file.', $localFilename)); - - return 1; - } - - $tempFilename = \dirname($localFilename).'/'.basename($localFilename, '.phar').'-tmp.phar'; - $remoteFilename = $this->toolInfo->getPharDownloadUri($remoteTag); - - if (false === @copy($remoteFilename, $tempFilename)) { - $output->writeln(\sprintf('Unable to download new version %s from the server.', $remoteTag)); - - return 1; - } - - chmod($tempFilename, 0777 & ~umask()); - - $pharInvalidityReason = $this->pharChecker->checkFileValidity($tempFilename); - if (null !== $pharInvalidityReason) { - unlink($tempFilename); - $output->writeln(\sprintf('The download of %s is corrupt (%s).', $remoteTag, $pharInvalidityReason)); - $output->writeln('Please re-run the "self-update" command to try again.'); - - return 1; - } - - rename($tempFilename, $localFilename); - - $output->writeln(\sprintf('PHP CS Fixer updated (%s -> %s)', $currentVersion, $remoteTag)); - - return 0; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/WorkerCommand.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/WorkerCommand.php deleted file mode 100644 index 209b5e1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Command/WorkerCommand.php +++ /dev/null @@ -1,251 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Command; - -use Clue\React\NDJson\Decoder; -use Clue\React\NDJson\Encoder; -use PhpCsFixer\Cache\NullCacheManager; -use PhpCsFixer\Config; -use PhpCsFixer\Console\ConfigurationResolver; -use PhpCsFixer\Error\ErrorsManager; -use PhpCsFixer\Runner\Event\FileProcessed; -use PhpCsFixer\Runner\Parallel\ParallelAction; -use PhpCsFixer\Runner\Parallel\ParallelConfigFactory; -use PhpCsFixer\Runner\Parallel\ParallelisationException; -use PhpCsFixer\Runner\Runner; -use PhpCsFixer\ToolInfoInterface; -use React\EventLoop\StreamSelectLoop; -use React\Socket\ConnectionInterface; -use React\Socket\TcpConnector; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\EventDispatcher\EventDispatcher; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; - -/** - * @author Greg Korba - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -#[AsCommand(name: 'worker', description: 'Internal command for running fixers in parallel', hidden: true)] -final class WorkerCommand extends Command -{ - /** @var string Prefix used before JSON-encoded error printed in the worker's process */ - public const ERROR_PREFIX = 'WORKER_ERROR::'; - - private ToolInfoInterface $toolInfo; - private ConfigurationResolver $configurationResolver; - private ErrorsManager $errorsManager; - private EventDispatcherInterface $eventDispatcher; - - /** @var list */ - private array $events; - - public function __construct(ToolInfoInterface $toolInfo) - { - parent::__construct('worker'); - $this->setDescription('Internal command for running fixers in parallel'); - - $this->setHidden(true); - $this->toolInfo = $toolInfo; - $this->errorsManager = new ErrorsManager(); - $this->eventDispatcher = new EventDispatcher(); - } - - protected function configure(): void - { - $this->setDefinition( - [ - new InputOption('port', null, InputOption::VALUE_REQUIRED, 'Specifies parallelisation server\'s port.'), - new InputOption('identifier', null, InputOption::VALUE_REQUIRED, 'Specifies parallelisation process\' identifier.'), - new InputOption('allow-risky', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('Are risky fixers allowed (%s).', ConfigurationResolver::BOOL_VALUES), null, ConfigurationResolver::BOOL_VALUES), - new InputOption('config', '', InputOption::VALUE_REQUIRED, 'The path to a config file.'), - new InputOption('dry-run', '', InputOption::VALUE_NONE, 'Only shows which files would have been modified.'), - new InputOption('rules', '', InputOption::VALUE_REQUIRED, 'List of rules that should be run against configured paths.'), - new InputOption('using-cache', '', InputOption::VALUE_REQUIRED, HelpCommand::getDescriptionWithAllowedValues('Should cache be used (%s).', ConfigurationResolver::BOOL_VALUES), null, ConfigurationResolver::BOOL_VALUES), - new InputOption('cache-file', '', InputOption::VALUE_REQUIRED, 'The path to the cache file.'), - new InputOption('diff', '', InputOption::VALUE_NONE, 'Prints diff for each file.'), - new InputOption('stop-on-violation', '', InputOption::VALUE_NONE, 'Stop execution on first violation.'), - ], - ); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $errorOutput = $output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output; - $identifier = $input->getOption('identifier'); - $port = $input->getOption('port'); - - if (null === $identifier || !is_numeric($port)) { - throw new ParallelisationException('Missing parallelisation options'); - } - - try { - $runner = $this->createRunner($input); - } catch (\Throwable $e) { - throw new ParallelisationException('Unable to create runner: '.$e->getMessage(), 0, $e); - } - - $loop = new StreamSelectLoop(); - $tcpConnector = new TcpConnector($loop); - $tcpConnector - ->connect(\sprintf('127.0.0.1:%d', $port)) - ->then( - /** @codeCoverageIgnore */ - function (ConnectionInterface $connection) use ($loop, $runner, $identifier): void { - $out = new Encoder($connection, \JSON_INVALID_UTF8_IGNORE); - $in = new Decoder($connection, true, 512, \JSON_INVALID_UTF8_IGNORE); - - // [REACT] Initialise connection with the parallelisation operator - $out->write(['action' => ParallelAction::WORKER_HELLO, 'identifier' => $identifier]); - - $handleError = static function (\Throwable $error) use ($out): void { - $out->write([ - 'action' => ParallelAction::WORKER_ERROR_REPORT, - 'class' => \get_class($error), - 'message' => $error->getMessage(), - 'file' => $error->getFile(), - 'line' => $error->getLine(), - 'code' => $error->getCode(), - 'trace' => $error->getTraceAsString(), - ]); - }; - $out->on('error', $handleError); - $in->on('error', $handleError); - - // [REACT] Listen for messages from the parallelisation operator (analysis requests) - $in->on('data', function (array $json) use ($loop, $runner, $out): void { - \assert(isset($json['action'])); - - $action = $json['action']; - - // Parallelisation operator does not have more to do, let's close the connection - if (ParallelAction::RUNNER_THANK_YOU === $action) { - // no payload to assert on - - $loop->stop(); - - return; - } - - if (ParallelAction::RUNNER_REQUEST_ANALYSIS !== $action) { - // At this point we only expect analysis requests, if any other action happen, we need to fix the code. - throw new \LogicException(\sprintf('Unexpected action ParallelAction::%s.', $action)); - } - - \assert(isset( - $json['files'], - )); - - /** @var iterable $files */ - $files = $json['files']; - - foreach ($files as $path) { - // Reset events because we want to collect only those coming from analysed files chunk - $this->events = []; - $runner->setFileIterator(new \ArrayIterator([new \SplFileInfo($path)])); - $analysisResult = $runner->fix(); - - if (1 !== \count($this->events)) { - throw new ParallelisationException('Runner did not report a fixing event or reported too many.'); - } - - if (1 < \count($analysisResult)) { - throw new ParallelisationException('Runner returned more analysis results than expected.'); - } - - $out->write([ - 'action' => ParallelAction::WORKER_RESULT, - 'errors' => $this->errorsManager->forPath($path), - 'file' => $path, - 'fileHash' => $this->events[0]->getFileHash(), - 'fixInfo' => array_pop($analysisResult), - 'memoryUsage' => memory_get_peak_usage(true), - 'status' => $this->events[0]->getStatus(), - ]); - } - - // Request another file chunk (if available, the parallelisation operator will request new "run" action) - $out->write(['action' => ParallelAction::WORKER_GET_FILE_CHUNK]); - }); - }, - static function (\Throwable $error) use ($errorOutput): void { - // @TODO Verify onRejected behaviour → https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/7777#discussion_r1590399285 - $errorOutput->writeln($error->getMessage()); - }, - ) - ; - - $loop->run(); - - return Command::SUCCESS; - } - - private function createRunner(InputInterface $input): Runner - { - $passedConfig = $input->getOption('config'); - $passedRules = $input->getOption('rules'); - - if (null !== $passedConfig && ConfigurationResolver::IGNORE_CONFIG_FILE !== $passedConfig && null !== $passedRules) { - throw new \RuntimeException('Passing both `--config` and `--rules` options is not allowed'); - } - - // There's no one single source of truth when it comes to fixing single file, we need to collect statuses from events. - $this->eventDispatcher->addListener(FileProcessed::NAME, function (FileProcessed $event): void { - $this->events[] = $event; - }); - - $this->configurationResolver = new ConfigurationResolver( - new Config(), - [ - 'allow-risky' => $input->getOption('allow-risky'), - 'config' => $passedConfig, - 'dry-run' => $input->getOption('dry-run'), - 'rules' => $passedRules, - 'path' => [], - 'path-mode' => ConfigurationResolver::PATH_MODE_OVERRIDE, // IMPORTANT! WorkerCommand is called with file that already passed filtering, so here we can rely on PATH_MODE_OVERRIDE. - 'using-cache' => $input->getOption('using-cache'), - 'cache-file' => $input->getOption('cache-file'), - 'diff' => $input->getOption('diff'), - 'stop-on-violation' => $input->getOption('stop-on-violation'), - ], - getcwd(), // @phpstan-ignore argument.type - $this->toolInfo, - ); - - return new Runner( - null, // Paths are known when parallelisation server requests new chunk, not now - $this->configurationResolver->getFixers(), - $this->configurationResolver->getDiffer(), - $this->eventDispatcher, - $this->errorsManager, - $this->configurationResolver->getLinter(), - $this->configurationResolver->isDryRun(), - new NullCacheManager(), // IMPORTANT! We pass null cache, as cache is read&write in main process and we do not need to do it again. - $this->configurationResolver->getDirectory(), - $this->configurationResolver->shouldStopOnViolation(), - ParallelConfigFactory::sequential(), // IMPORTANT! Worker must run in sequential mode. - null, - $this->configurationResolver->getConfigFile(), - $this->configurationResolver->getRuleCustomisationPolicy(), - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php deleted file mode 100644 index 6a35054..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php +++ /dev/null @@ -1,1064 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console; - -use Ergebnis\AgentDetector; -use PhpCsFixer\Cache\CacheManagerInterface; -use PhpCsFixer\Cache\Directory; -use PhpCsFixer\Cache\DirectoryInterface; -use PhpCsFixer\Cache\FileCacheManager; -use PhpCsFixer\Cache\FileHandler; -use PhpCsFixer\Cache\NullCacheManager; -use PhpCsFixer\Cache\Signature; -use PhpCsFixer\Config\NullRuleCustomisationPolicy; -use PhpCsFixer\Config\RuleCustomisationPolicyAwareConfigInterface; -use PhpCsFixer\Config\RuleCustomisationPolicyInterface; -use PhpCsFixer\ConfigInterface; -use PhpCsFixer\ConfigurationException\InvalidConfigurationException; -use PhpCsFixer\Console\Output\Progress\ProgressOutputType; -use PhpCsFixer\Console\Report\FixReport\ReporterFactory; -use PhpCsFixer\Console\Report\FixReport\ReporterInterface; -use PhpCsFixer\CustomRulesetsAwareConfigInterface; -use PhpCsFixer\Differ\DifferInterface; -use PhpCsFixer\Differ\NullDiffer; -use PhpCsFixer\Differ\UnifiedDiffer; -use PhpCsFixer\Finder; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\FixerFactory; -use PhpCsFixer\Future; -use PhpCsFixer\Linter\Linter; -use PhpCsFixer\Linter\LinterInterface; -use PhpCsFixer\ParallelAwareConfigInterface; -use PhpCsFixer\RuleSet\RuleSet; -use PhpCsFixer\RuleSet\RuleSetInterface; -use PhpCsFixer\RuleSet\RuleSets; -use PhpCsFixer\Runner\Parallel\ParallelConfig; -use PhpCsFixer\Runner\Parallel\ParallelConfigFactory; -use PhpCsFixer\StdinFileInfo; -use PhpCsFixer\ToolInfoInterface; -use PhpCsFixer\UnsupportedPhpVersionAllowedConfigInterface; -use PhpCsFixer\Utils; -use PhpCsFixer\WhitespacesFixerConfig; -use PhpCsFixer\WordMatcher; -use Symfony\Component\Filesystem\Filesystem; -use Symfony\Component\Finder\Finder as SymfonyFinder; - -/** - * The resolver that resolves configuration to use by command line options and config. - * - * @internal - * - * @phpstan-type _Options array{ - * allow-risky: null|string, - * cache-file: null|string, - * config: null|string, - * diff: null|string, - * dry-run: null|bool, - * format: null|string, - * path: list, - * path-mode: value-of, - * rules: null|string, - * sequential: null|string, - * show-progress: null|string, - * stop-on-violation: null|bool, - * using-cache: null|string, - * allow-unsupported-php-version: null|bool, - * verbosity: null|string, - * } - * - * @author Fabien Potencier - * @author Katsuhiro Ogawa - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ConfigurationResolver -{ - public const IGNORE_CONFIG_FILE = '-'; - - public const PATH_MODE_OVERRIDE = 'override'; - public const PATH_MODE_INTERSECTION = 'intersection'; - public const PATH_MODE_VALUES = [ - self::PATH_MODE_OVERRIDE, - self::PATH_MODE_INTERSECTION, - ]; - - public const BOOL_YES = 'yes'; - public const BOOL_NO = 'no'; - public const BOOL_VALUES = [ - self::BOOL_YES, - self::BOOL_NO, - ]; - - /** - * @TODO v4: this is no longer needed due to `MARKER-multi-paths-vs-only-cwd-config` - */ - private ?string $deprecatedNestedConfigDir = null; - - private ?bool $allowRisky = null; - - private ?ConfigInterface $config = null; - - private ?string $configFile = null; - - private string $cwd; - - private ConfigInterface $defaultConfig; - - private ?ReporterInterface $reporter = null; - - private ?bool $isStdIn = null; - - private ?bool $isDryRun = null; - - /** - * @var null|list - */ - private ?array $fixers = null; - - private ?bool $configFinderIsOverridden = null; - - private ?bool $configRulesAreOverridden = null; - - private ToolInfoInterface $toolInfo; - - /** - * @var _Options - */ - private array $options = [ - 'allow-risky' => null, - 'cache-file' => null, - 'config' => null, - 'diff' => null, - 'dry-run' => null, - 'format' => null, - 'path' => [], - 'path-mode' => self::PATH_MODE_OVERRIDE, - 'rules' => null, - 'sequential' => null, - 'show-progress' => null, - 'stop-on-violation' => null, - 'using-cache' => null, - 'allow-unsupported-php-version' => null, - 'verbosity' => null, - ]; - - private ?string $cacheFile = null; - - private ?CacheManagerInterface $cacheManager = null; - - private ?DifferInterface $differ = null; - - private ?Directory $directory = null; - - /** - * @var null|iterable<\SplFileInfo> - */ - private ?iterable $finder = null; - - private ?string $format = null; - - private ?Linter $linter = null; - - /** - * @var null|list - */ - private ?array $path = null; - - /** - * @var null|ProgressOutputType::* - */ - private $progress; - - private ?RuleSet $ruleSet = null; - - private ?bool $usingCache = null; - - private ?bool $isUnsupportedPhpVersionAllowed = null; - - private ?RuleCustomisationPolicyInterface $ruleCustomisationPolicy = null; - - private ?FixerFactory $fixerFactory = null; - - /** - * @param array $options - */ - public function __construct( - ConfigInterface $config, - array $options, - string $cwd, - ToolInfoInterface $toolInfo - ) { - $this->defaultConfig = $config; - $this->cwd = $cwd; - $this->toolInfo = $toolInfo; - - foreach ($options as $name => $value) { - $this->setOption($name, $value); - } - } - - public function getCacheFile(): ?string - { - if (!$this->getUsingCache()) { - return null; - } - - if (null === $this->cacheFile) { - if (null === $this->options['cache-file']) { - $this->cacheFile = $this->getConfig()->getCacheFile(); - } else { - $this->cacheFile = $this->options['cache-file']; - } - } - - return $this->cacheFile; - } - - public function getCacheManager(): CacheManagerInterface - { - if (null === $this->cacheManager) { - $cacheFile = $this->getCacheFile(); - - if (null === $cacheFile) { - $this->cacheManager = new NullCacheManager(); - } else { - $this->cacheManager = new FileCacheManager( - new FileHandler($cacheFile), - new Signature( - \PHP_VERSION, - $this->toolInfo->getVersion(), - $this->getConfig()->getIndent(), - $this->getConfig()->getLineEnding(), - $this->getRules(), - $this->getRuleCustomisationPolicy()->getPolicyVersionForCache(), - ), - $this->isDryRun(), - $this->getDirectory(), - ); - } - } - - return $this->cacheManager; - } - - public function getConfig(): ConfigInterface - { - if (null === $this->config) { - foreach ($this->computeConfigFiles() as $configFile) { - if (!file_exists($configFile)) { - continue; - } - - $configFileBasename = basename($configFile); - - /** @TODO v4 drop handling (triggering error) for v2 config names */ - $deprecatedConfigs = [ - '.php_cs' => '.php-cs-fixer.php', - '.php_cs.dist' => '.php-cs-fixer.dist.php', - ]; - - if (isset($deprecatedConfigs[$configFileBasename])) { - throw new InvalidConfigurationException("Configuration file `{$configFileBasename}` is outdated, rename to `{$deprecatedConfigs[$configFileBasename]}`."); - } - - if (null !== $this->deprecatedNestedConfigDir && str_starts_with($configFile, $this->deprecatedNestedConfigDir)) { - // @TODO v4: when removing, remove also TODO with `MARKER-multi-paths-vs-only-cwd-config` - Future::triggerDeprecation( - new InvalidConfigurationException("Configuration file `{$configFile}` is picked as file inside passed `path` CLI argument. This will be ignored in the future and only config file in `cwd` will be picked. Please use `config` CLI option instead if you want to keep current behaviour."), - ); - } - - $this->config = self::separatedContextLessInclude($configFile); - $this->configFile = $configFile; - - break; - } - - if (null === $this->config) { - $this->config = $this->defaultConfig; - } - - if ($this->config instanceof CustomRulesetsAwareConfigInterface) { - foreach ($this->config->getCustomRuleSets() as $ruleSet) { - RuleSets::registerCustomRuleSet($ruleSet); - } - } - } - - return $this->config; - } - - public function getParallelConfig(): ParallelConfig - { - $config = $this->getConfig(); - - return true !== $this->options['sequential'] && $config instanceof ParallelAwareConfigInterface - ? $config->getParallelConfig() - : ParallelConfigFactory::sequential(); - } - - public function getConfigFile(): ?string - { - if (null === $this->configFile) { - $this->getConfig(); - } - - return $this->configFile; - } - - public function getDiffer(): DifferInterface - { - if (null === $this->differ) { - $this->differ = (true === $this->options['diff']) ? new UnifiedDiffer() : new NullDiffer(); - } - - return $this->differ; - } - - public function getDirectory(): DirectoryInterface - { - if (null === $this->directory) { - $cwd = realpath($this->cwd); - - $this->directory = new Directory(false !== $cwd ? $cwd : $this->cwd); - } - - return $this->directory; - } - - /** - * @return list - */ - public function getFixers(): array - { - if (null === $this->fixers) { - $this->fixers = $this->createFixerFactory() - ->useRuleSet($this->getRuleSet()) - ->setWhitespacesConfig(new WhitespacesFixerConfig($this->config->getIndent(), $this->config->getLineEnding())) - ->getFixers() - ; - - if (false === $this->getRiskyAllowed()) { - $riskyFixers = array_map( - static fn (FixerInterface $fixer): string => $fixer->getName(), - array_values(array_filter( - $this->fixers, - static fn (FixerInterface $fixer): bool => $fixer->isRisky(), - )), - ); - - if (\count($riskyFixers) > 0) { - throw new InvalidConfigurationException(\sprintf('The rules contain risky fixers (%s), but they are not allowed to run. Perhaps you forget to use --allow-risky=yes option?', Utils::naturalLanguageJoin($riskyFixers))); - } - } - } - - return $this->fixers; - } - - public function getLinter(): LinterInterface - { - if (null === $this->linter) { - $this->linter = new Linter(); - } - - return $this->linter; - } - - /** - * Returns path. - * - * @return list - */ - public function getPath(): array - { - if (null === $this->path) { - $filesystem = new Filesystem(); - $cwd = $this->cwd; - - if (1 === \count($this->options['path']) && '-' === $this->options['path'][0]) { - $this->path = $this->options['path']; - } else { - $this->path = array_map( - static function (string $rawPath) use ($cwd, $filesystem): string { - $path = trim($rawPath); - - if ('' === $path) { - throw new InvalidConfigurationException("Invalid path: \"{$rawPath}\"."); - } - - $absolutePath = $filesystem->isAbsolutePath($path) - ? $path - : $cwd.\DIRECTORY_SEPARATOR.$path; - - if (!file_exists($absolutePath)) { - throw new InvalidConfigurationException(\sprintf( - 'The path "%s" is not readable.', - $path, - )); - } - - return $absolutePath; - }, - $this->options['path'], - ); - } - } - - return $this->path; - } - - /** - * @return ProgressOutputType::* - * - * @throws InvalidConfigurationException - */ - public function getProgressType(): string - { - if (null === $this->progress) { - if ('txt' === $this->resolveFormat()) { - $progressType = $this->options['show-progress']; - - if (null === $progressType) { - $progressType = $this->getConfig()->getHideProgress() - ? ProgressOutputType::NONE - : ProgressOutputType::BAR; - } elseif (!\in_array($progressType, ProgressOutputType::all(), true)) { - throw new InvalidConfigurationException(\sprintf( - 'The progress type "%s" is not defined, supported are %s.', - $progressType, - Utils::naturalLanguageJoin(ProgressOutputType::all()), - )); - } - - $this->progress = $progressType; - } else { - $this->progress = ProgressOutputType::NONE; - } - } - - return $this->progress; - } - - public function getReporter(): ReporterInterface - { - if (null === $this->reporter) { - $reporterFactory = new ReporterFactory(); - $reporterFactory->registerBuiltInReporters(); - - $format = $this->resolveFormat(); - - try { - $this->reporter = $reporterFactory->getReporter($format); - } catch (\UnexpectedValueException $e) { - $formats = $reporterFactory->getFormats(); - sort($formats); - - throw new InvalidConfigurationException(\sprintf('The format "%s" is not defined, supported are %s.', $format, Utils::naturalLanguageJoin($formats))); - } - } - - return $this->reporter; - } - - public function getRiskyAllowed(): bool - { - if (null === $this->allowRisky) { - if (null === $this->options['allow-risky']) { - $this->allowRisky = $this->getConfig()->getRiskyAllowed(); - } else { - $this->allowRisky = $this->resolveOptionBooleanValue('allow-risky'); - } - } - - return $this->allowRisky; - } - - /** - * Returns rules. - * - * @return array|bool> - */ - public function getRules(): array - { - return $this->getRuleSet()->getRules(); - } - - public function getUsingCache(): bool - { - if (null === $this->usingCache) { - if (null === $this->options['using-cache']) { - $this->usingCache = $this->getConfig()->getUsingCache(); - } else { - $this->usingCache = $this->resolveOptionBooleanValue('using-cache'); - } - } - - $this->usingCache = $this->usingCache && $this->isCachingAllowedForRuntime(); - - return $this->usingCache; - } - - public function getUnsupportedPhpVersionAllowed(): bool - { - if (null === $this->isUnsupportedPhpVersionAllowed) { - if (null === $this->options['allow-unsupported-php-version']) { - $config = $this->getConfig(); - $this->isUnsupportedPhpVersionAllowed = $config instanceof UnsupportedPhpVersionAllowedConfigInterface - ? $config->getUnsupportedPhpVersionAllowed() - : false; - } else { - $this->isUnsupportedPhpVersionAllowed = $this->resolveOptionBooleanValue('allow-unsupported-php-version'); - } - } - - return $this->isUnsupportedPhpVersionAllowed; - } - - public function getRuleCustomisationPolicy(): RuleCustomisationPolicyInterface - { - if (null === $this->ruleCustomisationPolicy) { - $config = $this->getConfig(); - if ($config instanceof RuleCustomisationPolicyAwareConfigInterface) { - $this->ruleCustomisationPolicy = $config->getRuleCustomisationPolicy(); - } - $this->ruleCustomisationPolicy ??= new NullRuleCustomisationPolicy(); - } - - return $this->ruleCustomisationPolicy; - } - - /** - * @return iterable<\SplFileInfo> - */ - public function getFinder(): iterable - { - if (null === $this->finder) { - $this->finder = $this->resolveFinder(); - } - - return $this->finder; - } - - /** - * Returns dry-run flag. - */ - public function isDryRun(): bool - { - if (null === $this->isDryRun) { - if ($this->isStdIn()) { - // Can't write to STDIN - $this->isDryRun = true; - } else { - $this->isDryRun = $this->options['dry-run']; - } - } - - return $this->isDryRun; - } - - public function shouldStopOnViolation(): bool - { - return $this->options['stop-on-violation']; - } - - public function configFinderIsOverridden(): bool - { - if (null === $this->configFinderIsOverridden) { - $this->resolveFinder(); - } - - return $this->configFinderIsOverridden; - } - - public function configRulesAreOverridden(): bool - { - if (null === $this->configRulesAreOverridden) { - $this->parseRules(); - } - - return $this->configRulesAreOverridden; - } - - /** - * Compute file candidates for config file. - * - * @TODO v4: don't offer configs from passed `path` CLI argument - * - * @return list - */ - private function computeConfigFiles(): array - { - $configFile = $this->options['config']; - - if (self::IGNORE_CONFIG_FILE === $configFile) { - return []; - } - - if (null !== $configFile) { - if (false === file_exists($configFile) || false === is_readable($configFile)) { - throw new InvalidConfigurationException(\sprintf('Cannot read config file "%s".', $configFile)); - } - - return [$configFile]; - } - - $path = $this->getPath(); - - if ($this->isStdIn() || 0 === \count($path)) { - $configDir = $this->cwd; - } elseif (1 < \count($path)) { - // @TODO v4: this is no longer needed due to `MARKER-multi-paths-vs-only-cwd-config` - throw new InvalidConfigurationException('For multiple paths config parameter is required.'); - } elseif (!is_file($path[0])) { - $configDir = $path[0]; - } else { - $dirName = pathinfo($path[0], \PATHINFO_DIRNAME); - $configDir = is_dir($dirName) ? $dirName : $path[0]; - } - - $candidates = [ - $configDir.\DIRECTORY_SEPARATOR.'.php-cs-fixer.php', - $configDir.\DIRECTORY_SEPARATOR.'.php-cs-fixer.dist.php', - - // @TODO v4 drop handling (triggering error) for v2 config names - $configDir.\DIRECTORY_SEPARATOR.'.php_cs', // old v2 config, present here only to throw nice error message later - $configDir.\DIRECTORY_SEPARATOR.'.php_cs.dist', // old v2 config, present here only to throw nice error message later - ]; - - if ($configDir !== $this->cwd) { - $candidates[] = $this->cwd.\DIRECTORY_SEPARATOR.'.php-cs-fixer.php'; - $candidates[] = $this->cwd.\DIRECTORY_SEPARATOR.'.php-cs-fixer.dist.php'; - - // @TODO v4 drop handling (triggering error) for v2 config names - $candidates[] = $this->cwd.\DIRECTORY_SEPARATOR.'.php_cs'; // old v2 config, present here only to throw nice error message later - $candidates[] = $this->cwd.\DIRECTORY_SEPARATOR.'.php_cs.dist'; // old v2 config, present here only to throw nice error message later - - $this->deprecatedNestedConfigDir = $configDir; - } - - return $candidates; - } - - private function createFixerFactory(): FixerFactory - { - if (null === $this->fixerFactory) { - $fixerFactory = new FixerFactory(); - $fixerFactory->registerBuiltInFixers(); - $fixerFactory->registerCustomFixers($this->getConfig()->getCustomFixers()); - - $this->fixerFactory = $fixerFactory; - } - - return $this->fixerFactory; - } - - private function resolveFormat(): string - { - if (null === $this->format) { - $formatCandidate = $this->options['format'] ?? $this->getConfig()->getFormat(); - $parts = explode(',', $formatCandidate); - - if (\count($parts) > 2) { - throw new InvalidConfigurationException(\sprintf('The format "%s" is invalid.', $formatCandidate)); - } - - $this->format = $parts[0]; - - if ('@auto' === $this->format) { - if (filter_var(getenv('GITLAB_CI'), \FILTER_VALIDATE_BOOL)) { - $this->format = 'gitlab'; - - return $this->format; - } - - $agentDetector = new AgentDetector\Detector(); - - if ($agentDetector->isAgentPresent(array_fill_keys(array_keys(getenv()), ''))) { - $this->format = 'json'; - - return $this->format; - } - - $this->format = $parts[1] ?? 'txt'; - } - } - - return $this->format; - } - - private function getRuleSet(): RuleSetInterface - { - if (null === $this->ruleSet) { - $rules = $this->parseRules(); - $this->validateRules($rules); - - $this->ruleSet = new RuleSet($rules); - } - - return $this->ruleSet; - } - - private function isStdIn(): bool - { - if (null === $this->isStdIn) { - $this->isStdIn = 1 === \count($this->options['path']) && '-' === $this->options['path'][0]; - } - - return $this->isStdIn; - } - - /** - * @return array - */ - private function parseRules(): array - { - $this->configRulesAreOverridden = null !== $this->options['rules']; - - if (null === $this->options['rules']) { - $this->configRulesAreOverridden = false; - - return $this->getConfig()->getRules(); - } - - $rules = trim($this->options['rules']); - if ('' === $rules) { - throw new InvalidConfigurationException('Empty rules value is not allowed.'); - } - - if (str_starts_with($rules, '{')) { - try { - return json_decode($rules, true, 512, \JSON_THROW_ON_ERROR); - } catch (\JsonException $e) { - throw new InvalidConfigurationException(\sprintf('Invalid JSON rules input: "%s".', $e->getMessage())); - } - } - - $rules = []; - - foreach (explode(',', $this->options['rules']) as $rule) { - $rule = trim($rule); - - if ('' === $rule) { - throw new InvalidConfigurationException('Empty rule name is not allowed.'); - } - - if (str_starts_with($rule, '-')) { - $rules[substr($rule, 1)] = false; - } else { - $rules[$rule] = true; - } - } - - $this->configRulesAreOverridden = true; - - return $rules; - } - - /** - * @param array $rules - * - * @throws InvalidConfigurationException - */ - private function validateRules(array $rules): void - { - /** - * Create a ruleset that contains all configured rules, even when they originally have been disabled. - * - * @see RuleSet::resolveSet() - */ - $ruleSet = []; - - foreach ($rules as $key => $value) { - if (\is_int($key)) { - throw new InvalidConfigurationException(\sprintf('Missing value for "%s" rule/set.', $value)); - } - - $ruleSet[$key] = true; - } - - $ruleSet = new RuleSet($ruleSet); - - $configuredFixers = array_keys($ruleSet->getRules()); - - $fixers = $this->createFixerFactory()->getFixers(); - - $availableFixers = array_map(static fn (FixerInterface $fixer): string => $fixer->getName(), $fixers); - - $unknownFixers = array_diff($configuredFixers, $availableFixers); - - if (\count($unknownFixers) > 0) { - /** - * @TODO v4: `renamedRulesFromV2ToV3` no longer needed - * @TODO v3.99: decide how to handle v3 to v4 (where legacy rules are already removed) - */ - $renamedRulesFromV2ToV3 = [ - 'blank_line_before_return' => [ - 'new_name' => 'blank_line_before_statement', - 'config' => ['statements' => ['return']], - ], - 'final_static_access' => [ - 'new_name' => 'self_static_accessor', - ], - 'hash_to_slash_comment' => [ - 'new_name' => 'single_line_comment_style', - 'config' => ['comment_types' => ['hash']], - ], - 'lowercase_constants' => [ - 'new_name' => 'constant_case', - 'config' => ['case' => 'lower'], - ], - 'no_extra_consecutive_blank_lines' => [ - 'new_name' => 'no_extra_blank_lines', - ], - 'no_multiline_whitespace_before_semicolons' => [ - 'new_name' => 'multiline_whitespace_before_semicolons', - ], - 'no_short_echo_tag' => [ - 'new_name' => 'echo_tag_syntax', - 'config' => ['format' => 'long'], - ], - 'php_unit_ordered_covers' => [ - 'new_name' => 'phpdoc_order_by_value', - 'config' => ['annotations' => ['covers']], - ], - 'phpdoc_inline_tag' => [ - 'new_name' => 'general_phpdoc_tag_rename, phpdoc_inline_tag_normalizer and phpdoc_tag_type', - ], - 'pre_increment' => [ - 'new_name' => 'increment_style', - 'config' => ['style' => 'pre'], - ], - 'psr0' => [ - 'new_name' => 'psr_autoloading', - 'config' => ['dir' => 'x'], - ], - 'psr4' => [ - 'new_name' => 'psr_autoloading', - ], - 'silenced_deprecation_error' => [ - 'new_name' => 'error_suppression', - ], - 'trailing_comma_in_multiline_array' => [ - 'new_name' => 'trailing_comma_in_multiline', - 'config' => ['elements' => ['arrays']], - ], - ]; - - $message = 'The rules contain unknown fixers: '; - $hasOldRule = false; - - foreach ($unknownFixers as $unknownFixer) { - if (isset($renamedRulesFromV2ToV3[$unknownFixer])) { // Check if present as old renamed rule - $hasOldRule = true; - $message .= \sprintf( - '"%s" is renamed (did you mean "%s"?%s), ', - $unknownFixer, - $renamedRulesFromV2ToV3[$unknownFixer]['new_name'], - isset($renamedRulesFromV2ToV3[$unknownFixer]['config']) ? ' (note: use configuration "'.Utils::toString($renamedRulesFromV2ToV3[$unknownFixer]['config']).'")' : '', - ); - } else { // Go to normal matcher if it is not a renamed rule - $matcher = new WordMatcher($availableFixers); - $alternative = $matcher->match($unknownFixer); - $message .= \sprintf( - '"%s"%s, ', - $unknownFixer, - null === $alternative ? '' : ' (did you mean "'.$alternative.'"?)', - ); - } - } - - $message = substr($message, 0, -2).'.'; - - if ($hasOldRule) { - $message .= "\nFor more info about updating see: https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/v3.0.0/UPGRADE-v3.md#renamed-ruless."; - } - - throw new InvalidConfigurationException($message); - } - - foreach ($fixers as $fixer) { - $fixerName = $fixer->getName(); - if (isset($rules[$fixerName]) && $fixer instanceof DeprecatedFixerInterface) { - $successors = $fixer->getSuccessorsNames(); - $messageEnd = [] === $successors - ? \sprintf(' and will be removed in version %d.0.', Application::getMajorVersion() + 1) - : \sprintf('. Use %s instead.', str_replace('`', '"', Utils::naturalLanguageJoinWithBackticks($successors))); - - Future::triggerDeprecation(new \RuntimeException("Rule \"{$fixerName}\" is deprecated{$messageEnd}")); - } - } - } - - /** - * Apply path on config instance. - * - * @return iterable<\SplFileInfo> - */ - private function resolveFinder(): iterable - { - $this->configFinderIsOverridden = false; - - if ($this->isStdIn()) { - return new \ArrayIterator([new StdinFileInfo()]); - } - - if (!\in_array( - $this->options['path-mode'], - self::PATH_MODE_VALUES, - true, - )) { - throw new InvalidConfigurationException(\sprintf( - 'The path-mode "%s" is not defined, supported are %s.', - $this->options['path-mode'], - Utils::naturalLanguageJoin(self::PATH_MODE_VALUES), - )); - } - - $isIntersectionPathMode = self::PATH_MODE_INTERSECTION === $this->options['path-mode']; - - $paths = array_map( - static fn (string $path): string => realpath($path), // @phpstan-ignore return.type - $this->getPath(), - ); - - if (0 === \count($paths)) { - if ($isIntersectionPathMode) { - return new \ArrayIterator([]); - } - - return $this->getConfig()->getFinder(); - } - - $pathsByType = [ - 'file' => [], - 'dir' => [], - ]; - - foreach ($paths as $path) { - if (is_file($path)) { - $pathsByType['file'][] = $path; - } else { - $pathsByType['dir'][] = $path.\DIRECTORY_SEPARATOR; - } - } - - $nestedFinder = null; - $currentFinder = $this->getConfig()->getFinder(); - - try { - $nestedFinder = $currentFinder instanceof \IteratorAggregate - ? $currentFinder->getIterator() - : ( - $currentFinder instanceof \Traversable - ? $currentFinder - : new \ArrayIterator($currentFinder) - ); - } catch (\Exception $e) { - } - - if ($isIntersectionPathMode) { - if (null === $nestedFinder) { - throw new InvalidConfigurationException( - 'Cannot create intersection with not-fully defined Finder in configuration file.', - ); - } - - return new \CallbackFilterIterator( - new \IteratorIterator($nestedFinder), - static function (\SplFileInfo $current) use ($pathsByType): bool { - $currentRealPath = $current->getRealPath(); - - if (\in_array($currentRealPath, $pathsByType['file'], true)) { - return true; - } - - foreach ($pathsByType['dir'] as $path) { - if (str_starts_with($currentRealPath, $path)) { - return true; - } - } - - return false; - }, - ); - } - - if (null !== $this->getConfigFile() && null !== $nestedFinder) { - $this->configFinderIsOverridden = true; - } - - if ($currentFinder instanceof SymfonyFinder && null === $nestedFinder) { - // finder from configuration Symfony finder and it is not fully defined, we may fulfill it - return $currentFinder->in($pathsByType['dir'])->append($pathsByType['file']); - } - - return Finder::create()->in($pathsByType['dir'])->append($pathsByType['file']); - } - - /** - * Set option that will be resolved. - * - * @param mixed $value - */ - private function setOption(string $name, $value): void - { - if (!\array_key_exists($name, $this->options)) { - throw new InvalidConfigurationException(\sprintf('Unknown option name: "%s".', $name)); - } - - $this->options[$name] = $value; - } - - /** - * @param key-of<_Options> $optionName - */ - private function resolveOptionBooleanValue(string $optionName): bool - { - $value = $this->options[$optionName]; - - if (self::BOOL_YES === $value) { - return true; - } - - if (self::BOOL_NO === $value) { - return false; - } - - throw new InvalidConfigurationException(\sprintf('Expected "%s" or "%s" for option "%s", got "%s".', self::BOOL_YES, self::BOOL_NO, $optionName, \is_object($value) ? \get_class($value) : (\is_scalar($value) ? $value : \gettype($value)))); - } - - private static function separatedContextLessInclude(string $path): ConfigInterface - { - $config = include $path; - - // verify that the config has an instance of Config - if (!$config instanceof ConfigInterface) { - throw new InvalidConfigurationException(\sprintf('The config file: "%s" does not return a "%s" instance. Got: "%s".', $path, ConfigInterface::class, get_debug_type($config))); - } - - return $config; - } - - private function isCachingAllowedForRuntime(): bool - { - return $this->toolInfo->isInstalledAsPhar() - || $this->toolInfo->isInstalledByComposer() - || $this->toolInfo->isRunInsideDocker() - || filter_var(getenv('PHP_CS_FIXER_ENFORCE_CACHE'), \FILTER_VALIDATE_BOOL); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php deleted file mode 100644 index 5d80eb9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php +++ /dev/null @@ -1,160 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Output; - -use PhpCsFixer\Differ\DiffConsoleFormatter; -use PhpCsFixer\Error\Error; -use PhpCsFixer\Linter\LintingException; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ErrorOutput -{ - private OutputInterface $output; - - private bool $isDecorated; - - public function __construct(OutputInterface $output) - { - $this->output = $output; - $this->isDecorated = $output->isDecorated(); - } - - /** - * @param list $errors - */ - public function listErrors(string $process, array $errors): void - { - $this->output->writeln(['', \sprintf( - 'Files that were not fixed due to errors reported during %s:', - $process, - )]); - - $showDetails = $this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE; - $showTrace = $this->output->getVerbosity() >= OutputInterface::VERBOSITY_DEBUG; - foreach ($errors as $i => $error) { - $this->output->writeln(\sprintf('%4d) %s', $i + 1, $error->getFilePath())); - $e = $error->getSource(); - if (!$showDetails || null === $e) { - continue; - } - - $class = \sprintf('[%s]', \get_class($e)); - $message = $e->getMessage(); - $code = $e->getCode(); - if (0 !== $code) { - $message .= " ({$code})"; - } - - $length = max(\strlen($class), \strlen($message)); - $lines = [ - '', - $class, - $message, - '', - ]; - - $this->output->writeln(''); - - foreach ($lines as $line) { - if (\strlen($line) < $length) { - $line .= str_repeat(' ', $length - \strlen($line)); - } - - $this->output->writeln(\sprintf(' %s ', $this->prepareOutput($line))); - } - - if ($showTrace && !$e instanceof LintingException) { // stack trace of lint exception is of no interest - $this->output->writeln(''); - $stackTrace = $e->getTrace(); - foreach ($stackTrace as $trace) { - if (isset($trace['class']) && Command::class === $trace['class'] && 'run' === $trace['function']) { - $this->output->writeln(' [ ... ]'); - - break; - } - - $this->outputTrace($trace); - } - } - - if (Error::TYPE_LINT === $error->getType() && 0 < \count($error->getAppliedFixers())) { - $this->output->writeln(''); - $this->output->writeln(\sprintf(' Applied fixers: %s', implode(', ', $error->getAppliedFixers()))); - - $diff = $error->getDiff(); - if ('' !== $diff) { - $diffFormatter = new DiffConsoleFormatter( - $this->isDecorated, - \sprintf( - ' ---------- begin diff ----------%s%%s%s ----------- end diff -----------', - \PHP_EOL, - \PHP_EOL, - ), - ); - - $this->output->writeln($diffFormatter->format($diff)); - } - } - } - } - - /** - * @param array{ - * function?: string, - * line?: int, - * file?: string, - * class?: class-string, - * type?: '->'|'::', - * args?: list, - * object?: object, - * } $trace - */ - private function outputTrace(array $trace): void - { - if (isset($trace['class'], $trace['type'], $trace['function'])) { - $this->output->writeln(\sprintf( - ' %s%s%s()', - $this->prepareOutput($trace['class']), - $this->prepareOutput($trace['type']), - $this->prepareOutput($trace['function']), - )); - } elseif (isset($trace['function'])) { - $this->output->writeln(\sprintf(' %s()', $this->prepareOutput($trace['function']))); - } - - if (isset($trace['file'])) { - $this->output->writeln( - \sprintf(' in %s', $this->prepareOutput($trace['file'])) - .(isset($trace['line']) ? \sprintf(' at line %d', $trace['line']) : ' at unknown line'), - ); - } - } - - private function prepareOutput(string $string): string - { - return $this->isDecorated - ? OutputFormatter::escape($string) - : $string; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php deleted file mode 100644 index 75ff3aa..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Output; - -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class OutputContext -{ - private ?OutputInterface $output; - private int $terminalWidth; - private int $filesCount; - - public function __construct( - ?OutputInterface $output, - int $terminalWidth, - int $filesCount - ) { - $this->output = $output; - $this->terminalWidth = $terminalWidth; - $this->filesCount = $filesCount; - } - - public function getOutput(): ?OutputInterface - { - return $this->output; - } - - public function getTerminalWidth(): int - { - return $this->terminalWidth; - } - - public function getFilesCount(): int - { - return $this->filesCount; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php deleted file mode 100644 index 25997f3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php +++ /dev/null @@ -1,129 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Output\Progress; - -use PhpCsFixer\Console\Output\OutputContext; -use PhpCsFixer\Runner\Event\FileProcessed; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Output writer to show the progress of a FixCommand using dots and meaningful letters. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DotsOutput implements ProgressOutputInterface -{ - /** - * File statuses map. - * - * @var array - */ - private const EVENT_STATUS_MAP = [ - FileProcessed::STATUS_NO_CHANGES => ['symbol' => '.', 'format' => '%s', 'description' => 'no changes'], - FileProcessed::STATUS_FIXED => ['symbol' => 'F', 'format' => '%s', 'description' => 'fixed'], - FileProcessed::STATUS_SKIPPED => ['symbol' => 'S', 'format' => '%s', 'description' => 'skipped (cached or empty file)'], - FileProcessed::STATUS_NON_MONOLITHIC => ['symbol' => 'M', 'format' => '%s', 'description' => 'skipped (non-monolithic)'], - FileProcessed::STATUS_INVALID => ['symbol' => 'I', 'format' => '%s', 'description' => 'invalid file syntax (file ignored)'], - FileProcessed::STATUS_EXCEPTION => ['symbol' => 'E', 'format' => '%s', 'description' => 'error'], - FileProcessed::STATUS_LINT => ['symbol' => 'E', 'format' => '%s', 'description' => 'error'], - ]; - - /** @readonly */ - private OutputContext $context; - - private int $processedFiles = 0; - - private int $symbolsPerLine; - - public function __construct(OutputContext $context) - { - $this->context = $context; - - // max number of characters per line - // - total length x 2 (e.g. " 1 / 123" => 6 digits and padding spaces) - // - 11 (extra spaces, parentheses and percentage characters, e.g. " x / x (100%)") - $this->symbolsPerLine = max(1, $context->getTerminalWidth() - \strlen((string) $context->getFilesCount()) * 2 - 11); - } - - /** - * This class is not intended to be serialized, - * and cannot be deserialized (see __wakeup method). - */ - public function __serialize(): array - { - throw new \BadMethodCallException('Cannot serialize '.self::class); - } - - /** - * Disable the deserialization of the class to prevent attacker executing - * code by leveraging the __destruct method. - * - * @param array $data - * - * @see https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection - */ - public function __unserialize(array $data): void - { - throw new \BadMethodCallException('Cannot unserialize '.self::class); - } - - public function onFixerFileProcessed(FileProcessed $event): void - { - $status = self::EVENT_STATUS_MAP[$event->getStatus()]; - $this->getOutput()->write($this->getOutput()->isDecorated() ? \sprintf($status['format'], $status['symbol']) : $status['symbol']); - - ++$this->processedFiles; - - $symbolsOnCurrentLine = $this->processedFiles % $this->symbolsPerLine; - $isLast = $this->processedFiles === $this->context->getFilesCount(); - - if (0 === $symbolsOnCurrentLine || $isLast) { - $this->getOutput()->write(\sprintf( - '%s %'.\strlen((string) $this->context->getFilesCount()).'d / %d (%3d%%)', - $isLast && 0 !== $symbolsOnCurrentLine ? str_repeat(' ', $this->symbolsPerLine - $symbolsOnCurrentLine) : '', - $this->processedFiles, - $this->context->getFilesCount(), - round($this->processedFiles / $this->context->getFilesCount() * 100), - )); - - if (!$isLast) { - $this->getOutput()->writeln(''); - } - } - } - - public function printLegend(): void - { - $symbols = []; - - foreach (self::EVENT_STATUS_MAP as $status) { - $symbol = $status['symbol']; - if (isset($symbols[$symbol])) { - continue; - } - - $symbols[$symbol] = \sprintf('%s-%s', $this->getOutput()->isDecorated() ? \sprintf($status['format'], $symbol) : $symbol, $status['description']); - } - - $this->getOutput()->write(\sprintf("\nLegend: %s\n", implode(', ', $symbols))); - } - - private function getOutput(): OutputInterface - { - return $this->context->getOutput(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php deleted file mode 100644 index 0b4a037..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Output\Progress; - -use PhpCsFixer\Runner\Event\FileProcessed; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NullOutput implements ProgressOutputInterface -{ - public function printLegend(): void {} - - public function onFixerFileProcessed(FileProcessed $event): void {} -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php deleted file mode 100644 index 537a949..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php +++ /dev/null @@ -1,82 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Output\Progress; - -use PhpCsFixer\Console\Output\OutputContext; -use PhpCsFixer\Runner\Event\FileProcessed; -use Symfony\Component\Console\Helper\ProgressBar; - -/** - * Output writer to show the progress of a FixCommand using progress bar (percentage). - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PercentageBarOutput implements ProgressOutputInterface -{ - /** @readonly */ - private OutputContext $context; - - private ProgressBar $progressBar; - - public function __construct(OutputContext $context) - { - $this->context = $context; - - $this->progressBar = new ProgressBar($context->getOutput(), $this->context->getFilesCount()); - $this->progressBar->setBarCharacter('▓'); // dark shade character \u2593 - $this->progressBar->setEmptyBarCharacter('░'); // light shade character \u2591 - $this->progressBar->setProgressCharacter(''); - $this->progressBar->setFormat('normal'); - - $this->progressBar->start(); - } - - /** - * This class is not intended to be serialized, - * and cannot be deserialized (see __wakeup method). - */ - public function __serialize(): array - { - throw new \BadMethodCallException('Cannot serialize '.self::class); - } - - /** - * Disable the deserialization of the class to prevent attacker executing - * code by leveraging the __destruct method. - * - * @param array $data - * - * @see https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection - */ - public function __unserialize(array $data): void - { - throw new \BadMethodCallException('Cannot unserialize '.self::class); - } - - public function onFixerFileProcessed(FileProcessed $event): void - { - $this->progressBar->advance(1); - - if ($this->progressBar->getProgress() === $this->progressBar->getMaxSteps()) { - $this->context->getOutput()->write("\n\n"); - } - } - - public function printLegend(): void {} -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php deleted file mode 100644 index 3426aa4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php +++ /dev/null @@ -1,65 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Output\Progress; - -use PhpCsFixer\Console\Output\OutputContext; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProgressOutputFactory -{ - /** - * @var array> - */ - private const OUTPUT_TYPE_MAP = [ - ProgressOutputType::NONE => NullOutput::class, - ProgressOutputType::DOTS => DotsOutput::class, - ProgressOutputType::BAR => PercentageBarOutput::class, - ]; - - /** - * @param ProgressOutputType::* $outputType - */ - public function create(string $outputType, OutputContext $context): ProgressOutputInterface - { - if (null === $context->getOutput()) { - $outputType = ProgressOutputType::NONE; - } - - if (!$this->isBuiltInType($outputType)) { - throw new \InvalidArgumentException( - \sprintf( - 'Something went wrong, "%s" output type is not supported', - $outputType, - ), - ); - } - - $outputClass = self::OUTPUT_TYPE_MAP[$outputType]; - - // @phpstan-ignore-next-line new.noConstructor - return new $outputClass($context); - } - - private function isBuiltInType(string $outputType): bool - { - return \in_array($outputType, ProgressOutputType::all(), true); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php deleted file mode 100644 index feaabec..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php +++ /dev/null @@ -1,29 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Output\Progress; - -use PhpCsFixer\Runner\Event\FileProcessed; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface ProgressOutputInterface -{ - public function printLegend(): void; - - public function onFixerFileProcessed(FileProcessed $event): void; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php deleted file mode 100644 index 6cdc4b1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php +++ /dev/null @@ -1,41 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Output\Progress; - -/** - * @TODO PHP 8.1 switch this and similar classes to ENUM - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProgressOutputType -{ - public const NONE = 'none'; - public const DOTS = 'dots'; - public const BAR = 'bar'; - - /** - * @return non-empty-list - */ - public static function all(): array - { - return [ - self::BAR, - self::DOTS, - self::NONE, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php deleted file mode 100644 index d1d938c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php +++ /dev/null @@ -1,80 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\FixReport; - -use PhpCsFixer\Console\Application; -use Symfony\Component\Console\Formatter\OutputFormatter; - -/** - * @author Kévin Gomez - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CheckstyleReporter implements ReporterInterface -{ - public function getFormat(): string - { - return 'checkstyle'; - } - - public function generate(ReportSummary $reportSummary): string - { - if (!\extension_loaded('dom')) { - throw new \RuntimeException('Cannot generate report! `ext-dom` is not available!'); - } - - $dom = new \DOMDocument('1.0', 'UTF-8'); - - $checkstyles = $dom->appendChild($dom->createElement('checkstyle')); - \assert($checkstyles instanceof \DOMElement); - - $checkstyles->setAttribute('version', Application::getAbout()); - - foreach ($reportSummary->getChanged() as $filePath => $fixResult) { - $file = $checkstyles->appendChild($dom->createElement('file')); - \assert($file instanceof \DOMElement); - - $file->setAttribute('name', $filePath); - - foreach ($fixResult['appliedFixers'] as $appliedFixer) { - $error = $this->createError($dom, $appliedFixer); - $file->appendChild($error); - } - } - - $dom->formatOutput = true; - - $result = $dom->saveXML(); - if (false === $result) { - throw new \RuntimeException('Failed to generate XML output'); - } - - return $reportSummary->isDecoratedOutput() ? OutputFormatter::escape($result) : $result; - } - - private function createError(\DOMDocument $dom, string $appliedFixer): \DOMElement - { - $error = $dom->createElement('error'); - $error->setAttribute('severity', 'warning'); - $error->setAttribute('source', 'PHP-CS-Fixer.'.$appliedFixer); - $error->setAttribute('message', 'Found violation(s) of type: '.$appliedFixer); - - return $error; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php deleted file mode 100644 index 0415ddd..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php +++ /dev/null @@ -1,174 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\FixReport; - -use PhpCsFixer\Console\Application; -use PhpCsFixer\Documentation\DocumentationLocator; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\FixerFactory; -use SebastianBergmann\Diff\Chunk; -use SebastianBergmann\Diff\Diff; -use SebastianBergmann\Diff\Line; -use SebastianBergmann\Diff\Parser; -use Symfony\Component\Console\Formatter\OutputFormatter; - -/** - * Generates a report according to gitlabs subset of codeclimate json files. - * - * @author Hans-Christian Otto - * @author Dariusz Rumiński - * - * @see https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md#data-types - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class GitlabReporter implements ReporterInterface -{ - private Parser $diffParser; - private DocumentationLocator $documentationLocator; - private FixerFactory $fixerFactory; - - /** - * @var array - */ - private array $fixers; - - public function __construct() - { - $this->diffParser = new Parser(); - $this->documentationLocator = new DocumentationLocator(); - - $this->fixerFactory = new FixerFactory(); - $this->fixerFactory->registerBuiltInFixers(); - - $this->fixers = $this->createFixers(); - } - - public function getFormat(): string - { - return 'gitlab'; - } - - /** - * Process changed files array. Returns generated report. - */ - public function generate(ReportSummary $reportSummary): string - { - $about = Application::getAbout(); - - $report = []; - foreach ($reportSummary->getChanged() as $fileName => $change) { - foreach ($change['appliedFixers'] as $fixerName) { - $fixer = $this->fixers[$fixerName] ?? null; - - $report[] = [ - 'check_name' => 'PHP-CS-Fixer.'.$fixerName, - 'description' => null !== $fixer - ? $fixer->getDefinition()->getSummary() - : 'PHP-CS-Fixer.'.$fixerName.' (custom rule)', - 'content' => [ - 'body' => \sprintf( - "%s\n%s", - $about, - null !== $fixer - ? \sprintf( - 'Check [docs](https://cs.symfony.com/doc/rules/%s.html) for more information.', - substr($this->documentationLocator->getFixerDocumentationFileRelativePath($fixer), 0, -4), // -4 to drop `.rst` - ) - : 'Check performed with a custom rule.', - ), - ], - 'categories' => ['Style'], - 'fingerprint' => md5($fileName.$fixerName), - 'severity' => 'minor', - 'location' => [ - 'path' => $fileName, - 'lines' => self::getLines($this->diffParser->parse($change['diff'])), - ], - ]; - } - } - - $jsonString = json_encode($report, \JSON_THROW_ON_ERROR); - - return $reportSummary->isDecoratedOutput() ? OutputFormatter::escape($jsonString) : $jsonString; - } - - /** - * @param list $diffs - * - * @return array{begin: int, end: int} - */ - private static function getLines(array $diffs): array - { - if (isset($diffs[0])) { - $firstDiff = $diffs[0]; - - $firstChunk = \Closure::bind(static fn (Diff $diff) => array_shift($diff->chunks), null, $firstDiff)($firstDiff); - - if ($firstChunk instanceof Chunk) { - return self::getBeginEndForDiffChunk($firstChunk); - } - } - - return ['begin' => 0, 'end' => 0]; - } - - /** - * @return array{begin: int, end: int} - */ - private static function getBeginEndForDiffChunk(Chunk $chunk): array - { - $start = \Closure::bind(static fn (Chunk $chunk): int => $chunk->start, null, $chunk)($chunk); - $startRange = \Closure::bind(static fn (Chunk $chunk): int => $chunk->startRange, null, $chunk)($chunk); - $lines = \Closure::bind(static fn (Chunk $chunk): array => $chunk->lines, null, $chunk)($chunk); - - \assert(\count($lines) > 0); - - $firstModifiedLineOffset = array_find_key($lines, static function (Line $line): bool { - $type = \Closure::bind(static fn (Line $line): int => $line->type, null, $line)($line); - - return Line::UNCHANGED !== $type; - }); - \assert(\is_int($firstModifiedLineOffset)); - - return [ - // offset the start by where the first line is actually modified - 'begin' => $start + $firstModifiedLineOffset, - // it's not where last modification takes place, only where diff (with --context) ends - 'end' => $start + $startRange, - ]; - } - - /** - * @return array - */ - private function createFixers(): array - { - $fixers = []; - - foreach ($this->fixerFactory->getFixers() as $fixer) { - $fixers[$fixer->getName()] = $fixer; - } - - ksort($fixers); - - return $fixers; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php deleted file mode 100644 index ad802a3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\FixReport; - -use PhpCsFixer\Console\Application; -use Symfony\Component\Console\Formatter\OutputFormatter; - -/** - * @author Boris Gorbylev - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class JsonReporter implements ReporterInterface -{ - public function getFormat(): string - { - return 'json'; - } - - public function generate(ReportSummary $reportSummary): string - { - $jsonFiles = []; - - foreach ($reportSummary->getChanged() as $file => $fixResult) { - $jsonFile = ['name' => $file]; - - if ($reportSummary->shouldAddAppliedFixers()) { - $jsonFile['appliedFixers'] = $fixResult['appliedFixers']; - } - - if ('' !== $fixResult['diff']) { - $jsonFile['diff'] = $fixResult['diff']; - } - - $jsonFiles[] = $jsonFile; - } - - $json = [ - 'about' => Application::getAbout(), - 'files' => $jsonFiles, - 'time' => [ - 'total' => round($reportSummary->getTime() / 1_000, 3), - ], - 'memory' => round($reportSummary->getMemory() / 1_024 / 1_024, 3), - ]; - - $json = json_encode($json, \JSON_THROW_ON_ERROR); - - return $reportSummary->isDecoratedOutput() ? OutputFormatter::escape($json) : $json; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php deleted file mode 100644 index 7210e56..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php +++ /dev/null @@ -1,153 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\FixReport; - -use PhpCsFixer\Console\Application; -use PhpCsFixer\Preg; -use Symfony\Component\Console\Formatter\OutputFormatter; - -/** - * @author Boris Gorbylev - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class JunitReporter implements ReporterInterface -{ - public function getFormat(): string - { - return 'junit'; - } - - public function generate(ReportSummary $reportSummary): string - { - if (!\extension_loaded('dom')) { - throw new \RuntimeException('Cannot generate report! `ext-dom` is not available!'); - } - - $dom = new \DOMDocument('1.0', 'UTF-8'); - $testsuites = $dom->appendChild($dom->createElement('testsuites')); - - $testsuite = $testsuites->appendChild($dom->createElement('testsuite')); - \assert($testsuite instanceof \DOMElement); - - $testsuite->setAttribute('name', 'PHP CS Fixer'); - - $properties = $dom->createElement('properties'); - $property = $dom->createElement('property'); - $property->setAttribute('name', 'about'); - $property->setAttribute('value', Application::getAbout()); - $properties->appendChild($property); - $testsuite->appendChild($properties); - - if (\count($reportSummary->getChanged()) > 0) { - $this->createFailedTestCases($dom, $testsuite, $reportSummary); - } else { - $this->createSuccessTestCase($dom, $testsuite); - } - - if ($reportSummary->getTime() > 0) { - $testsuite->setAttribute( - 'time', - \sprintf( - '%.3f', - $reportSummary->getTime() / 1_000, - ), - ); - } - - $dom->formatOutput = true; - - $result = $dom->saveXML(); - if (false === $result) { - throw new \RuntimeException('Failed to generate XML output'); - } - - return $reportSummary->isDecoratedOutput() ? OutputFormatter::escape($result) : $result; - } - - private function createSuccessTestCase(\DOMDocument $dom, \DOMElement $testsuite): void - { - $testcase = $dom->createElement('testcase'); - $testcase->setAttribute('name', 'All OK'); - $testcase->setAttribute('assertions', '1'); - - $testsuite->appendChild($testcase); - $testsuite->setAttribute('tests', '1'); - $testsuite->setAttribute('assertions', '1'); - $testsuite->setAttribute('failures', '0'); - $testsuite->setAttribute('errors', '0'); - } - - private function createFailedTestCases(\DOMDocument $dom, \DOMElement $testsuite, ReportSummary $reportSummary): void - { - $assertionsCount = 0; - foreach ($reportSummary->getChanged() as $file => $fixResult) { - $testcase = $this->createFailedTestCase( - $dom, - $file, - $fixResult, - $reportSummary->shouldAddAppliedFixers(), - ); - $testsuite->appendChild($testcase); - $assertionsCount += (int) $testcase->getAttribute('assertions'); - } - - $testsuite->setAttribute('tests', (string) \count($reportSummary->getChanged())); - $testsuite->setAttribute('assertions', (string) $assertionsCount); - $testsuite->setAttribute('failures', (string) $assertionsCount); - $testsuite->setAttribute('errors', '0'); - } - - /** - * @param array{appliedFixers: list, diff: string} $fixResult - */ - private function createFailedTestCase(\DOMDocument $dom, string $file, array $fixResult, bool $shouldAddAppliedFixers): \DOMElement - { - $appliedFixersCount = \count($fixResult['appliedFixers']); - - $testName = str_replace('.', '_DOT_', Preg::replace('@\.'.pathinfo($file, \PATHINFO_EXTENSION).'$@', '', $file)); - - $testcase = $dom->createElement('testcase'); - $testcase->setAttribute('name', $testName); - $testcase->setAttribute('file', $file); - $testcase->setAttribute('assertions', (string) $appliedFixersCount); - - $failure = $dom->createElement('failure'); - $failure->setAttribute('type', 'code_style'); - $testcase->appendChild($failure); - - if ($shouldAddAppliedFixers) { - $failureContent = "applied fixers:\n---------------\n"; - - foreach ($fixResult['appliedFixers'] as $appliedFixer) { - $failureContent .= "* {$appliedFixer}\n"; - } - } else { - $failureContent = "Wrong code style\n"; - } - - if ('' !== $fixResult['diff']) { - $failureContent .= "\nDiff:\n---------------\n\n".$fixResult['diff']; - } - - $failure->appendChild($dom->createCDATASection(trim($failureContent))); - - return $testcase; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php deleted file mode 100644 index 14d39f5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php +++ /dev/null @@ -1,105 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\FixReport; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReportSummary -{ - /** - * @var array, diff: string}> - */ - private array $changed; - - private int $filesCount; - - private int $time; - - private int $memory; - - private bool $addAppliedFixers; - - private bool $isDryRun; - - private bool $isDecoratedOutput; - - /** - * @param array, diff: string}> $changed - * @param int $time duration in milliseconds - * @param int $memory memory usage in bytes - */ - public function __construct( - array $changed, - int $filesCount, - int $time, - int $memory, - bool $addAppliedFixers, - bool $isDryRun, - bool $isDecoratedOutput - ) { - $this->changed = $changed; - $this->filesCount = $filesCount; - $this->time = $time; - $this->memory = $memory; - $this->addAppliedFixers = $addAppliedFixers; - $this->isDryRun = $isDryRun; - $this->isDecoratedOutput = $isDecoratedOutput; - } - - public function isDecoratedOutput(): bool - { - return $this->isDecoratedOutput; - } - - public function isDryRun(): bool - { - return $this->isDryRun; - } - - /** - * @return array, diff: string}> - */ - public function getChanged(): array - { - return $this->changed; - } - - public function getMemory(): int - { - return $this->memory; - } - - public function getTime(): int - { - return $this->time; - } - - public function getFilesCount(): int - { - return $this->filesCount; - } - - public function shouldAddAppliedFixers(): bool - { - return $this->addAppliedFixers; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterFactory.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterFactory.php deleted file mode 100644 index f33658b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterFactory.php +++ /dev/null @@ -1,95 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\FixReport; - -use Symfony\Component\Finder\Finder as SymfonyFinder; - -/** - * @author Boris Gorbylev - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReporterFactory -{ - /** @var array */ - private array $reporters = []; - - public function registerBuiltInReporters(): self - { - /** @var null|list> $builtInReporters */ - static $builtInReporters; - - if (null === $builtInReporters) { - $builtInReporters = []; - - foreach (SymfonyFinder::create()->files()->name('*Reporter.php')->in(__DIR__) as $file) { - $relativeNamespace = $file->getRelativePath(); - - /** @var class-string $class */ - $class = \sprintf( - '%s\%s%s', - __NAMESPACE__, - '' !== $relativeNamespace ? $relativeNamespace.'\\' : '', - $file->getBasename('.php'), - ); - $builtInReporters[] = $class; - } - } - - foreach ($builtInReporters as $reporterClass) { - $this->registerReporter(new $reporterClass()); - } - - return $this; - } - - /** - * @return $this - */ - public function registerReporter(ReporterInterface $reporter): self - { - $format = $reporter->getFormat(); - - if (isset($this->reporters[$format])) { - throw new \UnexpectedValueException(\sprintf('Reporter for format "%s" is already registered.', $format)); - } - - $this->reporters[$format] = $reporter; - - return $this; - } - - /** - * @return list - */ - public function getFormats(): array - { - $formats = array_keys($this->reporters); - sort($formats); - - return $formats; - } - - public function getReporter(string $format): ReporterInterface - { - if (!isset($this->reporters[$format])) { - throw new \UnexpectedValueException(\sprintf('Reporter for format "%s" is not registered.', $format)); - } - - return $this->reporters[$format]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterInterface.php deleted file mode 100644 index 0d7ef22..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterInterface.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\FixReport; - -/** - * @author Boris Gorbylev - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface ReporterInterface -{ - public function getFormat(): string; - - /** - * Process changed files array. Returns generated report. - */ - public function generate(ReportSummary $reportSummary): string; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php deleted file mode 100644 index 9e898ec..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php +++ /dev/null @@ -1,102 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\FixReport; - -use PhpCsFixer\Differ\DiffConsoleFormatter; - -/** - * @author Boris Gorbylev - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TextReporter implements ReporterInterface -{ - public function getFormat(): string - { - return 'txt'; - } - - public function generate(ReportSummary $reportSummary): string - { - $output = ''; - - $identifiedFiles = 0; - foreach ($reportSummary->getChanged() as $file => $fixResult) { - ++$identifiedFiles; - $output .= \sprintf('%4d) %s', $identifiedFiles, $file); - - if ($reportSummary->shouldAddAppliedFixers()) { - $output .= $this->getAppliedFixers( - $reportSummary->isDecoratedOutput(), - $fixResult['appliedFixers'], - ); - } - - $output .= $this->getDiff($reportSummary->isDecoratedOutput(), $fixResult['diff']); - $output .= \PHP_EOL; - } - - return $output.$this->getFooter( - $reportSummary->getTime(), - $identifiedFiles, - $reportSummary->getFilesCount(), - $reportSummary->getMemory(), - $reportSummary->isDryRun(), - ); - } - - /** - * @param list $appliedFixers - */ - private function getAppliedFixers(bool $isDecoratedOutput, array $appliedFixers): string - { - return \sprintf( - $isDecoratedOutput ? ' (%s)' : ' (%s)', - implode(', ', $appliedFixers), - ); - } - - private function getDiff(bool $isDecoratedOutput, string $diff): string - { - if ('' === $diff) { - return ''; - } - - $diffFormatter = new DiffConsoleFormatter($isDecoratedOutput, \sprintf( - ' ---------- begin diff ----------%s%%s%s ----------- end diff -----------', - \PHP_EOL, - \PHP_EOL, - )); - - return \PHP_EOL.$diffFormatter->format($diff).\PHP_EOL; - } - - private function getFooter(int $time, int $identifiedFiles, int $files, int $memory, bool $isDryRun): string - { - return \PHP_EOL.\sprintf( - '%s %d of %d %s in %.3f seconds, %.2f MB memory used'.\PHP_EOL, - $isDryRun ? 'Found' : 'Fixed', - $identifiedFiles, - $files, - $isDryRun ? 'files that can be fixed' : 'files', - $time / 1_000, - $memory / 1_024 / 1_024, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php deleted file mode 100644 index 309a088..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php +++ /dev/null @@ -1,143 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\FixReport; - -use PhpCsFixer\Console\Application; -use Symfony\Component\Console\Formatter\OutputFormatter; - -/** - * @author Boris Gorbylev - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class XmlReporter implements ReporterInterface -{ - public function getFormat(): string - { - return 'xml'; - } - - public function generate(ReportSummary $reportSummary): string - { - if (!\extension_loaded('dom')) { - throw new \RuntimeException('Cannot generate report! `ext-dom` is not available!'); - } - - $dom = new \DOMDocument('1.0', 'UTF-8'); - // new nodes should be added to this or existing children - $root = $dom->createElement('report'); - $dom->appendChild($root); - - $root->appendChild($this->createAboutElement($dom, Application::getAbout())); - - $filesXML = $dom->createElement('files'); - $root->appendChild($filesXML); - - $i = 1; - foreach ($reportSummary->getChanged() as $file => $fixResult) { - $fileXML = $dom->createElement('file'); - $fileXML->setAttribute('id', (string) $i++); - $fileXML->setAttribute('name', $file); - $filesXML->appendChild($fileXML); - - if ($reportSummary->shouldAddAppliedFixers()) { - $fileXML->appendChild( - $this->createAppliedFixersElement($dom, $fixResult['appliedFixers']), - ); - } - - if ('' !== $fixResult['diff']) { - $fileXML->appendChild($this->createDiffElement($dom, $fixResult['diff'])); - } - } - - if (0 !== $reportSummary->getTime()) { - $root->appendChild($this->createTimeElement($reportSummary->getTime(), $dom)); - } - - if (0 !== $reportSummary->getMemory()) { - $root->appendChild($this->createMemoryElement($reportSummary->getMemory(), $dom)); - } - - $dom->formatOutput = true; - - $result = $dom->saveXML(); - if (false === $result) { - throw new \RuntimeException('Failed to generate XML output'); - } - - return $reportSummary->isDecoratedOutput() ? OutputFormatter::escape($result) : $result; - } - - /** - * @param list $appliedFixers - */ - private function createAppliedFixersElement(\DOMDocument $dom, array $appliedFixers): \DOMElement - { - $appliedFixersXML = $dom->createElement('applied_fixers'); - - foreach ($appliedFixers as $appliedFixer) { - $appliedFixerXML = $dom->createElement('applied_fixer'); - $appliedFixerXML->setAttribute('name', $appliedFixer); - $appliedFixersXML->appendChild($appliedFixerXML); - } - - return $appliedFixersXML; - } - - private function createDiffElement(\DOMDocument $dom, string $diff): \DOMElement - { - $diffXML = $dom->createElement('diff'); - $diffXML->appendChild($dom->createCDATASection($diff)); - - return $diffXML; - } - - private function createTimeElement(float $time, \DOMDocument $dom): \DOMElement - { - $time = round($time / 1_000, 3); - - $timeXML = $dom->createElement('time'); - $timeXML->setAttribute('unit', 's'); - $timeTotalXML = $dom->createElement('total'); - $timeTotalXML->setAttribute('value', (string) $time); - $timeXML->appendChild($timeTotalXML); - - return $timeXML; - } - - private function createMemoryElement(float $memory, \DOMDocument $dom): \DOMElement - { - $memory = round($memory / 1_024 / 1_024, 3); - - $memoryXML = $dom->createElement('memory'); - $memoryXML->setAttribute('value', (string) $memory); - $memoryXML->setAttribute('unit', 'MB'); - - return $memoryXML; - } - - private function createAboutElement(\DOMDocument $dom, string $about): \DOMElement - { - $xml = $dom->createElement('about'); - $xml->setAttribute('value', $about); - - return $xml; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/JsonReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/JsonReporter.php deleted file mode 100644 index 3981db4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/JsonReporter.php +++ /dev/null @@ -1,54 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListRulesReport; - -use PhpCsFixer\Fixer\FixerInterface; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class JsonReporter implements ReporterInterface -{ - public function getFormat(): string - { - return 'json'; - } - - public function generate(ReportSummary $reportSummary): string - { - $fixers = $reportSummary->getFixers(); - - usort($fixers, static fn (FixerInterface $a, FixerInterface $b): int => $a->getName() <=> $b->getName()); - - $json = ['rules' => []]; - - foreach ($fixers as $fixer) { - $name = $fixer->getName(); - $json['rules'][$name] = [ - 'isRisky' => $fixer->isRisky(), - 'name' => $name, - 'summary' => $fixer->getDefinition()->getSummary(), - ]; - } - - return json_encode($json, \JSON_THROW_ON_ERROR | \JSON_PRETTY_PRINT); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReportSummary.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReportSummary.php deleted file mode 100644 index dbeff45..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReportSummary.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListRulesReport; - -use PhpCsFixer\Fixer\FixerInterface; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReportSummary -{ - /** - * @var list - */ - private array $fixers; - - /** - * @param list $fixers - */ - public function __construct(array $fixers) - { - $this->fixers = $fixers; - } - - /** - * @return list - */ - public function getFixers(): array - { - return $this->fixers; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterFactory.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterFactory.php deleted file mode 100644 index bc39daf..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterFactory.php +++ /dev/null @@ -1,79 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListRulesReport; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReporterFactory -{ - /** - * @var array - */ - private array $reporters = []; - - public function getReporter(string $format): ReporterInterface - { - if (!isset($this->reporters[$format])) { - throw new \UnexpectedValueException(\sprintf('The format "%s" is not defined.', $format)); - } - - return $this->reporters[$format]; - } - - /** - * @return list - */ - public function getFormats(): array - { - $formats = array_keys($this->reporters); - sort($formats); - - return $formats; - } - - /** - * @return $this - */ - public function registerBuiltInReporters(): self - { - $this - ->registerReporter(new JsonReporter()) - ->registerReporter(new TextReporter()) - ; - - return $this; - } - - /** - * @return $this - */ - public function registerReporter(ReporterInterface $reporter): self - { - $format = $reporter->getFormat(); - - if (isset($this->reporters[$format])) { - throw new \UnexpectedValueException(\sprintf('Reporter for format "%s" is already registered.', $format)); - } - - $this->reporters[$format] = $reporter; - - return $this; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterInterface.php deleted file mode 100644 index ad38fdb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/ReporterInterface.php +++ /dev/null @@ -1,29 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListRulesReport; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface ReporterInterface -{ - public function getFormat(): string; - - public function generate(ReportSummary $reportSummary): string; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/TextReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/TextReporter.php deleted file mode 100644 index 0f82d9b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListRulesReport/TextReporter.php +++ /dev/null @@ -1,53 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListRulesReport; - -use PhpCsFixer\Fixer\FixerInterface; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TextReporter implements ReporterInterface -{ - public function getFormat(): string - { - return 'txt'; - } - - public function generate(ReportSummary $reportSummary): string - { - $fixers = $reportSummary->getFixers(); - - usort($fixers, static fn (FixerInterface $a, FixerInterface $b): int => $a->getName() <=> $b->getName()); - - $output = ''; - - foreach ($fixers as $i => $fixer) { - $output .= \sprintf('%3d) %s', $i + 1, $fixer->getName()).\PHP_EOL.' '.$fixer->getDefinition()->getSummary().\PHP_EOL; - - if ($fixer->isRisky()) { - $output .= ' Rule is risky.'.\PHP_EOL; - } - } - - return $output; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php deleted file mode 100644 index 327bf75..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php +++ /dev/null @@ -1,54 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListSetsReport; - -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class JsonReporter implements ReporterInterface -{ - public function getFormat(): string - { - return 'json'; - } - - public function generate(ReportSummary $reportSummary): string - { - $sets = $reportSummary->getSets(); - - usort($sets, static fn (RuleSetDefinitionInterface $a, RuleSetDefinitionInterface $b): int => $a->getName() <=> $b->getName()); - - $json = ['sets' => []]; - - foreach ($sets as $set) { - $setName = $set->getName(); - $json['sets'][$setName] = [ - 'description' => $set->getDescription(), - 'isRisky' => $set->isRisky(), - 'name' => $setName, - ]; - } - - return json_encode($json, \JSON_THROW_ON_ERROR | \JSON_PRETTY_PRINT); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php deleted file mode 100644 index 733075a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListSetsReport; - -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReportSummary -{ - /** - * @var list - */ - private array $sets; - - /** - * @param list $sets - */ - public function __construct(array $sets) - { - $this->sets = $sets; - } - - /** - * @return list - */ - public function getSets(): array - { - return $this->sets; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterFactory.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterFactory.php deleted file mode 100644 index 1380a8d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterFactory.php +++ /dev/null @@ -1,100 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListSetsReport; - -use Symfony\Component\Finder\Finder as SymfonyFinder; - -/** - * @author Boris Gorbylev - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReporterFactory -{ - /** - * @var array - */ - private array $reporters = []; - - /** - * @return $this - */ - public function registerBuiltInReporters(): self - { - /** @var null|list> $builtInReporters */ - static $builtInReporters; - - if (null === $builtInReporters) { - $builtInReporters = []; - - foreach (SymfonyFinder::create()->files()->name('*Reporter.php')->in(__DIR__) as $file) { - $relativeNamespace = $file->getRelativePath(); - - /** @var class-string $class */ - $class = \sprintf( - '%s\%s%s', - __NAMESPACE__, - '' !== $relativeNamespace ? $relativeNamespace.'\\' : '', - $file->getBasename('.php'), - ); - $builtInReporters[] = $class; - } - } - - foreach ($builtInReporters as $reporterClass) { - $this->registerReporter(new $reporterClass()); - } - - return $this; - } - - /** - * @return $this - */ - public function registerReporter(ReporterInterface $reporter): self - { - $format = $reporter->getFormat(); - - if (isset($this->reporters[$format])) { - throw new \UnexpectedValueException(\sprintf('Reporter for format "%s" is already registered.', $format)); - } - - $this->reporters[$format] = $reporter; - - return $this; - } - - /** - * @return list - */ - public function getFormats(): array - { - $formats = array_keys($this->reporters); - sort($formats); - - return $formats; - } - - public function getReporter(string $format): ReporterInterface - { - if (!isset($this->reporters[$format])) { - throw new \UnexpectedValueException(\sprintf('Reporter for format "%s" is not registered.', $format)); - } - - return $this->reporters[$format]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterInterface.php deleted file mode 100644 index 3e4f9eb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterInterface.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListSetsReport; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface ReporterInterface -{ - public function getFormat(): string; - - /** - * Process changed files array. Returns generated report. - */ - public function generate(ReportSummary $reportSummary): string; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php deleted file mode 100644 index 6c03164..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php +++ /dev/null @@ -1,53 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\Report\ListSetsReport; - -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TextReporter implements ReporterInterface -{ - public function getFormat(): string - { - return 'txt'; - } - - public function generate(ReportSummary $reportSummary): string - { - $sets = $reportSummary->getSets(); - - usort($sets, static fn (RuleSetDefinitionInterface $a, RuleSetDefinitionInterface $b): int => $a->getName() <=> $b->getName()); - - $output = ''; - - foreach ($sets as $i => $set) { - $output .= \sprintf('%2d) %s', $i + 1, $set->getName()).\PHP_EOL.' '.$set->getDescription().\PHP_EOL; - - if ($set->isRisky()) { - $output .= ' Set contains risky rules.'.\PHP_EOL; - } - } - - return $output; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php deleted file mode 100644 index 2381e22..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php +++ /dev/null @@ -1,72 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\SelfUpdate; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class GithubClient implements GithubClientInterface -{ - private string $url; - - public function __construct(string $url = 'https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/tags') - { - $this->url = $url; - } - - public function getTags(): array - { - $result = @file_get_contents( - $this->url, - false, - stream_context_create([ - 'http' => [ - 'header' => 'User-Agent: PHP-CS-Fixer/PHP-CS-Fixer', - ], - ]), - ); - - if (false === $result) { - throw new \RuntimeException(\sprintf('Failed to load tags at "%s".', $this->url)); - } - - try { - /** - * @var list - */ - $result = json_decode($result, true, 512, \JSON_THROW_ON_ERROR); - } catch (\JsonException $e) { - throw new \RuntimeException(\sprintf( - 'Failed to read response from "%s" as JSON: %s.', - $this->url, - $e->getMessage(), - )); - } - - return array_map( - static fn (array $tagData): string => $tagData['name'], - $result, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php deleted file mode 100644 index b49297b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\SelfUpdate; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface GithubClientInterface -{ - /** - * @return list - */ - public function getTags(): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php deleted file mode 100644 index 3d35a6b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php +++ /dev/null @@ -1,106 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\SelfUpdate; - -use Composer\Semver\Comparator; -use Composer\Semver\Semver; -use Composer\Semver\VersionParser; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NewVersionChecker implements NewVersionCheckerInterface -{ - private GithubClientInterface $githubClient; - - private VersionParser $versionParser; - - /** - * @var null|list - */ - private ?array $availableVersions = null; - - public function __construct(GithubClientInterface $githubClient) - { - $this->githubClient = $githubClient; - $this->versionParser = new VersionParser(); - } - - public function getLatestVersion(): string - { - $this->retrieveAvailableVersions(); - - \assert(isset($this->availableVersions[0])); - - return $this->availableVersions[0]; - } - - public function getLatestVersionOfMajor(int $majorVersion): ?string - { - $this->retrieveAvailableVersions(); - - $semverConstraint = '^'.$majorVersion; - - foreach ($this->availableVersions as $availableVersion) { - if (Semver::satisfies($availableVersion, $semverConstraint)) { - return $availableVersion; - } - } - - return null; - } - - public function compareVersions(string $versionA, string $versionB): int - { - $versionA = $this->versionParser->normalize($versionA); - $versionB = $this->versionParser->normalize($versionB); - - if (Comparator::lessThan($versionA, $versionB)) { - return -1; - } - - if (Comparator::greaterThan($versionA, $versionB)) { - return 1; - } - - return 0; - } - - private function retrieveAvailableVersions(): void - { - if (null !== $this->availableVersions) { - return; - } - - foreach ($this->githubClient->getTags() as $version) { - try { - $this->versionParser->normalize($version); - - if ('stable' === VersionParser::parseStability($version)) { - $this->availableVersions[] = $version; - } - } catch (\UnexpectedValueException $exception) { - // not a valid version tag - } - } - - $versions = Semver::rsort($this->availableVersions); - \assert(array_is_list($versions)); // Semver::rsort provides soft `array` type, let's validate and ensure proper type for SCA - - $this->availableVersions = $versions; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php deleted file mode 100644 index a1be20d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console\SelfUpdate; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface NewVersionCheckerInterface -{ - /** - * Returns the tag of the latest version. - */ - public function getLatestVersion(): string; - - /** - * Returns the tag of the latest minor/patch version of the given major version. - */ - public function getLatestVersionOfMajor(int $majorVersion): ?string; - - /** - * Returns -1, 0, or 1 if the first version is respectively less than, - * equal to, or greater than the second. - */ - public function compareVersions(string $versionA, string $versionB): int; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php deleted file mode 100644 index 2d74d94..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php +++ /dev/null @@ -1,117 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Console; - -use PhpCsFixer\ComposerJsonReader; -use PhpCsFixer\ToolInfo; -use PhpCsFixer\ToolInfoInterface; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class WarningsDetector -{ - private ToolInfoInterface $toolInfo; - - /** - * @var list - */ - private array $warnings = []; - - public function __construct(ToolInfoInterface $toolInfo) - { - $this->toolInfo = $toolInfo; - } - - public function detectOldMajor(): void - { - // @TODO 3.99 to be activated with new MAJOR release 4.0 - // $currentMajorVersion = \intval(explode('.', Application::VERSION)[0], 10); - // $nextMajorVersion = $currentMajorVersion + 1; - // $this->warnings[] = "You are running PHP CS Fixer v{$currentMajorVersion}, which is not maintained anymore. Please update to v{$nextMajorVersion}."; - // $this->warnings[] = "You may find an UPGRADE guide at https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/v{$nextMajorVersion}.0.0/UPGRADE-v{$nextMajorVersion}.md ."; - } - - public function detectOldVendor(): void - { - if ($this->toolInfo->isInstalledByComposer()) { - $details = $this->toolInfo->getComposerInstallationDetails(); - if (ToolInfo::COMPOSER_LEGACY_PACKAGE_NAME === $details['name']) { - $this->warnings[] = \sprintf( - 'You are running PHP CS Fixer installed with old vendor `%s`. Please update to `%s`.', - ToolInfo::COMPOSER_LEGACY_PACKAGE_NAME, - ToolInfo::COMPOSER_PACKAGE_NAME, - ); - } - } - } - - public function detectNonMonolithic(): void - { - if (filter_var(getenv('PHP_CS_FIXER_NON_MONOLITHIC'), \FILTER_VALIDATE_BOOL)) { - $this->warnings[] = 'Processing non-monolithic files enabled, because `PHP_CS_FIXER_NON_MONOLITHIC` is set. Execution result may be unpredictable - non-monolithic files are not officially supported.'; - } - } - - public function detectHigherPhpVersion(): void - { - try { - $composerJsonReader = ComposerJsonReader::createSingleton(); - $minPhpVersion = $composerJsonReader->getPhp(); - - if (null === $minPhpVersion) { - $this->warnings[] = 'No PHP version requirement found in composer.json. It is recommended to specify a minimum PHP version supported by your project.'; - - return; - } - - $currentPhpVersion = \PHP_VERSION; - $currentPhpMajorMinor = \sprintf('%d.%d', \PHP_MAJOR_VERSION, \PHP_MINOR_VERSION); - - // Compare major.minor versions - if (version_compare($currentPhpMajorMinor, $minPhpVersion, '>')) { - $this->warnings[] = \sprintf( - 'You are running PHP CS Fixer on PHP %1$s, but the minimum PHP version supported by your project in composer.json is PHP %2$s. Executing PHP CS Fixer on newer PHP versions may introduce syntax or features not yet available in PHP %2$s, which could cause issues under that version. It is recommended to run PHP CS Fixer on PHP %2$s, to fit your project specifics.', - $currentPhpVersion, - $minPhpVersion, - ); - } - } catch (\Throwable $e) { - $this->warnings[] = \sprintf( - 'Unable to determine minimum PHP version supported by your project from composer.json: %s', - $e->getMessage(), - ); - } - } - - /** - * @return list - */ - public function getWarnings(): array - { - if (0 === \count($this->warnings)) { - return []; - } - - return array_values(array_unique(array_merge( - $this->warnings, - ['If you need help while solving warnings, ask at https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/discussions/, we will help you!'], - ))); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/CustomRulesetsAwareConfigInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/CustomRulesetsAwareConfigInterface.php deleted file mode 100644 index 7294d9a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/CustomRulesetsAwareConfigInterface.php +++ /dev/null @@ -1,43 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @author Greg Korba - * - * @TODO 4.0 Include support for custom rulesets in main ConfigInterface - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface CustomRulesetsAwareConfigInterface extends ConfigInterface -{ - /** - * Registers custom rule sets to be used the same way as built-in rule sets. - * - * @param list $ruleSets - * - * @todo v4 Introduce it in main ConfigInterface - * - * @return $this - */ - public function registerCustomRuleSets(array $ruleSets): ConfigInterface; - - /** - * @return list - */ - public function getCustomRuleSets(): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php deleted file mode 100644 index a2c1c49..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php +++ /dev/null @@ -1,88 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Differ; - -use PhpCsFixer\Preg; -use Symfony\Component\Console\Formatter\OutputFormatter; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DiffConsoleFormatter -{ - private bool $isDecoratedOutput; - - private string $template; - - public function __construct(bool $isDecoratedOutput, string $template = '%s') - { - $this->isDecoratedOutput = $isDecoratedOutput; - $this->template = $template; - } - - public function format(string $diff, string $lineTemplate = '%s'): string - { - $isDecorated = $this->isDecoratedOutput; - - $template = $isDecorated - ? $this->template - : Preg::replace('/<[^<>]+>/', '', $this->template); - - return \sprintf( - $template, - implode( - \PHP_EOL, - array_map( - static function (string $line) use ($isDecorated, $lineTemplate): string { - if ($isDecorated) { - $count = 0; - $line = Preg::replaceCallback( - '/^([+\-@].*)/', - static function (array $matches): string { - \assert(isset($matches[0])); - if ('+' === $matches[0][0]) { - $colour = 'green'; - } elseif ('-' === $matches[0][0]) { - $colour = 'red'; - } else { - $colour = 'cyan'; - } - - return \sprintf('%s', $colour, OutputFormatter::escape($matches[0]), $colour); - }, - $line, - 1, - $count, - ); - - if (0 === $count) { - $line = OutputFormatter::escape($line); - } - } - - return \sprintf($lineTemplate, $line); - }, - Preg::split('#\R#u', $diff), - ), - ), - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php deleted file mode 100644 index 9f4c0bc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Differ; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface DifferInterface -{ - /** - * Create diff. - */ - public function diff(string $old, string $new, ?\SplFileInfo $file = null): string; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php deleted file mode 100644 index ccb8a87..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php +++ /dev/null @@ -1,48 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Differ; - -use SebastianBergmann\Diff\Differ; -use SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FullDiffer implements DifferInterface -{ - private Differ $differ; - - public function __construct() - { - $this->differ = new Differ(new StrictUnifiedDiffOutputBuilder([ - 'collapseRanges' => false, - 'commonLineThreshold' => 100, - 'contextLines' => 100, - 'fromFile' => 'Original', - 'toFile' => 'New', - ])); - } - - public function diff(string $old, string $new, ?\SplFileInfo $file = null): string - { - return $this->differ->diff($old, $new); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php deleted file mode 100644 index 2d9c9f0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php +++ /dev/null @@ -1,28 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Differ; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NullDiffer implements DifferInterface -{ - public function diff(string $old, string $new, ?\SplFileInfo $file = null): string - { - return ''; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php deleted file mode 100644 index 4fdbbae..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Differ; - -use PhpCsFixer\Preg; -use SebastianBergmann\Diff\Differ; -use SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class UnifiedDiffer implements DifferInterface -{ - public function diff(string $old, string $new, ?\SplFileInfo $file = null): string - { - if (null === $file) { - $options = [ - 'fromFile' => 'Original', - 'toFile' => 'New', - ]; - } else { - $filePath = $file->getRealPath(); - - if (Preg::match('/\s/', $filePath)) { - $filePath = '"'.$filePath.'"'; - } - - $options = [ - 'fromFile' => $filePath, - 'toFile' => $filePath, - ]; - } - - $differ = new Differ(new StrictUnifiedDiffOutputBuilder($options)); - - return $differ->diff($old, $new); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php deleted file mode 100644 index 5a47c71..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php +++ /dev/null @@ -1,344 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\DocBlock; - -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; - -/** - * This represents an entire annotation from a docblock. - * - * @author Graham Campbell - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Annotation implements \Stringable -{ - /** - * All the annotation tag names with types. - * - * @var non-empty-list - */ - public const TAGS_WITH_TYPES = [ - 'extends', - 'implements', - 'method', - 'param', - 'param-out', - 'phpstan-import-type', - 'phpstan-type', - 'phpstan-var', - 'property', - 'property-read', - 'property-write', - 'psalm-import-type', - 'psalm-type', - 'psalm-var', - 'return', - 'throws', - 'type', - 'var', - ]; - - /** - * The lines that make up the annotation. - * - * @var non-empty-list - */ - private array $lines; - - /** - * The position of the first line of the annotation in the docblock. - */ - private int $start; - - /** - * The position of the last line of the annotation in the docblock. - */ - private int $end; - - /** - * The associated tag. - */ - private ?Tag $tag = null; - - /** - * Lazy loaded, cached types content. - */ - private ?string $typesContent = null; - - /** - * The cached types. - * - * @var null|list - */ - private ?array $types = null; - - private ?NamespaceAnalysis $namespace = null; - - /** - * @var list - */ - private array $namespaceUses; - - /** - * Create a new line instance. - * - * @param non-empty-array $lines - * @param null|NamespaceAnalysis $namespace - * @param list $namespaceUses - */ - public function __construct(array $lines, $namespace = null, array $namespaceUses = []) - { - $this->lines = array_values($lines); - $this->namespace = $namespace; - $this->namespaceUses = $namespaceUses; - - $this->start = array_key_first($lines); - $this->end = array_key_last($lines); - } - - /** - * Get the string representation of object. - */ - public function __toString(): string - { - return $this->getContent(); - } - - /** - * Get all the annotation tag names with types. - * - * @return non-empty-list - * - * @deprecated Use `Annotation::TAGS_WITH_TYPES` constant instead - * - * @TODO 4.0 remove me - */ - public static function getTagsWithTypes(): array - { - return self::TAGS_WITH_TYPES; - } - - /** - * Get the start position of this annotation. - */ - public function getStart(): int - { - return $this->start; - } - - /** - * Get the end position of this annotation. - */ - public function getEnd(): int - { - return $this->end; - } - - /** - * Get the associated tag. - */ - public function getTag(): Tag - { - if (null === $this->tag) { - $this->tag = new Tag($this->lines[0]); - } - - return $this->tag; - } - - /** - * @internal - */ - public function getTypeExpression(): ?TypeExpression - { - $typesContent = $this->getTypesContent(); - - return null === $typesContent - ? null - : new TypeExpression($typesContent, $this->namespace, $this->namespaceUses); - } - - /** - * @internal - */ - public function getVariableName(): ?string - { - $type = preg_quote($this->getTypesContent() ?? '', '/'); - $regex = \sprintf( - '/@%s\s+(%s\s*)?(&\s*)?(\.{3}\s*)?(?\$%s)(?:.*|$)/', - $this->tag->getName(), - $type, - TypeExpression::REGEX_IDENTIFIER, - ); - - if (Preg::match($regex, $this->getContent(), $matches)) { - \assert(isset($matches['variable'])); - - return $matches['variable']; - } - - return null; - } - - /** - * Get the types associated with this annotation. - * - * @return list - */ - public function getTypes(): array - { - if (null === $this->types) { - $typeExpression = $this->getTypeExpression(); - $this->types = null === $typeExpression - ? [] - : $typeExpression->getTypes(); - } - - return $this->types; - } - - /** - * Set the types associated with this annotation. - * - * @param list $types - */ - public function setTypes(array $types): void - { - $origTypesContent = $this->getTypesContent(); - $newTypesContent = implode( - // Fallback to union type is provided for backward compatibility (previously glue was set to `|` by default even when type was not composite) - // @TODO Better handling for cases where type is fixed (original type is not composite, but was made composite during fix) - $this->getTypeExpression()->getTypesGlue() ?? '|', - $types, - ); - - if ($origTypesContent === $newTypesContent) { - return; - } - - $originalTypesLines = Preg::split('/([^\n\r]+\R*)/', $origTypesContent, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE); - $newTypesLines = Preg::split('/([^\n\r]+\R*)/', $newTypesContent, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE); - - \assert(\count($originalTypesLines) === \count($newTypesLines)); - - foreach ($newTypesLines as $index => $line) { - \assert(isset($originalTypesLines[$index])); - $pattern = '/'.preg_quote($originalTypesLines[$index], '/').'/'; - - \assert(isset($this->lines[$index])); - $this->lines[$index]->setContent(Preg::replace($pattern, $line, $this->lines[$index]->getContent(), 1)); - } - - $this->clearCache(); - } - - /** - * Get the normalized types associated with this annotation, so they can easily be compared. - * - * @return list - */ - public function getNormalizedTypes(): array - { - $typeExpression = $this->getTypeExpression(); - if (null === $typeExpression) { - return []; - } - - $normalizedTypeExpression = $typeExpression - ->mapTypes(static fn (TypeExpression $v) => new TypeExpression(strtolower($v->toString()), null, [])) - ->sortTypes(static fn (TypeExpression $a, TypeExpression $b) => $a->toString() <=> $b->toString()) - ; - - return $normalizedTypeExpression->getTypes(); - } - - /** - * Remove this annotation by removing all its lines. - */ - public function remove(): void - { - foreach ($this->lines as $line) { - if ($line->isTheStart() && $line->isTheEnd()) { - // Single line doc block, remove entirely - $line->remove(); - } elseif ($line->isTheStart()) { - // Multi line doc block, but start is on the same line as the first annotation, keep only the start - $content = Preg::replace('#(\s*/\*\*).*#', '$1', $line->getContent()); - - $line->setContent($content); - } elseif ($line->isTheEnd()) { - // Multi line doc block, but end is on the same line as the last annotation, keep only the end - $content = Preg::replace('#(\s*)\S.*(\*/.*)#', '$1$2', $line->getContent()); - - $line->setContent($content); - } else { - // Multi line doc block, neither start nor end on this line, can be removed safely - $line->remove(); - } - } - - $this->clearCache(); - } - - /** - * Get the annotation content. - */ - public function getContent(): string - { - return implode('', $this->lines); - } - - public function supportTypes(): bool - { - return \in_array($this->getTag()->getName(), self::TAGS_WITH_TYPES, true); - } - - /** - * Get the current types content. - * - * Be careful modifying the underlying line as that won't flush the cache. - */ - private function getTypesContent(): ?string - { - if (null === $this->typesContent) { - $name = $this->getTag()->getName(); - - if (!$this->supportTypes()) { - throw new \RuntimeException('This tag does not support types.'); - } - - if (Preg::match( - '{^(?:\h*\*|/\*\*)[\h*]*@'.$name.'\h+'.TypeExpression::REGEX_TYPES.'(?:(?:[*\h\v]|\&?[\.\$\s]).*)?\r?$}is', - $this->getContent(), - $matches, - )) { - \assert(isset($matches['types'])); - $this->typesContent = $matches['types']; - } - } - - return $this->typesContent; - } - - private function clearCache(): void - { - $this->types = null; - $this->typesContent = null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php deleted file mode 100644 index f56c288..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php +++ /dev/null @@ -1,255 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\DocBlock; - -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; - -/** - * This class represents a docblock. - * - * It internally splits it up into "lines" that we can manipulate. - * - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DocBlock implements \Stringable -{ - /** - * @var list - */ - private array $lines = []; - - /** - * @var null|list - */ - private ?array $annotations = null; - - private ?NamespaceAnalysis $namespace; - - /** - * @var list - */ - private array $namespaceUses; - - /** - * @param list $namespaceUses - */ - public function __construct(string $content, ?NamespaceAnalysis $namespace = null, array $namespaceUses = []) - { - foreach (Preg::split('/([^\n\r]+\R*)/', $content, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE) as $line) { - $this->lines[] = new Line($line); - } - - $this->namespace = $namespace; - $this->namespaceUses = $namespaceUses; - } - - public function __toString(): string - { - return $this->getContent(); - } - - /** - * Get this docblock's lines. - * - * @return list - */ - public function getLines(): array - { - return $this->lines; - } - - /** - * Get a single line. - */ - public function getLine(int $pos): ?Line - { - return $this->lines[$pos] ?? null; - } - - /** - * Get this docblock's annotations. - * - * @return list - */ - public function getAnnotations(): array - { - if (null !== $this->annotations) { - return $this->annotations; - } - - $this->annotations = []; - $total = \count($this->lines); - - for ($index = 0; $index < $total; ++$index) { - \assert(isset($this->lines[$index])); - if ($this->lines[$index]->containsATag()) { - // get all the lines that make up the annotation - $lines = \array_slice($this->lines, $index, $this->findAnnotationLength($index), true); - \assert([] !== $lines); - $annotation = new Annotation($lines, $this->namespace, $this->namespaceUses); - // move the index to the end of the annotation to avoid - // checking it again because we know the lines inside the - // current annotation cannot be part of another annotation - $index = $annotation->getEnd(); - // add the current annotation to the list of annotations - $this->annotations[] = $annotation; - } - } - - return $this->annotations; - } - - public function isMultiLine(): bool - { - return 1 !== \count($this->lines); - } - - /** - * Take a one line doc block, and turn it into a multi line doc block. - */ - public function makeMultiLine(string $indent, string $lineEnd): void - { - if ($this->isMultiLine()) { - return; - } - - \assert(isset($this->lines[0])); - $lineContent = $this->getSingleLineDocBlockEntry($this->lines[0]); - - if ('' === $lineContent) { - $this->lines = [ - new Line('/**'.$lineEnd), - new Line($indent.' *'.$lineEnd), - new Line($indent.' */'), - ]; - - return; - } - - $this->lines = [ - new Line('/**'.$lineEnd), - new Line($indent.' * '.$lineContent.$lineEnd), - new Line($indent.' */'), - ]; - } - - public function makeSingleLine(): void - { - if (!$this->isMultiLine()) { - return; - } - - $usefulLines = array_filter( - $this->lines, - static fn (Line $line): bool => $line->containsUsefulContent(), - ); - - if (1 < \count($usefulLines)) { - return; - } - - $lineContent = ''; - if (\count($usefulLines) > 0) { - $lineContent = $this->getSingleLineDocBlockEntry(array_shift($usefulLines)); - } - - $this->lines = [new Line('/** '.$lineContent.' */')]; - } - - public function getAnnotation(int $pos): ?Annotation - { - $annotations = $this->getAnnotations(); - - return $annotations[$pos] ?? null; - } - - /** - * Get specific types of annotations only. - * - * @param list|string $types - * - * @return list - */ - public function getAnnotationsOfType($types): array - { - $typesToSearchFor = (array) $types; - - $annotations = []; - - foreach ($this->getAnnotations() as $annotation) { - $tagName = $annotation->getTag()->getName(); - if (\in_array($tagName, $typesToSearchFor, true)) { - $annotations[] = $annotation; - } - } - - return $annotations; - } - - /** - * Get the actual content of this docblock. - */ - public function getContent(): string - { - return implode('', $this->lines); - } - - private function findAnnotationLength(int $start): int - { - $index = $start; - - while (($line = $this->getLine(++$index)) !== null) { - if ($line->containsATag()) { - // we've 100% reached the end of the description if we get here - break; - } - - if (!$line->containsUsefulContent()) { - // if next line is also non-useful, or contains a tag, then we're done here - $next = $this->getLine($index + 1); - if (null === $next || !$next->containsUsefulContent() || $next->containsATag()) { - break; - } - // otherwise, continue, the annotation must have contained a blank line in its description - } - } - - return $index - $start; - } - - private function getSingleLineDocBlockEntry(Line $line): string - { - $lineString = $line->getContent(); - - if ('' === $lineString) { - return $lineString; - } - - $lineString = str_replace('*/', '', $lineString); - $lineString = trim($lineString); - - if (str_starts_with($lineString, '/**')) { - $lineString = substr($lineString, 3); - } elseif (str_starts_with($lineString, '*')) { - $lineString = substr($lineString, 1); - } - - return trim($lineString); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/Line.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/Line.php deleted file mode 100644 index d471759..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/Line.php +++ /dev/null @@ -1,130 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\DocBlock; - -use PhpCsFixer\Preg; - -/** - * This represents a line of a docblock. - * - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Line implements \Stringable -{ - /** - * The content of this line. - */ - private string $content; - - /** - * Create a new line instance. - */ - public function __construct(string $content) - { - $this->content = $content; - } - - /** - * Get the string representation of object. - */ - public function __toString(): string - { - return $this->content; - } - - /** - * Get the content of this line. - */ - public function getContent(): string - { - return $this->content; - } - - /** - * Does this line contain useful content? - * - * If the line contains text or tags, then this is true. - */ - public function containsUsefulContent(): bool - { - return Preg::match('/\*\s*\S+/', $this->content) && '' !== trim(str_replace(['/', '*'], ' ', $this->content)); - } - - /** - * Does the line contain a tag? - * - * If this is true, then it must be the first line of an annotation. - */ - public function containsATag(): bool - { - return Preg::match('/\*\s*@/', $this->content); - } - - /** - * Is the line the start of a docblock? - */ - public function isTheStart(): bool - { - return str_contains($this->content, '/**'); - } - - /** - * Is the line the end of a docblock? - */ - public function isTheEnd(): bool - { - return str_contains($this->content, '*/'); - } - - /** - * Set the content of this line. - */ - public function setContent(string $content): void - { - $this->content = $content; - } - - /** - * Remove this line by clearing its contents. - * - * Note that this method technically brakes the internal state of the - * docblock, but is useful when we need to retain the indices of lines - * during the execution of an algorithm. - */ - public function remove(): void - { - $this->content = ''; - } - - /** - * Append a blank docblock line to this line's contents. - * - * Note that this method technically brakes the internal state of the - * docblock, but is useful when we need to retain the indices of lines - * during the execution of an algorithm. - */ - public function addBlank(): void - { - $matched = Preg::match('/^(\h*\*)[^\r\n]*(\r?\n)$/', $this->content, $matches); - - if (!$matched) { - return; - } - - $this->content .= $matches[1].$matches[2]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php deleted file mode 100644 index b6f183f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\DocBlock; - -/** - * This class represents a short description (aka summary) of a docblock. - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ShortDescription -{ - /** - * The docblock containing the short description. - */ - private DocBlock $doc; - - public function __construct(DocBlock $doc) - { - $this->doc = $doc; - } - - /** - * Get the line index of the line containing the end of the short - * description, if present. - */ - public function getEnd(): ?int - { - $reachedContent = false; - - foreach ($this->doc->getLines() as $index => $line) { - // we went past a description, then hit a tag or blank line, so - // the last line of the description must be the one before this one - if ($reachedContent && ($line->containsATag() || !$line->containsUsefulContent())) { - return $index - 1; - } - - // no short description was found - if ($line->containsATag()) { - return null; - } - - // we've reached content, but need to check the next lines too - // in case the short description is multi-line - if ($line->containsUsefulContent()) { - $reachedContent = true; - } - } - - return null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php deleted file mode 100644 index 1535ce5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\DocBlock; - -use PhpCsFixer\Preg; - -/** - * This represents a tag, as defined by the proposed PSR PHPDoc standard. - * - * @author Graham Campbell - * @author Jakub Kwaśniewski - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Tag -{ - /** - * All the tags defined by the proposed PSR PHPDoc standard. - */ - public const PSR_STANDARD_TAGS = [ - 'api', 'author', 'category', 'copyright', 'deprecated', 'example', - 'global', 'internal', 'license', 'link', 'method', 'package', 'param', - 'property', 'property-read', 'property-write', 'return', 'see', - 'since', 'subpackage', 'throws', 'todo', 'uses', 'var', 'version', - ]; - - /** - * The line containing the tag. - */ - private Line $line; - - /** - * The cached tag name. - */ - private ?string $name = null; - - /** - * Create a new tag instance. - */ - public function __construct(Line $line) - { - $this->line = $line; - } - - /** - * Get the tag name. - * - * This may be "param", or "return", etc. - */ - public function getName(): string - { - if (null === $this->name) { - Preg::matchAll('/@[a-zA-Z0-9_-]+(?=\s|$)/', $this->line->getContent(), $matches); - - if (isset($matches[0][0])) { - $this->name = ltrim($matches[0][0], '@'); - } else { - $this->name = 'other'; - } - } - - return $this->name; - } - - /** - * Set the tag name. - * - * This will also be persisted to the upstream line and annotation. - */ - public function setName(string $name): void - { - $current = $this->getName(); - - if ('other' === $current) { - throw new \RuntimeException('Cannot set name on unknown tag.'); - } - - $this->line->setContent(Preg::replace("/@{$current}/", "@{$name}", $this->line->getContent(), 1)); - - $this->name = $name; - } - - /** - * Is the tag a known tag? - * - * This is defined by if it exists in the proposed PSR PHPDoc standard. - */ - public function valid(): bool - { - return \in_array($this->getName(), self::PSR_STANDARD_TAGS, true); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php deleted file mode 100644 index d5de1a4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\DocBlock; - -/** - * This class is responsible for comparing tags to see if they should be kept - * together, or kept apart. - * - * @author Graham Campbell - * @author Jakub Kwaśniewski - * - * @deprecated - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TagComparator -{ - /** - * Groups of tags that should be allowed to immediately follow each other. - * - * @var non-empty-list> - * - * @internal - */ - public const DEFAULT_GROUPS = [ - ['deprecated', 'link', 'see', 'since'], - ['author', 'copyright', 'license'], - ['category', 'package', 'subpackage'], - ['property', 'property-read', 'property-write'], - ]; - - /** - * Should the given tags be kept together, or kept apart? - * - * @param list> $groups - */ - public static function shouldBeTogether(Tag $first, Tag $second, array $groups = self::DEFAULT_GROUPS): bool - { - @trigger_error('Method '.__METHOD__.' is deprecated and will be removed in version 4.0.', \E_USER_DEPRECATED); - - $firstName = $first->getName(); - $secondName = $second->getName(); - - if ($firstName === $secondName) { - return true; - } - - foreach ($groups as $group) { - if (\in_array($firstName, $group, true) && \in_array($secondName, $group, true)) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php deleted file mode 100644 index 18cff02..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php +++ /dev/null @@ -1,920 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\DocBlock; - -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Utils; - -/** - * @author Michael Vorisek - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TypeExpression -{ - /** - * Regex to match any PHP identifier. - * - * @internal - */ - public const REGEX_IDENTIFIER = '(?:(?!(?(?x) # one or several types separated by `|` or `&` -'.self::REGEX_TYPE.' - (?: - \h*(?[|&])\h* - (?&type) - )*+ - )'; - - /** - * Based on: - * - https://github.com/phpstan/phpdoc-parser/blob/1.26.0/doc/grammars/type.abnf fuzzing grammar - * - and https://github.com/phpstan/phpdoc-parser/blob/1.26.0/src/Parser/PhpDocParser.php parser impl. - */ - private const REGEX_TYPE = '(?(?x) # single type - (?:co(?:ntra)?variant\h+)? - (?\??\h*) - (?: - (? - (?(?i)(?:array|list|object)(?-i)) - (?\h*\{[\h\v*]*) - (? - (? - (?(?:(?&constant)|(?&identifier)|(?&name))\h*\??\h*:\h*|) - (?(?&types_inner)) - ) - (?: - \h*,[\h\v*]* - (?&array_shape_inner) - )*+ - (?:\h*,|(?!(?&array_shape_unsealed_variadic))) - |) - (? # unsealed array shape, e.g. `...`. `...` - (?\h*\.\.\.) - (? - (?\h*<\h*) - (?(?&types_inner)) - (?: - (?\h*,\h*) - (?(?&array_shape_unsealed_type_a)) - |) - \h*> - |) - |) - [\h\v*]*\} - ) - | - (? # callable syntax, e.g. `callable(string, int...): bool`, `\Closure(T, int): T` - (?(?&name)) - (? - (?\h*<\h*) - (? - (? - (? - (?&identifier) - ) - (? # template bound - \h+(?i)(?of|as)(?-i)\h+ - (?(?&types_inner)) - |) - (? # template default - \h*=\h* - (?(?&types_inner)) - |) - ) - (?: - \h*,\h* - (?&callable_template_inner) - )*+ - ) - \h*> - (?=\h*\() - |) - (?\h*\(\h*) - (? - (? - (?(?&types_inner)) - (?\h*&|) - (?\h*\.\.\.|) - (?\h*\$(?&identifier)|) - (?\h*=|) - ) - (?: - \h*,\h* - (?&callable_argument) - )*+ - (?:\h*,)? - |) - \h*\) - (?: - \h*\:\h* - (?(?&type)) - )? - ) - | - (? # generic syntax, e.g.: `array` - (?(?&name)) - (?\h*<[\h\v*]*) - (? - (?&types_inner) - (?: - \h*,[\h\v*]* - (?&types_inner) - )*+ - (?:\h*,)? - ) - [\h\v*]*> - ) - | - (? # class constants with optional wildcard, e.g.: `Foo::*`, `Foo::CONST_A`, `FOO::CONST_*` - (?(?&name)) - ::\*?(?:(?&identifier)\*?)* - ) - | - (? # single constant value (case insensitive), e.g.: 1, -1.8E+6, `\'a\'` - (?i) - # all sorts of numbers: with or without sign, supports literal separator and several numeric systems, - # e.g.: 1, +1.1, 1., .1, -1, 123E+8, 123_456_789, 0x7Fb4, 0b0110, 0o777 - [+-]?(?: - (?:0b[01]++(?:_[01]++)*+) - | (?:0o[0-7]++(?:_[0-7]++)*+) - | (?:0x[\da-f]++(?:_[\da-f]++)*+) - | (?:(?\d++(?:_\d++)*+)|(?=\.\d)) - (?:\.(?&constant_digits)|(?<=\d)\.)?+ - (?:e[+-]?(?&constant_digits))?+ - ) - | \'(?:[^\'\\\]|\\\.)*+\' - | "(?:[^"\\\]|\\\.)*+" - (?-i) - ) - | - (? # self reference, e.g.: $this, $self, @static - (?i) - [@$](?:this | self | static) - (?-i) - ) - | - (? # full name, e.g.: `int`, `\DateTime`, `\Foo\Bar`, `positive-int` - \\\?+ - (?'.self::REGEX_IDENTIFIER.') - (?:[\\\\\-](?&identifier))*+ - ) - | - (? # parenthesized type, e.g.: `(int)`, `(int|\stdClass)` - (? - \(\h* - ) - (?: - (? - (?&types_inner) - ) - | - (? # conditional type, e.g.: `$foo is \Throwable ? false : $foo` - (? - (?:\$(?&identifier)) - | - (?(?&types_inner)) - ) - (? - \h+(?i)is(?:\h+not)?(?-i)\h+ - ) - (?(?&types_inner)) - (?\h*\?\h*) - (?(?&types_inner)) - (?\h*:\h*) - (?(?&types_inner)) - ) - ) - \h*\) - ) - ) - (? # array, e.g.: `string[]`, `array[][]` - (\h*\[\h*\])* - ) - (?:(?=1)0 - (?(?> - (?&type) - (?: - \h*[|&]\h* - (?&type) - )*+ - )) - |) - )'; - - private const ALIASES = [ - 'boolean' => 'bool', - 'callback' => 'callable', - 'double' => 'float', - 'false' => 'bool', - 'integer' => 'int', - 'list' => 'array', - 'real' => 'float', - 'true' => 'bool', - ]; - - private string $value; - - private bool $isCompositeType; - - /** @var null|'&'|'|' */ - private ?string $typesGlue = null; - - /** @var list */ - private array $innerTypeExpressions = []; - - private ?NamespaceAnalysis $namespace; - - /** @var list */ - private array $namespaceUses; - - /** - * @param list $namespaceUses - */ - public function __construct(string $value, ?NamespaceAnalysis $namespace, array $namespaceUses) - { - $this->value = $value; - $this->namespace = $namespace; - $this->namespaceUses = $namespaceUses; - - $this->parse(); - } - - public function toString(): string - { - return $this->value; - } - - /** - * @return list - */ - public function getTypes(): array - { - if ($this->isCompositeType) { - return array_map( - static fn (array $type) => $type['expression']->toString(), - $this->innerTypeExpressions, - ); - } - - return [$this->value]; - } - - /** - * Determines if type expression is a composite type (union or intersection). - */ - public function isCompositeType(): bool - { - return $this->isCompositeType; - } - - public function isUnionType(): bool - { - return $this->isCompositeType && '|' === $this->typesGlue; - } - - public function isIntersectionType(): bool - { - return $this->isCompositeType && '&' === $this->typesGlue; - } - - /** - * @return null|'&'|'|' - */ - public function getTypesGlue(): ?string - { - return $this->typesGlue; - } - - /** - * @param \Closure(self): self $callback - */ - public function mapTypes(\Closure $callback): self - { - $value = $this->value; - $startIndexOffset = 0; - - foreach ($this->innerTypeExpressions as [ - 'start_index' => $startIndexOrig, - 'expression' => $inner, - ]) { - $innerValueOrig = $inner->value; - - $inner = $inner->mapTypes($callback); - - if ($inner->value !== $innerValueOrig) { - $value = substr_replace( - $value, - $inner->value, - $startIndexOrig + $startIndexOffset, - \strlen($innerValueOrig), - ); - - $startIndexOffset += \strlen($inner->value) - \strlen($innerValueOrig); - } - } - - $type = $value === $this->value - ? $this - : $this->inner($value); - - return $callback($type); - } - - /** - * @param \Closure(self): void $callback - */ - public function walkTypes(\Closure $callback): void - { - $this->mapTypes(static function (self $type) use ($callback) { - $valueOrig = $type->value; - $callback($type); - \assert($type->value === $valueOrig); - - return $type; - }); - } - - /** - * @param \Closure(self, self): (-1|0|1) $compareCallback - */ - public function sortTypes(\Closure $compareCallback): self - { - return $this->mapTypes(function (self $type) use ($compareCallback): self { - if (!$type->isCompositeType) { - return $type; - } - - $innerTypeExpressions = Utils::stableSort( - $type->innerTypeExpressions, - static fn (array $v): self => $v['expression'], - $compareCallback, - ); - - if ($innerTypeExpressions !== $type->innerTypeExpressions) { - $value = implode( - $type->getTypesGlue(), - array_map(static fn (array $v): string => $v['expression']->toString(), $innerTypeExpressions), - ); - - return $this->inner($value); - } - - return $type; - }); - } - - public function removeDuplicateTypes(): self - { - return $this->mapTypes(function (self $type): self { - if (!$type->isCompositeType) { - return $type; - } - - $seenNormalized = []; - $uniqueTypeExpressions = []; - - foreach ($type->innerTypeExpressions as $innerType) { - $normalized = $innerType['expression'] - ->sortTypes(static fn (self $a, self $b): int => $a->toString() <=> $b->toString()) - ->toString() - ; - - if (!\in_array($normalized, $seenNormalized, true)) { - $seenNormalized[] = $normalized; - $uniqueTypeExpressions[] = $innerType['expression']; - } - } - - $value = implode( - $type->getTypesGlue(), - array_map(static fn (self $expr): string => $expr->toString(), $uniqueTypeExpressions), - ); - - return $this->inner($value); - }); - } - - public function getCommonType(): ?string - { - $mainType = null; - - foreach ($this->getTypes() as $type) { - if ('null' === $type) { - continue; - } - - if (str_starts_with($type, '?')) { - $type = substr($type, 1); - } - - if (Preg::match('/\[\h*\]$/', $type)) { - $type = 'array'; - } elseif (Preg::match('/^(.+?)\h*[<{(]/', $type, $matches)) { - $type = $matches[1]; - } - - if (isset(self::ALIASES[$type])) { - $type = self::ALIASES[$type]; - } - - if (null === $mainType || $type === $mainType) { - $mainType = $type; - - continue; - } - - $mainType = $this->getParentType($type, $mainType); - - if (null === $mainType) { - return null; - } - } - - return $mainType; - } - - public function allowsNull(): bool - { - foreach ($this->getTypes() as $type) { - if (\in_array($type, ['null', 'mixed'], true) || str_starts_with($type, '?')) { - return true; - } - } - - return false; - } - - private function parse(): void - { - $seenGlues = null; - $innerValues = []; - - $index = 0; - while (true) { - Preg::match( - '{\G'.self::REGEX_TYPE.'(?\h*(?[|&])\h*(?!$)|$)}', - $this->value, - $matches, - \PREG_OFFSET_CAPTURE, - $index, - ); - - if ([] === $matches) { - throw new \Exception('Unable to parse phpdoc type '.var_export($this->value, true)); - } - - \assert(isset($matches[0], $matches['type'])); - - if (null === $seenGlues) { - if (($matches['glue'][0] ?? '') === '') { - break; - } - - $seenGlues = ['|' => false, '&' => false]; - } - - if (($matches['glue'][0] ?? '') !== '') { - \assert(isset($seenGlues[$matches['glue'][0]])); - $seenGlues[$matches['glue'][0]] = true; - } - - $innerValues[] = [ - 'start_index' => $index, - 'value' => $matches['type'][0], - 'next_glue' => $matches['glue'][0] ?? null, - 'next_glue_raw' => $matches['glue_raw'][0] ?? null, - ]; - - $consumedValueLength = \strlen($matches[0][0]); - $index += $consumedValueLength; - - if (\strlen($this->value) <= $index) { - \assert(\strlen($this->value) === $index); - - $seenGlues = array_filter($seenGlues); - \assert([] !== $seenGlues); - - $this->isCompositeType = true; - $this->typesGlue = array_key_first($seenGlues); - - if (1 === \count($seenGlues)) { - foreach ($innerValues as $innerValue) { - $this->innerTypeExpressions[] = [ - 'start_index' => $innerValue['start_index'], - 'expression' => $this->inner($innerValue['value']), - ]; - } - } else { - for ($i = 0; $i < \count($innerValues); ++$i) { - $innerStartIndex = $innerValues[$i]['start_index']; - $innerValue = ''; - while (true) { - $innerValue .= $innerValues[$i]['value']; - - if (($innerValues[$i]['next_glue'] ?? $this->typesGlue) === $this->typesGlue) { - break; - } - - $innerValue .= $innerValues[$i]['next_glue_raw']; - - ++$i; - \assert(isset($innerValues[$i])); // for PHPStan - } - - $this->innerTypeExpressions[] = [ - 'start_index' => $innerStartIndex, - 'expression' => $this->inner($innerValue), - ]; - } - } - - return; - } - } - - $this->isCompositeType = false; - - \assert(isset($matches['nullable'], $matches['array'], $matches['class_constant'])); - - if ('' !== $matches['nullable'][0]) { - $this->innerTypeExpressions[] = [ - 'start_index' => \strlen($matches['nullable'][0]), - 'expression' => $this->inner(substr($matches['type'][0], \strlen($matches['nullable'][0]))), - ]; - } elseif ('' !== $matches['array'][0]) { - $this->innerTypeExpressions[] = [ - 'start_index' => 0, - 'expression' => $this->inner(substr($matches['type'][0], 0, -\strlen($matches['array'][0]))), - ]; - } elseif ('' !== ($matches['generic'][0] ?? '') && 0 === $matches['generic'][1]) { - \assert(isset($matches['generic_name'], $matches['generic_start'], $matches['generic_types'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => 0, - 'expression' => $this->inner($matches['generic_name'][0]), - ]; - - $this->parseCommaSeparatedInnerTypes( - \strlen($matches['generic_name'][0]) + \strlen($matches['generic_start'][0]), - $matches['generic_types'][0], - ); - } elseif ('' !== ($matches['callable'][0] ?? '') && 0 === $matches['callable'][1]) { - \assert(isset($matches['callable_name'], $matches['callable_template'], $matches['callable_start'], $matches['callable_arguments'], $matches['callable_template_start'], $matches['callable_template_inners'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => 0, - 'expression' => $this->inner($matches['callable_name'][0]), - ]; - - $this->parseCallableTemplateInnerTypes( - \strlen($matches['callable_name'][0]) - + \strlen($matches['callable_template_start'][0]), - $matches['callable_template_inners'][0], - ); - - $this->parseCallableArgumentTypes( - \strlen($matches['callable_name'][0]) - + \strlen($matches['callable_template'][0]) - + \strlen($matches['callable_start'][0]), - $matches['callable_arguments'][0], - ); - - if ('' !== ($matches['callable_return'][0] ?? '')) { - $this->innerTypeExpressions[] = [ - 'start_index' => \strlen($this->value) - \strlen($matches['callable_return'][0]), - 'expression' => $this->inner($matches['callable_return'][0]), - ]; - } - } elseif ('' !== ($matches['array_shape'][0] ?? '') && 0 === $matches['array_shape'][1]) { - \assert(isset($matches['array_shape_name'], $matches['array_shape_start'], $matches['array_shape_inners'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => 0, - 'expression' => $this->inner($matches['array_shape_name'][0]), - ]; - - $nextIndex = \strlen($matches['array_shape_name'][0]) + \strlen($matches['array_shape_start'][0]); - - $this->parseArrayShapeInnerTypes( - $nextIndex, - $matches['array_shape_inners'][0], - ); - - if ('' !== ($matches['array_shape_unsealed_type'][0] ?? '')) { - \assert(isset($matches['array_shape_unsealed_variadic'], $matches['array_shape_unsealed_type_start'], $matches['array_shape_unsealed_type_a'])); - - $nextIndex += \strlen($matches['array_shape_inners'][0]) - + \strlen($matches['array_shape_unsealed_variadic'][0]) - + \strlen($matches['array_shape_unsealed_type_start'][0]); - - $this->innerTypeExpressions[] = [ - 'start_index' => $nextIndex, - 'expression' => $this->inner($matches['array_shape_unsealed_type_a'][0]), - ]; - - if ('' !== ($matches['array_shape_unsealed_type_b'][0] ?? '')) { - \assert(isset($matches['array_shape_unsealed_type_comma'])); - - $nextIndex += \strlen($matches['array_shape_unsealed_type_a'][0]) - + \strlen($matches['array_shape_unsealed_type_comma'][0]); - - $this->innerTypeExpressions[] = [ - 'start_index' => $nextIndex, - 'expression' => $this->inner($matches['array_shape_unsealed_type_b'][0]), - ]; - } - } - } elseif ('' !== ($matches['parenthesized'][0] ?? '') && 0 === $matches['parenthesized'][1]) { - \assert(isset($matches['parenthesized_start'])); - $index = \strlen($matches['parenthesized_start'][0]); - - if ('' !== ($matches['conditional'][0] ?? '')) { - \assert(isset($matches['conditional_cond_left'], $matches['conditional_cond_middle'], $matches['conditional_cond_right_types'], $matches['conditional_true_start'], $matches['conditional_true_types'], $matches['conditional_false_start'], $matches['conditional_false_types'])); - - if ('' !== ($matches['conditional_cond_left_types'][0] ?? '')) { - $this->innerTypeExpressions[] = [ - 'start_index' => $index, - 'expression' => $this->inner($matches['conditional_cond_left_types'][0]), - ]; - } - - $index += \strlen($matches['conditional_cond_left'][0]) + \strlen($matches['conditional_cond_middle'][0]); - - $this->innerTypeExpressions[] = [ - 'start_index' => $index, - 'expression' => $this->inner($matches['conditional_cond_right_types'][0]), - ]; - - $index += \strlen($matches['conditional_cond_right_types'][0]) + \strlen($matches['conditional_true_start'][0]); - - $this->innerTypeExpressions[] = [ - 'start_index' => $index, - 'expression' => $this->inner($matches['conditional_true_types'][0]), - ]; - - $index += \strlen($matches['conditional_true_types'][0]) + \strlen($matches['conditional_false_start'][0]); - - $this->innerTypeExpressions[] = [ - 'start_index' => $index, - 'expression' => $this->inner($matches['conditional_false_types'][0]), - ]; - } else { - \assert(isset($matches['parenthesized_types'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => $index, - 'expression' => $this->inner($matches['parenthesized_types'][0]), - ]; - } - } elseif ('' !== $matches['class_constant'][0]) { - \assert(isset($matches['class_constant_name'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => 0, - 'expression' => $this->inner($matches['class_constant_name'][0]), - ]; - } - } - - private function parseCommaSeparatedInnerTypes(int $startIndex, string $value): void - { - $index = 0; - while (\strlen($value) !== $index) { - Preg::match( - '{\G'.self::REGEX_TYPES.'(?:\h*,[\h\v*]*|$)}', - $value, - $matches, - 0, - $index, - ); - - \assert(isset($matches[0], $matches['types'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => $startIndex + $index, - 'expression' => $this->inner($matches['types']), - ]; - - $index += \strlen($matches[0]); - } - } - - private function parseCallableTemplateInnerTypes(int $startIndex, string $value): void - { - $index = 0; - while (\strlen($value) !== $index) { - Preg::match( - '{\G(?:(?=1)0'.self::REGEX_TYPES.'|(?<_callable_template_inner>(?&callable_template_inner))(?:\h*,\h*|$))}', - $value, - $prematches, - 0, - $index, - ); - \assert(isset($prematches[0], $prematches['_callable_template_inner'])); - $consumedValue = $prematches['_callable_template_inner']; - $consumedValueLength = \strlen($consumedValue); - $consumedCommaLength = \strlen($prematches[0]) - $consumedValueLength; - - $addedPrefix = 'Closure<'; - Preg::match( - '{^'.self::REGEX_TYPES.'$}', - $addedPrefix.$consumedValue.'>(): void', - $matches, - \PREG_OFFSET_CAPTURE, - ); - - \assert(isset($matches['callable_template_inner_b'], $matches['callable_template_inner_d'])); - - if ('' !== $matches['callable_template_inner_b'][0]) { - \assert(isset($matches['callable_template_inner_b_types'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => $startIndex + $index + $matches['callable_template_inner_b_types'][1] - - \strlen($addedPrefix), - 'expression' => $this->inner($matches['callable_template_inner_b_types'][0]), - ]; - } - - if ('' !== $matches['callable_template_inner_d'][0]) { - \assert(isset($matches['callable_template_inner_d_types'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => $startIndex + $index + $matches['callable_template_inner_d_types'][1] - - \strlen($addedPrefix), - 'expression' => $this->inner($matches['callable_template_inner_d_types'][0]), - ]; - } - - $index += $consumedValueLength + $consumedCommaLength; - } - } - - private function parseCallableArgumentTypes(int $startIndex, string $value): void - { - $index = 0; - while (\strlen($value) !== $index) { - Preg::match( - '{\G(?:(?=1)0'.self::REGEX_TYPES.'|(?<_callable_argument>(?&callable_argument))(?:\h*,\h*|$))}', - $value, - $prematches, - 0, - $index, - ); - \assert(isset($prematches[0], $prematches['_callable_argument'])); - $consumedValue = $prematches['_callable_argument']; - $consumedValueLength = \strlen($consumedValue); - $consumedCommaLength = \strlen($prematches[0]) - $consumedValueLength; - - $addedPrefix = 'Closure('; - Preg::match( - '{^'.self::REGEX_TYPES.'$}', - $addedPrefix.$consumedValue.'): void', - $matches, - \PREG_OFFSET_CAPTURE, - ); - - \assert(isset($matches['callable_argument_type'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => $startIndex + $index, - 'expression' => $this->inner($matches['callable_argument_type'][0]), - ]; - - $index += $consumedValueLength + $consumedCommaLength; - } - } - - private function parseArrayShapeInnerTypes(int $startIndex, string $value): void - { - $index = 0; - while (\strlen($value) !== $index) { - Preg::match( - '{\G(?:(?=1)0'.self::REGEX_TYPES.'|(?<_array_shape_inner>(?&array_shape_inner))(?:\h*,[\h\v*]*|$))}', - $value, - $prematches, - 0, - $index, - ); - \assert(isset($prematches[0], $prematches['_array_shape_inner'])); - $consumedValue = $prematches['_array_shape_inner']; - $consumedValueLength = \strlen($consumedValue); - $consumedCommaLength = \strlen($prematches[0]) - $consumedValueLength; - - $addedPrefix = 'array{'; - Preg::match( - '{^'.self::REGEX_TYPES.'$}', - $addedPrefix.$consumedValue.'}', - $matches, - \PREG_OFFSET_CAPTURE, - ); - - \assert(isset($matches['array_shape_inner_value'])); - - $this->innerTypeExpressions[] = [ - 'start_index' => $startIndex + $index + $matches['array_shape_inner_value'][1] - - \strlen($addedPrefix), - 'expression' => $this->inner($matches['array_shape_inner_value'][0]), - ]; - - $index += $consumedValueLength + $consumedCommaLength; - } - } - - private function inner(string $value): self - { - return new self($value, $this->namespace, $this->namespaceUses); - } - - private function getParentType(string $type1, string $type2): ?string - { - $types = [ - $this->normalize($type1), - $this->normalize($type2), - ]; - natcasesort($types); - $types = implode('|', $types); - - $parents = [ - 'array|Traversable' => 'iterable', - 'array|iterable' => 'iterable', - 'iterable|Traversable' => 'iterable', - 'self|static' => 'self', - ]; - - return $parents[$types] ?? null; - } - - private function normalize(string $type): string - { - if (isset(self::ALIASES[$type])) { - return self::ALIASES[$type]; - } - - if (\in_array($type, [ - 'array', - 'bool', - 'callable', - 'false', - 'float', - 'int', - 'iterable', - 'mixed', - 'never', - 'null', - 'object', - 'resource', - 'string', - 'true', - 'void', - ], true)) { - return $type; - } - - if (Preg::match('/\[\]$/', $type)) { - return 'array'; - } - - if (Preg::match('/^(.+?)namespaceUses as $namespaceUse) { - if ($namespaceUse->getShortName() === $type) { - return $namespaceUse->getFullName(); - } - } - - if (null === $this->namespace || $this->namespace->isGlobalNamespace()) { - return $type; - } - - return "{$this->namespace->getFullName()}\\{$type}"; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php deleted file mode 100644 index a09656f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php +++ /dev/null @@ -1,154 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Doctrine\Annotation; - -use PhpCsFixer\Preg; - -/** - * Copyright (c) 2006-2013 Doctrine Project. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is furnished to do - * so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DocLexer -{ - public const T_NONE = 1; - public const T_INTEGER = 2; - public const T_STRING = 3; - public const T_FLOAT = 4; - - // All tokens that are also identifiers should be >= 100 - public const T_IDENTIFIER = 100; - public const T_AT = 101; - public const T_CLOSE_CURLY_BRACES = 102; - public const T_CLOSE_PARENTHESIS = 103; - public const T_COMMA = 104; - public const T_EQUALS = 105; - public const T_NAMESPACE_SEPARATOR = 107; - public const T_OPEN_CURLY_BRACES = 108; - public const T_OPEN_PARENTHESIS = 109; - public const T_COLON = 112; - public const T_MINUS = 113; - - private const CATCHABLE_PATTERNS = [ - '[a-z_\\\][a-z0-9_\:\\\]*[a-z_][a-z0-9_]*', - '(?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?', - '"(?:""|[^"])*+"', - ]; - - private const NON_CATCHABLE_PATTERNS = ['\s+', '\*+', '(.)']; - - /** @var array */ - private array $noCase = [ - '@' => self::T_AT, - ',' => self::T_COMMA, - '(' => self::T_OPEN_PARENTHESIS, - ')' => self::T_CLOSE_PARENTHESIS, - '{' => self::T_OPEN_CURLY_BRACES, - '}' => self::T_CLOSE_CURLY_BRACES, - '=' => self::T_EQUALS, - ':' => self::T_COLON, - '-' => self::T_MINUS, - '\\' => self::T_NAMESPACE_SEPARATOR, - ]; - - /** @var list */ - private array $tokens = []; - - private int $position = 0; - - private int $peek = 0; - - private ?string $regex = null; - - public function setInput(string $input): void - { - $this->tokens = []; - $this->reset(); - $this->scan($input); - } - - public function reset(): void - { - $this->peek = 0; - $this->position = 0; - } - - public function peek(): ?Token - { - return $this->tokens[$this->position + $this->peek++] ?? null; - } - - /** - * @return self::T_* - */ - private function getType(string &$value): int - { - $type = self::T_NONE; - - if ('"' === $value[0]) { - $value = str_replace('""', '"', substr($value, 1, \strlen($value) - 2)); - - return self::T_STRING; - } - - if (isset($this->noCase[$value])) { - return $this->noCase[$value]; - } - - if ('_' === $value[0] || '\\' === $value[0] || !Preg::match('/[^A-Za-z]/', $value[0])) { - return self::T_IDENTIFIER; - } - - if (is_numeric($value)) { - return str_contains($value, '.') || str_contains(strtolower($value), 'e') - ? self::T_FLOAT : self::T_INTEGER; - } - - return $type; - } - - private function scan(string $input): void - { - $this->regex ??= \sprintf( - '/(%s)|%s/%s', - implode(')|(', self::CATCHABLE_PATTERNS), - implode('|', self::NON_CATCHABLE_PATTERNS), - 'iu', - ); - - $flags = \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_OFFSET_CAPTURE; - $matches = Preg::split($this->regex, $input, -1, $flags); - - foreach ($matches as $match) { - // Must remain before 'value' assignment since it can change content - $firstMatch = $match[0]; - $type = $this->getType($firstMatch); - - $this->tokens[] = new Token($type, $firstMatch, (int) $match[1]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php deleted file mode 100644 index b82097c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php +++ /dev/null @@ -1,89 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Doctrine\Annotation; - -/** - * A Doctrine annotation token. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Token -{ - private int $type; - - private string $content; - - private int $position; - - /** - * @param int $type The type - * @param string $content The content - */ - public function __construct(int $type = DocLexer::T_NONE, string $content = '', int $position = 0) - { - $this->type = $type; - $this->content = $content; - $this->position = $position; - } - - public function getType(): int - { - return $this->type; - } - - public function setType(int $type): void - { - $this->type = $type; - } - - public function getContent(): string - { - return $this->content; - } - - public function setContent(string $content): void - { - $this->content = $content; - } - - public function getPosition(): int - { - return $this->position; - } - - /** - * Returns whether the token type is one of the given types. - * - * @param int|list $types - */ - public function isType($types): bool - { - if (!\is_array($types)) { - $types = [$types]; - } - - return \in_array($this->getType(), $types, true); - } - - /** - * Overrides the content with an empty string. - */ - public function clear(): void - { - $this->setContent(''); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php deleted file mode 100644 index 7763a2d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php +++ /dev/null @@ -1,298 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Doctrine\Annotation; - -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token as PhpToken; - -/** - * A list of Doctrine annotation tokens. - * - * @internal - * - * @extends \SplFixedArray - * - * `SplFixedArray` uses `T|null` in return types because value can be null if an offset is unset or if the size does not match the number of elements. - * But our class takes care of it and always ensures correct size and indexes, so that these methods never return `null` instead of `Token`. - * - * @method Token offsetGet($offset) - * @method \Traversable getIterator() - * @method array toArray() - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Tokens extends \SplFixedArray -{ - /** - * @param list $ignoredTags - * - * @throws \InvalidArgumentException - */ - public static function createFromDocComment(PhpToken $input, array $ignoredTags = []): self - { - if (!$input->isGivenKind(\T_DOC_COMMENT)) { - throw new \InvalidArgumentException('Input must be a T_DOC_COMMENT token.'); - } - - $tokens = []; - - $content = $input->getContent(); - $ignoredTextPosition = 0; - $currentPosition = 0; - $token = null; - while (false !== $nextAtPosition = strpos($content, '@', $currentPosition)) { - if (0 !== $nextAtPosition && !Preg::match('/\s/', $content[$nextAtPosition - 1])) { - $currentPosition = $nextAtPosition + 1; - - continue; - } - - $lexer = new DocLexer(); - $lexer->setInput(substr($content, $nextAtPosition)); - - $scannedTokens = []; - $index = 0; - $nbScannedTokensToUse = 0; - $nbScopes = 0; - while (null !== $token = $lexer->peek()) { - if (0 === $index && !$token->isType(DocLexer::T_AT)) { - break; - } - - if (1 === $index) { - if (!$token->isType(DocLexer::T_IDENTIFIER) || \in_array($token->getContent(), $ignoredTags, true)) { - break; - } - - $nbScannedTokensToUse = 2; - } - - if ($index >= 2 && 0 === $nbScopes && !$token->isType([DocLexer::T_NONE, DocLexer::T_OPEN_PARENTHESIS])) { - break; - } - - $scannedTokens[] = $token; - - if ($token->isType(DocLexer::T_OPEN_PARENTHESIS)) { - ++$nbScopes; - } elseif ($token->isType(DocLexer::T_CLOSE_PARENTHESIS)) { - if (0 === --$nbScopes) { - $nbScannedTokensToUse = \count($scannedTokens); - - break; - } - } - - ++$index; - } - - if (0 !== $nbScopes) { - break; - } - - if (0 !== $nbScannedTokensToUse) { - $ignoredTextLength = $nextAtPosition - $ignoredTextPosition; - if (0 !== $ignoredTextLength) { - $tokens[] = new Token(DocLexer::T_NONE, substr($content, $ignoredTextPosition, $ignoredTextLength)); - } - - $lastTokenEndIndex = 0; - foreach (\array_slice($scannedTokens, 0, $nbScannedTokensToUse) as $scannedToken) { - $token = $scannedToken->isType(DocLexer::T_STRING) - ? new Token( - $scannedToken->getType(), - '"'.str_replace('"', '""', $scannedToken->getContent()).'"', - $scannedToken->getPosition(), - ) - : $scannedToken; - - $missingTextLength = $token->getPosition() - $lastTokenEndIndex; - if ($missingTextLength > 0) { - $tokens[] = new Token(DocLexer::T_NONE, substr( - $content, - $nextAtPosition + $lastTokenEndIndex, - $missingTextLength, - )); - } - - $tokens[] = new Token($token->getType(), $token->getContent()); - $lastTokenEndIndex = $token->getPosition() + \strlen($token->getContent()); - } - - $currentPosition = $ignoredTextPosition = $nextAtPosition + $token->getPosition() + \strlen($token->getContent()); - } else { - $currentPosition = $nextAtPosition + 1; - } - } - - if ($ignoredTextPosition < \strlen($content)) { - $tokens[] = new Token(DocLexer::T_NONE, substr($content, $ignoredTextPosition)); - } - - return self::fromArray($tokens); - } - - /** - * Create token collection from array. - * - * @param array $array the array to import - * @param ?bool $saveIndices save the numeric indices used in the original array, default is yes - */ - public static function fromArray($array, $saveIndices = null): self - { - $tokens = new self(\count($array)); - - if (null === $saveIndices || $saveIndices) { - foreach ($array as $key => $val) { - $tokens[$key] = $val; - } - } else { - $index = 0; - - foreach ($array as $val) { - $tokens[$index++] = $val; - } - } - - return $tokens; - } - - /** - * Returns the index of the closest next token that is neither a comment nor a whitespace token. - */ - public function getNextMeaningfulToken(int $index): ?int - { - return $this->getMeaningfulTokenSibling($index, 1); - } - - /** - * Returns the index of the last token that is part of the annotation at the given index. - */ - public function getAnnotationEnd(int $index): ?int - { - $currentIndex = null; - - if (isset($this[$index + 2])) { - if ($this[$index + 2]->isType(DocLexer::T_OPEN_PARENTHESIS)) { - $currentIndex = $index + 2; - } elseif ( - isset($this[$index + 3]) - && $this[$index + 2]->isType(DocLexer::T_NONE) - && $this[$index + 3]->isType(DocLexer::T_OPEN_PARENTHESIS) - && Preg::match('/^(\R\s*\*\s*)*\s*$/', $this[$index + 2]->getContent()) - ) { - $currentIndex = $index + 3; - } - } - - if (null !== $currentIndex) { - $level = 0; - for ($max = \count($this); $currentIndex < $max; ++$currentIndex) { - if ($this[$currentIndex]->isType(DocLexer::T_OPEN_PARENTHESIS)) { - ++$level; - } elseif ($this[$currentIndex]->isType(DocLexer::T_CLOSE_PARENTHESIS)) { - --$level; - } - - if (0 === $level) { - return $currentIndex; - } - } - - return null; - } - - return $index + 1; - } - - /** - * Returns the code from the tokens. - */ - public function getCode(): string - { - $code = ''; - foreach ($this as $token) { - $code .= $token->getContent(); - } - - return $code; - } - - /** - * Inserts a token at the given index. - */ - public function insertAt(int $index, Token $token): void - { - $this->setSize($this->getSize() + 1); - - for ($i = $this->getSize() - 1; $i > $index; --$i) { - $this[$i] = $this[$i - 1] ?? new Token(); - } - - $this[$index] = $token; - } - - /** - * @param null|int $index - * @param null|Token $token - */ - public function offsetSet($index, $token): void - { - if (!$token instanceof Token) { - throw new \InvalidArgumentException(\sprintf('Token must be an instance of %s, "%s" given.', Token::class, get_debug_type($token))); - } - - parent::offsetSet($index, $token); - } - - /** - * @param mixed $index - * - * @throws \OutOfBoundsException - */ - public function offsetUnset($index): void - { - if (!isset($this[$index])) { - throw new \OutOfBoundsException(\sprintf('Index "%s" is invalid or does not exist.', $index)); - } - - $max = \count($this) - 1; - while ($index < $max) { - $this[$index] = $this[$index + 1]; - ++$index; - } - - parent::offsetUnset($index); - - $this->setSize($max); - } - - private function getMeaningfulTokenSibling(int $index, int $direction): ?int - { - while (true) { - $index += $direction; - - if (!$this->offsetExists($index)) { - break; - } - - if (!$this[$index]->isType(DocLexer::T_NONE)) { - return $index; - } - } - - return null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php deleted file mode 100644 index 6bc5fef..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php +++ /dev/null @@ -1,84 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Documentation; - -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Utils; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DocumentationLocator -{ - private string $path; - - public function __construct() - { - $this->path = \dirname(__DIR__, 2).'/doc'; - } - - public function getFixersDocumentationDirectoryPath(): string - { - return $this->path.'/rules'; - } - - public function getFixersDocumentationIndexFilePath(): string - { - return $this->getFixersDocumentationDirectoryPath().'/index.rst'; - } - - public function getFixerDocumentationFilePath(FixerInterface $fixer): string - { - return $this->getFixersDocumentationDirectoryPath().'/'.Preg::replaceCallback( - '/^.*\\\(.+)\\\(.+)Fixer$/', - static fn (array $matches): string => Utils::camelCaseToUnderscore($matches[1]).'/'.Utils::camelCaseToUnderscore($matches[2]), - \get_class($fixer), - ).'.rst'; - } - - public function getFixerDocumentationFileRelativePath(FixerInterface $fixer): string - { - return Preg::replace( - '#^'.preg_quote($this->getFixersDocumentationDirectoryPath(), '#').'/#', - '', - $this->getFixerDocumentationFilePath($fixer), - ); - } - - public function getRuleSetsDocumentationDirectoryPath(): string - { - return $this->path.'/ruleSets'; - } - - public function getRuleSetsDocumentationIndexFilePath(): string - { - return $this->getRuleSetsDocumentationDirectoryPath().'/index.rst'; - } - - public function getRuleSetsDocumentationFilePath(string $name): string - { - return $this->getRuleSetsDocumentationDirectoryPath().'/'.str_replace(':risky', 'Risky', ucfirst(substr($name, 1))).'.rst'; - } - - public function getUsageFilePath(): string - { - return $this->path.'/usage.rst'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTag.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTag.php deleted file mode 100644 index 7e93eea..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTag.php +++ /dev/null @@ -1,55 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Documentation; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DocumentationTag -{ - /** - * @var DocumentationTagType::* - * - * @readonly - */ - public string $type; - - /** - * @readonly - */ - public string $title; - - /** - * @readonly - */ - public ?string $description; - - /** - * @param DocumentationTagType::* $type - */ - public function __construct( - string $type, - string $title, - ?string $description = null - ) { - $this->type = $type; - $this->title = $title; - $this->description = $description; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagGenerator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagGenerator.php deleted file mode 100644 index d79f598..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagGenerator.php +++ /dev/null @@ -1,164 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Documentation; - -use PhpCsFixer\Console\Application; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\Fixer\ExperimentalFixerInterface; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\Fixer\InternalFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionInterface; -use PhpCsFixer\RuleSet\AutomaticRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\InternalRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; -use PhpCsFixer\Utils; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DocumentationTagGenerator -{ - /** - * @return list - */ - public static function analyseRuleSet(RuleSetDefinitionInterface $ruleSetDefinition): array - { - $tags = []; - - // not possible for set to be DocumentationTagType::EXPERIMENTAL - - if ($ruleSetDefinition instanceof InternalRuleSetDefinitionInterface) { - $tags[] = new DocumentationTag( - DocumentationTagType::INTERNAL, - 'This rule set is INTERNAL', - 'Set is expected to be used only on PHP CS Fixer project itself.', - ); - } - - if ($ruleSetDefinition instanceof DeprecatedRuleSetDefinitionInterface) { - $alternatives = $ruleSetDefinition->getSuccessorsNames(); - - $tags[] = new DocumentationTag( - DocumentationTagType::DEPRECATED, - \sprintf('This rule set is DEPRECATED and will be removed in the next major version %d.0', Application::getMajorVersion() + 1), - 0 !== \count($alternatives) - ? \sprintf( - 'You should use %s instead.', - Utils::naturalLanguageJoinWithBackticks($alternatives), - ) - : 'No replacement available.', - ); - } - - if ($ruleSetDefinition->isRisky()) { - $tags[] = new DocumentationTag( - DocumentationTagType::RISKY, - 'This rule set is RISKY', - 'This set contains rules that are risky. Using it may lead to changes in your code\'s logic and behaviour. Use it with caution and review changes before incorporating them into your code base.', - ); - } - - // not possible for set to be DocumentationTagType::CONFIGURABLE - - if ($ruleSetDefinition instanceof AutomaticRuleSetDefinitionInterface) { - $tags[] = new DocumentationTag( - DocumentationTagType::AUTOMATIC, - 'This rule set is AUTOMATIC', - '⚡ '.strip_tags(AutomaticRuleSetDefinitionInterface::WARNING_MESSAGE_DECORATED), - ); - } - - return $tags; - } - - /** - * @return list - */ - public static function analyseRule(FixerInterface $fixer): array - { - $tags = []; - - if ($fixer instanceof ExperimentalFixerInterface) { - $tags[] = new DocumentationTag( - DocumentationTagType::EXPERIMENTAL, - 'This rule is EXPERIMENTAL', - 'Rule is not covered with backward compatibility promise and may produce unstable or unexpected results, use it at your own risk. Rule\'s behaviour may be changed at any point, including rule\'s name; its options\' names, availability and allowed values; its default configuration. Rule may be even removed without prior notice. Feel free to provide feedback and help with determining final state of the rule.', - ); - } - - if ($fixer instanceof InternalFixerInterface) { - $tags[] = new DocumentationTag( - DocumentationTagType::INTERNAL, - 'This rule is INTERNAL', - 'Rule is expected to be used only on PHP CS Fixer project itself.', - ); - } - - if ($fixer instanceof DeprecatedFixerInterface) { - $alternatives = $fixer->getSuccessorsNames(); - - $tags[] = new DocumentationTag( - DocumentationTagType::DEPRECATED, - \sprintf('This rule is DEPRECATED and will be removed in the next major version %d.0', Application::getMajorVersion() + 1), - 0 !== \count($alternatives) - ? \sprintf( - 'You should use %s instead.', - Utils::naturalLanguageJoinWithBackticks($alternatives), - ) - : 'No replacement available.', - ); - } - - if ($fixer->isRisky()) { - $riskyDescription = $fixer->getDefinition()->getRiskyDescription(); - - $tags[] = new DocumentationTag( - DocumentationTagType::RISKY, - 'This rule is RISKY', - // @TODO - FRS enable me - // 'Using it may lead to changes in your code\'s logic and behaviour. Use it with caution and review changes before incorporating them into your code base.' - // \n\n - '' - .(null !== $riskyDescription ? "{$riskyDescription}" : ''), - ); - } - - if ($fixer instanceof ConfigurableFixerInterface) { - $options = array_map( - static fn (FixerOptionInterface $option): string => '`'.$option->getName().'`', - $fixer->getConfigurationDefinition()->getOptions(), - ); - $tags[] = new DocumentationTag( - DocumentationTagType::CONFIGURABLE, - 'This rule is CONFIGURABLE', - \sprintf( - 'You can configure this rule using the following option%s: %s.', - 1 === \count($options) ? '' : 's', - implode(', ', $options), - ), - ); - } - - // not possible for set to be DocumentationTagType::AUTOMATIC - - return $tags; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagType.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagType.php deleted file mode 100644 index 6b11da2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationTagType.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Documentation; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DocumentationTagType -{ - public const EXPERIMENTAL = 'experimental'; - public const INTERNAL = 'internal'; - public const DEPRECATED = 'deprecated'; - public const RISKY = 'risky'; - public const CONFIGURABLE = 'configurable'; - public const AUTOMATIC = 'automatic'; - - private function __construct() {} -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php deleted file mode 100644 index fee428d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php +++ /dev/null @@ -1,440 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Documentation; - -use PhpCsFixer\Console\Command\HelpCommand; -use PhpCsFixer\Differ\FullDiffer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\FixerConfiguration\AliasedFixerOption; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\DeprecatedFixerOptionInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionInterface; -use PhpCsFixer\FixerDefinition\CodeSampleInterface; -use PhpCsFixer\FixerDefinition\FileSpecificCodeSampleInterface; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSampleInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\RuleSet\AutomaticRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSet; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSets; -use PhpCsFixer\StdinFileInfo; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Utils; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixerDocumentGenerator -{ - private DocumentationLocator $locator; - - private FullDiffer $differ; - - /** @var array */ - private array $ruleSetDefinitions; - - public function __construct(DocumentationLocator $locator) - { - $this->locator = $locator; - $this->differ = new FullDiffer(); - $this->ruleSetDefinitions = RuleSets::getSetDefinitions(); - } - - public function generateFixerDocumentation(FixerInterface $fixer): string - { - $name = $fixer->getName(); - $title = "Rule ``{$name}``"; - $titleLine = str_repeat('=', \strlen($title)); - $doc = "{$titleLine}\n{$title}\n{$titleLine}"; - - $definition = $fixer->getDefinition(); - $doc .= "\n\n".RstUtils::toRst($definition->getSummary()); - - $description = $definition->getDescription(); - - if (null !== $description) { - $description = RstUtils::toRst($description); - $doc .= <<title)); - - return \sprintf( - "\n%s\n%s\n\n%s", - $tag->title, - $titleLine, - null === $tag->description ? '' : RstUtils::toRst($tag->description, 0), - ); - }, - $tags, - ); - - if ([] !== $warnings) { - $warningsHeader = 1 === \count($warnings) ? 'Warning' : 'Warnings'; - - $doc .= "\n\n".$header($warningsHeader).implode("\n", $warnings); - } - - if ($fixer instanceof ConfigurableFixerInterface) { - $fixerInFutureMode = self::createFixerInFutureMode($fixer); - - $doc .= <<<'RST' - - - Configuration - ------------- - RST; - - $configurationDefinition = $fixer->getConfigurationDefinition(); - - foreach ($configurationDefinition->getOptions() as $option) { - $optionInfo = "``{$option->getName()}``"; - $optionInfo .= "\n".str_repeat('~', \strlen($optionInfo)); - - if ($option instanceof DeprecatedFixerOptionInterface) { - $deprecationMessage = RstUtils::toRst($option->getDeprecationMessage()); - $optionInfo .= "\n\n.. warning:: This option is deprecated and will be removed in the next major version. {$deprecationMessage}"; - } - - $optionInfo .= "\n\n".RstUtils::toRst($option->getDescription()); - - if ($option instanceof AliasedFixerOption) { - $optionInfo .= "\n\n.. note:: The previous name of this option was ``{$option->getAlias()}`` but it is now deprecated and will be removed in the next major version."; - } - - $allowed = HelpCommand::getDisplayableAllowedValues($option); - - if (null === $allowed) { - $allowedKind = 'Allowed types'; - $allowedTypes = $option->getAllowedTypes(); - if (null !== $allowedTypes) { - $allowed = array_map( - static fn (string $value): string => '``'.Utils::convertArrayTypeToList($value).'``', - $allowedTypes, - ); - } - } else { - $allowedKind = 'Allowed values'; - $allowed = array_map(static fn ($value): string => $value instanceof AllowedValueSubset - ? 'a subset of ``'.Utils::toString($value->getAllowedValues()).'``' - : '``'.Utils::toString($value).'``', $allowed); - } - - if (null !== $allowed) { - $allowed = Utils::naturalLanguageJoin($allowed, ''); - $optionInfo .= "\n\n{$allowedKind}: {$allowed}"; - } - - if ($option->hasDefault()) { - $optionInfo .= \sprintf("\n\nDefault value: ``%s``", Utils::toString($option->getDefault())); - - $optionInFutureMode = array_find( - $fixerInFutureMode->getConfigurationDefinition()->getOptions(), - static fn (FixerOptionInterface $opt): bool => $option->getName() === $opt->getName(), - ); - \assert(null !== $optionInFutureMode); // if rule exist in v3, shall exist in future mode too, as it does not remove options - if ($optionInFutureMode->getDefault() !== $option->getDefault()) { - $optionInfo .= \sprintf("\n\nDefault value (future-mode): ``%s``", Utils::toString($optionInFutureMode->getDefault())); - } - } else { - $optionInfo .= "\n\nThis option is required."; - } - - $doc .= "\n\n{$optionInfo}"; - } - } - - $samples = $definition->getCodeSamples(); - - if (0 !== \count($samples)) { - $doc .= <<<'RST' - - - Examples - -------- - RST; - - foreach ($samples as $index => $sample) { - $title = \sprintf('Example #%d', $index + 1); - $titleLine = str_repeat('~', \strlen($title)); - $doc .= "\n\n{$title}\n{$titleLine}"; - - if ($fixer instanceof ConfigurableFixerInterface) { - if (null === $sample->getConfiguration()) { - $doc .= "\n\n*Default* configuration."; - } else { - $doc .= \sprintf( - "\n\nWith configuration: ``%s``.", - Utils::toString($sample->getConfiguration()), - ); - } - } - - $doc .= "\n".$this->generateSampleDiff($fixer, $sample, $index + 1, $name); - } - } - - $ruleSetConfigs = self::getSetsOfRule($name); - - if ([] !== $ruleSetConfigs) { - $plural = 1 !== \count($ruleSetConfigs) ? 's' : ''; - $doc .= << $config) { - $ruleSetPath = $this->locator->getRuleSetsDocumentationFilePath($set); - \assert(false !== strrpos($ruleSetPath, '/')); - $ruleSetPath = substr($ruleSetPath, strrpos($ruleSetPath, '/')); - - \assert(isset($this->ruleSetDefinitions[$set])); - $ruleSetDefinition = $this->ruleSetDefinitions[$set]; - - if ($ruleSetDefinition instanceof AutomaticRuleSetDefinitionInterface) { - continue; - } - - $deprecatedDesc = ($ruleSetDefinition instanceof DeprecatedRuleSetDefinitionInterface) ? ' *(deprecated)*' : ''; - - $configInfo = (null !== $config) - ? " with config:\n\n ``".Utils::toString($config)."``\n" - : ''; - - $doc .= <<`_{$deprecatedDesc}{$configInfo}\n - RST; - } - - $doc = trim($doc); - } - - $reflectionObject = new \ReflectionObject($fixer); - $className = str_replace('\\', '\\\\', $reflectionObject->getName()); - $fileName = $reflectionObject->getFileName(); - \assert(false !== $fileName); - $fileName = str_replace('\\', '/', $fileName); - $fileName = substr($fileName, (int) strrpos($fileName, '/src/Fixer/') + 1); - $fileName = "`{$className} <./../../../{$fileName}>`_"; - - $testFileName = Preg::replace('~.*\K/src/(?=Fixer/)~', '/tests/', $fileName); - $testFileName = Preg::replace('~PhpCsFixer\\\\\\\\\K(?=Fixer\\\\\\\)~', 'Tests\\\\\\\\', $testFileName); - $testFileName = Preg::replace('~(?= <|\.php>)~', 'Test', $testFileName); - - $doc .= <<', $doc); - - return "{$doc}\n"; - } - - /** - * @internal - * - * @return array> - */ - public static function getSetsOfRule(string $ruleName): array - { - static $ruleSetCache = null; - - if (null === $ruleSetCache) { - $definitionNames = array_keys( - array_filter( - RuleSets::getSetDefinitions(), - static fn (RuleSetDefinitionInterface $definition): bool => !$definition instanceof AutomaticRuleSetDefinitionInterface, - ), - ); - $ruleSetCache = array_combine( - $definitionNames, - array_map( - static fn (string $name): RuleSet => new RuleSet([$name => true]), - $definitionNames, - ), - ); - } - - $ruleSetConfigs = []; - - foreach ($ruleSetCache as $set => $ruleSet) { - if ($ruleSet->hasRule($ruleName)) { - $ruleSetConfigs[$set] = $ruleSet->getRuleConfiguration($ruleName); - } - } - - return $ruleSetConfigs; - } - - /** - * @param list $fixers - */ - public function generateFixersDocumentationIndex(array $fixers): string - { - $overrideGroups = [ - 'PhpUnit' => 'PHPUnit', - 'PhpTag' => 'PHP Tag', - 'Phpdoc' => 'PHPDoc', - ]; - - usort($fixers, static fn (FixerInterface $a, FixerInterface $b): int => \get_class($a) <=> \get_class($b)); - - $documentation = <<<'RST' - ======================= - List of Available Rules - ======================= - RST; - - $currentGroup = null; - - foreach ($fixers as $fixer) { - $namespace = Preg::replace('/^.*\\\(.+)\\\.+Fixer$/', '$1', \get_class($fixer)); - $group = $overrideGroups[$namespace] ?? Preg::replace('/(?<=[[:lower:]])(?=[[:upper:]])/', ' ', $namespace); - - if ($group !== $currentGroup) { - $underline = str_repeat('-', \strlen($group)); - $documentation .= "\n\n{$group}\n{$underline}\n"; - - $currentGroup = $group; - } - - $path = './'.$this->locator->getFixerDocumentationFileRelativePath($fixer); - - $tags = array_map( - static fn (DocumentationTag $tag): string => $tag->type, - DocumentationTagGenerator::analyseRule($fixer), - ); - - $attributes = 0 === \count($tags) - ? '' - : ' *('.implode(', ', $tags).')*'; - - $summary = str_replace('`', '``', $fixer->getDefinition()->getSummary()); - - $documentation .= <<getName()} <{$path}>`_{$attributes} - - {$summary} - RST; - } - - return "{$documentation}\n"; - } - - /** - * @template T of FixerInterface - * - * @param T $fixer - * - * @return T - */ - private static function createFixerInFutureMode(FixerInterface $fixer): FixerInterface - { - $object = Future::runWithEnforcedFutureMode( - static fn () => (new \ReflectionObject($fixer))->newInstance(), - ); - - \assert($object instanceof $fixer); - - return $object; - } - - private function generateSampleDiff(FixerInterface $fixer, CodeSampleInterface $sample, int $sampleNumber, string $ruleName): string - { - if ($sample instanceof VersionSpecificCodeSampleInterface && !$sample->isSuitableFor(\PHP_VERSION_ID)) { - $existingFile = @file_get_contents($this->locator->getFixerDocumentationFilePath($fixer)); - - if (false !== $existingFile) { - Preg::match("/\\RExample #{$sampleNumber}\\R.+?(?\\R\\.\\. code-block:: diff\\R\\R.*?)\\R(?:\\R\\S|$)/s", $existingFile, $matches); - - if (isset($matches['diff'])) { - return $matches['diff']; - } - } - - $error = <<getCode(); - - $tokens = Tokens::fromCode($old); - $file = $sample instanceof FileSpecificCodeSampleInterface - ? $sample->getSplFileInfo() - : new StdinFileInfo(); - - if ($fixer instanceof ConfigurableFixerInterface) { - $fixer->configure($sample->getConfiguration() ?? []); - } - - $fixer->fix($file, $tokens); - - $diff = $this->differ->diff($old, $tokens->generateCode()); - $diff = Preg::replace('/@@[ \+\-\d,]+@@\n/', '', $diff); - $diff = Preg::replace('/\r/', '^M', $diff); - $diff = Preg::replace('/^ $/m', '', $diff); - $diff = Preg::replace('/\n$/', '', $diff); - $diff = RstUtils::indent($diff, 3); - - return << - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Documentation; - -use PhpCsFixer\Preg; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RstUtils -{ - private function __construct() - { - // cannot create instance of util. class - } - - public static function toRst(string $string, int $indent = 0): string - { - $string = wordwrap(self::ensureProperInlineCode($string), 80 - $indent); - - return 0 === $indent ? $string : self::indent($string, $indent); - } - - public static function ensureProperInlineCode(string $string): string - { - return Preg::replace('/(? - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Documentation; - -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\RuleSet\AutomaticRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; -use PhpCsFixer\Utils; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RuleSetDocumentationGenerator -{ - private DocumentationLocator $locator; - - public function __construct(DocumentationLocator $locator) - { - $this->locator = $locator; - } - - /** - * @param list $fixers - */ - public function generateRuleSetsDocumentation(RuleSetDefinitionInterface $definition, array $fixers): string - { - $fixerNames = []; - - foreach ($fixers as $fixer) { - $fixerNames[$fixer->getName()] = $fixer; - } - - $title = "Rule set ``{$definition->getName()}``"; - $titleLine = str_repeat('=', \strlen($title)); - $doc = "{$titleLine}\n{$title}\n{$titleLine}\n\n".$definition->getDescription(); - - $header = static function (string $message, string $underline = '-'): string { - $line = str_repeat($underline, \strlen($message)); - - return "{$message}\n{$line}\n"; - }; - - $tags = DocumentationTagGenerator::analyseRuleSet($definition); - $warnings = array_map( - static function (DocumentationTag $tag): string { - $titleLine = str_repeat('~', \strlen($tag->title)); - - return \sprintf( - "\n%s\n%s\n\n%s", - $tag->title, - $titleLine, - null === $tag->description ? '' : RstUtils::toRst($tag->description, 0), - ); - }, - $tags, - ); - - if ([] !== $warnings) { - $warningsHeader = 1 === \count($warnings) ? 'Warning' : 'Warnings'; - - $doc .= "\n\n".$header($warningsHeader).implode("\n", $warnings); - } - - $rules = $definition instanceof AutomaticRuleSetDefinitionInterface - ? $definition->getRulesCandidates() - : $definition->getRules(); - - if ([] === $rules) { - $doc .= "\n\nThis is an empty set."; - } else { - $enabledRules = array_filter($rules, static fn ($config) => false !== $config); - $disabledRules = array_filter($rules, static fn ($config) => false === $config); - - $listRules = function (array $rules) use (&$doc, $fixerNames): void { - foreach ($rules as $rule => $config) { - if (str_starts_with($rule, '@')) { - $ruleSetPath = $this->locator->getRuleSetsDocumentationFilePath($rule); - \assert(false !== strrpos($ruleSetPath, '/')); - $ruleSetPath = substr($ruleSetPath, strrpos($ruleSetPath, '/')); - - $doc .= "\n- `{$rule} <.{$ruleSetPath}>`_"; - } else { - $path = Preg::replace( - '#^'.preg_quote($this->locator->getFixersDocumentationDirectoryPath(), '#').'/#', - './../rules/', - $this->locator->getFixerDocumentationFilePath($fixerNames[$rule]), - ); - - $doc .= "\n- `{$rule} <{$path}>`_"; - } - - if (!\is_bool($config)) { - $doc .= " with config:\n\n ``".Utils::toString($config)."``\n"; - } - } - }; - - $rulesCandidatesDescriptionHeader = $definition instanceof AutomaticRuleSetDefinitionInterface - ? ' candidates' - : ''; - - if ([] !== $enabledRules) { - $doc .= "\n\n".$header("Rules{$rulesCandidatesDescriptionHeader}"); - $listRules($enabledRules); - } - - if ([] !== $disabledRules) { - $doc .= "\n\n".$header("Disabled rules{$rulesCandidatesDescriptionHeader}"); - - $listRules($disabledRules); - } - } - - return $doc."\n"; - } - - /** - * @param array $setDefinitions - */ - public function generateRuleSetsDocumentationIndex(array $setDefinitions): string - { - $documentation = <<<'RST' - =========================== - List of Available Rule sets - =========================== - RST; - - foreach ($setDefinitions as $path => $definition) { - \assert(false !== strrpos($path, '/')); - $path = substr($path, strrpos($path, '/')); - - $attributes = []; - - if ($definition instanceof DeprecatedRuleSetDefinitionInterface) { - $attributes[] = 'deprecated'; - } - - $attributes = 0 === \count($attributes) - ? '' - : ' *('.implode(', ', $attributes).')*'; - - $documentation .= "\n- `{$definition->getName()} <.{$path}>`_{$attributes}"; - } - - return $documentation."\n"; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Error/Error.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Error/Error.php deleted file mode 100644 index 1b1cfe8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Error/Error.php +++ /dev/null @@ -1,127 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Error; - -/** - * An abstraction for errors that can occur before and during fixing. - * - * @author Andreas Möller - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Error implements \JsonSerializable -{ - /** - * Error which has occurred in linting phase, before applying any fixers. - */ - public const TYPE_INVALID = 1; - - /** - * Error which has occurred during fixing phase. - */ - public const TYPE_EXCEPTION = 2; - - /** - * Error which has occurred in linting phase, after applying any fixers. - */ - public const TYPE_LINT = 3; - - /** @var self::TYPE_* */ - private int $type; - - private string $filePath; - - private ?\Throwable $source; - - /** - * @var list - */ - private array $appliedFixers; - - private string $diff; - - /** - * @param self::TYPE_* $type - * @param list $appliedFixers - */ - public function __construct(int $type, string $filePath, ?\Throwable $source = null, array $appliedFixers = [], string $diff = '') - { - $this->type = $type; - $this->filePath = $filePath; - $this->source = $source; - $this->appliedFixers = $appliedFixers; - $this->diff = $diff; - } - - public function getFilePath(): string - { - return $this->filePath; - } - - public function getSource(): ?\Throwable - { - return $this->source; - } - - public function getType(): int - { - return $this->type; - } - - /** - * @return list - */ - public function getAppliedFixers(): array - { - return $this->appliedFixers; - } - - public function getDiff(): string - { - return $this->diff; - } - - /** - * @return array{ - * type: self::TYPE_*, - * filePath: string, - * source: null|array{class: class-string, message: string, code: int, file: string, line: int}, - * appliedFixers: list, - * diff: null|string - * } - */ - public function jsonSerialize(): array - { - return [ - 'type' => $this->type, - 'filePath' => $this->filePath, - 'source' => null !== $this->source - ? [ - 'class' => \get_class($this->source), - 'message' => $this->source->getMessage(), - 'code' => $this->source->getCode(), - 'file' => $this->source->getFile(), - 'line' => $this->source->getLine(), - ] - : null, - 'appliedFixers' => $this->appliedFixers, - 'diff' => $this->diff, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php deleted file mode 100644 index a026c03..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php +++ /dev/null @@ -1,93 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Error; - -/** - * Manager of errors that occur during fixing. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ErrorsManager -{ - /** - * @var list - */ - private array $errors = []; - - /** - * Returns errors reported during linting before fixing. - * - * @return list - */ - public function getInvalidErrors(): array - { - return array_values(array_filter($this->errors, static fn (Error $error): bool => Error::TYPE_INVALID === $error->getType())); - } - - /** - * Returns errors reported during fixing. - * - * @return list - */ - public function getExceptionErrors(): array - { - return array_values(array_filter($this->errors, static fn (Error $error): bool => Error::TYPE_EXCEPTION === $error->getType())); - } - - /** - * Returns errors reported during linting after fixing. - * - * @return list - */ - public function getLintErrors(): array - { - return array_values(array_filter($this->errors, static fn (Error $error): bool => Error::TYPE_LINT === $error->getType())); - } - - /** - * @return list - */ - public function getAllErrors(): array - { - return $this->errors; - } - - /** - * Returns errors reported for specified path. - * - * @return list - */ - public function forPath(string $path): array - { - return array_values(array_filter($this->errors, static fn (Error $error): bool => $path === $error->getFilePath())); - } - - /** - * Returns true if no errors were reported. - */ - public function isEmpty(): bool - { - return [] === $this->errors; - } - - public function report(Error $error): void - { - $this->errors[] = $error; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Error/SourceExceptionFactory.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Error/SourceExceptionFactory.php deleted file mode 100644 index 02d6d0e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Error/SourceExceptionFactory.php +++ /dev/null @@ -1,71 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Error; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SourceExceptionFactory -{ - /** - * @param array{class: class-string<\Throwable>, message: string, code: int, file: string, line: int} $error - */ - public static function fromArray(array $error): \Throwable - { - $exceptionClass = $error['class']; - - try { - $exception = new $exceptionClass($error['message'], $error['code']); - - if ( - $exception->getMessage() !== $error['message'] - || $exception->getCode() !== $error['code'] - ) { - throw new \RuntimeException('Failed to create exception from array. Message and code are not the same.'); - } - } catch (\Throwable $e) { - $exception = new \RuntimeException( - \sprintf('[%s] %s', $exceptionClass, $error['message']), - $error['code'], - ); - } - - try { - $exceptionReflection = new \ReflectionClass($exception); - foreach (['file', 'line'] as $property) { - $propertyReflection = $exceptionReflection->getProperty($property); - - if (\PHP_VERSION_ID < 8_01_00) { - $propertyReflection->setAccessible(true); // @phpstan-ignore method.deprecated - } - - $propertyReflection->setValue($exception, $error[$property]); - - if (\PHP_VERSION_ID < 8_01_00) { - $propertyReflection->setAccessible(false); // @phpstan-ignore method.deprecated - } - } - } catch (\Throwable $reflectionException) { - // Ignore if we were not able to set file/line properties. In most cases it should be fine, - // we just need to make sure nothing is broken when we recreate errors from raw data passed from worker. - } - - return $exception; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandler.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandler.php deleted file mode 100644 index 840ab0a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandler.php +++ /dev/null @@ -1,60 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ExecutorWithoutErrorHandler -{ - private function __construct() {} - - /** - * @template T - * - * @param callable(): T $callback - * - * @return T - * - * @throws ExecutorWithoutErrorHandlerException - */ - public static function execute(callable $callback) - { - /** @var ?string */ - $error = null; - - set_error_handler(static function (int $errorNumber, string $errorString, string $errorFile, int $errorLine) use (&$error): bool { - $error = $errorString; - - return true; - }); - - try { - $result = $callback(); - } finally { - restore_error_handler(); - } - - if (null !== $error) { - throw new ExecutorWithoutErrorHandlerException($error); - } - - return $result; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandlerException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandlerException.php deleted file mode 100644 index 371f7e6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandlerException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ExecutorWithoutErrorHandlerException extends \RuntimeException {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FileReader.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FileReader.php deleted file mode 100644 index 8f15293..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FileReader.php +++ /dev/null @@ -1,72 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * File reader that unify access to regular file and stdin-alike file. - * - * Regular file could be read multiple times with `file_get_contents`, but file provided on stdin cannot. - * Consecutive try will provide empty content for stdin-alike file. - * This reader unifies access to them. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FileReader -{ - private ?string $stdinContent = null; - - public static function createSingleton(): self - { - static $instance = null; - - if (!$instance) { - $instance = new self(); - } - - return $instance; - } - - public function read(string $filePath): string - { - if ('php://stdin' === $filePath) { - if (null === $this->stdinContent) { - $this->stdinContent = $this->readRaw($filePath); - } - - return $this->stdinContent; - } - - return $this->readRaw($filePath); - } - - private function readRaw(string $realPath): string - { - $content = @file_get_contents($realPath); - - if (false === $content) { - $error = error_get_last(); - - throw new \RuntimeException(\sprintf( - 'Failed to read content from "%s".%s', - $realPath, - null !== $error ? ' '.$error['message'] : '', - )); - } - - return $content; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FileRemoval.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FileRemoval.php deleted file mode 100644 index a01c7a5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FileRemoval.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * Handles files removal with possibility to remove them on shutdown. - * - * @author Adam Klvač - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FileRemoval -{ - /** - * List of observed files to be removed. - * - * @var array - */ - private array $files = []; - - public function __construct() - { - register_shutdown_function([$this, 'clean']); - } - - public function __destruct() - { - $this->clean(); - } - - /** - * This class is not intended to be serialized, - * and cannot be deserialized (see __wakeup method). - */ - public function __serialize(): array - { - throw new \BadMethodCallException('Cannot serialize '.self::class); - } - - /** - * Disable the deserialization of the class to prevent attacker executing - * code by leveraging the __destruct method. - * - * @param array $data - * - * @see https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection - */ - public function __unserialize(array $data): void - { - throw new \BadMethodCallException('Cannot unserialize '.self::class); - } - - /** - * Adds a file to be removed. - */ - public function observe(string $path): void - { - $this->files[$path] = true; - } - - /** - * Removes a file from shutdown removal. - */ - public function delete(string $path): void - { - if (isset($this->files[$path])) { - unset($this->files[$path]); - } - - $this->unlink($path); - } - - /** - * Removes attached files. - */ - public function clean(): void - { - foreach ($this->files as $file => $value) { - $this->unlink($file); - } - - $this->files = []; - } - - private function unlink(string $path): void - { - @unlink($path); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Finder.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Finder.php deleted file mode 100644 index e174ca7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Finder.php +++ /dev/null @@ -1,41 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use Symfony\Component\Finder\Finder as BaseFinder; - -/** - * @author Fabien Potencier - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - * - * @api-extendable - */ -class Finder extends BaseFinder -{ - public function __construct() - { - parent::__construct(); - - $this - ->files() - ->name('/\.php$/') - ->exclude('vendor') - ->ignoreDotFiles(Future::getV4OrV3(false, true)) - ->ignoreVCS(true) // explicitly configure to not rely on Symfony default - ; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php deleted file mode 100644 index ab4f348..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php +++ /dev/null @@ -1,61 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractIncrementOperatorFixer extends AbstractFixer -{ - final protected function findStart(Tokens $tokens, int $index): int - { - do { - $index = $tokens->getPrevMeaningfulToken($index); - $token = $tokens[$index]; - - $blockType = Tokens::detectBlockType($token); - if (null !== $blockType && !$blockType['isStart']) { - $index = $tokens->findBlockStart($blockType['type'], $index); - $token = $tokens[$index]; - } - } while (!$token->equalsAny(['$', [\T_VARIABLE]])); - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $prevToken = $tokens[$prevIndex]; - - if ($prevToken->equals('$')) { - return $this->findStart($tokens, $index); - } - - if ($prevToken->isObjectOperator()) { - return $this->findStart($tokens, $prevIndex); - } - - if ($prevToken->isGivenKind(\T_PAAMAYIM_NEKUDOTAYIM)) { - $prevPrevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - if (!$tokens[$prevPrevIndex]->isGivenKind([\T_STATIC, \T_STRING])) { - return $this->findStart($tokens, $prevIndex); - } - - $index = $tokens->getTokenNotOfKindsSibling($prevIndex, -1, [\T_NS_SEPARATOR, \T_STATIC, \T_STRING]); - $index = $tokens->getNextMeaningfulToken($index); - } - - return $index; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php deleted file mode 100644 index a57e978..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php +++ /dev/null @@ -1,111 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FullyQualifiedNameAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\PhpUnitTestCaseAnalyzer; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractPhpUnitFixer extends AbstractFixer -{ - use DocBlockAnnotationTrait; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAllTokenKindsFound([\T_CLASS, \T_STRING]); - } - - final protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ((new PhpUnitTestCaseAnalyzer())->findPhpUnitClasses($tokens) as $indices) { - $this->applyPhpUnitClassFix($tokens, $indices[0], $indices[1]); - } - } - - abstract protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void; - - /** - * @return iterable - */ - protected function getPreviousAssertCall(Tokens $tokens, int $startIndex, int $endIndex): iterable - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - for ($index = $endIndex; $index > $startIndex; --$index) { - $index = $tokens->getPrevTokenOfKind($index, [[\T_STRING]]); - - // test if "assert" something call - $loweredContent = strtolower($tokens[$index]->getContent()); - - if (!str_starts_with($loweredContent, 'assert')) { - continue; - } - - // test candidate for simple calls like: ([\]+'some fixable call'(...)) - $openBraceIndex = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$openBraceIndex]->equals('(')) { - continue; - } - - if (!$functionsAnalyzer->isTheSameClassCall($tokens, $index)) { - continue; - } - - yield [ - 'index' => $index, - 'loweredName' => $loweredContent, - 'openBraceIndex' => $openBraceIndex, - 'closeBraceIndex' => $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openBraceIndex), - ]; - } - } - - final protected function isTestAttributePresent(Tokens $tokens, int $index): bool - { - $attributeIndex = $tokens->getPrevTokenOfKind($index, ['{', [FCT::T_ATTRIBUTE]]); - if (!$tokens[$attributeIndex]->isGivenKind(FCT::T_ATTRIBUTE)) { - return false; - } - - $fullyQualifiedNameAnalyzer = new FullyQualifiedNameAnalyzer($tokens); - - foreach (AttributeAnalyzer::collect($tokens, $attributeIndex) as $attributeAnalysis) { - foreach ($attributeAnalysis->getAttributes() as $attribute) { - $attributeName = strtolower($fullyQualifiedNameAnalyzer->getFullyQualifiedName($attribute['name'], $attribute['start'], NamespaceUseAnalysis::TYPE_CLASS)); - if ('phpunit\framework\attributes\test' === $attributeName) { - return true; - } - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractShortOperatorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractShortOperatorFixer.php deleted file mode 100644 index cba2262..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractShortOperatorFixer.php +++ /dev/null @@ -1,265 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Tokenizer\Analyzer\AlternativeSyntaxAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\RangeAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractShortOperatorFixer extends AbstractFixer -{ - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $alternativeSyntaxAnalyzer = new AlternativeSyntaxAnalyzer(); - - for ($index = \count($tokens) - 1; $index > 3; --$index) { - if (!$this->isOperatorTokenCandidate($tokens, $index)) { - continue; - } - - // get what is before the operator - - $beforeRange = $this->getBeforeOperatorRange($tokens, $index); - $equalsIndex = $tokens->getPrevMeaningfulToken($beforeRange['start']); - - // make sure that before that is '=' - - if (!$tokens[$equalsIndex]->equals('=')) { - continue; - } - - // get and check what is before '=' - - $assignRange = $this->getBeforeOperatorRange($tokens, $equalsIndex); - $beforeAssignmentIndex = $tokens->getPrevMeaningfulToken($assignRange['start']); - - if ($tokens[$beforeAssignmentIndex]->equals(':')) { - if (!$this->belongsToSwitchOrAlternativeSyntax($alternativeSyntaxAnalyzer, $tokens, $beforeAssignmentIndex)) { - continue; - } - } elseif (!$tokens[$beforeAssignmentIndex]->equalsAny([';', '{', '}', '(', ')', ',', [\T_OPEN_TAG], [\T_RETURN]])) { - continue; - } - - // check if "assign" and "before" the operator are (functionally) the same - - if (RangeAnalyzer::rangeEqualsRange($tokens, $assignRange, $beforeRange)) { - $this->shortenOperation($tokens, $equalsIndex, $index, $assignRange, $beforeRange); - - continue; - } - - if (!$this->isOperatorCommutative($tokens[$index])) { - continue; - } - - $afterRange = $this->getAfterOperatorRange($tokens, $index); - - // check if "assign" and "after" the operator are (functionally) the same - if (!RangeAnalyzer::rangeEqualsRange($tokens, $assignRange, $afterRange)) { - continue; - } - - $this->shortenOperation($tokens, $equalsIndex, $index, $assignRange, $afterRange); - } - } - - abstract protected function getReplacementToken(Token $token): Token; - - abstract protected function isOperatorTokenCandidate(Tokens $tokens, int $index): bool; - - /** - * @param array{start: int, end: int} $assignRange - * @param array{start: int, end: int} $operatorRange - */ - private function shortenOperation( - Tokens $tokens, - int $equalsIndex, - int $operatorIndex, - array $assignRange, - array $operatorRange - ): void { - $tokens[$equalsIndex] = $this->getReplacementToken($tokens[$operatorIndex]); - $tokens->clearTokenAndMergeSurroundingWhitespace($operatorIndex); - $this->clearMeaningfulFromRange($tokens, $operatorRange); - - foreach ([$equalsIndex, $assignRange['end']] as $i) { - $i = $tokens->getNonEmptySibling($i, 1); - - if ($tokens[$i]->isWhitespace(" \t")) { - $tokens[$i] = new Token([\T_WHITESPACE, ' ']); - } elseif (!$tokens[$i]->isWhitespace()) { - $tokens->insertAt($i, new Token([\T_WHITESPACE, ' '])); - } - } - } - - /** - * @return array{start: int, end: int} - */ - private function getAfterOperatorRange(Tokens $tokens, int $index): array - { - $index = $tokens->getNextMeaningfulToken($index); - $range = ['start' => $index]; - - while (true) { - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if (null === $nextIndex || $tokens[$nextIndex]->equalsAny([';', ',', [\T_CLOSE_TAG]])) { - break; - } - - $blockType = Tokens::detectBlockType($tokens[$nextIndex]); - - if (null === $blockType) { - $index = $nextIndex; - - continue; - } - - if (false === $blockType['isStart']) { - break; - } - - $index = $tokens->findBlockEnd($blockType['type'], $nextIndex); - } - - $range['end'] = $index; - - return $range; - } - - /** - * @return array{start: int, end: int} - */ - private function getBeforeOperatorRange(Tokens $tokens, int $index): array - { - static $blockOpenTypes; - - if (null === $blockOpenTypes) { - $blockOpenTypes = [',']; // not a true "block type", but speeds up things - - foreach (Tokens::getBlockEdgeDefinitions() as $definition) { - $blockOpenTypes[] = $definition['start']; - } - } - - $controlStructureWithoutBracesTypes = [\T_IF, \T_ELSE, \T_ELSEIF, \T_FOR, \T_FOREACH, \T_WHILE]; - - $previousIndex = $tokens->getPrevMeaningfulToken($index); - $previousToken = $tokens[$previousIndex]; - - if ($tokens[$previousIndex]->equalsAny($blockOpenTypes)) { - return ['start' => $index, 'end' => $index]; - } - - $range = ['end' => $previousIndex]; - $index = $previousIndex; - - while ($previousToken->equalsAny([ - '$', - ']', - ')', - [CT::T_ARRAY_INDEX_BRACE_CLOSE], - [CT::T_DYNAMIC_PROP_BRACE_CLOSE], - [CT::T_DYNAMIC_VAR_BRACE_CLOSE], - [\T_NS_SEPARATOR], - [\T_STRING], - [\T_VARIABLE], - ])) { - $blockType = Tokens::detectBlockType($previousToken); - - if (null !== $blockType) { - $blockStart = $tokens->findBlockStart($blockType['type'], $previousIndex); - - if ($tokens[$previousIndex]->equals(')') && $tokens[$tokens->getPrevMeaningfulToken($blockStart)]->isGivenKind($controlStructureWithoutBracesTypes)) { - break; // we went too far back - } - - $previousIndex = $blockStart; - } - - $index = $previousIndex; - $previousIndex = $tokens->getPrevMeaningfulToken($previousIndex); - $previousToken = $tokens[$previousIndex]; - } - - if ($previousToken->isGivenKind(\T_OBJECT_OPERATOR)) { - $index = $this->getBeforeOperatorRange($tokens, $previousIndex)['start']; - } elseif ($previousToken->isGivenKind(\T_PAAMAYIM_NEKUDOTAYIM)) { - $index = $this->getBeforeOperatorRange($tokens, $tokens->getPrevMeaningfulToken($previousIndex))['start']; - } - - $range['start'] = $index; - - return $range; - } - - /** - * @param array{start: int, end: int} $range - */ - private function clearMeaningfulFromRange(Tokens $tokens, array $range): void - { - // $range['end'] must be meaningful! - for ($i = $range['end']; $i >= $range['start']; $i = $tokens->getPrevMeaningfulToken($i)) { - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - } - } - - private function isOperatorCommutative(Token $operatorToken): bool - { - if ($operatorToken->isGivenKind(\T_COALESCE)) { - return false; - } - - // check for commutative kinds - if ($operatorToken->equalsAny(['*', '|', '&', '^'])) { // note that for arrays in PHP `+` is not commutative - return true; - } - - // check for non-commutative kinds - if ($operatorToken->equalsAny(['-', '/', '.', '%', '+'])) { - return false; - } - - throw new \InvalidArgumentException(\sprintf('Not supported operator "%s".', $operatorToken->toJson())); - } - - private function belongsToSwitchOrAlternativeSyntax(AlternativeSyntaxAnalyzer $alternativeSyntaxAnalyzer, Tokens $tokens, int $index): bool - { - $candidate = $index; - $index = $tokens->getPrevMeaningfulToken($candidate); - - if ($tokens[$index]->isGivenKind(\T_DEFAULT)) { - return true; - } - - $index = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind(\T_CASE)) { - return true; - } - - return $alternativeSyntaxAnalyzer->belongsToAlternativeSyntax($tokens, $candidate); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/ArrayPushFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/ArrayPushFixer.php deleted file mode 100644 index 0f7adb7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/ArrayPushFixer.php +++ /dev/null @@ -1,202 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ArrayPushFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts simple usages of `array_push($x, $y);` to `$x[] = $y;`.', - [new CodeSample("isTokenKindFound(\T_STRING) && $tokens->count() > 7; - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - for ($index = $tokens->count() - 7; $index > 0; --$index) { - if (!$tokens[$index]->equals([\T_STRING, 'array_push'], false)) { - continue; - } - - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; // redeclare/override - } - - // meaningful before must be `getPrevMeaningfulToken($index); - $namespaceSeparatorIndex = null; - - if ($tokens[$index]->isGivenKind(\T_NS_SEPARATOR)) { - $namespaceSeparatorIndex = $index; - $index = $tokens->getPrevMeaningfulToken($index); - } - - if (!$tokens[$index]->equalsAny([';', '{', '}', ')', [\T_OPEN_TAG]])) { - continue; - } - - // figure out where the arguments list opens - $openBraceIndex = $tokens->getNextMeaningfulToken($callIndex); - - // figure out where the arguments list closes - $closeBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openBraceIndex); - - // meaningful after `)` must be `;`, `? >` or nothing - $afterCloseBraceIndex = $tokens->getNextMeaningfulToken($closeBraceIndex); - - if (null !== $afterCloseBraceIndex && !$tokens[$afterCloseBraceIndex]->equalsAny([';', [\T_CLOSE_TAG]])) { - continue; - } - - // must have 2 arguments - - // first argument must be a variable (with possibly array indexing etc.), - // after that nothing meaningful should be there till the next `,` or `)` - // if `)` than we cannot fix it (it is a single argument call) - - $firstArgumentStop = $this->getFirstArgumentEnd($tokens, $openBraceIndex); - $firstArgumentStop = $tokens->getNextMeaningfulToken($firstArgumentStop); - - if (!$tokens[$firstArgumentStop]->equals(',')) { - continue; - } - - // second argument can be about anything but ellipsis, we must make sure there is not - // a third argument (or more) passed to `array_push` - - $secondArgumentStart = $tokens->getNextMeaningfulToken($firstArgumentStop); - $secondArgumentStop = $this->getSecondArgumentEnd($tokens, $secondArgumentStart, $closeBraceIndex); - - if (null === $secondArgumentStop) { - continue; - } - - // candidate is valid, replace tokens - - $tokens->clearTokenAndMergeSurroundingWhitespace($closeBraceIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($firstArgumentStop); - $tokens->insertAt( - $firstArgumentStop, - [ - new Token('['), - new Token(']'), - new Token([\T_WHITESPACE, ' ']), - new Token('='), - ], - ); - $tokens->clearTokenAndMergeSurroundingWhitespace($openBraceIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($callIndex); - - if (null !== $namespaceSeparatorIndex) { - $tokens->clearTokenAndMergeSurroundingWhitespace($namespaceSeparatorIndex); - } - } - } - - private function getFirstArgumentEnd(Tokens $tokens, int $index): int - { - $nextIndex = $tokens->getNextMeaningfulToken($index); - $nextToken = $tokens[$nextIndex]; - - while ($nextToken->equalsAny([ - '$', - '[', - '(', - [CT::T_ARRAY_INDEX_BRACE_OPEN], - [CT::T_DYNAMIC_PROP_BRACE_OPEN], - [CT::T_DYNAMIC_VAR_BRACE_OPEN], - [CT::T_NAMESPACE_OPERATOR], - [\T_NS_SEPARATOR], - [\T_STATIC], - [\T_STRING], - [\T_VARIABLE], - ])) { - $blockType = Tokens::detectBlockType($nextToken); - - if (null !== $blockType) { - $nextIndex = $tokens->findBlockEnd($blockType['type'], $nextIndex); - } - - $index = $nextIndex; - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - $nextToken = $tokens[$nextIndex]; - } - - if ($nextToken->isGivenKind(\T_OBJECT_OPERATOR)) { - return $this->getFirstArgumentEnd($tokens, $nextIndex); - } - - if ($nextToken->isGivenKind(\T_PAAMAYIM_NEKUDOTAYIM)) { - return $this->getFirstArgumentEnd($tokens, $tokens->getNextMeaningfulToken($nextIndex)); - } - - return $index; - } - - /** - * @param int $endIndex boundary, i.e. tokens index of `)` - */ - private function getSecondArgumentEnd(Tokens $tokens, int $index, int $endIndex): ?int - { - if ($tokens[$index]->isGivenKind(\T_ELLIPSIS)) { - return null; - } - - for (; $index <= $endIndex; ++$index) { - $blockType = Tokens::detectBlockType($tokens[$index]); - - while (null !== $blockType && $blockType['isStart']) { - $index = $tokens->findBlockEnd($blockType['type'], $index); - $index = $tokens->getNextMeaningfulToken($index); - $blockType = Tokens::detectBlockType($tokens[$index]); - } - - if ($tokens[$index]->equals(',') || $tokens[$index]->isGivenKind([\T_YIELD, \T_YIELD_FROM, \T_LOGICAL_AND, \T_LOGICAL_OR, \T_LOGICAL_XOR])) { - return null; - } - } - - return $endIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php deleted file mode 100644 index 87ad61f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php +++ /dev/null @@ -1,151 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BacktickToShellExecFixer extends AbstractFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound('`'); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts backtick operators to `shell_exec` calls.', - [ - new CodeSample( - <<<'EOT' - call()}`; - - EOT, - ), - ], - 'Conversion is done only when it is non risky, so when special chars like single-quotes, double-quotes and backticks are not used inside the command.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before ExplicitStringVariableFixer, NativeFunctionInvocationFixer, SingleQuoteFixer. - */ - public function getPriority(): int - { - return 17; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $backtickStarted = false; - $backtickTokens = []; - for ($index = $tokens->count() - 1; $index > 0; --$index) { - $token = $tokens[$index]; - - if (!$token->equals('`')) { - if ($backtickStarted) { - $backtickTokens[$index] = $token; - } - - continue; - } - - $backtickTokens[$index] = $token; - - if ($backtickStarted) { - $this->fixBackticks($tokens, $backtickTokens); - $backtickTokens = []; - } - - $backtickStarted = !$backtickStarted; - } - } - - /** - * Override backtick code with corresponding double-quoted string. - * - * @param array $backtickTokens - */ - private function fixBackticks(Tokens $tokens, array $backtickTokens): void - { - // Track indices for final override - ksort($backtickTokens); - $openingBacktickIndex = array_key_first($backtickTokens); - $closingBacktickIndex = array_key_last($backtickTokens); - - // Strip enclosing backticks - array_shift($backtickTokens); - array_pop($backtickTokens); - - // Double-quoted strings are parsed differently if they contain - // variables or not, so we need to build the new token array accordingly - $count = \count($backtickTokens); - - $newTokens = [ - new Token([\T_STRING, 'shell_exec']), - new Token('('), - ]; - - if (1 !== $count) { - $newTokens[] = new Token('"'); - } - - foreach ($backtickTokens as $token) { - if (!$token->isGivenKind(\T_ENCAPSED_AND_WHITESPACE)) { - $newTokens[] = $token; - - continue; - } - - $content = $token->getContent(); - // Escaping special chars depends on the context: too tricky - if (Preg::match('/[`"\']/u', $content)) { - return; - } - - $kind = \T_ENCAPSED_AND_WHITESPACE; - - if (1 === $count) { - $content = '"'.$content.'"'; - $kind = \T_CONSTANT_ENCAPSED_STRING; - } - - $newTokens[] = new Token([$kind, $content]); - } - - if (1 !== $count) { - $newTokens[] = new Token('"'); - } - - $newTokens[] = new Token(')'); - - $tokens->overrideRange($openingBacktickIndex, $closingBacktickIndex, $newTokens); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php deleted file mode 100644 index 6976546..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php +++ /dev/null @@ -1,196 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\PregException; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Matteo Beccati - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class EregToPregFixer extends AbstractFixer -{ - /** - * @var non-empty-list> the list of the ext/ereg function names, their preg equivalent and the preg modifier(s), if any - * all condensed in an array of arrays - */ - private const FUNCTIONS = [ - ['ereg', 'preg_match', ''], - ['eregi', 'preg_match', 'i'], - ['ereg_replace', 'preg_replace', ''], - ['eregi_replace', 'preg_replace', 'i'], - ['split', 'preg_split', ''], - ['spliti', 'preg_split', 'i'], - ]; - - /** - * @var non-empty-list the list of preg delimiters, in order of preference - */ - private const DELIMITERS = ['/', '#', '!']; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replace deprecated `ereg` regular expression functions with `preg`.', - [new CodeSample("isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $end = $tokens->count() - 1; - $functionsAnalyzer = new FunctionsAnalyzer(); - - foreach (self::FUNCTIONS as $map) { - // the sequence is the function name, followed by "(" and a quoted string - $seq = [[\T_STRING, $map[0]], '(', [\T_CONSTANT_ENCAPSED_STRING]]; - $currIndex = 0; - - while (true) { - $match = $tokens->findSequence($seq, $currIndex, $end, false); - - // did we find a match? - if (null === $match) { - break; - } - - // findSequence also returns the tokens, but we're only interested in the indices, i.e.: - // 0 => function name, - // 1 => parenthesis "(" - // 2 => quoted string passed as 1st parameter - $match = array_keys($match); - \assert(isset($match[2])); - - // advance tokenizer cursor - $currIndex = $match[2]; - - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $match[0])) { - continue; - } - - // ensure the first parameter is just a string (e.g. has nothing appended) - $next = $tokens->getNextMeaningfulToken($match[2]); - - if (null === $next || !$tokens[$next]->equalsAny([',', ')'])) { - continue; - } - - // convert to PCRE - $regexTokenContent = $tokens[$match[2]]->getContent(); - - if ('b' === $regexTokenContent[0] || 'B' === $regexTokenContent[0]) { - $quote = $regexTokenContent[1]; - $prefix = $regexTokenContent[0]; - $string = substr($regexTokenContent, 2, -1); - } else { - $quote = $regexTokenContent[0]; - $prefix = ''; - $string = substr($regexTokenContent, 1, -1); - } - - $delim = $this->getBestDelimiter($string); - $preg = $delim.addcslashes($string, $delim).$delim.'D'.$map[2]; - - // check if the preg is valid - if (!$this->checkPreg($preg)) { - continue; - } - - // modify function and argument - $tokens[$match[0]] = new Token([\T_STRING, $map[1]]); - $tokens[$match[2]] = new Token([\T_CONSTANT_ENCAPSED_STRING, $prefix.$quote.$preg.$quote]); - } - } - } - - /** - * Check the validity of a PCRE. - * - * @param string $pattern the regular expression - */ - private function checkPreg(string $pattern): bool - { - try { - Preg::match($pattern, ''); - - return true; - } catch (PregException $e) { - return false; - } - } - - /** - * Get the delimiter that would require the least escaping in a regular expression. - * - * @param string $pattern the regular expression - * - * @return string the preg delimiter - */ - private function getBestDelimiter(string $pattern): string - { - // try to find something that's not used - $delimiters = []; - - foreach (self::DELIMITERS as $k => $d) { - if (!str_contains($pattern, $d)) { - return $d; - } - - $delimiters[$d] = [substr_count($pattern, $d), $k]; - } - - // return the least used delimiter, using the position in the list as a tiebreaker - uasort($delimiters, static function (array $a, array $b): int { - if ($a[0] === $b[0]) { - return $a[1] <=> $b[1]; - } - - return $a[0] <=> $b[0]; - }); - - return array_key_first($delimiters); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php deleted file mode 100644 index 3546618..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php +++ /dev/null @@ -1,180 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MbStrFunctionsFixer extends AbstractFixer -{ - /** - * list of the string-related function names and their mb_ equivalent. - * - * @var array< - * string, - * array{ - * alternativeName: string, - * argumentCount: list, - * }, - * > - */ - private static array $functionsMap = [ - 'str_split' => ['alternativeName' => 'mb_str_split', 'argumentCount' => [1, 2, 3]], - 'stripos' => ['alternativeName' => 'mb_stripos', 'argumentCount' => [2, 3]], - 'stristr' => ['alternativeName' => 'mb_stristr', 'argumentCount' => [2, 3]], - 'strlen' => ['alternativeName' => 'mb_strlen', 'argumentCount' => [1]], - 'strpos' => ['alternativeName' => 'mb_strpos', 'argumentCount' => [2, 3]], - 'strrchr' => ['alternativeName' => 'mb_strrchr', 'argumentCount' => [2]], - 'strripos' => ['alternativeName' => 'mb_strripos', 'argumentCount' => [2, 3]], - 'strrpos' => ['alternativeName' => 'mb_strrpos', 'argumentCount' => [2, 3]], - 'strstr' => ['alternativeName' => 'mb_strstr', 'argumentCount' => [2, 3]], - 'strtolower' => ['alternativeName' => 'mb_strtolower', 'argumentCount' => [1]], - 'strtoupper' => ['alternativeName' => 'mb_strtoupper', 'argumentCount' => [1]], - 'substr' => ['alternativeName' => 'mb_substr', 'argumentCount' => [2, 3]], - 'substr_count' => ['alternativeName' => 'mb_substr_count', 'argumentCount' => [2, 3, 4]], - ]; - - /** - * @var array< - * string, - * array{ - * alternativeName: string, - * argumentCount: list, - * }, - * > - */ - private array $functions; - - public function __construct() - { - parent::__construct(); - - if (\PHP_VERSION_ID >= 8_03_00) { - self::$functionsMap['str_pad'] = ['alternativeName' => 'mb_str_pad', 'argumentCount' => [1, 2, 3, 4]]; - } - - if (\PHP_VERSION_ID >= 8_04_00) { - self::$functionsMap['trim'] = ['alternativeName' => 'mb_trim', 'argumentCount' => [1, 2]]; - self::$functionsMap['ltrim'] = ['alternativeName' => 'mb_ltrim', 'argumentCount' => [1, 2]]; - self::$functionsMap['rtrim'] = ['alternativeName' => 'mb_rtrim', 'argumentCount' => [1, 2]]; - } - - $this->functions = array_filter( - self::$functionsMap, - static fn (array $mapping): bool => (new \ReflectionFunction($mapping['alternativeName']))->isInternal(), - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run before NativeFunctionInvocationFixer. - */ - public function getPriority(): int - { - return 2; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replace non multibyte-safe functions with corresponding mb function.', - [ - new CodeSample( - <<<'PHP' - count() - 1; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_STRING)) { - continue; - } - - $lowercasedContent = strtolower($tokens[$index]->getContent()); - if (!isset($this->functions[$lowercasedContent])) { - continue; - } - - // is it a global function call? - if ($functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - $openParenthesis = $tokens->getNextMeaningfulToken($index); - $closeParenthesis = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesis); - $numberOfArguments = $argumentsAnalyzer->countArguments($tokens, $openParenthesis, $closeParenthesis); - if (!\in_array($numberOfArguments, $this->functions[$lowercasedContent]['argumentCount'], true)) { - continue; - } - $tokens[$index] = new Token([\T_STRING, $this->functions[$lowercasedContent]['alternativeName']]); - - continue; - } - - // is it a global function import? - $functionIndex = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$functionIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $functionIndex = $tokens->getPrevMeaningfulToken($functionIndex); - } - if (!$tokens[$functionIndex]->isGivenKind(CT::T_FUNCTION_IMPORT)) { - continue; - } - $tokens[$index] = new Token([\T_STRING, $this->functions[$lowercasedContent]['alternativeName']]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php deleted file mode 100644 index b00691c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php +++ /dev/null @@ -1,327 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * modernize_stripos?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * modernize_stripos: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Alexander M. Turek - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ModernizeStrposFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const REPLACEMENTS = [ - [ - 'operator' => [\T_IS_IDENTICAL, '==='], - 'operand' => [\T_LNUMBER, '0'], - 'replacement' => [\T_STRING, 'str_starts_with'], - 'negate' => false, - ], - [ - 'operator' => [\T_IS_NOT_IDENTICAL, '!=='], - 'operand' => [\T_LNUMBER, '0'], - 'replacement' => [\T_STRING, 'str_starts_with'], - 'negate' => true, - ], - [ - 'operator' => [\T_IS_NOT_IDENTICAL, '!=='], - 'operand' => [\T_STRING, 'false'], - 'replacement' => [\T_STRING, 'str_contains'], - 'negate' => false, - ], - [ - 'operator' => [\T_IS_IDENTICAL, '==='], - 'operand' => [\T_STRING, 'false'], - 'replacement' => [\T_STRING, 'str_contains'], - 'negate' => true, - ], - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replace `strpos()` and `stripos()` calls with `str_starts_with()` or `str_contains()` if possible.', - [ - new CodeSample( - <<<'PHP' - true], - ), - ], - null, - 'Risky if `strpos`, `stripos`, `str_starts_with`, `str_contains` or `strtolower` functions are overridden.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before BinaryOperatorSpacesFixer, NoExtraBlankLinesFixer, NoSpacesInsideParenthesisFixer, NoTrailingWhitespaceFixer, NotOperatorWithSpaceFixer, NotOperatorWithSuccessorSpaceFixer, PhpUnitDedicateAssertFixer, SingleSpaceAfterConstructFixer, SingleSpaceAroundConstructFixer, SpacesInsideParenthesesFixer. - * Must run after StrictComparisonFixer. - */ - public function getPriority(): int - { - return 37; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING) && $tokens->isAnyTokenKindsFound([\T_IS_IDENTICAL, \T_IS_NOT_IDENTICAL]); - } - - public function isRisky(): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('modernize_stripos', 'Whether to modernize `stripos` calls as well.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(true, false)) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - $modernizeCandidates = [[\T_STRING, 'strpos']]; - if ($this->configuration['modernize_stripos']) { - $modernizeCandidates[] = [\T_STRING, 'stripos']; - } - - for ($index = \count($tokens) - 1; $index > 0; --$index) { - // find candidate function call - if (!$tokens[$index]->equalsAny($modernizeCandidates, false) || !$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; - } - - // assert called with 2 arguments - $openIndex = $tokens->getNextMeaningfulToken($index); - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); - $arguments = $argumentsAnalyzer->getArguments($tokens, $openIndex, $closeIndex); - - if (2 !== \count($arguments)) { - continue; - } - - // check if part condition and fix if needed - $compareTokens = $this->getCompareTokens($tokens, $index, -1); // look behind - - if (null === $compareTokens) { - $compareTokens = $this->getCompareTokens($tokens, $closeIndex, 1); // look ahead - } - - if (null !== $compareTokens) { - $isCaseInsensitive = $tokens[$index]->equals([\T_STRING, 'stripos'], false); - $this->fixCall($tokens, $index, $compareTokens, $isCaseInsensitive); - } - } - } - - /** - * @param array{operator_index: int, operand_index: int} $operatorIndices - */ - private function fixCall(Tokens $tokens, int $functionIndex, array $operatorIndices, bool $isCaseInsensitive): void - { - foreach (self::REPLACEMENTS as $replacement) { - if (!$tokens[$operatorIndices['operator_index']]->equals($replacement['operator'])) { - continue; - } - - if (!$tokens[$operatorIndices['operand_index']]->equals($replacement['operand'], false)) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($operatorIndices['operator_index']); - $tokens->clearTokenAndMergeSurroundingWhitespace($operatorIndices['operand_index']); - $tokens->clearTokenAndMergeSurroundingWhitespace($functionIndex); - - if ($replacement['negate']) { - $negateInsertIndex = $functionIndex; - - $prevFunctionIndex = $tokens->getPrevMeaningfulToken($functionIndex); - if ($tokens[$prevFunctionIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $negateInsertIndex = $prevFunctionIndex; - } - - $tokens->insertAt($negateInsertIndex, new Token('!')); - ++$functionIndex; - } - - $tokens->insertAt($functionIndex, new Token($replacement['replacement'])); - - if ($isCaseInsensitive) { - $this->wrapArgumentsWithStrToLower($tokens, $functionIndex); - } - - break; - } - } - - private function wrapArgumentsWithStrToLower(Tokens $tokens, int $functionIndex): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - $shouldAddNamespace = $tokens[$functionIndex - 1]->isGivenKind(\T_NS_SEPARATOR); - - $openIndex = $tokens->getNextMeaningfulToken($functionIndex); - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); - $arguments = $argumentsAnalyzer->getArguments($tokens, $openIndex, $closeIndex); - - $firstArgumentIndexStart = array_key_first($arguments); - \assert(isset($arguments[$firstArgumentIndexStart])); - - $firstArgumentIndexEnd = $arguments[$firstArgumentIndexStart] + 3 + ($shouldAddNamespace ? 1 : 0); - - $isSecondArgumentTokenWhiteSpace = $tokens[array_key_last($arguments)]->isGivenKind(\T_WHITESPACE); - - if ($isSecondArgumentTokenWhiteSpace) { - $secondArgumentIndexStart = $tokens->getNextMeaningfulToken(array_key_last($arguments)); - } else { - $secondArgumentIndexStart = array_key_last($arguments); - } - - $secondArgumentIndexStart += 3 + ($shouldAddNamespace ? 1 : 0); - $secondArgumentIndexEnd = $arguments[array_key_last($arguments)] + 6 + ($shouldAddNamespace ? 1 : 0) + ($isSecondArgumentTokenWhiteSpace ? 1 : 0); - - if ($shouldAddNamespace) { - $tokens->insertAt($firstArgumentIndexStart, new Token([\T_NS_SEPARATOR, '\\'])); - ++$firstArgumentIndexStart; - } - - $tokens->insertAt($firstArgumentIndexStart, [new Token([\T_STRING, 'strtolower']), new Token('(')]); - $tokens->insertAt($firstArgumentIndexEnd, new Token(')')); - - if ($shouldAddNamespace) { - $tokens->insertAt($secondArgumentIndexStart, new Token([\T_NS_SEPARATOR, '\\'])); - ++$secondArgumentIndexStart; - } - - $tokens->insertAt($secondArgumentIndexStart, [new Token([\T_STRING, 'strtolower']), new Token('(')]); - $tokens->insertAt($secondArgumentIndexEnd, new Token(')')); - } - - /** - * @param -1|1 $direction - * - * @return null|array{operator_index: int, operand_index: int} - */ - private function getCompareTokens(Tokens $tokens, int $offsetIndex, int $direction): ?array - { - $operatorIndex = $tokens->getMeaningfulTokenSibling($offsetIndex, $direction); - - if (null !== $operatorIndex && $tokens[$operatorIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $operatorIndex = $tokens->getMeaningfulTokenSibling($operatorIndex, $direction); - } - - if (null === $operatorIndex || !$tokens[$operatorIndex]->isGivenKind([\T_IS_IDENTICAL, \T_IS_NOT_IDENTICAL])) { - return null; - } - - $operandIndex = $tokens->getMeaningfulTokenSibling($operatorIndex, $direction); - \assert(\is_int($operandIndex)); - - $operand = $tokens[$operandIndex]; - - if (!$operand->equals([\T_LNUMBER, '0']) && !$operand->equals([\T_STRING, 'false'], false)) { - return null; - } - - $precedenceTokenIndex = $tokens->getMeaningfulTokenSibling($operandIndex, $direction); - - if (null !== $precedenceTokenIndex && $this->isOfHigherPrecedence($tokens[$precedenceTokenIndex])) { - return null; - } - - return ['operator_index' => $operatorIndex, 'operand_index' => $operandIndex]; - } - - private function isOfHigherPrecedence(Token $token): bool - { - return - $token->isGivenKind([ - \T_DEC, // -- - \T_INC, // ++ - \T_INSTANCEOF, // instanceof - \T_IS_GREATER_OR_EQUAL, // >= - \T_IS_SMALLER_OR_EQUAL, // <= - \T_POW, // ** - \T_SL, // << - \T_SR, // >> - ]) - || $token->equalsAny([ - '!', - '%', - '*', - '+', - '-', - '.', - '/', - '<', - '>', - '~', - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php deleted file mode 100644 index 154599e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php +++ /dev/null @@ -1,350 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * sets?: list<'@all'|'@exif'|'@ftp'|'@IMAP'|'@internal'|'@ldap'|'@mbreg'|'@mysqli'|'@oci'|'@odbc'|'@openssl'|'@pcntl'|'@pg'|'@posix'|'@snmp'|'@sodium'|'@time'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * sets: list<'@all'|'@exif'|'@ftp'|'@IMAP'|'@internal'|'@ldap'|'@mbreg'|'@mysqli'|'@oci'|'@odbc'|'@openssl'|'@pcntl'|'@pg'|'@posix'|'@snmp'|'@sodium'|'@time'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Vladimir Reznichenko - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoAliasFunctionsFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const SETS = [ - '@internal' => [ - 'diskfreespace' => 'disk_free_space', - - 'dns_check_record' => 'checkdnsrr', - 'dns_get_mx' => 'getmxrr', - - 'session_commit' => 'session_write_close', - - 'stream_register_wrapper' => 'stream_wrapper_register', - 'set_file_buffer' => 'stream_set_write_buffer', - 'socket_set_blocking' => 'stream_set_blocking', - 'socket_get_status' => 'stream_get_meta_data', - 'socket_set_timeout' => 'stream_set_timeout', - 'socket_getopt' => 'socket_get_option', - 'socket_setopt' => 'socket_set_option', - - 'chop' => 'rtrim', - 'close' => 'closedir', - 'doubleval' => 'floatval', - 'fputs' => 'fwrite', - 'get_required_files' => 'get_included_files', - 'ini_alter' => 'ini_set', - 'is_double' => 'is_float', - 'is_integer' => 'is_int', - 'is_long' => 'is_int', - 'is_real' => 'is_float', - 'is_writeable' => 'is_writable', - 'join' => 'implode', - 'key_exists' => 'array_key_exists', - 'magic_quotes_runtime' => 'set_magic_quotes_runtime', - 'pos' => 'current', - 'show_source' => 'highlight_file', - 'sizeof' => 'count', - 'strchr' => 'strstr', - 'user_error' => 'trigger_error', - ], - - '@IMAP' => [ - 'imap_create' => 'imap_createmailbox', - 'imap_fetchtext' => 'imap_body', - 'imap_header' => 'imap_headerinfo', - 'imap_listmailbox' => 'imap_list', - 'imap_listsubscribed' => 'imap_lsub', - 'imap_rename' => 'imap_renamemailbox', - 'imap_scan' => 'imap_listscan', - 'imap_scanmailbox' => 'imap_listscan', - ], - - '@ldap' => [ - 'ldap_close' => 'ldap_unbind', - 'ldap_modify' => 'ldap_mod_replace', - ], - - '@mysqli' => [ - 'mysqli_execute' => 'mysqli_stmt_execute', - 'mysqli_set_opt' => 'mysqli_options', - 'mysqli_escape_string' => 'mysqli_real_escape_string', - ], - - '@pg' => [ - 'pg_exec' => 'pg_query', - ], - - '@oci' => [ - 'oci_free_cursor' => 'oci_free_statement', - ], - - '@odbc' => [ - 'odbc_do' => 'odbc_exec', - 'odbc_field_precision' => 'odbc_field_len', - ], - - '@mbreg' => [ - 'mbereg' => 'mb_ereg', - 'mbereg_match' => 'mb_ereg_match', - 'mbereg_replace' => 'mb_ereg_replace', - 'mbereg_search' => 'mb_ereg_search', - 'mbereg_search_getpos' => 'mb_ereg_search_getpos', - 'mbereg_search_getregs' => 'mb_ereg_search_getregs', - 'mbereg_search_init' => 'mb_ereg_search_init', - 'mbereg_search_pos' => 'mb_ereg_search_pos', - 'mbereg_search_regs' => 'mb_ereg_search_regs', - 'mbereg_search_setpos' => 'mb_ereg_search_setpos', - 'mberegi' => 'mb_eregi', - 'mberegi_replace' => 'mb_eregi_replace', - 'mbregex_encoding' => 'mb_regex_encoding', - 'mbsplit' => 'mb_split', - ], - - '@openssl' => [ - 'openssl_get_publickey' => 'openssl_pkey_get_public', - 'openssl_get_privatekey' => 'openssl_pkey_get_private', - ], - - '@sodium' => [ - 'sodium_crypto_scalarmult_base' => 'sodium_crypto_box_publickey_from_secretkey', - ], - - '@exif' => [ - 'read_exif_data' => 'exif_read_data', - ], - - '@ftp' => [ - 'ftp_quit' => 'ftp_close', - ], - - '@posix' => [ - 'posix_errno' => 'posix_get_last_error', - ], - - '@pcntl' => [ - 'pcntl_errno' => 'pcntl_get_last_error', - ], - - '@time' => [ - 'mktime' => ['time', 0], - 'gmmktime' => ['time', 0], - ], - ]; - - /** - * @var array stores alias (key) - master (value) functions mapping - */ - private array $aliases = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Master functions shall be used instead of aliases.', - [ - new CodeSample( - <<<'PHP' - ['@mbreg']], - ), - ], - null, - 'Risky when any of the alias functions are overridden.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before ImplodeCallFixer, PhpUnitDedicateAssertFixer. - */ - public function getPriority(): int - { - return 40; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $this->aliases = []; - - foreach ($this->configuration['sets'] as $set) { - if ('@all' === $set) { - $this->aliases = self::mergeSets(self::SETS); - - break; - } - - \assert(isset(self::SETS[$set])); - - $this->aliases = array_merge($this->aliases, self::SETS[$set]); - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - foreach ($tokens->findGivenKind(\T_STRING) as $index => $token) { - // check mapping hit - $tokenContent = strtolower($token->getContent()); - - if (!isset($this->aliases[$tokenContent])) { - continue; - } - - // skip expressions without parameters list - $openParenthesis = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$openParenthesis]->equals('(')) { - continue; - } - - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; - } - - if (\is_array($this->aliases[$tokenContent])) { - [$alias, $numberOfArguments] = $this->aliases[$tokenContent]; - - $count = $argumentsAnalyzer->countArguments($tokens, $openParenthesis, $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesis)); - - if ($numberOfArguments !== $count) { - continue; - } - } else { - $alias = $this->aliases[$tokenContent]; - } - - $tokens[$index] = new Token([\T_STRING, $alias]); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $sets = [ - '@all' => 'all listed sets', - '@internal' => 'native functions', - '@exif' => 'EXIF functions', - '@ftp' => 'FTP functions', - '@IMAP' => 'IMAP functions', - '@ldap' => 'LDAP functions', - '@mbreg' => 'from `ext-mbstring`', - '@mysqli' => 'mysqli functions', - '@oci' => 'oci functions', - '@odbc' => 'odbc functions', - '@openssl' => 'openssl functions', - '@pcntl' => 'PCNTL functions', - '@pg' => 'pg functions', - '@posix' => 'POSIX functions', - '@snmp' => 'SNMP functions', // @TODO Remove on next major 4.0 as this set is now empty - '@sodium' => 'libsodium functions', - '@time' => 'time functions', - ]; - - $list = "List of sets to fix. Defined sets are:\n\n"; - - foreach ($sets as $set => $description) { - $list .= \sprintf("* `%s` (%s);\n", $set, $description); - } - - $list = rtrim($list, ";\n").'.'; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('sets', $list)) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset(array_keys($sets))]) - ->setDefault(['@internal', '@IMAP', '@pg']) - ->getOption(), - ]); - } - - /** - * @param array> $sets - * - * @return array - */ - private static function mergeSets(array $sets): array - { - return array_merge(...array_values($sets)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasLanguageConstructCallFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasLanguageConstructCallFixer.php deleted file mode 100644 index a668d88..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasLanguageConstructCallFixer.php +++ /dev/null @@ -1,64 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoAliasLanguageConstructCallFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Master language constructs shall be used instead of aliases.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_EXIT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_EXIT)) { - continue; - } - - if ('exit' === strtolower($token->getContent())) { - continue; - } - - $tokens[$index] = new Token([\T_EXIT, 'exit']); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php deleted file mode 100644 index 74af0d3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php +++ /dev/null @@ -1,144 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * use?: 'echo'|'print', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * use: 'echo'|'print', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Sullivan Senechal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoMixedEchoPrintFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var T_ECHO|T_PRINT - */ - private int $candidateTokenType; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Either language construct `print` or `echo` should be used.', - [ - new CodeSample(" 'print']), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after EchoTagSyntaxFixer, NoUselessPrintfFixer. - */ - public function getPriority(): int - { - return -10; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound($this->candidateTokenType); - } - - protected function configurePostNormalisation(): void - { - $this->candidateTokenType = 'echo' === $this->configuration['use'] ? \T_PRINT : \T_ECHO; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if ($token->isGivenKind($this->candidateTokenType)) { - if (\T_PRINT === $this->candidateTokenType) { - $this->fixPrintToEcho($tokens, $index); - } else { - $this->fixEchoToPrint($tokens, $index); - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('use', 'The desired language construct.')) - ->setAllowedValues(['print', 'echo']) - ->setDefault('echo') - ->getOption(), - ]); - } - - private function fixEchoToPrint(Tokens $tokens, int $index): void - { - $nextTokenIndex = $tokens->getNextMeaningfulToken($index); - $endTokenIndex = $tokens->getNextTokenOfKind($index, [';', [\T_CLOSE_TAG]]); - $canBeConverted = true; - - for ($i = $nextTokenIndex; $i < $endTokenIndex; ++$i) { - if ($tokens[$i]->equalsAny(['(', [CT::T_ARRAY_BRACKET_OPEN]])) { - $blockType = Tokens::detectBlockType($tokens[$i]); - $i = $tokens->findBlockEnd($blockType['type'], $i); - } - - if ($tokens[$i]->equals(',')) { - $canBeConverted = false; - - break; - } - } - - if (false === $canBeConverted) { - return; - } - - $tokens[$index] = new Token([\T_PRINT, 'print']); - } - - private function fixPrintToEcho(Tokens $tokens, int $index): void - { - $prevToken = $tokens[$tokens->getPrevMeaningfulToken($index)]; - - if (!$prevToken->equalsAny([';', '{', '}', ')', [\T_OPEN_TAG], [\T_ELSE]])) { - return; - } - - $tokens[$index] = new Token([\T_ECHO, 'echo']); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php deleted file mode 100644 index f7c3da8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php +++ /dev/null @@ -1,223 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFunctionReferenceFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PowToExponentiationFixer extends AbstractFunctionReferenceFixer -{ - public function isCandidate(Tokens $tokens): bool - { - // minimal candidate to fix is seven tokens: pow(x,y); - return $tokens->count() > 7 && $tokens->isTokenKindFound(\T_STRING); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts `pow` to the `**` operator.', - [ - new CodeSample( - "findPowCalls($tokens); - $argumentsAnalyzer = new ArgumentsAnalyzer(); - $numberOfTokensAdded = 0; - $previousCloseParenthesisIndex = \count($tokens); - - foreach (array_reverse($candidates) as $candidate) { - // if in the previous iteration(s) tokens were added to the collection and this is done within the tokens - // indices of the current candidate than the index of the close ')' of the candidate has moved and so - // the index needs to be updated - if ($previousCloseParenthesisIndex < $candidate[2]) { - $previousCloseParenthesisIndex = $candidate[2]; - $candidate[2] += $numberOfTokensAdded; - } else { - $previousCloseParenthesisIndex = $candidate[2]; - $numberOfTokensAdded = 0; - } - - $arguments = $argumentsAnalyzer->getArguments($tokens, $candidate[1], $candidate[2]); - - if (2 !== \count($arguments)) { - continue; - } - - for ($i = $candidate[1]; $i < $candidate[2]; ++$i) { - if ($tokens[$i]->isGivenKind(\T_ELLIPSIS)) { - continue 2; - } - } - - $numberOfTokensAdded += $this->fixPowToExponentiation( - $tokens, - $candidate[0], // functionNameIndex, - $candidate[1], // openParenthesisIndex, - $candidate[2], // closeParenthesisIndex, - $arguments, - ); - } - } - - /** - * @return list - */ - private function findPowCalls(Tokens $tokens): array - { - $candidates = []; - - // Minimal candidate to fix is seven tokens: pow(x,y); - $end = \count($tokens) - 6; - - // First possible location is after the open token: 1 - for ($i = 1; $i < $end; ++$i) { - $candidate = $this->find('pow', $tokens, $i, $end); - - if (null === $candidate) { - break; - } - - $i = $candidate[1]; // proceed to openParenthesisIndex - $candidates[] = $candidate; - } - - return $candidates; - } - - /** - * @param array $arguments - * - * @return int number of tokens added to the collection - */ - private function fixPowToExponentiation(Tokens $tokens, int $functionNameIndex, int $openParenthesisIndex, int $closeParenthesisIndex, array $arguments): int - { - // find the argument separator ',' directly after the last token of the first argument; - // replace it with T_POW '**' - \assert(false !== reset($arguments)); - $tokens[$tokens->getNextTokenOfKind(reset($arguments), [','])] = new Token([\T_POW, '**']); - - // clean up the function call tokens prt. I - $tokens->clearAt($closeParenthesisIndex); - $previousIndex = $tokens->getPrevMeaningfulToken($closeParenthesisIndex); - - if ($tokens[$previousIndex]->equals(',')) { - $tokens->clearAt($previousIndex); // trailing ',' in function call (PHP 7.3) - } - - $added = 0; - - // check if the arguments need to be wrapped in parentheses - foreach (array_reverse($arguments, true) as $argumentStartIndex => $argumentEndIndex) { - if ($this->isParenthesisNeeded($tokens, $argumentStartIndex, $argumentEndIndex)) { - $tokens->insertAt($argumentEndIndex + 1, new Token(')')); - $tokens->insertAt($argumentStartIndex, new Token('(')); - $added += 2; - } - } - - // clean up the function call tokens prt. II - $tokens->clearAt($openParenthesisIndex); - $tokens->clearAt($functionNameIndex); - - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($functionNameIndex); - - if ($tokens[$prevMeaningfulTokenIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $tokens->clearAt($prevMeaningfulTokenIndex); - } - - return $added; - } - - private function isParenthesisNeeded(Tokens $tokens, int $argumentStartIndex, int $argumentEndIndex): bool - { - static $allowedKinds = null; - - if (null === $allowedKinds) { - $allowedKinds = $this->getAllowedKinds(); - } - - for ($i = $argumentStartIndex; $i <= $argumentEndIndex; ++$i) { - if ($tokens[$i]->isGivenKind($allowedKinds) || $tokens->isEmptyAt($i)) { - continue; - } - - $blockType = Tokens::detectBlockType($tokens[$i]); - - if (null !== $blockType) { - $i = $tokens->findBlockEnd($blockType['type'], $i); - - continue; - } - - if ($tokens[$i]->equals('$')) { - $i = $tokens->getNextMeaningfulToken($i); - if ($tokens[$i]->isGivenKind(CT::T_DYNAMIC_VAR_BRACE_OPEN)) { - $i = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_DYNAMIC_VAR_BRACE, $i); - - continue; - } - } - - if ($tokens[$i]->equals('+') && $tokens->getPrevMeaningfulToken($i) < $argumentStartIndex) { - continue; - } - - return true; - } - - return false; - } - - /** - * @return non-empty-list - */ - private function getAllowedKinds(): array - { - return [ - \T_DNUMBER, \T_LNUMBER, \T_VARIABLE, \T_STRING, \T_CONSTANT_ENCAPSED_STRING, \T_DOUBLE_CAST, - \T_INT_CAST, \T_INC, \T_DEC, \T_NS_SEPARATOR, \T_WHITESPACE, \T_DOUBLE_COLON, \T_LINE, \T_COMMENT, \T_DOC_COMMENT, - CT::T_NAMESPACE_OPERATOR, - ...Token::getObjectOperatorKinds(), - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php deleted file mode 100644 index 06a4e37..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php +++ /dev/null @@ -1,166 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFunctionReferenceFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * replacements?: array, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * replacements: array, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Vladimir Reznichenko - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RandomApiMigrationFixer extends AbstractFunctionReferenceFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array> - */ - private const ARGUMENT_COUNTS = [ - 'mt_getrandmax' => [0], - 'getrandmax' => [0], - 'mt_rand' => [1, 2], - 'rand' => [0, 2], - 'srand' => [0, 1], - 'mt_srand' => [0, 1], - 'random_int' => [0, 2], - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replaces `rand`, `srand`, `getrandmax` functions calls with their `mt_*` analogs or `random_int`.', - [ - new CodeSample(" ['getrandmax' => 'mt_getrandmax']], - ), - new CodeSample( - " ['rand' => 'random_int']], - ), - ], - null, - 'Risky when the configured functions are overridden. Or when relying on the seed based generating of the numbers.', - ); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - foreach ($this->configuration['replacements'] as $functionIdentity => $functionReplacement) { - if ($functionIdentity === $functionReplacement) { - continue; - } - - $currIndex = 0; - - do { - // try getting function reference and translate boundaries for humans - $boundaries = $this->find($functionIdentity, $tokens, $currIndex, $tokens->count() - 1); - - if (null === $boundaries) { - // next function search, as current one not found - continue 2; - } - - [$functionName, $openParenthesis, $closeParenthesis] = $boundaries; - $count = $argumentsAnalyzer->countArguments($tokens, $openParenthesis, $closeParenthesis); - - \assert(isset(self::ARGUMENT_COUNTS[$functionIdentity])); // for PHPStan - - if (!\in_array($count, self::ARGUMENT_COUNTS[$functionIdentity], true)) { - continue 2; - } - - // analysing cursor shift, so nested calls could be processed - $currIndex = $openParenthesis; - $tokens[$functionName] = new Token([\T_STRING, $functionReplacement]); - - if (0 === $count && 'random_int' === $functionReplacement) { - $tokens->insertAt($currIndex + 1, [ - new Token([\T_LNUMBER, '0']), - new Token(','), - new Token([\T_WHITESPACE, ' ']), - new Token([\T_STRING, 'getrandmax']), - new Token('('), - new Token(')'), - ]); - - $currIndex += 6; - } - } while (null !== $currIndex); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('replacements', 'Mapping between replaced functions with the new ones.')) - ->setAllowedTypes(['array']) - ->setAllowedValues([static function (array $value): bool { - foreach ($value as $functionName => $replacement) { - if (!\array_key_exists($functionName, self::ARGUMENT_COUNTS)) { - throw new InvalidOptionsException(\sprintf( - 'Function "%s" is not handled by the fixer.', - $functionName, - )); - } - } - - return true; - }]) - ->setDefault(Future::getV4OrV3( - [ - 'mt_getrandmax' => 'getrandmax', - 'mt_rand' => 'random_int', - 'mt_srand' => 'srand', - 'rand' => 'random_int', - ], - [ - 'getrandmax' => 'mt_getrandmax', - 'rand' => 'mt_rand', - 'srand' => 'mt_srand', - ], - )) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php deleted file mode 100644 index b874e9a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php +++ /dev/null @@ -1,245 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Alias; - -use PhpCsFixer\AbstractFunctionReferenceFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SetTypeToCastFixer extends AbstractFunctionReferenceFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Cast shall be used, not `settype`.', - [ - new CodeSample( - <<<'PHP' - isAllTokenKindsFound([\T_CONSTANT_ENCAPSED_STRING, \T_STRING, \T_VARIABLE]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $map = [ - 'array' => [\T_ARRAY_CAST, '(array)'], - 'bool' => [\T_BOOL_CAST, '(bool)'], - 'boolean' => [\T_BOOL_CAST, '(bool)'], - 'double' => [\T_DOUBLE_CAST, '(float)'], - 'float' => [\T_DOUBLE_CAST, '(float)'], - 'int' => [\T_INT_CAST, '(int)'], - 'integer' => [\T_INT_CAST, '(int)'], - 'object' => [\T_OBJECT_CAST, '(object)'], - 'string' => [\T_STRING_CAST, '(string)'], - // note: `'null' is dealt with later on - ]; - - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - foreach (array_reverse($this->findSettypeCalls($tokens)) as $candidate) { - $functionNameIndex = $candidate[0]; - - $arguments = $argumentsAnalyzer->getArguments($tokens, $candidate[1], $candidate[2]); - if (2 !== \count($arguments)) { - continue; // function must be overridden or used incorrectly - } - - $prev = $tokens->getPrevMeaningfulToken($functionNameIndex); - - if (!$tokens[$prev]->equalsAny([';', '{', '}', [\T_OPEN_TAG]])) { - continue; // return value of the function is used - } - - reset($arguments); - - // --- Test first argument -------------------- - - $firstArgumentStart = key($arguments); - if ($tokens[$firstArgumentStart]->isComment() || $tokens[$firstArgumentStart]->isWhitespace()) { - $firstArgumentStart = $tokens->getNextMeaningfulToken($firstArgumentStart); - } - - if (!$tokens[$firstArgumentStart]->isGivenKind(\T_VARIABLE)) { - continue; // settype only works with variables pass by reference, function must be overridden - } - - $commaIndex = $tokens->getNextMeaningfulToken($firstArgumentStart); - - if (null === $commaIndex || !$tokens[$commaIndex]->equals(',')) { - continue; // first argument is complex statement; function must be overridden - } - - // --- Test second argument ------------------- - - next($arguments); - $secondArgumentStart = key($arguments); - $secondArgumentEnd = $arguments[$secondArgumentStart]; - - if ($tokens[$secondArgumentStart]->isComment() || $tokens[$secondArgumentStart]->isWhitespace()) { - $secondArgumentStart = $tokens->getNextMeaningfulToken($secondArgumentStart); - } - - if ( - !$tokens[$secondArgumentStart]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING) - || $tokens->getNextMeaningfulToken($secondArgumentStart) < $secondArgumentEnd - ) { - continue; // second argument is of the wrong type or is a (complex) statement of some sort (function is overridden) - } - - // --- Test type ------------------------------ - - $type = strtolower(trim($tokens[$secondArgumentStart]->getContent(), '"\'')); - - if ('null' !== $type && !isset($map[$type])) { - continue; // we don't know how to map - } - - // --- Fixing --------------------------------- - - $argumentToken = $tokens[$firstArgumentStart]; - - $this->removeSettypeCall( - $tokens, - $functionNameIndex, - $candidate[1], - $firstArgumentStart, - $commaIndex, - $secondArgumentStart, - $candidate[2], - ); - - if ('null' === $type) { - $this->fixSettypeNullCall($tokens, $functionNameIndex, $argumentToken); - } else { - $this->fixSettypeCall($tokens, $functionNameIndex, $argumentToken, new Token($map[$type])); - } - } - } - - /** - * @return list - */ - private function findSettypeCalls(Tokens $tokens): array - { - $candidates = []; - - $end = \count($tokens); - for ($i = 1; $i < $end; ++$i) { - $candidate = $this->find('settype', $tokens, $i, $end); - if (null === $candidate) { - break; - } - - $i = $candidate[1]; // proceed to openParenthesisIndex - $candidates[] = $candidate; - } - - return $candidates; - } - - private function removeSettypeCall( - Tokens $tokens, - int $functionNameIndex, - int $openParenthesisIndex, - int $firstArgumentStart, - int $commaIndex, - int $secondArgumentStart, - int $closeParenthesisIndex - ): void { - $tokens->clearTokenAndMergeSurroundingWhitespace($closeParenthesisIndex); - $prevIndex = $tokens->getPrevMeaningfulToken($closeParenthesisIndex); - if ($tokens[$prevIndex]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevIndex); - } - $tokens->clearTokenAndMergeSurroundingWhitespace($secondArgumentStart); - $tokens->clearTokenAndMergeSurroundingWhitespace($commaIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($firstArgumentStart); - $tokens->clearTokenAndMergeSurroundingWhitespace($openParenthesisIndex); - $tokens->clearAt($functionNameIndex); // we'll be inserting here so no need to merge the space tokens - $tokens->clearEmptyTokens(); - } - - private function fixSettypeCall( - Tokens $tokens, - int $functionNameIndex, - Token $argumentToken, - Token $castToken - ): void { - $tokens->insertAt( - $functionNameIndex, - [ - clone $argumentToken, - new Token([\T_WHITESPACE, ' ']), - new Token('='), - new Token([\T_WHITESPACE, ' ']), - $castToken, - new Token([\T_WHITESPACE, ' ']), - clone $argumentToken, - ], - ); - - $tokens->removeTrailingWhitespace($functionNameIndex + 6); // 6 = number of inserted tokens -1 for offset correction - } - - private function fixSettypeNullCall( - Tokens $tokens, - int $functionNameIndex, - Token $argumentToken - ): void { - $tokens->insertAt( - $functionNameIndex, - [ - clone $argumentToken, - new Token([\T_WHITESPACE, ' ']), - new Token('='), - new Token([\T_WHITESPACE, ' ']), - new Token([\T_STRING, 'null']), - ], - ); - - $tokens->removeTrailingWhitespace($functionNameIndex + 4); // 4 = number of inserted tokens -1 for offset correction - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php deleted file mode 100644 index b8cf7bf..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php +++ /dev/null @@ -1,140 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * syntax?: 'long'|'short', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * syntax: 'long'|'short', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gregor Harlan - * @author Sebastiaan Stok - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ArraySyntaxFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var CT::T_ARRAY_BRACKET_OPEN|T_ARRAY - */ - private $candidateTokenKind; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHP arrays should be declared using the configured syntax.', - [ - new CodeSample( - " 'long'], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BinaryOperatorSpacesFixer, NoWhitespaceInEmptyArrayFixer, SingleSpaceAfterConstructFixer, SingleSpaceAroundConstructFixer, TernaryOperatorSpacesFixer. - */ - public function getPriority(): int - { - return 37; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound($this->candidateTokenKind); - } - - protected function configurePostNormalisation(): void - { - $this->resolveCandidateTokenKind(); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; 0 <= $index; --$index) { - if ($tokens[$index]->isGivenKind($this->candidateTokenKind)) { - if ('short' === $this->configuration['syntax']) { - $this->fixToShortArraySyntax($tokens, $index); - } else { - $this->fixToLongArraySyntax($tokens, $index); - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('syntax', 'Whether to use the `long` or `short` array syntax.')) - ->setAllowedValues(['long', 'short']) - ->setDefault('short') - ->getOption(), - ]); - } - - private function fixToLongArraySyntax(Tokens $tokens, int $index): void - { - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $index); - - $tokens[$index] = new Token('('); - $tokens[$closeIndex] = new Token(')'); - - $tokens->insertAt($index, new Token([\T_ARRAY, 'array'])); - } - - private function fixToShortArraySyntax(Tokens $tokens, int $index): void - { - $openIndex = $tokens->getNextTokenOfKind($index, ['(']); - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); - - $tokens[$openIndex] = new Token([CT::T_ARRAY_BRACKET_OPEN, '[']); - $tokens[$closeIndex] = new Token([CT::T_ARRAY_BRACKET_CLOSE, ']']); - - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - - private function resolveCandidateTokenKind(): void - { - $this->candidateTokenKind = 'long' === $this->configuration['syntax'] ? CT::T_ARRAY_BRACKET_OPEN : \T_ARRAY; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php deleted file mode 100644 index 98c98d4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php +++ /dev/null @@ -1,82 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Carlos Cirello - * @author Dariusz Rumiński - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoMultilineWhitespaceAroundDoubleArrowFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Operator `=>` should not be surrounded by multi-line whitespaces.', - [new CodeSample(" 2);\n")], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BinaryOperatorSpacesFixer, MethodArgumentSpaceFixer. - */ - public function getPriority(): int - { - return 31; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOUBLE_ARROW); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOUBLE_ARROW)) { - continue; - } - - if (!$tokens[$index - 2]->isComment() || str_starts_with($tokens[$index - 2]->getContent(), '/*')) { - $this->fixWhitespace($tokens, $index - 1); - } - - // do not move anything about if there is a comment following the whitespace - if (!$tokens[$index + 2]->isComment()) { - $this->fixWhitespace($tokens, $index + 1); - } - } - } - - private function fixWhitespace(Tokens $tokens, int $index): void - { - $token = $tokens[$index]; - - if ($token->isWhitespace() && !$token->isWhitespace(" \t")) { - $tokens[$index] = new Token([\T_WHITESPACE, rtrim($token->getContent()).' ']); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php deleted file mode 100644 index 1e666b6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php +++ /dev/null @@ -1,54 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\Basic\NoTrailingCommaInSinglelineFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @deprecated - * - * @author Dariusz Rumiński - * @author Sebastiaan Stok - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoTrailingCommaInSinglelineArrayFixer extends AbstractProxyFixer implements DeprecatedFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHP single-line arrays should not have trailing comma.', - [new CodeSample("proxyFixers); - } - - protected function createProxyFixers(): array - { - $fixer = new NoTrailingCommaInSinglelineFixer(); - $fixer->configure(['elements' => ['array']]); - - return [$fixer]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php deleted file mode 100644 index 6523dc3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php +++ /dev/null @@ -1,156 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * after_heredoc?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * after_heredoc: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Adam Marczuk - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoWhitespaceBeforeCommaInArrayFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'In array declaration, there MUST NOT be a whitespace before each comma.', - [ - new CodeSample(" true], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if ($tokens[$index]->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN])) { - $this->fixSpacing($index, $tokens); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('after_heredoc', 'Whether the whitespace between heredoc end and comma should be removed.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(true, false)) - ->getOption(), - ]); - } - - /** - * Method to fix spacing in array declaration. - */ - private function fixSpacing(int $index, Tokens $tokens): void - { - if ($tokens[$index]->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - $startIndex = $index; - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $startIndex); - } else { - $startIndex = $tokens->getNextTokenOfKind($index, ['(']); - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startIndex); - } - - for ($i = $endIndex - 1; $i > $startIndex; --$i) { - $i = $this->skipNonArrayElements($i, $tokens); - $currentToken = $tokens[$i]; - $prevIndex = $tokens->getPrevNonWhitespace($i - 1); - - if ( - $currentToken->equals(',') && !$tokens[$prevIndex]->isComment() - && (true === $this->configuration['after_heredoc'] || !$tokens[$prevIndex]->isGivenKind(\T_END_HEREDOC)) - ) { - $tokens->removeLeadingWhitespace($i); - } - } - } - - /** - * Method to move index over the non-array elements like function calls or function declarations. - */ - private function skipNonArrayElements(int $index, Tokens $tokens): int - { - if ($tokens[$index]->equals('}')) { - return $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $index); - } - - if ($tokens[$index]->equals(')')) { - $startIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $startIndex = $tokens->getPrevMeaningfulToken($startIndex); - if (!$tokens[$startIndex]->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN])) { - return $startIndex; - } - } - - if ($tokens[$index]->equals(',') && $this->commaIsPartOfImplementsList($index, $tokens)) { - --$index; - } - - return $index; - } - - private function commaIsPartOfImplementsList(int $index, Tokens $tokens): bool - { - do { - $index = $tokens->getPrevMeaningfulToken($index); - - $current = $tokens[$index]; - } while ($current->isGivenKind(\T_STRING) || $current->equals(',')); - - return $current->isGivenKind(\T_IMPLEMENTS); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceInEmptyArrayFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceInEmptyArrayFixer.php deleted file mode 100644 index d80e009..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceInEmptyArrayFixer.php +++ /dev/null @@ -1,72 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Jeremiasz Major - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoWhitespaceInEmptyArrayFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Empty arrays should not contain only whitespace.', - [new CodeSample("isTokenKindFound(CT::T_ARRAY_BRACKET_OPEN); - } - - /** - * {@inheritdoc} - * - * Must run after ArraySyntaxFixer, NoEmptyCommentFixer. - */ - public function getPriority(): int - { - return 0; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 1; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind(CT::T_ARRAY_BRACKET_CLOSE)) { - continue; - } - - if ($tokens->getPrevNonWhitespace($index) !== $index - 2) { - continue; - } - - if (!$tokens[$index - 2]->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - continue; - } - - $tokens->clearAt($index - 1); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php deleted file mode 100644 index 90055e5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php +++ /dev/null @@ -1,59 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NormalizeIndexBraceFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Array index should always be written by using square braces.', - [new VersionSpecificCodeSample( - "isTokenKindFound(CT::T_ARRAY_INDEX_BRACE_OPEN); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(CT::T_ARRAY_INDEX_BRACE_OPEN)) { - $tokens[$index] = new Token('['); - } elseif ($token->isGivenKind(CT::T_ARRAY_INDEX_BRACE_CLOSE)) { - $tokens[$index] = new Token(']'); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php deleted file mode 100644 index 5e9526a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php +++ /dev/null @@ -1,113 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReturnToYieldFromFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'If the function explicitly returns an array, and has the return type `iterable`, then `yield from` must be used instead of `return`.', - [ - new CodeSample( - <<<'PHP' - isAllTokenKindsFound([\T_FUNCTION, \T_RETURN]) && $tokens->isAnyTokenKindsFound([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN]); - } - - /** - * {@inheritdoc} - * - * Must run before YieldFromArrayToYieldsFixer. - * Must run after PhpUnitDataProviderReturnTypeFixer, PhpdocToReturnTypeFixer. - */ - public function getPriority(): int - { - return 1; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens->findGivenKind(\T_RETURN) as $index => $token) { - if (!$this->shouldBeFixed($tokens, $index)) { - continue; - } - - $tokens[$index] = new Token([\T_YIELD_FROM, 'yield from']); - } - } - - private function shouldBeFixed(Tokens $tokens, int $returnIndex): bool - { - $arrayStartIndex = $tokens->getNextMeaningfulToken($returnIndex); - if (!$tokens[$arrayStartIndex]->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN])) { - return false; - } - - if ($tokens[$arrayStartIndex]->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - $arrayEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $arrayStartIndex); - } else { - $arrayOpenParenthesisIndex = $tokens->getNextTokenOfKind($arrayStartIndex, ['(']); - $arrayEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $arrayOpenParenthesisIndex); - } - - $functionEndIndex = $arrayEndIndex; - do { - $functionEndIndex = $tokens->getNextMeaningfulToken($functionEndIndex); - } while (null !== $functionEndIndex && $tokens[$functionEndIndex]->equals(';')); - if (null === $functionEndIndex || !$tokens[$functionEndIndex]->equals('}')) { - return false; - } - - $functionStartIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $functionEndIndex); - - $returnTypeIndex = $tokens->getPrevMeaningfulToken($functionStartIndex); - if (!$tokens[$returnTypeIndex]->isGivenKind(\T_STRING)) { - return false; - } - - if ('iterable' !== strtolower($tokens[$returnTypeIndex]->getContent())) { - return false; - } - - $beforeReturnTypeIndex = $tokens->getPrevMeaningfulToken($returnTypeIndex); - - return $tokens[$beforeReturnTypeIndex]->isGivenKind(CT::T_TYPE_COLON); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php deleted file mode 100644 index 7f79810..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php +++ /dev/null @@ -1,99 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Jared Henderson - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TrimArraySpacesFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Arrays should be formatted like function/method arguments, without leading or trailing single line space.', - [new CodeSample("isAnyTokenKindsFound([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN, CT::T_DESTRUCTURING_BRACKET_OPEN]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = 0, $c = $tokens->count(); $index < $c; ++$index) { - if ($tokens[$index]->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN, CT::T_DESTRUCTURING_BRACKET_OPEN])) { - self::fixArray($tokens, $index); - } - } - } - - /** - * Method to trim leading/trailing whitespace within single line arrays. - */ - private static function fixArray(Tokens $tokens, int $index): void - { - $startIndex = $index; - - if ($tokens[$startIndex]->isGivenKind(\T_ARRAY)) { - $startIndex = $tokens->getNextMeaningfulToken($startIndex); - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startIndex); - } elseif ($tokens[$startIndex]->isGivenKind(CT::T_DESTRUCTURING_BRACKET_OPEN)) { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_DESTRUCTURING_BRACKET, $startIndex); - } else { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $startIndex); - } - - $nextIndex = $startIndex + 1; - $nextToken = $tokens[$nextIndex]; - $nextNonWhitespaceIndex = $tokens->getNextNonWhitespace($startIndex); - $nextNonWhitespaceToken = $tokens[$nextNonWhitespaceIndex]; - $tokenAfterNextNonWhitespaceToken = $tokens[$nextNonWhitespaceIndex + 1]; - - $prevIndex = $endIndex - 1; - $prevToken = $tokens[$prevIndex]; - $prevNonWhitespaceIndex = $tokens->getPrevNonWhitespace($endIndex); - $prevNonWhitespaceToken = $tokens[$prevNonWhitespaceIndex]; - - if ( - $nextToken->isWhitespace(" \t") - && ( - !$nextNonWhitespaceToken->isComment() - || $nextNonWhitespaceIndex === $prevNonWhitespaceIndex - || $tokenAfterNextNonWhitespaceToken->isWhitespace(" \t") - || str_starts_with($nextNonWhitespaceToken->getContent(), '/*') - ) - ) { - $tokens->clearAt($nextIndex); - } - - if ( - $prevToken->isWhitespace(" \t") - && !$prevNonWhitespaceToken->equals(',') - ) { - $tokens->clearAt($prevIndex); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php deleted file mode 100644 index 9ea9def..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php +++ /dev/null @@ -1,152 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * ensure_single_space?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * ensure_single_space: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Adam Marczuk - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class WhitespaceAfterCommaInArrayFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'In array declaration, there MUST be a whitespace after each comma.', - [ - new CodeSample(" true]), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN]); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('ensure_single_space', 'If there are only horizontal whitespaces after the comma then ensure it is a single space.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensToInsert = []; - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - if (!$tokens[$index]->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN])) { - continue; - } - - if ($tokens[$index]->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - $startIndex = $index; - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $startIndex); - } else { - $startIndex = $tokens->getNextTokenOfKind($index, ['(']); - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startIndex); - } - - for ($i = $endIndex - 1; $i > $startIndex; --$i) { - $i = $this->skipNonArrayElements($i, $tokens); - if (!$tokens[$i]->equals(',')) { - continue; - } - if (!$tokens[$i + 1]->isWhitespace()) { - $tokensToInsert[$i + 1] = new Token([\T_WHITESPACE, ' ']); - } elseif ( - true === $this->configuration['ensure_single_space'] - && ' ' !== $tokens[$i + 1]->getContent() - && Preg::match('/^\h+$/', $tokens[$i + 1]->getContent()) - && (!$tokens[$i + 2]->isComment() || Preg::match('/^\h+$/', $tokens[$i + 3]->getContent())) - ) { - $tokens[$i + 1] = new Token([\T_WHITESPACE, ' ']); - } - } - } - - if ([] !== $tokensToInsert) { - $tokens->insertSlices($tokensToInsert); - } - } - - /** - * Method to move index over the non-array elements like function calls or function declarations. - * - * @return int New index - */ - private function skipNonArrayElements(int $index, Tokens $tokens): int - { - if ($tokens[$index]->equals('}')) { - return $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $index); - } - - if ($tokens[$index]->equals(')')) { - $startIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $startIndex = $tokens->getPrevMeaningfulToken($startIndex); - if (!$tokens[$startIndex]->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN])) { - return $startIndex; - } - } - - if ($tokens[$index]->equals(',') && $this->commaIsPartOfImplementsList($index, $tokens)) { - --$index; - } - - return $index; - } - - private function commaIsPartOfImplementsList(int $index, Tokens $tokens): bool - { - do { - $index = $tokens->getPrevMeaningfulToken($index); - - $current = $tokens[$index]; - } while ($current->isGivenKind(\T_STRING) || $current->equals(',')); - - return $current->isGivenKind(\T_IMPLEMENTS); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php deleted file mode 100644 index 52ae1a5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php +++ /dev/null @@ -1,195 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ArrayNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class YieldFromArrayToYieldsFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Yield from array must be unpacked to series of yields.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_YIELD_FROM); - } - - /** - * {@inheritdoc} - * - * Must run before BlankLineBeforeStatementFixer, NoExtraBlankLinesFixer, NoMultipleStatementsPerLineFixer, NoWhitespaceInBlankLineFixer, StatementIndentationFixer. - * Must run after ReturnToYieldFromFixer. - */ - public function getPriority(): int - { - return 0; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - /** - * @var array $inserts - */ - $inserts = []; - - foreach ($this->getYieldsFromToUnpack($tokens) as $index => [$startIndex, $endIndex]) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - if ($tokens[$startIndex]->equals('(')) { - $prevStartIndex = $tokens->getPrevMeaningfulToken($startIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($prevStartIndex); // clear `array` from `array(` - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($startIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($endIndex); - - $arrayHasTrailingComma = false; - - $startIndex = $tokens->getNextMeaningfulToken($startIndex); - - $inserts[$startIndex] = [new Token([\T_YIELD, 'yield']), new Token([\T_WHITESPACE, ' '])]; - - foreach ($this->findArrayItemCommaIndex( - $tokens, - $startIndex, - $tokens->getPrevMeaningfulToken($endIndex), - ) as $commaIndex) { - $nextItemIndex = $tokens->getNextMeaningfulToken($commaIndex); - - if ($nextItemIndex < $endIndex) { - $inserts[$nextItemIndex] = [new Token([\T_YIELD, 'yield']), new Token([\T_WHITESPACE, ' '])]; - $tokens[$commaIndex] = new Token(';'); - } else { - $arrayHasTrailingComma = true; - // array has trailing comma - we replace it with `;` (as it's best fit to put it) - $tokens[$commaIndex] = new Token(';'); - } - } - - // there was a trailing comma, so we do not need original `;` after initial array structure - if (true === $arrayHasTrailingComma) { - $tokens->clearTokenAndMergeSurroundingWhitespace($tokens->getNextMeaningfulToken($endIndex)); - } - } - - $tokens->insertSlices($inserts); - } - - /** - * @return iterable - */ - private function getYieldsFromToUnpack(Tokens $tokens): iterable - { - $tokensCount = $tokens->count(); - $index = 0; - while (++$index < $tokensCount) { - if (!$tokens[$index]->isGivenKind(\T_YIELD_FROM)) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$prevIndex]->equalsAny([';', '{', '}', [\T_OPEN_TAG]])) { - continue; - } - - $arrayStartIndex = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$arrayStartIndex]->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN])) { - continue; - } - - if ($tokens[$arrayStartIndex]->isGivenKind(\T_ARRAY)) { - $startIndex = $tokens->getNextTokenOfKind($arrayStartIndex, ['(']); - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startIndex); - } else { - $startIndex = $arrayStartIndex; - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $startIndex); - } - - // is there empty "yield from []" ? - if ($endIndex === $tokens->getNextMeaningfulToken($startIndex)) { - continue; - } - - // is there any nested "yield from"? - if ([] !== $tokens->findGivenKind(\T_YIELD_FROM, $startIndex, $endIndex)) { - continue; - } - - yield $index => [$startIndex, $endIndex]; - } - } - - /** - * @return iterable - */ - private function findArrayItemCommaIndex(Tokens $tokens, int $startIndex, int $endIndex): iterable - { - for ($index = $startIndex; $index <= $endIndex; ++$index) { - $token = $tokens[$index]; - - // skip nested (), [], {} constructs - $blockDefinitionProbe = Tokens::detectBlockType($token); - - if (null !== $blockDefinitionProbe && true === $blockDefinitionProbe['isStart']) { - $index = $tokens->findBlockEnd($blockDefinitionProbe['type'], $index); - - continue; - } - - if (!$tokens[$index]->equals(',')) { - continue; - } - - yield $index; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeBlockNoSpacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeBlockNoSpacesFixer.php deleted file mode 100644 index 8c62b84..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeBlockNoSpacesFixer.php +++ /dev/null @@ -1,106 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\AttributeNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\IndentationTrait; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Albin Kester - * - * @see https://www.php-fig.org/per/coding-style/#121-basics - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AttributeBlockNoSpacesFixer extends AbstractFixer -{ - use IndentationTrait; - - public function getDefinition(): FixerDefinition - { - return new FixerDefinition( - 'Remove spaces before and after the attributes block.', - [ - new CodeSample( - 'isTokenKindFound(FCT::T_ATTRIBUTE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $index = 0; - - while (null !== $index = $tokens->getNextTokenOfKind($index, [[\T_ATTRIBUTE]])) { - $toDelete = []; - - $attributeAnalysis = AttributeAnalyzer::collectOne($tokens, $index); - - $index = $attributeAnalysis->getOpeningBracketIndex(); - $token = $tokens[$index]; - \assert($token->isGivenKind([\T_ATTRIBUTE])); - - $nextTokenIndex = $tokens->getNextMeaningfulToken($index); - for ($i = $index + 1; $i < $nextTokenIndex; ++$i) { - if (!$tokens[$i]->isWhitespace()) { - $toDelete = []; - - break; - } - $toDelete[] = $i; - } - unset($i); - - $index = $attributeAnalysis->getClosingBracketIndex(); - $token = $tokens[$index]; - \assert($token->isGivenKind([CT::T_ATTRIBUTE_CLOSE])); - - $prevTokenIndex = $tokens->getPrevMeaningfulToken($index); - for ($i = $prevTokenIndex + 1; $i < $index; ++$i) { - if (!$tokens[$i]->isWhitespace()) { - $toDelete = []; - - break; - } - $toDelete[] = $i; - } - unset($i); - - foreach ($toDelete as $i) { - $tokens->clearAt($i); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php deleted file mode 100644 index 880272c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php +++ /dev/null @@ -1,139 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\AttributeNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * use_parentheses?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * use_parentheses: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author HypeMC - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AttributeEmptyParenthesesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHP attributes declared without arguments must (not) be followed by empty parentheses.', - [ - new CodeSample(" true], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(FCT::T_ATTRIBUTE); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('use_parentheses', 'Whether attributes should be followed by parentheses or not.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $index = 0; - - while (null !== $index = $tokens->getNextTokenOfKind($index, [[\T_ATTRIBUTE]])) { - $nextIndex = $index; - - do { - $parenthesesIndex = $tokens->getNextTokenOfKind($nextIndex, ['(', ',', [CT::T_ATTRIBUTE_CLOSE]]); - - if (true === $this->configuration['use_parentheses']) { - $this->ensureParenthesesAt($tokens, $parenthesesIndex); - } else { - $this->ensureNoParenthesesAt($tokens, $parenthesesIndex); - } - - $nextIndex = $tokens->getNextTokenOfKind($nextIndex, ['(', ',', [CT::T_ATTRIBUTE_CLOSE]]); - - // Find closing parentheses, we need to do this in case there's a comma inside the parentheses - if ($tokens[$nextIndex]->equals('(')) { - $nextIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextIndex); - $nextIndex = $tokens->getNextTokenOfKind($nextIndex, [',', [CT::T_ATTRIBUTE_CLOSE]]); - } - - // In case there's a comma right before T_ATTRIBUTE_CLOSE - if (!$tokens[$nextIndex]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - } - } while (!$tokens[$nextIndex]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)); - } - } - - private function ensureParenthesesAt(Tokens $tokens, int $index): void - { - if ($tokens[$index]->equals('(')) { - return; - } - - $tokens->insertAt( - $tokens->getPrevMeaningfulToken($index) + 1, - [new Token('('), new Token(')')], - ); - } - - private function ensureNoParenthesesAt(Tokens $tokens, int $index): void - { - if (!$tokens[$index]->equals('(')) { - return; - } - - $closingIndex = $tokens->getNextMeaningfulToken($index); - - // attribute has arguments - parentheses can not be removed - if (!$tokens[$closingIndex]->equals(')')) { - return; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($closingIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/GeneralAttributeRemoveFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/GeneralAttributeRemoveFixer.php deleted file mode 100644 index 6a7d8e8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/GeneralAttributeRemoveFixer.php +++ /dev/null @@ -1,145 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\AttributeNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\AttributeAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-import-type _AttributeItems from AttributeAnalysis - * @phpstan-import-type _AttributeItem from AttributeAnalysis - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * attributes?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * attributes: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Raffaele Carelle - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class GeneralAttributeRemoveFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes configured attributes by their respective FQN.', - [ - new CodeSample( - <<<'PHP' - ['\A\B\Foo']], - ), - new CodeSample( - <<<'PHP' - ['\A\B\Foo', 'A\B\Bar']], - ), - ], - ); - } - - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(FCT::T_ATTRIBUTE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $index = 0; - - while (null !== $index = $tokens->getNextTokenOfKind($index, [[\T_ATTRIBUTE]])) { - $attributeAnalysis = AttributeAnalyzer::collectOne($tokens, $index); - - $endIndex = $attributeAnalysis->getEndIndex(); - - $removedCount = 0; - foreach ($attributeAnalysis->getAttributes() as $element) { - $fullname = AttributeAnalyzer::determineAttributeFullyQualifiedName($tokens, $element['name'], $element['start']); - - if (!\in_array($fullname, $this->configuration['attributes'], true)) { - continue; - } - - $tokens->clearRange($element['start'], $element['end']); - ++$removedCount; - - $siblingIndex = $tokens->getNonEmptySibling($element['end'], 1); - - // Clear element comma - if (',' === $tokens[$siblingIndex]->getContent()) { - $tokens->clearAt($siblingIndex); - } - } - - // Clear whole attribute if all are removed (multiline attribute case) - if (\count($attributeAnalysis->getAttributes()) === $removedCount) { - $tokens->clearRange($attributeAnalysis->getStartIndex(), $attributeAnalysis->getEndIndex()); - } - - // Clear trailing comma - $tokenIndex = $tokens->getMeaningfulTokenSibling($attributeAnalysis->getClosingBracketIndex(), -1); - if (',' === $tokens[$tokenIndex]->getContent()) { - $tokens->clearAt($tokenIndex); - } - - $index = $endIndex; - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('attributes', 'List of FQNs of attributes for removal.')) - ->setAllowedTypes(['class-string[]']) - ->setDefault([]) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php deleted file mode 100644 index 2132760..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php +++ /dev/null @@ -1,273 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\AttributeNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\AttributeAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FullyQualifiedNameAnalyzer; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-import-type _AttributeItems from AttributeAnalysis - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * order?: list, - * sort_algorithm?: 'alpha'|'custom', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * order: array, - * sort_algorithm: 'alpha'|'custom', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author HypeMC - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class OrderedAttributesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public const ORDER_ALPHA = 'alpha'; - public const ORDER_CUSTOM = 'custom'; - - private const SUPPORTED_SORT_ALGORITHMS = [ - self::ORDER_ALPHA, - self::ORDER_CUSTOM, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Sorts attributes using the configured sort algorithm.', - [ - new VersionSpecificCodeSample( - <<<'EOL' - self::ORDER_CUSTOM, 'order' => ['A\B\Qux', 'A\B\Bar', 'A\B\Corge']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after FullyQualifiedStrictTypesFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(FCT::T_ATTRIBUTE); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $fixerName = $this->getName(); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('sort_algorithm', 'How the attributes should be sorted.')) - ->setAllowedValues(self::SUPPORTED_SORT_ALGORITHMS) - ->setDefault(self::ORDER_ALPHA) - ->setNormalizer(static function (Options $options, string $value) use ($fixerName): string { - if (self::ORDER_CUSTOM === $value && [] === $options['order']) { - throw new InvalidFixerConfigurationException( - $fixerName, - 'The custom order strategy requires providing `order` option with a list of attributes\'s FQNs.', - ); - } - - return $value; - }) - ->getOption(), - (new FixerOptionBuilder('order', 'A list of FQCNs of attributes defining the desired order used when custom sorting algorithm is configured.')) - ->setAllowedTypes(['string[]']) - ->setDefault([]) - ->setNormalizer(static function (Options $options, array $value) use ($fixerName): array { - if ($value !== array_unique($value)) { - throw new InvalidFixerConfigurationException($fixerName, 'The list includes attributes that are not unique.'); - } - - return array_flip(array_values( - array_map(static fn (string $attribute): string => ltrim($attribute, '\\'), $value), - )); - }) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $fullyQualifiedNameAnalyzer = new FullyQualifiedNameAnalyzer($tokens); - - $index = 0; - - while (null !== $index = $tokens->getNextTokenOfKind($index, [[\T_ATTRIBUTE]])) { - /** @var _AttributeItems $elements */ - $elements = array_map(fn (AttributeAnalysis $attributeAnalysis): array => [ - 'name' => $this->sortAttributes($fullyQualifiedNameAnalyzer, $tokens, $attributeAnalysis->getStartIndex(), $attributeAnalysis->getAttributes()), - 'start' => $attributeAnalysis->getStartIndex(), - 'end' => $attributeAnalysis->getEndIndex(), - ], AttributeAnalyzer::collect($tokens, $index)); - - $endIndex = end($elements)['end']; - - try { - if (1 === \count($elements)) { - continue; - } - - $sortedElements = $this->sortElements($elements); - - if ($elements === $sortedElements) { - continue; - } - - $this->sortTokens($tokens, $index, $endIndex, $sortedElements); - } finally { - $index = $endIndex; - } - } - } - - /** - * @param _AttributeItems $attributes - */ - private function sortAttributes(FullyQualifiedNameAnalyzer $fullyQualifiedNameAnalyzer, Tokens $tokens, int $index, array $attributes): string - { - if (1 === \count($attributes)) { - return $this->getAttributeName($fullyQualifiedNameAnalyzer, $attributes[0]['name'], $attributes[0]['start']); - } - - foreach ($attributes as &$attribute) { - $attribute['name'] = $this->getAttributeName($fullyQualifiedNameAnalyzer, $attribute['name'], $attribute['start']); - } - - $sortedElements = $this->sortElements($attributes); - - if ($attributes === $sortedElements) { - return $attributes[0]['name']; - } - - $this->sortTokens($tokens, $index + 1, end($attributes)['end'], $sortedElements, new Token(',')); - - return $sortedElements[0]['name']; - } - - private function getAttributeName(FullyQualifiedNameAnalyzer $fullyQualifiedNameAnalyzer, string $name, int $index): string - { - if (self::ORDER_CUSTOM === $this->configuration['sort_algorithm']) { - return $fullyQualifiedNameAnalyzer->getFullyQualifiedName($name, $index, NamespaceUseAnalysis::TYPE_CLASS); - } - - return ltrim($name, '\\'); - } - - /** - * @param _AttributeItems $elements - * - * @return _AttributeItems - */ - private function sortElements(array $elements): array - { - usort($elements, function (array $a, array $b): int { - $sortAlgorithm = $this->configuration['sort_algorithm']; - - if (self::ORDER_ALPHA === $sortAlgorithm) { - return $a['name'] <=> $b['name']; - } - - return - ($this->configuration['order'][$a['name']] ?? \PHP_INT_MAX) - <=> ($this->configuration['order'][$b['name']] ?? \PHP_INT_MAX); - }); - - return $elements; - } - - /** - * @param _AttributeItems $elements - */ - private function sortTokens(Tokens $tokens, int $startIndex, int $endIndex, array $elements, ?Token $delimiter = null): void - { - $replaceTokens = []; - - foreach ($elements as $pos => $element) { - for ($i = $element['start']; $i <= $element['end']; ++$i) { - $replaceTokens[] = clone $tokens[$i]; - } - if (null !== $delimiter && $pos !== \count($elements) - 1) { - $replaceTokens[] = clone $delimiter; - } - } - - $tokens->overrideRange($startIndex, $endIndex, $replaceTokens); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php deleted file mode 100644 index 21383ac..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php +++ /dev/null @@ -1,276 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\ControlStructure\ControlStructureBracesFixer; -use PhpCsFixer\Fixer\ControlStructure\ControlStructureContinuationPositionFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\Fixer\LanguageConstruct\DeclareParenthesesFixer; -use PhpCsFixer\Fixer\LanguageConstruct\SingleSpaceAroundConstructFixer; -use PhpCsFixer\Fixer\Whitespace\NoExtraBlankLinesFixer; -use PhpCsFixer\Fixer\Whitespace\StatementIndentationFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * Fixer for rules defined in PSR2 ¶4.1, ¶4.4, ¶5. - * - * @deprecated - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * allow_single_line_anonymous_class_with_empty_body?: bool, - * allow_single_line_closure?: bool, - * position_after_anonymous_constructs?: 'next'|'same', - * position_after_control_structures?: 'next'|'same', - * position_after_functions_and_oop_constructs?: 'next'|'same', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * allow_single_line_anonymous_class_with_empty_body: bool, - * allow_single_line_closure: bool, - * position_after_anonymous_constructs: 'next'|'same', - * position_after_control_structures: 'next'|'same', - * position_after_functions_and_oop_constructs: 'next'|'same', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BracesFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface, DeprecatedFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const LINE_NEXT = 'next'; - - /** - * @internal - */ - public const LINE_SAME = 'same'; - - private ?BracesPositionFixer $bracesPositionFixer = null; - - private ?ControlStructureContinuationPositionFixer $controlStructureContinuationPositionFixer = null; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The body of each structure MUST be enclosed by braces. Braces should be properly placed. Body of braces should be properly indented.', - [ - new CodeSample( - <<<'PHP' - = 0; }; - $negative = function ($item) { - return $item < 0; }; - - PHP, - ['allow_single_line_closure' => true], - ), - new CodeSample( - <<<'PHP' - self::LINE_SAME], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before HeredocIndentationFixer. - * Must run after ClassAttributesSeparationFixer, ClassDefinitionFixer, EmptyLoopBodyFixer, NoAlternativeSyntaxFixer, NoEmptyStatementFixer, NoUselessElseFixer, SingleLineThrowFixer, SingleSpaceAfterConstructFixer, SingleSpaceAroundConstructFixer, SingleTraitInsertPerStatementFixer. - */ - public function getPriority(): int - { - return 35; - } - - public function getSuccessorsNames(): array - { - return array_keys($this->proxyFixers); - } - - protected function configurePostNormalisation(): void - { - $this->getBracesPositionFixer()->configure([ - 'control_structures_opening_brace' => $this->translatePositionOption($this->configuration['position_after_control_structures']), - 'functions_opening_brace' => $this->translatePositionOption($this->configuration['position_after_functions_and_oop_constructs']), - 'anonymous_functions_opening_brace' => $this->translatePositionOption($this->configuration['position_after_anonymous_constructs']), - 'classes_opening_brace' => $this->translatePositionOption($this->configuration['position_after_functions_and_oop_constructs']), - 'anonymous_classes_opening_brace' => $this->translatePositionOption($this->configuration['position_after_anonymous_constructs']), - 'allow_single_line_empty_anonymous_classes' => $this->configuration['allow_single_line_anonymous_class_with_empty_body'], - 'allow_single_line_anonymous_functions' => $this->configuration['allow_single_line_closure'], - ]); - - $this->getControlStructureContinuationPositionFixer()->configure([ - 'position' => self::LINE_NEXT === $this->configuration['position_after_control_structures'] - ? ControlStructureContinuationPositionFixer::NEXT_LINE - : ControlStructureContinuationPositionFixer::SAME_LINE, - ]); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('allow_single_line_anonymous_class_with_empty_body', 'Whether single line anonymous class with empty body notation should be allowed.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('allow_single_line_closure', 'Whether single line lambda notation should be allowed.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('position_after_functions_and_oop_constructs', 'Whether the opening brace should be placed on "next" or "same" line after classy constructs (non-anonymous classes, interfaces, traits, methods and non-lambda functions).')) - ->setAllowedValues([self::LINE_NEXT, self::LINE_SAME]) - ->setDefault(self::LINE_NEXT) - ->getOption(), - (new FixerOptionBuilder('position_after_control_structures', 'Whether the opening brace should be placed on "next" or "same" line after control structures.')) - ->setAllowedValues([self::LINE_NEXT, self::LINE_SAME]) - ->setDefault(self::LINE_SAME) - ->getOption(), - (new FixerOptionBuilder('position_after_anonymous_constructs', 'Whether the opening brace should be placed on "next" or "same" line after anonymous constructs (anonymous classes and lambda functions).')) - ->setAllowedValues([self::LINE_NEXT, self::LINE_SAME]) - ->setDefault(self::LINE_SAME) - ->getOption(), - ]); - } - - protected function createProxyFixers(): array - { - $singleSpaceAroundConstructFixer = new SingleSpaceAroundConstructFixer(); - $singleSpaceAroundConstructFixer->configure([ - 'constructs_contain_a_single_space' => [], - 'constructs_followed_by_a_single_space' => ['elseif', 'for', 'foreach', 'if', 'match', 'while', 'use_lambda'], - 'constructs_preceded_by_a_single_space' => ['use_lambda'], - ]); - - $noExtraBlankLinesFixer = new NoExtraBlankLinesFixer(); - $noExtraBlankLinesFixer->configure([ - 'tokens' => ['curly_brace_block'], - ]); - - return [ - $singleSpaceAroundConstructFixer, - new ControlStructureBracesFixer(), - $noExtraBlankLinesFixer, - $this->getBracesPositionFixer(), - $this->getControlStructureContinuationPositionFixer(), - new DeclareParenthesesFixer(), - new NoMultipleStatementsPerLineFixer(), - new StatementIndentationFixer(true), - ]; - } - - private function getBracesPositionFixer(): BracesPositionFixer - { - if (null === $this->bracesPositionFixer) { - $this->bracesPositionFixer = new BracesPositionFixer(); - } - - return $this->bracesPositionFixer; - } - - private function getControlStructureContinuationPositionFixer(): ControlStructureContinuationPositionFixer - { - if (null === $this->controlStructureContinuationPositionFixer) { - $this->controlStructureContinuationPositionFixer = new ControlStructureContinuationPositionFixer(); - } - - return $this->controlStructureContinuationPositionFixer; - } - - /** - * @return BracesPositionFixer::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END|BracesPositionFixer::SAME_LINE - */ - private function translatePositionOption(string $option): string - { - return self::LINE_NEXT === $option - ? BracesPositionFixer::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END - : BracesPositionFixer::SAME_LINE; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php deleted file mode 100644 index 3e2a70f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php +++ /dev/null @@ -1,504 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\IndentationTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * allow_single_line_anonymous_functions?: bool, - * allow_single_line_empty_anonymous_classes?: bool, - * anonymous_classes_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * anonymous_functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * classes_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * control_structures_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * allow_single_line_anonymous_functions: bool, - * allow_single_line_empty_anonymous_classes: bool, - * anonymous_classes_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * anonymous_functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * classes_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * control_structures_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BracesPositionFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - use IndentationTrait; - - /** - * @internal - */ - public const NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END = 'next_line_unless_newline_at_signature_end'; - - /** - * @internal - */ - public const SAME_LINE = 'same_line'; - - private const CONTROL_STRUCTURE_TOKENS = [\T_DECLARE, \T_DO, \T_ELSE, \T_ELSEIF, \T_FINALLY, \T_FOR, \T_FOREACH, \T_IF, \T_WHILE, \T_TRY, \T_CATCH, \T_SWITCH, FCT::T_MATCH]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Braces must be placed as configured.', - [ - new CodeSample( - <<<'PHP' - self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END], - ), - new CodeSample( - <<<'PHP' - self::SAME_LINE], - ), - new CodeSample( - <<<'PHP' - self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END], - ), - new CodeSample( - <<<'PHP' - self::SAME_LINE], - ), - new CodeSample( - <<<'PHP' - self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END], - ), - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - true], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound('{'); - } - - /** - * {@inheritdoc} - * - * Must run before SingleLineEmptyBodyFixer, StatementIndentationFixer. - * Must run after ControlStructureBracesFixer, MultilinePromotedPropertiesFixer, NoMultipleStatementsPerLineFixer. - */ - public function getPriority(): int - { - return -2; - } - - /** @protected */ - public function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('control_structures_opening_brace', 'The position of the opening brace of control structures‘ body.')) - ->setAllowedValues([self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END, self::SAME_LINE]) - ->setDefault(self::SAME_LINE) - ->getOption(), - (new FixerOptionBuilder('functions_opening_brace', 'The position of the opening brace of functions‘ body.')) - ->setAllowedValues([self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END, self::SAME_LINE]) - ->setDefault(self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END) - ->getOption(), - (new FixerOptionBuilder('anonymous_functions_opening_brace', 'The position of the opening brace of anonymous functions‘ body.')) - ->setAllowedValues([self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END, self::SAME_LINE]) - ->setDefault(self::SAME_LINE) - ->getOption(), - (new FixerOptionBuilder('classes_opening_brace', 'The position of the opening brace of classes‘ body.')) - ->setAllowedValues([self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END, self::SAME_LINE]) - ->setDefault(self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END) - ->getOption(), - (new FixerOptionBuilder('anonymous_classes_opening_brace', 'The position of the opening brace of anonymous classes‘ body.')) - ->setAllowedValues([self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END, self::SAME_LINE]) - ->setDefault(self::SAME_LINE) - ->getOption(), - (new FixerOptionBuilder('allow_single_line_empty_anonymous_classes', 'Allow anonymous classes to have opening and closing braces on the same line.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('allow_single_line_anonymous_functions', 'Allow anonymous functions to have opening and closing braces on the same line.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(false, true)) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $classyTokens = Token::getClassyTokenKinds(); - $tokensAnalyzer = new TokensAnalyzer($tokens); - - $allowSingleLineUntil = null; - - foreach ($tokens as $index => $token) { - $allowSingleLine = false; - $allowSingleLineIfEmpty = false; - - if ($token->isGivenKind($classyTokens)) { - $openBraceIndex = $tokens->getNextTokenOfKind($index, ['{']); - - if ($tokensAnalyzer->isAnonymousClass($index)) { - $allowSingleLineIfEmpty = true === $this->configuration['allow_single_line_empty_anonymous_classes']; - $positionOption = 'anonymous_classes_opening_brace'; - } else { - $positionOption = 'classes_opening_brace'; - } - } elseif ($token->isGivenKind(\T_FUNCTION)) { - $openBraceIndex = $tokens->getNextTokenOfKind($index, ['{', ';', [CT::T_PROPERTY_HOOK_BRACE_OPEN]]); - - if (!$tokens[$openBraceIndex]->equals('{')) { - continue; - } - - if ($tokensAnalyzer->isLambda($index)) { - $allowSingleLine = true === $this->configuration['allow_single_line_anonymous_functions']; - $positionOption = 'anonymous_functions_opening_brace'; - } else { - $positionOption = 'functions_opening_brace'; - } - } elseif ($token->isGivenKind(self::CONTROL_STRUCTURE_TOKENS)) { - $parenthesisEndIndex = $this->findParenthesisEnd($tokens, $index); - $openBraceIndex = $tokens->getNextMeaningfulToken($parenthesisEndIndex); - - if (!$tokens[$openBraceIndex]->equals('{')) { - continue; - } - - $positionOption = 'control_structures_opening_brace'; - } elseif ($token->isGivenKind(\T_VARIABLE)) { - // handle default value - explicitly skip array as default value - $nextMeaningfulIndex = $tokens->getNextMeaningfulToken($index); - if ($tokens[$nextMeaningfulIndex]->equals('=')) { - $nextMeaningfulIndex = $tokens->getNextMeaningfulToken($nextMeaningfulIndex); - - if ($tokens[$nextMeaningfulIndex]->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $nextMeaningfulIndex); - } elseif ($tokens[$nextMeaningfulIndex]->isGivenKind(\T_ARRAY)) { - $nextMeaningfulIndex = $tokens->getNextMeaningfulToken($nextMeaningfulIndex); - if ($tokens[$nextMeaningfulIndex]->equals('(')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextMeaningfulIndex); - } - } - } - - $openBraceIndex = $tokens->getNextTokenOfKind($index, ['{', ';', '.', [CT::T_CURLY_CLOSE], [CT::T_PROPERTY_HOOK_BRACE_OPEN], [\T_ENCAPSED_AND_WHITESPACE], [\T_CLOSE_TAG]]); - - if (!$tokens[$openBraceIndex]->isGivenKind(CT::T_PROPERTY_HOOK_BRACE_OPEN)) { - continue; - } - - $closeBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PROPERTY_HOOK, $openBraceIndex); - if (!$tokens->isPartialCodeMultiline($openBraceIndex, $closeBraceIndex)) { - continue; - } - - $positionOption = 'control_structures_opening_brace'; - } elseif ($token->isGivenKind(\T_STRING)) { - $parenthesisEndIndex = $this->findParenthesisEnd($tokens, $index); - $openBraceIndex = $tokens->getNextMeaningfulToken($parenthesisEndIndex); - if (!$tokens[$openBraceIndex]->equals('{')) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$prevIndex]->equalsAny(['}', ';', [CT::T_ATTRIBUTE_CLOSE], [CT::T_PROPERTY_HOOK_BRACE_OPEN]])) { - continue; - } - $allowSingleLine = true === $this->configuration['allow_single_line_anonymous_functions']; - $positionOption = 'control_structures_opening_brace'; - } else { - continue; - } - - $closeBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $openBraceIndex); - - $addNewlinesInsideBraces = true; - if ($allowSingleLine || $allowSingleLineIfEmpty || $index < $allowSingleLineUntil) { - $addNewlinesInsideBraces = false; - - for ($indexInsideBraces = $openBraceIndex + 1; $indexInsideBraces < $closeBraceIndex; ++$indexInsideBraces) { - $tokenInsideBraces = $tokens[$indexInsideBraces]; - - if ( - ($allowSingleLineIfEmpty && !$tokenInsideBraces->isWhitespace() && !$tokenInsideBraces->isComment()) - || ($tokenInsideBraces->isWhitespace() && Preg::match('/\R/', $tokenInsideBraces->getContent())) - ) { - $addNewlinesInsideBraces = true; - - break; - } - } - - if (!$addNewlinesInsideBraces && null === $allowSingleLineUntil) { - $allowSingleLineUntil = $closeBraceIndex; - } - } - - if ( - $addNewlinesInsideBraces - && !$this->isFollowedByNewLine($tokens, $openBraceIndex) - && !$this->hasCommentOnSameLine($tokens, $openBraceIndex) - && !$tokens[$tokens->getNextMeaningfulToken($openBraceIndex)]->isGivenKind(\T_CLOSE_TAG) - ) { - $whitespace = $this->whitespacesConfig->getLineEnding().$this->getLineIndentation($tokens, $openBraceIndex); - if ($tokens->ensureWhitespaceAtIndex($openBraceIndex + 1, 0, $whitespace)) { - ++$closeBraceIndex; - } - } - - $whitespace = ' '; - if (self::NEXT_LINE_UNLESS_NEWLINE_AT_SIGNATURE_END === $this->configuration[$positionOption]) { - $whitespace = $this->whitespacesConfig->getLineEnding().$this->getLineIndentation($tokens, $index); - - $previousTokenIndex = $openBraceIndex; - do { - $previousTokenIndex = $tokens->getPrevMeaningfulToken($previousTokenIndex); - } while ($tokens[$previousTokenIndex]->isGivenKind([CT::T_TYPE_COLON, CT::T_NULLABLE_TYPE, \T_STRING, \T_NS_SEPARATOR, CT::T_ARRAY_TYPEHINT, \T_STATIC, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, \T_CALLABLE, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE])); - - if ($tokens[$previousTokenIndex]->equals(')')) { - if ($tokens[--$previousTokenIndex]->isComment()) { - --$previousTokenIndex; - } - if ( - $tokens[$previousTokenIndex]->isWhitespace() - && Preg::match('/\R/', $tokens[$previousTokenIndex]->getContent()) - ) { - $whitespace = ' '; - } - } - } - - $moveBraceToIndex = null; - - if (' ' === $whitespace) { - $previousMeaningfulIndex = $tokens->getPrevMeaningfulToken($openBraceIndex); - for ($indexBeforeOpenBrace = $openBraceIndex - 1; $indexBeforeOpenBrace > $previousMeaningfulIndex; --$indexBeforeOpenBrace) { - if (!$tokens[$indexBeforeOpenBrace]->isComment()) { - continue; - } - - $tokenBeforeOpenBrace = $tokens[--$indexBeforeOpenBrace]; - if ($tokenBeforeOpenBrace->isWhitespace()) { - $moveBraceToIndex = $indexBeforeOpenBrace; - } elseif ($indexBeforeOpenBrace === $previousMeaningfulIndex) { - $moveBraceToIndex = $previousMeaningfulIndex + 1; - } - } - } elseif (!$tokens[$openBraceIndex - 1]->isWhitespace() || !Preg::match('/\R/', $tokens[$openBraceIndex - 1]->getContent())) { - for ($indexAfterOpenBrace = $openBraceIndex + 1; $indexAfterOpenBrace < $closeBraceIndex; ++$indexAfterOpenBrace) { - if ($tokens[$indexAfterOpenBrace]->isWhitespace() && Preg::match('/\R/', $tokens[$indexAfterOpenBrace]->getContent())) { - break; - } - - if ($tokens[$indexAfterOpenBrace]->isComment() && !str_starts_with($tokens[$indexAfterOpenBrace]->getContent(), '/*')) { - $moveBraceToIndex = $indexAfterOpenBrace + 1; - } - } - } - - if (null !== $moveBraceToIndex) { - $movedToken = clone $tokens[$openBraceIndex]; - - $delta = $openBraceIndex < $moveBraceToIndex ? 1 : -1; - - if ($tokens[$openBraceIndex + $delta]->isWhitespace()) { - if (-1 === $delta && Preg::match('/\R/', $tokens[$openBraceIndex - 1]->getContent())) { - $content = Preg::replace('/^(\h*?\R)?\h*/', '', $tokens[$openBraceIndex + 1]->getContent()); - if ('' !== $content) { - $tokens[$openBraceIndex + 1] = new Token([\T_WHITESPACE, $content]); - } else { - $tokens->clearAt($openBraceIndex + 1); - } - } elseif ($tokens[$openBraceIndex - 1]->isWhitespace()) { - $tokens->clearAt($openBraceIndex - 1); - } - } - - for ($i = $openBraceIndex; $i !== $moveBraceToIndex; $i += $delta) { - $siblingToken = $tokens[$i + $delta]; - $tokens[$i] = $siblingToken; - } - - $tokens[$i] = $movedToken; - - if ($tokens[$openBraceIndex]->isWhitespace() && $tokens[$openBraceIndex + 1]->isWhitespace()) { - $tokens[$openBraceIndex] = new Token([ - \T_WHITESPACE, - $tokens[$openBraceIndex]->getContent().$tokens[$openBraceIndex + 1]->getContent(), - ]); - $tokens->clearAt($openBraceIndex + 1); - } - - $openBraceIndex = $moveBraceToIndex; - } - - if ($tokens->ensureWhitespaceAtIndex($openBraceIndex - 1, 1, $whitespace)) { - ++$closeBraceIndex; - if (null !== $allowSingleLineUntil) { - ++$allowSingleLineUntil; - } - } - - if ( - !$addNewlinesInsideBraces - || $tokens[$tokens->getPrevMeaningfulToken($closeBraceIndex)]->isGivenKind(\T_OPEN_TAG) - ) { - continue; - } - - $prevIndex = $closeBraceIndex - 1; - while ($tokens->isEmptyAt($prevIndex)) { - --$prevIndex; - } - - $prevToken = $tokens[$prevIndex]; - - if ($prevToken->isWhitespace() && Preg::match('/\R/', $prevToken->getContent())) { - continue; - } - - $whitespace = $this->whitespacesConfig->getLineEnding().$this->getLineIndentation($tokens, $openBraceIndex); - $tokens->ensureWhitespaceAtIndex($prevIndex, 1, $whitespace); - } - } - - private function findParenthesisEnd(Tokens $tokens, int $structureTokenIndex): int - { - $nextIndex = $tokens->getNextMeaningfulToken($structureTokenIndex); - $nextToken = $tokens[$nextIndex]; - - // return if next token is not opening parenthesis - if (!$nextToken->equals('(')) { - return $structureTokenIndex; - } - - return $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextIndex); - } - - private function isFollowedByNewLine(Tokens $tokens, int $index): bool - { - for (++$index, $max = \count($tokens) - 1; $index < $max; ++$index) { - $token = $tokens[$index]; - if (!$token->isComment()) { - return $token->isWhitespace() && Preg::match('/\R/', $token->getContent()); - } - } - - return false; - } - - private function hasCommentOnSameLine(Tokens $tokens, int $index): bool - { - $token = $tokens[$index + 1]; - - if ($token->isWhitespace() && !Preg::match('/\R/', $token->getContent())) { - $token = $tokens[$index + 2]; - } - - return $token->isComment(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php deleted file mode 100644 index 1167e74..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php +++ /dev/null @@ -1,118 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\Fixer\IndentationTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @deprecated - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * allow_single_line_anonymous_functions?: bool, - * allow_single_line_empty_anonymous_classes?: bool, - * anonymous_classes_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * anonymous_functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * classes_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * control_structures_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * allow_single_line_anonymous_functions: bool, - * allow_single_line_empty_anonymous_classes: bool, - * anonymous_classes_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * anonymous_functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * classes_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * control_structures_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CurlyBracesPositionFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, DeprecatedFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - use IndentationTrait; - - private BracesPositionFixer $bracesPositionFixer; - - public function __construct() - { - $this->bracesPositionFixer = new BracesPositionFixer(); - - parent::__construct(); - } - - public function getDefinition(): FixerDefinitionInterface - { - $fixerDefinition = $this->bracesPositionFixer->getDefinition(); - - return new FixerDefinition( - 'Curly braces must be placed as configured.', - $fixerDefinition->getCodeSamples(), - $fixerDefinition->getDescription(), - $fixerDefinition->getRiskyDescription(), - ); - } - - /** - * {@inheritdoc} - * - * Must run before SingleLineEmptyBodyFixer, StatementIndentationFixer. - * Must run after ControlStructureBracesFixer, NoMultipleStatementsPerLineFixer. - */ - public function getPriority(): int - { - return $this->bracesPositionFixer->getPriority(); - } - - public function getSuccessorsNames(): array - { - return [ - $this->bracesPositionFixer->getName(), - ]; - } - - /** - * @param _AutogeneratedInputConfiguration $configuration - */ - protected function configurePreNormalisation(array $configuration): void - { - $this->bracesPositionFixer->configure($configuration); - } - - protected function createProxyFixers(): array - { - return [ - $this->bracesPositionFixer, - ]; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return $this->bracesPositionFixer->createConfigurationDefinition(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php deleted file mode 100644 index 6886447..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php +++ /dev/null @@ -1,84 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR1 ¶2.2. - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class EncodingFixer extends AbstractFixer -{ - private string $bom; - - public function __construct() - { - parent::__construct(); - - $this->bom = pack('CCC', 0xEF, 0xBB, 0xBF); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHP code MUST use only UTF-8 without BOM (remove BOM).', - [ - new CodeSample( - <<bom}getContent(); - - if (str_starts_with($content, $this->bom)) { - $newContent = substr($content, 3); - - if ('' === $newContent) { - $tokens->clearAt(0); - } else { - $tokens[0] = new Token([$tokens[0]->getId(), $newContent]); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php deleted file mode 100644 index d46013f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php +++ /dev/null @@ -1,113 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\IndentationTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶2.3 Lines: There must not be more than one statement per line. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoMultipleStatementsPerLineFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - use IndentationTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There must not be more than one statement per line.', - [new CodeSample("isTokenKindFound(';'); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = 1, $max = \count($tokens) - 1; $index < $max; ++$index) { - if ($tokens[$index]->isGivenKind(\T_FOR)) { - $index = $tokens->findBlockEnd( - Tokens::BLOCK_TYPE_PARENTHESIS, - $tokens->getNextTokenOfKind($index, ['(']), - ); - - continue; - } - - if ($tokens[$index]->isGivenKind(CT::T_PROPERTY_HOOK_BRACE_OPEN)) { - $index = $tokens->findBlockEnd( - Tokens::BLOCK_TYPE_PROPERTY_HOOK, - $index, - ); - - continue; - } - - if (!$tokens[$index]->equals(';')) { - continue; - } - - for ($nextIndex = $index + 1; $nextIndex < $max; ++$nextIndex) { - $token = $tokens[$nextIndex]; - - if ($token->isWhitespace() || $token->isComment()) { - if (Preg::match('/\R/', $token->getContent())) { - break; - } - - continue; - } - - if (!$token->equalsAny(['}', [\T_CLOSE_TAG], [\T_ENDIF], [\T_ENDFOR], [\T_ENDSWITCH], [\T_ENDWHILE], [\T_ENDFOREACH]])) { - $whitespaceIndex = $index; - do { - $token = $tokens[++$whitespaceIndex]; - } while ($token->isComment()); - - $newline = $this->whitespacesConfig->getLineEnding().$this->getLineIndentation($tokens, $index); - - if ($tokens->ensureWhitespaceAtIndex($whitespaceIndex, 0, $newline)) { - ++$max; - } - } - - break; - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php deleted file mode 100644 index 09c2923..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php +++ /dev/null @@ -1,170 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * elements?: list<'arguments'|'array'|'array_destructuring'|'group_import'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * elements: list<'arguments'|'array'|'array_destructuring'|'group_import'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoTrailingCommaInSinglelineFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'If a list of values separated by a comma is contained on a single line, then the last item MUST NOT have a trailing comma.', - [ - new CodeSample(" ['array_destructuring']]), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return - $tokens->isTokenKindFound(',') - && $tokens->isAnyTokenKindsFound([')', CT::T_ARRAY_BRACKET_CLOSE, CT::T_DESTRUCTURING_BRACKET_CLOSE, CT::T_GROUP_IMPORT_BRACE_CLOSE]); - } - - /** - * {@inheritdoc} - * - * Must run after MethodArgumentSpaceFixer. - */ - public function getPriority(): int - { - return 0; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $elements = ['arguments', 'array', 'array_destructuring', 'group_import']; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('elements', 'Which elements to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($elements)]) - ->setDefault($elements) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - if (!$tokens[$index]->equals(')') && !$tokens[$index]->isGivenKind([CT::T_ARRAY_BRACKET_CLOSE, CT::T_DESTRUCTURING_BRACKET_CLOSE, CT::T_GROUP_IMPORT_BRACE_CLOSE])) { - continue; - } - - $commaIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$commaIndex]->equals(',')) { - continue; - } - - $block = Tokens::detectBlockType($tokens[$index]); - $blockOpenIndex = $tokens->findBlockStart($block['type'], $index); - - if ($tokens->isPartialCodeMultiline($blockOpenIndex, $index)) { - continue; - } - - if (!$this->shouldBeCleared($tokens, $blockOpenIndex)) { - continue; - } - - do { - $tokens->clearTokenAndMergeSurroundingWhitespace($commaIndex); - $commaIndex = $tokens->getPrevMeaningfulToken($commaIndex); - } while ($tokens[$commaIndex]->equals(',')); - - $tokens->removeTrailingWhitespace($commaIndex); - } - } - - private function shouldBeCleared(Tokens $tokens, int $openIndex): bool - { - $elements = $this->configuration['elements']; - - if ($tokens[$openIndex]->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - return \in_array('array', $elements, true); - } - - if ($tokens[$openIndex]->isGivenKind(CT::T_DESTRUCTURING_BRACKET_OPEN)) { - return \in_array('array_destructuring', $elements, true); - } - - if ($tokens[$openIndex]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_OPEN)) { - return \in_array('group_import', $elements, true); - } - - $beforeOpen = $tokens->getPrevMeaningfulToken($openIndex); - - if ($tokens[$beforeOpen]->isGivenKind(\T_ARRAY)) { - return \in_array('array', $elements, true); - } - - if ($tokens[$beforeOpen]->isGivenKind(\T_LIST)) { - return \in_array('array_destructuring', $elements, true); - } - - if ($tokens[$beforeOpen]->isGivenKind([\T_UNSET, \T_ISSET, \T_VARIABLE, \T_CLASS])) { - return \in_array('arguments', $elements, true); - } - - if ($tokens[$beforeOpen]->isGivenKind(\T_STRING)) { - return !AttributeAnalyzer::isAttribute($tokens, $beforeOpen) && \in_array('arguments', $elements, true); - } - - if ($tokens[$beforeOpen]->equalsAny([')', ']', [CT::T_DYNAMIC_VAR_BRACE_CLOSE], [CT::T_ARRAY_INDEX_BRACE_CLOSE]])) { - $block = Tokens::detectBlockType($tokens[$beforeOpen]); - - return - ( - Tokens::BLOCK_TYPE_INDEX_BRACE === $block['type'] - || Tokens::BLOCK_TYPE_DYNAMIC_VAR_BRACE === $block['type'] - || Tokens::BLOCK_TYPE_INDEX_BRACKET === $block['type'] - || Tokens::BLOCK_TYPE_PARENTHESIS === $block['type'] - ) && \in_array('arguments', $elements, true); - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php deleted file mode 100644 index c8d22c8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php +++ /dev/null @@ -1,193 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Removes Zero-width space (ZWSP), Non-breaking space (NBSP) and other invisible unicode symbols. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * use_escape_sequences_in_strings?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * use_escape_sequences_in_strings: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Ivan Boprzenkov - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NonPrintableCharacterFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var non-empty-list - */ - private const TOKENS = [ - \T_STRING_VARNAME, - \T_INLINE_HTML, - \T_VARIABLE, - \T_COMMENT, - \T_ENCAPSED_AND_WHITESPACE, - \T_CONSTANT_ENCAPSED_STRING, - \T_DOC_COMMENT, - ]; - - /** - * @var array - */ - private array $symbolsReplace; - - public function __construct() - { - parent::__construct(); - - $this->symbolsReplace = [ - pack('H*', 'e2808b') => ['', '200b'], // ZWSP U+200B - pack('H*', 'e28087') => [' ', '2007'], // FIGURE SPACE U+2007 - pack('H*', 'e280af') => [' ', '202f'], // NBSP U+202F - pack('H*', 'e281a0') => ['', '2060'], // WORD JOINER U+2060 - pack('H*', 'c2a0') => [' ', 'a0'], // NO-BREAK SPACE U+A0 - ]; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Remove Zero-width space (ZWSP), Non-breaking space (NBSP) and other invisible unicode symbols.', - [ - new CodeSample( - ' false], - ), - ], - null, - 'Risky when strings contain intended invisible characters.', - ); - } - - public function isRisky(): bool - { - return true; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(self::TOKENS); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('use_escape_sequences_in_strings', 'Whether characters should be replaced with escape sequences in strings.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $replacements = []; - $escapeSequences = []; - - foreach ($this->symbolsReplace as $character => [$replacement, $codepoint]) { - $replacements[$character] = $replacement; - $escapeSequences[$character] = '\u{'.$codepoint.'}'; - } - - foreach ($tokens as $index => $token) { - $content = $token->getContent(); - - if ( - true === $this->configuration['use_escape_sequences_in_strings'] - && $token->isGivenKind([\T_CONSTANT_ENCAPSED_STRING, \T_ENCAPSED_AND_WHITESPACE]) - ) { - if (!Preg::match('/'.implode('|', array_keys($escapeSequences)).'/', $content)) { - continue; - } - - $previousToken = $tokens[$index - 1]; - $stringTypeChanged = false; - $swapQuotes = false; - - if ($previousToken->isGivenKind(\T_START_HEREDOC)) { - $previousTokenContent = $previousToken->getContent(); - - if (str_contains($previousTokenContent, '\'')) { - $tokens[$index - 1] = new Token([\T_START_HEREDOC, str_replace('\'', '', $previousTokenContent)]); - $stringTypeChanged = true; - } - } elseif (str_starts_with($content, "'")) { - $stringTypeChanged = true; - $swapQuotes = true; - } - - if ($swapQuotes) { - $content = str_replace("\\'", "'", $content); - } - - if ($stringTypeChanged) { - $content = Preg::replace('/(\\\{1,2})/', '\\\\\\\\', $content); - $content = str_replace('$', '\$', $content); - } - - if ($swapQuotes) { - $content = str_replace('"', '\"', $content); - $content = Preg::replace('/^\'(.*)\'$/s', '"$1"', $content); - } - - $tokens[$index] = new Token([$token->getId(), strtr($content, $escapeSequences)]); - - continue; - } - - if ($token->isGivenKind(self::TOKENS)) { - $newContent = strtr($content, $replacements); - - // variable name cannot contain space - if ($token->isGivenKind([\T_STRING_VARNAME, \T_VARIABLE]) && str_contains($newContent, ' ')) { - continue; - } - - // multiline comment must have "*/" only at the end - if ($token->isGivenKind([\T_COMMENT, \T_DOC_COMMENT]) && str_starts_with($newContent, '/*') && strpos($newContent, '*/') !== \strlen($newContent) - 2) { - continue; - } - - $tokens[$index] = new Token([$token->getId(), $newContent]); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php deleted file mode 100644 index cc2ebe4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php +++ /dev/null @@ -1,232 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Let's you add underscores to numeric literals. - * - * Inspired by: - * - {@link https://github.com/kubawerlos/php-cs-fixer-custom-fixers/blob/main/src/Fixer/NumericLiteralSeparatorFixer.php} - * - {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/rules/numeric-separators-style.js} - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * override_existing?: bool, - * strategy?: 'no_separator'|'use_separator', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * override_existing: bool, - * strategy: 'no_separator'|'use_separator', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Marvin Heilemann - * @author Greg Korba - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NumericLiteralSeparatorFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public const STRATEGY_USE_SEPARATOR = 'use_separator'; - public const STRATEGY_NO_SEPARATOR = 'no_separator'; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Adds separators to numeric literals of any kind.', - [ - new CodeSample( - <<<'PHP' - self::STRATEGY_NO_SEPARATOR], - ), - new CodeSample( - <<<'PHP' - self::STRATEGY_USE_SEPARATOR], - ), - new CodeSample( - " true], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_DNUMBER, \T_LNUMBER]); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder( - 'override_existing', - 'Whether literals already containing underscores should be reformatted.', - )) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder( - 'strategy', - 'Whether numeric literal should be separated by underscores or not.', - )) - ->setAllowedValues([self::STRATEGY_USE_SEPARATOR, self::STRATEGY_NO_SEPARATOR]) - ->setDefault(self::STRATEGY_USE_SEPARATOR) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind([\T_DNUMBER, \T_LNUMBER])) { - continue; - } - - $content = $token->getContent(); - - $newContent = $this->formatValue($content); - - if ($content === $newContent) { - // Skip Token override if its the same content, like when it - // already got a valid literal separator structure. - continue; - } - - $tokens[$index] = new Token([$token->getId(), $newContent]); - } - } - - private function formatValue(string $value): string - { - if (self::STRATEGY_NO_SEPARATOR === $this->configuration['strategy']) { - return str_contains($value, '_') ? str_replace('_', '', $value) : $value; - } - - if (true === $this->configuration['override_existing']) { - $value = str_replace('_', '', $value); - } elseif (str_contains($value, '_')) { - // Keep already underscored literals untouched. - return $value; - } - - $lowerValue = strtolower($value); - - if (str_starts_with($lowerValue, '0b')) { - // Binary - return $this->insertEveryRight($value, 8, 2); - } - - if (str_starts_with($lowerValue, '0x')) { - // Hexadecimal - return $this->insertEveryRight($value, 2, 2); - } - - if (str_starts_with($lowerValue, '0o')) { - // Octal - return $this->insertEveryRight($value, 3, 2); - } - if (str_starts_with($lowerValue, '0') && !str_contains($lowerValue, '.')) { - // Octal notation prior PHP 8.1 but still valid - return $this->insertEveryRight($value, 3, 1); - } - - // All other types - - /** If its a negative value we need an offset */ - $negativeOffset = static fn (string $v): int => str_contains($v, '-') ? 1 : 0; - - Preg::matchAll('/([0-9-_]+)?((\.)([0-9_]*))?((e)([0-9-_]+))?/i', $value, $result); - \assert(isset($result[1][0], $result[3][0], $result[4][0], $result[6][0], $result[7][0])); - - $integer = $result[1][0]; - $joinedValue = $this->insertEveryRight($integer, 3, $negativeOffset($integer)); - - $dot = $result[3][0]; - if ('' !== $dot) { - $integer = $result[4][0]; - $decimal = $this->insertEveryLeft($integer, 3, $negativeOffset($integer)); - $joinedValue = $joinedValue.$dot.$decimal; - } - - $tim = $result[6][0]; - if ('' !== $tim) { - $integer = $result[7][0]; - $times = $this->insertEveryRight($integer, 3, $negativeOffset($integer)); - $joinedValue = $joinedValue.$tim.$times; - } - - return $joinedValue; - } - - private function insertEveryRight(string $value, int $length, int $offset = 0): string - { - $position = $length * -1; - while ($position > -(\strlen($value) - $offset)) { - $value = substr_replace($value, '_', $position, 0); - $position -= $length + 1; - } - - return $value; - } - - private function insertEveryLeft(string $value, int $length, int $offset = 0): string - { - $position = $length; - while ($position < \strlen($value)) { - $value = substr_replace($value, '_', $position, $offset); - $position += $length + 1; - } - - return $value; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php deleted file mode 100644 index 26ff26b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class OctalNotationFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Literal octal must be in `0o` notation.', - [ - new VersionSpecificCodeSample( - "= 8_01_00 && $tokens->isTokenKindFound(\T_LNUMBER); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_LNUMBER)) { - continue; - } - - $content = $token->getContent(); - - $newContent = Preg::replace('#^0_*+([0-7_]+)$#', '0o$1', $content); - - if ($content === $newContent) { - continue; - } - - $tokens[$index] = new Token([\T_LNUMBER, $newContent]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php deleted file mode 100644 index 1310933..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php +++ /dev/null @@ -1,297 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\FileSpecificCodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\StdinFileInfo; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * dir?: null|string, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * dir: null|string, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Jordi Boggiano - * @author Dariusz Rumiński - * @author Bram Gotink - * @author Graham Campbell - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PsrAutoloadingFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Classes must be in a path that matches their namespace, be at least one namespace deep and the class name should match the file name.', - [ - new FileSpecificCodeSample( - <<<'PHP' - './src'], - ), - ], - null, - 'This fixer may change your class name, which will break the code that depends on the old name.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds()); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run before SelfAccessorFixer. - */ - public function getPriority(): int - { - return -10; - } - - public function supports(\SplFileInfo $file): bool - { - if ($file instanceof StdinFileInfo) { - return false; - } - - if ( - // ignore file with extension other than php - ('php' !== $file->getExtension()) - // ignore file with name that cannot be a class name - || !Preg::match('/^'.TypeExpression::REGEX_IDENTIFIER.'$/', $file->getBasename('.php')) - ) { - return false; - } - - try { - $tokens = Tokens::fromCode(\sprintf('getBasename('.php'))); - - if ($tokens[3]->isKeyword() || $tokens[3]->isMagicConstant()) { - // name cannot be a class name - detected by PHP 5.x - return false; - } - } catch (\ParseError $e) { - // name cannot be a class name - detected by PHP 7.x - return false; - } - - // ignore stubs/fixtures, since they typically contain invalid files for various reasons - return !Preg::match('{[/\\\](stub|fixture)s?[/\\\]}i', $file->getRealPath()); - } - - protected function configurePostNormalisation(): void - { - if (null !== $this->configuration['dir']) { - $realpath = realpath($this->configuration['dir']); - - if (false === $realpath) { - throw new \InvalidArgumentException(\sprintf('Failed to resolve configured directory "%s".', $this->configuration['dir'])); - } - - $this->configuration['dir'] = $realpath; - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('dir', 'If provided, the directory where the project code is placed.')) - ->setAllowedTypes(['null', 'string']) - ->setDefault(null) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokenAnalyzer = new TokensAnalyzer($tokens); - - if (null !== $this->configuration['dir'] && !str_starts_with($file->getRealPath(), $this->configuration['dir'])) { - return; - } - - $namespace = null; - $namespaceStartIndex = null; - $namespaceEndIndex = null; - - $classyName = null; - $classyIndex = null; - - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(\T_NAMESPACE)) { - if (null !== $namespace) { - return; - } - - $namespaceStartIndex = $tokens->getNextMeaningfulToken($index); - $namespaceEndIndex = $tokens->getNextTokenOfKind($namespaceStartIndex, [';']); - $namespace = trim($tokens->generatePartialCode($namespaceStartIndex, $namespaceEndIndex - 1)); - } elseif ($token->isClassy()) { - if ($tokenAnalyzer->isAnonymousClass($index)) { - continue; - } - - if (null !== $classyName) { - return; - } - - $classyIndex = $tokens->getNextMeaningfulToken($index); - $classyName = $tokens[$classyIndex]->getContent(); - } - } - - if (null === $classyName) { - return; - } - - $expectedClassyName = $this->calculateClassyName($file, $namespace, $classyName); - - if ($classyName !== $expectedClassyName) { - $tokens[$classyIndex] = new Token([\T_STRING, $expectedClassyName]); - } - - if (null === $this->configuration['dir'] || null === $namespace) { - return; - } - - if (!is_dir($this->configuration['dir'])) { - return; - } - - $configuredDir = realpath($this->configuration['dir']); - $fileDir = \dirname($file->getRealPath()); - - if (\strlen($configuredDir) >= \strlen($fileDir)) { - return; - } - - $newNamespace = substr(str_replace('/', '\\', $fileDir), \strlen($configuredDir) + 1); - $originalNamespace = substr($namespace, -\strlen($newNamespace)); - - if ($originalNamespace !== $newNamespace && strtolower($originalNamespace) === strtolower($newNamespace)) { - $tokens->clearRange($namespaceStartIndex, $namespaceEndIndex); - $namespace = substr($namespace, 0, -\strlen($newNamespace)).$newNamespace; - - $newNamespace = Tokens::fromCode('clearRange(0, 2); - $newNamespace->clearEmptyTokens(); - - $tokens->insertAt($namespaceStartIndex, $newNamespace); - } - } - - private function calculateClassyName(\SplFileInfo $file, ?string $namespace, string $currentName): string - { - $name = $file->getBasename('.php'); - $maxNamespace = $this->calculateMaxNamespace($file, $namespace); - - if (null !== $this->configuration['dir']) { - return ('' !== $maxNamespace ? (str_replace('\\', '_', $maxNamespace).'_') : '').$name; - } - - $namespaceParts = array_reverse(explode('\\', $maxNamespace)); - - foreach ($namespaceParts as $namespacePart) { - $nameCandidate = \sprintf('%s_%s', $namespacePart, $name); - - if (strtolower($nameCandidate) !== strtolower(substr($currentName, -\strlen($nameCandidate)))) { - break; - } - - $name = $nameCandidate; - } - - return $name; - } - - private function calculateMaxNamespace(\SplFileInfo $file, ?string $namespace): string - { - if (null === $this->configuration['dir']) { - $root = \dirname($file->getRealPath()); - - while ($root !== \dirname($root)) { - $root = \dirname($root); - } - } else { - $root = realpath($this->configuration['dir']); - } - - $namespaceAccordingToFileLocation = trim(str_replace(\DIRECTORY_SEPARATOR, '\\', substr(\dirname($file->getRealPath()), \strlen($root))), '\\'); - - if (null === $namespace) { - return $namespaceAccordingToFileLocation; - } - - $namespaceAccordingToFileLocationPartsReversed = array_reverse(explode('\\', $namespaceAccordingToFileLocation)); - $namespacePartsReversed = array_reverse(explode('\\', $namespace)); - - foreach ($namespacePartsReversed as $key => $namespaceParte) { - if (!isset($namespaceAccordingToFileLocationPartsReversed[$key])) { - break; - } - - if (strtolower($namespaceParte) !== strtolower($namespaceAccordingToFileLocationPartsReversed[$key])) { - break; - } - - unset($namespaceAccordingToFileLocationPartsReversed[$key]); - } - - return implode('\\', array_reverse($namespaceAccordingToFileLocationPartsReversed)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php deleted file mode 100644 index 8e0bd6b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php +++ /dev/null @@ -1,89 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Basic; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleLineEmptyBodyFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Empty body of class, interface, trait, enum or function must be abbreviated as `{}` and placed on the same line as the previous symbol, separated by a single space.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_INTERFACE, \T_CLASS, \T_FUNCTION, \T_TRAIT, FCT::T_ENUM]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind([...Token::getClassyTokenKinds(), \T_FUNCTION])) { - continue; - } - - $openBraceIndex = $tokens->getNextTokenOfKind($index, ['{', ';']); - if (!$tokens[$openBraceIndex]->equals('{')) { - continue; - } - - $closeBraceIndex = $tokens->getNextNonWhitespace($openBraceIndex); - if (!$tokens[$closeBraceIndex]->equals('}')) { - continue; - } - - $tokens->ensureWhitespaceAtIndex($openBraceIndex + 1, 0, ''); - - $beforeOpenBraceIndex = $tokens->getPrevNonWhitespace($openBraceIndex); - if (!$tokens[$beforeOpenBraceIndex]->isGivenKind([\T_COMMENT, \T_DOC_COMMENT])) { - $tokens->ensureWhitespaceAtIndex($openBraceIndex - 1, 1, ' '); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php deleted file mode 100644 index ddc5b38..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php +++ /dev/null @@ -1,166 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ClassReferenceNameCasingFixer extends AbstractFixer -{ - private const NOT_BEFORE_KINDS = [ - CT::T_USE_TRAIT, - \T_AS, - \T_CASE, // PHP 8.1 trait enum-case - \T_CLASS, - \T_CONST, - \T_DOUBLE_ARROW, - \T_DOUBLE_COLON, - \T_FUNCTION, - \T_INTERFACE, - \T_OBJECT_OPERATOR, - \T_TRAIT, - FCT::T_NULLSAFE_OBJECT_OPERATOR, - FCT::T_ENUM, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'When referencing an internal class it must be written using the correct casing.', - [ - new CodeSample("isTokenKindFound(\T_STRING); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $namespaceUsesAnalyzer = new NamespaceUsesAnalyzer(); - $classNames = $this->getClassNames(); - - foreach ($tokens->getNamespaceDeclarations() as $namespace) { - $uses = []; - - foreach ($namespaceUsesAnalyzer->getDeclarationsInNamespace($tokens, $namespace) as $use) { - $uses[strtolower($use->getShortName())] = true; - } - - foreach ($this->getClassReference($tokens, $namespace) as $reference) { - $currentContent = $tokens[$reference]->getContent(); - $lowerCurrentContent = strtolower($currentContent); - - if (isset($classNames[$lowerCurrentContent]) && $currentContent !== $classNames[$lowerCurrentContent] && !isset($uses[$lowerCurrentContent])) { - $tokens[$reference] = new Token([\T_STRING, $classNames[$lowerCurrentContent]]); - } - } - } - } - - /** - * @return iterable - */ - private function getClassReference(Tokens $tokens, NamespaceAnalysis $namespace): iterable - { - static $blockKinds; - - if (null === $blockKinds) { - $blockKinds = ['before' => [','], 'after' => [',']]; - - foreach (Tokens::getBlockEdgeDefinitions() as $definition) { - $blockKinds['before'][] = $definition['start']; - $blockKinds['after'][] = $definition['end']; - } - } - - $namespaceIsGlobal = $namespace->isGlobalNamespace(); - - for ($index = $namespace->getScopeStartIndex(); $index < $namespace->getScopeEndIndex(); ++$index) { - if (!$tokens[$index]->isGivenKind(\T_STRING)) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$nextIndex]->isGivenKind(\T_NS_SEPARATOR)) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $nextIndex = $tokens->getNextMeaningfulToken($index); - - $isNamespaceSeparator = $tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR); - - if (!$isNamespaceSeparator && !$namespaceIsGlobal) { - continue; - } - - if ($isNamespaceSeparator) { - $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - - if ($tokens[$prevIndex]->isGivenKind(\T_STRING)) { - continue; - } - } elseif ($tokens[$prevIndex]->isGivenKind(self::NOT_BEFORE_KINDS)) { - continue; - } - - if ($tokens[$prevIndex]->equalsAny($blockKinds['before']) && $tokens[$nextIndex]->equalsAny($blockKinds['after'])) { - continue; - } - - if (!$tokens[$prevIndex]->isGivenKind(\T_NEW) && $tokens[$nextIndex]->equalsAny(['(', ';', '=', [\T_CLOSE_TAG]])) { - continue; - } - - yield $index; - } - } - - /** - * @return array - */ - private function getClassNames(): array - { - static $classes = null; - - if (null === $classes) { - $classes = []; - - foreach (get_declared_classes() as $class) { - if ((new \ReflectionClass($class))->isInternal()) { - $classes[strtolower($class)] = $class; - } - } - } - - return $classes; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php deleted file mode 100644 index 0c5895e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php +++ /dev/null @@ -1,132 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for constants case. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case?: 'lower'|'upper', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case: 'lower'|'upper', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Pol Dellaiera - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ConstantCaseFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * Hold the function that will be used to convert the constants. - * - * @var callable - */ - private $fixFunction; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The PHP constants `true`, `false`, and `null` MUST be written using the correct casing.', - [ - new CodeSample(" 'upper']), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - protected function configurePostNormalisation(): void - { - if ('lower' === $this->configuration['case']) { - $this->fixFunction = static fn (string $content): string => strtolower($content); - } - - if ('upper' === $this->configuration['case']) { - $this->fixFunction = static fn (string $content): string => strtoupper($content); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('case', 'Whether to use the `upper` or `lower` case syntax.')) - ->setAllowedValues(['upper', 'lower']) - ->setDefault('lower') - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - static $forbiddenPrevKinds = null; - if (null === $forbiddenPrevKinds) { - $forbiddenPrevKinds = [ - \T_DOUBLE_COLON, - \T_EXTENDS, - \T_IMPLEMENTS, - \T_INSTANCEOF, - \T_NAMESPACE, - \T_NEW, - \T_NS_SEPARATOR, - ...Token::getObjectOperatorKinds(), - ]; - } - - foreach ($tokens as $index => $token) { - if (!$token->equalsAny([[\T_STRING, 'true'], [\T_STRING, 'false'], [\T_STRING, 'null']], false)) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$prevIndex]->isGivenKind($forbiddenPrevKinds)) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - if ($tokens[$nextIndex]->isGivenKind([\T_PAAMAYIM_NEKUDOTAYIM, \T_NS_SEPARATOR]) || $tokens[$nextIndex]->equals('=', false)) { - continue; - } - - if ($tokens[$prevIndex]->isGivenKind(\T_CASE) && $tokens[$nextIndex]->equals(';')) { - continue; - } - - $tokens[$index] = new Token([$token->getId(), ($this->fixFunction)($token->getContent())]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php deleted file mode 100644 index 0d7644f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php +++ /dev/null @@ -1,70 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class IntegerLiteralCaseFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Integer literals must be in correct case.', - [ - new CodeSample( - "isTokenKindFound(\T_LNUMBER); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_LNUMBER)) { - continue; - } - - $content = $token->getContent(); - - $newContent = Preg::replaceCallback( - '#^0([boxBOX])([0-9a-fA-F_]+)$#', - // @phpstan-ignore-next-line offsetAccess.notFound - static fn (array $matches): string => '0'.strtolower($matches[1]).strtoupper($matches[2]), - $content, - ); - - if ($content === $newContent) { - continue; - } - - $tokens[$index] = new Token([\T_LNUMBER, $newContent]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php deleted file mode 100644 index ca1f72d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php +++ /dev/null @@ -1,71 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶2.5. - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class LowercaseKeywordsFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHP keywords MUST be in lower case.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound(Token::getKeywords()); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if ($token->isKeyword() && !$token->isGivenKind(\T_HALT_COMPILER)) { - $tokens[$index] = new Token([$token->getId(), strtolower($token->getContent())]); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php deleted file mode 100644 index 81fbe81..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php +++ /dev/null @@ -1,132 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class LowercaseStaticReferenceFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Class static references `self`, `static` and `parent` MUST be in lower case.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_STATIC, \T_STRING]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->equalsAny([[\T_STRING, 'self'], [\T_STATIC, 'static'], [\T_STRING, 'parent']], false)) { - continue; - } - - if (!self::isTokenToFix($tokens, $index)) { - continue; - } - - $tokens[$index] = new Token([$token->getId(), strtolower($token->getContent())]); - } - } - - private static function isTokenToFix(Tokens $tokens, int $index): bool - { - if ($tokens[$index]->getContent() === strtolower($tokens[$index]->getContent())) { - return false; // case is already correct - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - if ($tokens[$nextIndex]->isGivenKind(\T_DOUBLE_COLON)) { - return true; - } - if (!$tokens[$nextIndex]->isGivenKind([\T_VARIABLE, CT::T_TYPE_ALTERNATION]) && !$tokens[$nextIndex]->equalsAny(['(', ')', '{', ';'])) { - return false; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$prevIndex]->isGivenKind(\T_INSTANCEOF)) { - return true; - } - if ($tokens[$prevIndex]->isGivenKind(\T_CASE)) { - return !$tokens[$nextIndex]->equals(';'); - } - if (!$tokens[$prevIndex]->isGivenKind([\T_NEW, \T_PRIVATE, \T_PROTECTED, \T_PUBLIC, CT::T_NULLABLE_TYPE, CT::T_TYPE_COLON, CT::T_TYPE_ALTERNATION]) && !$tokens[$prevIndex]->equalsAny(['(', '{'])) { - return false; - } - - if ($tokens[$prevIndex]->equals('(') && $tokens[$nextIndex]->equals(')')) { - return false; - } - - if ('static' === strtolower($tokens[$index]->getContent()) && $tokens[$nextIndex]->isGivenKind(\T_VARIABLE)) { - return false; - } - - return true; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php deleted file mode 100644 index 35fabe8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php +++ /dev/null @@ -1,77 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author ntzm - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MagicConstantCasingFixer extends AbstractFixer -{ - private const MAGIC_CONSTANTS = [ - \T_LINE => '__LINE__', - \T_FILE => '__FILE__', - \T_DIR => '__DIR__', - \T_FUNC_C => '__FUNCTION__', - \T_CLASS_C => '__CLASS__', - \T_METHOD_C => '__METHOD__', - \T_NS_C => '__NAMESPACE__', - CT::T_CLASS_CONSTANT => 'class', - \T_TRAIT_C => '__TRAIT__', - FCT::T_PROPERTY_C => '__PROPERTY__', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Magic constants should be referred to using the correct casing.', - [new CodeSample("isAnyTokenKindsFound($magicConstantTokenIds); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - $tokenId = $token->getId(); - - if (null === $tokenId || !isset(self::MAGIC_CONSTANTS[$tokenId])) { - continue; - } - - $tokens[$index] = new Token([$tokenId, self::MAGIC_CONSTANTS[$tokenId]]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php deleted file mode 100644 index 3de9a4c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php +++ /dev/null @@ -1,209 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MagicMethodCasingFixer extends AbstractFixer -{ - /** - * @var array - */ - private const MAGIC_NAMES = [ - '__call' => '__call', - '__callstatic' => '__callStatic', - '__clone' => '__clone', - '__construct' => '__construct', - '__debuginfo' => '__debugInfo', - '__destruct' => '__destruct', - '__get' => '__get', - '__invoke' => '__invoke', - '__isset' => '__isset', - '__serialize' => '__serialize', - '__set' => '__set', - '__set_state' => '__set_state', - '__sleep' => '__sleep', - '__tostring' => '__toString', - '__unserialize' => '__unserialize', - '__unset' => '__unset', - '__wakeup' => '__wakeup', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Magic method definitions and calls must be using the correct casing.', - [ - new CodeSample( - <<<'PHP' - __INVOKE(1); - - PHP, - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING) && $tokens->isAnyTokenKindsFound([\T_FUNCTION, \T_DOUBLE_COLON, ...Token::getObjectOperatorKinds()]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $inClass = 0; - $tokenCount = \count($tokens); - - for ($index = 1; $index < $tokenCount - 2; ++$index) { - if (0 === $inClass && $tokens[$index]->isClassy()) { - $inClass = 1; - $index = $tokens->getNextTokenOfKind($index, ['{']); - - continue; - } - - if (0 !== $inClass) { - if ($tokens[$index]->equals('{')) { - ++$inClass; - - continue; - } - - if ($tokens[$index]->equals('}')) { - --$inClass; - - continue; - } - } - - if (!$tokens[$index]->isGivenKind(\T_STRING)) { - continue; // wrong type - } - - $content = $tokens[$index]->getContent(); - - if (!str_starts_with($content, '__')) { - continue; // cheap look ahead - } - - $name = strtolower($content); - - if (!$this->isMagicMethodName($name)) { - continue; // method name is not one of the magic ones we can fix - } - - $nameInCorrectCasing = $this->getMagicMethodNameInCorrectCasing($name); - if ($nameInCorrectCasing === $content) { - continue; // method name is already in the correct casing, no fix needed - } - - if ($this->isFunctionSignature($tokens, $index)) { - if (0 !== $inClass) { - // this is a method definition we want to fix - $this->setTokenToCorrectCasing($tokens, $index, $nameInCorrectCasing); - } - - continue; - } - - if ($this->isMethodCall($tokens, $index)) { - $this->setTokenToCorrectCasing($tokens, $index, $nameInCorrectCasing); - - continue; - } - - if ( - ('__callstatic' === $name || '__set_state' === $name) - && $this->isStaticMethodCall($tokens, $index) - ) { - $this->setTokenToCorrectCasing($tokens, $index, $nameInCorrectCasing); - } - } - } - - private function isFunctionSignature(Tokens $tokens, int $index): bool - { - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$prevIndex]->isGivenKind(\T_FUNCTION)) { - return false; // not a method signature - } - - return $tokens[$tokens->getNextMeaningfulToken($index)]->equals('('); - } - - private function isMethodCall(Tokens $tokens, int $index): bool - { - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$prevIndex]->isObjectOperator()) { - return false; // not a "simple" method call - } - - return $tokens[$tokens->getNextMeaningfulToken($index)]->equals('('); - } - - private function isStaticMethodCall(Tokens $tokens, int $index): bool - { - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$prevIndex]->isGivenKind(\T_DOUBLE_COLON)) { - return false; // not a "simple" static method call - } - - return $tokens[$tokens->getNextMeaningfulToken($index)]->equals('('); - } - - /** - * @phpstan-assert-if-true key-of $name - */ - private function isMagicMethodName(string $name): bool - { - return isset(self::MAGIC_NAMES[$name]); - } - - /** - * @param key-of $name name of a magic method - * - * @return value-of - */ - private function getMagicMethodNameInCorrectCasing(string $name): string - { - return self::MAGIC_NAMES[$name]; - } - - private function setTokenToCorrectCasing(Tokens $tokens, int $index, string $nameInCorrectCasing): void - { - $tokens[$index] = new Token([\T_STRING, $nameInCorrectCasing]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php deleted file mode 100644 index d291715..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php +++ /dev/null @@ -1,92 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NativeFunctionCasingFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Function defined by PHP should be called using the correct casing.', - [new CodeSample("isTokenKindFound(\T_STRING); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - static $nativeFunctionNames = null; - - if (null === $nativeFunctionNames) { - $nativeFunctionNames = $this->getNativeFunctionNames(); - } - - for ($index = 0, $count = $tokens->count(); $index < $count; ++$index) { - // test if we are at a function all - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; - } - - // test if the function call is to a native PHP function - $lower = strtolower($tokens[$index]->getContent()); - if (!\array_key_exists($lower, $nativeFunctionNames)) { - continue; - } - - $tokens[$index] = new Token([\T_STRING, $nativeFunctionNames[$lower]]); - } - } - - /** - * @return array - */ - private function getNativeFunctionNames(): array - { - $allFunctions = get_defined_functions(); - $functions = []; - foreach ($allFunctions['internal'] as $function) { - $functions[strtolower($function)] = $function; - } - - return $functions; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php deleted file mode 100644 index 70bd69b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php +++ /dev/null @@ -1,60 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @deprecated in favour of NativeTypeDeclarationCasingFixer - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NativeFunctionTypeDeclarationCasingFixer extends AbstractProxyFixer implements DeprecatedFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Native type declarations for functions should use the correct case.', - [ - new CodeSample("proxyFixers); - } - - protected function createProxyFixers(): array - { - $fixer = new NativeTypeDeclarationCasingFixer(); - - return [$fixer]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php deleted file mode 100644 index 505aff7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php +++ /dev/null @@ -1,154 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Casing; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NativeTypeDeclarationCasingFixer extends AbstractFixer -{ - /** - * https://secure.php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration. - * - * self PHP 5.0 - * array PHP 5.1 - * callable PHP 5.4 - * bool PHP 7.0 - * float PHP 7.0 - * int PHP 7.0 - * string PHP 7.0 - * iterable PHP 7.1 - * void PHP 7.1 - * object PHP 7.2 - * static PHP 8.0 (return type only) - * mixed PHP 8.0 - * false PHP 8.0 (union return type only) - * null PHP 8.0 (union return type only) - * never PHP 8.1 (return type only) - * true PHP 8.2 (standalone type: https://wiki.php.net/rfc/true-type) - * false PHP 8.2 (standalone type: https://wiki.php.net/rfc/null-false-standalone-types) - * null PHP 8.2 (standalone type: https://wiki.php.net/rfc/null-false-standalone-types) - * - * @var array - */ - private array $types; - - public function __construct() - { - parent::__construct(); - - $this->types = [ - 'array' => true, - 'bool' => true, - 'callable' => true, - 'float' => true, - 'int' => true, - 'iterable' => true, - 'object' => true, - 'parent' => true, - 'self' => true, - 'static' => true, - 'string' => true, - 'void' => true, - ]; - - if (\PHP_VERSION_ID >= 8_00_00) { - $this->types['false'] = true; - $this->types['mixed'] = true; - $this->types['null'] = true; - } - - if (\PHP_VERSION_ID >= 8_01_00) { - $this->types['never'] = true; - } - - if (\PHP_VERSION_ID >= 8_02_00) { - $this->types['true'] = true; - } - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Native type declarations should be used in the correct case.', - [ - new CodeSample( - "isAnyTokenKindsFound(Token::getClassyTokenKinds()); - - return - $tokens->isAnyTokenKindsFound([\T_FUNCTION, \T_FN]) - || ($classyFound && $tokens->isTokenKindFound(\T_STRING)) - || ( - \PHP_VERSION_ID >= 8_03_00 - && $tokens->isTokenKindFound(\T_CONST) - && $classyFound - ); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - $content = $token->getContent(); - $lowercaseContent = strtolower($content); - if ($content === $lowercaseContent) { - continue; - } - if (!isset($this->types[$lowercaseContent])) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$prevIndex]->equals('=') || $tokens[$prevIndex]->isGivenKind([\T_CASE, \T_OBJECT_OPERATOR, \T_DOUBLE_COLON, \T_NS_SEPARATOR])) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - if ($tokens[$nextIndex]->equals('=') || $tokens[$nextIndex]->isGivenKind(\T_NS_SEPARATOR)) { - continue; - } - - if ( - !$tokens[$prevIndex]->isGivenKind([\T_CONST, CT::T_NULLABLE_TYPE, CT::T_TYPE_ALTERNATION, CT::T_TYPE_COLON]) - && !$tokens[$nextIndex]->isGivenKind([\T_VARIABLE, CT::T_TYPE_ALTERNATION]) - ) { - continue; - } - - $tokens[$index] = new Token([$token->getId(), $lowercaseContent]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php deleted file mode 100644 index 11dc1c5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php +++ /dev/null @@ -1,133 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\CastNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * space?: 'none'|'single', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * space: 'none'|'single', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CastSpacesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const INSIDE_CAST_SPACE_REPLACE_MAP = [ - ' ' => '', - "\t" => '', - "\n" => '', - "\r" => '', - "\0" => '', - "\x0B" => '', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'A single space or none should be between cast and variable.', - [ - new CodeSample( - " 'single'], - ), - new CodeSample( - " 'none'], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after NoShortBoolCastFixer. - */ - public function getPriority(): int - { - return -10; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getCastTokenKinds()); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isCast()) { - continue; - } - - $tokens[$index] = new Token([ - $token->getId(), - strtr($token->getContent(), self::INSIDE_CAST_SPACE_REPLACE_MAP), - ]); - - if ('single' === $this->configuration['space']) { - // force single whitespace after cast token: - if ($tokens[$index + 1]->isWhitespace(" \t")) { - // - if next token is whitespaces that contains only spaces and tabs - override next token with single space - $tokens[$index + 1] = new Token([\T_WHITESPACE, ' ']); - } elseif (!$tokens[$index + 1]->isWhitespace()) { - // - if next token is not whitespaces that contains spaces, tabs and new lines - append single space to current token - $tokens->insertAt($index + 1, new Token([\T_WHITESPACE, ' '])); - } - - continue; - } - - // force no whitespace after cast token: - if ($tokens[$index + 1]->isWhitespace()) { - $tokens->clearAt($index + 1); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('space', 'Spacing to apply between cast and variable.')) - ->setAllowedValues(['none', 'single']) - ->setDefault('single') - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php deleted file mode 100644 index 1059cf0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php +++ /dev/null @@ -1,71 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\CastNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class LowercaseCastFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Cast should be written in lower case.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound(Token::getCastTokenKinds()); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = 0, $count = $tokens->count(); $index < $count; ++$index) { - if (!$tokens[$index]->isCast()) { - continue; - } - - $tokens[$index] = new Token([$tokens[$index]->getId(), strtolower($tokens[$index]->getContent())]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php deleted file mode 100644 index de21bfc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php +++ /dev/null @@ -1,165 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\CastNotation; - -use PhpCsFixer\AbstractFunctionReferenceFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Vladimir Reznichenko - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ModernizeTypesCastingFixer extends AbstractFunctionReferenceFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replaces `intval`, `floatval`, `doubleval`, `strval` and `boolval` function calls with according type casting operator.', - [ - new CodeSample( - <<<'PHP' - [\T_INT_CAST, '(int)'], - 'floatval' => [\T_DOUBLE_CAST, '(float)'], - 'doubleval' => [\T_DOUBLE_CAST, '(float)'], - 'strval' => [\T_STRING_CAST, '(string)'], - 'boolval' => [\T_BOOL_CAST, '(bool)'], - ] as $functionIdentity => $newToken) { - $currIndex = 0; - - do { - // try getting function reference and translate boundaries for humans - $boundaries = $this->find($functionIdentity, $tokens, $currIndex, $tokens->count() - 1); - - if (null === $boundaries) { - // next function search, as current one not found - continue 2; - } - - [$functionName, $openParenthesis, $closeParenthesis] = $boundaries; - - // analysing cursor shift - $currIndex = $openParenthesis; - - // indicator that the function is overridden - if (1 !== $argumentsAnalyzer->countArguments($tokens, $openParenthesis, $closeParenthesis)) { - continue; - } - - $paramContentEnd = $closeParenthesis; - $commaCandidate = $tokens->getPrevMeaningfulToken($paramContentEnd); - - if ($tokens[$commaCandidate]->equals(',')) { - $tokens->removeTrailingWhitespace($commaCandidate); - $tokens->clearAt($commaCandidate); - $paramContentEnd = $commaCandidate; - } - - // check if something complex passed as an argument and preserve parentheses then - $countParamTokens = 0; - - for ($paramContentIndex = $openParenthesis + 1; $paramContentIndex < $paramContentEnd; ++$paramContentIndex) { - // not a space, means some sensible token - if (!$tokens[$paramContentIndex]->isGivenKind(\T_WHITESPACE)) { - ++$countParamTokens; - } - } - - $preserveParentheses = $countParamTokens > 1; - - $afterCloseParenthesisIndex = $tokens->getNextMeaningfulToken($closeParenthesis); - $afterCloseParenthesisToken = $tokens[$afterCloseParenthesisIndex]; - $wrapInParentheses = $afterCloseParenthesisToken->equalsAny(['[', '{']) || $afterCloseParenthesisToken->isGivenKind(\T_POW); - - // analyse namespace specification (root one or none) and decide what to do - $prevTokenIndex = $tokens->getPrevMeaningfulToken($functionName); - - if ($tokens[$prevTokenIndex]->isGivenKind(\T_NS_SEPARATOR)) { - // get rid of root namespace when it used - $tokens->removeTrailingWhitespace($prevTokenIndex); - $tokens->clearAt($prevTokenIndex); - } - - // perform transformation - $replacementSequence = [ - new Token($newToken), - new Token([\T_WHITESPACE, ' ']), - ]; - - if ($wrapInParentheses) { - array_unshift($replacementSequence, new Token('(')); - } - - if (!$preserveParentheses) { - // closing parenthesis removed with leading spaces - $tokens->removeLeadingWhitespace($closeParenthesis); - $tokens->clearAt($closeParenthesis); - - // opening parenthesis removed with trailing spaces - $tokens->removeLeadingWhitespace($openParenthesis); - $tokens->removeTrailingWhitespace($openParenthesis); - $tokens->clearAt($openParenthesis); - } else { - // we'll need to provide a space after a casting operator - $tokens->removeTrailingWhitespace($functionName); - } - - if ($wrapInParentheses) { - $tokens->insertAt($closeParenthesis, new Token(')')); - } - - $tokens->overrideRange($functionName, $functionName, $replacementSequence); - - // nested transformations support - $currIndex = $functionName; - } while (null !== $currIndex); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php deleted file mode 100644 index ecba138..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\CastNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoShortBoolCastFixer extends AbstractFixer -{ - /** - * {@inheritdoc} - * - * Must run before CastSpacesFixer. - */ - public function getPriority(): int - { - return -9; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Short cast `bool` using double exclamation mark should not be used.', - [new CodeSample("isTokenKindFound('!'); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 1; $index > 1; --$index) { - if ($tokens[$index]->equals('!')) { - $index = $this->fixShortCast($tokens, $index); - } - } - } - - private function fixShortCast(Tokens $tokens, int $index): int - { - for ($i = $index - 1; $i > 1; --$i) { - if ($tokens[$i]->equals('!')) { - $this->fixShortCastToBoolCast($tokens, $i, $index); - - break; - } - - if (!$tokens[$i]->isComment() && !$tokens[$i]->isWhitespace()) { - break; - } - } - - return $i; - } - - private function fixShortCastToBoolCast(Tokens $tokens, int $start, int $end): void - { - for (; $start <= $end; ++$start) { - if ( - !$tokens[$start]->isComment() - && !($tokens[$start]->isWhitespace() && $tokens[$start - 1]->isComment()) - ) { - $tokens->clearAt($start); - } - } - - $tokens->insertAt($start, new Token([\T_BOOL_CAST, '(bool)'])); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php deleted file mode 100644 index 77741b8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\CastNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUnsetCastFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Variables must be set `null` instead of using `(unset)` casting.', - [new CodeSample("isTokenKindFound(\T_UNSET_CAST); - } - - /** - * {@inheritdoc} - * - * Must run before BinaryOperatorSpacesFixer. - */ - public function getPriority(): int - { - return 0; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 1; $index > 0; --$index) { - if ($tokens[$index]->isGivenKind(\T_UNSET_CAST)) { - $this->fixUnsetCast($tokens, $index); - } - } - } - - private function fixUnsetCast(Tokens $tokens, int $index): void - { - $assignmentIndex = $tokens->getPrevMeaningfulToken($index); - if (null === $assignmentIndex || !$tokens[$assignmentIndex]->equals('=')) { - return; - } - - $varIndex = $tokens->getNextMeaningfulToken($index); - if (null === $varIndex || !$tokens[$varIndex]->isGivenKind(\T_VARIABLE)) { - return; - } - - $afterVar = $tokens->getNextMeaningfulToken($varIndex); - if (null === $afterVar || !$tokens[$afterVar]->equalsAny([';', [\T_CLOSE_TAG]])) { - return; - } - - $nextIsWhiteSpace = $tokens[$assignmentIndex + 1]->isWhitespace(); - - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($varIndex); - - ++$assignmentIndex; - if (!$nextIsWhiteSpace) { - $tokens->insertAt($assignmentIndex, new Token([\T_WHITESPACE, ' '])); - } - - ++$assignmentIndex; - $tokens->insertAt($assignmentIndex, new Token([\T_STRING, 'null'])); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php deleted file mode 100644 index 3b00de5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\CastNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ShortScalarCastFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Cast `(boolean)` and `(integer)` should be written as `(bool)` and `(int)`, `(double)` and `(real)` as `(float)`, `(binary)` as `(string)`.', - [ - new CodeSample( - "isAnyTokenKindsFound(Token::getCastTokenKinds()); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = 0, $count = $tokens->count(); $index < $count; ++$index) { - if (!$tokens[$index]->isCast()) { - continue; - } - - $castFrom = trim(substr($tokens[$index]->getContent(), 1, -1)); - $castFromLowered = strtolower($castFrom); - - $castTo = [ - 'boolean' => 'bool', - 'integer' => 'int', - 'double' => 'float', - 'real' => 'float', - 'binary' => 'string', - ][$castFromLowered] ?? null; - - if (null === $castTo) { - continue; - } - - $tokens[$index] = new Token([ - $tokens[$index]->getId(), - str_replace($castFrom, $castTo, $tokens[$index]->getContent()), - ]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php deleted file mode 100644 index f31e022..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php +++ /dev/null @@ -1,580 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use PhpCsFixer\Utils; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * Make sure there is one blank line above and below class elements. - * - * The exception is when an element is the first or last item in a 'classy'. - * - * @phpstan-type _Class array{ - * index: int, - * open: int, - * close: int, - * elements: non-empty-list<_Element> - * } - * @phpstan-type _Element array{token: Token, type: string, index: int, start: int, end: int} - * @phpstan-type _AutogeneratedInputConfiguration array{ - * elements?: array, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * elements: array, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ClassAttributesSeparationFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const SPACING_NONE = 'none'; - - /** - * @internal - */ - public const SPACING_ONE = 'one'; - - private const SPACING_ONLY_IF_META = 'only_if_meta'; - private const MODIFIER_TYPES = [\T_PRIVATE, \T_PROTECTED, \T_PUBLIC, \T_ABSTRACT, \T_FINAL, \T_STATIC, \T_STRING, \T_NS_SEPARATOR, \T_VAR, CT::T_NULLABLE_TYPE, CT::T_ARRAY_TYPEHINT, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET]; - - /** - * @var array - */ - private array $classElementTypes = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Class, trait and interface elements must be separated with one or none blank line.', - [ - new CodeSample( - <<<'PHP' - ['property' => self::SPACING_ONE]], - ), - new CodeSample( - <<<'PHP' - ['const' => self::SPACING_ONE]], - ), - new CodeSample( - <<<'PHP' - ['const' => self::SPACING_ONLY_IF_META]], - ), - new VersionSpecificCodeSample( - <<<'PHP' - ['property' => self::SPACING_ONLY_IF_META]], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BracesFixer, IndentationTypeFixer, NoExtraBlankLinesFixer, StatementIndentationFixer. - * Must run after ModifierKeywordsFixer, OrderedClassElementsFixer, PhpUnitDataProviderMethodOrderFixer, SingleClassElementPerStatementFixer. - */ - public function getPriority(): int - { - return 55; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds()); - } - - protected function configurePostNormalisation(): void - { - $this->classElementTypes = []; // reset previous configuration - - foreach ($this->configuration['elements'] as $elementType => $spacing) { - $this->classElementTypes[$elementType] = $spacing; - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($this->getElementsByClass($tokens) as $class) { - $elements = $class['elements']; - - if (isset($this->classElementTypes[$elements[0]['type']])) { - $this->fixSpaceBelowClassElement($tokens, $class); - } - - foreach ($elements as $index => $element) { - if (isset($this->classElementTypes[$element['type']])) { - $this->fixSpaceAboveClassElement($tokens, $class, $index); - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('elements', 'Dictionary of `const|method|property|trait_import|case` => `none|one|only_if_meta` values.')) - ->setAllowedTypes(['array']) - ->setAllowedValues([static function (array $option): bool { - foreach ($option as $type => $spacing) { - $supportedTypes = ['const', 'method', 'property', 'trait_import', 'case']; - - if (!\in_array($type, $supportedTypes, true)) { - throw new InvalidOptionsException( - \sprintf( - 'Unexpected element type, expected any of %s, got "%s".', - Utils::naturalLanguageJoin($supportedTypes), - \gettype($type).'#'.$type, - ), - ); - } - - $supportedSpacings = [self::SPACING_NONE, self::SPACING_ONE, self::SPACING_ONLY_IF_META]; - - if (!\in_array($spacing, $supportedSpacings, true)) { - throw new InvalidOptionsException( - \sprintf( - 'Unexpected spacing for element type "%s", expected any of %s, got "%s".', - $spacing, - Utils::naturalLanguageJoin($supportedSpacings), - \is_object($spacing) ? \get_class($spacing) : (null === $spacing ? 'null' : \gettype($spacing).'#'.$spacing), - ), - ); - } - } - - return true; - }]) - ->setDefault([ - 'const' => self::SPACING_ONE, - 'method' => self::SPACING_ONE, - 'property' => self::SPACING_ONE, - 'trait_import' => self::SPACING_NONE, - 'case' => self::SPACING_NONE, - ]) - ->getOption(), - ]); - } - - /** - * Fix spacing above an element of a class, interface or trait. - * - * Deals with comments, PHPDocs and spaces above the element with respect to the position of the - * element within the class, interface or trait. - * - * @param _Class $class - */ - private function fixSpaceAboveClassElement(Tokens $tokens, array $class, int $elementIndex): void - { - \assert(isset($class['elements'][$elementIndex])); - $element = $class['elements'][$elementIndex]; - $elementAboveEnd = isset($class['elements'][$elementIndex + 1]) ? $class['elements'][$elementIndex + 1]['end'] : 0; - $nonWhiteAbove = $tokens->getPrevNonWhitespace($element['start']); - - // element is directly after class open brace - if ($nonWhiteAbove === $class['open']) { - $this->correctLineBreaks($tokens, $nonWhiteAbove, $element['start'], 1); - - return; - } - - // deal with comments above an element - if ($tokens[$nonWhiteAbove]->isGivenKind(\T_COMMENT)) { - // check if the comment belongs to the previous element - if ($elementAboveEnd === $nonWhiteAbove) { - $this->correctLineBreaks($tokens, $nonWhiteAbove, $element['start'], $this->determineRequiredLineCount($tokens, $class, $elementIndex)); - - return; - } - - // more than one line break, always bring it back to 2 line breaks between the element start and what is above it - if ($tokens[$nonWhiteAbove + 1]->isWhitespace() && substr_count($tokens[$nonWhiteAbove + 1]->getContent(), "\n") > 1) { - $this->correctLineBreaks($tokens, $nonWhiteAbove, $element['start'], 2); - - return; - } - - // there are 2 cases: - if ( - 1 === $element['start'] - $nonWhiteAbove - || $tokens[$nonWhiteAbove - 1]->isWhitespace() && substr_count($tokens[$nonWhiteAbove - 1]->getContent(), "\n") > 0 - || $tokens[$nonWhiteAbove + 1]->isWhitespace() && substr_count($tokens[$nonWhiteAbove + 1]->getContent(), "\n") > 0 - ) { - // 1. The comment is meant for the element (although not a PHPDoc), - // make sure there is one line break between the element and the comment... - $this->correctLineBreaks($tokens, $nonWhiteAbove, $element['start'], 1); - // ... and make sure there is blank line above the comment (with the exception when it is directly after a class opening) - $nonWhiteAbove = $this->findCommentBlockStart($tokens, $nonWhiteAbove, $elementAboveEnd); - $nonWhiteAboveComment = $tokens->getPrevNonWhitespace($nonWhiteAbove); - - if ($nonWhiteAboveComment === $class['open']) { - if ($tokens[$nonWhiteAboveComment - 1]->isWhitespace() && substr_count($tokens[$nonWhiteAboveComment - 1]->getContent(), "\n") > 0) { - $this->correctLineBreaks($tokens, $nonWhiteAboveComment, $nonWhiteAbove, 1); - } - } else { - $this->correctLineBreaks($tokens, $nonWhiteAboveComment, $nonWhiteAbove, 2); - } - } else { - // 2. The comment belongs to the code above the element, - // make sure there is a blank line above the element (i.e. 2 line breaks) - $this->correctLineBreaks($tokens, $nonWhiteAbove, $element['start'], 2); - } - - return; - } - - // deal with element with a PHPDoc/attribute above it - if ($tokens[$nonWhiteAbove]->isGivenKind([\T_DOC_COMMENT, CT::T_ATTRIBUTE_CLOSE])) { - // there should be one linebreak between the element and the attribute above it - $this->correctLineBreaks($tokens, $nonWhiteAbove, $element['start'], 1); - - // make sure there is blank line above the comment (with the exception when it is directly after a class opening) - $nonWhiteAbove = $this->findCommentBlockStart($tokens, $nonWhiteAbove, $elementAboveEnd); - $nonWhiteAboveComment = $tokens->getPrevNonWhitespace($nonWhiteAbove); - - $this->correctLineBreaks($tokens, $nonWhiteAboveComment, $nonWhiteAbove, $nonWhiteAboveComment === $class['open'] ? 1 : 2); - - return; - } - - $this->correctLineBreaks($tokens, $nonWhiteAbove, $element['start'], $this->determineRequiredLineCount($tokens, $class, $elementIndex)); - } - - /** - * @param _Class $class - */ - private function determineRequiredLineCount(Tokens $tokens, array $class, int $elementIndex): int - { - \assert(isset($class['elements'][$elementIndex])); - $type = $class['elements'][$elementIndex]['type']; - \assert(isset($this->classElementTypes[$type])); - $spacing = $this->classElementTypes[$type]; - - if (self::SPACING_ONE === $spacing) { - return 2; - } - - if (self::SPACING_NONE === $spacing) { - \assert(isset($class['elements'][$elementIndex + 1])); - $aboveElement = $class['elements'][$elementIndex + 1]; - - if ($aboveElement['type'] !== $type) { - return 2; - } - - $aboveElementDocCandidateIndex = $tokens->getPrevNonWhitespace($aboveElement['start']); - - return $tokens[$aboveElementDocCandidateIndex]->isGivenKind([\T_DOC_COMMENT, CT::T_ATTRIBUTE_CLOSE]) ? 2 : 1; - } - - // self::SPACING_ONLY_IF_META === $spacing - $aboveElementDocCandidateIndex = $tokens->getPrevNonWhitespace($class['elements'][$elementIndex]['start']); - - return $tokens[$aboveElementDocCandidateIndex]->isGivenKind([\T_DOC_COMMENT, CT::T_ATTRIBUTE_CLOSE]) ? 2 : 1; - } - - /** - * @param _Class $class - */ - private function fixSpaceBelowClassElement(Tokens $tokens, array $class): void - { - $element = $class['elements'][0]; - - // if this is last element fix; fix to the class end `}` here if appropriate - if ($class['close'] === $tokens->getNextNonWhitespace($element['end'])) { - $this->correctLineBreaks($tokens, $element['end'], $class['close'], 1); - } - } - - private function correctLineBreaks(Tokens $tokens, int $startIndex, int $endIndex, int $reqLineCount): void - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - ++$startIndex; - $numbOfWhiteTokens = $endIndex - $startIndex; - - if (0 === $numbOfWhiteTokens) { - $tokens->insertAt($startIndex, new Token([\T_WHITESPACE, str_repeat($lineEnding, $reqLineCount)])); - - return; - } - - $lineBreakCount = $this->getLineBreakCount($tokens, $startIndex, $endIndex); - - if ($reqLineCount === $lineBreakCount) { - return; - } - - if ($lineBreakCount < $reqLineCount) { - $tokens[$startIndex] = new Token([ - \T_WHITESPACE, - str_repeat($lineEnding, $reqLineCount - $lineBreakCount).$tokens[$startIndex]->getContent(), - ]); - - return; - } - - // $lineCount = > $reqLineCount : check the one Token case first since this one will be true most of the time - if (1 === $numbOfWhiteTokens) { - $tokens[$startIndex] = new Token([ - \T_WHITESPACE, - Preg::replace('/\r\n|\n/', '', $tokens[$startIndex]->getContent(), $lineBreakCount - $reqLineCount), - ]); - - return; - } - } - - private function getLineBreakCount(Tokens $tokens, int $startIndex, int $endIndex): int - { - $lineCount = 0; - - for ($i = $startIndex; $i < $endIndex; ++$i) { - $lineCount += substr_count($tokens[$i]->getContent(), "\n"); - } - - return $lineCount; - } - - private function findCommentBlockStart(Tokens $tokens, int $start, int $elementAboveEnd): int - { - for ($i = $start; $i > $elementAboveEnd; --$i) { - if ($tokens[$i]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $start = $i = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $i); - - continue; - } - - if ($tokens[$i]->isComment()) { - $start = $i; - - continue; - } - - if (!$tokens[$i]->isWhitespace() || $this->getLineBreakCount($tokens, $i, $i + 1) > 1) { - break; - } - } - - return $start; - } - - /** - * @return iterable<_Class> - */ - private function getElementsByClass(Tokens $tokens): iterable - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $class = null; - - foreach (array_reverse($tokensAnalyzer->getClassyElements(), true) as $index => $element) { - $element['index'] = $index; - - if (null === $class || $element['classIndex'] !== $class['index']) { - if (null !== $class) { - yield $class; - } - - $classIndex = $element['classIndex']; - $classOpen = $tokens->getNextTokenOfKind($classIndex, ['{']); - $classEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $classOpen); - $class = [ - 'index' => $element['classIndex'], - 'open' => $classOpen, - 'close' => $classEnd, - 'elements' => [], - ]; - } - - unset($element['classIndex']); - $element['start'] = $this->getFirstTokenIndexOfClassElement($tokens, $class['open'], $index); - $element['end'] = $this->getLastTokenIndexOfClassElement($tokens, $class['index'], $index, $element['type'], $tokensAnalyzer); - - $class['elements'][] = $element; // reset the key by design - } - - if (null !== $class) { - yield $class; - } - } - - /** - * including trailing single line comments if belonging to the class element. - */ - private function getFirstTokenIndexOfClassElement(Tokens $tokens, int $classOpen, int $elementIndex): int - { - $firstElementAttributeIndex = $elementIndex; - - do { - $nonWhiteAbove = $tokens->getPrevMeaningfulToken($firstElementAttributeIndex); - - if (null !== $nonWhiteAbove && $tokens[$nonWhiteAbove]->isGivenKind(self::MODIFIER_TYPES)) { - $firstElementAttributeIndex = $nonWhiteAbove; - } else { - break; - } - } while ($firstElementAttributeIndex > $classOpen); - - return $firstElementAttributeIndex; - } - - /** - * including trailing single line comments if belonging to the class element. - */ - private function getLastTokenIndexOfClassElement(Tokens $tokens, int $classIndex, int $elementIndex, string $elementType, TokensAnalyzer $tokensAnalyzer): int - { - // find last token of the element - if ('method' === $elementType && !$tokens[$classIndex]->isGivenKind(\T_INTERFACE)) { - $attributes = $tokensAnalyzer->getMethodAttributes($elementIndex); - - if (true === $attributes['abstract']) { - $elementEndIndex = $tokens->getNextTokenOfKind($elementIndex, [';']); - } else { - $elementEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $tokens->getNextTokenOfKind($elementIndex, ['{'])); - } - } elseif ('trait_import' === $elementType) { - $elementEndIndex = $elementIndex; - - do { - $elementEndIndex = $tokens->getNextMeaningfulToken($elementEndIndex); - } while ($tokens[$elementEndIndex]->isGivenKind([\T_STRING, \T_NS_SEPARATOR]) || $tokens[$elementEndIndex]->equals(',')); - - if (!$tokens[$elementEndIndex]->equals(';')) { - $elementEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $tokens->getNextTokenOfKind($elementIndex, ['{'])); - } - } else { // 'const', 'property', enum-'case', or 'method' of an interface - $elementEndIndex = $tokens->getNextTokenOfKind($elementIndex, [';', '{']); - } - - $singleLineElement = true; - - for ($i = $elementIndex + 1; $i < $elementEndIndex; ++$i) { - if (str_contains($tokens[$i]->getContent(), "\n")) { - $singleLineElement = false; - - break; - } - } - - if ($singleLineElement) { - while (true) { - $nextToken = $tokens[$elementEndIndex + 1]; - - if (($nextToken->isComment() || $nextToken->isWhitespace()) && !str_contains($nextToken->getContent(), "\n")) { - ++$elementEndIndex; - } else { - break; - } - } - - if ($tokens[$elementEndIndex]->isWhitespace()) { - $elementEndIndex = $tokens->getPrevNonWhitespace($elementEndIndex); - } - } - - return $elementEndIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php deleted file mode 100644 index a959234..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php +++ /dev/null @@ -1,564 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * Fixer for part of the rules defined in PSR2 ¶4.1 Extends and Implements and PSR12 ¶8. Anonymous Classes. - * - * @phpstan-type _ClassReferenceInfo array{start: int, count: int, multiLine: bool} - * @phpstan-type _AutogeneratedInputConfiguration array{ - * inline_constructor_arguments?: bool, - * multi_line_extends_each_single_line?: bool, - * single_item_single_line?: bool, - * single_line?: bool, - * space_before_parenthesis?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * inline_constructor_arguments: bool, - * multi_line_extends_each_single_line: bool, - * single_item_single_line: bool, - * single_line: bool, - * space_before_parenthesis: bool, - * } - * @phpstan-type _ClassyDefinitionInfo array{ - * start: int, - * classy: int, - * open: int, - * extends: false|_ClassReferenceInfo, - * implements: false|_ClassReferenceInfo, - * anonymousClass: bool, - * final: false|int, - * abstract: false|int, - * readonly: false|int, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ClassDefinitionFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Whitespace around the keywords of a class, trait, enum or interfaces definition should be one space.', - [ - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - " true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BracesFixer, SingleLineEmptyBodyFixer. - * Must run after NewWithBracesFixer, NewWithParenthesesFixer, StringableForToStringFixer. - */ - public function getPriority(): int - { - return 36; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds()); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - // -4, one for count to index, 3 because min. of tokens for a classy location. - for ($index = $tokens->getSize() - 4; $index > 0; --$index) { - if ($tokens[$index]->isClassy()) { - $this->fixClassyDefinition($tokens, $index); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('multi_line_extends_each_single_line', 'Whether definitions should be multiline.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('single_item_single_line', 'Whether definitions should be single line when including a single item.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('single_line', 'Whether definitions should be single line.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('space_before_parenthesis', 'Whether there should be a single space after the parenthesis of anonymous class (PSR12) or not.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('inline_constructor_arguments', 'Whether constructor argument list in anonymous classes should be single line.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - /** - * @param int $classyIndex Class definition token start index - */ - private function fixClassyDefinition(Tokens $tokens, int $classyIndex): void - { - $classDefInfo = $this->getClassyDefinitionInfo($tokens, $classyIndex); - - // PSR2 4.1 Lists of implements MAY be split across multiple lines, where each subsequent line is indented once. - // When doing so, the first item in the list MUST be on the next line, and there MUST be only one interface per line. - - if (false !== $classDefInfo['implements']) { - $classDefInfo['implements'] = $this->fixClassyDefinitionImplements( - $tokens, - $classDefInfo['open'], - $classDefInfo['implements'], - ); - } - - if (false !== $classDefInfo['extends']) { - $classDefInfo['extends'] = $this->fixClassyDefinitionExtends( - $tokens, - false === $classDefInfo['implements'] ? $classDefInfo['open'] : $classDefInfo['implements']['start'], - $classDefInfo['extends'], - ); - } - - // PSR2: class definition open curly brace must go on a new line. - // PSR12: anonymous class curly brace on same line if not multi line implements. - - $classDefInfo['open'] = $this->fixClassyDefinitionOpenSpacing($tokens, $classDefInfo); - - if (false !== $classDefInfo['implements']) { - $end = $classDefInfo['implements']['start']; - } elseif (false !== $classDefInfo['extends']) { - $end = $classDefInfo['extends']['start']; - } else { - $end = $tokens->getPrevNonWhitespace($classDefInfo['open']); - } - - if ($classDefInfo['anonymousClass'] && false === $this->configuration['inline_constructor_arguments']) { - if (!$tokens[$end]->equals(')')) { // anonymous class with `extends` and/or `implements` - $start = $tokens->getPrevMeaningfulToken($end); - $this->makeClassyDefinitionSingleLine($tokens, $start, $end); - $end = $start; - } - - if ($tokens[$end]->equals(')')) { // skip constructor arguments of anonymous class - $end = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $end); - } - } - - // 4.1 The extends and implements keywords MUST be declared on the same line as the class name. - $this->makeClassyDefinitionSingleLine($tokens, $classDefInfo['start'], $end); - - $this->sortClassModifiers($tokens, $classDefInfo); - } - - /** - * @param _ClassReferenceInfo $classExtendsInfo - * - * @return _ClassReferenceInfo - */ - private function fixClassyDefinitionExtends(Tokens $tokens, int $classOpenIndex, array $classExtendsInfo): array - { - $endIndex = $tokens->getPrevNonWhitespace($classOpenIndex); - - if (true === $this->configuration['single_line'] || false === $classExtendsInfo['multiLine']) { - $this->makeClassyDefinitionSingleLine($tokens, $classExtendsInfo['start'], $endIndex); - $classExtendsInfo['multiLine'] = false; - } elseif (true === $this->configuration['single_item_single_line'] && 1 === $classExtendsInfo['count']) { - $this->makeClassyDefinitionSingleLine($tokens, $classExtendsInfo['start'], $endIndex); - $classExtendsInfo['multiLine'] = false; - } elseif (true === $this->configuration['multi_line_extends_each_single_line'] && $classExtendsInfo['multiLine']) { - $this->makeClassyInheritancePartMultiLine($tokens, $classExtendsInfo['start'], $endIndex); - $classExtendsInfo['multiLine'] = true; - } - - return $classExtendsInfo; - } - - /** - * @param _ClassReferenceInfo $classImplementsInfo - * - * @return _ClassReferenceInfo - */ - private function fixClassyDefinitionImplements(Tokens $tokens, int $classOpenIndex, array $classImplementsInfo): array - { - $endIndex = $tokens->getPrevNonWhitespace($classOpenIndex); - - if (true === $this->configuration['single_line'] || false === $classImplementsInfo['multiLine']) { - $this->makeClassyDefinitionSingleLine($tokens, $classImplementsInfo['start'], $endIndex); - $classImplementsInfo['multiLine'] = false; - } elseif (true === $this->configuration['single_item_single_line'] && 1 === $classImplementsInfo['count']) { - $this->makeClassyDefinitionSingleLine($tokens, $classImplementsInfo['start'], $endIndex); - $classImplementsInfo['multiLine'] = false; - } else { - $this->makeClassyInheritancePartMultiLine($tokens, $classImplementsInfo['start'], $endIndex); - $classImplementsInfo['multiLine'] = true; - } - - return $classImplementsInfo; - } - - /** - * @param _ClassyDefinitionInfo $classDefInfo - */ - private function fixClassyDefinitionOpenSpacing(Tokens $tokens, array $classDefInfo): int - { - if ($classDefInfo['anonymousClass']) { - if (false !== $classDefInfo['implements']) { - $spacing = $classDefInfo['implements']['multiLine'] ? $this->whitespacesConfig->getLineEnding() : ' '; - } elseif (false !== $classDefInfo['extends']) { - $spacing = $classDefInfo['extends']['multiLine'] ? $this->whitespacesConfig->getLineEnding() : ' '; - } else { - $spacing = ' '; - } - } else { - $spacing = $this->whitespacesConfig->getLineEnding(); - } - - $openIndex = $tokens->getNextTokenOfKind($classDefInfo['classy'], ['{']); - - if (' ' !== $spacing && str_contains($tokens[$openIndex - 1]->getContent(), "\n")) { - return $openIndex; - } - - if ($tokens[$openIndex - 1]->isWhitespace()) { - if (' ' !== $spacing || !$tokens[$tokens->getPrevNonWhitespace($openIndex - 1)]->isComment()) { - $tokens[$openIndex - 1] = new Token([\T_WHITESPACE, $spacing]); - } - - return $openIndex; - } - - $tokens->insertAt($openIndex, new Token([\T_WHITESPACE, $spacing])); - - return $openIndex + 1; - } - - /** - * @return _ClassyDefinitionInfo - */ - private function getClassyDefinitionInfo(Tokens $tokens, int $classyIndex): array - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $openIndex = $tokens->getNextTokenOfKind($classyIndex, ['{']); - $def = [ - 'classy' => $classyIndex, - 'open' => $openIndex, - 'extends' => false, - 'implements' => false, - 'anonymousClass' => false, - 'final' => false, - 'abstract' => false, - 'readonly' => false, - ]; - - if (!$tokens[$classyIndex]->isGivenKind(\T_TRAIT)) { - $extends = $tokens->findGivenKind(\T_EXTENDS, $classyIndex, $openIndex); - $def['extends'] = [] !== $extends ? $this->getClassyInheritanceInfo($tokens, array_key_first($extends)) : false; - - if (!$tokens[$classyIndex]->isGivenKind(\T_INTERFACE)) { - $implements = $tokens->findGivenKind(\T_IMPLEMENTS, $classyIndex, $openIndex); - $def['implements'] = [] !== $implements ? $this->getClassyInheritanceInfo($tokens, array_key_first($implements)) : false; - $def['anonymousClass'] = $tokensAnalyzer->isAnonymousClass($classyIndex); - } - } - - if ($def['anonymousClass']) { - $startIndex = $tokens->getPrevTokenOfKind($classyIndex, [[\T_NEW]]); // go to "new" for anonymous class - } else { - $modifiers = $tokensAnalyzer->getClassyModifiers($classyIndex); - $startIndex = $classyIndex; - - foreach (['final', 'abstract', 'readonly'] as $modifier) { - if (isset($modifiers[$modifier])) { - $def[$modifier] = $modifiers[$modifier]; - $startIndex = min($startIndex, $modifiers[$modifier]); - } else { - $def[$modifier] = false; - } - } - } - - $def['start'] = $startIndex; - - return $def; - } - - /** - * @return _ClassReferenceInfo - */ - private function getClassyInheritanceInfo(Tokens $tokens, int $startIndex): array - { - $implementsInfo = ['start' => $startIndex, 'count' => 1, 'multiLine' => false]; - ++$startIndex; - $endIndex = $tokens->getNextTokenOfKind($startIndex, ['{', [\T_IMPLEMENTS], [\T_EXTENDS]]); - $endIndex = $tokens[$endIndex]->equals('{') ? $tokens->getPrevNonWhitespace($endIndex) : $endIndex; - - for ($i = $startIndex; $i < $endIndex; ++$i) { - if ($tokens[$i]->equals(',')) { - ++$implementsInfo['count']; - - continue; - } - - if (!$implementsInfo['multiLine'] && str_contains($tokens[$i]->getContent(), "\n")) { - $implementsInfo['multiLine'] = true; - } - } - - return $implementsInfo; - } - - private function makeClassyDefinitionSingleLine(Tokens $tokens, int $startIndex, int $endIndex): void - { - for ($i = $endIndex; $i >= $startIndex; --$i) { - if ($tokens[$i]->isWhitespace()) { - if (str_contains($tokens[$i]->getContent(), "\n")) { - if ($tokens[$i - 1]->isGivenKind(CT::T_ATTRIBUTE_CLOSE) || $tokens[$i + 1]->isGivenKind(FCT::T_ATTRIBUTE)) { - continue; - } - if (($tokens[$i - 1]->isComment() && str_ends_with($tokens[$i - 1]->getContent(), ']')) - || ($tokens[$i + 1]->isComment() && str_starts_with($tokens[$i + 1]->getContent(), '#[')) - ) { - continue; - } - - if ($tokens[$i - 1]->isGivenKind(\T_DOC_COMMENT) || $tokens[$i + 1]->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - } - - if ($tokens[$i - 1]->isComment()) { - $content = $tokens[$i - 1]->getContent(); - if (!str_starts_with($content, '//') && !str_starts_with($content, '#')) { - $tokens[$i] = new Token([\T_WHITESPACE, ' ']); - } - - continue; - } - - if ($tokens[$i + 1]->isComment()) { - $content = $tokens[$i + 1]->getContent(); - if (!str_starts_with($content, '//')) { - $tokens[$i] = new Token([\T_WHITESPACE, ' ']); - } - - continue; - } - - if ($tokens[$i - 1]->isGivenKind(\T_CLASS) && $tokens[$i + 1]->equals('(')) { - if (true === $this->configuration['space_before_parenthesis']) { - $tokens[$i] = new Token([\T_WHITESPACE, ' ']); - } else { - $tokens->clearAt($i); - } - - continue; - } - - if (!$tokens[$i - 1]->equals(',') && $tokens[$i + 1]->equalsAny([',', ')']) || $tokens[$i - 1]->equals('(')) { - $tokens->clearAt($i); - - continue; - } - - $tokens[$i] = new Token([\T_WHITESPACE, ' ']); - - continue; - } - - if ($tokens[$i]->equals(',') && !$tokens[$i + 1]->isWhitespace()) { - $tokens->insertAt($i + 1, new Token([\T_WHITESPACE, ' '])); - - continue; - } - - if (true === $this->configuration['space_before_parenthesis'] && $tokens[$i]->isGivenKind(\T_CLASS) && !$tokens[$i + 1]->isWhitespace()) { - $tokens->insertAt($i + 1, new Token([\T_WHITESPACE, ' '])); - - continue; - } - - if (!$tokens[$i]->isComment()) { - continue; - } - - if (!$tokens[$i + 1]->isWhitespace() && !$tokens[$i + 1]->isComment() && !str_contains($tokens[$i]->getContent(), "\n")) { - $tokens->insertAt($i + 1, new Token([\T_WHITESPACE, ' '])); - } - - if (!$tokens[$i - 1]->isWhitespace() && !$tokens[$i - 1]->isComment()) { - $tokens->insertAt($i, new Token([\T_WHITESPACE, ' '])); - } - } - } - - private function makeClassyInheritancePartMultiLine(Tokens $tokens, int $startIndex, int $endIndex): void - { - for ($i = $endIndex; $i > $startIndex; --$i) { - $previousInterfaceImplementingIndex = $tokens->getPrevTokenOfKind($i, [',', [\T_IMPLEMENTS], [\T_EXTENDS]]); - $breakAtIndex = $tokens->getNextMeaningfulToken($previousInterfaceImplementingIndex); - - // make the part of a ',' or 'implements' single line - $this->makeClassyDefinitionSingleLine( - $tokens, - $breakAtIndex, - $i, - ); - - // make sure the part is on its own line - $isOnOwnLine = false; - - for ($j = $breakAtIndex; $j > $previousInterfaceImplementingIndex; --$j) { - if (str_contains($tokens[$j]->getContent(), "\n")) { - $isOnOwnLine = true; - - break; - } - } - - if (!$isOnOwnLine) { - if ($tokens[$breakAtIndex - 1]->isWhitespace()) { - $tokens[$breakAtIndex - 1] = new Token([ - \T_WHITESPACE, - $this->whitespacesConfig->getLineEnding().$this->whitespacesConfig->getIndent(), - ]); - } else { - $tokens->insertAt($breakAtIndex, new Token([\T_WHITESPACE, $this->whitespacesConfig->getLineEnding().$this->whitespacesConfig->getIndent()])); - } - } - - $i = $previousInterfaceImplementingIndex + 1; - } - } - - /** - * @param _ClassyDefinitionInfo $classDefInfo - */ - private function sortClassModifiers(Tokens $tokens, array $classDefInfo): void - { - if (false === $classDefInfo['readonly']) { - return; - } - - $readonlyIndex = $classDefInfo['readonly']; - - foreach (['final', 'abstract'] as $accessModifier) { - if (false === $classDefInfo[$accessModifier] || $classDefInfo[$accessModifier] < $readonlyIndex) { - continue; - } - - $accessModifierIndex = $classDefInfo[$accessModifier]; - - $readonlyToken = clone $tokens[$readonlyIndex]; - $accessToken = clone $tokens[$accessModifierIndex]; - - $tokens[$readonlyIndex] = $accessToken; - $tokens[$accessModifierIndex] = $readonlyToken; - - break; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php deleted file mode 100644 index c36159f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php +++ /dev/null @@ -1,71 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FinalClassFixer extends AbstractProxyFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'All classes must be final, except abstract ones and Doctrine entities.', - [ - new CodeSample( - <<<'PHP' - configure([ - 'include' => [], - 'consider_absent_docblock_as_internal_class' => true, - ]); - - return [$fixer]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php deleted file mode 100644 index c515fbf..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php +++ /dev/null @@ -1,372 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use PhpCsFixer\Utils; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * annotation_exclude?: list, - * annotation_include?: list, - * consider_absent_docblock_as_internal_class?: bool, - * exclude?: list, - * include?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * annotation_exclude: array, - * annotation_include: array, - * consider_absent_docblock_as_internal_class: bool, - * exclude: array, - * include: array, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FinalInternalClassFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const DEFAULTS = [ - 'include' => [ - 'internal', - ], - 'exclude' => [ - 'final', - 'Entity', - 'ORM\Entity', - 'ORM\Mapping\Entity', - 'Mapping\Entity', - 'Document', - 'ODM\Document', - ], - ]; - private const CLASS_CANDIDATE_ACCEPT_TYPES = [ - CT::T_ATTRIBUTE_CLOSE, - \T_DOC_COMMENT, - \T_COMMENT, // Skip comments - FCT::T_READONLY, - ]; - - private bool $checkAttributes; - - public function __construct() - { - parent::__construct(); - - $this->checkAttributes = \PHP_VERSION_ID >= 8_00_00; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Internal classes should be `final`.', - [ - new CodeSample(" ['@Custom'], - 'exclude' => ['@not-fix'], - ], - ), - ], - null, - 'Changing classes to `final` might cause code execution to break.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before ProtectedToPrivateFixer, SelfStaticAccessorFixer. - * Must run after PhpUnitInternalClassFixer. - */ - public function getPriority(): int - { - return 67; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_CLASS); - } - - public function isRisky(): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $this->assertConfigHasNoConflicts(); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - for ($index = $tokens->count() - 1; 0 <= $index; --$index) { - if (!$tokens[$index]->isGivenKind(\T_CLASS) || !$this->isClassCandidate($tokensAnalyzer, $tokens, $index)) { - continue; - } - - // make class 'final' - $tokens->insertSlices([ - $index => [ - new Token([\T_FINAL, 'final']), - new Token([\T_WHITESPACE, ' ']), - ], - ]); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $annotationsAsserts = [static function (array $values): bool { - foreach ($values as $value) { - if ('' === $value) { - return false; - } - } - - return true; - }]; - - $annotationsNormalizer = static function (Options $options, array $value): array { - $newValue = []; - foreach ($value as $key) { - if (str_starts_with($key, '@')) { - $key = substr($key, 1); - } - - $newValue[strtolower($key)] = true; - } - - return $newValue; - }; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('annotation_include', 'Class level attribute or annotation tags that must be set in order to fix the class (case insensitive).')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues($annotationsAsserts) - ->setDefault( - array_map( - static fn (string $string) => '@'.$string, - self::DEFAULTS['include'], - ), - ) - ->setNormalizer($annotationsNormalizer) - ->setDeprecationMessage('Use `include` to configure PHPDoc annotations tags and attributes.') - ->getOption(), - (new FixerOptionBuilder('annotation_exclude', 'Class level attribute or annotation tags that must be omitted to fix the class, even if all of the white list ones are used as well (case insensitive).')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues($annotationsAsserts) - ->setDefault( - array_map( - static fn (string $string) => '@'.$string, - self::DEFAULTS['exclude'], - ), - ) - ->setNormalizer($annotationsNormalizer) - ->setDeprecationMessage('Use `exclude` to configure PHPDoc annotations tags and attributes.') - ->getOption(), - (new FixerOptionBuilder('include', 'Class level attribute or annotation tags that must be set in order to fix the class (case insensitive).')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues($annotationsAsserts) - ->setDefault(self::DEFAULTS['include']) - ->setNormalizer($annotationsNormalizer) - ->getOption(), - (new FixerOptionBuilder('exclude', 'Class level attribute or annotation tags that must be omitted to fix the class, even if all of the white list ones are used as well (case insensitive).')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues($annotationsAsserts) - ->setDefault(self::DEFAULTS['exclude']) - ->setNormalizer($annotationsNormalizer) - ->getOption(), - (new FixerOptionBuilder('consider_absent_docblock_as_internal_class', 'Whether classes without any DocBlock should be fixed to final.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - /** - * @param int $index T_CLASS index - */ - private function isClassCandidate(TokensAnalyzer $tokensAnalyzer, Tokens $tokens, int $index): bool - { - if ($tokensAnalyzer->isAnonymousClass($index)) { - return false; - } - - $modifiers = $tokensAnalyzer->getClassyModifiers($index); - - if (isset($modifiers['final']) || isset($modifiers['abstract'])) { - return false; // ignore class; it is abstract or already final - } - - $decisions = []; - $currentIndex = $index; - - while (null !== $currentIndex) { - $currentIndex = $tokens->getPrevNonWhitespace($currentIndex); - - if (!$tokens[$currentIndex]->isGivenKind(self::CLASS_CANDIDATE_ACCEPT_TYPES)) { - break; - } - - if ($this->checkAttributes && $tokens[$currentIndex]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $attributeStartIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $currentIndex); - $decisions[] = $this->isClassCandidateBasedOnAttribute($tokens, $attributeStartIndex, $currentIndex); - - $currentIndex = $attributeStartIndex; - } - - if ($tokens[$currentIndex]->isGivenKind(\T_DOC_COMMENT)) { - $decisions[] = $this->isClassCandidateBasedOnPhpDoc($tokens, $currentIndex); - } - } - - if (\in_array(false, $decisions, true)) { - return false; - } - - return \in_array(true, $decisions, true) - || ([] === $decisions && true === $this->configuration['consider_absent_docblock_as_internal_class']); - } - - private function isClassCandidateBasedOnPhpDoc(Tokens $tokens, int $index): ?bool - { - $doc = new DocBlock($tokens[$index]->getContent()); - $tags = []; - - foreach ($doc->getAnnotations() as $annotation) { - if (!Preg::match('/@([^\(\s]+)/', $annotation->getContent(), $matches)) { - continue; - } - $tag = strtolower(substr(array_shift($matches), 1)); - - $tags[$tag] = true; - } - - if (\count(array_intersect_key($this->configuration['exclude'], $tags)) > 0) { - return false; - } - - if ($this->isConfiguredAsInclude($tags)) { - return true; - } - - return null; - } - - private function isClassCandidateBasedOnAttribute(Tokens $tokens, int $startIndex, int $endIndex): ?bool - { - $attributeCandidates = []; - $attributeString = ''; - $currentIndex = $startIndex; - - while ($currentIndex < $endIndex && null !== ($currentIndex = $tokens->getNextMeaningfulToken($currentIndex))) { - if (!$tokens[$currentIndex]->isGivenKind([\T_STRING, \T_NS_SEPARATOR])) { - if ('' !== $attributeString) { - $attributeCandidates[$attributeString] = true; - $attributeString = ''; - } - - continue; - } - - $attributeString .= strtolower($tokens[$currentIndex]->getContent()); - } - - if (\count(array_intersect_key($this->configuration['exclude'], $attributeCandidates)) > 0) { - return false; - } - - if ($this->isConfiguredAsInclude($attributeCandidates)) { - return true; - } - - return null; - } - - /** - * @param array $attributes - */ - private function isConfiguredAsInclude(array $attributes): bool - { - if (0 === \count($this->configuration['include'])) { - return true; - } - - return \count(array_intersect_key($this->configuration['include'], $attributes)) > 0; - } - - private function assertConfigHasNoConflicts(): void - { - foreach (['include' => 'annotation_include', 'exclude' => 'annotation_exclude'] as $newConfigKey => $oldConfigKey) { - $defaults = []; - - foreach (self::DEFAULTS[$newConfigKey] as $foo) { - $defaults[strtolower($foo)] = true; - } - - $newConfigIsSet = $this->configuration[$newConfigKey] !== $defaults; - $oldConfigIsSet = $this->configuration[$oldConfigKey] !== $defaults; - - if ($newConfigIsSet && $oldConfigIsSet) { - throw new InvalidFixerConfigurationException($this->getName(), \sprintf('Configuration cannot contain deprecated option "%s" and new option "%s".', $oldConfigKey, $newConfigKey)); - } - - if ($oldConfigIsSet) { - $this->configuration[$newConfigKey] = $this->configuration[$oldConfigKey]; // @phpstan-ignore-line crazy mapping, to be removed while cleaning up deprecated options - $this->checkAttributes = false; // run in old mode - } - - // if ($newConfigIsSet) - only new config is set, all good - // if (!$newConfigIsSet && !$oldConfigIsSet) - both are set as to default values, all good - - unset($this->configuration[$oldConfigKey]); // @phpstan-ignore-line crazy mapping, to be removed while cleaning up deprecated options - } - - $intersect = array_intersect_assoc($this->configuration['include'], $this->configuration['exclude']); - - if (\count($intersect) > 0) { - throw new InvalidFixerConfigurationException($this->getName(), \sprintf('Annotation cannot be used in both "include" and "exclude" list, got duplicates: %s.', Utils::naturalLanguageJoin(array_keys($intersect)))); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php deleted file mode 100644 index 2db3fbe..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php +++ /dev/null @@ -1,164 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FinalPublicMethodForAbstractClassFixer extends AbstractFixer -{ - /** - * @var array - */ - private array $magicMethods = [ - '__construct' => true, - '__destruct' => true, - '__call' => true, - '__callstatic' => true, - '__get' => true, - '__set' => true, - '__isset' => true, - '__unset' => true, - '__sleep' => true, - '__wakeup' => true, - '__tostring' => true, - '__invoke' => true, - '__set_state' => true, - '__clone' => true, - '__debuginfo' => true, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'All `public` methods of `abstract` classes should be `final`.', - [ - new CodeSample( - <<<'PHP' - isAllTokenKindsFound([\T_ABSTRACT, \T_PUBLIC, \T_FUNCTION]); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $abstracts = array_keys($tokens->findGivenKind(\T_ABSTRACT)); - - foreach (array_reverse($abstracts) as $abstractIndex) { - $classIndex = $tokens->getNextTokenOfKind($abstractIndex, [[\T_CLASS], [\T_FUNCTION]]); - if (!$tokens[$classIndex]->isGivenKind(\T_CLASS)) { - continue; - } - - $classOpen = $tokens->getNextTokenOfKind($classIndex, ['{']); - $classClose = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $classOpen); - - $this->fixClass($tokens, $classOpen, $classClose); - } - } - - private function fixClass(Tokens $tokens, int $classOpenIndex, int $classCloseIndex): void - { - for ($index = $classCloseIndex - 1; $index > $classOpenIndex; --$index) { - // skip method contents - if ($tokens[$index]->equals('}')) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - // skip non public methods - if (!$tokens[$index]->isGivenKind(\T_PUBLIC)) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - $nextToken = $tokens[$nextIndex]; - - if ($nextToken->isGivenKind(\T_STATIC)) { - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - $nextToken = $tokens[$nextIndex]; - } - - // skip uses, attributes, constants etc - if (!$nextToken->isGivenKind(\T_FUNCTION)) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - $nextToken = $tokens[$nextIndex]; - - // skip magic methods - if (isset($this->magicMethods[strtolower($nextToken->getContent())])) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $prevToken = $tokens[$prevIndex]; - - if ($prevToken->isGivenKind(\T_STATIC)) { - $index = $prevIndex; - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $prevToken = $tokens[$prevIndex]; - } - - // skip abstract or already final methods - if ($prevToken->isGivenKind([\T_ABSTRACT, \T_FINAL])) { - $index = $prevIndex; - - continue; - } - - $tokens->insertAt( - $index, - [ - new Token([\T_FINAL, 'final']), - new Token([\T_WHITESPACE, ' ']), - ], - ); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModernSerializationMethodsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModernSerializationMethodsFixer.php deleted file mode 100644 index b8e2780..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModernSerializationMethodsFixer.php +++ /dev/null @@ -1,103 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @see https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_sleep_and_wakeup_magic_methods - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ModernSerializationMethodsFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Use new serialization methods `__serialize` and `__unserialize` instead of deprecated ones `__sleep` and `__wakeup`.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_CLASS, \T_FUNCTION]); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $methodsByClass = []; - foreach ((new TokensAnalyzer($tokens))->getClassyElements() as $index => $element) { - if ('method' !== $element['type']) { - continue; - } - - if (!isset($methodsByClass[$element['classIndex']])) { - $methodsByClass[$element['classIndex']] = []; - } - - $functionNameIndex = $tokens->getNextMeaningfulToken($index); - $functionName = $tokens[$functionNameIndex]->getContent(); - - $methodsByClass[$element['classIndex']][$functionName] = $functionNameIndex; - } - - $tokensToInsert = []; - foreach ($methodsByClass as $methods) { - if (isset($methods['__sleep']) && !isset($methods['__serialize'])) { - $tokens[$methods['__sleep']] = new Token([\T_STRING, '__serialize']); - } - - if (isset($methods['__wakeup']) && !isset($methods['__unserialize'])) { - $tokens[$methods['__wakeup']] = new Token([\T_STRING, '__unserialize']); - - $openParenthesisIndex = $tokens->getNextTokenOfKind($methods['__wakeup'], ['(']); - - $tokensToInsert[$openParenthesisIndex + 1] = [ - new Token([CT::T_ARRAY_TYPEHINT, 'array']), - new Token([\T_WHITESPACE, ' ']), - new Token([\T_VARIABLE, '$data']), - ]; - } - } - if ([] !== $tokensToInsert) { - $tokens->insertSlices($tokensToInsert); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModifierKeywordsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModifierKeywordsFixer.php deleted file mode 100644 index 2823d98..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ModifierKeywordsFixer.php +++ /dev/null @@ -1,320 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * Fixer for rules defined in PSR2 ¶4.3, ¶4.5. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * elements?: list<'const'|'method'|'property'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * elements: list<'const'|'method'|'property'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ModifierKeywordsFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const PROPERTY_TYPE_DECLARATION_KINDS = [\T_STRING, \T_NS_SEPARATOR, CT::T_NULLABLE_TYPE, CT::T_ARRAY_TYPEHINT, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE]; - private const EXPECTED_KINDS_GENERIC = [\T_ABSTRACT, \T_FINAL, \T_PRIVATE, \T_PROTECTED, \T_PUBLIC, \T_STATIC, \T_VAR, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET]; - private const EXPECTED_KINDS_PROPERTY_KINDS = [...self::EXPECTED_KINDS_GENERIC, ...self::PROPERTY_TYPE_DECLARATION_KINDS]; - - /** - * @var list<'const'|'method'|'promoted_property'|'property'> - */ - private array $elements = ['const', 'method', 'property']; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Classes, constants, properties, and methods MUST have visibility declared, and keyword modifiers MUST be in the following order:' - .' inheritance modifier (`abstract` or `final`),' - .' visibility modifier (`public`, `protected`, or `private`),' - .' set-visibility modifier (`public(set)`, `protected(set)`, or `private(set)`),' - .' scope modifier (`static`),' - .' mutation modifier (`readonly`),' - .' type declaration, name.', - [ - new CodeSample( - <<<'PHP' - "a"; set; } - - readonly final protected string $foo; - - static protected final int $beep; - - static public final function bar() {} - - protected abstract function zim(); - - function zex() {} - } - - readonly final class ValueObject - { - // ... - } - - PHP, - new VersionSpecification(8_04_00), - ), - new CodeSample( - <<<'PHP' - ['const']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before ClassAttributesSeparationFixer. - */ - public function getPriority(): int - { - return 56; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds()); - } - - /** - * @protected - * - * @TODO 4.0 move visibility from annotation to code when `VisibilityRequiredFixer` is removed - */ - public function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $elements = ['const', 'method', 'property']; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('elements', 'The structural elements to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($elements)]) - ->setDefault($elements) - ->getOption(), - ]); - } - - protected function configurePostNormalisation(): void - { - $this->elements = $this->configuration['elements']; - - if (\in_array('property', $this->elements, true)) { - $this->elements[] = 'promoted_property'; - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - foreach (array_reverse($tokensAnalyzer->getClassyElements(), true) as $index => $element) { - if (!\in_array($element['type'], $this->elements, true)) { - continue; - } - - $abstractFinalIndex = null; - $visibilityIndex = null; - $visibilitySetIndex = null; - $staticIndex = null; - $typeIndex = null; - $readOnlyIndex = null; - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $expectedKinds = 'property' === $element['type'] || 'promoted_property' === $element['type'] - ? self::EXPECTED_KINDS_PROPERTY_KINDS - : self::EXPECTED_KINDS_GENERIC; - - while ($tokens[$prevIndex]->isGivenKind($expectedKinds) || $tokens[$prevIndex]->equals('&')) { - if ($tokens[$prevIndex]->isGivenKind([\T_ABSTRACT, \T_FINAL])) { - $abstractFinalIndex = $prevIndex; - } elseif ($tokens[$prevIndex]->isGivenKind(\T_STATIC)) { - $staticIndex = $prevIndex; - } elseif ($tokens[$prevIndex]->isGivenKind(FCT::T_READONLY)) { - $readOnlyIndex = $prevIndex; - } elseif ($tokens[$prevIndex]->isGivenKind([FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET])) { - $visibilitySetIndex = $prevIndex; - } elseif ($tokens[$prevIndex]->isGivenKind(self::PROPERTY_TYPE_DECLARATION_KINDS)) { - $typeIndex = $prevIndex; - } elseif (!$tokens[$prevIndex]->equals('&')) { - $visibilityIndex = $prevIndex; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - } - - if (null !== $typeIndex) { - $index = $typeIndex; - } - - if ('property' === $element['type'] && $tokens[$prevIndex]->equals(',')) { - continue; - } - - $swapIndex = $staticIndex ?? $readOnlyIndex; // "static" property cannot be "readonly", so there can always be at most one swap - - if (null !== $swapIndex) { - if ($this->isKeywordPlacedProperly($tokens, $swapIndex, $index)) { - $index = $swapIndex; - } else { - $this->moveTokenAndEnsureSingleSpaceFollows($tokens, $swapIndex, $index); - } - } - - if (null !== $visibilitySetIndex) { - if ($this->isKeywordPlacedProperly($tokens, $visibilitySetIndex, $index)) { - $index = $visibilitySetIndex; - } else { - $this->moveTokenAndEnsureSingleSpaceFollows($tokens, $visibilitySetIndex, $index); - } - } - - if (null === $visibilityIndex) { - $tokens->insertAt($index, [new Token(['promoted_property' === $element['type'] ? CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC : \T_PUBLIC, 'public']), new Token([\T_WHITESPACE, ' '])]); - } else { - if ($tokens[$visibilityIndex]->isGivenKind(\T_VAR)) { - $tokens[$visibilityIndex] = new Token([\T_PUBLIC, 'public']); - } - if ($this->isKeywordPlacedProperly($tokens, $visibilityIndex, $index)) { - $index = $visibilityIndex; - } else { - $this->moveTokenAndEnsureSingleSpaceFollows($tokens, $visibilityIndex, $index); - } - } - - if (null === $abstractFinalIndex) { - continue; - } - - if ($this->isKeywordPlacedProperly($tokens, $abstractFinalIndex, $index)) { - continue; - } - - $this->moveTokenAndEnsureSingleSpaceFollows($tokens, $abstractFinalIndex, $index); - } - } - - private function isKeywordPlacedProperly(Tokens $tokens, int $keywordIndex, int $comparedIndex): bool - { - return ' ' === $tokens[$keywordIndex + 1]->getContent() - && ( - $keywordIndex + 2 === $comparedIndex - || $keywordIndex + 3 === $comparedIndex && $tokens[$keywordIndex + 2]->equals('&') - ); - } - - private function moveTokenAndEnsureSingleSpaceFollows(Tokens $tokens, int $fromIndex, int $toIndex): void - { - $tokens->insertAt($toIndex, [$tokens[$fromIndex], new Token([\T_WHITESPACE, ' '])]); - $tokens->clearAt($fromIndex); - - if ($tokens[$fromIndex + 1]->isWhitespace()) { - $tokens->clearAt($fromIndex + 1); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php deleted file mode 100644 index 07d23d2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php +++ /dev/null @@ -1,97 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Ceeram - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoBlankLinesAfterClassOpeningFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds()); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should be no empty lines after class opening brace.', - [ - new CodeSample( - <<<'PHP' - $token) { - if (!$token->isClassy()) { - continue; - } - - $startBraceIndex = $tokens->getNextTokenOfKind($index, ['{']); - if (!$tokens[$startBraceIndex + 1]->isWhitespace()) { - continue; - } - - $this->fixWhitespace($tokens, $startBraceIndex + 1); - } - } - - /** - * Cleanup a whitespace token. - */ - private function fixWhitespace(Tokens $tokens, int $index): void - { - $content = $tokens[$index]->getContent(); - // if there is more than one new line in the whitespace, then we need to fix it - if (substr_count($content, "\n") > 1) { - // the final bit of the whitespace must be the next statement's indentation - $tokens[$index] = new Token([\T_WHITESPACE, $this->whitespacesConfig->getLineEnding().substr($content, (int) strrpos($content, "\n") + 1)]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php deleted file mode 100644 index 9d8eb1e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php +++ /dev/null @@ -1,151 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author ntzm - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoNullPropertyInitializationFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Properties MUST not be explicitly initialised with `null` except when they have a type declaration (PHP 7.4).', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_CLASS, \T_TRAIT]) && $tokens->isAnyTokenKindsFound([\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_VAR, \T_STATIC]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $inClass = []; - $classLevel = 0; - - for ($index = 0, $count = $tokens->count(); $index < $count; ++$index) { - if ($tokens[$index]->isGivenKind([\T_CLASS, \T_TRAIT])) { // Enums and interfaces do not have properties - ++$classLevel; - $inClass[$classLevel] = 1; - - $index = $tokens->getNextTokenOfKind($index, ['{']); - - continue; - } - - if (0 === $classLevel) { - continue; - } - - \assert(isset($inClass[$classLevel])); - - if ($tokens[$index]->equals('{')) { - ++$inClass[$classLevel]; - - continue; - } - - if ($tokens[$index]->equals('}')) { - --$inClass[$classLevel]; - - if (0 === $inClass[$classLevel]) { - unset($inClass[$classLevel]); - --$classLevel; - } - - continue; - } - - // Ensure we are in a class but not in a method in case there are static variables defined - if (1 !== $inClass[$classLevel]) { - continue; - } - - if (!$tokens[$index]->isGivenKind([\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_VAR, \T_STATIC])) { - continue; - } - - while (true) { - $varTokenIndex = $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind(\T_STATIC)) { - $varTokenIndex = $index = $tokens->getNextMeaningfulToken($index); - } - - if (!$tokens[$index]->isGivenKind(\T_VARIABLE)) { - break; - } - - $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->equals('=')) { - $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind(\T_NS_SEPARATOR)) { - $index = $tokens->getNextMeaningfulToken($index); - } - - if ($tokens[$index]->equals([\T_STRING, 'null'], false)) { - for ($i = $varTokenIndex + 1; $i <= $index; ++$i) { - if ( - !($tokens[$i]->isWhitespace() && str_contains($tokens[$i]->getContent(), "\n")) - && !$tokens[$i]->isComment() - ) { - $tokens->clearAt($i); - } - } - } - - ++$index; - } - - if (!$tokens[$index]->equals(',')) { - break; - } - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php deleted file mode 100644 index d483933..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php +++ /dev/null @@ -1,422 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-import-type _PhpTokenPrototypePartial from Token - * - * @author Matteo Beccati - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoPhp4ConstructorFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Convert PHP4-style constructors to `__construct`.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_CLASS); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $classes = array_keys($tokens->findGivenKind(\T_CLASS)); - $numClasses = \count($classes); - - for ($i = 0; $i < $numClasses; ++$i) { - \assert(isset($classes[$i])); - $index = $classes[$i]; - - // is it an anonymous class definition? - if ($tokensAnalyzer->isAnonymousClass($index)) { - continue; - } - - // is it inside a namespace? - $nspIndex = $tokens->getPrevTokenOfKind($index, [[\T_NAMESPACE, 'namespace']]); - - if (null !== $nspIndex) { - $nspIndex = $tokens->getNextMeaningfulToken($nspIndex); - - // make sure it's not the global namespace, as PHP4 constructors are allowed in there - if (!$tokens[$nspIndex]->equals('{')) { - // unless it's the global namespace, the index currently points to the name - $nspIndex = $tokens->getNextTokenOfKind($nspIndex, [';', '{']); - - if ($tokens[$nspIndex]->equals(';')) { - // the class is inside a (non-block) namespace, no PHP4-code should be in there - break; - } - - // the index points to the { of a block-namespace - $nspEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $nspIndex); - - if ($index < $nspEnd) { - // the class is inside a block namespace, skip other classes that might be in it - for ($j = $i + 1; $j < $numClasses; ++$j) { - \assert(isset($classes[$j])); - if ($classes[$j] < $nspEnd) { - ++$i; - } - } - - // and continue checking the classes that might follow - continue; - } - } - } - - $classNameIndex = $tokens->getNextMeaningfulToken($index); - $className = $tokens[$classNameIndex]->getContent(); - $classStart = $tokens->getNextTokenOfKind($classNameIndex, ['{']); - $classEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $classStart); - - $this->fixConstructor($tokens, $className, $classStart, $classEnd); - $this->fixParent($tokens, $classStart, $classEnd); - } - } - - /** - * Fix constructor within a class, if possible. - * - * @param Tokens $tokens the Tokens instance - * @param string $className the class name - * @param int $classStart the class start index - * @param int $classEnd the class end index - */ - private function fixConstructor(Tokens $tokens, string $className, int $classStart, int $classEnd): void - { - $php4 = $this->findFunction($tokens, $className, $classStart, $classEnd); - - if (null === $php4) { - return; // no PHP4-constructor! - } - - if (isset($php4['modifiers'][\T_ABSTRACT]) || isset($php4['modifiers'][\T_STATIC])) { - return; // PHP4 constructor can't be abstract or static - } - - $php5 = $this->findFunction($tokens, '__construct', $classStart, $classEnd); - - if (null === $php5) { - // no PHP5-constructor, we can rename the old one to __construct - $tokens[$php4['nameIndex']] = new Token([\T_STRING, '__construct']); - - // in some (rare) cases we might have just created an infinite recursion issue - $this->fixInfiniteRecursion($tokens, $php4['bodyIndex'], $php4['endIndex']); - - return; - } - - // does the PHP4-constructor only call $this->__construct($args, ...)? - [$sequences, $case] = $this->getWrapperMethodSequence($tokens, '__construct', $php4['startIndex'], $php4['bodyIndex']); - - foreach ($sequences as $seq) { - if (null !== $tokens->findSequence($seq, $php4['bodyIndex'] - 1, $php4['endIndex'], $case)) { - // good, delete it! - for ($i = $php4['startIndex']; $i <= $php4['endIndex']; ++$i) { - $tokens->clearAt($i); - } - - return; - } - } - - // does __construct only call the PHP4-constructor (with the same args)? - [$sequences, $case] = $this->getWrapperMethodSequence($tokens, $className, $php4['startIndex'], $php4['bodyIndex']); - - foreach ($sequences as $seq) { - if (null !== $tokens->findSequence($seq, $php5['bodyIndex'] - 1, $php5['endIndex'], $case)) { - // that was a weird choice, but we can safely delete it and... - for ($i = $php5['startIndex']; $i <= $php5['endIndex']; ++$i) { - $tokens->clearAt($i); - } - - // rename the PHP4 one to __construct - $tokens[$php4['nameIndex']] = new Token([\T_STRING, '__construct']); - - return; - } - } - } - - /** - * Fix calls to the parent constructor within a class. - * - * @param Tokens $tokens the Tokens instance - * @param int $classStart the class start index - * @param int $classEnd the class end index - */ - private function fixParent(Tokens $tokens, int $classStart, int $classEnd): void - { - // check calls to the parent constructor - foreach ($tokens->findGivenKind(\T_EXTENDS) as $index => $token) { - $parentIndex = $tokens->getNextMeaningfulToken($index); - $parentClass = $tokens[$parentIndex]->getContent(); - - // using parent::ParentClassName() or ParentClassName::ParentClassName() - $parentSeq = $tokens->findSequence([ - [\T_STRING], - [\T_DOUBLE_COLON], - [\T_STRING, $parentClass], - '(', - ], $classStart, $classEnd, [2 => false]); - - if (null !== $parentSeq) { - // we only need indices - $parentSeq = array_keys($parentSeq); - \assert(isset($parentSeq[2])); - - // match either of the possibilities - if ($tokens[$parentSeq[0]]->equalsAny([[\T_STRING, 'parent'], [\T_STRING, $parentClass]], false)) { - // replace with parent::__construct - $tokens[$parentSeq[0]] = new Token([\T_STRING, 'parent']); - $tokens[$parentSeq[2]] = new Token([\T_STRING, '__construct']); - } - } - - foreach (Token::getObjectOperatorKinds() as $objectOperatorKind) { - // using $this->ParentClassName() - $parentSeq = $tokens->findSequence([ - [\T_VARIABLE, '$this'], - [$objectOperatorKind], - [\T_STRING, $parentClass], - '(', - ], $classStart, $classEnd, [2 => false]); - - if (null !== $parentSeq) { - // we only need indices - $parentSeq = array_keys($parentSeq); - \assert(isset($parentSeq[1], $parentSeq[2])); - - // replace call with parent::__construct() - $tokens[$parentSeq[0]] = new Token([ - \T_STRING, - 'parent', - ]); - $tokens[$parentSeq[1]] = new Token([ - \T_DOUBLE_COLON, - '::', - ]); - $tokens[$parentSeq[2]] = new Token([\T_STRING, '__construct']); - } - } - } - } - - /** - * Fix a particular infinite recursion issue happening when the parent class has __construct and the child has only - * a PHP4 constructor that calls the parent constructor as $this->__construct(). - * - * @param Tokens $tokens the Tokens instance - * @param int $start the PHP4 constructor body start - * @param int $end the PHP4 constructor body end - */ - private function fixInfiniteRecursion(Tokens $tokens, int $start, int $end): void - { - foreach (Token::getObjectOperatorKinds() as $objectOperatorKind) { - $seq = [ - [\T_VARIABLE, '$this'], - [$objectOperatorKind], - [\T_STRING, '__construct'], - ]; - - while (true) { - $callSeq = $tokens->findSequence($seq, $start, $end, [2 => false]); - - if (null === $callSeq) { - return; - } - - $callSeq = array_keys($callSeq); - \assert(isset($callSeq[1])); - - $tokens[$callSeq[0]] = new Token([\T_STRING, 'parent']); - $tokens[$callSeq[1]] = new Token([\T_DOUBLE_COLON, '::']); - } - } - } - - /** - * Generate the sequence of tokens necessary for the body of a wrapper method that simply - * calls $this->{$method}( [args...] ) with the same arguments as its own signature. - * - * @param Tokens $tokens the Tokens instance - * @param string $method the wrapped method name - * @param int $startIndex function/method start index - * @param int $bodyIndex function/method body index - * - * @return array{non-empty-list>, array{3: false}} - */ - private function getWrapperMethodSequence(Tokens $tokens, string $method, int $startIndex, int $bodyIndex): array - { - $sequences = []; - - foreach (Token::getObjectOperatorKinds() as $objectOperatorKind) { - // initialise sequence as { $this->{$method}( - $seq = [ - '{', - [\T_VARIABLE, '$this'], - [$objectOperatorKind], - [\T_STRING, $method], - '(', - ]; - - // parse method parameters, if any - $index = $startIndex; - - while (true) { - // find the next variable name - $index = $tokens->getNextTokenOfKind($index, [[\T_VARIABLE]]); - - if (null === $index || $index >= $bodyIndex) { - // we've reached the body already - break; - } - - // append a comma if it's not the first variable - if (\count($seq) > 5) { - $seq[] = ','; - } - - // append variable name to the sequence - $seq[] = [\T_VARIABLE, $tokens[$index]->getContent()]; - } - - // almost done, close the sequence with ); } - $seq[] = ')'; - $seq[] = ';'; - $seq[] = '}'; - - $sequences[] = $seq; - } - - return [$sequences, [3 => false]]; - } - - /** - * Find a function or method matching a given name within certain bounds. - * - * Returns: - * - nameIndex (int): The index of the function/method name. - * - startIndex (int): The index of the function/method start. - * - endIndex (int): The index of the function/method end. - * - bodyIndex (int): The index of the function/method body. - * - modifiers (array): The modifiers as array keys and their index as the values, e.g. array(T_PUBLIC => 10) - * - * @param Tokens $tokens the Tokens instance - * @param string $name the function/Method name - * @param int $startIndex the search start index - * @param int $endIndex the search end index - * - * @return null|array{ - * nameIndex: int, - * startIndex: int, - * endIndex: int, - * bodyIndex: int, - * modifiers: list, - * } - */ - private function findFunction(Tokens $tokens, string $name, int $startIndex, int $endIndex): ?array - { - $function = $tokens->findSequence([ - [\T_FUNCTION], - [\T_STRING, $name], - '(', - ], $startIndex, $endIndex, false); - - if (null === $function) { - return null; - } - - // keep only the indices - $function = array_keys($function); - \assert(isset($function[1], $function[2])); - - // find previous block, saving method modifiers for later use - $possibleModifiers = [\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_STATIC, \T_ABSTRACT, \T_FINAL]; - $modifiers = []; - - $prevBlock = $tokens->getPrevMeaningfulToken($function[0]); - - while (null !== $prevBlock && $tokens[$prevBlock]->isGivenKind($possibleModifiers)) { - $modifiers[$tokens[$prevBlock]->getId()] = $prevBlock; - $prevBlock = $tokens->getPrevMeaningfulToken($prevBlock); - } - - if (isset($modifiers[\T_ABSTRACT])) { - // abstract methods have no body - $bodyStart = null; - $funcEnd = $tokens->getNextTokenOfKind($function[2], [';']); - } else { - // find method body start and the end of the function definition - $bodyStart = $tokens->getNextTokenOfKind($function[2], ['{']); - $funcEnd = null !== $bodyStart ? $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $bodyStart) : null; - } - - return [ - 'nameIndex' => $function[1], - 'startIndex' => $prevBlock + 1, - 'endIndex' => $funcEnd, - 'bodyIndex' => $bodyStart, - 'modifiers' => $modifiers, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoRedundantReadonlyPropertyFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoRedundantReadonlyPropertyFixer.php deleted file mode 100644 index e57e280..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoRedundantReadonlyPropertyFixer.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * Removes redundant readonly from properties in readonly classes. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoRedundantReadonlyPropertyFixer extends AbstractFixer -{ - private const PROPERTY_TYPE_DECLARATION_KINDS = [\T_STRING, \T_NS_SEPARATOR, CT::T_NULLABLE_TYPE, CT::T_ARRAY_TYPEHINT, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE]; - private const EXPECTED_KINDS_GENERIC = [\T_ABSTRACT, \T_FINAL, \T_PRIVATE, \T_PROTECTED, \T_PUBLIC, \T_STATIC, \T_VAR, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET]; - private const EXPECTED_KINDS_PROPERTY_KINDS = [...self::EXPECTED_KINDS_GENERIC, ...self::PROPERTY_TYPE_DECLARATION_KINDS]; - - /** - * {@inheritdoc} - * - * Must run after PhpdocReadonlyClassCommentToKeywordFixer. - */ - public function getPriority(): int - { - return 3; - } - - public function isCandidate(Tokens $tokens): bool - { - return \PHP_VERSION_ID >= 8_02_00 && $tokens->isAnyTokenKindsFound([\T_CLASS]); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes redundant readonly from properties in readonly classes.', - [ - new VersionSpecificCodeSample( - <<<'PHP' - getClassyElements() as $index => $element) { - if (!\in_array($element['type'], ['property', 'promoted_property'], true)) { - continue; - } - - $modifiers = $tokensAnalyzer->getClassyModifiers($element['classIndex']); - if (null === $modifiers['readonly']) { - continue; - } - - $readOnlyIndex = null; - $prevIndex = $tokens->getPrevMeaningfulToken($index); - while ($tokens[$prevIndex]->isGivenKind(self::EXPECTED_KINDS_PROPERTY_KINDS) || $tokens[$prevIndex]->equals('&')) { - if ($tokens[$prevIndex]->isGivenKind(FCT::T_READONLY)) { - $readOnlyIndex = $prevIndex; - - break; - } - $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - } - - if (null !== $readOnlyIndex) { - $tokens->removeTrailingWhitespace($readOnlyIndex); - $tokens->clearAt($readOnlyIndex); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php deleted file mode 100644 index 2f54da1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php +++ /dev/null @@ -1,218 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * private_methods?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * private_methods: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUnneededFinalMethodFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes `final` from methods where possible.', - [ - new CodeSample( - <<<'PHP' - false], - ), - ], - null, - 'Risky when child class overrides a `private` method.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - if (!$tokens->isAllTokenKindsFound([\T_FINAL, \T_FUNCTION])) { - return false; - } - - return $tokens->isAnyTokenKindsFound([\T_CLASS, FCT::T_ENUM]); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($this->getMethods($tokens) as $element) { - $index = $element['method_final_index']; - - if ($element['method_of_enum'] || $element['class_is_final']) { - $this->clearFinal($tokens, $index); - - continue; - } - - if (!$element['method_is_private'] || false === $this->configuration['private_methods'] || $element['method_is_constructor']) { - continue; - } - - $this->clearFinal($tokens, $index); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('private_methods', 'Private methods of non-`final` classes must not be declared `final`.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - /** - * @return iterable - */ - private function getMethods(Tokens $tokens): iterable - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $modifierKinds = [\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_FINAL, \T_ABSTRACT, \T_STATIC]; - - $enums = []; - $classesAreFinal = []; - - foreach ($tokensAnalyzer->getClassyElements() as $index => $element) { - if ('method' !== $element['type']) { - continue; // not a method - } - - $classIndex = $element['classIndex']; - - if (!\array_key_exists($classIndex, $enums)) { - $enums[$classIndex] = $tokens[$classIndex]->isGivenKind(FCT::T_ENUM); - } - - $element['method_final_index'] = null; - $element['method_is_private'] = false; - - $previous = $index; - - do { - $previous = $tokens->getPrevMeaningfulToken($previous); - - if ($tokens[$previous]->isGivenKind(\T_PRIVATE)) { - $element['method_is_private'] = true; - } elseif ($tokens[$previous]->isGivenKind(\T_FINAL)) { - $element['method_final_index'] = $previous; - } - } while ($tokens[$previous]->isGivenKind($modifierKinds)); - - if ($enums[$classIndex]) { - $element['method_of_enum'] = true; - - yield $element; - - continue; - } - - if (!\array_key_exists($classIndex, $classesAreFinal)) { - $modifiers = $tokensAnalyzer->getClassyModifiers($classIndex); - $classesAreFinal[$classIndex] = isset($modifiers['final']); - } - - $element['method_of_enum'] = false; - $element['class_is_final'] = $classesAreFinal[$classIndex]; - $element['method_is_constructor'] = '__construct' === strtolower($tokens[$tokens->getNextMeaningfulToken($index)]->getContent()); - - yield $element; - } - } - - private function clearFinal(Tokens $tokens, ?int $index): void - { - if (null === $index) { - return; - } - - $tokens->clearAt($index); - - ++$index; - - if ($tokens[$index]->isWhitespace()) { - $tokens->clearAt($index); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php deleted file mode 100644 index f9ade24..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php +++ /dev/null @@ -1,635 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Utils; - -/** - * @phpstan-type _ClassElement array{ - * start: int, - * visibility: string, - * abstract: bool, - * static: bool, - * readonly: bool, - * type: string, - * name: string, - * end: int, - * } - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case_sensitive?: bool, - * order?: list, - * sort_algorithm?: 'alpha'|'none', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case_sensitive: bool, - * order: list, - * sort_algorithm: 'alpha'|'none', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class OrderedClassElementsFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** @internal */ - public const SORT_ALPHA = 'alpha'; - - /** @internal */ - public const SORT_NONE = 'none'; - - private const SUPPORTED_SORT_ALGORITHMS = [ - self::SORT_NONE, - self::SORT_ALPHA, - ]; - - /** - * @var array> Array containing all class element base types (keys) and their parent types (values) - */ - private const TYPE_HIERARCHY = [ - 'use_trait' => null, - 'public' => null, - 'protected' => null, - 'private' => null, - 'case' => ['public'], - 'constant' => null, - 'constant_public' => ['constant', 'public'], - 'constant_protected' => ['constant', 'protected'], - 'constant_private' => ['constant', 'private'], - 'property' => null, - 'property_static' => ['property'], - 'property_public' => ['property', 'public'], - 'property_protected' => ['property', 'protected'], - 'property_private' => ['property', 'private'], - 'property_public_abstract' => ['property_abstract', 'property_public'], - 'property_public_readonly' => ['property_readonly', 'property_public'], - 'property_protected_abstract' => ['property_abstract', 'property_protected'], - 'property_protected_readonly' => ['property_readonly', 'property_protected'], - 'property_private_readonly' => ['property_readonly', 'property_private'], - 'property_public_static' => ['property_static', 'property_public'], - 'property_protected_static' => ['property_static', 'property_protected'], - 'property_private_static' => ['property_static', 'property_private'], - 'method' => null, - 'method_abstract' => ['method'], - 'method_static' => ['method'], - 'method_public' => ['method', 'public'], - 'method_protected' => ['method', 'protected'], - 'method_private' => ['method', 'private'], - 'method_public_abstract' => ['method_abstract', 'method_public'], - 'method_protected_abstract' => ['method_abstract', 'method_protected'], - 'method_private_abstract' => ['method_abstract', 'method_private'], - 'method_public_abstract_static' => ['method_abstract', 'method_static', 'method_public'], - 'method_protected_abstract_static' => ['method_abstract', 'method_static', 'method_protected'], - 'method_private_abstract_static' => ['method_abstract', 'method_static', 'method_private'], - 'method_public_static' => ['method_static', 'method_public'], - 'method_protected_static' => ['method_static', 'method_protected'], - 'method_private_static' => ['method_static', 'method_private'], - ]; - - /** - * @var array Array containing special method types - */ - private const SPECIAL_TYPES = [ - 'construct' => null, - 'destruct' => null, - 'magic' => null, - 'phpunit' => null, - ]; - - /** - * @var array Resolved configuration array (type => position) - */ - private array $typePosition; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds()); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Orders the elements of classes/interfaces/traits/enums.', - [ - new CodeSample( - <<<'PHP' - ['method_private', 'method_public']], - ), - new CodeSample( - <<<'PHP' - ['method_public'], 'sort_algorithm' => self::SORT_ALPHA], - ), - new CodeSample( - <<<'PHP' - ['method_public'], 'sort_algorithm' => self::SORT_ALPHA, 'case_sensitive' => true], - ), - ], - 'Accepts a subset of pre-defined element types, special element groups, and custom patterns. - -Element types: `[\''.implode('\', \'', array_keys(self::TYPE_HIERARCHY)).'\']` - -Special element types: `[\''.implode('\', \'', array_keys(self::SPECIAL_TYPES)).'\']` - -Custom values: - -- `method:*`: specify a single method name (e.g. `method:__invoke`) to set the order of that specific method.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before ClassAttributesSeparationFixer, NoBlankLinesAfterClassOpeningFixer, PhpUnitDataProviderMethodOrderFixer, SpaceAfterSemicolonFixer. - * Must run after NoPhp4ConstructorFixer, ProtectedToPrivateFixer. - */ - public function getPriority(): int - { - return 65; - } - - protected function configurePostNormalisation(): void - { - $this->typePosition = []; - $position = 0; - - foreach ($this->configuration['order'] as $type) { - $this->typePosition[$type] = $position++; - } - - foreach (self::TYPE_HIERARCHY as $type => $parents) { - if (isset($this->typePosition[$type])) { - continue; - } - - if (null === $parents) { - $this->typePosition[$type] = null; - - continue; - } - - foreach ($parents as $parent) { - if (isset($this->typePosition[$parent])) { - $this->typePosition[$type] = $this->typePosition[$parent]; - - continue 2; - } - } - - $this->typePosition[$type] = null; - } - - $lastPosition = \count($this->configuration['order']); - - foreach ($this->typePosition as &$pos) { - if (null === $pos) { - $pos = $lastPosition; - } - - $pos *= 10; // last digit is used by phpunit method ordering - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($i = 1, $count = $tokens->count(); $i < $count; ++$i) { - if (!$tokens[$i]->isClassy()) { - continue; - } - - $i = $tokens->getNextTokenOfKind($i, ['{']); - $elements = $this->getElements($tokens, $i); - - if (0 === \count($elements)) { - continue; - } - - $endIndex = $elements[array_key_last($elements)]['end']; - - $sorted = $this->sortElements($elements); - - if ($sorted !== $elements) { - $this->sortTokens($tokens, $i, $endIndex, $sorted); - } - - $i = $endIndex; - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $builtIns = array_keys(array_merge(self::TYPE_HIERARCHY, self::SPECIAL_TYPES)); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('order', 'List of strings defining order of elements.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([ - static function (array $values) use ($builtIns): bool { - foreach ($values as $value) { - if (\in_array($value, $builtIns, true)) { - return true; - } - - if ('method:' === substr($value, 0, 7)) { - return true; - } - } - - return false; - }, - ]) - ->setDefault([ - 'use_trait', - 'case', - 'constant_public', - 'constant_protected', - 'constant_private', - 'property_public', - 'property_protected', - 'property_private', - 'construct', - 'destruct', - 'magic', - 'phpunit', - 'method_public', - 'method_protected', - 'method_private', - ]) - ->getOption(), - (new FixerOptionBuilder('sort_algorithm', 'How multiple occurrences of same type statements should be sorted.')) - ->setAllowedValues(self::SUPPORTED_SORT_ALGORITHMS) - ->setDefault(self::SORT_NONE) - ->getOption(), - (new FixerOptionBuilder('case_sensitive', 'Whether the sorting should be case sensitive.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - /** - * @return list<_ClassElement> - */ - private function getElements(Tokens $tokens, int $startIndex): array - { - ++$startIndex; - $elements = []; - - while (true) { - $element = [ - 'start' => $startIndex, - 'visibility' => 'public', - 'abstract' => false, - 'static' => false, - 'readonly' => false, - ]; - - for ($i = $startIndex;; ++$i) { - $token = $tokens[$i]; - - if ($token->isGivenKind(FCT::T_ATTRIBUTE)) { - $i = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $i); - - continue; - } - - // class end - if ($token->equals('}')) { - return $elements; - } - - if ($token->isGivenKind(\T_ABSTRACT)) { - $element['abstract'] = true; - - continue; - } - - if ($token->isGivenKind(\T_STATIC)) { - $element['static'] = true; - - continue; - } - - if ($token->isGivenKind(FCT::T_READONLY)) { - $element['readonly'] = true; - } - - if ($token->isGivenKind([\T_PROTECTED, \T_PRIVATE])) { - $element['visibility'] = strtolower($token->getContent()); - - continue; - } - - if (!$token->isGivenKind([CT::T_USE_TRAIT, \T_CASE, \T_CONST, \T_VARIABLE, \T_FUNCTION])) { - continue; - } - - $type = $this->detectElementType($tokens, $i); - - if (\is_array($type)) { - $element['type'] = $type[0]; - $element['name'] = $type[1]; - } else { - $element['type'] = $type; - } - - if ('property' === $element['type']) { - $element['name'] = $tokens[$i]->getContent(); - } elseif ('constant' === $element['type']) { - $equalsSignIndex = $tokens->getNextTokenOfKind($i, ['=']); - $element['name'] = $tokens[$tokens->getPrevMeaningfulToken($equalsSignIndex)]->getContent(); - } elseif (\in_array($element['type'], ['use_trait', 'case', 'method', 'magic', 'construct', 'destruct'], true)) { - $element['name'] = $tokens[$tokens->getNextMeaningfulToken($i)]->getContent(); - } - - $element['end'] = $this->findElementEnd($tokens, $i); - - break; - } - - $elements[] = $element; - $startIndex = $element['end'] + 1; - } - } - - /** - * @return list{string, string}|string type or array of type and name - */ - private function detectElementType(Tokens $tokens, int $index) - { - $token = $tokens[$index]; - - if ($token->isGivenKind(CT::T_USE_TRAIT)) { - return 'use_trait'; - } - - if ($token->isGivenKind(\T_CASE)) { - return 'case'; - } - - if ($token->isGivenKind(\T_CONST)) { - return 'constant'; - } - - if ($token->isGivenKind(\T_VARIABLE)) { - return 'property'; - } - - $nameToken = $tokens[$tokens->getNextMeaningfulToken($index)]; - - if ($nameToken->equals([\T_STRING, '__construct'], false)) { - return 'construct'; - } - - if ($nameToken->equals([\T_STRING, '__destruct'], false)) { - return 'destruct'; - } - - if ( - $nameToken->equalsAny([ - [\T_STRING, 'setUpBeforeClass'], - [\T_STRING, 'doSetUpBeforeClass'], - [\T_STRING, 'tearDownAfterClass'], - [\T_STRING, 'doTearDownAfterClass'], - [\T_STRING, 'setUp'], - [\T_STRING, 'doSetUp'], - [\T_STRING, 'assertPreConditions'], - [\T_STRING, 'assertPostConditions'], - [\T_STRING, 'tearDown'], - [\T_STRING, 'doTearDown'], - ], false) - ) { - return ['phpunit', strtolower($nameToken->getContent())]; - } - - return str_starts_with($nameToken->getContent(), '__') ? 'magic' : 'method'; - } - - private function findElementEnd(Tokens $tokens, int $index): int - { - $index = $tokens->getNextTokenOfKind($index, ['(', '{', ';', [CT::T_PROPERTY_HOOK_BRACE_OPEN]]); - - if ($tokens[$index]->equals('(')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $index = $tokens->getNextTokenOfKind($index, ['{', ';']); - } - - if ($tokens[$index]->equals('{')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - } - - if ($tokens[$index]->isGivenKind(CT::T_PROPERTY_HOOK_BRACE_OPEN)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PROPERTY_HOOK, $index); - } - - for (++$index; $tokens[$index]->isWhitespace(" \t") || $tokens[$index]->isComment(); ++$index); - - --$index; - - return $tokens[$index]->isWhitespace() ? $index - 1 : $index; - } - - /** - * @param list<_ClassElement> $elements - * - * @return list<_ClassElement> - */ - private function sortElements(array $elements): array - { - return Utils::stableSort( - $elements, - /** - * @return array{element: _ClassElement, position: int} - */ - fn (array $element): array => ['element' => $element, 'position' => $this->getTypePosition($element)], - /** - * @param array{element: _ClassElement, position: int} $a - * @param array{element: _ClassElement, position: int} $b - * - * @return -1|0|1 - */ - fn (array $a, array $b): int => ($a['position'] === $b['position']) ? $this->sortGroupElements($a['element'], $b['element']) : $a['position'] <=> $b['position'], - ); - } - - /** - * @param _ClassElement $element - */ - private function getTypePosition(array $element): int - { - $type = $element['type']; - - if (\in_array($type, ['method', 'magic', 'phpunit'], true) && isset($this->typePosition["method:{$element['name']}"])) { - return $this->typePosition["method:{$element['name']}"]; - } - - if (\array_key_exists($type, self::SPECIAL_TYPES)) { - if (isset($this->typePosition[$type])) { - $position = $this->typePosition[$type]; - - if ('phpunit' === $type) { - \assert(\in_array($element['name'], ['setupbeforeclass', 'dosetupbeforeclass', 'teardownafterclass', 'doteardownafterclass', 'setup', 'dosetup', 'assertpreconditions', 'assertpostconditions', 'teardown', 'doteardown'], true)); - $position += [ - 'setupbeforeclass' => 1, - 'dosetupbeforeclass' => 2, - 'teardownafterclass' => 3, - 'doteardownafterclass' => 4, - 'setup' => 5, - 'dosetup' => 6, - 'assertpreconditions' => 7, - 'assertpostconditions' => 8, - 'teardown' => 9, - 'doteardown' => 10, - ][$element['name']]; - } - - return $position; - } - - $type = 'method'; - } - - if (\in_array($type, ['constant', 'property', 'method'], true)) { - $type .= '_'.$element['visibility']; - - if ($element['abstract']) { - $type .= '_abstract'; - } - - if ($element['static']) { - $type .= '_static'; - } - - if ($element['readonly']) { - $type .= '_readonly'; - } - } - - \assert(isset($this->typePosition[$type])); - - return $this->typePosition[$type]; - } - - /** - * @param _ClassElement $a - * @param _ClassElement $b - */ - private function sortGroupElements(array $a, array $b): int - { - if (self::SORT_ALPHA === $this->configuration['sort_algorithm']) { - return true === $this->configuration['case_sensitive'] - ? $a['name'] <=> $b['name'] - : strcasecmp($a['name'], $b['name']); - } - - return $a['start'] <=> $b['start']; - } - - /** - * @param list<_ClassElement> $elements - */ - private function sortTokens(Tokens $tokens, int $startIndex, int $endIndex, array $elements): void - { - $replaceTokens = []; - - foreach ($elements as $element) { - for ($i = $element['start']; $i <= $element['end']; ++$i) { - $replaceTokens[] = clone $tokens[$i]; - } - } - - $tokens->overrideRange($startIndex + 1, $endIndex, $replaceTokens); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php deleted file mode 100644 index 00712cb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php +++ /dev/null @@ -1,275 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case_sensitive?: bool, - * direction?: 'ascend'|'descend', - * order?: 'alpha'|'length', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case_sensitive: bool, - * direction: 'ascend'|'descend', - * order: 'alpha'|'length', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dave van der Brugge - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class OrderedInterfacesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** @internal */ - public const OPTION_DIRECTION = 'direction'; - - /** @internal */ - public const OPTION_ORDER = 'order'; - - /** @internal */ - public const DIRECTION_ASCEND = 'ascend'; - - /** @internal */ - public const DIRECTION_DESCEND = 'descend'; - - /** @internal */ - public const ORDER_ALPHA = 'alpha'; - - /** @internal */ - public const ORDER_LENGTH = 'length'; - - /** - * Array of supported directions in configuration. - * - * @var non-empty-list - */ - private const SUPPORTED_DIRECTION_OPTIONS = [ - self::DIRECTION_ASCEND, - self::DIRECTION_DESCEND, - ]; - - /** - * Array of supported orders in configuration. - * - * @var non-empty-list - */ - private const SUPPORTED_ORDER_OPTIONS = [ - self::ORDER_ALPHA, - self::ORDER_LENGTH, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Orders the interfaces in an `implements` or `interface extends` clause.', - [ - new CodeSample( - " self::DIRECTION_DESCEND], - ), - new CodeSample( - " self::ORDER_LENGTH], - ), - new CodeSample( - " self::ORDER_LENGTH, - self::OPTION_DIRECTION => self::DIRECTION_DESCEND, - ], - ), - new CodeSample( - " self::ORDER_ALPHA, - ], - ), - new CodeSample( - " self::ORDER_ALPHA, - 'case_sensitive' => true, - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after FullyQualifiedStrictTypesFixer, StringableForToStringFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_IMPLEMENTS) - || $tokens->isAllTokenKindsFound([\T_INTERFACE, \T_EXTENDS]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_IMPLEMENTS)) { - if (!$token->isGivenKind(\T_EXTENDS)) { - continue; - } - - $nameTokenIndex = $tokens->getPrevMeaningfulToken($index); - $interfaceTokenIndex = $tokens->getPrevMeaningfulToken($nameTokenIndex); - $interfaceToken = $tokens[$interfaceTokenIndex]; - - if (!$interfaceToken->isGivenKind(\T_INTERFACE)) { - continue; - } - } - - $implementsStart = $index + 1; - $implementsEnd = $tokens->getPrevMeaningfulToken($tokens->getNextTokenOfKind($implementsStart, ['{'])); - - $interfacesTokens = $this->getInterfaces($tokens, $implementsStart, $implementsEnd); - - if (1 === \count($interfacesTokens)) { - continue; - } - - $interfaces = []; - foreach ($interfacesTokens as $interfaceIndex => $interface) { - $interfaceTokens = Tokens::fromArray($interface); - $normalized = ''; - $actualInterfaceIndex = $interfaceTokens->getNextMeaningfulToken(-1); - - while ($interfaceTokens->offsetExists($actualInterfaceIndex)) { - $token = $interfaceTokens[$actualInterfaceIndex]; - - if ($token->isComment() || $token->isWhitespace()) { - break; - } - - $normalized .= str_replace('\\', ' ', $token->getContent()); - ++$actualInterfaceIndex; - } - - $interfaces[$interfaceIndex] = [ - 'tokens' => $interface, - 'normalized' => $normalized, - 'originalIndex' => $interfaceIndex, - ]; - } - - usort($interfaces, function (array $first, array $second): int { - $score = self::ORDER_LENGTH === $this->configuration[self::OPTION_ORDER] - ? \strlen($first['normalized']) - \strlen($second['normalized']) - : ( - true === $this->configuration['case_sensitive'] - ? $first['normalized'] <=> $second['normalized'] - : strcasecmp($first['normalized'], $second['normalized']) - ); - - if (self::DIRECTION_DESCEND === $this->configuration[self::OPTION_DIRECTION]) { - $score *= -1; - } - - return $score; - }); - - $changed = false; - - foreach ($interfaces as $interfaceIndex => $interface) { - if ($interface['originalIndex'] !== $interfaceIndex) { - $changed = true; - - break; - } - } - - if (!$changed) { - continue; - } - - $newTokens = array_shift($interfaces)['tokens']; - - foreach ($interfaces as $interface) { - array_push($newTokens, new Token(','), ...$interface['tokens']); - } - - $tokens->overrideRange($implementsStart, $implementsEnd, $newTokens); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder(self::OPTION_ORDER, 'How the interfaces should be ordered.')) - ->setAllowedValues(self::SUPPORTED_ORDER_OPTIONS) - ->setDefault(self::ORDER_ALPHA) - ->getOption(), - (new FixerOptionBuilder(self::OPTION_DIRECTION, 'Which direction the interfaces should be ordered.')) - ->setAllowedValues(self::SUPPORTED_DIRECTION_OPTIONS) - ->setDefault(self::DIRECTION_ASCEND) - ->getOption(), - (new FixerOptionBuilder('case_sensitive', 'Whether the sorting should be case sensitive.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - /** - * @return array> - */ - private function getInterfaces(Tokens $tokens, int $implementsStart, int $implementsEnd): array - { - $interfaces = []; - $interfaceIndex = 0; - - for ($i = $implementsStart; $i <= $implementsEnd; ++$i) { - if ($tokens[$i]->equals(',')) { - ++$interfaceIndex; - $interfaces[$interfaceIndex] = []; - - continue; - } - - $interfaces[$interfaceIndex][] = $tokens[$i]; - } - - return $interfaces; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php deleted file mode 100644 index aa66097..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php +++ /dev/null @@ -1,231 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case_sensitive?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case_sensitive: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class OrderedTraitsFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Trait `use` statements must be sorted alphabetically.', - [ - new CodeSample(" true, - ], - ), - ], - null, - 'Risky when depending on order of the imports.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(CT::T_USE_TRAIT); - } - - public function isRisky(): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('case_sensitive', 'Whether the sorting should be case sensitive.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($this->findUseStatementsGroups($tokens) as $uses) { - $this->sortUseStatements($tokens, $uses); - } - } - - /** - * @return iterable> - */ - private function findUseStatementsGroups(Tokens $tokens): iterable - { - $uses = []; - - for ($index = 1, $max = \count($tokens); $index < $max; ++$index) { - $token = $tokens[$index]; - - if ($token->isWhitespace() || $token->isComment()) { - continue; - } - - if (!$token->isGivenKind(CT::T_USE_TRAIT)) { - if (\count($uses) > 0) { - yield $uses; - - $uses = []; - } - - continue; - } - - $startIndex = $tokens->getNextNonWhitespace($tokens->getPrevMeaningfulToken($index)); - \assert(\is_int($startIndex)); - - $endIndex = $tokens->getNextTokenOfKind($index, [';', '{']); - - if ($tokens[$endIndex]->equals('{')) { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $endIndex); - } - - $use = []; - - for ($i = $startIndex; $i <= $endIndex; ++$i) { - $use[] = $tokens[$i]; - } - - $uses[$startIndex] = Tokens::fromArray($use); - - $index = $endIndex; - } - } - - /** - * @param array $uses - */ - private function sortUseStatements(Tokens $tokens, array $uses): void - { - foreach ($uses as $use) { - $this->sortMultipleTraitsInStatement($use); - } - - $this->sort($tokens, $uses); - } - - private function sortMultipleTraitsInStatement(Tokens $use): void - { - $traits = []; - $indexOfName = null; - $name = []; - - for ($index = 0, $max = \count($use); $index < $max; ++$index) { - $token = $use[$index]; - - if ($token->isGivenKind([\T_STRING, \T_NS_SEPARATOR])) { - $name[] = $token; - - if (null === $indexOfName) { - $indexOfName = $index; - } - - continue; - } - - if ($token->equalsAny([',', ';', '{'])) { - \assert(null !== $indexOfName); - $traits[$indexOfName] = Tokens::fromArray($name); - - $name = []; - $indexOfName = null; - } - - if ($token->equals('{')) { - $index = $use->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - } - } - - $this->sort($use, $traits); - } - - /** - * @param array $elements - */ - private function sort(Tokens $tokens, array $elements): void - { - $toTraitName = static function (Tokens $use): string { - $string = ''; - - foreach ($use as $token) { - if ($token->equalsAny([';', '{'])) { - break; - } - - if ($token->isGivenKind([\T_NS_SEPARATOR, \T_STRING])) { - $string .= $token->getContent(); - } - } - - return ltrim($string, '\\'); - }; - - $sortedElements = $elements; - uasort( - $sortedElements, - fn (Tokens $useA, Tokens $useB): int => true === $this->configuration['case_sensitive'] - ? $toTraitName($useA) <=> $toTraitName($useB) - : strcasecmp($toTraitName($useA), $toTraitName($useB)), - ); - - $sortedElements = array_combine( - array_keys($elements), - array_values($sortedElements), - ); - - $beforeOverrideCount = $tokens->count(); - - foreach (array_reverse($sortedElements, true) as $index => $tokensToInsert) { - $tokens->overrideRange( - $index, - $index + \count($elements[$index]) - 1, - $tokensToInsert, - ); - } - - if ($beforeOverrideCount < $tokens->count()) { - $tokens->clearEmptyTokens(); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php deleted file mode 100644 index 1b85987..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php +++ /dev/null @@ -1,464 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case_sensitive?: bool, - * null_adjustment?: 'always_first'|'always_last'|'none', - * sort_algorithm?: 'alpha'|'none', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case_sensitive: bool, - * null_adjustment: 'always_first'|'always_last'|'none', - * sort_algorithm: 'alpha'|'none', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author John Paul E. Balandan, CPA - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class OrderedTypesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - private const PROPERTY_MODIFIERS = [\T_PRIVATE, \T_PROTECTED, \T_PUBLIC, \T_STATIC, \T_VAR, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Sort union types and intersection types using configured order.', - [ - new CodeSample( - <<<'PHP' - save($foo); - } catch (\RuntimeException|CacheException $e) { - logger($e); - - throw $e; - } - - PHP, - ), - new VersionSpecificCodeSample( - <<<'PHP' - true, - ], - ), - new VersionSpecificCodeSample( - <<<'PHP' - 'always_last'], - ), - new VersionSpecificCodeSample( - <<<'PHP' - 'none', - 'null_adjustment' => 'always_last', - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before TypesSpacesFixer. - * Must run after NullableTypeDeclarationFixer, NullableTypeDeclarationForDefaultNullValueFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION]); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('sort_algorithm', 'Whether the types should be sorted alphabetically, or not sorted.')) - ->setAllowedValues(['alpha', 'none']) - ->setDefault('alpha') - ->getOption(), - (new FixerOptionBuilder('null_adjustment', 'Forces the position of `null` (overrides `sort_algorithm`).')) - ->setAllowedValues(['always_first', 'always_last', 'none']) - ->setDefault( - Future::getV4OrV3( - 'always_last', // as recommended in https://github.com/php-fig/per-coding-style/blob/master/migration-3.0.md#section-25---keywords-and-types - 'always_first', - ), - ) - ->getOption(), - (new FixerOptionBuilder('case_sensitive', 'Whether the sorting should be case sensitive.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - foreach ($this->getElements($tokens) as $index => $type) { - if ('catch' === $type) { - $this->fixCatchArgumentType($tokens, $index); - - continue; - } - - if ('property' === $type) { - $this->fixPropertyType($tokens, $index); - - continue; - } - - $this->fixMethodArgumentType($functionsAnalyzer, $tokens, $index); - $this->fixMethodReturnType($functionsAnalyzer, $tokens, $index); - } - } - - /** - * @return array - * - * @phpstan-return array - */ - private function getElements(Tokens $tokens): array - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - $elements = array_map( - static fn (array $element): string => $element['type'], - array_filter( - $tokensAnalyzer->getClassyElements(), - static fn (array $element): bool => \in_array($element['type'], ['method', 'property'], true), - ), - ); - - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(\T_CATCH)) { - $elements[$index] = 'catch'; - - continue; - } - - if ( - $token->isGivenKind(\T_FN) - || ($token->isGivenKind(\T_FUNCTION) && !isset($elements[$index])) - ) { - $elements[$index] = 'method'; - } - } - - return $elements; - } - - private function collectTypeAnalysis(Tokens $tokens, int $startIndex, int $endIndex): ?TypeAnalysis - { - $type = ''; - $typeStartIndex = $tokens->getNextMeaningfulToken($startIndex); - $typeEndIndex = $typeStartIndex; - - for ($i = $typeStartIndex; $i < $endIndex; ++$i) { - if ($tokens[$i]->isWhitespace() || $tokens[$i]->isComment()) { - continue; - } - - $type .= $tokens[$i]->getContent(); - $typeEndIndex = $i; - } - - return '' !== $type ? new TypeAnalysis($type, $typeStartIndex, $typeEndIndex) : null; - } - - private function fixCatchArgumentType(Tokens $tokens, int $index): void - { - $catchStart = $tokens->getNextTokenOfKind($index, ['(']); - $catchEnd = $tokens->getNextTokenOfKind($catchStart, [')', [\T_VARIABLE]]); - - $catchArgumentType = $this->collectTypeAnalysis($tokens, $catchStart, $catchEnd); - - if (null === $catchArgumentType || !$this->isTypeSortable($catchArgumentType)) { - return; // nothing to fix - } - - $this->sortTypes($catchArgumentType, $tokens); - } - - private function fixPropertyType(Tokens $tokens, int $index): void - { - $propertyIndex = $index; - - do { - $index = $tokens->getPrevMeaningfulToken($index); - } while (!$tokens[$index]->isGivenKind(self::PROPERTY_MODIFIERS)); - - $propertyType = $this->collectTypeAnalysis($tokens, $index, $propertyIndex); - - if (null === $propertyType || !$this->isTypeSortable($propertyType)) { - return; // nothing to fix - } - - $this->sortTypes($propertyType, $tokens); - } - - private function fixMethodArgumentType(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void - { - foreach ($functionsAnalyzer->getFunctionArguments($tokens, $index) as $argumentInfo) { - $argumentType = $argumentInfo->getTypeAnalysis(); - - if (null === $argumentType || !$this->isTypeSortable($argumentType)) { - continue; // nothing to fix - } - - $this->sortTypes($argumentType, $tokens); - } - } - - private function fixMethodReturnType(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void - { - $returnType = $functionsAnalyzer->getFunctionReturnType($tokens, $index); - - if (null === $returnType || !$this->isTypeSortable($returnType)) { - return; // nothing to fix - } - - $this->sortTypes($returnType, $tokens); - } - - private function sortTypes(TypeAnalysis $typeAnalysis, Tokens $tokens): void - { - $type = $typeAnalysis->getName(); - - if (str_contains($type, '|') && str_contains($type, '&')) { - // a DNF type of the form (A&B)|C, available as of PHP 8.2 - [$originalTypes, $glue] = $this->collectDisjunctiveNormalFormTypes($type); - } else { - [$originalTypes, $glue] = $this->collectUnionOrIntersectionTypes($type); - } - - // If the $types array is coming from a DNF type, then we have parts - // which are also array. If so, we sort those sub-types first before - // running the sorting algorithm to the entire $types array. - $sortedTypes = array_map(function ($subType) { - if (\is_array($subType)) { - return $this->runTypesThroughSortingAlgorithm($subType); - } - - return $subType; - }, $originalTypes); - - $sortedTypes = $this->runTypesThroughSortingAlgorithm($sortedTypes); - - if ($sortedTypes === $originalTypes) { - return; - } - - $tokens->overrideRange( - $typeAnalysis->getStartIndex(), - $typeAnalysis->getEndIndex(), - $this->createTypeDeclarationTokens($sortedTypes, $glue), - ); - } - - private function isTypeSortable(TypeAnalysis $type): bool - { - return str_contains($type->getName(), '|') || str_contains($type->getName(), '&'); - } - - /** - * @return array{0: non-empty-list|string>, 1: string} - */ - private function collectDisjunctiveNormalFormTypes(string $type): array - { - $types = array_map(static function (string $subType) { - if (str_starts_with($subType, '(')) { - return explode('&', trim($subType, '()')); - } - - return $subType; - }, explode('|', $type)); - - return [$types, '|']; - } - - /** - * @return array{0: non-empty-list, 1: string} - */ - private function collectUnionOrIntersectionTypes(string $type): array - { - $types = explode('|', $type); - $glue = '|'; - - if (1 === \count($types)) { - $types = explode('&', $type); - $glue = '&'; - } - - return [$types, $glue]; - } - - /** - * @param list|string> $types - * - * @return ($types is list ? list : list>) - */ - private function runTypesThroughSortingAlgorithm(array $types): array - { - $normalizeType = static fn (string $type): string => Preg::replace('/^\\\?/', '', $type); - - usort($types, function ($a, $b) use ($normalizeType): int { - if (\is_array($a)) { - $a = implode('&', $a); - } - - if (\is_array($b)) { - $b = implode('&', $b); - } - - $a = $normalizeType($a); - $b = $normalizeType($b); - $lowerCaseA = strtolower($a); - $lowerCaseB = strtolower($b); - - if ('none' !== $this->configuration['null_adjustment']) { - if ('null' === $lowerCaseA && 'null' !== $lowerCaseB) { - return 'always_last' === $this->configuration['null_adjustment'] ? 1 : -1; - } - - if ('null' !== $lowerCaseA && 'null' === $lowerCaseB) { - return 'always_last' === $this->configuration['null_adjustment'] ? -1 : 1; - } - } - - if ('alpha' === $this->configuration['sort_algorithm']) { - return true === $this->configuration['case_sensitive'] ? $a <=> $b : strcasecmp($a, $b); - } - - return 0; - }); - - return $types; - } - - /** - * @param list|string> $types - * - * @return list - */ - private function createTypeDeclarationTokens(array $types, string $glue, bool $isDisjunctive = false): array - { - $specialTypes = [ - 'array' => [CT::T_ARRAY_TYPEHINT, 'array'], - 'callable' => [\T_CALLABLE, 'callable'], - 'static' => [\T_STATIC, 'static'], - ]; - - $count = \count($types); - $newTokens = []; - - foreach ($types as $i => $type) { - if (\is_array($type)) { - $newTokens = [ - ...$newTokens, - ...$this->createTypeDeclarationTokens($type, '&', true), - ]; - } elseif (isset($specialTypes[$type])) { - $newTokens[] = new Token($specialTypes[$type]); - } else { - foreach (explode('\\', $type) as $nsIndex => $value) { - if (0 === $nsIndex && '' === $value) { - continue; - } - - if ($nsIndex > 0) { - $newTokens[] = new Token([\T_NS_SEPARATOR, '\\']); - } - - $newTokens[] = new Token([\T_STRING, $value]); - } - } - - if ($i <= $count - 2) { - $newTokens[] = new Token([ - '|' => [CT::T_TYPE_ALTERNATION, '|'], - '&' => [CT::T_TYPE_INTERSECTION, '&'], - ][$glue]); - } - } - - if ($isDisjunctive) { - array_unshift($newTokens, new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, '('])); - $newTokens[] = new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE, ')']); - } - - return $newTokens; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/PhpdocReadonlyClassCommentToKeywordFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/PhpdocReadonlyClassCommentToKeywordFixer.php deleted file mode 100644 index f0d8541..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/PhpdocReadonlyClassCommentToKeywordFixer.php +++ /dev/null @@ -1,131 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Marcel Behrmann - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocReadonlyClassCommentToKeywordFixer extends AbstractFixer -{ - /** - * {@inheritdoc} - * - * Must run before NoEmptyPhpdocFixer, NoExtraBlankLinesFixer, NoRedundantReadonlyPropertyFixer, PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 4; - } - - public function isCandidate(Tokens $tokens): bool - { - return \PHP_VERSION_ID >= 8_02_00 && $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - public function isRisky(): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts readonly comment on classes to the readonly keyword.', - [ - new VersionSpecificCodeSample( - << $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - - $annotations = $doc->getAnnotationsOfType('readonly'); - - if (0 === \count($annotations)) { - continue; - } - - foreach ($annotations as $annotation) { - $annotation->remove(); - } - - $mainIndex = $index; - $index = $tokens->getNextMeaningfulToken($index); - $addReadonly = true; - - while ($tokens[$index]->isGivenKind([ - \T_ABSTRACT, - \T_FINAL, - \T_PRIVATE, - \T_PUBLIC, - \T_PROTECTED, - \T_READONLY, - ])) { - if ($tokens[$index]->isGivenKind(\T_READONLY)) { - $addReadonly = false; - } - - $index = $tokens->getNextMeaningfulToken($index); - } - - if (!$tokens[$index]->isGivenKind(\T_CLASS)) { - continue; - } - - if ($addReadonly) { - $tokens->insertAt($index, [new Token([\T_READONLY, 'readonly']), new Token([\T_WHITESPACE, ' '])]); - } - - $newContent = $doc->getContent(); - - if ('' === $newContent) { - $tokens->clearTokenAndMergeSurroundingWhitespace($mainIndex); - - continue; - } - - $tokens[$mainIndex] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php deleted file mode 100644 index 5458b49..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php +++ /dev/null @@ -1,178 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProtectedToPrivateFixer extends AbstractFixer -{ - private const MODIFIER_KINDS = [\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_FINAL, \T_ABSTRACT, \T_NS_SEPARATOR, \T_STRING, CT::T_NULLABLE_TYPE, CT::T_ARRAY_TYPEHINT, \T_STATIC, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET]; - private TokensAnalyzer $tokensAnalyzer; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts `protected` variables and methods to `private` where possible.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_PROTECTED, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, FCT::T_PROTECTED_SET]) - && ( - $tokens->isAllTokenKindsFound([\T_CLASS, \T_FINAL]) - || $tokens->isTokenKindFound(FCT::T_ENUM) - ); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->tokensAnalyzer = new TokensAnalyzer($tokens); - - $classesCandidate = []; - $classElementTypes = ['method' => true, 'property' => true, 'promoted_property' => true, 'const' => true]; - - foreach ($this->tokensAnalyzer->getClassyElements() as $index => $element) { - $classIndex = $element['classIndex']; - - $classesCandidate[$classIndex] ??= $this->isClassCandidate($tokens, $classIndex); - - if (false === $classesCandidate[$classIndex]) { - continue; - } - - if (!isset($classElementTypes[$element['type']])) { - continue; - } - - $previousIndex = $index; - $protectedIndex = null; - $protectedPromotedIndex = null; - $protectedSetIndex = null; - $isFinal = false; - - do { - $previousIndex = $tokens->getPrevMeaningfulToken($previousIndex); - - if ($tokens[$previousIndex]->isGivenKind(\T_PROTECTED)) { - $protectedIndex = $previousIndex; - } elseif ($tokens[$previousIndex]->isGivenKind(CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED)) { - $protectedPromotedIndex = $previousIndex; - } elseif ($tokens[$previousIndex]->isGivenKind(FCT::T_PROTECTED_SET)) { - $protectedSetIndex = $previousIndex; - } elseif ($tokens[$previousIndex]->isGivenKind(\T_FINAL)) { - $isFinal = true; - } - } while ($tokens[$previousIndex]->isGivenKind(self::MODIFIER_KINDS)); - - if ($isFinal && 'const' === $element['type']) { - continue; // Final constants cannot be private - } - - if (null !== $protectedIndex) { - $tokens[$protectedIndex] = new Token([\T_PRIVATE, 'private']); - } - if (null !== $protectedPromotedIndex) { - $tokens[$protectedPromotedIndex] = new Token([CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, 'private']); - } - if (null !== $protectedSetIndex) { - $tokens[$protectedSetIndex] = new Token([\T_PRIVATE_SET, 'private(set)']); - } - } - } - - /** - * Consider symbol as candidate for fixing if it's: - * - an Enum (PHP8.1+) - * - a class, which: - * - is not anonymous - * - is final - * - does not use traits - * - does not extend other class. - */ - private function isClassCandidate(Tokens $tokens, int $classIndex): bool - { - if ($tokens[$classIndex]->isGivenKind(FCT::T_ENUM)) { - return true; - } - - if (!$tokens[$classIndex]->isGivenKind(\T_CLASS) || $this->tokensAnalyzer->isAnonymousClass($classIndex)) { - return false; - } - - $modifiers = $this->tokensAnalyzer->getClassyModifiers($classIndex); - - if (!isset($modifiers['final'])) { - return false; - } - - $classNameIndex = $tokens->getNextMeaningfulToken($classIndex); // move to class name as anonymous class is never "final" - $classExtendsIndex = $tokens->getNextMeaningfulToken($classNameIndex); // move to possible "extends" - - if ($tokens[$classExtendsIndex]->isGivenKind(\T_EXTENDS)) { - return false; - } - - if (!$tokens->isTokenKindFound(CT::T_USE_TRAIT)) { - return true; // cheap test - } - - $classOpenIndex = $tokens->getNextTokenOfKind($classNameIndex, ['{']); - $classCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $classOpenIndex); - $useIndex = $tokens->getNextTokenOfKind($classOpenIndex, [[CT::T_USE_TRAIT]]); - - return null === $useIndex || $useIndex > $classCloseIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php deleted file mode 100644 index 45e2523..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php +++ /dev/null @@ -1,204 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SelfAccessorFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Inside class or interface element `self` should be preferred to the class name itself.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_CLASS, \T_INTERFACE]); - } - - /** - * {@inheritdoc} - * - * Must run after PsrAutoloadingFixer. - */ - public function getPriority(): int - { - return -11; - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - foreach ($tokens->getNamespaceDeclarations() as $namespace) { - for ($index = $namespace->getScopeStartIndex(); $index < $namespace->getScopeEndIndex(); ++$index) { - if (!$tokens[$index]->isGivenKind([\T_CLASS, \T_INTERFACE]) || $tokensAnalyzer->isAnonymousClass($index)) { - continue; - } - - $nameIndex = $tokens->getNextTokenOfKind($index, [[\T_STRING]]); - $startIndex = $tokens->getNextTokenOfKind($nameIndex, ['{']); - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $startIndex); - - $name = $tokens[$nameIndex]->getContent(); - - $this->replaceNameOccurrences($tokens, $namespace->getFullName(), $name, $startIndex, $endIndex); - - $index = $endIndex; - } - } - } - - /** - * Replace occurrences of the name of the classy element by "self" (if possible). - */ - private function replaceNameOccurrences(Tokens $tokens, string $namespace, string $name, int $startIndex, int $endIndex): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $insideMethodSignatureUntil = null; - - for ($i = $startIndex; $i < $endIndex; ++$i) { - if ($i === $insideMethodSignatureUntil) { - $insideMethodSignatureUntil = null; - } - - $token = $tokens[$i]; - - // skip anonymous classes - if ($token->isGivenKind(\T_CLASS) && $tokensAnalyzer->isAnonymousClass($i)) { - $i = $tokens->getNextTokenOfKind($i, ['{']); - $i = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $i); - - continue; - } - - if ($token->isGivenKind(\T_FN)) { - $i = $tokensAnalyzer->getLastTokenIndexOfArrowFunction($i); - $i = $tokens->getNextMeaningfulToken($i); - - continue; - } - - if ($token->isGivenKind(\T_FUNCTION)) { - if ($tokensAnalyzer->isLambda($i)) { - $i = $tokens->getNextTokenOfKind($i, ['{']); - $i = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $i); - - continue; - } - - $i = $tokens->getNextTokenOfKind($i, ['(']); - $insideMethodSignatureUntil = $tokens->getNextTokenOfKind($i, ['{', ';']); - - continue; - } - - if (!$token->equals([\T_STRING, $name], false)) { - continue; - } - - $nextToken = $tokens[$tokens->getNextMeaningfulToken($i)]; - if ($nextToken->isGivenKind(\T_NS_SEPARATOR)) { - continue; - } - - $classStartIndex = $i; - $prevToken = $tokens[$tokens->getPrevMeaningfulToken($i)]; - if ($prevToken->isGivenKind(\T_NS_SEPARATOR)) { - $classStartIndex = $this->getClassStart($tokens, $i, $namespace); - if (null === $classStartIndex) { - continue; - } - $prevToken = $tokens[$tokens->getPrevMeaningfulToken($classStartIndex)]; - } - if ($prevToken->isGivenKind(\T_STRING) || $prevToken->isObjectOperator()) { - continue; - } - - if ( - $prevToken->isGivenKind([\T_INSTANCEOF, \T_NEW]) - || $nextToken->isGivenKind(\T_PAAMAYIM_NEKUDOTAYIM) - || ( - null !== $insideMethodSignatureUntil - && $i < $insideMethodSignatureUntil - && $prevToken->equalsAny(['(', ',', [CT::T_NULLABLE_TYPE], [CT::T_TYPE_ALTERNATION], [CT::T_TYPE_COLON]]) - ) - ) { - for ($j = $classStartIndex; $j < $i; ++$j) { - $tokens->clearTokenAndMergeSurroundingWhitespace($j); - } - $tokens[$i] = new Token([\T_STRING, 'self']); - } - } - } - - private function getClassStart(Tokens $tokens, int $index, string $namespace): ?int - { - $namespace = ('' !== $namespace ? '\\'.$namespace : '').'\\'; - - foreach (array_reverse(Preg::split('/(\\\)/', $namespace, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE)) as $piece) { - $index = $tokens->getPrevMeaningfulToken($index); - if ('\\' === $piece) { - if (!$tokens[$index]->isGivenKind(\T_NS_SEPARATOR)) { - return null; - } - } elseif (!$tokens[$index]->equals([\T_STRING, $piece], false)) { - return null; - } - } - - return $index; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php deleted file mode 100644 index eadbae8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php +++ /dev/null @@ -1,228 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SelfStaticAccessorFixer extends AbstractFixer -{ - private const CLASSY_TYPES = [\T_CLASS, FCT::T_ENUM]; - private const CLASSY_TOKENS_OF_INTEREST = [[\T_CLASS], [FCT::T_ENUM]]; - private TokensAnalyzer $tokensAnalyzer; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Inside an enum or `final`/anonymous class, `self` should be preferred over `static`.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_STATIC) - && $tokens->isAnyTokenKindsFound(self::CLASSY_TYPES) - && $tokens->isAnyTokenKindsFound([\T_DOUBLE_COLON, \T_NEW, \T_INSTANCEOF]); - } - - /** - * {@inheritdoc} - * - * Must run after FinalClassFixer, FinalInternalClassFixer, FunctionToConstantFixer, PhpUnitTestCaseStaticMethodCallsFixer. - */ - public function getPriority(): int - { - return -10; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->tokensAnalyzer = new TokensAnalyzer($tokens); - $classyIndex = $tokens->getNextTokenOfKind(0, self::CLASSY_TOKENS_OF_INTEREST); - - while (null !== $classyIndex) { - if ($tokens[$classyIndex]->isGivenKind(\T_CLASS)) { - $modifiers = $this->tokensAnalyzer->getClassyModifiers($classyIndex); - - if ( - isset($modifiers['final']) - || $this->tokensAnalyzer->isAnonymousClass($classyIndex) - ) { - $classyIndex = $this->fixClassy($tokens, $classyIndex); - } - } else { - $classyIndex = $this->fixClassy($tokens, $classyIndex); - } - - $classyIndex = $tokens->getNextTokenOfKind($classyIndex, self::CLASSY_TOKENS_OF_INTEREST); - } - } - - private function fixClassy(Tokens $tokens, int $index): int - { - $index = $tokens->getNextTokenOfKind($index, ['{']); - $classOpenCount = 1; - - while ($classOpenCount > 0) { - ++$index; - - if ($tokens[$index]->equals('{')) { - ++$classOpenCount; - - continue; - } - - if ($tokens[$index]->equals('}')) { - --$classOpenCount; - - continue; - } - - if ($tokens[$index]->isGivenKind(\T_FUNCTION)) { - // do not fix inside lambda - if ($this->tokensAnalyzer->isLambda($index)) { - // figure out where the lambda starts - $index = $tokens->getNextTokenOfKind($index, ['{']); - $openCount = 1; - - do { - $index = $tokens->getNextTokenOfKind($index, ['}', '{', [\T_CLASS]]); - if ($tokens[$index]->equals('}')) { - --$openCount; - } elseif ($tokens[$index]->equals('{')) { - ++$openCount; - } else { - $index = $this->fixClassy($tokens, $index); - } - } while ($openCount > 0); - } - - continue; - } - - if ($tokens[$index]->isGivenKind([\T_NEW, \T_INSTANCEOF])) { - $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind(\T_STATIC)) { - $tokens[$index] = new Token([\T_STRING, 'self']); - } - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_STATIC)) { - continue; - } - - $staticIndex = $index; - $index = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$index]->isGivenKind(\T_DOUBLE_COLON)) { - continue; - } - - $tokens[$staticIndex] = new Token([\T_STRING, 'self']); - } - - return $index; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php deleted file mode 100644 index eef97a3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php +++ /dev/null @@ -1,243 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * Fixer for rules defined in PSR2 ¶4.2. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * elements?: list<'const'|'property'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * elements: list<'const'|'property'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Javier Spagnoletti - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleClassElementPerStatementFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds()); - } - - /** - * {@inheritdoc} - * - * Must run before ClassAttributesSeparationFixer. - */ - public function getPriority(): int - { - return 56; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There MUST NOT be more than one property or constant declared per statement.', - [ - new CodeSample( - <<<'PHP' - ['property']], - ), - ], - ); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $analyzer = new TokensAnalyzer($tokens); - $elements = array_reverse($analyzer->getClassyElements(), true); - - foreach ($elements as $index => $element) { - if (!\in_array($element['type'], $this->configuration['elements'], true)) { - continue; // not in configuration - } - - $this->fixElement($tokens, $element['type'], $index); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $values = ['const', 'property']; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('elements', 'List of strings which element should be modified.')) - ->setDefault($values) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($values)]) - ->getOption(), - ]); - } - - private function fixElement(Tokens $tokens, string $type, int $index): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $repeatIndex = $index; - - while (true) { - $repeatIndex = $tokens->getNextMeaningfulToken($repeatIndex); - $repeatToken = $tokens[$repeatIndex]; - - if ($tokensAnalyzer->isArray($repeatIndex)) { - if ($repeatToken->isGivenKind(\T_ARRAY)) { - $repeatIndex = $tokens->getNextTokenOfKind($repeatIndex, ['(']); - $repeatIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $repeatIndex); - } else { - $repeatIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $repeatIndex); - } - - continue; - } - - if ($repeatToken->equalsAny([';', [CT::T_PROPERTY_HOOK_BRACE_OPEN]])) { - return; // no repeating found, no fixing needed - } - - if ($repeatToken->equals(',')) { - break; - } - } - - $start = $tokens->getPrevTokenOfKind($index, [';', '{', '}']); - $this->expandElement( - $tokens, - $type, - $tokens->getNextMeaningfulToken($start), - $tokens->getNextTokenOfKind($index, [';']), - ); - } - - private function expandElement(Tokens $tokens, string $type, int $startIndex, int $endIndex): void - { - $divisionContent = null; - - if ($tokens[$startIndex - 1]->isWhitespace()) { - $divisionContent = $tokens[$startIndex - 1]->getContent(); - - if (Preg::match('#(\n|\r\n)#', $divisionContent, $matches)) { - $divisionContent = $matches[0].trim($divisionContent, "\r\n"); - } - } - - // iterate variables to split up - for ($i = $endIndex - 1; $i > $startIndex; --$i) { - $token = $tokens[$i]; - - if ($token->equals(')')) { - $i = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $i); - - continue; - } - - if ($token->isGivenKind(CT::T_ARRAY_BRACKET_CLOSE)) { - $i = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $i); - - continue; - } - - if (!$tokens[$i]->equals(',')) { - continue; - } - - $tokens[$i] = new Token(';'); - - if ($tokens[$i + 1]->isWhitespace()) { - $tokens->clearAt($i + 1); - } - - if (null !== $divisionContent && '' !== $divisionContent) { - $tokens->insertAt($i + 1, new Token([\T_WHITESPACE, $divisionContent])); - } - - // collect modifiers - $sequence = $this->getModifiersSequences($tokens, $type, $startIndex, $endIndex); - $tokens->insertAt($i + 2, $sequence); - } - } - - /** - * @return list - */ - private function getModifiersSequences(Tokens $tokens, string $type, int $startIndex, int $endIndex): array - { - if ('property' === $type) { - $tokenKinds = [\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_FINAL, \T_STATIC, \T_VAR, \T_STRING, \T_NS_SEPARATOR, CT::T_NULLABLE_TYPE, CT::T_ARRAY_TYPEHINT, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET]; - } else { - $tokenKinds = [\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_FINAL, \T_CONST]; - } - - $sequence = []; - - for ($i = $startIndex; $i < $endIndex - 1; ++$i) { - if ($tokens[$i]->isComment()) { - continue; - } - - if (!$tokens[$i]->isWhitespace() && !$tokens[$i]->isGivenKind($tokenKinds)) { - break; - } - - $sequence[] = clone $tokens[$i]; - } - - return $sequence; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php deleted file mode 100644 index 3df3280..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php +++ /dev/null @@ -1,121 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleTraitInsertPerStatementFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Each trait `use` must be done as single statement.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(CT::T_USE_TRAIT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 1; 1 < $index; --$index) { - if ($tokens[$index]->isGivenKind(CT::T_USE_TRAIT)) { - $candidates = $this->getCandidates($tokens, $index); - if (\count($candidates) > 0) { - $this->fixTraitUse($tokens, $index, $candidates); - } - } - } - } - - /** - * @param list $candidates ',' indices to fix - */ - private function fixTraitUse(Tokens $tokens, int $useTraitIndex, array $candidates): void - { - foreach ($candidates as $commaIndex) { - $inserts = [ - new Token([CT::T_USE_TRAIT, 'use']), - new Token([\T_WHITESPACE, ' ']), - ]; - - $nextImportStartIndex = $tokens->getNextMeaningfulToken($commaIndex); - - if ($tokens[$nextImportStartIndex - 1]->isWhitespace()) { - if (Preg::match('/\R/', $tokens[$nextImportStartIndex - 1]->getContent())) { - array_unshift($inserts, clone $tokens[$useTraitIndex - 1]); - } - $tokens->clearAt($nextImportStartIndex - 1); - } - - $tokens[$commaIndex] = new Token(';'); - $tokens->insertAt($nextImportStartIndex, $inserts); - } - } - - /** - * @return list - */ - private function getCandidates(Tokens $tokens, int $index): array - { - $indices = []; - $index = $tokens->getNextTokenOfKind($index, [',', ';', '{']); - - while (!$tokens[$index]->equals(';')) { - if ($tokens[$index]->equals('{')) { - return []; // do not fix use cases with grouping - } - - $indices[] = $index; - $index = $tokens->getNextTokenOfKind($index, [',', ';', '{']); - } - - return array_reverse($indices); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StaticPrivateMethodFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StaticPrivateMethodFixer.php deleted file mode 100644 index 176f63b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StaticPrivateMethodFixer.php +++ /dev/null @@ -1,281 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StaticPrivateMethodFixer extends AbstractFixer -{ - /** - * @var array - */ - private const MAGIC_METHODS = [ - '__clone' => true, - '__construct' => true, - '__destruct' => true, - '__wakeup' => true, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts private methods to `static` where possible.', - [ - new CodeSample( - <<<'PHP' - baz(); - } - - private function baz() - { - return 1; - } - } - - PHP, - ), - ], - null, - 'Risky when the method:' - .' contains dynamic generated calls to the instance,' - .' is dynamically referenced,' - .' is referenced inside a Trait the class uses.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before StaticLambdaFixer. - * Must run after ProtectedToPrivateFixer. - */ - public function getPriority(): int - { - return 1; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAllTokenKindsFound([\T_CLASS, \T_PRIVATE, \T_FUNCTION]); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - do { - $anythingChanged = false; - - $end = \count($tokens) - 3; // min. number of tokens to form a class candidate to fix - for ($index = $end; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_CLASS)) { - continue; - } - - $classOpen = $tokens->getNextTokenOfKind($index, ['{']); - $classClose = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $classOpen); - - $anythingChanged |= $this->fixClass($tokens, $tokensAnalyzer, $classOpen, $classClose); - } - } while ($anythingChanged); - } - - private function fixClass(Tokens $tokens, TokensAnalyzer $tokensAnalyzer, int $classOpen, int $classClose): bool - { - $fixedMethods = []; - foreach ($this->getClassMethods($tokens, $classOpen, $classClose) as $methodData) { - [$functionKeywordIndex, $methodOpen, $methodClose] = $methodData; - - if ($this->skipMethod($tokens, $tokensAnalyzer, $functionKeywordIndex, $methodOpen, $methodClose)) { - continue; - } - - $methodNameIndex = $tokens->getNextMeaningfulToken($functionKeywordIndex); - $methodName = $tokens[$methodNameIndex]->getContent(); - $fixedMethods[$methodName] = true; - - $tokens->insertSlices([$functionKeywordIndex => [new Token([\T_STATIC, 'static']), new Token([\T_WHITESPACE, ' '])]]); - } - - if (0 === \count($fixedMethods)) { - return false; - } - - $classClose = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $classOpen); - foreach ($this->getClassMethods($tokens, $classOpen, $classClose) as $methodData) { - [, $methodOpen, $methodClose] = $methodData; - - $this->fixReferencesInFunction($tokens, $tokensAnalyzer, $methodOpen, $methodClose, $fixedMethods); - } - - return true; - } - - private function skipMethod(Tokens $tokens, TokensAnalyzer $tokensAnalyzer, int $functionKeywordIndex, int $methodOpen, int $methodClose): bool - { - $methodNameIndex = $tokens->getNextMeaningfulToken($functionKeywordIndex); - $methodName = strtolower($tokens[$methodNameIndex]->getContent()); - if (isset(self::MAGIC_METHODS[$methodName])) { - return true; - } - - $prevTokenIndex = $tokens->getPrevMeaningfulToken($functionKeywordIndex); - if ($tokens[$prevTokenIndex]->isGivenKind(\T_FINAL)) { - $prevTokenIndex = $tokens->getPrevMeaningfulToken($prevTokenIndex); - } - if (!$tokens[$prevTokenIndex]->isGivenKind(\T_PRIVATE)) { - return true; - } - - $prePrevTokenIndex = $tokens->getPrevMeaningfulToken($prevTokenIndex); - if ($tokens[$prePrevTokenIndex]->isGivenKind(\T_STATIC)) { - return true; - } - - for ($index = $methodOpen + 1; $index < $methodClose - 1; ++$index) { - if ($tokens[$index]->isGivenKind(\T_CLASS) && $tokensAnalyzer->isAnonymousClass($index)) { - $anonymousClassOpen = $tokens->getNextTokenOfKind($index, ['{']); - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $anonymousClassOpen); - - continue; - } - - if ($tokens[$index]->isGivenKind(\T_FUNCTION)) { - return true; - } - - if ($tokens[$index]->equals([\T_VARIABLE, '$this'])) { - $operatorIndex = $tokens->getNextMeaningfulToken($index); - $methodNameIndex = $tokens->getNextMeaningfulToken($operatorIndex); - $argumentsBraceIndex = $tokens->getNextMeaningfulToken($methodNameIndex); - - if ( - !$tokens[$operatorIndex]->isGivenKind(\T_OBJECT_OPERATOR) - || $methodName !== $tokens[$methodNameIndex]->getContent() - || !$tokens[$argumentsBraceIndex]->equals('(') - ) { - return true; - } - } - - if ($tokens[$index]->equals([\T_STRING, 'debug_backtrace'])) { - return true; - } - } - - return false; - } - - /** - * @param array $fixedMethods - */ - private function fixReferencesInFunction(Tokens $tokens, TokensAnalyzer $tokensAnalyzer, int $methodOpen, int $methodClose, array $fixedMethods): void - { - for ($index = $methodOpen + 1; $index < $methodClose - 1; ++$index) { - if ($tokens[$index]->isGivenKind(\T_FUNCTION)) { - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $closureStart = $tokens->getNextTokenOfKind($index, ['{']); - $closureEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $closureStart); - if (!$tokens[$prevIndex]->isGivenKind(\T_STATIC)) { - $this->fixReferencesInFunction($tokens, $tokensAnalyzer, $closureStart, $closureEnd, $fixedMethods); - } - - $index = $closureEnd; - - continue; - } - - if ($tokens[$index]->isGivenKind(\T_CLASS) && $tokensAnalyzer->isAnonymousClass($index)) { - $anonymousClassOpen = $tokens->getNextTokenOfKind($index, ['{']); - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $anonymousClassOpen); - - continue; - } - - if (!$tokens[$index]->equals([\T_VARIABLE, '$this'])) { - continue; - } - - $objectOperatorIndex = $tokens->getNextMeaningfulToken($index); - if (!$tokens[$objectOperatorIndex]->isGivenKind(\T_OBJECT_OPERATOR)) { - continue; - } - - $methodNameIndex = $tokens->getNextMeaningfulToken($objectOperatorIndex); - $argumentsBraceIndex = $tokens->getNextMeaningfulToken($methodNameIndex); - if (!$tokens[$argumentsBraceIndex]->equals('(')) { - continue; - } - - $currentMethodName = $tokens[$methodNameIndex]->getContent(); - if (!isset($fixedMethods[$currentMethodName])) { - continue; - } - - $tokens[$index] = new Token([\T_STRING, 'self']); - $tokens[$objectOperatorIndex] = new Token([\T_DOUBLE_COLON, '::']); - } - } - - /** - * @return iterable - */ - private function getClassMethods(Tokens $tokens, int $classOpen, int $classClose): iterable - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - for ($index = $classClose - 1; $index > $classOpen + 1; --$index) { - if ($tokens[$index]->equals('}')) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - continue; - } - - if ($tokensAnalyzer->getMethodAttributes($index)['abstract']) { - continue; - } - - $methodOpen = $tokens->getNextTokenOfKind($index, ['{']); - $methodClose = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $methodOpen); - - yield [$index, $methodOpen, $methodClose]; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StringableForToStringFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StringableForToStringFixer.php deleted file mode 100644 index 6a32303..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/StringableForToStringFixer.php +++ /dev/null @@ -1,259 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Santiago San Martin - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StringableForToStringFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'A class that implements the `__toString()` method must explicitly implement the `Stringable` interface.', - [ - new CodeSample( - <<<'PHP' - = 8_00_00 && $tokens->isAllTokenKindsFound([\T_CLASS, \T_STRING]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $useDeclarations = (new NamespaceUsesAnalyzer())->getDeclarationsFromTokens($tokens); - - $stringableInterfaces = ['stringable']; - - for ($index = 1; $index < $tokens->count(); ++$index) { - if ($tokens[$index]->isGivenKind(\T_NAMESPACE)) { - $stringableInterfaces = []; - - continue; - } - - if ($tokens[$index]->isGivenKind(\T_USE)) { - $name = self::getNameFromUse($index, $useDeclarations); - if (null !== $name) { - $stringableInterfaces[] = $name; - } - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_CLASS)) { - continue; - } - - $classStartIndex = $tokens->getNextTokenOfKind($index, ['{']); - \assert(\is_int($classStartIndex)); - - $classEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $classStartIndex); - - if (!self::doesHaveToStringMethod($tokens, $classStartIndex, $classEndIndex)) { - continue; - } - - if (self::doesImplementStringable($tokens, $index, $classStartIndex, $stringableInterfaces)) { - continue; - } - - self::addStringableInterface($tokens, $index); - } - } - - /** - * @param list $useDeclarations - */ - private static function getNameFromUse(int $index, array $useDeclarations): ?string - { - $uses = array_filter( - $useDeclarations, - static fn (NamespaceUseAnalysis $namespaceUseAnalysis): bool => $namespaceUseAnalysis->getStartIndex() === $index, - ); - - if (0 === \count($uses)) { - return null; - } - - \assert(1 === \count($uses)); - - $useDeclaration = reset($uses); - - $lowercasedFullName = strtolower($useDeclaration->getFullName()); - if ('stringable' !== $lowercasedFullName && '\stringable' !== $lowercasedFullName) { - return null; - } - - return strtolower($useDeclaration->getShortName()); - } - - private static function doesHaveToStringMethod(Tokens $tokens, int $classStartIndex, int $classEndIndex): bool - { - $index = $classStartIndex; - - while ($index < $classEndIndex) { - ++$index; - - if ($tokens[$index]->equals('{')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - continue; - } - - $functionNameIndex = $tokens->getNextMeaningfulToken($index); - \assert(\is_int($functionNameIndex)); - - if ($tokens[$functionNameIndex]->equals([\T_STRING, '__toString'], false)) { - return true; - } - } - - return false; - } - - /** - * @param list $stringableInterfaces - */ - private static function doesImplementStringable( - Tokens $tokens, - int $classKeywordIndex, - int $classOpenBraceIndex, - array $stringableInterfaces - ): bool { - $implementedInterfaces = self::getInterfaces($tokens, $classKeywordIndex, $classOpenBraceIndex); - if ([] === $implementedInterfaces) { - return false; - } - if (\in_array('\stringable', $implementedInterfaces, true)) { - return true; - } - - foreach ($stringableInterfaces as $stringableInterface) { - if (\in_array($stringableInterface, $implementedInterfaces, true)) { - return true; - } - } - - return false; - } - - /** - * @return list - */ - private static function getInterfaces(Tokens $tokens, int $classKeywordIndex, int $classOpenBraceIndex): array - { - $implementsIndex = $tokens->getNextTokenOfKind($classKeywordIndex, ['{', [\T_IMPLEMENTS]]); - \assert(\is_int($implementsIndex)); - - $interfaces = []; - $interface = ''; - for ( - $index = $tokens->getNextMeaningfulToken($implementsIndex); - $index < $classOpenBraceIndex; - $index = $tokens->getNextMeaningfulToken($index) - ) { - \assert(\is_int($index)); - if ($tokens[$index]->equals(',')) { - $interfaces[] = strtolower($interface); - $interface = ''; - - continue; - } - $interface .= $tokens[$index]->getContent(); - } - if ('' !== $interface) { - $interfaces[] = strtolower($interface); - } - - return $interfaces; - } - - private static function addStringableInterface(Tokens $tokens, int $classIndex): void - { - $implementsIndex = $tokens->getNextTokenOfKind($classIndex, ['{', [\T_IMPLEMENTS]]); - \assert(\is_int($implementsIndex)); - - if ($tokens[$implementsIndex]->equals('{')) { - $prevIndex = $tokens->getPrevMeaningfulToken($implementsIndex); - \assert(\is_int($prevIndex)); - - $tokens->insertSlices([ - $prevIndex + 1 => [ - new Token([\T_WHITESPACE, ' ']), - new Token([\T_IMPLEMENTS, 'implements']), - new Token([\T_WHITESPACE, ' ']), - new Token([\T_NS_SEPARATOR, '\\']), - new Token([\T_STRING, \Stringable::class]), - ], - ]); - - return; - } - - $afterImplementsIndex = $tokens->getNextMeaningfulToken($implementsIndex); - \assert(\is_int($afterImplementsIndex)); - - $tokens->insertSlices([ - $afterImplementsIndex => [ - new Token([\T_NS_SEPARATOR, '\\']), - new Token([\T_STRING, \Stringable::class]), - new Token(','), - new Token([\T_WHITESPACE, ' ']), - ], - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php deleted file mode 100644 index 7a808ee..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassNotation; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @deprecated - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * elements?: list<'const'|'method'|'property'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * elements: list<'const'|'method'|'property'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class VisibilityRequiredFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, DeprecatedFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private ModifierKeywordsFixer $proxyFixer; - - public function __construct() - { - $this->proxyFixer = new ModifierKeywordsFixer(); - - parent::__construct(); - } - - public function getDefinition(): FixerDefinitionInterface - { - $fixerDefinition = $this->proxyFixer->getDefinition(); - - return new FixerDefinition( - $fixerDefinition->getSummary(), - $fixerDefinition->getCodeSamples(), - $fixerDefinition->getDescription(), - $fixerDefinition->getRiskyDescription(), - ); - } - - public function getSuccessorsNames(): array - { - return array_keys($this->proxyFixers); - } - - protected function createProxyFixers(): array - { - return [ - $this->proxyFixer, - ]; - } - - /** - * @param _AutogeneratedInputConfiguration $configuration - */ - protected function configurePreNormalisation(array $configuration): void - { - $this->proxyFixer->configure($configuration); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return $this->proxyFixer->createConfigurationDefinition(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php deleted file mode 100644 index d77ee4d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php +++ /dev/null @@ -1,148 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ClassUsage; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DateTimeImmutableFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Class `DateTimeImmutable` should be used instead of `DateTime`.', - [new CodeSample("isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - $functionMap = [ - 'date_create' => 'date_create_immutable', - 'date_create_from_format' => 'date_create_immutable_from_format', - ]; - - $isInNamespace = false; - $isImported = false; // e.g. use DateTime; - - for ($index = 0, $limit = $tokens->count(); $index < $limit; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_NAMESPACE)) { - $isInNamespace = true; - - continue; - } - - if ($isInNamespace && $token->isGivenKind(\T_USE)) { - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if ('datetime' !== strtolower($tokens[$nextIndex]->getContent())) { - continue; - } - - $nextNextIndex = $tokens->getNextMeaningfulToken($nextIndex); - - if ($tokens[$nextNextIndex]->equals(';')) { - $isImported = true; - } - - $index = $nextNextIndex; - - continue; - } - - if (!$token->isGivenKind(\T_STRING)) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prevIndex]->isGivenKind(\T_FUNCTION)) { - continue; - } - - $lowercaseContent = strtolower($token->getContent()); - - if ('datetime' === $lowercaseContent) { - $this->fixClassUsage($tokens, $index, $isInNamespace, $isImported); - $limit = $tokens->count(); // update limit, as fixing class usage may insert new token - - continue; - } - - if (isset($functionMap[$lowercaseContent]) && $functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - $tokens[$index] = new Token([\T_STRING, $functionMap[$lowercaseContent]]); - } - } - } - - private function fixClassUsage(Tokens $tokens, int $index, bool $isInNamespace, bool $isImported): void - { - $nextIndex = $tokens->getNextMeaningfulToken($index); - if ($tokens[$nextIndex]->isGivenKind(\T_DOUBLE_COLON)) { - $nextNextIndex = $tokens->getNextMeaningfulToken($nextIndex); - if ($tokens[$nextNextIndex]->isGivenKind(\T_STRING)) { - $nextNextNextIndex = $tokens->getNextMeaningfulToken($nextNextIndex); - if (!$tokens[$nextNextNextIndex]->equals('(')) { - return; - } - } - } - - $isUsedAlone = false; // e.g. new DateTime(); - $isUsedWithLeadingBackslash = false; // e.g. new \DateTime(); - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $prevPrevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - if (!$tokens[$prevPrevIndex]->isGivenKind(\T_STRING)) { - $isUsedWithLeadingBackslash = true; - } - } elseif (!$tokens[$prevIndex]->isGivenKind(\T_DOUBLE_COLON) && !$tokens[$prevIndex]->isObjectOperator()) { - $isUsedAlone = true; - } - - if ($isUsedWithLeadingBackslash || $isUsedAlone && ($isInNamespace && $isImported || !$isInNamespace)) { - $tokens[$index] = new Token([\T_STRING, \DateTimeImmutable::class]); - if ($isInNamespace && $isUsedAlone) { - $tokens->insertAt($index, new Token([\T_NS_SEPARATOR, '\\'])); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php deleted file mode 100644 index bf0f10f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php +++ /dev/null @@ -1,236 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Comment; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\CommentsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Utils; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * ignored_tags?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * ignored_tags: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CommentToPhpdocFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var list - */ - private array $ignoredTags = []; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_COMMENT); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run before GeneralPhpdocAnnotationRemoveFixer, GeneralPhpdocTagRenameFixer, NoBlankLinesAfterPhpdocFixer, NoEmptyPhpdocFixer, NoSuperfluousPhpdocTagsFixer, PhpdocAddMissingParamAnnotationFixer, PhpdocAlignFixer, PhpdocAnnotationWithoutDotFixer, PhpdocArrayTypeFixer, PhpdocInlineTagNormalizerFixer, PhpdocLineSpanFixer, PhpdocListTypeFixer, PhpdocNoAccessFixer, PhpdocNoAliasTagFixer, PhpdocNoDuplicateTypesFixer, PhpdocNoEmptyReturnFixer, PhpdocNoPackageFixer, PhpdocNoUselessInheritdocFixer, PhpdocOrderByValueFixer, PhpdocOrderFixer, PhpdocParamOrderFixer, PhpdocReadonlyClassCommentToKeywordFixer, PhpdocReturnSelfReferenceFixer, PhpdocSeparationFixer, PhpdocSingleLineVarSpacingFixer, PhpdocSummaryFixer, PhpdocTagCasingFixer, PhpdocTagNoNamedArgumentsFixer, PhpdocTagTypeFixer, PhpdocToCommentFixer, PhpdocToParamTypeFixer, PhpdocToPropertyTypeFixer, PhpdocToReturnTypeFixer, PhpdocTrimConsecutiveBlankLineSeparationFixer, PhpdocTrimFixer, PhpdocTypesNoDuplicatesFixer, PhpdocTypesOrderFixer, PhpdocVarAnnotationCorrectOrderFixer, PhpdocVarWithoutNameFixer. - * Must run after AlignMultilineCommentFixer. - */ - public function getPriority(): int - { - // Should be run before all other PHPDoc fixers - return 26; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Comments with annotation should be docblock when used on structural elements.', - [ - new CodeSample(" ['todo']]), - ], - null, - 'Risky as new docblocks might mean more, e.g. a Doctrine entity might have a new column in database.', - ); - } - - protected function configurePostNormalisation(): void - { - $this->ignoredTags = array_map( - static fn (string $tag): string => strtolower($tag), - $this->configuration['ignored_tags'], - ); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('ignored_tags', 'List of ignored tags.')) - ->setAllowedTypes(['string[]']) - ->setDefault([]) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $commentsAnalyzer = new CommentsAnalyzer(); - - for ($index = 0, $limit = \count($tokens); $index < $limit; ++$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_COMMENT)) { - continue; - } - - if ($commentsAnalyzer->isHeaderComment($tokens, $index)) { - continue; - } - - if (!$commentsAnalyzer->isBeforeStructuralElement($tokens, $index)) { - continue; - } - - if (Preg::match('~(?:#|//|/\*+|\R(?:\s*\*)?)\s*\@(?=\w+-(ignore|suppress))([a-zA-Z0-9_\\\-]+)(?=\s|\(|$)~', $tokens[$index]->getContent())) { - continue; - } - - $commentIndices = $commentsAnalyzer->getCommentBlockIndices($tokens, $index); - - if ($this->isCommentCandidate($tokens, $commentIndices)) { - $this->fixComment($tokens, $commentIndices); - } - - $index = max($commentIndices); - } - } - - /** - * @param list $indices - */ - private function isCommentCandidate(Tokens $tokens, array $indices): bool - { - return array_reduce( - $indices, - function (bool $carry, int $index) use ($tokens): bool { - if ($carry) { - return true; - } - if (!Preg::match('~(?:#|//|/\*+|\R(?:\s*\*)?)\s*\@([a-zA-Z0-9_\\\-]+)(?=\s|\(|$)~', $tokens[$index]->getContent(), $matches)) { - return false; - } - - return !\in_array(strtolower($matches[1]), $this->ignoredTags, true); - }, - false, - ); - } - - /** - * @param non-empty-list $indices - */ - private function fixComment(Tokens $tokens, array $indices): void - { - if (1 === \count($indices)) { - $this->fixCommentSingleLine($tokens, $indices[0]); - } else { - $this->fixCommentMultiLine($tokens, $indices); - } - } - - private function fixCommentSingleLine(Tokens $tokens, int $index): void - { - $message = $this->getMessage($tokens[$index]->getContent()); - - if ('' !== trim(substr($message, 0, 1))) { - $message = ' '.$message; - } - - if ('' !== trim(substr($message, -1))) { - $message .= ' '; - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, '/**'.$message.'*/']); - } - - /** - * @param non-empty-list $indices - */ - private function fixCommentMultiLine(Tokens $tokens, array $indices): void - { - $startIndex = $indices[0]; - $indent = Utils::calculateTrailingWhitespaceIndent($tokens[$startIndex - 1]); - - $newContent = '/**'.$this->whitespacesConfig->getLineEnding(); - $count = max($indices); - - for ($index = $startIndex; $index <= $count; ++$index) { - if (!$tokens[$index]->isComment()) { - continue; - } - if (str_contains($tokens[$index]->getContent(), '*/')) { - return; - } - $message = $this->getMessage($tokens[$index]->getContent()); - if ('' !== trim(substr($message, 0, 1))) { - $message = ' '.$message; - } - $newContent .= $indent.' *'.$message.$this->whitespacesConfig->getLineEnding(); - } - - for ($index = $startIndex; $index <= $count; ++$index) { - $tokens->clearAt($index); - } - - $newContent .= $indent.' */'; - - $tokens->insertAt($startIndex, new Token([\T_DOC_COMMENT, $newContent])); - } - - private function getMessage(string $content): string - { - if (str_starts_with($content, '#')) { - return substr($content, 1); - } - if (str_starts_with($content, '//')) { - return substr($content, 2); - } - - return rtrim(ltrim($content, '/*'), '*/'); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php deleted file mode 100644 index e3cf0f6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php +++ /dev/null @@ -1,550 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Comment; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\PregException; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * comment_type?: 'PHPDoc'|'comment', - * header: string, - * location?: 'after_declare_strict'|'after_open', - * separate?: 'both'|'bottom'|'none'|'top', - * validator?: null|string, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * comment_type: 'PHPDoc'|'comment', - * header: string, - * location: 'after_declare_strict'|'after_open', - * separate: 'both'|'bottom'|'none'|'top', - * validator: null|string, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Antonio J. García Lagar - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class HeaderCommentFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const HEADER_PHPDOC = 'PHPDoc'; - - /** - * @internal - */ - public const HEADER_COMMENT = 'comment'; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Add, replace or remove header comment.', - [ - new CodeSample( - <<<'PHP' - 'Made with love.', - ], - ), - new CodeSample( - <<<'PHP' - 'Made with love.', - 'comment_type' => self::HEADER_PHPDOC, - 'location' => 'after_open', - 'separate' => 'bottom', - ], - ), - new CodeSample( - <<<'PHP' - 'Made with love.', - 'comment_type' => self::HEADER_COMMENT, - 'location' => 'after_declare_strict', - ], - ), - new CodeSample( - <<<'PHP' - 'Made with love.', - 'validator' => '/Made with love(?P.*)??/s', - 'comment_type' => self::HEADER_COMMENT, - 'location' => 'after_declare_strict', - ], - ), - new CodeSample( - <<<'PHP' - '', - ], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isMonolithicPhp() && !$tokens->isTokenKindFound(\T_OPEN_TAG_WITH_ECHO); - } - - /** - * {@inheritdoc} - * - * Must run before BlankLinesBeforeNamespaceFixer, SingleBlankLineBeforeNamespaceFixer, SingleLineCommentStyleFixer. - * Must run after DeclareStrictTypesFixer, NoBlankLinesAfterPhpdocFixer. - */ - public function getPriority(): int - { - // When this fixer is configured with ["separate" => "bottom", "comment_type" => "PHPDoc"] - // and the target file has no namespace or declare() construct, - // the fixed header comment gets trimmed by NoBlankLinesAfterPhpdocFixer if we run before it. - return -30; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $headerAsComment = $this->getHeaderAsComment(); - $location = $this->configuration['location']; - $locationIndices = []; - - foreach (['after_open', 'after_declare_strict'] as $possibleLocation) { - $locationIndex = $this->findHeaderCommentInsertionIndex($tokens, $possibleLocation); - - if (!isset($locationIndices[$locationIndex]) || $possibleLocation === $location) { - $locationIndices[$locationIndex] = $possibleLocation; - } - } - - // pre-run to find existing comment, if dynamic content is allowed - if (null !== $this->configuration['validator']) { - foreach ($locationIndices as $possibleLocation) { - // figure out where the comment should be placed - $headerNewIndex = $this->findHeaderCommentInsertionIndex($tokens, $possibleLocation); - - // check if there is already a comment - $headerCurrentIndex = $this->findHeaderCommentCurrentIndex($tokens, $headerAsComment, $headerNewIndex - 1); - - if (null === $headerCurrentIndex) { - continue; - } - $currentHeaderComment = $tokens[$headerCurrentIndex]->getContent(); - - if ($this->doesTokenFulfillValidator($tokens[$headerCurrentIndex])) { - $headerAsComment = $currentHeaderComment; - } - } - } - - foreach ($locationIndices as $possibleLocation) { - // figure out where the comment should be placed - $headerNewIndex = $this->findHeaderCommentInsertionIndex($tokens, $possibleLocation); - - // check if there is already a comment - $headerCurrentIndex = $this->findHeaderCommentCurrentIndex($tokens, $headerAsComment, $headerNewIndex - 1); - - if (null === $headerCurrentIndex) { - if ('' === $this->configuration['header'] || $possibleLocation !== $location) { - continue; - } - - $this->insertHeader($tokens, $headerAsComment, $headerNewIndex); - - continue; - } - - $currentHeaderComment = $tokens[$headerCurrentIndex]->getContent(); - $sameComment = $headerAsComment === $currentHeaderComment; - $expectedLocation = $possibleLocation === $location; - - if (!$sameComment || !$expectedLocation) { - if ($expectedLocation xor $sameComment) { - $this->removeHeader($tokens, $headerCurrentIndex); - } - - if ('' === $this->configuration['header']) { - continue; - } - - if ($possibleLocation === $location) { - $this->insertHeader($tokens, $headerAsComment, $headerNewIndex); - } - - continue; - } - - $this->fixWhiteSpaceAroundHeader($tokens, $headerCurrentIndex); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $fixerName = $this->getName(); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('header', 'Proper header content.')) - ->setAllowedTypes(['string']) - ->setNormalizer(static function (Options $options, string $value) use ($fixerName): string { - if ('' === trim($value)) { - return ''; - } - - if (str_contains($value, '*/')) { - throw new InvalidFixerConfigurationException($fixerName, 'Cannot use \'*/\' in header.'); - } - - return $value; - }) - ->getOption(), - (new FixerOptionBuilder('validator', 'RegEx validator for header content.')) - ->setAllowedTypes(['string', 'null']) - ->setNormalizer(static function (Options $options, ?string $value) use ($fixerName): ?string { - if (null !== $value) { - try { - Preg::match($value, ''); - } catch (PregException $exception) { - throw new InvalidFixerConfigurationException($fixerName, 'Provided RegEx is not valid.'); - } - } - - return $value; - }) - ->setDefault(null) - ->getOption(), - (new FixerOptionBuilder('comment_type', 'Comment syntax type.')) - ->setAllowedValues([self::HEADER_PHPDOC, self::HEADER_COMMENT]) - ->setDefault(self::HEADER_COMMENT) - ->getOption(), - (new FixerOptionBuilder('location', 'The location of the inserted header.')) - ->setAllowedValues(['after_open', 'after_declare_strict']) - ->setDefault('after_declare_strict') - ->getOption(), - (new FixerOptionBuilder('separate', 'Whether the header should be separated from the file content with a new line.')) - ->setAllowedValues(['both', 'top', 'bottom', 'none']) - ->setDefault('both') - ->getOption(), - ]); - } - - private function doesTokenFulfillValidator(Token $token): bool - { - if (null === $this->configuration['validator']) { - throw new \LogicException(\sprintf("Cannot call '%s' method while missing config:validator.", __METHOD__)); - } - $currentHeaderComment = $token->getContent(); - - $lines = implode("\n", array_map( - static fn (string $line): string => ' *' === $line ? '' : (str_starts_with($line, ' * ') ? substr($line, 3) : $line), - \array_slice(explode("\n", $currentHeaderComment), 1, -1), - )); - - return Preg::match($this->configuration['validator'], $lines); - } - - /** - * Enclose the given text in a comment block. - */ - private function getHeaderAsComment(): string - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - $comment = (self::HEADER_COMMENT === $this->configuration['comment_type'] ? '/*' : '/**').$lineEnding; - $lines = explode("\n", str_replace("\r", '', $this->configuration['header'])); - - foreach ($lines as $line) { - $comment .= rtrim(' * '.$line).$lineEnding; - } - - return $comment.' */'; - } - - private function findHeaderCommentCurrentIndex(Tokens $tokens, string $headerAsComment, int $headerNewIndex): ?int - { - $index = $tokens->getNextNonWhitespace($headerNewIndex); - - if (null === $index || !$tokens[$index]->isComment()) { - return null; - } - - $next = $index + 1; - - if (!isset($tokens[$next]) || \in_array($this->configuration['separate'], ['top', 'none'], true) || !$tokens[$index]->isGivenKind(\T_DOC_COMMENT)) { - return $index; - } - - if ($tokens[$next]->isWhitespace()) { - if (!Preg::match('/^\h*\R\h*$/D', $tokens[$next]->getContent())) { - return $index; - } - - ++$next; - } - - if (!isset($tokens[$next]) || !$tokens[$next]->isClassy() && !$tokens[$next]->isGivenKind(\T_FUNCTION)) { - return $index; - } - - if ( - $headerAsComment === $tokens[$index]->getContent() - || (null !== $this->configuration['validator'] && $this->doesTokenFulfillValidator($tokens[$index])) - ) { - return $index; - } - - return null; - } - - /** - * Find the index where the header comment must be inserted. - */ - private function findHeaderCommentInsertionIndex(Tokens $tokens, string $location): int - { - $openTagIndex = $tokens[0]->isGivenKind(\T_INLINE_HTML) ? 1 : 0; - - if ('after_open' === $location) { - return $openTagIndex + 1; - } - - $index = $tokens->getNextMeaningfulToken($openTagIndex); - - if (null === $index) { - return $openTagIndex + 1; // file without meaningful tokens but an open tag, comment should always be placed directly after the open tag - } - - if (!$tokens[$index]->isGivenKind(\T_DECLARE)) { - return $openTagIndex + 1; - } - - $next = $tokens->getNextMeaningfulToken($index); - - if (null === $next || !$tokens[$next]->equals('(')) { - return $openTagIndex + 1; - } - - $next = $tokens->getNextMeaningfulToken($next); - - if (null === $next || !$tokens[$next]->equals([\T_STRING, 'strict_types'], false)) { - return $openTagIndex + 1; - } - - $next = $tokens->getNextMeaningfulToken($next); - - if (null === $next || !$tokens[$next]->equals('=')) { - return $openTagIndex + 1; - } - - $next = $tokens->getNextMeaningfulToken($next); - - if (null === $next || !$tokens[$next]->isGivenKind(\T_LNUMBER)) { - return $openTagIndex + 1; - } - - $next = $tokens->getNextMeaningfulToken($next); - - if (null === $next || !$tokens[$next]->equals(')')) { - return $openTagIndex + 1; - } - - $next = $tokens->getNextMeaningfulToken($next); - - if (null === $next || !$tokens[$next]->equals(';')) { // don't insert after close tag - return $openTagIndex + 1; - } - - return $next + 1; - } - - private function fixWhiteSpaceAroundHeader(Tokens $tokens, int $headerIndex): void - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - // fix lines after header comment - if ( - ('both' === $this->configuration['separate'] || 'bottom' === $this->configuration['separate']) - && null !== $tokens->getNextMeaningfulToken($headerIndex) - ) { - $expectedLineCount = 2; - } else { - $expectedLineCount = 1; - } - - if ($headerIndex === \count($tokens) - 1) { - $tokens->insertAt($headerIndex + 1, new Token([\T_WHITESPACE, str_repeat($lineEnding, $expectedLineCount)])); - } else { - $lineBreakCount = $this->getLineBreakCount($tokens, $headerIndex, 1); - - if ($lineBreakCount < $expectedLineCount) { - $missing = str_repeat($lineEnding, $expectedLineCount - $lineBreakCount); - - if ($tokens[$headerIndex + 1]->isWhitespace()) { - $tokens[$headerIndex + 1] = new Token([\T_WHITESPACE, $missing.$tokens[$headerIndex + 1]->getContent()]); - } else { - $tokens->insertAt($headerIndex + 1, new Token([\T_WHITESPACE, $missing])); - } - } elseif ($lineBreakCount > $expectedLineCount && $tokens[$headerIndex + 1]->isWhitespace()) { - $newLinesToRemove = $lineBreakCount - $expectedLineCount; - $tokens[$headerIndex + 1] = new Token([ - \T_WHITESPACE, - Preg::replace("/^\\R{{$newLinesToRemove}}/", '', $tokens[$headerIndex + 1]->getContent()), - ]); - } - } - - // fix lines before header comment - $expectedLineCount = 'both' === $this->configuration['separate'] || 'top' === $this->configuration['separate'] ? 2 : 1; - $prev = $tokens->getPrevNonWhitespace($headerIndex); - - $regex = '/\h$/'; - - if ($tokens[$prev]->isGivenKind(\T_OPEN_TAG) && Preg::match($regex, $tokens[$prev]->getContent())) { - $tokens[$prev] = new Token([\T_OPEN_TAG, Preg::replace($regex, $lineEnding, $tokens[$prev]->getContent())]); - } - - $lineBreakCount = $this->getLineBreakCount($tokens, $headerIndex, -1); - - if ($lineBreakCount < $expectedLineCount) { - // because of the way the insert index was determined for header comment there cannot be an empty token here - $tokens->insertAt($headerIndex, new Token([\T_WHITESPACE, str_repeat($lineEnding, $expectedLineCount - $lineBreakCount)])); - } - } - - private function getLineBreakCount(Tokens $tokens, int $index, int $direction): int - { - $whitespace = ''; - - for ($index += $direction; isset($tokens[$index]); $index += $direction) { - $token = $tokens[$index]; - - if ($token->isWhitespace()) { - $whitespace .= $token->getContent(); - - continue; - } - - if (-1 === $direction && $token->isGivenKind(\T_OPEN_TAG)) { - $whitespace .= $token->getContent(); - } - - if ('' !== $token->getContent()) { - break; - } - } - - return substr_count($whitespace, "\n"); - } - - private function removeHeader(Tokens $tokens, int $index): void - { - $prevIndex = $index - 1; - $prevToken = $tokens[$prevIndex]; - $newlineRemoved = false; - - if ($prevToken->isWhitespace()) { - $content = $prevToken->getContent(); - - if (Preg::match('/\R/', $content)) { - $newlineRemoved = true; - } - - $content = Preg::replace('/\R?\h*$/', '', $content); - - $tokens->ensureWhitespaceAtIndex($prevIndex, 0, $content); - } - - $nextIndex = $index + 1; - $nextToken = $tokens[$nextIndex] ?? null; - - if (!$newlineRemoved && null !== $nextToken && $nextToken->isWhitespace()) { - $content = Preg::replace('/^\R/', '', $nextToken->getContent()); - - $tokens->ensureWhitespaceAtIndex($nextIndex, 0, $content); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - - private function insertHeader(Tokens $tokens, string $headerAsComment, int $index): void - { - $tokens->insertAt($index, new Token([self::HEADER_COMMENT === $this->configuration['comment_type'] ? \T_COMMENT : \T_DOC_COMMENT, $headerAsComment])); - $this->fixWhiteSpaceAroundHeader($tokens, $index); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php deleted file mode 100644 index 6ccb979..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Comment; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MultilineCommentOpeningClosingFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'DocBlocks must start with two asterisks, multiline comments must start with a single asterisk, after the opening slash. Both must end with a single asterisk before the closing slash.', - [ - new CodeSample( - <<<'EOT' - isAnyTokenKindsFound([\T_COMMENT, \T_DOC_COMMENT]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - $originalContent = $token->getContent(); - - if ( - !$token->isGivenKind(\T_DOC_COMMENT) - && !($token->isGivenKind(\T_COMMENT) && str_starts_with($originalContent, '/*')) - ) { - continue; - } - - $newContent = $originalContent; - - // Fix opening - if ($token->isGivenKind(\T_COMMENT)) { - $newContent = Preg::replace('/^\/\*{2,}(?!\/)/', '/*', $newContent); - } - - // Fix closing - $newContent = Preg::replace('/(?getId(), $newContent]); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php deleted file mode 100644 index 7c27a4a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php +++ /dev/null @@ -1,164 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Comment; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoEmptyCommentFixer extends AbstractFixer -{ - private const TYPE_HASH = 1; - - private const TYPE_DOUBLE_SLASH = 2; - - private const TYPE_SLASH_ASTERISK = 3; - - /** - * {@inheritdoc} - * - * Must run before NoExtraBlankLinesFixer, NoTrailingWhitespaceFixer, NoWhitespaceInBlankLineFixer, NoWhitespaceInEmptyArrayFixer. - * Must run after PhpdocToCommentFixer. - */ - public function getPriority(): int - { - return 2; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should not be any empty comments.', - [new CodeSample("isTokenKindFound(\T_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = 1, $count = \count($tokens); $index < $count; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_COMMENT)) { - continue; - } - - $blockInfo = $this->getCommentBlock($tokens, $index); - $blockStart = $blockInfo['blockStart']; - $index = $blockInfo['blockEnd']; - $isEmpty = $blockInfo['isEmpty']; - - if (false === $isEmpty) { - continue; - } - - for ($i = $blockStart; $i <= $index; ++$i) { - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - } - } - } - - /** - * Return the start index, end index and a flag stating if the comment block is empty. - * - * @param int $index T_COMMENT index - * - * @return array{blockStart: int, blockEnd: int, isEmpty: bool} - */ - private function getCommentBlock(Tokens $tokens, int $index): array - { - $commentType = $this->getCommentType($tokens[$index]->getContent()); - $empty = $this->isEmptyComment($tokens[$index]->getContent()); - - if (self::TYPE_SLASH_ASTERISK === $commentType) { - return [ - 'blockStart' => $index, - 'blockEnd' => $index, - 'isEmpty' => $empty, - ]; - } - - $start = $index; - $count = \count($tokens); - ++$index; - - for (; $index < $count; ++$index) { - if ($tokens[$index]->isComment()) { - if ($commentType !== $this->getCommentType($tokens[$index]->getContent())) { - break; - } - - if ($empty) { // don't retest if already known the block not being empty - $empty = $this->isEmptyComment($tokens[$index]->getContent()); - } - - continue; - } - - if (!$tokens[$index]->isWhitespace() || $this->getLineBreakCount($tokens, $index, $index + 1) > 1) { - break; - } - } - - return [ - 'blockStart' => $start, - 'blockEnd' => $index - 1, - 'isEmpty' => $empty, - ]; - } - - private function getCommentType(string $content): int - { - if (str_starts_with($content, '#')) { - return self::TYPE_HASH; - } - - if ('*' === $content[1]) { - return self::TYPE_SLASH_ASTERISK; - } - - return self::TYPE_DOUBLE_SLASH; - } - - private function getLineBreakCount(Tokens $tokens, int $whiteStart, int $whiteEnd): int - { - $lineCount = 0; - for ($i = $whiteStart; $i < $whiteEnd; ++$i) { - $lineCount += Preg::matchAll('/\R/u', $tokens[$i]->getContent()); - } - - return $lineCount; - } - - private function isEmptyComment(string $content): bool - { - $type = $this->getCommentType($content); - \assert(\in_array($type, [self::TYPE_HASH, self::TYPE_SLASH_ASTERISK, self::TYPE_DOUBLE_SLASH], true)); - - return Preg::match([ - self::TYPE_HASH => '|^#\s*$|', // single line comment starting with '#' - self::TYPE_SLASH_ASTERISK => '|^/\*[\s\*]*\*+/$|', // comment starting with '/*' and ending with '*/' (but not a PHPDoc) - self::TYPE_DOUBLE_SLASH => '|^//\s*$|', // single line comment starting with '//' - ][$type], $content); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php deleted file mode 100644 index 227649a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php +++ /dev/null @@ -1,77 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Comment; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoTrailingWhitespaceInCommentFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There must be no trailing whitespace at the end of lines in comments and PHPDocs.', - [new CodeSample('isAnyTokenKindsFound([\T_COMMENT, \T_DOC_COMMENT]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(\T_DOC_COMMENT)) { - $tokens[$index] = new Token([\T_DOC_COMMENT, Preg::replace('/(*ANY)[\h]+$/m', '', $token->getContent())]); - - continue; - } - - if ($token->isGivenKind(\T_COMMENT)) { - if (str_starts_with($token->getContent(), '/*')) { - $tokens[$index] = new Token([\T_COMMENT, Preg::replace('/(*ANY)[\h]+$/m', '', $token->getContent())]); - } elseif (isset($tokens[$index + 1]) && $tokens[$index + 1]->isWhitespace()) { - $trimmedContent = ltrim($tokens[$index + 1]->getContent(), " \t"); - $tokens->ensureWhitespaceAtIndex($index + 1, 0, $trimmedContent); - } - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentSpacingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentSpacingFixer.php deleted file mode 100644 index 7128fac..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentSpacingFixer.php +++ /dev/null @@ -1,115 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Comment; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleLineCommentSpacingFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Single-line comments must have proper spacing.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 1; 0 <= $index; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_COMMENT)) { - continue; - } - - $content = $token->getContent(); - $contentLength = \strlen($content); - - if ('/' === $content[0]) { - if ($contentLength < 3) { - continue; // cheap check for "//" - } - - if ('*' === $content[1]) { // slash asterisk comment - if ($contentLength < 5 || '*' === $content[2] || str_contains($content, "\n")) { - continue; // cheap check for "/**/", comment that looks like a PHPDoc, or multi line comment - } - - $newContent = rtrim(substr($content, 0, -2)).' '.substr($content, -2); - $newContent = $this->fixCommentLeadingSpace($newContent, '/*'); - } else { // double slash comment - $newContent = $this->fixCommentLeadingSpace($content, '//'); - } - } else { // hash comment - if ($contentLength < 2 || '[' === $content[1]) { // cheap check for "#" or annotation (like) comment - continue; - } - - $newContent = $this->fixCommentLeadingSpace($content, '#'); - } - - if ($newContent !== $content) { - $tokens[$index] = new Token([\T_COMMENT, $newContent]); - } - } - } - - // fix space between comment open and leading text - private function fixCommentLeadingSpace(string $content, string $prefix): string - { - if (Preg::match(\sprintf('@^%s\h+.*$@', preg_quote($prefix, '@')), $content)) { - return $content; - } - - $position = \strlen($prefix); - - return substr($content, 0, $position).' '.substr($content, $position); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php deleted file mode 100644 index 6f828cf..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php +++ /dev/null @@ -1,184 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Comment; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * comment_types?: list<'asterisk'|'hash'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * comment_types: list<'asterisk'|'hash'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleLineCommentStyleFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private bool $asteriskEnabled; - - private bool $hashEnabled; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Single-line comments and multi-line comments with only one line of actual content should use the `//` syntax.', - [ - new CodeSample( - <<<'PHP' - ['asterisk']], - ), - new CodeSample( - " ['hash']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after HeaderCommentFixer, NoUselessReturnFixer, PhpdocToCommentFixer. - */ - public function getPriority(): int - { - return -31; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_COMMENT); - } - - protected function configurePostNormalisation(): void - { - $this->asteriskEnabled = \in_array('asterisk', $this->configuration['comment_types'], true); - $this->hashEnabled = \in_array('hash', $this->configuration['comment_types'], true); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_COMMENT)) { - continue; - } - - $content = $token->getContent(); - - /** @TODO PHP 8.0 - no more need for `?: ''` */ - $commentContent = substr($content, 2, -2) ?: ''; // @phpstan-ignore-line - - if ($this->hashEnabled && str_starts_with($content, '#')) { - if (isset($content[1]) && '[' === $content[1]) { - continue; // This might be an attribute on PHP8, do not change - } - - $tokens[$index] = new Token([$token->getId(), '//'.substr($content, 1)]); - - continue; - } - - if ( - !$this->asteriskEnabled - || str_contains($commentContent, '?>') - || !str_starts_with($content, '/*') - || Preg::match('/[^\s\*].*\R.*[^\s\*]/s', $commentContent) - ) { - continue; - } - - $nextTokenIndex = $index + 1; - if (isset($tokens[$nextTokenIndex])) { - $nextToken = $tokens[$nextTokenIndex]; - if (!$nextToken->isWhitespace() || !Preg::match('/\R/', $nextToken->getContent())) { - continue; - } - - $tokens[$nextTokenIndex] = new Token([$nextToken->getId(), ltrim($nextToken->getContent(), " \t")]); - } - - $content = '//'; - if (Preg::match('/[^\s\*]/', $commentContent)) { - $content = '// '.Preg::replace('/[\s\*]*([^\s\*](?:.+[^\s\*])?)[\s\*]*/', '\1', $commentContent); - } - $tokens[$index] = new Token([$token->getId(), $content]); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('comment_types', 'List of comment types to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset(['asterisk', 'hash'])]) - ->setDefault(['asterisk', 'hash']) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php deleted file mode 100644 index 790d158..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php +++ /dev/null @@ -1,52 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; - -/** - * @template TFixerInputConfig of array - * @template TFixerComputedConfig of array - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface ConfigurableFixerInterface extends FixerInterface -{ - /** - * Set configuration. - * - * New configuration must override current one, not patch it. - * Using empty array makes fixer to use default configuration - * (or reset configuration from previously configured back to default one). - * - * Some fixers may have no configuration, then - simply don't implement this interface. - * Other ones may have configuration that will change behaviour of fixer, - * eg `php_unit_strict` fixer allows to configure which methods should be fixed. - * Finally, some fixers need configuration to work, eg `header_comment`. - * - * @param TFixerInputConfig $configuration configuration depends on Fixer - * - * @throws InvalidFixerConfigurationException - */ - public function configure(array $configuration): void; - - /** - * Defines the available configuration options of the fixer. - */ - public function getConfigurationDefinition(): FixerConfigurationResolverInterface; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerTrait.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerTrait.php deleted file mode 100644 index 87646a0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerTrait.php +++ /dev/null @@ -1,128 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\ConfigurationException\InvalidForEnvFixerConfigurationException; -use PhpCsFixer\ConfigurationException\RequiredFixerConfigurationException; -use PhpCsFixer\Console\Application; -use PhpCsFixer\FixerConfiguration\DeprecatedFixerOption; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\InvalidOptionsForEnvException; -use PhpCsFixer\Future; -use Symfony\Component\OptionsResolver\Exception\ExceptionInterface; -use Symfony\Component\OptionsResolver\Exception\MissingOptionsException; - -/** - * @internal - * - * @template TFixerInputConfig of array - * @template TFixerComputedConfig of array - * - * @phpstan-require-implements ConfigurableFixerInterface - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -trait ConfigurableFixerTrait -{ - /** - * @var null|TFixerComputedConfig - */ - protected ?array $configuration = null; - - private ?FixerConfigurationResolverInterface $configurationDefinition = null; - - /** - * @param TFixerInputConfig $configuration - */ - final public function configure(array $configuration): void - { - $this->configurePreNormalisation($configuration); - - foreach ($this->getConfigurationDefinition()->getOptions() as $option) { - if (!$option instanceof DeprecatedFixerOption) { - continue; - } - - $name = $option->getName(); - if (\array_key_exists($name, $configuration)) { - Future::triggerDeprecation(new \InvalidArgumentException(\sprintf( - 'Option "%s" for rule "%s" is deprecated and will be removed in version %d.0. %s', - $name, - $this->getName(), - Application::getMajorVersion() + 1, - str_replace('`', '"', $option->getDeprecationMessage()), - ))); - } - } - - try { - $this->configuration = $this->getConfigurationDefinition()->resolve($configuration); // @phpstan-ignore-line ->configuration typehint is autogenerated base on ConfigurationDefinition - } catch (MissingOptionsException $exception) { - throw new RequiredFixerConfigurationException( - $this->getName(), - \sprintf('Missing required configuration: %s', $exception->getMessage()), - $exception, - ); - } catch (InvalidOptionsForEnvException $exception) { - throw new InvalidForEnvFixerConfigurationException( - $this->getName(), - \sprintf('Invalid configuration for env: %s', $exception->getMessage()), - $exception, - ); - } catch (ExceptionInterface $exception) { - throw new InvalidFixerConfigurationException( - $this->getName(), - \sprintf('Invalid configuration: %s', $exception->getMessage()), - $exception, - ); - } - - $this->configurePostNormalisation(); - } - - final public function getConfigurationDefinition(): FixerConfigurationResolverInterface - { - if (null === $this->configurationDefinition) { - $this->configurationDefinition = $this->createConfigurationDefinition(); - } - - return $this->configurationDefinition; - } - - abstract public function getName(): string; - - /** - * One can override me. - * - * @param TFixerInputConfig $configuration - */ - protected function configurePreNormalisation(array &$configuration): void - { - // 🤔 ideally this method won't be needed, maybe we can remove it over time - } - - /** - * One can override me. - */ - protected function configurePostNormalisation(): void - { - // 🤔 ideally this method won't be needed, maybe we can remove it over time - } - - abstract protected function createConfigurationDefinition(): FixerConfigurationResolverInterface; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php deleted file mode 100644 index eb82e43..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php +++ /dev/null @@ -1,307 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ConstantNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * exclude?: list, - * fix_built_in?: bool, - * include?: list, - * scope?: 'all'|'namespaced', - * strict?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * exclude: list, - * fix_built_in: bool, - * include: list, - * scope: 'all'|'namespaced', - * strict: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NativeConstantInvocationFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array - */ - private array $constantsToEscape = []; - - /** - * @var array - */ - private array $caseInsensitiveConstantsToEscape = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Add leading `\` before constant invocation of internal constant to speed up resolving. Constant name match is case-sensitive, except for `null`, `false` and `true`.', - [ - new CodeSample(" 'namespaced'], - ), - new CodeSample( - " [ - 'MY_CUSTOM_PI', - ], - ], - ), - new CodeSample( - " false, - 'include' => [ - 'MY_CUSTOM_PI', - ], - ], - ), - new CodeSample( - " [ - 'M_PI', - ], - ], - ), - ], - null, - 'Risky when any of the constants are namespaced or overridden.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before GlobalNamespaceImportFixer. - * Must run after FunctionToConstantFixer. - */ - public function getPriority(): int - { - return 1; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $uniqueConfiguredExclude = array_unique($this->configuration['exclude']); - - // Case-sensitive constants handling - $constantsToEscape = array_values($this->configuration['include']); - - if (true === $this->configuration['fix_built_in']) { - $getDefinedConstants = get_defined_constants(true); - unset($getDefinedConstants['user']); - foreach ($getDefinedConstants as $constants) { - $constantsToEscape = [...$constantsToEscape, ...array_keys($constants)]; - } - } - - $constantsToEscape = array_diff( - array_unique($constantsToEscape), - $uniqueConfiguredExclude, - ); - - // Case-insensitive constants handling - $caseInsensitiveConstantsToEscape = []; - - foreach ($constantsToEscape as $constantIndex => $constant) { - $loweredConstant = strtolower($constant); - if (\in_array($loweredConstant, ['null', 'false', 'true'], true)) { - $caseInsensitiveConstantsToEscape[] = $loweredConstant; - unset($constantsToEscape[$constantIndex]); - } - } - - $caseInsensitiveConstantsToEscape = array_diff( - array_unique($caseInsensitiveConstantsToEscape), - array_map( - static fn (string $function): string => strtolower($function), - $uniqueConfiguredExclude, - ), - ); - - // Store the cache - $this->constantsToEscape = array_fill_keys($constantsToEscape, true); - ksort($this->constantsToEscape); - - $this->caseInsensitiveConstantsToEscape = array_fill_keys($caseInsensitiveConstantsToEscape, true); - ksort($this->caseInsensitiveConstantsToEscape); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if ('all' === $this->configuration['scope']) { - $this->fixConstantInvocations($tokens, 0, \count($tokens) - 1); - - return; - } - - $namespaces = $tokens->getNamespaceDeclarations(); - - // 'scope' is 'namespaced' here - foreach (array_reverse($namespaces) as $namespace) { - if ($namespace->isGlobalNamespace()) { - continue; - } - - $this->fixConstantInvocations($tokens, $namespace->getScopeStartIndex(), $namespace->getScopeEndIndex()); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $constantChecker = static function (array $value): bool { - foreach ($value as $constantName) { - if (trim($constantName) !== $constantName) { - throw new InvalidOptionsException(\sprintf( - 'Each element must be a non-empty, trimmed string, got "%s" instead.', - get_debug_type($constantName), - )); - } - } - - return true; - }; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('fix_built_in', 'Whether to fix constants returned by `get_defined_constants`. User constants are not accounted in this list and must be specified in the include one.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('include', 'List of additional constants to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([$constantChecker]) - ->setDefault([]) - ->getOption(), - (new FixerOptionBuilder('exclude', 'List of constants to ignore.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([$constantChecker]) - ->setDefault(['null', 'false', 'true']) - ->getOption(), - (new FixerOptionBuilder('scope', 'Only fix constant invocations that are made within a namespace or fix all.')) - ->setAllowedValues(['all', 'namespaced']) - ->setDefault('all') - ->getOption(), - (new FixerOptionBuilder('strict', 'Whether leading `\` of constant invocation not meant to have it should be removed.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - private function fixConstantInvocations(Tokens $tokens, int $startIndex, int $endIndex): void - { - $useDeclarations = (new NamespaceUsesAnalyzer())->getDeclarationsFromTokens($tokens); - $useConstantDeclarations = []; - - foreach ($useDeclarations as $use) { - if ($use->isConstant()) { - $useConstantDeclarations[$use->getShortName()] = true; - } - } - - $tokenAnalyzer = new TokensAnalyzer($tokens); - - for ($index = $endIndex; $index > $startIndex; --$index) { - $token = $tokens[$index]; - - // test if we are at a constant call - if (!$token->isGivenKind(\T_STRING)) { - continue; - } - - if (!$tokenAnalyzer->isConstantInvocation($index)) { - continue; - } - - $tokenContent = $token->getContent(); - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if (!isset($this->constantsToEscape[$tokenContent]) && !isset($this->caseInsensitiveConstantsToEscape[strtolower($tokenContent)])) { - if (false === $this->configuration['strict']) { - continue; - } - - if (!$tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - continue; - } - - $prevPrevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - - if ($tokens[$prevPrevIndex]->isGivenKind(\T_STRING)) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($prevIndex); - - continue; - } - - if (isset($useConstantDeclarations[$tokenContent])) { - continue; - } - - if ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - continue; - } - - $tokens->insertAt($index, new Token([\T_NS_SEPARATOR, '\\'])); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureBracesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureBracesFixer.php deleted file mode 100644 index 81e49b2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureBracesFixer.php +++ /dev/null @@ -1,220 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\AlternativeSyntaxAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ControlStructureBracesFixer extends AbstractFixer -{ - private const CONTROL_TOKENS = [ - \T_DECLARE, - \T_DO, - \T_ELSE, - \T_ELSEIF, - \T_FINALLY, - \T_FOR, - \T_FOREACH, - \T_IF, - \T_WHILE, - \T_TRY, - \T_CATCH, - \T_SWITCH, - ]; - - private const CONTROL_CONTINUATION_TOKENS = [ - \T_IF => [\T_ELSE, \T_ELSEIF], - \T_DO => [\T_WHILE], - \T_TRY => [\T_CATCH, \T_FINALLY], - ]; - - private const FINAL_CONTROL_CONTINUATION_TOKENS = [ - \T_IF => [\T_ELSE], - \T_DO => [], - \T_TRY => [\T_FINALLY], - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The body of each control structure MUST be enclosed within braces.', - [new CodeSample("count() - 1; 0 <= $index; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(self::CONTROL_TOKENS)) { - continue; - } - - if ( - $token->isGivenKind(\T_ELSE) - && $tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind(\T_IF) - ) { - continue; - } - - $parenthesisEndIndex = $this->findParenthesisEnd($tokens, $index); - $nextAfterParenthesisEndIndex = $tokens->getNextMeaningfulToken($parenthesisEndIndex); - $tokenAfterParenthesis = $tokens[$nextAfterParenthesisEndIndex]; - - if ($tokenAfterParenthesis->equalsAny([';', '{', ':', [\T_CLOSE_TAG]])) { - continue; - } - - $statementEndIndex = null; - - if ($tokenAfterParenthesis->isGivenKind([\T_IF, \T_FOR, \T_FOREACH, \T_SWITCH, \T_WHILE])) { - $tokenAfterParenthesisBlockEnd = $tokens->findBlockEnd( // go to ')' - Tokens::BLOCK_TYPE_PARENTHESIS, - $tokens->getNextMeaningfulToken($nextAfterParenthesisEndIndex), - ); - - if ($tokens[$tokens->getNextMeaningfulToken($tokenAfterParenthesisBlockEnd)]->equals(':')) { - $statementEndIndex = $alternativeSyntaxAnalyzer->findAlternativeSyntaxBlockEnd($tokens, $nextAfterParenthesisEndIndex); - - $tokenAfterStatementEndIndex = $tokens->getNextMeaningfulToken($statementEndIndex); - if ($tokens[$tokenAfterStatementEndIndex]->equals(';')) { - $statementEndIndex = $tokenAfterStatementEndIndex; - } - } - } - - if (null === $statementEndIndex) { - $statementEndIndex = $this->findStatementEnd($tokens, $parenthesisEndIndex); - } - - $tokensToInsertAfterStatement = [ - new Token([\T_WHITESPACE, ' ']), - new Token('}'), - ]; - - if (!$tokens[$statementEndIndex]->equalsAny([';', '}'])) { - array_unshift($tokensToInsertAfterStatement, new Token(';')); - } - - $tokens->insertSlices([$statementEndIndex + 1 => $tokensToInsertAfterStatement]); - - // insert opening brace - $tokens->insertSlices([$parenthesisEndIndex + 1 => [ - new Token([\T_WHITESPACE, ' ']), - new Token('{'), - ]]); - } - } - - private function findParenthesisEnd(Tokens $tokens, int $structureTokenIndex): int - { - $nextIndex = $tokens->getNextMeaningfulToken($structureTokenIndex); - $nextToken = $tokens[$nextIndex]; - - if (!$nextToken->equals('(')) { - return $structureTokenIndex; - } - - return $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextIndex); - } - - private function findStatementEnd(Tokens $tokens, int $parenthesisEndIndex): int - { - $nextIndex = $tokens->getNextMeaningfulToken($parenthesisEndIndex); - \assert(\is_int($nextIndex)); - - $nextToken = $tokens[$nextIndex]; - - if ($nextToken->equals('{')) { - return $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $nextIndex); - } - - if ($nextToken->isGivenKind(self::CONTROL_TOKENS)) { - $parenthesisEndIndex = $this->findParenthesisEnd($tokens, $nextIndex); - - $endIndex = $this->findStatementEnd($tokens, $parenthesisEndIndex); - - if ($nextToken->isGivenKind([\T_IF, \T_TRY, \T_DO])) { - $openingTokenKind = $nextToken->getId(); - - while (true) { - $nextIndex = $tokens->getNextMeaningfulToken($endIndex); - \assert(isset(self::CONTROL_CONTINUATION_TOKENS[$openingTokenKind])); - if (null !== $nextIndex && $tokens[$nextIndex]->isGivenKind(self::CONTROL_CONTINUATION_TOKENS[$openingTokenKind])) { - $parenthesisEndIndex = $this->findParenthesisEnd($tokens, $nextIndex); - - $endIndex = $this->findStatementEnd($tokens, $parenthesisEndIndex); - - \assert(isset(self::FINAL_CONTROL_CONTINUATION_TOKENS[$openingTokenKind])); - if ($tokens[$nextIndex]->isGivenKind(self::FINAL_CONTROL_CONTINUATION_TOKENS[$openingTokenKind])) { - return $endIndex; - } - } else { - break; - } - } - } - - return $endIndex; - } - - $index = $parenthesisEndIndex; - - while (true) { - $token = $tokens[++$index]; - - // if there is some block in statement (eg lambda function) we need to skip it - if ($token->equals('{')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if ($token->equals(';')) { - return $index; - } - - if ($token->isGivenKind(\T_CLOSE_TAG)) { - return $tokens->getPrevNonWhitespace($index); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureContinuationPositionFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureContinuationPositionFixer.php deleted file mode 100644 index 937a4e6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureContinuationPositionFixer.php +++ /dev/null @@ -1,163 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * position?: 'next_line'|'same_line', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * position: 'next_line'|'same_line', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ControlStructureContinuationPositionFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const NEXT_LINE = 'next_line'; - - /** - * @internal - */ - public const SAME_LINE = 'same_line'; - - private const CONTROL_CONTINUATION_TOKENS = [ - \T_CATCH, - \T_ELSE, - \T_ELSEIF, - \T_FINALLY, - \T_WHILE, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Control structure continuation keyword must be on the configured line.', - [ - new CodeSample( - <<<'PHP' - self::NEXT_LINE], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(self::CONTROL_CONTINUATION_TOKENS); - } - - /** - * {@inheritdoc} - * - * Must run after ControlStructureBracesFixer. - */ - public function getPriority(): int - { - return parent::getPriority(); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('position', 'The position of the keyword that continues the control structure.')) - ->setAllowedValues([self::NEXT_LINE, self::SAME_LINE]) - ->setDefault(self::SAME_LINE) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->fixControlContinuationBraces($tokens); - } - - private function fixControlContinuationBraces(Tokens $tokens): void - { - for ($index = \count($tokens) - 1; 0 < $index; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(self::CONTROL_CONTINUATION_TOKENS)) { - continue; - } - - $prevIndex = $tokens->getPrevNonWhitespace($index); - $prevToken = $tokens[$prevIndex]; - - if (!$prevToken->equals('}')) { - continue; - } - - if ($token->isGivenKind(\T_WHILE)) { - $prevIndex = $tokens->getPrevMeaningfulToken( - $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $prevIndex), - ); - - if (!$tokens[$prevIndex]->isGivenKind(\T_DO)) { - continue; - } - } - - $tokens->ensureWhitespaceAtIndex( - $index - 1, - 1, - self::NEXT_LINE === $this->configuration['position'] - ? $this->whitespacesConfig->getLineEnding().WhitespacesAnalyzer::detectIndent($tokens, $index) - : ' ', - ); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php deleted file mode 100644 index 7ed9f4a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php +++ /dev/null @@ -1,100 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶5.1. - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ElseifFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The keyword `elseif` should be used instead of `else if` so that all control keywords look like single words.', - [new CodeSample("isAllTokenKindsFound([\T_IF, \T_ELSE]); - } - - /** - * Replace all `else if` (T_ELSE T_IF) with `elseif` (T_ELSEIF). - * - * {@inheritdoc} - */ - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_ELSE)) { - continue; - } - - $ifTokenIndex = $tokens->getNextMeaningfulToken($index); - - // if next meaningful token is not T_IF - continue searching, this is not the case for fixing - if (!$tokens[$ifTokenIndex]->isGivenKind(\T_IF)) { - continue; - } - - // if next meaningful token is T_IF, but uses an alternative syntax - this is not the case for fixing neither - $conditionEndBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $tokens->getNextMeaningfulToken($ifTokenIndex)); - $afterConditionIndex = $tokens->getNextMeaningfulToken($conditionEndBraceIndex); - if ($tokens[$afterConditionIndex]->equals(':')) { - continue; - } - - // now we have T_ELSE following by T_IF with no alternative syntax so we could fix this - // 1. clear whitespaces between T_ELSE and T_IF - $tokens->clearAt($index + 1); - - // 2. change token from T_ELSE into T_ELSEIF - $tokens[$index] = new Token([\T_ELSEIF, 'elseif']); - - // 3. clear succeeding T_IF - $tokens->clearAt($ifTokenIndex); - - $beforeIfTokenIndex = $tokens->getPrevNonWhitespace($ifTokenIndex); - - // 4. clear extra whitespace after T_IF in T_COMMENT,T_WHITESPACE?,T_IF,T_WHITESPACE sequence - if ($tokens[$beforeIfTokenIndex]->isComment() && $tokens[$ifTokenIndex + 1]->isWhitespace()) { - $tokens->clearAt($ifTokenIndex + 1); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopBodyFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopBodyFixer.php deleted file mode 100644 index 2261558..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopBodyFixer.php +++ /dev/null @@ -1,141 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * style?: 'braces'|'semicolon', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * style: 'braces'|'semicolon', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class EmptyLoopBodyFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const STYLE_BRACES = 'braces'; - - private const STYLE_SEMICOLON = 'semicolon'; - - private const TOKEN_LOOP_KINDS = [\T_FOR, \T_FOREACH, \T_WHILE]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Empty loop-body must be in configured style.', - [ - new CodeSample(" self::STYLE_BRACES, - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BracesFixer, NoExtraBlankLinesFixer, NoTrailingWhitespaceFixer. - * Must run after NoEmptyStatementFixer. - */ - public function getPriority(): int - { - return 39; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(self::TOKEN_LOOP_KINDS); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if (self::STYLE_BRACES === $this->configuration['style']) { - $analyzer = new TokensAnalyzer($tokens); - $fixLoop = static function (int $index, int $endIndex) use ($tokens, $analyzer): void { - if ($tokens[$index]->isGivenKind(\T_WHILE) && $analyzer->isWhilePartOfDoWhile($index)) { - return; - } - - $semiColonIndex = $tokens->getNextMeaningfulToken($endIndex); - - if (!$tokens[$semiColonIndex]->equals(';')) { - return; - } - - $tokens[$semiColonIndex] = new Token('{'); - $tokens->insertAt($semiColonIndex + 1, new Token('}')); - }; - } else { - $fixLoop = static function (int $index, int $endIndex) use ($tokens): void { - $braceOpenIndex = $tokens->getNextMeaningfulToken($endIndex); - - if (!$tokens[$braceOpenIndex]->equals('{')) { - return; - } - - $braceCloseIndex = $tokens->getNextNonWhitespace($braceOpenIndex); - - if (!$tokens[$braceCloseIndex]->equals('}')) { - return; - } - - $tokens[$braceOpenIndex] = new Token(';'); - $tokens->clearTokenAndMergeSurroundingWhitespace($braceCloseIndex); - }; - } - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if ($tokens[$index]->isGivenKind(self::TOKEN_LOOP_KINDS)) { - $endIndex = $tokens->getNextTokenOfKind($index, ['(']); // proceed to open '(' - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $endIndex); // proceed to close ')' - $fixLoop($index, $endIndex); // fix loop if needs fixing - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('style', 'Style of empty loop-bodies.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([self::STYLE_BRACES, self::STYLE_SEMICOLON]) - ->setDefault(self::STYLE_SEMICOLON) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopConditionFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopConditionFixer.php deleted file mode 100644 index a303aec..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopConditionFixer.php +++ /dev/null @@ -1,204 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * style?: 'for'|'while', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * style: 'for'|'while', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class EmptyLoopConditionFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const STYLE_FOR = 'for'; - - private const STYLE_WHILE = 'while'; - - private const TOKEN_LOOP_KINDS = [\T_FOR, \T_WHILE]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Empty loop-condition must be in configured style.', - [ - new CodeSample(" self::STYLE_FOR]), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoExtraBlankLinesFixer, NoTrailingWhitespaceFixer. - */ - public function getPriority(): int - { - return 1; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(self::TOKEN_LOOP_KINDS); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if (self::STYLE_WHILE === $this->configuration['style']) { - $candidateLoopKinds = [\T_FOR, \T_WHILE]; - $replacement = [new Token([\T_WHILE, 'while']), new Token([\T_WHITESPACE, ' ']), new Token('('), new Token([\T_STRING, 'true']), new Token(')')]; - - $fixLoop = static function (int $index, int $openIndex, int $endIndex) use ($tokens, $replacement): void { - if (self::isForLoopWithEmptyCondition($tokens, $index, $openIndex, $endIndex)) { - self::clearNotCommentsInRange($tokens, $index, $endIndex); - self::cloneAndInsert($tokens, $index, $replacement); - } elseif (self::isWhileLoopWithEmptyCondition($tokens, $index, $openIndex, $endIndex)) { - $doIndex = self::getDoIndex($tokens, $index); - - if (null !== $doIndex) { - self::clearNotCommentsInRange($tokens, $index, $tokens->getNextMeaningfulToken($endIndex)); // clear including `;` - $tokens->clearAt($doIndex); - self::cloneAndInsert($tokens, $doIndex, $replacement); - } - } - }; - } else { // self::STYLE_FOR - $candidateLoopKinds = [\T_WHILE]; - $replacement = [new Token([\T_FOR, 'for']), new Token('('), new Token(';'), new Token(';'), new Token(')')]; - - $fixLoop = static function (int $index, int $openIndex, int $endIndex) use ($tokens, $replacement): void { - if (!self::isWhileLoopWithEmptyCondition($tokens, $index, $openIndex, $endIndex)) { - return; - } - - $doIndex = self::getDoIndex($tokens, $index); - - if (null === $doIndex) { - self::clearNotCommentsInRange($tokens, $index, $endIndex); - self::cloneAndInsert($tokens, $index, $replacement); - } else { - self::clearNotCommentsInRange($tokens, $index, $tokens->getNextMeaningfulToken($endIndex)); // clear including `;` - $tokens->clearAt($doIndex); - self::cloneAndInsert($tokens, $doIndex, $replacement); - } - }; - } - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if ($tokens[$index]->isGivenKind($candidateLoopKinds)) { - $openIndex = $tokens->getNextTokenOfKind($index, ['(']); // proceed to open '(' - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); // proceed to close ')' - $fixLoop($index, $openIndex, $endIndex); // fix loop if needed - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('style', 'Style of empty loop-condition.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([self::STYLE_WHILE, self::STYLE_FOR]) - ->setDefault(self::STYLE_WHILE) - ->getOption(), - ]); - } - - private static function clearNotCommentsInRange(Tokens $tokens, int $indexStart, int $indexEnd): void - { - for ($i = $indexStart; $i <= $indexEnd; ++$i) { - if (!$tokens[$i]->isComment()) { - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - } - } - } - - /** - * @param list $replacement - */ - private static function cloneAndInsert(Tokens $tokens, int $index, array $replacement): void - { - $replacementClones = []; - - foreach ($replacement as $token) { - $replacementClones[] = clone $token; - } - - $tokens->insertAt($index, $replacementClones); - } - - private static function getDoIndex(Tokens $tokens, int $index): ?int - { - $endIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$endIndex]->equals('}')) { - return null; - } - - $startIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $endIndex); - $index = $tokens->getPrevMeaningfulToken($startIndex); - - return null === $index || !$tokens[$index]->isGivenKind(\T_DO) ? null : $index; - } - - private static function isForLoopWithEmptyCondition(Tokens $tokens, int $index, int $openIndex, int $endIndex): bool - { - if (!$tokens[$index]->isGivenKind(\T_FOR)) { - return false; - } - - $index = $tokens->getNextMeaningfulToken($openIndex); - - if (null === $index || !$tokens[$index]->equals(';')) { - return false; - } - - $index = $tokens->getNextMeaningfulToken($index); - - return null !== $index && $tokens[$index]->equals(';') && $endIndex === $tokens->getNextMeaningfulToken($index); - } - - private static function isWhileLoopWithEmptyCondition(Tokens $tokens, int $index, int $openIndex, int $endIndex): bool - { - if (!$tokens[$index]->isGivenKind(\T_WHILE)) { - return false; - } - - $index = $tokens->getNextMeaningfulToken($openIndex); - - return null !== $index && $tokens[$index]->equals([\T_STRING, 'true']) && $endIndex === $tokens->getNextMeaningfulToken($index); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php deleted file mode 100644 index c3a762d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php +++ /dev/null @@ -1,155 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\BlocksAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Sebastiaan Stok - * @author Dariusz Rumiński - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class IncludeFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Include/Require and file path should be divided with a single space. File path should not be placed within parentheses.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_REQUIRE, \T_REQUIRE_ONCE, \T_INCLUDE, \T_INCLUDE_ONCE]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->clearIncludies($tokens, $this->findIncludies($tokens)); - } - - /** - * @param array $includies - */ - private function clearIncludies(Tokens $tokens, array $includies): void - { - $blocksAnalyzer = new BlocksAnalyzer(); - - foreach ($includies as $includy) { - if (!$tokens[$includy['end']]->isGivenKind(\T_CLOSE_TAG)) { - $afterEndIndex = $tokens->getNextNonWhitespace($includy['end']); - - if (null === $afterEndIndex || !$tokens[$afterEndIndex]->isComment()) { - $tokens->removeLeadingWhitespace($includy['end']); - } - } - - $braces = $includy['braces']; - - if (null !== $braces) { - $prevIndex = $tokens->getPrevMeaningfulToken($includy['begin']); - $nextIndex = $tokens->getNextMeaningfulToken($braces['close']); - - // Include is also legal as function parameter or condition statement but requires being wrapped then. - if (!$tokens[$nextIndex]->equalsAny([';', [\T_CLOSE_TAG]]) && !$blocksAnalyzer->isBlock($tokens, $prevIndex, $nextIndex)) { - continue; - } - - $this->removeWhitespaceAroundIfPossible($tokens, $braces['open']); - $this->removeWhitespaceAroundIfPossible($tokens, $braces['close']); - $tokens->clearTokenAndMergeSurroundingWhitespace($braces['open']); - $tokens->clearTokenAndMergeSurroundingWhitespace($braces['close']); - } - - $nextIndex = $tokens->getNonEmptySibling($includy['begin'], 1); - - if ($tokens[$nextIndex]->isWhitespace()) { - $tokens[$nextIndex] = new Token([\T_WHITESPACE, ' ']); - } elseif (null !== $braces || $tokens[$nextIndex]->isGivenKind([\T_VARIABLE, \T_CONSTANT_ENCAPSED_STRING, \T_COMMENT])) { - $tokens->insertAt($includy['begin'] + 1, new Token([\T_WHITESPACE, ' '])); - } - } - } - - /** - * @return array - */ - private function findIncludies(Tokens $tokens): array - { - $includies = []; - - foreach ($tokens->findGivenKind([\T_REQUIRE, \T_REQUIRE_ONCE, \T_INCLUDE, \T_INCLUDE_ONCE]) as $includyTokens) { - foreach ($includyTokens as $index => $token) { - $includy = [ - 'begin' => $index, - 'braces' => null, - 'end' => $tokens->getNextTokenOfKind($index, [';', [\T_CLOSE_TAG]]), - ]; - - $braceOpenIndex = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$braceOpenIndex]->equals('(')) { - $braceCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $braceOpenIndex); - - $includy['braces'] = [ - 'open' => $braceOpenIndex, - 'close' => $braceCloseIndex, - ]; - } - - $includies[$index] = $includy; - } - } - - krsort($includies); - - return $includies; - } - - private function removeWhitespaceAroundIfPossible(Tokens $tokens, int $index): void - { - $nextIndex = $tokens->getNextNonWhitespace($index); - - if (null === $nextIndex || !$tokens[$nextIndex]->isComment()) { - $tokens->removeLeadingWhitespace($index); - } - - $prevIndex = $tokens->getPrevNonWhitespace($index); - - if (null === $prevIndex || !$tokens[$prevIndex]->isComment()) { - $tokens->removeTrailingWhitespace($index); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php deleted file mode 100644 index 42f5a7c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php +++ /dev/null @@ -1,247 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * fix_non_monolithic_code?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * fix_non_monolithic_code: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Eddilbert Macharia - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoAlternativeSyntaxFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replace control structure alternative syntax to use braces.', - [ - new CodeSample( - "\nLorem ipsum.\n\n", - ['fix_non_monolithic_code' => true], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->hasAlternativeSyntax() && (true === $this->configuration['fix_non_monolithic_code'] || $tokens->isMonolithicPhp()); - } - - /** - * {@inheritdoc} - * - * Must run before BracesFixer, ElseifFixer, NoSuperfluousElseifFixer, NoUnneededControlParenthesesFixer, NoUselessElseFixer, SwitchContinueToBreakFixer. - */ - public function getPriority(): int - { - return 42; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('fix_non_monolithic_code', 'Whether to also fix code with inline HTML.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(false, true)) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 1; 0 <= $index; --$index) { - $token = $tokens[$index]; - $this->fixElseif($index, $token, $tokens); - $this->fixElse($index, $token, $tokens); - $this->fixOpenCloseControls($index, $token, $tokens); - } - } - - private function findParenthesisEnd(Tokens $tokens, int $structureTokenIndex): int - { - $nextIndex = $tokens->getNextMeaningfulToken($structureTokenIndex); - $nextToken = $tokens[$nextIndex]; - - return $nextToken->equals('(') - ? $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextIndex) - : $structureTokenIndex; // return if next token is not opening parenthesis - } - - /** - * Handle both extremes of the control structures. - * e.g. if(): or endif;. - * - * @param int $index the index of the token being processed - * @param Token $token the token being processed - * @param Tokens $tokens the collection of tokens - */ - private function fixOpenCloseControls(int $index, Token $token, Tokens $tokens): void - { - if ($token->isGivenKind([\T_IF, \T_FOREACH, \T_WHILE, \T_FOR, \T_SWITCH, \T_DECLARE])) { - $openIndex = $tokens->getNextTokenOfKind($index, ['(']); - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); - $afterParenthesisIndex = $tokens->getNextMeaningfulToken($closeIndex); - $afterParenthesis = $tokens[$afterParenthesisIndex]; - - if (!$afterParenthesis->equals(':')) { - return; - } - - $items = []; - - if (!$tokens[$afterParenthesisIndex - 1]->isWhitespace()) { - $items[] = new Token([\T_WHITESPACE, ' ']); - } - - $items[] = new Token('{'); - - if (!$tokens[$afterParenthesisIndex + 1]->isWhitespace()) { - $items[] = new Token([\T_WHITESPACE, ' ']); - } - - $tokens->clearAt($afterParenthesisIndex); - $tokens->insertAt($afterParenthesisIndex, $items); - } - - if (!$token->isGivenKind([\T_ENDIF, \T_ENDFOREACH, \T_ENDWHILE, \T_ENDFOR, \T_ENDSWITCH, \T_ENDDECLARE])) { - return; - } - - $nextTokenIndex = $tokens->getNextMeaningfulToken($index); - $nextToken = $tokens[$nextTokenIndex]; - $tokens[$index] = new Token('}'); - - if ($nextToken->equals(';')) { - $tokens->clearAt($nextTokenIndex); - } - } - - /** - * Handle the else: cases. - * - * @param int $index the index of the token being processed - * @param Token $token the token being processed - * @param Tokens $tokens the collection of tokens - */ - private function fixElse(int $index, Token $token, Tokens $tokens): void - { - if (!$token->isGivenKind(\T_ELSE)) { - return; - } - - $tokenAfterElseIndex = $tokens->getNextMeaningfulToken($index); - $tokenAfterElse = $tokens[$tokenAfterElseIndex]; - - if (!$tokenAfterElse->equals(':')) { - return; - } - - $this->addBraces($tokens, new Token([\T_ELSE, 'else']), $index, $tokenAfterElseIndex); - } - - /** - * Handle the elsif(): cases. - * - * @param int $index the index of the token being processed - * @param Token $token the token being processed - * @param Tokens $tokens the collection of tokens - */ - private function fixElseif(int $index, Token $token, Tokens $tokens): void - { - if (!$token->isGivenKind(\T_ELSEIF)) { - return; - } - - $parenthesisEndIndex = $this->findParenthesisEnd($tokens, $index); - $tokenAfterParenthesisIndex = $tokens->getNextMeaningfulToken($parenthesisEndIndex); - $tokenAfterParenthesis = $tokens[$tokenAfterParenthesisIndex]; - - if (!$tokenAfterParenthesis->equals(':')) { - return; - } - - $this->addBraces($tokens, new Token([\T_ELSEIF, 'elseif']), $index, $tokenAfterParenthesisIndex); - } - - /** - * Add opening and closing braces to the else: and elseif: cases. - * - * @param Tokens $tokens the tokens collection - * @param Token $token the current token - * @param int $index the current token index - * @param int $colonIndex the index of the colon - */ - private function addBraces(Tokens $tokens, Token $token, int $index, int $colonIndex): void - { - $items = [ - new Token('}'), - new Token([\T_WHITESPACE, ' ']), - $token, - ]; - - if (!$tokens[$index + 1]->isWhitespace()) { - $items[] = new Token([\T_WHITESPACE, ' ']); - } - - $tokens->clearAt($index); - $tokens->insertAt( - $index, - $items, - ); - - // increment the position of the colon by number of items inserted - $colonIndex += \count($items); - - $items = [new Token('{')]; - - if (!$tokens[$colonIndex + 1]->isWhitespace()) { - $items[] = new Token([\T_WHITESPACE, ' ']); - } - - $tokens->clearAt($colonIndex); - $tokens->insertAt( - $colonIndex, - $items, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php deleted file mode 100644 index 8415cdf..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php +++ /dev/null @@ -1,369 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; -use Symfony\Component\OptionsResolver\Options; - -/** - * Fixer for rule defined in PSR2 ¶5.2. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * comment_text?: string, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * comment_text: string, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoBreakCommentFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const STRUCTURE_KINDS = [\T_FOR, \T_FOREACH, \T_WHILE, \T_IF, \T_ELSEIF, \T_SWITCH, \T_FUNCTION, FCT::T_MATCH]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There must be a comment when fall-through is intentional in a non-empty case body.', - [ - new CodeSample( - <<<'PHP' - 'some comment'], - ), - ], - 'Adds a "no break" comment before fall-through cases, and removes it if there is no fall-through.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_SWITCH); - } - - /** - * {@inheritdoc} - * - * Must run after NoUselessElseFixer. - */ - public function getPriority(): int - { - return 0; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('comment_text', 'The text to use in the added comment and to detect it.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([ - static function (string $value): bool { - if (Preg::match('/\R/', $value)) { - throw new InvalidOptionsException('The comment text must not contain new lines.'); - } - - return true; - }, - ]) - ->setNormalizer(static fn (Options $options, string $value): string => rtrim($value)) - ->setDefault('no break') - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $analyzer = new TokensAnalyzer($tokens); - - for ($index = \count($tokens) - 1; $index >= 0; --$index) { - if ($tokens[$index]->isGivenKind(\T_DEFAULT)) { - if ($tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind(\T_DOUBLE_ARROW)) { - continue; // this is "default" from "match" - } - } elseif ( - !$tokens[$index]->isGivenKind(\T_CASE) - || $analyzer->isEnumCase($index) - ) { - continue; - } - - $this->fixCase($tokens, $tokens->getNextTokenOfKind($index, [':', ';'])); - } - } - - private function fixCase(Tokens $tokens, int $casePosition): void - { - $empty = true; - $fallThrough = true; - $commentPosition = null; - - for ($i = $casePosition + 1, $max = \count($tokens); $i < $max; ++$i) { - if ($tokens[$i]->isGivenKind([...self::STRUCTURE_KINDS, \T_ELSE, \T_DO, \T_CLASS])) { - $empty = false; - $i = $this->getStructureEnd($tokens, $i); - - continue; - } - - if ($tokens[$i]->isGivenKind([\T_BREAK, \T_CONTINUE, \T_RETURN, \T_EXIT, \T_GOTO])) { - $fallThrough = false; - - continue; - } - - if ($tokens[$i]->isGivenKind(\T_THROW)) { - $previousIndex = $tokens->getPrevMeaningfulToken($i); - - if ($previousIndex === $casePosition || $tokens[$previousIndex]->equalsAny(['{', ';', '}', [\T_OPEN_TAG]])) { - $fallThrough = false; - } - - continue; - } - - if ($tokens[$i]->equals('}') || $tokens[$i]->isGivenKind(\T_ENDSWITCH)) { - if (null !== $commentPosition) { - $this->removeComment($tokens, $commentPosition); - } - - break; - } - - if ($this->isNoBreakComment($tokens[$i])) { - $commentPosition = $i; - - continue; - } - - if ($tokens[$i]->isGivenKind([\T_CASE, \T_DEFAULT])) { - if (!$empty && $fallThrough) { - if (null !== $commentPosition && $tokens->getPrevNonWhitespace($i) !== $commentPosition) { - $this->removeComment($tokens, $commentPosition); - $commentPosition = null; - } - - if (null === $commentPosition) { - $this->insertCommentAt($tokens, $i); - } else { - $text = $this->configuration['comment_text']; - $tokens[$commentPosition] = new Token([ - $tokens[$commentPosition]->getId(), - str_ireplace($text, $text, $tokens[$commentPosition]->getContent()), - ]); - - $this->ensureNewLineAt($tokens, $commentPosition); - } - } elseif (null !== $commentPosition) { - $this->removeComment($tokens, $commentPosition); - } - - break; - } - - if (!$tokens[$i]->isGivenKind([\T_COMMENT, \T_WHITESPACE])) { - $empty = false; - } - } - } - - private function isNoBreakComment(Token $token): bool - { - if (!$token->isComment()) { - return false; - } - - $text = preg_quote($this->configuration['comment_text'], '~'); - - return Preg::match("~^((//|#)\\s*{$text}\\s*)|(/\\*\\*?\\s*{$text}(\\s+.*)*\\*/)$~i", $token->getContent()); - } - - private function insertCommentAt(Tokens $tokens, int $casePosition): void - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - $newlinePosition = $this->ensureNewLineAt($tokens, $casePosition); - $newlineToken = $tokens[$newlinePosition]; - $nbNewlines = substr_count($newlineToken->getContent(), $lineEnding); - - if ($newlineToken->isGivenKind(\T_OPEN_TAG) && Preg::match('/\R/', $newlineToken->getContent())) { - ++$nbNewlines; - } elseif ($tokens[$newlinePosition - 1]->isGivenKind(\T_OPEN_TAG) && Preg::match('/\R/', $tokens[$newlinePosition - 1]->getContent())) { - ++$nbNewlines; - - if (!Preg::match('/\R/', $newlineToken->getContent())) { - $tokens[$newlinePosition] = new Token([$newlineToken->getId(), $lineEnding.$newlineToken->getContent()]); - } - } - - if ($nbNewlines > 1) { - Preg::match('/^(.*?)(\R\h*)$/s', $newlineToken->getContent(), $matches); - \assert(isset($matches[1], $matches[2])); - - $indent = WhitespacesAnalyzer::detectIndent($tokens, $newlinePosition - 1); - $tokens[$newlinePosition] = new Token([$newlineToken->getId(), $matches[1].$lineEnding.$indent]); - $tokens->insertAt(++$newlinePosition, new Token([\T_WHITESPACE, $matches[2]])); - } - - $tokens->insertAt($newlinePosition, new Token([\T_COMMENT, '// '.$this->configuration['comment_text']])); - $this->ensureNewLineAt($tokens, $newlinePosition); - } - - /** - * @return int The newline token position - */ - private function ensureNewLineAt(Tokens $tokens, int $position): int - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - $content = $lineEnding.WhitespacesAnalyzer::detectIndent($tokens, $position); - $whitespaceToken = $tokens[$position - 1]; - - if (!$whitespaceToken->isGivenKind(\T_WHITESPACE)) { - if ($whitespaceToken->isGivenKind(\T_OPEN_TAG)) { - $content = Preg::replace('/\R/', '', $content); - - if (!Preg::match('/\R/', $whitespaceToken->getContent())) { - $tokens[$position - 1] = new Token([\T_OPEN_TAG, Preg::replace('/\s+$/', $lineEnding, $whitespaceToken->getContent())]); - } - } - - if ('' !== $content) { - $tokens->insertAt($position, new Token([\T_WHITESPACE, $content])); - - return $position; - } - - return $position - 1; - } - - if ($tokens[$position - 2]->isGivenKind(\T_OPEN_TAG) && Preg::match('/\R/', $tokens[$position - 2]->getContent())) { - $content = Preg::replace('/^\R/', '', $content); - } - - if (!Preg::match('/\R/', $whitespaceToken->getContent())) { - $tokens[$position - 1] = new Token([\T_WHITESPACE, $content]); - } - - return $position - 1; - } - - private function removeComment(Tokens $tokens, int $commentPosition): void - { - if ($tokens[$tokens->getPrevNonWhitespace($commentPosition)]->isGivenKind(\T_OPEN_TAG)) { - $whitespacePosition = $commentPosition + 1; - $regex = '/^\R\h*/'; - } else { - $whitespacePosition = $commentPosition - 1; - $regex = '/\R\h*$/'; - } - - $whitespaceToken = $tokens[$whitespacePosition]; - - if ($whitespaceToken->isGivenKind(\T_WHITESPACE)) { - $content = Preg::replace($regex, '', $whitespaceToken->getContent()); - - $tokens->ensureWhitespaceAtIndex($whitespacePosition, 0, $content); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($commentPosition); - } - - private function getStructureEnd(Tokens $tokens, int $position): int - { - $initialToken = $tokens[$position]; - - if ($initialToken->isGivenKind(self::STRUCTURE_KINDS)) { - $position = $tokens->findBlockEnd( - Tokens::BLOCK_TYPE_PARENTHESIS, - $tokens->getNextTokenOfKind($position, ['(']), - ); - } elseif ($initialToken->isGivenKind(\T_CLASS)) { - $openParenthesisPosition = $tokens->getNextMeaningfulToken($position); - - if ('(' === $tokens[$openParenthesisPosition]->getContent()) { - $position = $tokens->findBlockEnd( - Tokens::BLOCK_TYPE_PARENTHESIS, - $openParenthesisPosition, - ); - } - } - - if ($initialToken->isGivenKind(\T_FUNCTION)) { - $position = $tokens->getNextTokenOfKind($position, ['{']); - } else { - $position = $tokens->getNextMeaningfulToken($position); - } - - if ('{' !== $tokens[$position]->getContent()) { - return $tokens->getNextTokenOfKind($position, [';']); - } - - $position = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $position); - - if ($initialToken->isGivenKind(\T_DO)) { - $position = $tokens->findBlockEnd( - Tokens::BLOCK_TYPE_PARENTHESIS, - $tokens->getNextTokenOfKind($position, ['(']), - ); - - return $tokens->getNextTokenOfKind($position, [';']); - } - - return $position; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php deleted file mode 100644 index 9af1041..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php +++ /dev/null @@ -1,103 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractNoUselessElseFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoSuperfluousElseifFixer extends AbstractNoUselessElseFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_ELSE, \T_ELSEIF]); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replaces superfluous `elseif` with `if`.', - [ - new CodeSample(" $token) { - if ($this->isElseif($tokens, $index) && $this->isSuperfluousElse($tokens, $index)) { - $this->convertElseifToIf($tokens, $index); - } - } - } - - private function isElseif(Tokens $tokens, int $index): bool - { - return - $tokens[$index]->isGivenKind(\T_ELSEIF) - || ($tokens[$index]->isGivenKind(\T_ELSE) && $tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind(\T_IF)); - } - - private function convertElseifToIf(Tokens $tokens, int $index): void - { - if ($tokens[$index]->isGivenKind(\T_ELSE)) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } else { - $tokens[$index] = new Token([\T_IF, 'if']); - } - - $whitespace = ''; - - for ($previous = $index - 1; $previous > 0; --$previous) { - $token = $tokens[$previous]; - if ($token->isWhitespace() && Preg::match('/(\R\N*)$/', $token->getContent(), $matches)) { - $whitespace = $matches[1]; - - break; - } - } - - if ('' === $whitespace) { - return; - } - - $previousToken = $tokens[$index - 1]; - - if (!$previousToken->isWhitespace()) { - $tokens->insertAt($index, new Token([\T_WHITESPACE, $whitespace])); - } elseif (!Preg::match('/\R/', $previousToken->getContent())) { - $tokens[$index - 1] = new Token([\T_WHITESPACE, $whitespace]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php deleted file mode 100644 index 570a0f2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php +++ /dev/null @@ -1,53 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\Basic\NoTrailingCommaInSinglelineFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @deprecated - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoTrailingCommaInListCallFixer extends AbstractProxyFixer implements DeprecatedFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Remove trailing commas in list function calls.', - [new CodeSample("proxyFixers); - } - - protected function createProxyFixers(): array - { - $fixer = new NoTrailingCommaInSinglelineFixer(); - $fixer->configure(['elements' => ['array_destructuring']]); - - return [$fixer]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededBracesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededBracesFixer.php deleted file mode 100644 index 7ccb9e4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededBracesFixer.php +++ /dev/null @@ -1,202 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * namespaces?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * namespaces: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUnneededBracesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes unneeded braces that are superfluous and aren\'t part of a control structure\'s body.', - [ - new CodeSample( - <<<'PHP' - true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoUselessElseFixer, NoUselessReturnFixer, ReturnAssignmentFixer, SimplifiedIfReturnFixer. - */ - public function getPriority(): int - { - return 40; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(['}', CT::T_GROUP_IMPORT_BRACE_CLOSE]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($this->findBraceOpen($tokens) as $index) { - if ($this->isOverComplete($tokens, $index)) { - $this->clearOverCompleteBraces($tokens, $index); - } - } - - if (true === $this->configuration['namespaces']) { - $this->clearIfIsOverCompleteNamespaceBlock($tokens); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('namespaces', 'Remove unneeded braces from bracketed namespaces.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - /** - * @param int $openIndex index of `{` token - */ - private function clearOverCompleteBraces(Tokens $tokens, int $openIndex): void - { - $blockType = Tokens::detectBlockType($tokens[$openIndex]); - - $closeIndex = $tokens->findBlockEnd($blockType['type'], $openIndex); - - $tokens->clearTokenAndMergeSurroundingWhitespace($closeIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($openIndex); - } - - /** - * @return iterable - */ - private function findBraceOpen(Tokens $tokens): iterable - { - for ($i = \count($tokens) - 1; $i > 0; --$i) { - if ($tokens[$i]->equalsAny(['{', [CT::T_GROUP_IMPORT_BRACE_OPEN]])) { - yield $i; - } - } - } - - /** - * @param int $index index of `{` token - */ - private function isOverComplete(Tokens $tokens, int $index): bool - { - if ($tokens[$index]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_OPEN)) { - $commaOrCloseBraceIndex = $tokens->getNextTokenOfKind($index, [',', [CT::T_GROUP_IMPORT_BRACE_CLOSE]]); - - $analyzer = new TokensAnalyzer($tokens); - if ($analyzer->isBlockMultiline($tokens, $index)) { - return false; - } - - return $tokens[$commaOrCloseBraceIndex]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE); - } - - return $tokens[$tokens->getPrevMeaningfulToken($index)]->equalsAny(['{', '}', [\T_OPEN_TAG], ':', ';']); - } - - private function clearIfIsOverCompleteNamespaceBlock(Tokens $tokens): void - { - if (1 !== $tokens->countTokenKind(\T_NAMESPACE)) { - return; // fast check, we never fix if multiple namespaces are defined - } - - $index = $tokens->getNextTokenOfKind(0, [[\T_NAMESPACE]]); - - $namespaceIsNamed = false; - - $index = $tokens->getNextMeaningfulToken($index); - while ($tokens[$index]->isGivenKind([\T_STRING, \T_NS_SEPARATOR])) { - $index = $tokens->getNextMeaningfulToken($index); - $namespaceIsNamed = true; - } - - if (!$namespaceIsNamed) { - return; - } - - if (!$tokens[$index]->equals('{')) { - return; // `;` - } - - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - $afterCloseIndex = $tokens->getNextMeaningfulToken($closeIndex); - - if (null !== $afterCloseIndex && (!$tokens[$afterCloseIndex]->isGivenKind(\T_CLOSE_TAG) || null !== $tokens->getNextMeaningfulToken($afterCloseIndex))) { - return; - } - - // clear up - $tokens->clearTokenAndMergeSurroundingWhitespace($closeIndex); - $tokens[$index] = new Token(';'); - - if ($tokens[$index - 1]->isWhitespace(" \t") && !$tokens[$index - 2]->isComment()) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index - 1); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php deleted file mode 100644 index c4cfdb8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php +++ /dev/null @@ -1,743 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * statements?: list<'break'|'clone'|'continue'|'echo_print'|'negative_instanceof'|'others'|'return'|'switch_case'|'yield'|'yield_from'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * statements: list<'break'|'clone'|'continue'|'echo_print'|'negative_instanceof'|'others'|'return'|'switch_case'|'yield'|'yield_from'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @phpstan-import-type _PhpTokenPrototypePartial from Token - * - * @author Sullivan Senechal - * @author Dariusz Rumiński - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUnneededControlParenthesesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var non-empty-list - */ - private const BLOCK_TYPES = [ - Tokens::BLOCK_TYPE_INDEX_BRACE, - Tokens::BLOCK_TYPE_ARRAY_BRACKET, - Tokens::BLOCK_TYPE_BRACE, - Tokens::BLOCK_TYPE_DESTRUCTURING_BRACKET, - Tokens::BLOCK_TYPE_DYNAMIC_PROP_BRACE, - Tokens::BLOCK_TYPE_DYNAMIC_VAR_BRACE, - Tokens::BLOCK_TYPE_INDEX_BRACKET, - Tokens::BLOCK_TYPE_PARENTHESIS, - ]; - - private const BEFORE_TYPES = [ - ';', - '{', - [\T_OPEN_TAG], - [\T_OPEN_TAG_WITH_ECHO], - [\T_ECHO], - [\T_PRINT], - [\T_RETURN], - [\T_THROW], - [\T_YIELD], - [\T_YIELD_FROM], - [\T_BREAK], - [\T_CONTINUE], - // won't be fixed, but true in concept, helpful for fast check - [\T_REQUIRE], - [\T_REQUIRE_ONCE], - [\T_INCLUDE], - [\T_INCLUDE_ONCE], - ]; - - private const CONFIG_OPTIONS = [ - 'break', - 'clone', - 'continue', - 'echo_print', - 'negative_instanceof', - 'others', - 'return', - 'switch_case', - 'yield', - 'yield_from', - ]; - - private const TOKEN_TYPE_CONFIG_MAP = [ - \T_BREAK => 'break', - \T_CASE => 'switch_case', - \T_CONTINUE => 'continue', - \T_ECHO => 'echo_print', - \T_PRINT => 'echo_print', - \T_RETURN => 'return', - \T_YIELD => 'yield', - \T_YIELD_FROM => 'yield_from', - ]; - - // handled by the `include` rule - private const TOKEN_TYPE_NO_CONFIG = [ - \T_REQUIRE, - \T_REQUIRE_ONCE, - \T_INCLUDE, - \T_INCLUDE_ONCE, - ]; - private const KNOWN_NEGATIVE_PRE_TYPES = [ - [CT::T_CLASS_CONSTANT], - [CT::T_DYNAMIC_VAR_BRACE_CLOSE], - [CT::T_RETURN_REF], - [CT::T_USE_LAMBDA], - [\T_ARRAY], - [\T_CATCH], - [\T_CLASS], - [\T_DECLARE], - [\T_ELSEIF], - [\T_EMPTY], - [\T_EXIT], - [\T_EVAL], - [\T_FN], - [\T_FOREACH], - [\T_FOR], - [\T_FUNCTION], - [\T_HALT_COMPILER], - [\T_IF], - [\T_ISSET], - [\T_LIST], - [\T_STRING], - [\T_SWITCH], - [\T_STATIC], - [\T_UNSET], - [\T_VARIABLE], - [\T_WHILE], - // handled by the `include` rule - [\T_REQUIRE], - [\T_REQUIRE_ONCE], - [\T_INCLUDE], - [\T_INCLUDE_ONCE], - [FCT::T_MATCH], - ]; - - /** - * @var list<_PhpTokenPrototypePartial> - */ - private array $noopTypes; - - private TokensAnalyzer $tokensAnalyzer; - - public function __construct() - { - parent::__construct(); - - $this->noopTypes = [ - '$', - [\T_CONSTANT_ENCAPSED_STRING], - [\T_DNUMBER], - [\T_DOUBLE_COLON], - [\T_LNUMBER], - [\T_NS_SEPARATOR], - [\T_STRING], - [\T_VARIABLE], - [\T_STATIC], - // magic constants - [\T_CLASS_C], - [\T_DIR], - [\T_FILE], - [\T_FUNC_C], - [\T_LINE], - [\T_METHOD_C], - [\T_NS_C], - [\T_TRAIT_C], - ]; - - foreach (Token::getObjectOperatorKinds() as $kind) { - $this->noopTypes[] = [$kind]; - } - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes unneeded parentheses around control statements.', - [ - new CodeSample( - <<<'PHP' - ['break', 'continue']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before ConcatSpaceFixer, NewExpressionParenthesesFixer, NoTrailingWhitespaceFixer. - * Must run after ModernizeTypesCastingFixer, NoAlternativeSyntaxFixer. - */ - public function getPriority(): int - { - return 30; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(['(', CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->tokensAnalyzer = new TokensAnalyzer($tokens); - - foreach ($tokens as $openIndex => $token) { - if ($token->equals('(')) { - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); - } elseif ($token->isGivenKind(CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN)) { - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_CLASS_INSTANTIATION_PARENTHESIS, $openIndex); - } else { - continue; - } - - $beforeOpenIndex = $tokens->getPrevMeaningfulToken($openIndex); - $afterCloseIndex = $tokens->getNextMeaningfulToken($closeIndex); - - // do a cheap check for negative case: `X()` - - if ($tokens->getNextMeaningfulToken($openIndex) === $closeIndex) { - if ($tokens[$beforeOpenIndex]->isGivenKind(\T_EXIT)) { - $this->removeUselessParenthesisPair($tokens, $beforeOpenIndex, $afterCloseIndex, $openIndex, $closeIndex, 'others'); - } - - continue; - } - - // do a cheap check for negative case: `foo(1,2)` - - if ($tokens[$beforeOpenIndex]->equalsAny(self::KNOWN_NEGATIVE_PRE_TYPES)) { - continue; - } - - // check for the simple useless wrapped cases - - if ($this->isUselessWrapped($tokens, $beforeOpenIndex, $afterCloseIndex)) { - $this->removeUselessParenthesisPair($tokens, $beforeOpenIndex, $afterCloseIndex, $openIndex, $closeIndex, $this->getConfigType($tokens, $beforeOpenIndex)); - - continue; - } - - // handle `clone` statements - - if ($tokens[$beforeOpenIndex]->isGivenKind(\T_CLONE)) { - if ($this->isWrappedCloneArgument($tokens, $beforeOpenIndex, $openIndex, $closeIndex, $afterCloseIndex)) { - $this->removeUselessParenthesisPair($tokens, $beforeOpenIndex, $afterCloseIndex, $openIndex, $closeIndex, 'clone'); - } - - continue; - } - - // handle `instance of` statements - - $instanceOfIndex = $this->getIndexOfInstanceOfStatement($tokens, $openIndex, $closeIndex); - - if (null !== $instanceOfIndex) { - if ($this->isWrappedInstanceOf($tokens, $instanceOfIndex, $beforeOpenIndex, $openIndex, $closeIndex, $afterCloseIndex)) { - $this->removeUselessParenthesisPair( - $tokens, - $beforeOpenIndex, - $afterCloseIndex, - $openIndex, - $closeIndex, - $tokens[$beforeOpenIndex]->equals('!') ? 'negative_instanceof' : 'others', - ); - } - - continue; - } - - // last checks deal with operators, do not swap around - - if ($this->isWrappedPartOfOperation($tokens, $beforeOpenIndex, $openIndex, $closeIndex, $afterCloseIndex)) { - $this->removeUselessParenthesisPair($tokens, $beforeOpenIndex, $afterCloseIndex, $openIndex, $closeIndex, $this->getConfigType($tokens, $beforeOpenIndex)); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $defaults = array_filter( - self::CONFIG_OPTIONS, - static fn (string $option): bool => 'negative_instanceof' !== $option && 'others' !== $option && 'yield_from' !== $option, - ); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('statements', 'List of control statements to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset(self::CONFIG_OPTIONS)]) - ->setDefault(array_values($defaults)) - ->getOption(), - ]); - } - - private function isUselessWrapped(Tokens $tokens, int $beforeOpenIndex, int $afterCloseIndex): bool - { - return - $this->isSingleStatement($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedFnBody($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedForElement($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedLanguageConstructArgument($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedSequenceElement($tokens, $beforeOpenIndex, $afterCloseIndex); - } - - private function isWrappedCloneArgument(Tokens $tokens, int $beforeOpenIndex, int $openIndex, int $closeIndex, int $afterCloseIndex): bool - { - $beforeOpenIndex = $tokens->getPrevMeaningfulToken($beforeOpenIndex); - - if ( - !( - $tokens[$beforeOpenIndex]->equals('?') // For BC reasons - || $this->isSimpleAssignment($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isSingleStatement($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedFnBody($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedForElement($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedSequenceElement($tokens, $beforeOpenIndex, $afterCloseIndex) - ) - ) { - return false; - } - - $newCandidateIndex = $tokens->getNextMeaningfulToken($openIndex); - - if ($tokens[$newCandidateIndex]->isGivenKind(\T_NEW)) { - $openIndex = $newCandidateIndex; // `clone (new X)`, `clone (new X())`, clone (new X(Y))` - } - - return !$this->containsOperation($tokens, $openIndex, $closeIndex); - } - - private function getIndexOfInstanceOfStatement(Tokens $tokens, int $openIndex, int $closeIndex): ?int - { - $instanceOfIndex = $tokens->findGivenKind(\T_INSTANCEOF, $openIndex, $closeIndex); - - return 1 === \count($instanceOfIndex) ? array_key_first($instanceOfIndex) : null; - } - - private function isWrappedInstanceOf(Tokens $tokens, int $instanceOfIndex, int $beforeOpenIndex, int $openIndex, int $closeIndex, int $afterCloseIndex): bool - { - if ( - $this->containsOperation($tokens, $openIndex, $instanceOfIndex) - || $this->containsOperation($tokens, $instanceOfIndex, $closeIndex) - ) { - return false; - } - - if ($tokens[$beforeOpenIndex]->equals('!')) { - $beforeOpenIndex = $tokens->getPrevMeaningfulToken($beforeOpenIndex); - } - - return - $this->isSimpleAssignment($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isSingleStatement($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedFnBody($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedForElement($tokens, $beforeOpenIndex, $afterCloseIndex) - || $this->isWrappedSequenceElement($tokens, $beforeOpenIndex, $afterCloseIndex); - } - - private function isWrappedPartOfOperation(Tokens $tokens, int $beforeOpenIndex, int $openIndex, int $closeIndex, int $afterCloseIndex): bool - { - if ($this->containsOperation($tokens, $openIndex, $closeIndex)) { - return false; - } - - $boundariesMoved = false; - - if ($this->isPreUnaryOperation($tokens, $beforeOpenIndex)) { - $beforeOpenIndex = $this->getBeforePreUnaryOperation($tokens, $beforeOpenIndex); - $boundariesMoved = true; - } - - if ($this->isAccess($tokens, $afterCloseIndex)) { - $afterCloseIndex = $this->getAfterAccess($tokens, $afterCloseIndex); - $boundariesMoved = true; - - if ($this->tokensAnalyzer->isUnarySuccessorOperator($afterCloseIndex)) { // post unary operation are only valid here - $afterCloseIndex = $tokens->getNextMeaningfulToken($afterCloseIndex); - } - } - - if ($boundariesMoved) { - if ($tokens[$beforeOpenIndex]->equalsAny(self::KNOWN_NEGATIVE_PRE_TYPES)) { - return false; - } - - if ($this->isUselessWrapped($tokens, $beforeOpenIndex, $afterCloseIndex)) { - return true; - } - } - - // check if part of some operation sequence - - $beforeIsBinaryOperation = $this->tokensAnalyzer->isBinaryOperator($beforeOpenIndex); - $afterIsBinaryOperation = $this->tokensAnalyzer->isBinaryOperator($afterCloseIndex); - - if ($beforeIsBinaryOperation && $afterIsBinaryOperation) { - return true; // `+ (x) +` - } - - $beforeToken = $tokens[$beforeOpenIndex]; - $afterToken = $tokens[$afterCloseIndex]; - - $beforeIsBlockOpenOrComma = $beforeToken->equals(',') || null !== $this->getBlock($tokens, $beforeOpenIndex, true); - $afterIsBlockEndOrComma = $afterToken->equals(',') || null !== $this->getBlock($tokens, $afterCloseIndex, false); - - if (($beforeIsBlockOpenOrComma && $afterIsBinaryOperation) || ($beforeIsBinaryOperation && $afterIsBlockEndOrComma)) { - // $beforeIsBlockOpenOrComma && $afterIsBlockEndOrComma is covered by `isWrappedSequenceElement` - // `[ (x) +` or `+ (X) ]` or `, (X) +` or `+ (X) ,` - - return true; - } - - if ($tokens[$beforeOpenIndex]->equals('}')) { - $beforeIsStatementOpen = !$this->closeCurlyBelongsToDynamicElement($tokens, $beforeOpenIndex); - } else { - $beforeIsStatementOpen = $beforeToken->equalsAny(self::BEFORE_TYPES) || $beforeToken->isGivenKind(\T_CASE); - } - - $afterIsStatementEnd = $afterToken->equalsAny([';', [\T_CLOSE_TAG]]); - - return - ($beforeIsStatementOpen && $afterIsBinaryOperation) // `isGivenKind([\T_PRINT, \T_YIELD, \T_YIELD_FROM, \T_REQUIRE, \T_REQUIRE_ONCE, \T_INCLUDE, \T_INCLUDE_ONCE])) { - return false; - } - - $beforeOpenIndex = $tokens->getPrevMeaningfulToken($beforeOpenIndex); - - return $this->isWrappedSequenceElement($tokens, $beforeOpenIndex, $afterCloseIndex); - } - - // any of `isGivenKind(\T_CASE)) { - return $tokens[$afterCloseIndex]->equalsAny([':', ';']); // `switch case` - } - - if (!$tokens[$afterCloseIndex]->equalsAny([';', [\T_CLOSE_TAG]])) { - return false; - } - - if ($tokens[$beforeOpenIndex]->equals('}')) { - return !$this->closeCurlyBelongsToDynamicElement($tokens, $beforeOpenIndex); - } - - return $tokens[$beforeOpenIndex]->equalsAny(self::BEFORE_TYPES); - } - - private function isSimpleAssignment(Tokens $tokens, int $beforeOpenIndex, int $afterCloseIndex): bool - { - return $tokens[$beforeOpenIndex]->equals('=') && $tokens[$afterCloseIndex]->equalsAny([';', [\T_CLOSE_TAG]]); // `= (X) ;` - } - - private function isWrappedSequenceElement(Tokens $tokens, int $startIndex, int $endIndex): bool - { - $startIsComma = $tokens[$startIndex]->equals(','); - $endIsComma = $tokens[$endIndex]->equals(','); - - if ($startIsComma && $endIsComma) { - return true; // `,(X),` - } - - $blockTypeStart = $this->getBlock($tokens, $startIndex, true); - $blockTypeEnd = $this->getBlock($tokens, $endIndex, false); - - return - ($startIsComma && null !== $blockTypeEnd) // `,(X)]` - || ($endIsComma && null !== $blockTypeStart) // `[(X),` - || (null !== $blockTypeEnd && null !== $blockTypeStart); // any type of `{(X)}`, `[(X)]` and `((X))` - } - - // any of `for( (X); ;(X)) ;` note that the middle element is covered as 'single statement' as it is `; (X) ;` - private function isWrappedForElement(Tokens $tokens, int $beforeOpenIndex, int $afterCloseIndex): bool - { - $forCandidateIndex = null; - - if ($tokens[$beforeOpenIndex]->equals('(') && $tokens[$afterCloseIndex]->equals(';')) { - $forCandidateIndex = $tokens->getPrevMeaningfulToken($beforeOpenIndex); - } elseif ($tokens[$afterCloseIndex]->equals(')') && $tokens[$beforeOpenIndex]->equals(';')) { - $forCandidateIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $afterCloseIndex); - $forCandidateIndex = $tokens->getPrevMeaningfulToken($forCandidateIndex); - } - - return null !== $forCandidateIndex && $tokens[$forCandidateIndex]->isGivenKind(\T_FOR); - } - - // `fn() => (X);` - private function isWrappedFnBody(Tokens $tokens, int $beforeOpenIndex, int $afterCloseIndex): bool - { - if (!$tokens[$beforeOpenIndex]->isGivenKind(\T_DOUBLE_ARROW)) { - return false; - } - - $beforeOpenIndex = $tokens->getPrevMeaningfulToken($beforeOpenIndex); - - if ($tokens[$beforeOpenIndex]->isGivenKind(\T_STRING)) { - while (true) { - $beforeOpenIndex = $tokens->getPrevMeaningfulToken($beforeOpenIndex); - - if (!$tokens[$beforeOpenIndex]->isGivenKind([\T_STRING, CT::T_TYPE_INTERSECTION, CT::T_TYPE_ALTERNATION])) { - break; - } - } - - if (!$tokens[$beforeOpenIndex]->isGivenKind(CT::T_TYPE_COLON)) { - return false; - } - - $beforeOpenIndex = $tokens->getPrevMeaningfulToken($beforeOpenIndex); - } - - if (!$tokens[$beforeOpenIndex]->equals(')')) { - return false; - } - - $beforeOpenIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $beforeOpenIndex); - $beforeOpenIndex = $tokens->getPrevMeaningfulToken($beforeOpenIndex); - - if ($tokens[$beforeOpenIndex]->isGivenKind(CT::T_RETURN_REF)) { - $beforeOpenIndex = $tokens->getPrevMeaningfulToken($beforeOpenIndex); - } - - if (!$tokens[$beforeOpenIndex]->isGivenKind(\T_FN)) { - return false; - } - - return $tokens[$afterCloseIndex]->equalsAny([';', ',', [\T_CLOSE_TAG]]); - } - - private function isPreUnaryOperation(Tokens $tokens, int $index): bool - { - return $this->tokensAnalyzer->isUnaryPredecessorOperator($index) || $tokens[$index]->isCast(); - } - - private function getBeforePreUnaryOperation(Tokens $tokens, int $index): int - { - do { - $index = $tokens->getPrevMeaningfulToken($index); - } while ($this->isPreUnaryOperation($tokens, $index)); - - return $index; - } - - // array access `(X)[` or `(X){` or object access `(X)->` or `(X)?->` - private function isAccess(Tokens $tokens, int $index): bool - { - $token = $tokens[$index]; - - return $token->isObjectOperator() || $token->equals('[') || $token->isGivenKind(CT::T_ARRAY_INDEX_BRACE_OPEN); - } - - private function getAfterAccess(Tokens $tokens, int $index): int - { - while (true) { - $block = $this->getBlock($tokens, $index, true); - - if (null !== $block) { - $index = $tokens->findBlockEnd($block['type'], $index); - $index = $tokens->getNextMeaningfulToken($index); - - continue; - } - - if ( - $tokens[$index]->isObjectOperator() - || $tokens[$index]->equalsAny(['$', [\T_PAAMAYIM_NEKUDOTAYIM], [\T_STRING], [\T_VARIABLE]]) - ) { - $index = $tokens->getNextMeaningfulToken($index); - - continue; - } - - break; - } - - return $index; - } - - /** - * @return null|array{type: Tokens::BLOCK_TYPE_*, isStart: bool} - */ - private function getBlock(Tokens $tokens, int $index, bool $isStart): ?array - { - $block = Tokens::detectBlockType($tokens[$index]); - - return null !== $block && $isStart === $block['isStart'] && \in_array($block['type'], self::BLOCK_TYPES, true) ? $block : null; - } - - private function containsOperation(Tokens $tokens, int $startIndex, int $endIndex): bool - { - while (true) { - $startIndex = $tokens->getNextMeaningfulToken($startIndex); - - if ($startIndex === $endIndex) { - break; - } - - $block = Tokens::detectBlockType($tokens[$startIndex]); - - if (null !== $block && $block['isStart']) { - $startIndex = $tokens->findBlockEnd($block['type'], $startIndex); - - continue; - } - - if (!$tokens[$startIndex]->equalsAny($this->noopTypes)) { - return true; - } - } - - return false; - } - - private function getConfigType(Tokens $tokens, int $beforeOpenIndex): ?string - { - if ($tokens[$beforeOpenIndex]->isGivenKind(self::TOKEN_TYPE_NO_CONFIG)) { - return null; - } - - foreach (self::TOKEN_TYPE_CONFIG_MAP as $type => $configItem) { - if ($tokens[$beforeOpenIndex]->isGivenKind($type)) { - return $configItem; - } - } - - return 'others'; - } - - private function removeUselessParenthesisPair( - Tokens $tokens, - int $beforeOpenIndex, - int $afterCloseIndex, - int $openIndex, - int $closeIndex, - ?string $configType - ): void { - $statements = $this->configuration['statements']; - - if (null === $configType || !\in_array($configType, $statements, true)) { - return; - } - - $needsSpaceAfter = !$this->isAccess($tokens, $afterCloseIndex) - && !$tokens[$afterCloseIndex]->equalsAny([';', ',', [\T_CLOSE_TAG]]) - && null === $this->getBlock($tokens, $afterCloseIndex, false) - && !($tokens[$afterCloseIndex]->equalsAny([':', ';']) && $tokens[$beforeOpenIndex]->isGivenKind(\T_CASE)); - - $needsSpaceBefore = !$this->isPreUnaryOperation($tokens, $beforeOpenIndex) - && !$tokens[$beforeOpenIndex]->equalsAny(['}', [\T_EXIT], [\T_OPEN_TAG]]) - && null === $this->getBlock($tokens, $beforeOpenIndex, true); - - $this->removeBrace($tokens, $closeIndex, $needsSpaceAfter); - $this->removeBrace($tokens, $openIndex, $needsSpaceBefore); - } - - private function removeBrace(Tokens $tokens, int $index, bool $needsSpace): void - { - if ($needsSpace) { - foreach ([-1, 1] as $direction) { - $siblingIndex = $tokens->getNonEmptySibling($index, $direction); - - if ($tokens[$siblingIndex]->isWhitespace() || $tokens[$siblingIndex]->isComment()) { - $needsSpace = false; - - break; - } - } - } - - if ($needsSpace) { - $tokens[$index] = new Token([\T_WHITESPACE, ' ']); - } else { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } - - private function closeCurlyBelongsToDynamicElement(Tokens $tokens, int $beforeOpenIndex): bool - { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $beforeOpenIndex); - $index = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind(\T_DOUBLE_COLON)) { - return true; - } - - if ($tokens[$index]->equals(':')) { - $index = $tokens->getPrevTokenOfKind($index, [[\T_CASE], '?']); - - return !$tokens[$index]->isGivenKind(\T_CASE); - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php deleted file mode 100644 index 17dcf5b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php +++ /dev/null @@ -1,108 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @deprecated - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * namespaces?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * namespaces: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUnneededCurlyBracesFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, DeprecatedFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private NoUnneededBracesFixer $noUnneededBracesFixer; - - public function __construct() - { - $this->noUnneededBracesFixer = new NoUnneededBracesFixer(); - - parent::__construct(); - } - - public function getDefinition(): FixerDefinitionInterface - { - $fixerDefinition = $this->noUnneededBracesFixer->getDefinition(); - - return new FixerDefinition( - 'Removes unneeded curly braces that are superfluous and aren\'t part of a control structure\'s body.', - $fixerDefinition->getCodeSamples(), - $fixerDefinition->getDescription(), - $fixerDefinition->getRiskyDescription(), - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoUselessElseFixer, NoUselessReturnFixer, ReturnAssignmentFixer, SimplifiedIfReturnFixer. - */ - public function getPriority(): int - { - return $this->noUnneededBracesFixer->getPriority(); - } - - public function getSuccessorsNames(): array - { - return [ - $this->noUnneededBracesFixer->getName(), - ]; - } - - /** - * @param _AutogeneratedInputConfiguration $configuration - */ - protected function configurePreNormalisation(array $configuration): void - { - $this->noUnneededBracesFixer->configure($configuration); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('namespaces', 'Remove unneeded curly braces from bracketed namespaces.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function createProxyFixers(): array - { - return [ - $this->noUnneededBracesFixer, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php deleted file mode 100644 index 09d875c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php +++ /dev/null @@ -1,154 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractNoUselessElseFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUselessElseFixer extends AbstractNoUselessElseFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_ELSE); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should not be useless `else` cases.', - [ - new CodeSample(" $token) { - if (!$token->isGivenKind(\T_ELSE)) { - continue; - } - - // `else if` vs. `else` and alternative syntax `else:` checks - if ($tokens[$tokens->getNextMeaningfulToken($index)]->equalsAny([':', [\T_IF]])) { - continue; - } - - // clean up `else` if it is an empty statement - $this->fixEmptyElse($tokens, $index); - if ($tokens->isEmptyAt($index)) { - continue; - } - - // Clean up `else` if possible. - // Ignore `else` blocks containing named function or classy declarations, because in PHP function/class - // declarations outside any conditional block are always evaluated first, even if the code before the declaration - // returns/throws/etc. So removing such `else` blocks would change the behaviour. - if ($this->isSuperfluousElse($tokens, $index) && !$this->containsNamedSymbolDeclaration($tokens, $index)) { - $this->clearElse($tokens, $index); - } - } - } - - /** - * Remove tokens part of an `else` statement if not empty (i.e. no meaningful tokens inside). - * - * @param int $index T_ELSE index - */ - private function fixEmptyElse(Tokens $tokens, int $index): void - { - $next = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$next]->equals('{')) { - $close = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $next); - if (1 === $close - $next) { // '{}' - $this->clearElse($tokens, $index); - } elseif ($tokens->getNextMeaningfulToken($next) === $close) { // '{/**/}' - $this->clearElse($tokens, $index); - } - - return; - } - - // short `else` - $end = $tokens->getNextTokenOfKind($index, [';', [\T_CLOSE_TAG]]); - if ($next === $end) { - $this->clearElse($tokens, $index); - } - } - - /** - * @param int $index index of T_ELSE - */ - private function clearElse(Tokens $tokens, int $index): void - { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - // clear T_ELSE and the '{' '}' if there are any - $next = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$next]->equals('{')) { - return; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $next)); - $tokens->clearTokenAndMergeSurroundingWhitespace($next); - } - - /** - * @param int $index index of T_ELSE - */ - private function containsNamedSymbolDeclaration(Tokens $tokens, int $index): bool - { - $next = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$next]->equals('{')) { - // short `else` can't contain symbol declaration (`else class Foo {}` is invalid syntax) - return false; - } - - $tokensAnalyzer = new TokensAnalyzer($tokens); - $close = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $next); - for ($i = $next + 1; $i < $close; ++$i) { - if ($tokens[$i]->isGivenKind(\T_FUNCTION) && !$tokensAnalyzer->isLambda($i)) { - return true; - } - - if ($tokens[$i]->isClassy() && !$tokensAnalyzer->isAnonymousClass($i)) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SimplifiedIfReturnFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SimplifiedIfReturnFixer.php deleted file mode 100644 index 57c28f2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SimplifiedIfReturnFixer.php +++ /dev/null @@ -1,149 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-import-type _PhpTokenPrototypePartial from Token - * - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SimplifiedIfReturnFixer extends AbstractFixer -{ - /** - * @var list}> - */ - private array $sequences = [ - [ - 'isNegative' => false, - 'sequence' => [ - '{', [\T_RETURN], [\T_STRING, 'true'], ';', '}', - [\T_RETURN], [\T_STRING, 'false'], ';', - ], - ], - [ - 'isNegative' => true, - 'sequence' => [ - '{', [\T_RETURN], [\T_STRING, 'false'], ';', '}', - [\T_RETURN], [\T_STRING, 'true'], ';', - ], - ], - [ - 'isNegative' => false, - 'sequence' => [ - [\T_RETURN], [\T_STRING, 'true'], ';', - [\T_RETURN], [\T_STRING, 'false'], ';', - ], - ], - [ - 'isNegative' => true, - 'sequence' => [ - [\T_RETURN], [\T_STRING, 'false'], ';', - [\T_RETURN], [\T_STRING, 'true'], ';', - ], - ], - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Simplify `if` control structures that return the boolean result of their condition.', - [new CodeSample("isAllTokenKindsFound([\T_IF, \T_RETURN, \T_STRING]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $slices = []; - - for ($ifIndex = $tokens->count() - 1; 0 <= $ifIndex; --$ifIndex) { - if (!$tokens[$ifIndex]->isGivenKind([\T_IF, \T_ELSEIF])) { - continue; - } - - if ($tokens[$tokens->getPrevMeaningfulToken($ifIndex)]->equals(')')) { - continue; // in a loop without braces - } - - $startParenthesisIndex = $tokens->getNextTokenOfKind($ifIndex, ['(']); - $endParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startParenthesisIndex); - $firstCandidateIndex = $tokens->getNextMeaningfulToken($endParenthesisIndex); - - foreach ($this->sequences as $sequenceSpec) { - $sequenceFound = $tokens->findSequence($sequenceSpec['sequence'], $firstCandidateIndex); - - if (null === $sequenceFound) { - continue; - } - - $firstSequenceIndex = array_key_first($sequenceFound); - - if ($firstSequenceIndex !== $firstCandidateIndex) { - continue; - } - - $indicesToClear = array_keys($sequenceFound); - array_pop($indicesToClear); // Preserve last semicolon - rsort($indicesToClear); - - foreach ($indicesToClear as $index) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - - $newTokens = [ - new Token([\T_RETURN, 'return']), - new Token([\T_WHITESPACE, ' ']), - ]; - - if ($sequenceSpec['isNegative']) { - $newTokens[] = new Token('!'); - } else { - $newTokens[] = new Token([\T_BOOL_CAST, '(bool)']); - } - - $slices[$ifIndex] = $newTokens; - $tokens->clearAt($ifIndex); - } - } - - if ([] !== $slices) { - $tokens->insertSlices($slices); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php deleted file mode 100644 index 981bb36..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\SwitchAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\ControlCaseStructuresAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶5.2. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SwitchCaseSemicolonToColonFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'A case should be followed by a colon and not a semicolon.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_SWITCH); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - /** @var SwitchAnalysis $analysis */ - foreach (ControlCaseStructuresAnalyzer::findControlStructures($tokens, [\T_SWITCH]) as $analysis) { - $default = $analysis->getDefaultAnalysis(); - - if (null !== $default) { - $this->fixTokenIfNeeded($tokens, $default->getColonIndex()); - } - - foreach ($analysis->getCases() as $caseAnalysis) { - $this->fixTokenIfNeeded($tokens, $caseAnalysis->getColonIndex()); - } - } - } - - private function fixTokenIfNeeded(Tokens $tokens, int $index): void - { - if ($tokens[$index]->equals(';')) { - $tokens[$index] = new Token(':'); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php deleted file mode 100644 index 20b441a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php +++ /dev/null @@ -1,89 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\SwitchAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\ControlCaseStructuresAnalyzer; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶5.2. - * - * @author Sullivan Senechal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SwitchCaseSpaceFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes extra spaces between colon and case value.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_SWITCH); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - /** @var SwitchAnalysis $analysis */ - foreach (ControlCaseStructuresAnalyzer::findControlStructures($tokens, [\T_SWITCH]) as $analysis) { - $default = $analysis->getDefaultAnalysis(); - - if (null !== $default) { - $index = $default->getIndex(); - - if (!$tokens[$index + 1]->isWhitespace() || !$tokens[$index + 2]->equalsAny([':', ';'])) { - continue; - } - - $tokens->clearAt($index + 1); - } - - foreach ($analysis->getCases() as $caseAnalysis) { - $colonIndex = $caseAnalysis->getColonIndex(); - $valueIndex = $tokens->getPrevNonWhitespace($colonIndex); - - // skip if there is no space between the colon and previous token or is space after comment - if ($valueIndex === $colonIndex - 1 || $tokens[$valueIndex]->isComment()) { - continue; - } - - $tokens->clearAt($valueIndex + 1); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchContinueToBreakFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchContinueToBreakFixer.php deleted file mode 100644 index 8bb88dc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchContinueToBreakFixer.php +++ /dev/null @@ -1,247 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SwitchContinueToBreakFixer extends AbstractFixer -{ - /** - * @var list - */ - private array $switchLevels = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Switch case must not be ended with `continue` but with `break`.', - [ - new CodeSample( - <<<'PHP' - 3) { - continue; - } - - continue 2; - } - } - - PHP, - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after NoAlternativeSyntaxFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAllTokenKindsFound([\T_SWITCH, \T_CONTINUE]) && !$tokens->hasAlternativeSyntax(); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $count = \count($tokens); - - for ($index = 1; $index < $count - 1; ++$index) { - $index = $this->doFix($tokens, $index, 0, false); - } - } - - /** - * @param int $depth >= 0 - */ - private function doFix(Tokens $tokens, int $index, int $depth, bool $isInSwitch): int - { - $token = $tokens[$index]; - - if ($token->isGivenKind([\T_FOREACH, \T_FOR, \T_WHILE])) { - // go to first `(`, go to its close ')', go to first of '{', ';', '? >' - $index = $tokens->getNextTokenOfKind($index, ['(']); - $index = $tokens->getNextTokenOfKind($index, [')']); - $index = $tokens->getNextTokenOfKind($index, ['{', ';', [\T_CLOSE_TAG]]); - - if (!$tokens[$index]->equals('{')) { - return $index; - } - - return $this->fixInLoop($tokens, $index, $depth + 1); - } - - if ($token->isGivenKind(\T_DO)) { - return $this->fixInLoop($tokens, $tokens->getNextTokenOfKind($index, ['{']), $depth + 1); - } - - if ($token->isGivenKind(\T_SWITCH)) { - return $this->fixInSwitch($tokens, $index, $depth + 1); - } - - if ($token->isGivenKind(\T_CONTINUE)) { - return $this->fixContinueWhenActsAsBreak($tokens, $index, $isInSwitch, $depth); - } - - return $index; - } - - private function fixInSwitch(Tokens $tokens, int $switchIndex, int $depth): int - { - $this->switchLevels[] = $depth; - - // figure out where the switch starts - $openIndex = $tokens->getNextTokenOfKind($switchIndex, ['{']); - - // figure out where the switch ends - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $openIndex); - - for ($index = $openIndex + 1; $index < $closeIndex; ++$index) { - $index = $this->doFix($tokens, $index, $depth, true); - } - - array_pop($this->switchLevels); - - return $closeIndex; - } - - private function fixInLoop(Tokens $tokens, int $openIndex, int $depth): int - { - $openCount = 1; - - while (true) { - ++$openIndex; - $token = $tokens[$openIndex]; - - if ($token->equals('{')) { - ++$openCount; - - continue; - } - - if ($token->equals('}')) { - --$openCount; - - if (0 === $openCount) { - break; - } - - continue; - } - - $openIndex = $this->doFix($tokens, $openIndex, $depth, false); - } - - return $openIndex; - } - - private function fixContinueWhenActsAsBreak(Tokens $tokens, int $continueIndex, bool $isInSwitch, int $depth): int - { - $followingContinueIndex = $tokens->getNextMeaningfulToken($continueIndex); - $followingContinueToken = $tokens[$followingContinueIndex]; - - if ($isInSwitch && $followingContinueToken->equals(';')) { - $this->replaceContinueWithBreakToken($tokens, $continueIndex); // short continue 1 notation - - return $followingContinueIndex; - } - - if (!$followingContinueToken->isGivenKind(\T_LNUMBER)) { - return $followingContinueIndex; - } - - $afterFollowingContinueIndex = $tokens->getNextMeaningfulToken($followingContinueIndex); - - if (!$tokens[$afterFollowingContinueIndex]->equals(';')) { - return $afterFollowingContinueIndex; // if next not is `;` return without fixing, for example `continue 1 ? >getContent(); - $jump = str_replace('_', '', $jump); // support for numeric_literal_separator - - if (\strlen($jump) > 2 && 'x' === $jump[1]) { - $jump = hexdec($jump); // hexadecimal - 0x1 - } elseif (\strlen($jump) > 2 && 'b' === $jump[1]) { - $jump = bindec($jump); // binary - 0b1 - } elseif (\strlen($jump) > 1 && '0' === $jump[0]) { - $jump = octdec($jump); // octal 01 - } elseif (Preg::match('#^\d+$#', $jump)) { // positive int - $jump = (float) $jump; // cast to float, might be a number bigger than PHP max. int value - } else { - return $afterFollowingContinueIndex; // cannot process value, ignore - } - - if ($jump > \PHP_INT_MAX) { - return $afterFollowingContinueIndex; // cannot process value, ignore - } - - $jump = (int) $jump; - - if ($isInSwitch && (1 === $jump || 0 === $jump)) { - $this->replaceContinueWithBreakToken($tokens, $continueIndex); // long continue 0/1 notation - - return $afterFollowingContinueIndex; - } - - $jumpDestination = $depth - $jump + 1; - - if (\in_array($jumpDestination, $this->switchLevels, true)) { - $this->replaceContinueWithBreakToken($tokens, $continueIndex); - - return $afterFollowingContinueIndex; - } - - return $afterFollowingContinueIndex; - } - - private function replaceContinueWithBreakToken(Tokens $tokens, int $index): void - { - $tokens[$index] = new Token([\T_BREAK, 'break']); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php deleted file mode 100644 index a69d8c5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php +++ /dev/null @@ -1,249 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * after_heredoc?: bool, - * elements?: list<'arguments'|'array_destructuring'|'arrays'|'match'|'parameters'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * after_heredoc: bool, - * elements: list<'arguments'|'array_destructuring'|'arrays'|'match'|'parameters'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Sebastiaan Stok - * @author Dariusz Rumiński - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TrailingCommaInMultilineFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const ELEMENTS_ARRAYS = 'arrays'; - - /** - * @internal - */ - public const ELEMENTS_ARGUMENTS = 'arguments'; - - /** - * @internal - */ - public const ELEMENTS_PARAMETERS = 'parameters'; - - private const MATCH_EXPRESSIONS = 'match'; - - private const ARRAY_DESTRUCTURING = 'array_destructuring'; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Arguments lists, array destructuring lists, arrays that are multi-line, `match`-lines and parameters lists must have a trailing comma.', - [ - new CodeSample(" true], - ), - new CodeSample(" [self::ELEMENTS_ARGUMENTS]]), - new VersionSpecificCodeSample(" [self::ELEMENTS_PARAMETERS]]), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after MultilinePromotedPropertiesFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN, '(', CT::T_DESTRUCTURING_BRACKET_OPEN]); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('after_heredoc', 'Whether a trailing comma should also be placed after heredoc end.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(true, false)) - ->getOption(), - (new FixerOptionBuilder('elements', \sprintf('Where to fix multiline trailing comma (PHP >= 8.0 for `%s` and `%s`).', self::ELEMENTS_PARAMETERS, self::MATCH_EXPRESSIONS))) // @TODO: remove text when PHP 8.0+ is required - ->setAllowedTypes(['string[]']) - ->setAllowedValues([ - new AllowedValueSubset([ - self::ARRAY_DESTRUCTURING, - self::ELEMENTS_ARGUMENTS, - self::ELEMENTS_ARRAYS, - self::ELEMENTS_PARAMETERS, - self::MATCH_EXPRESSIONS, - ]), - ]) - ->setDefault([self::ELEMENTS_ARRAYS]) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $configuredElements = $this->configuration['elements']; - $fixArrays = \in_array(self::ELEMENTS_ARRAYS, $configuredElements, true); - $fixArguments = \in_array(self::ELEMENTS_ARGUMENTS, $configuredElements, true); - $fixParameters = \PHP_VERSION_ID >= 8_00_00 && \in_array(self::ELEMENTS_PARAMETERS, $configuredElements, true); // @TODO: drop condition when PHP 8.0+ is required - $fixMatch = \PHP_VERSION_ID >= 8_00_00 && \in_array(self::MATCH_EXPRESSIONS, $configuredElements, true); // @TODO: drop condition when PHP 8.0+ is required - $fixDestructuring = \in_array(self::ARRAY_DESTRUCTURING, $configuredElements, true); - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - if ($tokens[$index]->isGivenKind(CT::T_DESTRUCTURING_BRACKET_OPEN)) { - if ($fixDestructuring) { // array destructing short syntax - $this->fixBlock($tokens, $index); - } - - continue; - } - - if ($tokens[$index]->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - if ($fixArrays) { // array short syntax - $this->fixBlock($tokens, $index); - } - - continue; - } - - if (!$tokens[$index]->equals('(')) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prevIndex]->isGivenKind(\T_ARRAY)) { - if ($fixArrays) { // array long syntax - $this->fixBlock($tokens, $index); - } - - continue; - } - - if ($tokens[$prevIndex]->isGivenKind(\T_LIST)) { - if ($fixDestructuring || $fixArguments) { // array destructing long syntax - $this->fixBlock($tokens, $index); - } - - continue; - } - - if ($fixMatch && $tokens[$prevIndex]->isGivenKind(\T_MATCH)) { - $this->fixBlock($tokens, $tokens->getNextTokenOfKind($index, ['{'])); - - continue; - } - - $prevPrevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - - if ($fixArguments - && $tokens[$prevIndex]->equalsAny([']', [\T_CLASS], [\T_STRING], [\T_VARIABLE], [\T_STATIC], [\T_ISSET], [\T_UNSET], [\T_LIST]]) - && !$tokens[$prevPrevIndex]->isGivenKind(\T_FUNCTION) - ) { - $this->fixBlock($tokens, $index); - - continue; - } - - if ( - $fixParameters - && ( - $tokens[$prevIndex]->isGivenKind(\T_STRING) - && $tokens[$prevPrevIndex]->isGivenKind(\T_FUNCTION) - || $tokens[$prevIndex]->isGivenKind([\T_FN, \T_FUNCTION]) - ) - ) { - $this->fixBlock($tokens, $index); - } - } - } - - private function fixBlock(Tokens $tokens, int $startIndex): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - if (!$tokensAnalyzer->isBlockMultiline($tokens, $startIndex)) { - return; - } - - $blockType = Tokens::detectBlockType($tokens[$startIndex]); - $endIndex = $tokens->findBlockEnd($blockType['type'], $startIndex); - - $beforeEndIndex = $tokens->getPrevMeaningfulToken($endIndex); - if (!$tokens->isPartialCodeMultiline($beforeEndIndex, $endIndex)) { - return; - } - $beforeEndToken = $tokens[$beforeEndIndex]; - - // if there is some item between braces then add `,` after it - if ( - $startIndex !== $beforeEndIndex && !$beforeEndToken->equals(',') - && (true === $this->configuration['after_heredoc'] || !$beforeEndToken->isGivenKind(\T_END_HEREDOC)) - ) { - $tokens->insertAt($beforeEndIndex + 1, new Token(',')); - - $endToken = $tokens[$endIndex]; - - if (!$endToken->isComment() && !$endToken->isWhitespace()) { - $tokens->ensureWhitespaceAtIndex($endIndex, 1, ' '); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php deleted file mode 100644 index 4f9e839..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php +++ /dev/null @@ -1,760 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ControlStructure; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * always_move_variable?: bool, - * equal?: bool|null, - * identical?: bool|null, - * less_and_greater?: bool|null, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * always_move_variable: bool, - * equal: bool|null, - * identical: bool|null, - * less_and_greater: bool|null, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @phpstan-import-type _PhpTokenKind from Token - * - * @author Bram Gotink - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class YodaStyleFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array<_PhpTokenKind, Token> - */ - private array $candidatesMap; - - /** - * @var array<_PhpTokenKind, null|bool> - */ - private array $candidateTypesConfiguration; - - /** - * @var list<_PhpTokenKind> - */ - private array $candidateTypes; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Write conditions in Yoda style (`true`), non-Yoda style (`[\'equal\' => false, \'identical\' => false, \'less_and_greater\' => false]`) or ignore those conditions (`null`) based on configuration.', - [ - new CodeSample( - <<<'PHP' - 3; // less than - - PHP, - [ - 'equal' => true, - 'identical' => false, - 'less_and_greater' => null, - ], - ), - new CodeSample( - <<<'PHP' - true, - ], - ), - new CodeSample( - <<<'PHP' - false, - 'identical' => false, - 'less_and_greater' => false, - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after IsNullFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound($this->candidateTypes); - } - - protected function configurePostNormalisation(): void - { - $this->resolveConfiguration(); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->fixTokens($tokens); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('equal', 'Style for equal (`==`, `!=`) statements.')) - ->setAllowedTypes(['bool', 'null']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('identical', 'Style for identical (`===`, `!==`) statements.')) - ->setAllowedTypes(['bool', 'null']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('less_and_greater', 'Style for less and greater than (`<`, `<=`, `>`, `>=`) statements.')) - ->setAllowedTypes(['bool', 'null']) - ->setDefault(null) - ->getOption(), - (new FixerOptionBuilder('always_move_variable', 'Whether variables should always be on non assignable side when applying Yoda style.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - /** - * Finds the end of the right-hand side of the comparison at the given - * index. - * - * The right-hand side ends when an operator with a lower precedence is - * encountered or when the block level for `()`, `{}` or `[]` goes below - * zero. - * - * @param Tokens $tokens The token list - * @param int $index The index of the comparison - * - * @return int The last index of the right-hand side of the comparison - */ - private function findComparisonEnd(Tokens $tokens, int $index): int - { - ++$index; - $count = \count($tokens); - - while ($index < $count) { - $token = $tokens[$index]; - - if ($token->isGivenKind([\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT])) { - ++$index; - - continue; - } - - if ($this->isOfLowerPrecedence($token)) { - break; - } - - $block = Tokens::detectBlockType($token); - - if (null === $block) { - ++$index; - - continue; - } - - if (!$block['isStart']) { - break; - } - - $index = $tokens->findBlockEnd($block['type'], $index) + 1; - } - - $prev = $tokens->getPrevMeaningfulToken($index); - - return $tokens[$prev]->isGivenKind(\T_CLOSE_TAG) ? $tokens->getPrevMeaningfulToken($prev) : $prev; - } - - /** - * Finds the start of the left-hand side of the comparison at the given - * index. - * - * The left-hand side ends when an operator with a lower precedence is - * encountered or when the block level for `()`, `{}` or `[]` goes below - * zero. - * - * @param Tokens $tokens The token list - * @param int $index The index of the comparison - * - * @return int The first index of the left-hand side of the comparison - */ - private function findComparisonStart(Tokens $tokens, int $index): int - { - --$index; - $nonBlockFound = false; - - while (0 <= $index) { - $token = $tokens[$index]; - - if ($token->isGivenKind([\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT])) { - --$index; - - continue; - } - - if ($token->isGivenKind(CT::T_NAMED_ARGUMENT_COLON)) { - break; - } - - if ($this->isOfLowerPrecedence($token)) { - break; - } - - $block = Tokens::detectBlockType($token); - - if (null === $block) { - --$index; - $nonBlockFound = true; - - continue; - } - - if ( - $block['isStart'] - || ($nonBlockFound && Tokens::BLOCK_TYPE_BRACE === $block['type']) // closing of structure not related to the comparison - ) { - break; - } - - $index = $tokens->findBlockStart($block['type'], $index) - 1; - } - - return $tokens->getNextMeaningfulToken($index); - } - - private function fixTokens(Tokens $tokens): Tokens - { - for ($i = \count($tokens) - 1; $i > 1; --$i) { - if ($tokens[$i]->isGivenKind($this->candidateTypes)) { - \assert(isset($this->candidateTypesConfiguration[$tokens[$i]->getId()])); - $yoda = $this->candidateTypesConfiguration[$tokens[$i]->getId()]; - } elseif ( - ($tokens[$i]->equals('<') && \in_array('<', $this->candidateTypes, true)) - || ($tokens[$i]->equals('>') && \in_array('>', $this->candidateTypes, true)) - ) { - \assert(isset($this->candidateTypesConfiguration[$tokens[$i]->getContent()])); - $yoda = $this->candidateTypesConfiguration[$tokens[$i]->getContent()]; - } else { - continue; - } - - $fixableCompareInfo = $this->getCompareFixableInfo($tokens, $i, $yoda); - - if (null === $fixableCompareInfo) { - continue; - } - - $i = $this->fixTokensCompare( - $tokens, - $fixableCompareInfo['left']['start'], - $fixableCompareInfo['left']['end'], - $i, - $fixableCompareInfo['right']['start'], - $fixableCompareInfo['right']['end'], - ); - } - - return $tokens; - } - - /** - * Fixes the comparison at the given index. - * - * A comparison is considered fixed when - * - both sides are a variable (e.g. $a === $b) - * - neither side is a variable (e.g. self::CONST === 3) - * - only the right-hand side is a variable (e.g. 3 === self::$var) - * - * If the left-hand side and right-hand side of the given comparison are - * swapped, this function runs recursively on the previous left-hand-side. - * - * @return int an upper bound for all non-fixed comparisons - */ - private function fixTokensCompare( - Tokens $tokens, - int $startLeft, - int $endLeft, - int $compareOperatorIndex, - int $startRight, - int $endRight - ): int { - $type = $tokens[$compareOperatorIndex]->getId(); - $content = $tokens[$compareOperatorIndex]->getContent(); - - if (null !== $type && \array_key_exists($type, $this->candidatesMap)) { - $tokens[$compareOperatorIndex] = clone $this->candidatesMap[$type]; - } elseif (\array_key_exists($content, $this->candidatesMap)) { - $tokens[$compareOperatorIndex] = clone $this->candidatesMap[$content]; - } - - $right = $this->fixTokensComparePart($tokens, $startRight, $endRight); - $left = $this->fixTokensComparePart($tokens, $startLeft, $endLeft); - - for ($i = $startRight; $i <= $endRight; ++$i) { - $tokens->clearAt($i); - } - - for ($i = $startLeft; $i <= $endLeft; ++$i) { - $tokens->clearAt($i); - } - - $tokens->insertAt($startRight, $left); - $tokens->insertAt($startLeft, $right); - - return $startLeft; - } - - private function fixTokensComparePart(Tokens $tokens, int $start, int $end): Tokens - { - $newTokens = $tokens->generatePartialCode($start, $end); - $newTokens = $this->fixTokens(Tokens::fromCode(\sprintf('clearAt(\count($newTokens) - 1); - $newTokens->clearAt(0); - $newTokens->clearEmptyTokens(); - - return $newTokens; - } - - /** - * @return null|array{left: array{start: int, end: int}, right: array{start: int, end: int}} - */ - private function getCompareFixableInfo(Tokens $tokens, int $index, bool $yoda): ?array - { - $right = $this->getRightSideCompareFixableInfo($tokens, $index); - - if (!$yoda && $this->isOfLowerPrecedenceAssignment($tokens[$tokens->getNextMeaningfulToken($right['end'])])) { - return null; - } - - $left = $this->getLeftSideCompareFixableInfo($tokens, $index); - - if ($this->isListStatement($tokens, $left['start'], $left['end']) || $this->isListStatement($tokens, $right['start'], $right['end'])) { - return null; // do not fix lists assignment inside statements - } - - /** @var bool $strict */ - $strict = $this->configuration['always_move_variable']; - $leftSideIsVariable = $this->isVariable($tokens, $left['start'], $left['end'], $strict); - $rightSideIsVariable = $this->isVariable($tokens, $right['start'], $right['end'], $strict); - - if (!($leftSideIsVariable xor $rightSideIsVariable)) { - return null; // both are (not) variables, do not touch - } - - if (!$strict) { // special handling for braces with not "always_move_variable" - $leftSideIsVariable = $leftSideIsVariable && !$tokens[$left['start']]->equals('('); - $rightSideIsVariable = $rightSideIsVariable && !$tokens[$right['start']]->equals('('); - } - - return ($yoda && !$leftSideIsVariable) || (!$yoda && !$rightSideIsVariable) - ? null - : ['left' => $left, 'right' => $right]; - } - - /** - * @return array{start: int, end: int} - */ - private function getLeftSideCompareFixableInfo(Tokens $tokens, int $index): array - { - return [ - 'start' => $this->findComparisonStart($tokens, $index), - 'end' => $tokens->getPrevMeaningfulToken($index), - ]; - } - - /** - * @return array{start: int, end: int} - */ - private function getRightSideCompareFixableInfo(Tokens $tokens, int $index): array - { - return [ - 'start' => $tokens->getNextMeaningfulToken($index), - 'end' => $this->findComparisonEnd($tokens, $index), - ]; - } - - private function isListStatement(Tokens $tokens, int $index, int $end): bool - { - for ($i = $index; $i <= $end; ++$i) { - if ($tokens[$i]->isGivenKind([\T_LIST, CT::T_DESTRUCTURING_BRACKET_OPEN, CT::T_DESTRUCTURING_BRACKET_CLOSE])) { - return true; - } - } - - return false; - } - - /** - * Checks whether the given token has a lower precedence than `T_IS_EQUAL` - * or `T_IS_IDENTICAL`. - * - * @param Token $token The token to check - * - * @return bool Whether the token has a lower precedence - */ - private function isOfLowerPrecedence(Token $token): bool - { - return $this->isOfLowerPrecedenceAssignment($token) - || $token->isGivenKind([ - \T_BOOLEAN_AND, // && - \T_BOOLEAN_OR, // || - \T_CASE, // case - \T_DOUBLE_ARROW, // => - \T_ECHO, // echo - \T_GOTO, // goto - \T_LOGICAL_AND, // and - \T_LOGICAL_OR, // or - \T_LOGICAL_XOR, // xor - \T_OPEN_TAG, // equalsAny([ - // bitwise and, or, xor - '&', '|', '^', - // ternary operators - '?', ':', - // end of PHP statement - ',', ';', - ]); - } - - /** - * Checks whether the given assignment token has a lower precedence than `T_IS_EQUAL` - * or `T_IS_IDENTICAL`. - */ - private function isOfLowerPrecedenceAssignment(Token $token): bool - { - return $token->equals('=') || $token->isGivenKind([ - \T_AND_EQUAL, // &= - \T_CONCAT_EQUAL, // .= - \T_DIV_EQUAL, // /= - \T_MINUS_EQUAL, // -= - \T_MOD_EQUAL, // %= - \T_MUL_EQUAL, // *= - \T_OR_EQUAL, // |= - \T_PLUS_EQUAL, // += - \T_POW_EQUAL, // **= - \T_SL_EQUAL, // <<= - \T_SR_EQUAL, // >>= - \T_XOR_EQUAL, // ^= - \T_COALESCE_EQUAL, // ??= - ]); - } - - /** - * Checks whether the tokens between the given start and end describe a - * variable. - * - * @param Tokens $tokens The token list - * @param int $start The first index of the possible variable - * @param int $end The last index of the possible variable - * @param bool $strict Enable strict variable detection - * - * @return bool Whether the tokens describe a variable - */ - private function isVariable(Tokens $tokens, int $start, int $end, bool $strict): bool - { - $tokenAnalyzer = new TokensAnalyzer($tokens); - - if ($start === $end) { - return $tokens[$start]->isGivenKind(\T_VARIABLE); - } - - if ($tokens[$start]->equals('(')) { - return true; - } - - if ($strict) { - for ($index = $start; $index <= $end; ++$index) { - if ( - $tokens[$index]->isCast() - || $tokens[$index]->isGivenKind(\T_INSTANCEOF) - || $tokens[$index]->equals('!') - || $tokenAnalyzer->isBinaryOperator($index) - ) { - return false; - } - } - } - - $index = $start; - - // handle multiple braces around statement ((($a === 1))) - while ( - $tokens[$index]->equals('(') - && $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index) === $end - ) { - $index = $tokens->getNextMeaningfulToken($index); - $end = $tokens->getPrevMeaningfulToken($end); - } - - $expectString = false; - - while ($index <= $end) { - $current = $tokens[$index]; - if ($current->isComment() || $current->isWhitespace() || $tokens->isEmptyAt($index)) { - ++$index; - - continue; - } - - // check if this is the last token - if ($index === $end) { - return $current->isGivenKind($expectString ? \T_STRING : \T_VARIABLE); - } - - if ($current->isGivenKind([\T_LIST, CT::T_DESTRUCTURING_BRACKET_OPEN, CT::T_DESTRUCTURING_BRACKET_CLOSE])) { - return false; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - $next = $tokens[$nextIndex]; - - // self:: or ClassName:: - if ($current->isGivenKind(\T_STRING) && $next->isGivenKind(\T_DOUBLE_COLON)) { - $index = $tokens->getNextMeaningfulToken($nextIndex); - - continue; - } - - // \ClassName - if ($current->isGivenKind(\T_NS_SEPARATOR) && $next->isGivenKind(\T_STRING)) { - $index = $nextIndex; - - continue; - } - - // ClassName\ - if ($current->isGivenKind(\T_STRING) && $next->isGivenKind(\T_NS_SEPARATOR)) { - $index = $nextIndex; - - continue; - } - - // $a-> or a-> (as in $b->a->c) - if ($current->isGivenKind([\T_STRING, \T_VARIABLE]) && $next->isObjectOperator()) { - $index = $tokens->getNextMeaningfulToken($nextIndex); - $expectString = true; - - continue; - } - - // $a[...], a[...] (as in $c->a[$b]), $a{...} or a{...} (as in $c->a{$b}) - if ( - $current->isGivenKind($expectString ? \T_STRING : \T_VARIABLE) - && $next->equalsAny(['[', [CT::T_ARRAY_INDEX_BRACE_OPEN, '{']]) - ) { - $index = $tokens->findBlockEnd( - $next->equals('[') ? Tokens::BLOCK_TYPE_INDEX_BRACKET : Tokens::BLOCK_TYPE_INDEX_BRACE, - $nextIndex, - ); - - if ($index === $end) { - return true; - } - - $index = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$index]->equalsAny(['[', [CT::T_ARRAY_INDEX_BRACE_OPEN, '{']]) && !$tokens[$index]->isObjectOperator()) { - return false; - } - - $index = $tokens->getNextMeaningfulToken($index); - $expectString = true; - - continue; - } - - // $a(...) or $a->b(...) - if ($strict && $current->isGivenKind([\T_STRING, \T_VARIABLE]) && $next->equals('(')) { - return false; - } - - // {...} (as in $a->{$b}) - if ($expectString && $current->isGivenKind(CT::T_DYNAMIC_PROP_BRACE_OPEN)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_DYNAMIC_PROP_BRACE, $index); - if ($index === $end) { - return true; - } - - $index = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$index]->isObjectOperator()) { - return false; - } - - $index = $tokens->getNextMeaningfulToken($index); - $expectString = true; - - continue; - } - - break; - } - - return !$this->isConstant($tokens, $start, $end); - } - - private function isConstant(Tokens $tokens, int $index, int $end): bool - { - $expectArrayOnly = false; - $expectNumberOnly = false; - $expectNothing = false; - - for (; $index <= $end; ++$index) { - $token = $tokens[$index]; - - if ($token->isComment() || $token->isWhitespace()) { - continue; - } - - if ($expectNothing) { - return false; - } - - if ($expectArrayOnly) { - if ($token->equalsAny(['(', ')', [CT::T_ARRAY_BRACKET_CLOSE]])) { - continue; - } - - return false; - } - - if ($token->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN])) { - $expectArrayOnly = true; - - continue; - } - - if ($expectNumberOnly && !$token->isGivenKind([\T_LNUMBER, \T_DNUMBER])) { - return false; - } - - if ($token->equals('-')) { - $expectNumberOnly = true; - - continue; - } - - if ( - $token->isGivenKind([\T_LNUMBER, \T_DNUMBER, \T_CONSTANT_ENCAPSED_STRING]) - || $token->equalsAny([[\T_STRING, 'true'], [\T_STRING, 'false'], [\T_STRING, 'null']]) - ) { - $expectNothing = true; - - continue; - } - - return false; - } - - return true; - } - - private function resolveConfiguration(): void - { - $candidateTypes = []; - $this->candidatesMap = []; - - if (null !== $this->configuration['equal']) { - // `==`, `!=` and `<>` - $candidateTypes[\T_IS_EQUAL] = $this->configuration['equal']; - $candidateTypes[\T_IS_NOT_EQUAL] = $this->configuration['equal']; - } - - if (null !== $this->configuration['identical']) { - // `===` and `!==` - $candidateTypes[\T_IS_IDENTICAL] = $this->configuration['identical']; - $candidateTypes[\T_IS_NOT_IDENTICAL] = $this->configuration['identical']; - } - - if (null !== $this->configuration['less_and_greater']) { - // `<`, `<=`, `>` and `>=` - $candidateTypes[\T_IS_SMALLER_OR_EQUAL] = $this->configuration['less_and_greater']; - $this->candidatesMap[\T_IS_SMALLER_OR_EQUAL] = new Token([\T_IS_GREATER_OR_EQUAL, '>=']); - - $candidateTypes[\T_IS_GREATER_OR_EQUAL] = $this->configuration['less_and_greater']; - $this->candidatesMap[\T_IS_GREATER_OR_EQUAL] = new Token([\T_IS_SMALLER_OR_EQUAL, '<=']); - - $candidateTypes['<'] = $this->configuration['less_and_greater']; - $this->candidatesMap['<'] = new Token('>'); - - $candidateTypes['>'] = $this->configuration['less_and_greater']; - $this->candidatesMap['>'] = new Token('<'); - } - - $this->candidateTypesConfiguration = $candidateTypes; - $this->candidateTypes = array_keys($candidateTypes); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php deleted file mode 100644 index 6700ef7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -/** - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface DeprecatedFixerInterface extends FixerInterface -{ - /** - * Returns names of fixers to use instead, if any. - * - * @return list - */ - public function getSuccessorsNames(): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DocBlockAnnotationTrait.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DocBlockAnnotationTrait.php deleted file mode 100644 index 259c4c4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DocBlockAnnotationTrait.php +++ /dev/null @@ -1,185 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\Line; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FullyQualifiedNameAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @phpstan-require-implements FixerInterface - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -trait DocBlockAnnotationTrait -{ - final protected function getDocBlockIndex(Tokens $tokens, int $index): int - { - do { - $index = $tokens->getPrevNonWhitespace($index); - - if ($tokens[$index]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $index = $tokens->getPrevTokenOfKind($index, [[\T_ATTRIBUTE]]); - } - } while ($tokens[$index]->isGivenKind([\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_FINAL, \T_ABSTRACT, \T_COMMENT, FCT::T_ATTRIBUTE, FCT::T_READONLY])); - - return $index; - } - - /** - * @param list $preventingAnnotations - * @param list $preventingAttributes - */ - final protected function ensureIsDocBlockWithAnnotation( - Tokens $tokens, - int $index, - string $annotation, - array $preventingAnnotations, - array $preventingAttributes - ): void { - $docBlockIndex = $this->getDocBlockIndex($tokens, $index); - - if ($this->isPreventedByAttribute($tokens, $index, $preventingAttributes)) { - return; - } - - if ($tokens[$docBlockIndex]->isGivenKind(\T_DOC_COMMENT)) { - $this->updateDocBlockIfNeeded($tokens, $docBlockIndex, $annotation, $preventingAnnotations); - } else { - $this->createDocBlock($tokens, $docBlockIndex, $annotation); - } - } - - protected function createDocBlock(Tokens $tokens, int $docBlockIndex, string $annotation): void - { - $lineEnd = $this->whitespacesConfig->getLineEnding(); - $originalIndent = WhitespacesAnalyzer::detectIndent($tokens, $tokens->getNextNonWhitespace($docBlockIndex)); - $toInsert = [ - new Token([\T_DOC_COMMENT, "/**{$lineEnd}{$originalIndent} * @{$annotation}{$lineEnd}{$originalIndent} */"]), - new Token([\T_WHITESPACE, $lineEnd.$originalIndent]), - ]; - $index = $tokens->getNextMeaningfulToken($docBlockIndex); - $tokens->insertAt($index, $toInsert); - - if (!$tokens[$index - 1]->isGivenKind(\T_WHITESPACE)) { - $extraNewLines = $this->whitespacesConfig->getLineEnding(); - - if (!$tokens[$index - 1]->isGivenKind(\T_OPEN_TAG)) { - $extraNewLines .= $this->whitespacesConfig->getLineEnding(); - } - - $tokens->insertAt($index, [ - new Token([\T_WHITESPACE, $extraNewLines.WhitespacesAnalyzer::detectIndent($tokens, $index)]), - ]); - } - } - - /** - * @param list $preventingAnnotations - */ - private function updateDocBlockIfNeeded( - Tokens $tokens, - int $docBlockIndex, - string $annotation, - array $preventingAnnotations - ): void { - $doc = new DocBlock($tokens[$docBlockIndex]->getContent()); - foreach ($preventingAnnotations as $preventingAnnotation) { - if ([] !== $doc->getAnnotationsOfType($preventingAnnotation)) { - return; - } - } - $doc = $this->makeDocBlockMultiLineIfNeeded($doc, $tokens, $docBlockIndex, $annotation); - - $lines = $this->addAnnotation($doc, $tokens, $docBlockIndex, $annotation); - $lines = implode('', $lines); - - $tokens->getNamespaceDeclarations(); - $tokens[$docBlockIndex] = new Token([\T_DOC_COMMENT, $lines]); - } - - /** - * @param list $preventingAttributes - */ - private function isPreventedByAttribute(Tokens $tokens, int $index, array $preventingAttributes): bool - { - if ([] === $preventingAttributes) { - return false; - } - - do { - $index = $tokens->getPrevMeaningfulToken($index); - } while ($tokens[$index]->isGivenKind([\T_FINAL, FCT::T_READONLY])); - if (!$tokens[$index]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - return false; - } - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - - $fullyQualifiedNameAnalyzer = new FullyQualifiedNameAnalyzer($tokens); - - foreach (AttributeAnalyzer::collect($tokens, $index) as $attributeAnalysis) { - foreach ($attributeAnalysis->getAttributes() as $attribute) { - if (\in_array(strtolower($fullyQualifiedNameAnalyzer->getFullyQualifiedName($attribute['name'], $attribute['start'], NamespaceUseAnalysis::TYPE_CLASS)), $preventingAttributes, true)) { - return true; - } - } - } - - return false; - } - - /** - * @return non-empty-list - */ - private function addAnnotation( - DocBlock $docBlock, - Tokens $tokens, - int $docBlockIndex, - string $annotation - ): array { - $lines = $docBlock->getLines(); - $originalIndent = WhitespacesAnalyzer::detectIndent($tokens, $docBlockIndex); - $lineEnd = $this->whitespacesConfig->getLineEnding(); - array_splice($lines, -1, 0, [new Line($originalIndent.' * @'.$annotation.$lineEnd)]); - - return $lines; - } - - private function makeDocBlockMultiLineIfNeeded( - DocBlock $doc, - Tokens $tokens, - int $docBlockIndex, - string $annotation - ): DocBlock { - $lines = $doc->getLines(); - if (1 === \count($lines) && [] === $doc->getAnnotationsOfType($annotation)) { - $indent = WhitespacesAnalyzer::detectIndent($tokens, $tokens->getNextNonWhitespace($docBlockIndex)); - $doc->makeMultiLine($indent, $this->whitespacesConfig->getLineEnding()); - - return $doc; - } - - return $doc; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php deleted file mode 100644 index 6e0bbaa..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php +++ /dev/null @@ -1,116 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\DoctrineAnnotation; - -use PhpCsFixer\AbstractDoctrineAnnotationFixer; -use PhpCsFixer\Doctrine\Annotation\DocLexer; -use PhpCsFixer\Doctrine\Annotation\Tokens; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * Forces the configured operator for assignment in arrays in Doctrine Annotations. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * ignored_tags?: list, - * operator?: ':'|'=', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * ignored_tags: list, - * operator: ':'|'=', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DoctrineAnnotationArrayAssignmentFixer extends AbstractDoctrineAnnotationFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Doctrine annotations must use configured operator for assignment in arrays.', - [ - new CodeSample( - " ':'], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before DoctrineAnnotationSpacesFixer. - */ - public function getPriority(): int - { - return 1; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $options = parent::createConfigurationDefinition()->getOptions(); - - $options[] = (new FixerOptionBuilder('operator', 'The operator to use.')) - ->setAllowedValues(['=', ':']) - ->setDefault('=') - ->getOption() - ; - - return new FixerConfigurationResolver($options); - } - - protected function fixAnnotations(Tokens $doctrineAnnotationTokens): void - { - $scopes = []; - foreach ($doctrineAnnotationTokens as $token) { - if ($token->isType(DocLexer::T_OPEN_PARENTHESIS)) { - $scopes[] = 'annotation'; - - continue; - } - - if ($token->isType(DocLexer::T_OPEN_CURLY_BRACES)) { - $scopes[] = 'array'; - - continue; - } - - if ($token->isType([DocLexer::T_CLOSE_PARENTHESIS, DocLexer::T_CLOSE_CURLY_BRACES])) { - array_pop($scopes); - - continue; - } - - if ('array' === end($scopes) && $token->isType([DocLexer::T_EQUALS, DocLexer::T_COLON])) { - $token->setContent($this->configuration['operator']); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php deleted file mode 100644 index 48ddeb5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php +++ /dev/null @@ -1,134 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\DoctrineAnnotation; - -use PhpCsFixer\AbstractDoctrineAnnotationFixer; -use PhpCsFixer\Doctrine\Annotation\DocLexer; -use PhpCsFixer\Doctrine\Annotation\Token; -use PhpCsFixer\Doctrine\Annotation\Tokens; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * Adds braces to Doctrine annotations when missing. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * ignored_tags?: list, - * syntax?: 'with_braces'|'without_braces', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * ignored_tags: list, - * syntax: 'with_braces'|'without_braces', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DoctrineAnnotationBracesFixer extends AbstractDoctrineAnnotationFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Doctrine annotations without arguments must use the configured syntax.', - [ - new CodeSample( - " 'with_braces'], - ), - ], - ); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - ...parent::createConfigurationDefinition()->getOptions(), - (new FixerOptionBuilder('syntax', 'Whether to add or remove braces.')) - ->setAllowedValues(['with_braces', 'without_braces']) - ->setDefault('without_braces') - ->getOption(), - ]); - } - - protected function fixAnnotations(Tokens $doctrineAnnotationTokens): void - { - if ('without_braces' === $this->configuration['syntax']) { - $this->removesBracesFromAnnotations($doctrineAnnotationTokens); - } else { - $this->addBracesToAnnotations($doctrineAnnotationTokens); - } - } - - private function addBracesToAnnotations(Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isType(DocLexer::T_AT)) { - continue; - } - - $braceIndex = $tokens->getNextMeaningfulToken($index + 1); - if (null !== $braceIndex && $tokens[$braceIndex]->isType(DocLexer::T_OPEN_PARENTHESIS)) { - continue; - } - - $tokens->insertAt($index + 2, new Token(DocLexer::T_OPEN_PARENTHESIS, '(')); - $tokens->insertAt($index + 3, new Token(DocLexer::T_CLOSE_PARENTHESIS, ')')); - } - } - - private function removesBracesFromAnnotations(Tokens $tokens): void - { - for ($index = 0, $max = \count($tokens); $index < $max; ++$index) { - if (!$tokens[$index]->isType(DocLexer::T_AT)) { - continue; - } - - $openBraceIndex = $tokens->getNextMeaningfulToken($index + 1); - if (null === $openBraceIndex) { - continue; - } - - if (!$tokens[$openBraceIndex]->isType(DocLexer::T_OPEN_PARENTHESIS)) { - continue; - } - - $closeBraceIndex = $tokens->getNextMeaningfulToken($openBraceIndex); - if (null === $closeBraceIndex) { - continue; - } - - if (!$tokens[$closeBraceIndex]->isType(DocLexer::T_CLOSE_PARENTHESIS)) { - continue; - } - - for ($currentIndex = $index + 2; $currentIndex <= $closeBraceIndex; ++$currentIndex) { - $tokens[$currentIndex]->clear(); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php deleted file mode 100644 index 1d08378..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php +++ /dev/null @@ -1,201 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\DoctrineAnnotation; - -use PhpCsFixer\AbstractDoctrineAnnotationFixer; -use PhpCsFixer\Doctrine\Annotation\DocLexer; -use PhpCsFixer\Doctrine\Annotation\Tokens; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * ignored_tags?: list, - * indent_mixed_lines?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * ignored_tags: list, - * indent_mixed_lines: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DoctrineAnnotationIndentationFixer extends AbstractDoctrineAnnotationFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Doctrine annotations must be indented with four spaces.', - [ - new CodeSample(" true], - ), - ], - ); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - ...parent::createConfigurationDefinition()->getOptions(), - (new FixerOptionBuilder('indent_mixed_lines', 'Whether to indent lines that have content before closing parenthesis.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function fixAnnotations(Tokens $doctrineAnnotationTokens): void - { - $annotationPositions = []; - for ($index = 0, $max = \count($doctrineAnnotationTokens); $index < $max; ++$index) { - if (!$doctrineAnnotationTokens[$index]->isType(DocLexer::T_AT)) { - continue; - } - - $annotationEndIndex = $doctrineAnnotationTokens->getAnnotationEnd($index); - if (null === $annotationEndIndex) { - return; - } - - $annotationPositions[] = [$index, $annotationEndIndex]; - $index = $annotationEndIndex; - } - - $indentLevel = 0; - foreach ($doctrineAnnotationTokens as $index => $token) { - if (!$token->isType(DocLexer::T_NONE) || !str_contains($token->getContent(), "\n")) { - continue; - } - - if (!$this->indentationCanBeFixed($doctrineAnnotationTokens, $index, $annotationPositions)) { - continue; - } - - $braces = $this->getLineBracesCount($doctrineAnnotationTokens, $index); - $delta = $braces[0] - $braces[1]; - $mixedBraces = 0 === $delta && $braces[0] > 0; - $extraIndentLevel = 0; - - if ($indentLevel > 0 && ($delta < 0 || $mixedBraces)) { - --$indentLevel; - - if (true === $this->configuration['indent_mixed_lines'] && $this->isClosingLineWithMeaningfulContent($doctrineAnnotationTokens, $index)) { - $extraIndentLevel = 1; - } - } - - $token->setContent(Preg::replace( - '/(\n( +\*)?) *$/', - '$1'.str_repeat(' ', 4 * ($indentLevel + $extraIndentLevel) + 1), - $token->getContent(), - )); - - if ($delta > 0 || $mixedBraces) { - ++$indentLevel; - } - } - } - - /** - * @return array{int, int} - */ - private function getLineBracesCount(Tokens $tokens, int $index): array - { - $opening = 0; - $closing = 0; - - while (isset($tokens[++$index])) { - $token = $tokens[$index]; - if ($token->isType(DocLexer::T_NONE) && str_contains($token->getContent(), "\n")) { - break; - } - - if ($token->isType([DocLexer::T_OPEN_PARENTHESIS, DocLexer::T_OPEN_CURLY_BRACES])) { - ++$opening; - - continue; - } - - if (!$token->isType([DocLexer::T_CLOSE_PARENTHESIS, DocLexer::T_CLOSE_CURLY_BRACES])) { - continue; - } - - if ($opening > 0) { - --$opening; - } else { - ++$closing; - } - } - - return [$opening, $closing]; - } - - private function isClosingLineWithMeaningfulContent(Tokens $tokens, int $index): bool - { - while (isset($tokens[++$index])) { - $token = $tokens[$index]; - if ($token->isType(DocLexer::T_NONE)) { - if (str_contains($token->getContent(), "\n")) { - return false; - } - - continue; - } - - return !$token->isType([DocLexer::T_CLOSE_PARENTHESIS, DocLexer::T_CLOSE_CURLY_BRACES]); - } - - return false; - } - - /** - * @param list $annotationPositions Pairs of begin and end indices of main annotations - */ - private function indentationCanBeFixed(Tokens $tokens, int $newLineTokenIndex, array $annotationPositions): bool - { - foreach ($annotationPositions as $position) { - if ($newLineTokenIndex >= $position[0] && $newLineTokenIndex <= $position[1]) { - return true; - } - } - - for ($index = $newLineTokenIndex + 1, $max = \count($tokens); $index < $max; ++$index) { - $token = $tokens[$index]; - - if (str_contains($token->getContent(), "\n")) { - return false; - } - - return $tokens[$index]->isType(DocLexer::T_AT); - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php deleted file mode 100644 index cb2adde..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php +++ /dev/null @@ -1,322 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\DoctrineAnnotation; - -use PhpCsFixer\AbstractDoctrineAnnotationFixer; -use PhpCsFixer\Doctrine\Annotation\DocLexer; -use PhpCsFixer\Doctrine\Annotation\Token; -use PhpCsFixer\Doctrine\Annotation\Tokens; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; - -/** - * Fixes spaces around commas and assignment operators in Doctrine annotations. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * after_argument_assignments?: bool|null, - * after_array_assignments_colon?: bool|null, - * after_array_assignments_equals?: bool|null, - * around_commas?: bool, - * around_parentheses?: bool, - * before_argument_assignments?: bool|null, - * before_array_assignments_colon?: bool|null, - * before_array_assignments_equals?: bool|null, - * ignored_tags?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * after_argument_assignments: bool|null, - * after_array_assignments_colon: bool|null, - * after_array_assignments_equals: bool|null, - * around_commas: bool, - * around_parentheses: bool, - * before_argument_assignments: bool|null, - * before_array_assignments_colon: bool|null, - * before_array_assignments_equals: bool|null, - * ignored_tags: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DoctrineAnnotationSpacesFixer extends AbstractDoctrineAnnotationFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Fixes spaces in Doctrine annotations.', - [ - new CodeSample( - " false, 'before_array_assignments_equals' => false], - ), - ], - 'There must not be any space around parentheses; commas must be preceded by no space and followed by one space; there must be no space around named arguments assignment operator; there must be one space around array assignment operator.', - ); - } - - /** - * {@inheritdoc} - * - * Must run after DoctrineAnnotationArrayAssignmentFixer. - */ - public function getPriority(): int - { - return 0; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - ...parent::createConfigurationDefinition()->getOptions(), - (new FixerOptionBuilder('around_parentheses', 'Whether to fix spaces around parentheses.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('around_commas', 'Whether to fix spaces around commas.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('before_argument_assignments', 'Whether to add, remove or ignore spaces before argument assignment operator.')) - ->setAllowedTypes(['null', 'bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('after_argument_assignments', 'Whether to add, remove or ignore spaces after argument assignment operator.')) - ->setAllowedTypes(['null', 'bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('before_array_assignments_equals', 'Whether to add, remove or ignore spaces before array `=` assignment operator.')) - ->setAllowedTypes(['null', 'bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('after_array_assignments_equals', 'Whether to add, remove or ignore spaces after array assignment `=` operator.')) - ->setAllowedTypes(['null', 'bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('before_array_assignments_colon', 'Whether to add, remove or ignore spaces before array `:` assignment operator.')) - ->setAllowedTypes(['null', 'bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('after_array_assignments_colon', 'Whether to add, remove or ignore spaces after array assignment `:` operator.')) - ->setAllowedTypes(['null', 'bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - protected function fixAnnotations(Tokens $doctrineAnnotationTokens): void - { - if (true === $this->configuration['around_parentheses']) { - $this->fixSpacesAroundParentheses($doctrineAnnotationTokens); - } - - if (true === $this->configuration['around_commas']) { - $this->fixSpacesAroundCommas($doctrineAnnotationTokens); - } - - if ( - null !== $this->configuration['before_argument_assignments'] - || null !== $this->configuration['after_argument_assignments'] - || null !== $this->configuration['before_array_assignments_equals'] - || null !== $this->configuration['after_array_assignments_equals'] - || null !== $this->configuration['before_array_assignments_colon'] - || null !== $this->configuration['after_array_assignments_colon'] - ) { - $this->fixAroundAssignments($doctrineAnnotationTokens); - } - } - - private function fixSpacesAroundParentheses(Tokens $tokens): void - { - $inAnnotationUntilIndex = null; - - foreach ($tokens as $index => $token) { - if (null !== $inAnnotationUntilIndex) { - if ($index === $inAnnotationUntilIndex) { - $inAnnotationUntilIndex = null; - - continue; - } - } elseif ($token->isType(DocLexer::T_AT)) { - $endIndex = $tokens->getAnnotationEnd($index); - if (null !== $endIndex) { - $inAnnotationUntilIndex = $endIndex + 1; - } - - continue; - } - - if (null === $inAnnotationUntilIndex) { - continue; - } - - if (!$token->isType([DocLexer::T_OPEN_PARENTHESIS, DocLexer::T_CLOSE_PARENTHESIS])) { - continue; - } - - if ($token->isType(DocLexer::T_OPEN_PARENTHESIS)) { - $token = $tokens[$index - 1]; - if ($token->isType(DocLexer::T_NONE)) { - $token->clear(); - } - - $token = $tokens[$index + 1]; - } else { - $token = $tokens[$index - 1]; - } - - if ($token->isType(DocLexer::T_NONE)) { - if (str_contains($token->getContent(), "\n")) { - continue; - } - - $token->clear(); - } - } - } - - private function fixSpacesAroundCommas(Tokens $tokens): void - { - $inAnnotationUntilIndex = null; - - foreach ($tokens as $index => $token) { - if (null !== $inAnnotationUntilIndex) { - if ($index === $inAnnotationUntilIndex) { - $inAnnotationUntilIndex = null; - - continue; - } - } elseif ($token->isType(DocLexer::T_AT)) { - $endIndex = $tokens->getAnnotationEnd($index); - if (null !== $endIndex) { - $inAnnotationUntilIndex = $endIndex; - } - - continue; - } - - if (null === $inAnnotationUntilIndex) { - continue; - } - - if (!$token->isType(DocLexer::T_COMMA)) { - continue; - } - - $token = $tokens[$index - 1]; - if ($token->isType(DocLexer::T_NONE)) { - $token->clear(); - } - - if ($index < \count($tokens) - 1 && !Preg::match('/^\s/', $tokens[$index + 1]->getContent())) { - $tokens->insertAt($index + 1, new Token(DocLexer::T_NONE, ' ')); - } - } - } - - private function fixAroundAssignments(Tokens $tokens): void - { - $beforeArguments = $this->configuration['before_argument_assignments']; - $afterArguments = $this->configuration['after_argument_assignments']; - $beforeArraysEquals = $this->configuration['before_array_assignments_equals']; - $afterArraysEquals = $this->configuration['after_array_assignments_equals']; - $beforeArraysColon = $this->configuration['before_array_assignments_colon']; - $afterArraysColon = $this->configuration['after_array_assignments_colon']; - - $scopes = []; - foreach ($tokens as $index => $token) { - $endScopeType = end($scopes); - if (false !== $endScopeType && $token->isType($endScopeType)) { - array_pop($scopes); - - continue; - } - - if ($token->isType(DocLexer::T_AT)) { - $scopes[] = DocLexer::T_CLOSE_PARENTHESIS; - - continue; - } - - if ($token->isType(DocLexer::T_OPEN_CURLY_BRACES)) { - $scopes[] = DocLexer::T_CLOSE_CURLY_BRACES; - - continue; - } - - if (DocLexer::T_CLOSE_PARENTHESIS === $endScopeType && $token->isType(DocLexer::T_EQUALS)) { - $this->updateSpacesAfter($tokens, $index, $afterArguments); - $this->updateSpacesBefore($tokens, $index, $beforeArguments); - - continue; - } - - if (DocLexer::T_CLOSE_CURLY_BRACES === $endScopeType) { - if ($token->isType(DocLexer::T_EQUALS)) { - $this->updateSpacesAfter($tokens, $index, $afterArraysEquals); - $this->updateSpacesBefore($tokens, $index, $beforeArraysEquals); - - continue; - } - - if ($token->isType(DocLexer::T_COLON)) { - $this->updateSpacesAfter($tokens, $index, $afterArraysColon); - $this->updateSpacesBefore($tokens, $index, $beforeArraysColon); - } - } - } - } - - private function updateSpacesAfter(Tokens $tokens, int $index, ?bool $insert): void - { - $this->updateSpacesAt($tokens, $index + 1, $index + 1, $insert); - } - - private function updateSpacesBefore(Tokens $tokens, int $index, ?bool $insert): void - { - $this->updateSpacesAt($tokens, $index - 1, $index, $insert); - } - - private function updateSpacesAt(Tokens $tokens, int $index, int $insertIndex, ?bool $insert): void - { - if (null === $insert) { - return; - } - - $token = $tokens[$index]; - if ($insert) { - if (!$token->isType(DocLexer::T_NONE)) { - $tokens->insertAt($insertIndex, $token = new Token()); - } - - $token->setContent(' '); - } elseif ($token->isType(DocLexer::T_NONE)) { - $token->clear(); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ExperimentalFixerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ExperimentalFixerInterface.php deleted file mode 100644 index 4f9ae54..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ExperimentalFixerInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface ExperimentalFixerInterface extends FixerInterface {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php deleted file mode 100644 index 01d1182..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php +++ /dev/null @@ -1,81 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * @author Fabien Potencier - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface FixerInterface -{ - /** - * Check if the fixer is a candidate for given Tokens collection. - * - * Fixer is a candidate when the collection contains tokens that may be fixed - * during fixer work. This could be considered as some kind of bloom filter. - * When this method returns true then to the Tokens collection may or may not - * need a fixing, but when this method returns false then the Tokens collection - * need no fixing for sure. - */ - public function isCandidate(Tokens $tokens): bool; - - /** - * Check if fixer is risky or not. - * - * Risky fixer could change code behaviour! - */ - public function isRisky(): bool; - - /** - * Fixes a file. - * - * @param \SplFileInfo $file A \SplFileInfo instance - * @param Tokens $tokens Tokens collection - */ - public function fix(\SplFileInfo $file, Tokens $tokens): void; - - /** - * Returns the definition of the fixer. - */ - public function getDefinition(): FixerDefinitionInterface; - - /** - * Returns the name of the fixer. - * - * The name must be all lowercase and without any spaces. - * - * @return string The name of the fixer - */ - public function getName(): string; - - /** - * Returns the priority of the fixer. - * - * The default priority is 0 and higher priorities are executed first. - */ - public function getPriority(): int; - - /** - * Returns true if the file is supported by this fixer. - * - * @return bool true if the file is supported by this fixer, false otherwise - */ - public function supports(\SplFileInfo $file): bool; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php deleted file mode 100644 index 8587d93..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php +++ /dev/null @@ -1,226 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CombineNestedDirnameFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replace multiple nested calls of `dirname` by only one call with second `$level` parameter.', - [ - new CodeSample( - "isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run before MethodArgumentSpaceFixer, NoSpacesInsideParenthesisFixer, SpacesInsideParenthesesFixer. - * Must run after DirConstantFixer. - */ - public function getPriority(): int - { - return 35; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; 0 <= $index; --$index) { - $dirnameInfo = $this->getDirnameInfo($tokens, $index); - - if (false === $dirnameInfo) { - continue; - } - - $prev = $tokens->getPrevMeaningfulToken($dirnameInfo['indices'][0]); - - if (!$tokens[$prev]->equals('(')) { - continue; - } - - $prev = $tokens->getPrevMeaningfulToken($prev); - $firstArgumentEnd = $dirnameInfo['end']; - $dirnameInfoArray = [$dirnameInfo]; - - while (($dirnameInfo = $this->getDirnameInfo($tokens, $prev, $firstArgumentEnd)) !== false) { - $dirnameInfoArray[] = $dirnameInfo; - $prev = $tokens->getPrevMeaningfulToken($dirnameInfo['indices'][0]); - - if (!$tokens[$prev]->equals('(')) { - break; - } - - $prev = $tokens->getPrevMeaningfulToken($prev); - $firstArgumentEnd = $dirnameInfo['end']; - } - - if (\count($dirnameInfoArray) > 1) { - $this->combineDirnames($tokens, $dirnameInfoArray); - } - - $index = $prev; - } - } - - /** - * @param int $index Index of `dirname` - * @param null|int $firstArgumentEndIndex Index of last token of first argument of `dirname` call - * - * @return array{indices: non-empty-list, secondArgument?: int, levels: int, end: int}|false `false` when it is not a (supported) `dirname` call, an array with info about the dirname call otherwise - */ - private function getDirnameInfo(Tokens $tokens, int $index, ?int $firstArgumentEndIndex = null) - { - if (!$tokens[$index]->equals([\T_STRING, 'dirname'], false)) { - return false; - } - - if (!(new FunctionsAnalyzer())->isGlobalFunctionCall($tokens, $index)) { - return false; - } - - $info = ['indices' => []]; - $prev = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prev]->isGivenKind(\T_NS_SEPARATOR)) { - $info['indices'][] = $prev; - } - - $info['indices'][] = $index; - - // opening parenthesis "(" - $next = $tokens->getNextMeaningfulToken($index); - $info['indices'][] = $next; - - if (null !== $firstArgumentEndIndex) { - $next = $tokens->getNextMeaningfulToken($firstArgumentEndIndex); - } else { - $next = $tokens->getNextMeaningfulToken($next); - - if ($tokens[$next]->equals(')')) { - return false; - } - - while (!$tokens[$next]->equalsAny([',', ')'])) { - $blockType = Tokens::detectBlockType($tokens[$next]); - - if (null !== $blockType) { - $next = $tokens->findBlockEnd($blockType['type'], $next); - } - - $next = $tokens->getNextMeaningfulToken($next); - } - } - - $info['indices'][] = $next; - - if ($tokens[$next]->equals(',')) { - $next = $tokens->getNextMeaningfulToken($next); - $info['indices'][] = $next; - } - - if ($tokens[$next]->equals(')')) { - $info['levels'] = 1; - $info['end'] = $next; - - return $info; - } - - if (!$tokens[$next]->isGivenKind(\T_LNUMBER)) { - return false; - } - - $info['secondArgument'] = $next; - $info['levels'] = (int) $tokens[$next]->getContent(); - - $next = $tokens->getNextMeaningfulToken($next); - - if ($tokens[$next]->equals(',')) { - $info['indices'][] = $next; - $next = $tokens->getNextMeaningfulToken($next); - } - - if (!$tokens[$next]->equals(')')) { - return false; - } - - $info['indices'][] = $next; - $info['end'] = $next; - - return $info; - } - - /** - * @param non-empty-list, secondArgument?: int, levels: int, end: int}> $dirnameInfoArray - */ - private function combineDirnames(Tokens $tokens, array $dirnameInfoArray): void - { - $outerDirnameInfo = array_pop($dirnameInfoArray); - $levels = $outerDirnameInfo['levels']; - - foreach ($dirnameInfoArray as $dirnameInfo) { - $levels += $dirnameInfo['levels']; - - foreach ($dirnameInfo['indices'] as $index) { - $tokens->removeLeadingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } - - $levelsToken = new Token([\T_LNUMBER, (string) $levels]); - - if (isset($outerDirnameInfo['secondArgument'])) { - $tokens[$outerDirnameInfo['secondArgument']] = $levelsToken; - } else { - $prev = $tokens->getPrevMeaningfulToken($outerDirnameInfo['end']); - $items = []; - - if (!$tokens[$prev]->equals(',')) { - $items = [new Token(','), new Token([\T_WHITESPACE, ' '])]; - } - - $items[] = $levelsToken; - $tokens->insertAt($outerDirnameInfo['end'], $items); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/DateTimeCreateFromFormatCallFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/DateTimeCreateFromFormatCallFixer.php deleted file mode 100644 index b9a10ba..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/DateTimeCreateFromFormatCallFixer.php +++ /dev/null @@ -1,167 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DateTimeCreateFromFormatCallFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The first argument of `DateTime::createFromFormat` method must start with `!`.', - [ - new CodeSample("isTokenKindFound(\T_DOUBLE_COLON); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - $namespaceUsesAnalyzer = new NamespaceUsesAnalyzer(); - - foreach ($tokens->getNamespaceDeclarations() as $namespace) { - $scopeStartIndex = $namespace->getScopeStartIndex(); - $useDeclarations = $namespaceUsesAnalyzer->getDeclarationsInNamespace($tokens, $namespace); - - for ($index = $namespace->getScopeEndIndex(); $index > $scopeStartIndex; --$index) { - if (!$tokens[$index]->isGivenKind(\T_DOUBLE_COLON)) { - continue; - } - - $functionNameIndex = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$functionNameIndex]->equals([\T_STRING, 'createFromFormat'], false)) { - continue; - } - - if (!$tokens[$tokens->getNextMeaningfulToken($functionNameIndex)]->equals('(')) { - continue; - } - - $classNameIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$classNameIndex]->equalsAny([[\T_STRING, \DateTime::class], [\T_STRING, \DateTimeImmutable::class]], false)) { - continue; - } - - $preClassNameIndex = $tokens->getPrevMeaningfulToken($classNameIndex); - - if ($tokens[$preClassNameIndex]->isGivenKind(\T_NS_SEPARATOR)) { - if ($tokens[$tokens->getPrevMeaningfulToken($preClassNameIndex)]->isGivenKind(\T_STRING)) { - continue; - } - } elseif (!$namespace->isGlobalNamespace()) { - continue; - } else { - foreach ($useDeclarations as $useDeclaration) { - foreach (['datetime', 'datetimeimmutable'] as $name) { - if ($name === strtolower($useDeclaration->getShortName()) && $name !== strtolower($useDeclaration->getFullName())) { - continue 3; - } - } - } - } - - $openIndex = $tokens->getNextTokenOfKind($functionNameIndex, ['(']); - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); - - $argumentIndex = $this->getFirstArgumentTokenIndex($tokens, $argumentsAnalyzer->getArguments($tokens, $openIndex, $closeIndex)); - - if (null === $argumentIndex) { - continue; - } - - $format = $tokens[$argumentIndex]->getContent(); - - if (\strlen($format) < 3) { - continue; - } - - $offset = 'b' === $format[0] || 'B' === $format[0] ? 2 : 1; - - if ('!' === $format[$offset]) { - continue; - } - - $tokens->clearAt($argumentIndex); - $tokens->insertAt($argumentIndex, new Token([\T_CONSTANT_ENCAPSED_STRING, substr_replace($format, '!', $offset, 0)])); - } - } - } - - /** - * @param array $arguments - */ - private function getFirstArgumentTokenIndex(Tokens $tokens, array $arguments): ?int - { - if (2 !== \count($arguments)) { - return null; - } - - $argumentStartIndex = array_key_first($arguments); - $argumentEndIndex = $arguments[$argumentStartIndex]; - $argumentStartIndex = $tokens->getNextMeaningfulToken($argumentStartIndex - 1); - - if ( - $argumentStartIndex !== $argumentEndIndex - && $tokens->getNextMeaningfulToken($argumentStartIndex) <= $argumentEndIndex - ) { - return null; // argument is not a simple single string - } - - return !$tokens[$argumentStartIndex]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING) - ? null // first argument is not a string - : $argumentStartIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php deleted file mode 100644 index 2cfcbc0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php +++ /dev/null @@ -1,126 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFopenFlagFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FopenFlagOrderFixer extends AbstractFopenFlagFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Order the flags in `fopen` calls, `b` and `t` must be last.', - [new CodeSample("isGivenKind([\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT])) { - continue; - } - - if (null !== $argumentFlagIndex) { - return; // multiple meaningful tokens found, no candidate for fixing - } - - $argumentFlagIndex = $i; - } - - // check if second argument is candidate - if (null === $argumentFlagIndex || !$tokens[$argumentFlagIndex]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - return; - } - - $content = $tokens[$argumentFlagIndex]->getContent(); - $contentQuote = $content[0]; // `'`, `"`, `b` or `B` - - if ('b' === $contentQuote || 'B' === $contentQuote) { - $binPrefix = $contentQuote; - $contentQuote = $content[1]; // `'` or `"` - $mode = substr($content, 2, -1); - } else { - $binPrefix = ''; - $mode = substr($content, 1, -1); - } - - $modeLength = \strlen($mode); - if ($modeLength < 2) { - return; // nothing to sort - } - - if (false === $this->isValidModeString($mode)) { - return; - } - - $split = $this->sortFlags(Preg::split('#([^\+]\+?)#', $mode, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE)); - $newContent = $binPrefix.$contentQuote.implode('', $split).$contentQuote; - - if ($content !== $newContent) { - $tokens[$argumentFlagIndex] = new Token([\T_CONSTANT_ENCAPSED_STRING, $newContent]); - } - } - - /** - * @param list $flags - * - * @return list - */ - private function sortFlags(array $flags): array - { - usort( - $flags, - static function (string $flag1, string $flag2): int { - if ($flag1 === $flag2) { - return 0; - } - - if ('b' === $flag1) { - return 1; - } - - if ('b' === $flag2) { - return -1; - } - - if ('t' === $flag1) { - return 1; - } - - if ('t' === $flag2) { - return -1; - } - - return $flag1 < $flag2 ? -1 : 1; - }, - ); - - return $flags; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php deleted file mode 100644 index 72e0deb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php +++ /dev/null @@ -1,122 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFopenFlagFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * b_mode?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * b_mode: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FopenFlagsFixer extends AbstractFopenFlagFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The flags in `fopen` calls must omit `t`, and `b` must be omitted or included consistently.', - [ - new CodeSample(" false]), - ], - null, - 'Risky when the function `fopen` is overridden.', - ); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('b_mode', 'The `b` flag must be used (`true`) or omitted (`false`).')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - protected function fixFopenFlagToken(Tokens $tokens, int $argumentStartIndex, int $argumentEndIndex): void - { - $argumentFlagIndex = null; - - for ($i = $argumentStartIndex; $i <= $argumentEndIndex; ++$i) { - if ($tokens[$i]->isGivenKind([\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT])) { - continue; - } - - if (null !== $argumentFlagIndex) { - return; // multiple meaningful tokens found, no candidate for fixing - } - - $argumentFlagIndex = $i; - } - - // check if second argument is candidate - if (null === $argumentFlagIndex || !$tokens[$argumentFlagIndex]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - return; - } - - $content = $tokens[$argumentFlagIndex]->getContent(); - $contentQuote = $content[0]; // `'`, `"`, `b` or `B` - - if ('b' === $contentQuote || 'B' === $contentQuote) { - $binPrefix = $contentQuote; - $contentQuote = $content[1]; // `'` or `"` - $mode = substr($content, 2, -1); - } else { - $binPrefix = ''; - $mode = substr($content, 1, -1); - } - - if (false === $this->isValidModeString($mode)) { - return; - } - - $mode = str_replace('t', '', $mode); - - if (true === $this->configuration['b_mode']) { - if (!str_contains($mode, 'b')) { - $mode .= 'b'; - } - } else { - $mode = str_replace('b', '', $mode); - } - - $newContent = $binPrefix.$contentQuote.$mode.$contentQuote; - - if ($content !== $newContent) { - $tokens[$argumentFlagIndex] = new Token([\T_CONSTANT_ENCAPSED_STRING, $newContent]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php deleted file mode 100644 index 6f3c3da..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php +++ /dev/null @@ -1,277 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * Fixer for rules defined in PSR2 generally (¶1 and ¶6). - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * closure_fn_spacing?: 'none'|'one', - * closure_function_spacing?: 'none'|'one', - * trailing_comma_single_line?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * closure_fn_spacing: 'none'|'one', - * closure_function_spacing: 'none'|'one', - * trailing_comma_single_line: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FunctionDeclarationFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const SPACING_NONE = 'none'; - - /** - * @internal - */ - public const SPACING_ONE = 'one'; - - private const SUPPORTED_SPACINGS = [self::SPACING_NONE, self::SPACING_ONE]; - - private string $singleLineWhitespaceOptions = " \t"; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_FUNCTION, \T_FN]); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Spaces should be properly placed in a function declaration.', - [ - new CodeSample( - <<<'PHP' - self::SPACING_NONE], - ), - new CodeSample( - <<<'PHP' - null; - - PHP, - ['closure_fn_spacing' => self::SPACING_NONE], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before MethodArgumentSpaceFixer. - * Must run after SingleSpaceAfterConstructFixer, SingleSpaceAroundConstructFixer, UseArrowFunctionsFixer. - */ - public function getPriority(): int - { - return 31; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind([\T_FUNCTION, \T_FN])) { - continue; - } - - $startParenthesisIndex = $tokens->getNextTokenOfKind($index, ['(', ';', [\T_CLOSE_TAG]]); - - if (!$tokens[$startParenthesisIndex]->equals('(')) { - continue; - } - - $endParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startParenthesisIndex); - - if (false === $this->configuration['trailing_comma_single_line'] - && !$tokens->isPartialCodeMultiline($index, $endParenthesisIndex) - ) { - $commaIndex = $tokens->getPrevMeaningfulToken($endParenthesisIndex); - - if ($tokens[$commaIndex]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($commaIndex); - } - } - - $startBraceIndex = $tokens->getNextTokenOfKind($endParenthesisIndex, [';', '{', [\T_DOUBLE_ARROW]]); - - // fix single-line whitespace before { or => - // eg: `function foo(){}` => `function foo() {}` - // eg: `function foo() {}` => `function foo() {}` - // eg: `fn() =>` => `fn() =>` - if ( - $tokens[$startBraceIndex]->equalsAny(['{', [\T_DOUBLE_ARROW]]) - && ( - !$tokens[$startBraceIndex - 1]->isWhitespace() - || $tokens[$startBraceIndex - 1]->isWhitespace($this->singleLineWhitespaceOptions) - ) - ) { - $tokens->ensureWhitespaceAtIndex($startBraceIndex - 1, 1, ' '); - } - - $afterParenthesisIndex = $tokens->getNextNonWhitespace($endParenthesisIndex); - $afterParenthesisToken = $tokens[$afterParenthesisIndex]; - - if ($afterParenthesisToken->isGivenKind(CT::T_USE_LAMBDA)) { - // fix whitespace after CT:T_USE_LAMBDA (we might add a token, so do this before determining start and end parenthesis) - $tokens->ensureWhitespaceAtIndex($afterParenthesisIndex + 1, 0, ' '); - - $useStartParenthesisIndex = $tokens->getNextTokenOfKind($afterParenthesisIndex, ['(']); - $useEndParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $useStartParenthesisIndex); - - if (false === $this->configuration['trailing_comma_single_line'] - && !$tokens->isPartialCodeMultiline($index, $useEndParenthesisIndex) - ) { - $commaIndex = $tokens->getPrevMeaningfulToken($useEndParenthesisIndex); - - if ($tokens[$commaIndex]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($commaIndex); - } - } - - // remove single-line edge whitespaces inside use parentheses - $this->fixParenthesisInnerEdge($tokens, $useStartParenthesisIndex, $useEndParenthesisIndex); - - // fix whitespace before CT::T_USE_LAMBDA - $tokens->ensureWhitespaceAtIndex($afterParenthesisIndex - 1, 1, ' '); - } - - // remove single-line edge whitespaces inside parameters list parentheses - $this->fixParenthesisInnerEdge($tokens, $startParenthesisIndex, $endParenthesisIndex); - $isLambda = $tokensAnalyzer->isLambda($index); - - // remove whitespace before ( - // eg: `function foo () {}` => `function foo() {}` - if (!$isLambda && $tokens[$startParenthesisIndex - 1]->isWhitespace() && !$tokens[$tokens->getPrevNonWhitespace($startParenthesisIndex - 1)]->isComment()) { - $tokens->clearAt($startParenthesisIndex - 1); - } - - $option = $token->isGivenKind(\T_FN) ? 'closure_fn_spacing' : 'closure_function_spacing'; - - if ($isLambda && self::SPACING_NONE === $this->configuration[$option]) { - // optionally remove whitespace after T_FUNCTION of a closure - // eg: `function () {}` => `function() {}` - if ($tokens[$index + 1]->isWhitespace()) { - $tokens->clearAt($index + 1); - } - } else { - // otherwise, enforce whitespace after T_FUNCTION - // eg: `function foo() {}` => `function foo() {}` - $tokens->ensureWhitespaceAtIndex($index + 1, 0, ' '); - } - - if ($isLambda) { - $prev = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prev]->isGivenKind(\T_STATIC)) { - // fix whitespace after T_STATIC - // eg: `$a = static function(){};` => `$a = static function(){};` - $tokens->ensureWhitespaceAtIndex($prev + 1, 0, ' '); - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('closure_function_spacing', 'Spacing to use before open parenthesis for closures.')) - ->setDefault(self::SPACING_ONE) - ->setAllowedValues(self::SUPPORTED_SPACINGS) - ->getOption(), - (new FixerOptionBuilder('closure_fn_spacing', 'Spacing to use before open parenthesis for short arrow functions.')) - ->setDefault( - Future::getV4OrV3( - self::SPACING_NONE, - self::SPACING_ONE, - ), - ) - ->setAllowedValues(self::SUPPORTED_SPACINGS) - ->getOption(), - (new FixerOptionBuilder('trailing_comma_single_line', 'Whether trailing commas are allowed in single line signatures.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - private function fixParenthesisInnerEdge(Tokens $tokens, int $start, int $end): void - { - do { - --$end; - } while ($tokens->isEmptyAt($end)); - - // remove single-line whitespace before `)` - if ($tokens[$end]->isWhitespace($this->singleLineWhitespaceOptions)) { - $tokens->clearAt($end); - } - - // remove single-line whitespace after `(` - if ($tokens[$start + 1]->isWhitespace($this->singleLineWhitespaceOptions)) { - $tokens->clearAt($start + 1); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php deleted file mode 100644 index 1a2f4c9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php +++ /dev/null @@ -1,62 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\Fixer\Whitespace\TypeDeclarationSpacesFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @deprecated - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FunctionTypehintSpaceFixer extends AbstractProxyFixer implements DeprecatedFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Ensure single space between function\'s argument and its typehint.', - [ - new CodeSample("isAnyTokenKindsFound([\T_FUNCTION, \T_FN]); - } - - public function getSuccessorsNames(): array - { - return array_keys($this->proxyFixers); - } - - protected function createProxyFixers(): array - { - $fixer = new TypeDeclarationSpacesFixer(); - $fixer->configure(['elements' => ['function']]); - - return [$fixer]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php deleted file mode 100644 index e2a4d0d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php +++ /dev/null @@ -1,143 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ImplodeCallFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Function `implode` must be called with 2 arguments in the documented order.', - [ - new CodeSample("isTokenKindFound(\T_STRING); - } - - /** - * {@inheritdoc} - * - * Must run before MethodArgumentSpaceFixer. - * Must run after NoAliasFunctionsFixer. - */ - public function getPriority(): int - { - return 37; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - for ($index = \count($tokens) - 1; $index > 0; --$index) { - if (!$tokens[$index]->equals([\T_STRING, 'implode'], false)) { - continue; - } - - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; - } - - $argumentsIndices = $this->getArgumentIndices($tokens, $index); - - if (1 === \count($argumentsIndices)) { - $firstArgumentIndex = array_key_first($argumentsIndices); - $tokens->insertAt($firstArgumentIndex, [ - new Token([\T_CONSTANT_ENCAPSED_STRING, "''"]), - new Token(','), - new Token([\T_WHITESPACE, ' ']), - ]); - - continue; - } - - if (2 === \count($argumentsIndices)) { - \assert(isset(array_keys($argumentsIndices)[0], array_keys($argumentsIndices)[1])); - [$firstArgumentIndex, $secondArgumentIndex] = array_keys($argumentsIndices); - - // If the first argument is string we have nothing to do - if ($tokens[$firstArgumentIndex]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - continue; - } - // If the second argument is not string we cannot make a swap - if (!$tokens[$secondArgumentIndex]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - continue; - } - - // collect tokens from first argument - \assert(isset($argumentsIndices[key($argumentsIndices)])); - $firstArgumentEndIndex = $argumentsIndices[key($argumentsIndices)]; - $newSecondArgumentTokens = []; - for ($i = array_key_first($argumentsIndices); $i <= $firstArgumentEndIndex; ++$i) { - $newSecondArgumentTokens[] = clone $tokens[$i]; - $tokens->clearAt($i); - } - - $tokens->insertAt($firstArgumentIndex, clone $tokens[$secondArgumentIndex]); - - // insert above increased the second argument index - ++$secondArgumentIndex; - $tokens->clearAt($secondArgumentIndex); - $tokens->insertAt($secondArgumentIndex, $newSecondArgumentTokens); - } - } - } - - /** - * @return array In the format: startIndex => endIndex - */ - private function getArgumentIndices(Tokens $tokens, int $functionNameIndex): array - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - $openParenthesis = $tokens->getNextTokenOfKind($functionNameIndex, ['(']); - $closeParenthesis = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesis); - - $indices = []; - - foreach ($argumentsAnalyzer->getArguments($tokens, $openParenthesis, $closeParenthesis) as $startIndexCandidate => $endIndex) { - $indices[$tokens->getNextMeaningfulToken($startIndexCandidate - 1)] = $tokens->getPrevMeaningfulToken($endIndex + 1); - } - - return $indices; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/LambdaNotUsedImportFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/LambdaNotUsedImportFixer.php deleted file mode 100644 index 4bddcf1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/LambdaNotUsedImportFixer.php +++ /dev/null @@ -1,351 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class LambdaNotUsedImportFixer extends AbstractFixer -{ - private ArgumentsAnalyzer $argumentsAnalyzer; - - private FunctionsAnalyzer $functionAnalyzer; - - private TokensAnalyzer $tokensAnalyzer; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Lambda must not import variables it doesn\'t use.', - [new CodeSample("isAllTokenKindsFound([\T_FUNCTION, CT::T_USE_LAMBDA]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->argumentsAnalyzer = new ArgumentsAnalyzer(); - $this->functionAnalyzer = new FunctionsAnalyzer(); - $this->tokensAnalyzer = new TokensAnalyzer($tokens); - - for ($index = $tokens->count() - 4; $index > 0; --$index) { - $lambdaUseIndex = $this->getLambdaUseIndex($tokens, $index); - - if (false !== $lambdaUseIndex) { - $this->fixLambda($tokens, $lambdaUseIndex); - } - } - } - - private function fixLambda(Tokens $tokens, int $lambdaUseIndex): void - { - $lambdaUseOpenBraceIndex = $tokens->getNextTokenOfKind($lambdaUseIndex, ['(']); - $lambdaUseCloseBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $lambdaUseOpenBraceIndex); - $arguments = $this->argumentsAnalyzer->getArguments($tokens, $lambdaUseOpenBraceIndex, $lambdaUseCloseBraceIndex); - - $imports = $this->filterArguments($tokens, $arguments); - - if (0 === \count($imports)) { - return; // no imports to remove - } - - $notUsedImports = $this->findNotUsedLambdaImports($tokens, $imports, $lambdaUseCloseBraceIndex); - $notUsedImportsCount = \count($notUsedImports); - - if (0 === $notUsedImportsCount) { - return; // no not used imports found - } - - if ($notUsedImportsCount === \count($arguments)) { - $this->clearImportsAndUse($tokens, $lambdaUseIndex, $lambdaUseCloseBraceIndex); // all imports are not used - - return; - } - - $this->clearImports($tokens, array_reverse($notUsedImports)); - } - - /** - * @param array $imports - * - * @return array - */ - private function findNotUsedLambdaImports(Tokens $tokens, array $imports, int $lambdaUseCloseBraceIndex): array - { - // figure out where the lambda starts ... - $lambdaOpenIndex = $tokens->getNextTokenOfKind($lambdaUseCloseBraceIndex, ['{']); - $curlyBracesLevel = 0; - - for ($index = $lambdaOpenIndex;; ++$index) { // go through the body of the lambda and keep count of the (possible) usages of the imported variables - $token = $tokens[$index]; - - if ($token->equals('{')) { - ++$curlyBracesLevel; - - continue; - } - - if ($token->equals('}')) { - --$curlyBracesLevel; - - if (0 === $curlyBracesLevel) { - break; - } - - continue; - } - - if ($token->isGivenKind(\T_STRING) && 'compact' === strtolower($token->getContent()) && $this->functionAnalyzer->isGlobalFunctionCall($tokens, $index)) { - return []; // wouldn't touch it with a ten-foot pole - } - - if ($token->isGivenKind([ - CT::T_DYNAMIC_VAR_BRACE_OPEN, - \T_EVAL, - \T_INCLUDE, - \T_INCLUDE_ONCE, - \T_REQUIRE, - \T_REQUIRE_ONCE, - ])) { - return []; - } - - if ($token->equals('$')) { - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$nextIndex]->isGivenKind(\T_VARIABLE)) { - return []; // "$$a" case - } - } - - if ($token->isGivenKind(\T_VARIABLE)) { - $content = $token->getContent(); - - if (isset($imports[$content])) { - unset($imports[$content]); - - if (0 === \count($imports)) { - return $imports; - } - } - } - - if ($token->isGivenKind(\T_STRING_VARNAME)) { - $content = '$'.$token->getContent(); - - if (isset($imports[$content])) { - unset($imports[$content]); - - if (0 === \count($imports)) { - return $imports; - } - } - } - - if ($token->isClassy()) { // is anonymous class - // check if used as argument in the constructor of the anonymous class - $index = $tokens->getNextTokenOfKind($index, ['(', '{']); - - if ($tokens[$index]->equals('(')) { - $closeBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $arguments = $this->argumentsAnalyzer->getArguments($tokens, $index, $closeBraceIndex); - - $imports = $this->countImportsUsedAsArgument($tokens, $imports, $arguments); - - $index = $tokens->getNextTokenOfKind($closeBraceIndex, ['{']); - } - - // skip body - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if ($token->isGivenKind(\T_FUNCTION)) { - // check if used as argument - $lambdaUseOpenBraceIndex = $tokens->getNextTokenOfKind($index, ['(']); - $lambdaUseCloseBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $lambdaUseOpenBraceIndex); - $arguments = $this->argumentsAnalyzer->getArguments($tokens, $lambdaUseOpenBraceIndex, $lambdaUseCloseBraceIndex); - - $imports = $this->countImportsUsedAsArgument($tokens, $imports, $arguments); - - // check if used as import - $index = $tokens->getNextTokenOfKind($index, [[CT::T_USE_LAMBDA], '{']); - - if ($tokens[$index]->isGivenKind(CT::T_USE_LAMBDA)) { - $lambdaUseOpenBraceIndex = $tokens->getNextTokenOfKind($index, ['(']); - $lambdaUseCloseBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $lambdaUseOpenBraceIndex); - $arguments = $this->argumentsAnalyzer->getArguments($tokens, $lambdaUseOpenBraceIndex, $lambdaUseCloseBraceIndex); - - $imports = $this->countImportsUsedAsArgument($tokens, $imports, $arguments); - - $index = $tokens->getNextTokenOfKind($lambdaUseCloseBraceIndex, ['{']); - } - - // skip body - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - } - - return $imports; - } - - /** - * @param array $imports - * @param array $arguments - * - * @return array - */ - private function countImportsUsedAsArgument(Tokens $tokens, array $imports, array $arguments): array - { - foreach ($arguments as $start => $end) { - $info = $this->argumentsAnalyzer->getArgumentInfo($tokens, $start, $end); - $content = $info->getName(); - - if (null !== $content && isset($imports[$content])) { - unset($imports[$content]); - - if (0 === \count($imports)) { - return $imports; - } - } - } - - return $imports; - } - - /** - * @return false|int - */ - private function getLambdaUseIndex(Tokens $tokens, int $index) - { - if (!$tokens[$index]->isGivenKind(\T_FUNCTION) || !$this->tokensAnalyzer->isLambda($index)) { - return false; - } - - $lambdaUseIndex = $tokens->getNextMeaningfulToken($index); // we are @ '(' or '&' after this - - if ($tokens[$lambdaUseIndex]->isGivenKind(CT::T_RETURN_REF)) { - $lambdaUseIndex = $tokens->getNextMeaningfulToken($lambdaUseIndex); - } - - $lambdaUseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $lambdaUseIndex); // we are @ ')' after this - $lambdaUseIndex = $tokens->getNextMeaningfulToken($lambdaUseIndex); - - if (!$tokens[$lambdaUseIndex]->isGivenKind(CT::T_USE_LAMBDA)) { - return false; - } - - return $lambdaUseIndex; - } - - /** - * @param array $arguments - * - * @return array - */ - private function filterArguments(Tokens $tokens, array $arguments): array - { - $imports = []; - - foreach ($arguments as $start => $end) { - $info = $this->argumentsAnalyzer->getArgumentInfo($tokens, $start, $end); - $argument = $info->getNameIndex(); - - if ($tokens[$tokens->getPrevMeaningfulToken($argument)]->equals('&')) { - continue; - } - - $argumentCandidate = $tokens[$argument]; - - if ('$this' === $argumentCandidate->getContent()) { - continue; - } - - if ($this->tokensAnalyzer->isSuperGlobal($argument)) { - continue; - } - - $imports[$argumentCandidate->getContent()] = $argument; - } - - return $imports; - } - - /** - * @param array $imports - */ - private function clearImports(Tokens $tokens, array $imports): void - { - foreach ($imports as $removeIndex) { - $tokens->clearTokenAndMergeSurroundingWhitespace($removeIndex); - $previousRemoveIndex = $tokens->getPrevMeaningfulToken($removeIndex); - - if ($tokens[$previousRemoveIndex]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($previousRemoveIndex); - } elseif ($tokens[$previousRemoveIndex]->equals('(')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($tokens->getNextMeaningfulToken($removeIndex)); // next is always ',' here - } - } - } - - /** - * Remove `use` and all imported variables. - */ - private function clearImportsAndUse(Tokens $tokens, int $lambdaUseIndex, int $lambdaUseCloseBraceIndex): void - { - for ($i = $lambdaUseCloseBraceIndex; $i >= $lambdaUseIndex; --$i) { - if ($tokens[$i]->isComment()) { - continue; - } - - if ($tokens[$i]->isWhitespace()) { - $previousIndex = $tokens->getPrevNonWhitespace($i); - - if ($tokens[$previousIndex]->isComment()) { - continue; - } - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php deleted file mode 100644 index 53a86cb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php +++ /dev/null @@ -1,611 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * after_heredoc?: bool, - * attribute_placement?: 'ignore'|'same_line'|'standalone', - * keep_multiple_spaces_after_comma?: bool, - * on_multiline?: 'ensure_fully_multiline'|'ensure_single_line'|'ensure_single_line_for_single_argument'|'ignore', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * after_heredoc: bool, - * attribute_placement: 'ignore'|'same_line'|'standalone', - * keep_multiple_spaces_after_comma: bool, - * on_multiline: 'ensure_fully_multiline'|'ensure_single_line'|'ensure_single_line_for_single_argument'|'ignore', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Kuanhung Chen - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MethodArgumentSpaceFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'In method arguments and method call, there MUST NOT be a space before each comma and there MUST be one space after each comma. Argument lists MAY be split across multiple lines, where each subsequent line is indented once. When doing so, the first item in the list MUST be on the next line, and there MUST be only one argument per line.', - [ - new CodeSample( - " false], - ), - new CodeSample( - " true], - ), - new CodeSample( - " 'ensure_fully_multiline'], - ), - new CodeSample( - " 'ensure_single_line'], - ), - new CodeSample( - " 'ensure_fully_multiline', - 'keep_multiple_spaces_after_comma' => true, - ], - ), - new CodeSample( - " 'ensure_fully_multiline', - 'keep_multiple_spaces_after_comma' => false, - ], - ), - new CodeSample( - " 'ensure_fully_multiline', - 'attribute_placement' => 'ignore', - ], - ), - new CodeSample( - " 'ensure_fully_multiline', - 'attribute_placement' => 'same_line', - ], - ), - new CodeSample( - " 'ensure_fully_multiline', - 'attribute_placement' => 'standalone', - ], - ), - new CodeSample( - " 'ensure_single_line_for_single_argument'], - ), - new CodeSample( - <<<'SAMPLE' - true], - ), - ], - 'This fixer covers rules defined in PSR2 ¶4.4, ¶4.6.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound('('); - } - - /** - * {@inheritdoc} - * - * Must run before ArrayIndentationFixer, NoTrailingCommaInSinglelineFixer, StatementIndentationFixer. - * Must run after CombineNestedDirnameFixer, FunctionDeclarationFixer, ImplodeCallFixer, LambdaNotUsedImportFixer, NoMultilineWhitespaceAroundDoubleArrowFixer, NoUselessSprintfFixer, PowToExponentiationFixer, StrictParamFixer. - */ - public function getPriority(): int - { - return 30; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - $expectedTokens = [\T_LIST, \T_FUNCTION, CT::T_USE_LAMBDA, \T_FN, \T_CLASS]; - - $tokenCount = $tokens->count(); - for ($index = 1; $index < $tokenCount; ++$index) { - $token = $tokens[$index]; - - if (!$token->equals('(')) { - continue; - } - - $meaningfulTokenBeforeParenthesis = $tokens[$tokens->getPrevMeaningfulToken($index)]; - - if ( - $meaningfulTokenBeforeParenthesis->isKeyword() - && !$meaningfulTokenBeforeParenthesis->isGivenKind($expectedTokens) - ) { - continue; - } - - $isMultiline = $this->fixFunction($tokens, $index); - - if ( - $isMultiline - && \in_array($this->configuration['on_multiline'], ['ensure_fully_multiline', 'ensure_single_line_for_single_argument'], true) - && !$meaningfulTokenBeforeParenthesis->isGivenKind(\T_LIST) - ) { - if ('ensure_single_line_for_single_argument' === $this->configuration['on_multiline']) { - $endFunctionIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - if (1 === $argumentsAnalyzer->countArguments($tokens, $index, $endFunctionIndex)) { - $this->ensureSingleLineForParentheses($tokens, $index, $endFunctionIndex); - } else { - $this->ensureFunctionFullyMultiline($tokens, $index); - } - } else { - $this->ensureFunctionFullyMultiline($tokens, $index); - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('keep_multiple_spaces_after_comma', 'Whether keep multiple spaces after comma.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder( - 'on_multiline', - 'Defines how to handle function arguments lists that contain newlines.', - )) - ->setAllowedValues(['ignore', 'ensure_single_line', 'ensure_fully_multiline', 'ensure_single_line_for_single_argument']) - ->setDefault('ensure_fully_multiline') - ->getOption(), - (new FixerOptionBuilder('after_heredoc', 'Whether the whitespace between heredoc end and comma should be removed.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(true, false)) - ->getOption(), - (new FixerOptionBuilder( - 'attribute_placement', - 'Defines how to handle argument attributes when function definition is multiline.', - )) - ->setAllowedValues(['ignore', 'same_line', 'standalone']) - ->setDefault('standalone') - ->getOption(), - ]); - } - - /** - * Fix arguments spacing for given function. - * - * @param Tokens $tokens Tokens to handle - * @param int $startFunctionIndex Start parenthesis position - * - * @return bool whether the function is multiline - */ - private function fixFunction(Tokens $tokens, int $startFunctionIndex): bool - { - $isMultiline = false; - - $endFunctionIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startFunctionIndex); - $firstWhitespaceIndex = $this->findWhitespaceIndexAfterParenthesis($tokens, $startFunctionIndex, $endFunctionIndex); - $lastWhitespaceIndex = $this->findWhitespaceIndexAfterParenthesis($tokens, $endFunctionIndex, $startFunctionIndex); - - foreach ([$firstWhitespaceIndex, $lastWhitespaceIndex] as $index) { - if (null === $index || !Preg::match('/\R/', $tokens[$index]->getContent())) { - continue; - } - - if ('ensure_single_line' !== $this->configuration['on_multiline']) { - $isMultiline = true; - - continue; - } - - $newLinesRemoved = $this->ensureSingleLine($tokens, $index); - - if (!$newLinesRemoved) { - $isMultiline = true; - } - } - - for ($index = $endFunctionIndex - 1; $index > $startFunctionIndex; --$index) { - $token = $tokens[$index]; - - if ($token->equals(')')) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - continue; - } - - if ($token->isGivenKind(CT::T_ARRAY_BRACKET_CLOSE)) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $index); - - continue; - } - - if ($token->equals('}')) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if ($token->equals(',')) { - $this->fixSpace($tokens, $index); - if (!$isMultiline && $this->isNewline($tokens[$index + 1])) { - $isMultiline = true; - } - } - } - - return $isMultiline; - } - - private function findWhitespaceIndexAfterParenthesis(Tokens $tokens, int $startParenthesisIndex, int $endParenthesisIndex): ?int - { - $direction = $endParenthesisIndex > $startParenthesisIndex ? 1 : -1; - $startIndex = $startParenthesisIndex + $direction; - $endIndex = $endParenthesisIndex - $direction; - - for ($index = $startIndex; $index !== $endIndex; $index += $direction) { - $token = $tokens[$index]; - - if ($token->isWhitespace()) { - return $index; - } - - if (!$token->isComment()) { - break; - } - } - - return null; - } - - /** - * @return bool Whether newlines were removed from the whitespace token - */ - private function ensureSingleLine(Tokens $tokens, int $index): bool - { - $previousToken = $tokens[$index - 1]; - - if ($previousToken->isComment() && !str_starts_with($previousToken->getContent(), '/*')) { - return false; - } - - $content = Preg::replace('/\R\h*/', '', $tokens[$index]->getContent()); - - $tokens->ensureWhitespaceAtIndex($index, 0, $content); - - return true; - } - - private function ensureFunctionFullyMultiline(Tokens $tokens, int $startFunctionIndex): void - { - // find out what the indentation is - $searchIndex = $startFunctionIndex; - do { - $prevWhitespaceTokenIndex = $tokens->getPrevTokenOfKind( - $searchIndex, - [[\T_ENCAPSED_AND_WHITESPACE], [\T_INLINE_HTML], [\T_WHITESPACE]], - ); - - $searchIndex = $prevWhitespaceTokenIndex; - } while (null !== $prevWhitespaceTokenIndex - && !str_contains($tokens[$prevWhitespaceTokenIndex]->getContent(), "\n") - ); - - if (null === $prevWhitespaceTokenIndex) { - $existingIndentation = ''; - } elseif (!$tokens[$prevWhitespaceTokenIndex]->isGivenKind(\T_WHITESPACE)) { - return; - } else { - $existingIndentation = $tokens[$prevWhitespaceTokenIndex]->getContent(); - $lastLineIndex = strrpos($existingIndentation, "\n"); - $existingIndentation = false === $lastLineIndex - ? $existingIndentation - : substr($existingIndentation, $lastLineIndex + 1); - } - - $indentation = $existingIndentation.$this->whitespacesConfig->getIndent(); - $endFunctionIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startFunctionIndex); - - $wasWhitespaceBeforeEndFunctionAddedAsNewToken = $tokens->ensureWhitespaceAtIndex( - $tokens[$endFunctionIndex - 1]->isWhitespace() ? $endFunctionIndex - 1 : $endFunctionIndex, - 0, - $this->whitespacesConfig->getLineEnding().$existingIndentation, - ); - - if ($wasWhitespaceBeforeEndFunctionAddedAsNewToken) { - ++$endFunctionIndex; - } - - for ($index = $endFunctionIndex - 1; $index > $startFunctionIndex; --$index) { - $token = $tokens[$index]; - - // skip nested method calls and arrays - if ($token->equals(')')) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - continue; - } - - // skip nested arrays - if ($token->isGivenKind(CT::T_ARRAY_BRACKET_CLOSE)) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $index); - - continue; - } - - if ($token->equals('}')) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if ($tokens[$tokens->getNextMeaningfulToken($index)]->equals(')')) { - continue; - } - - if ($token->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - if ('standalone' === $this->configuration['attribute_placement']) { - $this->fixNewline($tokens, $index, $indentation); - } elseif ('same_line' === $this->configuration['attribute_placement']) { - $this->ensureSingleLine($tokens, $index + 1); - $tokens->ensureWhitespaceAtIndex($index + 1, 0, ' '); - } - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - - continue; - } - - if ($token->equals(',')) { - $this->fixNewline($tokens, $index, $indentation); - } - } - - $this->fixNewline($tokens, $startFunctionIndex, $indentation, false); - } - - /** - * Method to insert newline after comma, attribute or opening parenthesis. - * - * @param int $index index of a comma - * @param string $indentation the indentation that should be used - * @param bool $override whether to override the existing character or not - */ - private function fixNewline(Tokens $tokens, int $index, string $indentation, bool $override = true): void - { - if ($tokens[$index + 1]->isComment()) { - return; - } - - if ($tokens[$index + 2]->isComment()) { - $nextMeaningfulTokenIndex = $tokens->getNextMeaningfulToken($index + 2); - if (!$this->isNewline($tokens[$nextMeaningfulTokenIndex - 1])) { - if ($tokens[$nextMeaningfulTokenIndex - 1]->isWhitespace()) { - $tokens->clearAt($nextMeaningfulTokenIndex - 1); - } - - $tokens->ensureWhitespaceAtIndex($nextMeaningfulTokenIndex, 0, $this->whitespacesConfig->getLineEnding().$indentation); - } - - return; - } - - $nextMeaningfulTokenIndex = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$nextMeaningfulTokenIndex]->equals(')')) { - return; - } - - $tokens->ensureWhitespaceAtIndex($index + 1, 0, $this->whitespacesConfig->getLineEnding().$indentation); - } - - /** - * Method to insert space after comma and remove space before comma. - */ - private function fixSpace(Tokens $tokens, int $index): void - { - // remove space before comma if exist - if ($tokens[$index - 1]->isWhitespace()) { - $prevIndex = $tokens->getPrevNonWhitespace($index - 1); - - if ( - !$tokens[$prevIndex]->equals(',') && !$tokens[$prevIndex]->isComment() - && (true === $this->configuration['after_heredoc'] || !$tokens[$prevIndex]->isGivenKind(\T_END_HEREDOC)) - ) { - $tokens->clearAt($index - 1); - } - } - - $nextIndex = $index + 1; - $nextToken = $tokens[$nextIndex]; - - // Two cases for fix space after comma (exclude multiline comments) - // 1) multiple spaces after comma - // 2) no space after comma - if ($nextToken->isWhitespace()) { - $newContent = $nextToken->getContent(); - - if ('ensure_single_line' === $this->configuration['on_multiline']) { - $newContent = Preg::replace('/\R/', '', $newContent); - } - - if ( - (false === $this->configuration['keep_multiple_spaces_after_comma'] || Preg::match('/\R/', $newContent)) - && !$this->isCommentLastLineToken($tokens, $index + 2) - ) { - $newContent = ltrim($newContent, " \t"); - } - - $tokens[$nextIndex] = new Token([\T_WHITESPACE, '' === $newContent ? ' ' : $newContent]); - - return; - } - - if (!$this->isCommentLastLineToken($tokens, $index + 1)) { - $tokens->insertAt($index + 1, new Token([\T_WHITESPACE, ' '])); - } - } - - /** - * Check if last item of current line is a comment. - * - * @param Tokens $tokens tokens to handle - * @param int $index index of token - */ - private function isCommentLastLineToken(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->isComment() || !$tokens[$index + 1]->isWhitespace()) { - return false; - } - - $content = $tokens[$index + 1]->getContent(); - - return $content !== ltrim($content, "\r\n"); - } - - /** - * Checks if token is new line. - */ - private function isNewline(Token $token): bool - { - return $token->isWhitespace() && str_contains($token->getContent(), "\n"); - } - - /** - * Check if the argument content should not be collapsed — either spans multiple lines - * outside nested blocks and boundary whitespace, or contains comments or attributes. - */ - private function argumentContentIsMultiline(Tokens $tokens, int $openParenthesis, int $closeParenthesis): bool - { - for ($index = $openParenthesis + 1; $index < $closeParenthesis; ++$index) { - if ($tokens[$index]->isComment()) { - return true; - } - - if ($index === $openParenthesis + 1 || $index === $closeParenthesis - 1) { - continue; - } - - if ($tokens[$index]->equals('(')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - continue; - } - - if ($tokens[$index]->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $index); - - continue; - } - - if ($tokens[$index]->equals('{')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if ($this->isNewline($tokens[$index])) { - return true; - } - } - - return false; - } - - /** - * Collapse a multiline single-argument call/declaration to a single line. - */ - private function ensureSingleLineForParentheses(Tokens $tokens, int $openParenthesis, int $closeParenthesis): void - { - if ($this->argumentContentIsMultiline($tokens, $openParenthesis, $closeParenthesis)) { - return; - } - - for ($index = $closeParenthesis - 1; $index > $openParenthesis; --$index) { - if ($tokens[$index]->equals(')')) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - continue; - } - - if ($tokens[$index]->isGivenKind(CT::T_ARRAY_BRACKET_CLOSE)) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $index); - - continue; - } - - if ($tokens[$index]->equals('}')) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if ($tokens[$index]->isWhitespace()) { - $previousToken = $tokens[$index - 1]; - - if ($previousToken->isComment() && !str_starts_with($previousToken->getContent(), '/*')) { - continue; - } - - $content = Preg::replace('/\R\h*/', '', $tokens[$index]->getContent()); - $tokens->ensureWhitespaceAtIndex($index, 0, $content); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MultilinePromotedPropertiesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MultilinePromotedPropertiesFixer.php deleted file mode 100644 index e451de4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MultilinePromotedPropertiesFixer.php +++ /dev/null @@ -1,287 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\ExperimentalFixerInterface; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _InputConfig array{keep_blank_lines?: bool, minimum_number_of_parameters?: int} - * @phpstan-type _Config array{keep_blank_lines: bool, minimum_number_of_parameters: int} - * @phpstan-type _AutogeneratedInputConfiguration array{ - * keep_blank_lines?: bool, - * minimum_number_of_parameters?: int, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * keep_blank_lines: bool, - * minimum_number_of_parameters: int, - * } - * @phpstan-type _ConstructorAnalysis array{ - * index?: int, - * parameter_names: list, - * promotable_parameters: array, - * constructor_index?: int, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @TODO align on default configuration and remove experimental flag - https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/8718 - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MultilinePromotedPropertiesFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface, ExperimentalFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Promoted properties must be on separate lines.', - [ - new VersionSpecificCodeSample( - <<<'PHP' - 3], - ), - new VersionSpecificCodeSample( - <<<'PHP' - 3], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BracesPositionFixer, TrailingCommaInMultilineFixer. - */ - public function getPriority(): int - { - return 1; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([ - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, - ]); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('keep_blank_lines', 'Whether to keep blank lines between properties.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('minimum_number_of_parameters', 'Minimum number of parameters in the constructor to fix.')) - ->setAllowedTypes(['int']) - ->setDefault(1) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - foreach ($tokensAnalyzer->getClassyElements() as $index => $element) { - if ('method' !== $element['type']) { - continue; - } - - $openParenthesisIndex = $tokens->getNextTokenOfKind($index, ['(']); - $closeParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesisIndex); - - if ($this->shouldBeMultiline($tokens, $openParenthesisIndex, $closeParenthesisIndex)) { - $this->makeMultiline($tokens, $openParenthesisIndex, $closeParenthesisIndex); - } elseif ($this->shouldBeSingleline($tokens, $openParenthesisIndex, $closeParenthesisIndex)) { - $this->makeSingleline($tokens, $openParenthesisIndex, $closeParenthesisIndex); - } - } - } - - private function shouldBeMultiline(Tokens $tokens, int $openParenthesisIndex, int $closeParenthesisIndex): bool - { - $promotedParameterFound = false; - $minimumNumberOfParameters = 0; - for ($index = $openParenthesisIndex + 1; $index < $closeParenthesisIndex; ++$index) { - if ($tokens[$index]->isGivenKind(\T_VARIABLE)) { - ++$minimumNumberOfParameters; - } - if ( - $tokens[$index]->isGivenKind([ - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, - ]) - ) { - $promotedParameterFound = true; - } - } - - return $promotedParameterFound && $minimumNumberOfParameters >= $this->configuration['minimum_number_of_parameters']; - } - - private function shouldBeSingleline(Tokens $tokens, int $openParenthesisIndex, int $closeParenthesisIndex): bool - { - $promotedParameterFound = false; - $parameterCount = 0; - $isMultiline = false; - - for ($index = $openParenthesisIndex + 1; $index < $closeParenthesisIndex; ++$index) { - if ($tokens[$index]->isGivenKind(\T_VARIABLE)) { - ++$parameterCount; - } - - if ( - $tokens[$index]->isGivenKind([ - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, - ]) - ) { - $promotedParameterFound = true; - } - - if ($tokens[$index]->isGivenKind([\T_COMMENT, \T_DOC_COMMENT, \T_ATTRIBUTE])) { - return false; - } - - if ( - $tokens[$index]->isWhitespace() - && str_contains($tokens[$index]->getContent(), "\n") - ) { - $isMultiline = true; - } - } - - return $promotedParameterFound && $isMultiline && $parameterCount < $this->configuration['minimum_number_of_parameters']; - } - - private function makeSingleline(Tokens $tokens, int $openParenthesis, int $closeParenthesis): void - { - for ($index = $closeParenthesis - 1; $index > $openParenthesis; --$index) { - if (!$tokens[$index]->isWhitespace()) { - continue; - } - - if (!str_contains($tokens[$index]->getContent(), "\n")) { - continue; - } - - if ($index === $openParenthesis + 1 || $index === $closeParenthesis - 1) { - $tokens->clearAt($index); - } else { - $tokens[$index] = new Token([\T_WHITESPACE, ' ']); - } - } - } - - private function makeMultiline(Tokens $tokens, int $openParenthesis, int $closeParenthesis): void - { - $indent = WhitespacesAnalyzer::detectIndent($tokens, $openParenthesis); - - $tokens->ensureWhitespaceAtIndex( - $closeParenthesis - 1, - 1, - $this->whitespacesConfig->getLineEnding().$indent, - ); - - $index = $tokens->getPrevMeaningfulToken($closeParenthesis); - if (!$tokens[$index]->equals(',')) { - $index = $closeParenthesis; - } - - while ($index > $openParenthesis) { - $index = $tokens->getPrevMeaningfulToken($index); - \assert(\is_int($index)); - - $blockType = Tokens::detectBlockType($tokens[$index]); - if (null !== $blockType && !$blockType['isStart']) { - $index = $tokens->findBlockStart($blockType['type'], $index); - - continue; - } - - if (!$tokens[$index]->equalsAny(['(', ','])) { - continue; - } - - $this->fixParameter($tokens, $index + 1, $indent); - } - } - - private function fixParameter(Tokens $tokens, int $index, string $indent): void - { - if ($this->configuration['keep_blank_lines'] && $tokens[$index]->isWhitespace() && str_contains($tokens[$index]->getContent(), "\n")) { - return; - } - - $tokens->ensureWhitespaceAtIndex( - $index, - 0, - $this->whitespacesConfig->getLineEnding().$indent.$this->whitespacesConfig->getIndent(), - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php deleted file mode 100644 index ee870a9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php +++ /dev/null @@ -1,436 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Utils; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * exclude?: list, - * include?: list, - * scope?: 'all'|'namespaced', - * strict?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * exclude: list, - * include: list, - * scope: 'all'|'namespaced', - * strict: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Andreas Möller - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NativeFunctionInvocationFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const SET_ALL = '@all'; - - /** - * Subset of SET_INTERNAL. - * - * Change function call to functions known to be optimized by the Zend engine. - * For details: - * - @see https://github.com/php/php-src/blob/php-7.2.6/Zend/zend_compile.c "zend_try_compile_special_func" - * - @see https://github.com/php/php-src/blob/php-7.2.6/ext/opcache/Optimizer/pass1_5.c - * - * @internal - */ - public const SET_COMPILER_OPTIMIZED = '@compiler_optimized'; - - /** - * @internal - */ - public const SET_INTERNAL = '@internal'; - - /** - * @var callable - */ - private $functionFilter; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Add leading `\` before function invocation to speed up resolving.', - [ - new CodeSample( - <<<'PHP' - [ - 'json_encode', - ], - ], - ), - new CodeSample( - <<<'PHP' - 'all'], - ), - new CodeSample( - <<<'PHP' - 'namespaced'], - ), - new CodeSample( - <<<'PHP' - ['myGlobalFunction']], - ), - new CodeSample( - <<<'PHP' - [self::SET_ALL]], - ), - new CodeSample( - <<<'PHP' - [self::SET_INTERNAL]], - ), - new CodeSample( - <<<'PHP' - [self::SET_COMPILER_OPTIMIZED]], - ), - ], - null, - 'Risky when any of the functions are overridden.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before GlobalNamespaceImportFixer. - * Must run after BacktickToShellExecFixer, MbStrFunctionsFixer, RegularCallableCallFixer, StrictParamFixer. - */ - public function getPriority(): int - { - return 1; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $this->functionFilter = $this->getFunctionFilter(); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if ('all' === $this->configuration['scope']) { - $this->fixFunctionCalls($tokens, $this->functionFilter, 0, \count($tokens) - 1, false); - - return; - } - - $namespaces = $tokens->getNamespaceDeclarations(); - - // 'scope' is 'namespaced' here - foreach (array_reverse($namespaces) as $namespace) { - $this->fixFunctionCalls($tokens, $this->functionFilter, $namespace->getScopeStartIndex(), $namespace->getScopeEndIndex(), $namespace->isGlobalNamespace()); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('exclude', 'List of functions to ignore.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([static function (array $value): bool { - foreach ($value as $functionName) { - if ('' === trim($functionName) || trim($functionName) !== $functionName) { - throw new InvalidOptionsException(\sprintf( - 'Each element must be a non-empty, trimmed string, got "%s" instead.', - get_debug_type($functionName), - )); - } - } - - return true; - }]) - ->setDefault([]) - ->getOption(), - (new FixerOptionBuilder('include', 'List of function names or sets to fix. Defined sets are `@internal` (all native functions), `@all` (all global functions) and `@compiler_optimized` (functions that are specially optimized by Zend).')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([static function (array $value): bool { - foreach ($value as $functionName) { - if ('' === trim($functionName) || trim($functionName) !== $functionName) { - throw new InvalidOptionsException(\sprintf( - 'Each element must be a non-empty, trimmed string, got "%s" instead.', - get_debug_type($functionName), - )); - } - - $sets = [ - self::SET_ALL, - self::SET_INTERNAL, - self::SET_COMPILER_OPTIMIZED, - ]; - - if (str_starts_with($functionName, '@') && !\in_array($functionName, $sets, true)) { - throw new InvalidOptionsException(\sprintf('Unknown set "%s", known sets are %s.', $functionName, Utils::naturalLanguageJoin($sets))); - } - } - - return true; - }]) - ->setDefault([self::SET_COMPILER_OPTIMIZED]) - ->getOption(), - (new FixerOptionBuilder('scope', 'Only fix function calls that are made within a namespace or fix all.')) - ->setAllowedValues(['all', 'namespaced']) - ->setDefault('all') - ->getOption(), - (new FixerOptionBuilder('strict', 'Whether leading `\` of function call not meant to have it should be removed.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - private function fixFunctionCalls(Tokens $tokens, callable $functionFilter, int $start, int $end, bool $tryToRemove): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - $tokensToInsert = []; - for ($index = $start; $index < $end; ++$index) { - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$functionFilter($tokens[$index]->getContent()) || $tryToRemove) { - if (false === $this->configuration['strict']) { - continue; - } - - if ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevIndex); - } - - continue; - } - - if ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - continue; // do not bother if previous token is already namespace separator - } - - $tokensToInsert[$index] = new Token([\T_NS_SEPARATOR, '\\']); - } - - $tokens->insertSlices($tokensToInsert); - } - - private function getFunctionFilter(): callable - { - $exclude = $this->normalizeFunctionNames($this->configuration['exclude']); - - if (\in_array(self::SET_ALL, $this->configuration['include'], true)) { - if (\count($exclude) > 0) { - return static fn (string $functionName): bool => !isset($exclude[strtolower($functionName)]); - } - - return static fn (): bool => true; - } - - $include = []; - - if (\in_array(self::SET_INTERNAL, $this->configuration['include'], true)) { - $include = $this->getAllInternalFunctionsNormalized(); - } elseif (\in_array(self::SET_COMPILER_OPTIMIZED, $this->configuration['include'], true)) { - $include = $this->getAllCompilerOptimizedFunctionsNormalized(); // if `@internal` is set all compiler optimized function are already loaded - } - - foreach ($this->configuration['include'] as $additional) { - if (!str_starts_with($additional, '@')) { - $include[strtolower($additional)] = true; - } - } - - if (\count($exclude) > 0) { - return static fn (string $functionName): bool => isset($include[strtolower($functionName)]) && !isset($exclude[strtolower($functionName)]); - } - - return static fn (string $functionName): bool => isset($include[strtolower($functionName)]); - } - - /** - * @return array normalized function names of which the PHP compiler optimizes - */ - private function getAllCompilerOptimizedFunctionsNormalized(): array - { - return $this->normalizeFunctionNames([ - // @see https://github.com/php/php-src/blob/PHP-7.4/Zend/zend_compile.c "zend_try_compile_special_func" - 'array_key_exists', - 'array_slice', - 'assert', - 'boolval', - 'call_user_func', - 'call_user_func_array', - 'chr', - 'count', - 'defined', - 'doubleval', - 'floatval', - 'func_get_args', - 'func_num_args', - 'get_called_class', - 'get_class', - 'gettype', - 'in_array', - 'intval', - 'is_array', - 'is_bool', - 'is_double', - 'is_float', - 'is_int', - 'is_integer', - 'is_long', - 'is_null', - 'is_object', - 'is_real', - 'is_resource', - 'is_scalar', - 'is_string', - 'ord', - 'sizeof', - 'sprintf', - 'strlen', - 'strval', - // @see https://github.com/php/php-src/blob/php-7.2.6/ext/opcache/Optimizer/pass1_5.c - // @see https://github.com/php/php-src/blob/PHP-8.1.2/Zend/Optimizer/block_pass.c - // @see https://github.com/php/php-src/blob/php-8.1.3/Zend/Optimizer/zend_optimizer.c - 'constant', - 'define', - 'dirname', - 'extension_loaded', - 'function_exists', - 'is_callable', - 'ini_get', - ]); - } - - /** - * @return array normalized function names of all internal defined functions - */ - private function getAllInternalFunctionsNormalized(): array - { - return $this->normalizeFunctionNames(get_defined_functions()['internal']); - } - - /** - * @param list $functionNames - * - * @return array all function names lower cased - */ - private function normalizeFunctionNames(array $functionNames): array - { - $result = []; - - foreach ($functionNames as $functionName) { - $result[strtolower($functionName)] = true; - } - - return $result; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php deleted file mode 100644 index 565cf0a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php +++ /dev/null @@ -1,147 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶4.6. - * - * @author Varga Bence - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoSpacesAfterFunctionNameFixer extends AbstractFixer -{ - /** - * Token kinds which can work as function calls. - */ - private const FUNCTIONY_TOKEN_KINDS = [ - \T_ARRAY, - \T_ECHO, - \T_EMPTY, - \T_EVAL, - \T_EXIT, - \T_INCLUDE, - \T_INCLUDE_ONCE, - \T_ISSET, - \T_LIST, - \T_PRINT, - \T_REQUIRE, - \T_REQUIRE_ONCE, - \T_UNSET, - \T_VARIABLE, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'When making a method or function call, there MUST NOT be a space between the method or function name and the opening parenthesis.', - [new CodeSample("isAnyTokenKindsFound([\T_STRING, ...self::FUNCTIONY_TOKEN_KINDS]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - // looking for start brace - if (!$token->equals('(')) { - continue; - } - - // last non-whitespace token, can never be `null` always at least PHP open tag before it - $lastTokenIndex = $tokens->getPrevNonWhitespace($index); - - // check for ternary operator - $endParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $nextNonWhiteSpace = $tokens->getNextMeaningfulToken($endParenthesisIndex); - if ( - null !== $nextNonWhiteSpace - && !$tokens[$nextNonWhiteSpace]->equals(';') - && $tokens[$lastTokenIndex]->isGivenKind([ - \T_ECHO, - \T_PRINT, - \T_INCLUDE, - \T_INCLUDE_ONCE, - \T_REQUIRE, - \T_REQUIRE_ONCE, - ]) - ) { - continue; - } - - // check if it is a function call - if ($tokens[$lastTokenIndex]->isGivenKind(self::FUNCTIONY_TOKEN_KINDS)) { - $this->fixFunctionCall($tokens, $index); - } elseif ($tokens[$lastTokenIndex]->isGivenKind(\T_STRING)) { // for real function calls or definitions - $possibleDefinitionIndex = $tokens->getPrevMeaningfulToken($lastTokenIndex); - if (!$tokens[$possibleDefinitionIndex]->isGivenKind(\T_FUNCTION)) { - $this->fixFunctionCall($tokens, $index); - } - } elseif ($tokens[$lastTokenIndex]->equalsAny([ - ')', - ']', - [CT::T_DYNAMIC_VAR_BRACE_CLOSE], - [CT::T_ARRAY_INDEX_BRACE_CLOSE], - ])) { - $block = Tokens::detectBlockType($tokens[$lastTokenIndex]); - if ( - Tokens::BLOCK_TYPE_INDEX_BRACE === $block['type'] - || Tokens::BLOCK_TYPE_DYNAMIC_VAR_BRACE === $block['type'] - || Tokens::BLOCK_TYPE_INDEX_BRACKET === $block['type'] - || Tokens::BLOCK_TYPE_PARENTHESIS === $block['type'] - ) { - $this->fixFunctionCall($tokens, $index); - } - } - } - } - - /** - * Fixes whitespaces around braces of a function(y) call. - * - * @param Tokens $tokens tokens to handle - * @param int $index index of token - */ - private function fixFunctionCall(Tokens $tokens, int $index): void - { - // remove space before opening brace - if ($tokens[$index - 1]->isWhitespace()) { - $tokens->clearAt($index - 1); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoTrailingCommaInSinglelineFunctionCallFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoTrailingCommaInSinglelineFunctionCallFixer.php deleted file mode 100644 index e66ac38..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoTrailingCommaInSinglelineFunctionCallFixer.php +++ /dev/null @@ -1,61 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\Basic\NoTrailingCommaInSinglelineFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @deprecated - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoTrailingCommaInSinglelineFunctionCallFixer extends AbstractProxyFixer implements DeprecatedFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'When making a method or function call on a single line there MUST NOT be a trailing comma after the last argument.', - [new CodeSample("proxyFixers); - } - - protected function createProxyFixers(): array - { - $fixer = new NoTrailingCommaInSinglelineFixer(); - $fixer->configure(['elements' => ['arguments', 'array_destructuring']]); - - return [$fixer]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php deleted file mode 100644 index 78208fc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php +++ /dev/null @@ -1,158 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Mark Scherer - * @author Lucas Manzke - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUnreachableDefaultArgumentValueFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'In function arguments there must not be arguments with default values before non-default ones.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_FUNCTION, \T_FN]); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionKinds = [\T_FUNCTION, \T_FN]; - - for ($i = 0, $l = $tokens->count(); $i < $l; ++$i) { - if (!$tokens[$i]->isGivenKind($functionKinds)) { - continue; - } - - $this->fixFunctionDefinition($tokens, $i); - } - } - - private function fixFunctionDefinition(Tokens $tokens, int $startIndex): void - { - $removeDefaultArgument = false; - - foreach (array_reverse((new FunctionsAnalyzer())->getFunctionArguments($tokens, $startIndex)) as $argumentAnalysis) { - $prevVariableIndex = $tokens->getPrevMeaningfulToken($argumentAnalysis->getNameIndex()); - if ($tokens[$prevVariableIndex]->isGivenKind(\T_ELLIPSIS)) { - continue; - } - - if (null === $argumentAnalysis->getDefault()) { - $removeDefaultArgument = true; - - continue; - } - - if (!$removeDefaultArgument) { - continue; - } - - if ( - 'null' === strtolower($argumentAnalysis->getDefault()) - && $argumentAnalysis->hasTypeAnalysis() - && !$argumentAnalysis->getTypeAnalysis()->isNullable() - ) { - continue; - } - - $this->removeDefaultValue( - $tokens, - $argumentAnalysis->getNameIndex(), - $this->getDefaultValueEnd($tokens, $argumentAnalysis->getNameIndex()), - ); - } - } - - private function removeDefaultValue(Tokens $tokens, int $startIndex, int $endIndex): void - { - for ($i = $tokens->getNextMeaningfulToken($startIndex); $i <= $endIndex;) { - $this->clearWhitespacesBeforeIndex($tokens, $i); - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - $i = $tokens->getNextMeaningfulToken($i); - } - } - - private function getDefaultValueEnd(Tokens $tokens, int $index): int - { - while (null !== $index = $tokens->getNextMeaningfulToken($index)) { - if ($tokens[$index]->equalsAny([',', [CT::T_PROPERTY_HOOK_BRACE_OPEN]])) { - break; - } - - $blockType = Tokens::detectBlockType($tokens[$index]); - if (null !== $blockType && $blockType['isStart']) { - $index = $tokens->findBlockEnd($blockType['type'], $index); - } - } - - return $tokens->getPrevMeaningfulToken($index); - } - - private function clearWhitespacesBeforeIndex(Tokens $tokens, int $index): void - { - $prevIndex = $tokens->getNonEmptySibling($index, -1); - if (!$tokens[$prevIndex]->isWhitespace()) { - return; - } - - $prevNonWhiteIndex = $tokens->getPrevNonWhitespace($prevIndex); - if (null === $prevNonWhiteIndex || !$tokens[$prevNonWhiteIndex]->isComment()) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevIndex); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessPrintfFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessPrintfFixer.php deleted file mode 100644 index 8b82892..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessPrintfFixer.php +++ /dev/null @@ -1,129 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author John Paul E. Balandan, CPA - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUselessPrintfFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There must be no `printf` calls with only the first argument.', - [ - new CodeSample( - "isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run before EchoTagSyntaxFixer, NoExtraBlankLinesFixer, NoMixedEchoPrintFixer. - */ - public function getPriority(): int - { - return 10; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - $printfIndices = []; - - for ($index = \count($tokens) - 1; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_STRING)) { - continue; - } - - if ('printf' !== strtolower($tokens[$index]->getContent())) { - continue; - } - - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; - } - - $openParenthesisIndex = $tokens->getNextTokenOfKind($index, ['(']); - - if ($tokens[$tokens->getNextMeaningfulToken($openParenthesisIndex)]->isGivenKind([\T_ELLIPSIS, CT::T_FIRST_CLASS_CALLABLE])) { - continue; - } - - $closeParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesisIndex); - - if (1 !== $argumentsAnalyzer->countArguments($tokens, $openParenthesisIndex, $closeParenthesisIndex)) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($closeParenthesisIndex); - - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($closeParenthesisIndex); - - if ($tokens[$prevMeaningfulTokenIndex]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevMeaningfulTokenIndex); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($openParenthesisIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prevMeaningfulTokenIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevMeaningfulTokenIndex); - } - - $printfIndices[] = $index; - } - - if ([] === $printfIndices) { - return; - } - - $tokens->insertSlices(array_combine( - $printfIndices, - array_fill(0, \count($printfIndices), [new Token([\T_PRINT, 'print']), new Token([\T_WHITESPACE, ' '])]), - )); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessSprintfFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessSprintfFixer.php deleted file mode 100644 index 075922f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessSprintfFixer.php +++ /dev/null @@ -1,112 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUselessSprintfFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There must be no `sprintf` calls with only the first argument.', - [ - new CodeSample( - "isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run before MethodArgumentSpaceFixer, NativeFunctionCasingFixer, NoEmptyStatementFixer, NoExtraBlankLinesFixer, NoSpacesInsideParenthesisFixer, SpacesInsideParenthesesFixer. - */ - public function getPriority(): int - { - return 42; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionAnalyzer = new FunctionsAnalyzer(); - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - for ($index = \count($tokens) - 1; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_STRING)) { - continue; - } - - if ('sprintf' !== strtolower($tokens[$index]->getContent())) { - continue; - } - - if (!$functionAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; - } - - $openParenthesisIndex = $tokens->getNextTokenOfKind($index, ['(']); - - if ($tokens[$tokens->getNextMeaningfulToken($openParenthesisIndex)]->isGivenKind(\T_ELLIPSIS)) { - continue; - } - - $closeParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesisIndex); - - if (1 !== $argumentsAnalyzer->countArguments($tokens, $openParenthesisIndex, $closeParenthesisIndex)) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($closeParenthesisIndex); - - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($closeParenthesisIndex); - - if ($tokens[$prevMeaningfulTokenIndex]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevMeaningfulTokenIndex); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($openParenthesisIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prevMeaningfulTokenIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevMeaningfulTokenIndex); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php deleted file mode 100644 index d5bb4e2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php +++ /dev/null @@ -1,248 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\ArgumentAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * use_nullable_type_declaration?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * use_nullable_type_declaration: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author HypeMC - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NullableTypeDeclarationForDefaultNullValueFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - private const CONSTRUCTOR_PROPERTY_MODIFIERS = [ - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, - FCT::T_PUBLIC_SET, - FCT::T_PROTECTED_SET, - FCT::T_PRIVATE_SET, - FCT::T_READONLY, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Adds or removes `?` before single type declarations or `|null` at the end of union types when parameters have a default `null` value.', - [ - new CodeSample( - " false], - ), - new VersionSpecificCodeSample( - " false], - ), - new VersionSpecificCodeSample( - " false], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_VARIABLE) && $tokens->isAnyTokenKindsFound([\T_FUNCTION, \T_FN]); - } - - /** - * {@inheritdoc} - * - * Must run before NoUnreachableDefaultArgumentValueFixer, NullableTypeDeclarationFixer, OrderedTypesFixer. - */ - public function getPriority(): int - { - return 3; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('use_nullable_type_declaration', 'Whether to add or remove `?` or `|null` to parameters with a default `null` value.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->setDeprecationMessage('Behaviour will follow default one.') // @TODO remove the option on next major 4.0 - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - $tokenKinds = [\T_FUNCTION, \T_FN]; - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind($tokenKinds)) { - continue; - } - - $arguments = $functionsAnalyzer->getFunctionArguments($tokens, $index); - $this->fixFunctionParameters($tokens, $arguments); - } - } - - /** - * @param array $arguments - */ - private function fixFunctionParameters(Tokens $tokens, array $arguments): void - { - foreach (array_reverse($arguments) as $argumentInfo) { - if ( - // Skip, if the parameter - // - doesn't have a type declaration - !$argumentInfo->hasTypeAnalysis() - // - has a mixed or standalone null type - || \in_array(strtolower($argumentInfo->getTypeAnalysis()->getName()), ['mixed', 'null'], true) - // - a default value is not null we can continue - || !$argumentInfo->hasDefault() || 'null' !== strtolower($argumentInfo->getDefault()) - ) { - continue; - } - - $argumentTypeInfo = $argumentInfo->getTypeAnalysis(); - - if (\PHP_VERSION_ID >= 8_00_00 && false === $this->configuration['use_nullable_type_declaration']) { - $visibility = $tokens[$tokens->getPrevMeaningfulToken($argumentTypeInfo->getStartIndex())]; - - if ($visibility->isGivenKind(self::CONSTRUCTOR_PROPERTY_MODIFIERS)) { - continue; - } - } - - $typeAnalysisName = $argumentTypeInfo->getName(); - if (str_contains($typeAnalysisName, '|') || str_contains($typeAnalysisName, '&')) { - $this->fixUnionTypeParameter($tokens, $argumentTypeInfo); - } else { - $this->fixSingleTypeParameter($tokens, $argumentTypeInfo); - } - } - } - - private function fixSingleTypeParameter(Tokens $tokens, TypeAnalysis $argumentTypeInfo): void - { - if (true === $this->configuration['use_nullable_type_declaration']) { - if (!$argumentTypeInfo->isNullable()) { - $tokens->insertAt($argumentTypeInfo->getStartIndex(), new Token([CT::T_NULLABLE_TYPE, '?'])); - } - } elseif ($argumentTypeInfo->isNullable()) { - $tokens->removeTrailingWhitespace($startIndex = $argumentTypeInfo->getStartIndex()); - $tokens->clearTokenAndMergeSurroundingWhitespace($startIndex); - } - } - - private function fixUnionTypeParameter(Tokens $tokens, TypeAnalysis $argumentTypeInfo): void - { - if (true === $this->configuration['use_nullable_type_declaration']) { - if ($argumentTypeInfo->isNullable()) { - return; - } - - $typeAnalysisName = $argumentTypeInfo->getName(); - $endIndex = $argumentTypeInfo->getEndIndex(); - - if (str_contains($typeAnalysisName, '&') && !str_contains($typeAnalysisName, '|')) { - $endIndex += 2; - $tokens->insertAt($argumentTypeInfo->getStartIndex(), new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, '('])); - $tokens->insertAt($endIndex, new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE, ')'])); - } - - $tokens->insertAt($endIndex + 1, [ - new Token([CT::T_TYPE_ALTERNATION, '|']), - new Token([\T_STRING, 'null']), - ]); - } elseif ($argumentTypeInfo->isNullable()) { - $startIndex = $argumentTypeInfo->getStartIndex(); - - $index = $tokens->getNextTokenOfKind($startIndex - 1, [[\T_STRING, 'null']], false); - - if ($index === $startIndex) { - $tokens->removeTrailingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - $index = $tokens->getNextMeaningfulToken($index); - if ($tokens[$index]->equals([CT::T_TYPE_ALTERNATION, '|'])) { - $tokens->removeTrailingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } else { - $tokens->removeLeadingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - $index = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$index]->equals([CT::T_TYPE_ALTERNATION, '|'])) { - $tokens->removeLeadingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } - - $typeAnalysisName = $argumentTypeInfo->getName(); - - if (str_contains($typeAnalysisName, '&') && 1 === substr_count($typeAnalysisName, '|')) { - $index = $tokens->getNextTokenOfKind($startIndex - 1, [[CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN]]); - $tokens->removeTrailingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - $index = $tokens->getPrevTokenOfKind($argumentTypeInfo->getEndIndex() + 1, [[CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE]]); - $tokens->removeLeadingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php deleted file mode 100644 index dc686d7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php +++ /dev/null @@ -1,266 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractPhpdocToTypeDeclarationFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ExperimentalFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * scalar_types?: bool, - * types_map?: array, - * union_types?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * scalar_types: bool, - * types_map: array, - * union_types: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @phpstan-import-type _PhpTokenArray from Token - * - * @author Jan Gantzert - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocToParamTypeFixer extends AbstractPhpdocToTypeDeclarationFixer implements ConfigurableFixerInterface, ExperimentalFixerInterface -{ - private const TYPE_CHECK_TEMPLATE = ' - */ - private const EXCLUDE_FUNC_NAMES = [ - [\T_STRING, '__clone'], - [\T_STRING, '__destruct'], - ]; - - /** - * @var array - */ - private const SKIPPED_TYPES = [ - 'resource' => true, - 'static' => true, - 'void' => true, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Takes `@param` annotations of non-mixed types and adjusts accordingly the function signature.', - [ - new CodeSample( - <<<'PHP' - false], - ), - new CodeSample( - <<<'PHP' - false], - ), - ], - null, - 'The `@param` annotation is mandatory for the fixer to make changes, signatures of methods without it (no docblock, inheritdocs) will not be fixed. Manual actions are required if inherited signatures are not properly documented.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_FUNCTION, \T_FN]); - } - - /** - * {@inheritdoc} - * - * Must run before NoSuperfluousPhpdocTagsFixer, PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 8; - } - - protected function isSkippedType(string $type): bool - { - return isset(self::SKIPPED_TYPES[$type]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensToInsert = []; - $typesToExclude = []; - - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(\T_DOC_COMMENT)) { - $typesToExclude = array_merge($typesToExclude, self::getTypesToExclude($token->getContent())); - - continue; - } - - if (!$token->isGivenKind([\T_FUNCTION, \T_FN])) { - continue; - } - - $funcName = $tokens->getNextMeaningfulToken($index); - if ($tokens[$funcName]->equalsAny(self::EXCLUDE_FUNC_NAMES, false)) { - continue; - } - - $docCommentIndex = $this->findFunctionDocComment($tokens, $index); - - if (null === $docCommentIndex) { - continue; - } - - foreach ($this->getAnnotationsFromDocComment('param', $tokens, $docCommentIndex) as $paramTypeAnnotation) { - $typesExpression = $paramTypeAnnotation->getTypeExpression(); - - if (null === $typesExpression) { - continue; - } - - $typeInfo = $this->getCommonTypeInfo($typesExpression, false); - $unionTypes = null; - - if (null === $typeInfo) { - $unionTypes = $this->getUnionTypes($typesExpression, false); - } - - if (null === $typeInfo && null === $unionTypes) { - continue; - } - - if (null !== $typeInfo) { - $paramType = $typeInfo['commonType']; - $isNullable = $typeInfo['isNullable']; - } else { // null !== $unionTypes, because of previous 2 ifs - $paramType = $unionTypes; - $isNullable = false; - } - - if (\in_array($paramType, $typesToExclude, true)) { - continue; - } - - $startIndex = $tokens->getNextTokenOfKind($index, ['(']); - $variableIndex = $this->findCorrectVariable($tokens, $startIndex, $paramTypeAnnotation); - - if (null === $variableIndex) { - continue; - } - - $byRefIndex = $tokens->getPrevMeaningfulToken($variableIndex); - \assert(\is_int($byRefIndex)); - - if ($tokens[$byRefIndex]->equals('&')) { - $variableIndex = $byRefIndex; - } - - if ($this->hasParamTypeHint($tokens, $variableIndex)) { - continue; - } - - if (!$this->isValidSyntax(\sprintf(self::TYPE_CHECK_TEMPLATE, $paramType))) { - continue; - } - - $tokensToInsert[$variableIndex] = array_merge( - $this->createTypeDeclarationTokens($paramType, $isNullable), - [new Token([\T_WHITESPACE, ' '])], - ); - } - } - - $tokens->insertSlices($tokensToInsert); - } - - protected function createTokensFromRawType(string $type): Tokens - { - $typeTokens = Tokens::fromCode(\sprintf(self::TYPE_CHECK_TEMPLATE, $type)); - $typeTokens->clearRange(0, 4); - $typeTokens->clearRange(\count($typeTokens) - 6, \count($typeTokens) - 1); - $typeTokens->clearEmptyTokens(); - - return $typeTokens; - } - - private function findCorrectVariable(Tokens $tokens, int $startIndex, Annotation $paramTypeAnnotation): ?int - { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startIndex); - - for ($index = $startIndex + 1; $index < $endIndex; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_VARIABLE)) { - continue; - } - - $variableName = $tokens[$index]->getContent(); - - if ($paramTypeAnnotation->getVariableName() === $variableName) { - return $index; - } - } - - return null; - } - - /** - * Determine whether the function already has a param type hint. - * - * @param int $index The index of the end of the function definition line, EG at { or ; - */ - private function hasParamTypeHint(Tokens $tokens, int $index): bool - { - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - return !$tokens[$prevIndex]->equalsAny([',', '(']); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToPropertyTypeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToPropertyTypeFixer.php deleted file mode 100644 index 9d18220..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToPropertyTypeFixer.php +++ /dev/null @@ -1,326 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractPhpdocToTypeDeclarationFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ExperimentalFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-import-type _CommonTypeInfo from AbstractPhpdocToTypeDeclarationFixer - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * scalar_types?: bool, - * types_map?: array, - * union_types?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * scalar_types: bool, - * types_map: array, - * union_types: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocToPropertyTypeFixer extends AbstractPhpdocToTypeDeclarationFixer implements ConfigurableFixerInterface, ExperimentalFixerInterface -{ - private const TYPE_CHECK_TEMPLATE = ' - */ - private array $skippedTypes = [ - 'resource' => true, - 'null' => true, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Takes `@var` annotation of non-mixed types and adjusts accordingly the property signature..', - [ - new CodeSample( - <<<'PHP' - false], - ), - new CodeSample( - <<<'PHP' - false], - ), - ], - null, - 'The `@var` annotation is mandatory for the fixer to make changes, signatures of properties without it (no docblock) will not be fixed. Manual actions might be required for newly typed properties that are read before initialization.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - /** - * {@inheritdoc} - * - * Must run before FullyQualifiedStrictTypesFixer, NoSuperfluousPhpdocTagsFixer, PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 8; - } - - protected function isSkippedType(string $type): bool - { - return isset($this->skippedTypes[$type]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensToInsert = []; - $typesToExclude = []; - - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(\T_DOC_COMMENT)) { - $typesToExclude = array_merge($typesToExclude, self::getTypesToExclude($token->getContent())); - - continue; - } - if ($tokens[$index]->isGivenKind([\T_CLASS, \T_TRAIT])) { - $tokensToInsert += $this->fixClass($tokens, $index, $typesToExclude); - } - } - - $tokens->insertSlices($tokensToInsert); - } - - protected function createTokensFromRawType(string $type): Tokens - { - $typeTokens = Tokens::fromCode(\sprintf(self::TYPE_CHECK_TEMPLATE, $type)); - $typeTokens->clearRange(0, 8); - $typeTokens->clearRange(\count($typeTokens) - 5, \count($typeTokens) - 1); - $typeTokens->clearEmptyTokens(); - - return $typeTokens; - } - - /** - * @param list $typesToExclude - * - * @return array> - */ - private function fixClass(Tokens $tokens, int $index, array $typesToExclude): array - { - $tokensToInsert = []; - - $index = $tokens->getNextTokenOfKind($index, ['{']); - $classEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - for (; $index < $classEndIndex; ++$index) { - if ($tokens[$index]->isGivenKind(\T_FUNCTION)) { - $index = $tokens->getNextTokenOfKind($index, ['{', ';']); - - if ($tokens[$index]->equals('{')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - } - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $docCommentIndex = $index; - $propertyIndices = $this->findNextUntypedPropertiesDeclaration($tokens, $docCommentIndex); - - if ([] === $propertyIndices) { - continue; - } - - $typeInfo = $this->resolveApplicableType( - $propertyIndices, - $this->getAnnotationsFromDocComment('var', $tokens, $docCommentIndex), - ); - - if (null === $typeInfo) { - continue; - } - - $propertyType = $typeInfo['commonType']; - $isNullable = $typeInfo['isNullable']; - - if (\in_array($propertyType, ['callable', 'never', 'void'], true)) { - continue; - } - - if (\in_array($propertyType, $typesToExclude, true)) { - continue; - } - - if (!$this->isValidSyntax(\sprintf(self::TYPE_CHECK_TEMPLATE, $propertyType))) { - continue; - } - - $newTokens = array_merge( - $this->createTypeDeclarationTokens($propertyType, $isNullable), - [new Token([\T_WHITESPACE, ' '])], - ); - - $tokensToInsert[current($propertyIndices)] = $newTokens; - - $index = max($propertyIndices) + 1; - } - - return $tokensToInsert; - } - - /** - * @return array - */ - private function findNextUntypedPropertiesDeclaration(Tokens $tokens, int $index): array - { - do { - $index = $tokens->getNextMeaningfulToken($index); - } while ($tokens[$index]->isGivenKind([ - \T_PRIVATE, - \T_PROTECTED, - \T_PUBLIC, - \T_STATIC, - \T_VAR, - ])); - - if (!$tokens[$index]->isGivenKind(\T_VARIABLE)) { - return []; - } - - $properties = []; - - while (!$tokens[$index]->equals(';')) { - if ($tokens[$index]->isGivenKind(\T_VARIABLE)) { - $properties[$tokens[$index]->getContent()] = $index; - } - - $index = $tokens->getNextMeaningfulToken($index); - } - - return $properties; - } - - /** - * @param array $propertyIndices - * @param list $annotations - * - * @return ?_CommonTypeInfo - */ - private function resolveApplicableType(array $propertyIndices, array $annotations): ?array - { - $propertyTypes = []; - - foreach ($annotations as $annotation) { - $propertyName = $annotation->getVariableName(); - - if (null === $propertyName) { - if (1 !== \count($propertyIndices)) { - continue; - } - - $propertyName = array_key_first($propertyIndices); - } - - if (!isset($propertyIndices[$propertyName])) { - continue; - } - - $typesExpression = $annotation->getTypeExpression(); - - if (null === $typesExpression) { - continue; - } - - $typeInfo = $this->getCommonTypeInfo($typesExpression, false); - $unionTypes = null; - - if (null === $typeInfo) { - $unionTypes = $this->getUnionTypes($typesExpression, false); - } - - if (null === $typeInfo && null === $unionTypes) { - continue; - } - - if (null !== $unionTypes) { - $typeInfo = ['commonType' => $unionTypes, 'isNullable' => false]; - } - - if (\array_key_exists($propertyName, $propertyTypes) && $typeInfo !== $propertyTypes[$propertyName]) { - return null; - } - - $propertyTypes[$propertyName] = $typeInfo; - } - - if (\count($propertyTypes) !== \count($propertyIndices)) { - return null; - } - - $type = array_shift($propertyTypes); - - foreach ($propertyTypes as $propertyType) { - if ($propertyType !== $type) { - return null; - } - } - - return $type; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php deleted file mode 100644 index 8c60907..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php +++ /dev/null @@ -1,269 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractPhpdocToTypeDeclarationFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ExperimentalFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * scalar_types?: bool, - * types_map?: array, - * union_types?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * scalar_types: bool, - * types_map: array, - * union_types: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @phpstan-import-type _PhpTokenArray from Token - * - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocToReturnTypeFixer extends AbstractPhpdocToTypeDeclarationFixer implements ConfigurableFixerInterface, ExperimentalFixerInterface -{ - private const TYPE_CHECK_TEMPLATE = ' - */ - private array $excludeFuncNames = [ - [\T_STRING, '__construct'], - [\T_STRING, '__destruct'], - [\T_STRING, '__clone'], - ]; - - /** - * @var array - */ - private array $skippedTypes = [ - 'resource' => true, - 'null' => true, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Takes `@return` annotation of non-mixed types and adjusts accordingly the function signature.', - [ - new CodeSample( - <<<'PHP' - false], - ), - new CodeSample( - <<<'PHP' - false], - ), - new VersionSpecificCodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_FUNCTION, \T_FN]); - } - - /** - * {@inheritdoc} - * - * Must run before FullyQualifiedStrictTypesFixer, NoSuperfluousPhpdocTagsFixer, PhpdocAlignFixer, ReturnToYieldFromFixer, ReturnTypeDeclarationFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 13; - } - - protected function isSkippedType(string $type): bool - { - return isset($this->skippedTypes[$type]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensToInsert = []; - $typesToExclude = []; - - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(\T_DOC_COMMENT)) { - $typesToExclude = array_merge($typesToExclude, self::getTypesToExclude($token->getContent())); - - continue; - } - - if (!$tokens[$index]->isGivenKind([\T_FUNCTION, \T_FN])) { - continue; - } - - $funcName = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$funcName]->equalsAny($this->excludeFuncNames, false)) { - continue; - } - - $docCommentIndex = $this->findFunctionDocComment($tokens, $index); - if (null === $docCommentIndex) { - continue; - } - - $returnTypeAnnotations = $this->getAnnotationsFromDocComment('return', $tokens, $docCommentIndex); - if (1 !== \count($returnTypeAnnotations)) { - continue; - } - - $returnTypeAnnotation = $returnTypeAnnotations[0]; - - $typesExpression = $returnTypeAnnotation->getTypeExpression(); - - if (null === $typesExpression) { - continue; - } - - $typeInfo = $this->getCommonTypeInfo($typesExpression, true); - $unionTypes = null; - - if (null === $typeInfo) { - $unionTypes = $this->getUnionTypes($typesExpression, true); - } - - if (null === $typeInfo && null === $unionTypes) { - continue; - } - - if (null !== $typeInfo) { - $returnType = $typeInfo['commonType']; - $isNullable = $typeInfo['isNullable']; - } else { // null !== $unionTypes, because of previous 2 ifs - $returnType = $unionTypes; - $isNullable = false; - } - - if (\in_array($returnType, $typesToExclude, true)) { - continue; - } - - $paramsStartIndex = $tokens->getNextTokenOfKind($index, ['(']); - $paramsEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $paramsStartIndex); - - $bodyStartIndex = $tokens->getNextTokenOfKind($paramsEndIndex, ['{', ';', [\T_DOUBLE_ARROW]]); - - if ($this->hasReturnTypeHint($tokens, $bodyStartIndex)) { - continue; - } - - if (!$this->isValidSyntax(\sprintf(self::TYPE_CHECK_TEMPLATE, $returnType))) { - continue; - } - - $tokensToInsert[$paramsEndIndex + 1] = array_merge( - [ - new Token([CT::T_TYPE_COLON, ':']), - new Token([\T_WHITESPACE, ' ']), - ], - $this->createTypeDeclarationTokens($returnType, $isNullable), - ); - } - - $tokens->insertSlices($tokensToInsert); - } - - protected function createTokensFromRawType(string $type): Tokens - { - $typeTokens = Tokens::fromCode(\sprintf(self::TYPE_CHECK_TEMPLATE, $type)); - $typeTokens->clearRange(0, 7); - $typeTokens->clearRange(\count($typeTokens) - 3, \count($typeTokens) - 1); - $typeTokens->clearEmptyTokens(); - - return $typeTokens; - } - - /** - * Determine whether the function already has a return type hint. - * - * @param int $index The index of the end of the function definition line, EG at { or ; - */ - private function hasReturnTypeHint(Tokens $tokens, int $index): bool - { - $endFuncIndex = $tokens->getPrevTokenOfKind($index, [')']); - $nextIndex = $tokens->getNextMeaningfulToken($endFuncIndex); - - return $tokens[$nextIndex]->isGivenKind(CT::T_TYPE_COLON); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/RegularCallableCallFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/RegularCallableCallFixer.php deleted file mode 100644 index a930be5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/RegularCallableCallFixer.php +++ /dev/null @@ -1,260 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RegularCallableCallFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Callables must be called without using `call_user_func*` when possible.', - [ - new CodeSample( - <<<'PHP' - \'baz\'])` or `call_user_func($foo, $foo = \'bar\')`.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before NativeFunctionInvocationFixer. - * Must run after NoBinaryStringFixer, NoUselessConcatOperatorFixer. - */ - public function getPriority(): int - { - return 2; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if (!$tokens[$index]->equalsAny([[\T_STRING, 'call_user_func'], [\T_STRING, 'call_user_func_array']], false)) { - continue; - } - - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; // redeclare/override - } - - $openParenthesis = $tokens->getNextMeaningfulToken($index); - $closeParenthesis = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesis); - $arguments = $argumentsAnalyzer->getArguments($tokens, $openParenthesis, $closeParenthesis); - - if (1 > \count($arguments)) { - return; // no arguments! - } - - $this->processCall($tokens, $index, $arguments); - } - } - - /** - * @param non-empty-array $arguments - */ - private function processCall(Tokens $tokens, int $index, array $arguments): void - { - $firstArgIndex = $tokens->getNextMeaningfulToken( - $tokens->getNextMeaningfulToken($index), - ); - - $firstArgToken = $tokens[$firstArgIndex]; - - if ($firstArgToken->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - $afterFirstArgIndex = $tokens->getNextMeaningfulToken($firstArgIndex); - - if (!$tokens[$afterFirstArgIndex]->equalsAny([',', ')'])) { - return; // first argument is an expression like `call_user_func("foo"."bar", ...)`, not supported! - } - - $firstArgTokenContent = $firstArgToken->getContent(); - - if (!$this->isValidFunctionInvoke($firstArgTokenContent)) { - return; - } - - $newCallTokens = Tokens::fromCode('getContent()), 1, -1).'();'); - $newCallTokensSize = $newCallTokens->count(); - $newCallTokens->clearAt(0); - $newCallTokens->clearRange($newCallTokensSize - 3, $newCallTokensSize - 1); - $newCallTokens->clearEmptyTokens(); - - $this->replaceCallUserFuncWithCallback($tokens, $index, $newCallTokens, $firstArgIndex, $firstArgIndex); - } elseif ( - $firstArgToken->isGivenKind(\T_FUNCTION) - || ( - $firstArgToken->isGivenKind(\T_STATIC) - && $tokens[$tokens->getNextMeaningfulToken($firstArgIndex)]->isGivenKind(\T_FUNCTION) - ) - ) { - $firstArgEndIndex = $tokens->findBlockEnd( - Tokens::BLOCK_TYPE_BRACE, - $tokens->getNextTokenOfKind($firstArgIndex, ['{']), - ); - - $newCallTokens = $this->getTokensSubcollection($tokens, $firstArgIndex, $firstArgEndIndex); - $newCallTokens->insertAt($newCallTokens->count(), new Token(')')); - $newCallTokens->insertAt(0, new Token('(')); - $this->replaceCallUserFuncWithCallback($tokens, $index, $newCallTokens, $firstArgIndex, $firstArgEndIndex); - } elseif ($firstArgToken->isGivenKind(\T_VARIABLE)) { - $firstArgEndIndex = reset($arguments); - - // check if the same variable is used multiple times and if so do not fix - - foreach ($arguments as $argumentStart => $argumentEnd) { - if ($firstArgEndIndex === $argumentEnd) { - continue; - } - - for ($i = $argumentStart; $i <= $argumentEnd; ++$i) { - if ($tokens[$i]->equals($firstArgToken)) { - return; - } - } - } - - // check if complex statement and if so wrap the call in () if on PHP 7 or up, else do not fix - - $newCallTokens = $this->getTokensSubcollection($tokens, $firstArgIndex, $firstArgEndIndex); - $complex = false; - - for ($newCallIndex = \count($newCallTokens) - 1; $newCallIndex >= 0; --$newCallIndex) { - if ($newCallTokens[$newCallIndex]->isGivenKind([\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_VARIABLE])) { - continue; - } - - $blockType = Tokens::detectBlockType($newCallTokens[$newCallIndex]); - - if (null !== $blockType && (Tokens::BLOCK_TYPE_INDEX_BRACE === $blockType['type'] || Tokens::BLOCK_TYPE_INDEX_BRACKET === $blockType['type'])) { - $newCallIndex = $newCallTokens->findBlockStart($blockType['type'], $newCallIndex); - - continue; - } - - $complex = true; - - break; - } - - if ($complex) { - $newCallTokens->insertAt($newCallTokens->count(), new Token(')')); - $newCallTokens->insertAt(0, new Token('(')); - } - $this->replaceCallUserFuncWithCallback($tokens, $index, $newCallTokens, $firstArgIndex, $firstArgEndIndex); - } - } - - private function replaceCallUserFuncWithCallback(Tokens $tokens, int $callIndex, Tokens $newCallTokens, int $firstArgStartIndex, int $firstArgEndIndex): void - { - $tokens->clearRange($firstArgStartIndex, $firstArgEndIndex); - - $afterFirstArgIndex = $tokens->getNextMeaningfulToken($firstArgEndIndex); - $afterFirstArgToken = $tokens[$afterFirstArgIndex]; - - if ($afterFirstArgToken->equals(',')) { - $useEllipsis = $tokens[$callIndex]->equals([\T_STRING, 'call_user_func_array'], false); - - if ($useEllipsis) { - $secondArgIndex = $tokens->getNextMeaningfulToken($afterFirstArgIndex); - $tokens->insertAt($secondArgIndex, new Token([\T_ELLIPSIS, '...'])); - } - - $tokens->clearAt($afterFirstArgIndex); - $tokens->removeTrailingWhitespace($afterFirstArgIndex); - } - - $tokens->overrideRange($callIndex, $callIndex, $newCallTokens); - $prevIndex = $tokens->getPrevMeaningfulToken($callIndex); - - if ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevIndex); - } - } - - private function getTokensSubcollection(Tokens $tokens, int $indexStart, int $indexEnd): Tokens - { - $size = $indexEnd - $indexStart + 1; - $subCollection = new Tokens($size); - - for ($i = 0; $i < $size; ++$i) { - $toClone = $tokens[$i + $indexStart]; - $subCollection[$i] = clone $toClone; - } - - return $subCollection; - } - - private function isValidFunctionInvoke(string $name): bool - { - if (\strlen($name) < 3 || 'b' === $name[0] || 'B' === $name[0]) { - return false; - } - - $name = substr($name, 1, -1); - - if ($name !== trim($name)) { - return false; - } - - return true; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php deleted file mode 100644 index 8d02fd6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php +++ /dev/null @@ -1,133 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * space_before?: 'none'|'one', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * space_before: 'none'|'one', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReturnTypeDeclarationFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Adjust spacing around colon in return type declarations and backed enum types.', - [ - new CodeSample( - " 'none'], - ), - new CodeSample( - " 'one'], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after PhpUnitDataProviderReturnTypeFixer, PhpdocToReturnTypeFixer, VoidReturnFixer. - */ - public function getPriority(): int - { - return -17; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(CT::T_TYPE_COLON); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $oneSpaceBefore = 'one' === $this->configuration['space_before']; - - for ($index = 0, $limit = $tokens->count(); $index < $limit; ++$index) { - if (!$tokens[$index]->isGivenKind(CT::T_TYPE_COLON)) { - continue; - } - - $previousIndex = $index - 1; - $previousToken = $tokens[$previousIndex]; - - if ($previousToken->isWhitespace()) { - if (!$tokens[$tokens->getPrevNonWhitespace($index - 1)]->isComment()) { - if ($oneSpaceBefore) { - $tokens[$previousIndex] = new Token([\T_WHITESPACE, ' ']); - } else { - $tokens->clearAt($previousIndex); - } - } - } elseif ($oneSpaceBefore) { - $tokenWasAdded = $tokens->ensureWhitespaceAtIndex($index, 0, ' '); - - if ($tokenWasAdded) { - ++$limit; - } - - ++$index; - } - - ++$index; - - $tokenWasAdded = $tokens->ensureWhitespaceAtIndex($index, 0, ' '); - - if ($tokenWasAdded) { - ++$limit; - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('space_before', 'Spacing to apply before colon.')) - ->setAllowedValues(['one', 'none']) - ->setDefault('none') - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php deleted file mode 100644 index 7d9eeb8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php +++ /dev/null @@ -1,149 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleLineThrowFixer extends AbstractFixer -{ - private const REMOVE_WHITESPACE_AFTER_TOKENS = ['[']; - private const REMOVE_WHITESPACE_AROUND_TOKENS = ['(', [\T_DOUBLE_COLON]]; - private const REMOVE_WHITESPACE_BEFORE_TOKENS = [')', ']', ',', ';']; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Throwing exception must be done in single line.', - [ - new CodeSample("isTokenKindFound(\T_THROW); - } - - /** - * {@inheritdoc} - * - * Must run before BracesFixer, ConcatSpaceFixer. - */ - public function getPriority(): int - { - return 36; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = 0, $count = $tokens->count(); $index < $count; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_THROW)) { - continue; - } - - $endCandidateIndex = $tokens->getNextMeaningfulToken($index); - - while (!$tokens[$endCandidateIndex]->equalsAny([')', ']', ',', ';', [\T_CLOSE_TAG]])) { - $blockType = Tokens::detectBlockType($tokens[$endCandidateIndex]); - - if (null !== $blockType) { - if (Tokens::BLOCK_TYPE_BRACE === $blockType['type'] || !$blockType['isStart']) { - break; - } - - $endCandidateIndex = $tokens->findBlockEnd($blockType['type'], $endCandidateIndex); - } - - $endCandidateIndex = $tokens->getNextMeaningfulToken($endCandidateIndex); - } - - $this->trimNewLines($tokens, $index, $tokens->getPrevMeaningfulToken($endCandidateIndex)); - } - } - - private function trimNewLines(Tokens $tokens, int $startIndex, int $endIndex): void - { - for ($index = $startIndex; $index < $endIndex; ++$index) { - $content = $tokens[$index]->getContent(); - - if ($tokens[$index]->isGivenKind(\T_COMMENT)) { - if (str_starts_with($content, '//')) { - $content = '/*'.substr($content, 2).' */'; - $tokens->clearAt($index + 1); - } elseif (str_starts_with($content, '#')) { - $content = '/*'.substr($content, 1).' */'; - $tokens->clearAt($index + 1); - } elseif (Preg::match('/\R/', $content)) { - $content = Preg::replace('/\R/', ' ', $content); - } - - $tokens[$index] = new Token([\T_COMMENT, $content]); - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_WHITESPACE)) { - continue; - } - - if (!Preg::match('/\R/', $content)) { - continue; - } - - $prevIndex = $tokens->getNonEmptySibling($index, -1); - - if ($this->isPreviousTokenToClear($tokens[$prevIndex])) { - $tokens->clearAt($index); - - continue; - } - - $nextIndex = $tokens->getNonEmptySibling($index, 1); - - if ( - $this->isNextTokenToClear($tokens[$nextIndex]) - && !$tokens[$prevIndex]->isGivenKind(\T_FUNCTION) - ) { - $tokens->clearAt($index); - - continue; - } - - $tokens[$index] = new Token([\T_WHITESPACE, ' ']); - } - } - - private function isPreviousTokenToClear(Token $token): bool - { - return $token->equalsAny([...self::REMOVE_WHITESPACE_AFTER_TOKENS, ...self::REMOVE_WHITESPACE_AROUND_TOKENS]) || $token->isObjectOperator(); - } - - private function isNextTokenToClear(Token $token): bool - { - return $token->equalsAny([...self::REMOVE_WHITESPACE_AROUND_TOKENS, ...self::REMOVE_WHITESPACE_BEFORE_TOKENS]) || $token->isObjectOperator(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php deleted file mode 100644 index ef422a1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php +++ /dev/null @@ -1,172 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StaticLambdaFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Lambdas not (indirectly) referencing `$this` must be declared `static`.', - [ - new CodeSample( - <<<'PHP' - bindTo(new stdClass()); - - PHP, - ), - ], - null, - 'Risky when using `->bindTo` on lambdas without referencing to `$this`.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_FUNCTION, \T_FN]); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run after StaticPrivateMethodFixer. - */ - public function getPriority(): int - { - return parent::getPriority(); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $analyzer = new TokensAnalyzer($tokens); - $expectedFunctionKinds = [\T_FUNCTION, \T_FN]; - - for ($index = $tokens->count() - 4; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind($expectedFunctionKinds) || !$analyzer->isLambda($index)) { - continue; - } - - $prev = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prev]->isGivenKind(\T_STATIC)) { - continue; // lambda is already 'static' - } - - $argumentsStartIndex = $tokens->getNextTokenOfKind($index, ['(']); - $argumentsEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $argumentsStartIndex); - - // figure out where the lambda starts and ends - - if ($tokens[$index]->isGivenKind(\T_FUNCTION)) { - $lambdaOpenIndex = $tokens->getNextTokenOfKind($argumentsEndIndex, ['{']); - $lambdaEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $lambdaOpenIndex); - } else { // T_FN - $lambdaOpenIndex = $tokens->getNextTokenOfKind($argumentsEndIndex, [[\T_DOUBLE_ARROW]]); - $lambdaEndIndex = $analyzer->getLastTokenIndexOfArrowFunction($index); - } - - if ($this->hasPossibleReferenceToThis($tokens, $lambdaOpenIndex, $lambdaEndIndex)) { - continue; - } - - // make the lambda static - $tokens->insertAt( - $index, - [ - new Token([\T_STATIC, 'static']), - new Token([\T_WHITESPACE, ' ']), - ], - ); - - $index -= 4; // fixed after a lambda, closes candidate is at least 4 tokens before that - } - } - - /** - * Returns 'true' if there is a possible reference to '$this' within the given tokens index range. - */ - private function hasPossibleReferenceToThis(Tokens $tokens, int $startIndex, int $endIndex): bool - { - for ($i = $startIndex; $i <= $endIndex; ++$i) { - if ($tokens[$i]->isGivenKind(\T_VARIABLE) && '$this' === strtolower($tokens[$i]->getContent())) { - return true; // directly accessing '$this' - } - - if ($tokens[$i]->isGivenKind([ - \T_INCLUDE, // loading additional symbols we cannot analyse here - \T_INCLUDE_ONCE, // " - \T_REQUIRE, // " - \T_REQUIRE_ONCE, // " - CT::T_DYNAMIC_VAR_BRACE_OPEN, // "$h = ${$g};" case - \T_EVAL, // "$c = eval('return $this;');" case - ])) { - return true; - } - - if ($tokens[$i]->isClassy()) { - $openBraceIndex = $tokens->getNextTokenOfKind($i, ['{']); - $i = $tokens->getNextMeaningfulToken($i); - if ($i <= $openBraceIndex && $this->hasPossibleReferenceToThis( - $tokens, - $i, - $openBraceIndex, - )) { - return true; - } - $i = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $openBraceIndex); - - continue; - } - - if ($tokens[$i]->equals('$')) { - $nextIndex = $tokens->getNextMeaningfulToken($i); - - if ($tokens[$nextIndex]->isGivenKind(\T_VARIABLE)) { - return true; // "$$a" case - } - } - - if ($tokens[$i]->equals([\T_STRING, 'parent'], false)) { - return true; // parent:: case - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/UseArrowFunctionsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/UseArrowFunctionsFixer.php deleted file mode 100644 index 72f2d98..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/UseArrowFunctionsFixer.php +++ /dev/null @@ -1,210 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class UseArrowFunctionsFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Anonymous functions with return as the only statement must use arrow functions.', - [ - new CodeSample( - <<<'SAMPLE' - isAllTokenKindsFound([\T_FUNCTION, \T_RETURN]); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run before FunctionDeclarationFixer. - */ - public function getPriority(): int - { - return 32; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $analyzer = new TokensAnalyzer($tokens); - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if ($tokens[$index]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_FUNCTION) || !$analyzer->isLambda($index)) { - continue; - } - - // Find parameters - - $parametersStart = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$parametersStart]->isGivenKind(CT::T_RETURN_REF)) { - $parametersStart = $tokens->getNextMeaningfulToken($parametersStart); - } - - $parametersEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $parametersStart); - - // Find `use ()` start and end - // Abort if it contains reference variables - - $next = $tokens->getNextMeaningfulToken($parametersEnd); - - $useStart = null; - $useEnd = null; - - if ($tokens[$next]->isGivenKind(CT::T_USE_LAMBDA)) { - $useStart = $next; - - if ($tokens[$useStart - 1]->isGivenKind(\T_WHITESPACE)) { - --$useStart; - } - - $next = $tokens->getNextMeaningfulToken($next); - - while (!$tokens[$next]->equals(')')) { - if ($tokens[$next]->equals('&')) { - // variables used by reference are not supported by arrow functions - continue 2; - } - - $next = $tokens->getNextMeaningfulToken($next); - } - - $useEnd = $next; - $next = $tokens->getNextMeaningfulToken($next); - } - - // Find opening brace and following `return` - // Abort if there is more than whitespace between them (like comments) - - $braceOpen = $tokens[$next]->equals('{') ? $next : $tokens->getNextTokenOfKind($next, ['{']); - $return = $braceOpen + 1; - - if ($tokens[$return]->isGivenKind(\T_WHITESPACE)) { - ++$return; - } - - if (!$tokens[$return]->isGivenKind(\T_RETURN)) { - continue; - } - - // Find semicolon of `return` statement - - $semicolon = $tokens->getNextTokenOfKind($return, ['{', ';']); - - if (!$tokens[$semicolon]->equals(';')) { - continue; - } - - // Find closing brace - // Abort if there is more than whitespace between semicolon and closing brace - - $braceClose = $semicolon + 1; - - if ($tokens[$braceClose]->isGivenKind(\T_WHITESPACE)) { - ++$braceClose; - } - - if (!$tokens[$braceClose]->equals('}')) { - continue; - } - - // Abort if closure has `use()` clause and return statement includes external files. - // Converting such closures to arrow functions changes behaviour as the used variables - // are no longer exposed to the included file. - if (null !== $useStart && $this->containsIncludeOrRequire($tokens, $return, $semicolon)) { - continue; - } - - // Transform the function to an arrow function - $this->transform($tokens, $index, $useStart, $useEnd, $braceOpen, $return, $semicolon, $braceClose); - } - } - - private function transform(Tokens $tokens, int $index, ?int $useStart, ?int $useEnd, int $braceOpen, int $return, int $semicolon, int $braceClose): void - { - $tokensToInsert = [new Token([\T_DOUBLE_ARROW, '=>'])]; - - if ($tokens->getNextMeaningfulToken($return) === $semicolon) { - $tokensToInsert[] = new Token([\T_WHITESPACE, ' ']); - $tokensToInsert[] = new Token([\T_STRING, 'null']); - } - - $tokens->clearRange($semicolon, $braceClose - 1); - $tokens->clearTokenAndMergeSurroundingWhitespace($braceClose); - - $tokens->clearRange($braceOpen + 1, $return); - $tokens->overrideRange($braceOpen, $braceOpen, $tokensToInsert); - - if (null !== $useStart) { - $tokens->clearRange($useStart, $useEnd); - } - - $tokens[$index] = new Token([\T_FN, 'fn']); - } - - /** - * Check if the return statement contains include/include_once/require/require_once. - */ - private function containsIncludeOrRequire(Tokens $tokens, int $start, int $end): bool - { - for ($i = $start; $i < $end; ++$i) { - if ($tokens[$i]->isGivenKind([\T_INCLUDE, \T_INCLUDE_ONCE, \T_REQUIRE, \T_REQUIRE_ONCE])) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php deleted file mode 100644 index 4ef3cc2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php +++ /dev/null @@ -1,308 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\FunctionNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * fix_lambda?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * fix_lambda: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Mark Nielsen - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class VoidReturnFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const PREVIOUS_TOKENS = [ - \T_ABSTRACT, - \T_FINAL, - \T_PRIVATE, - \T_PROTECTED, - \T_PUBLIC, - \T_STATIC, - FCT::T_ATTRIBUTE, - ]; - - private TokensAnalyzer $tokensAnalyzer; - - public function getDefinition(): FixerDefinitionInterface - { - $sharedSnipped = <<<'PHP' - false], - ), - ], - null, - 'Modifies the signature of functions.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocNoEmptyReturnFixer, ReturnTypeDeclarationFixer. - * Must run after NoSuperfluousPhpdocTagsFixer, SimplifiedNullReturnFixer. - */ - public function getPriority(): int - { - return 5; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_FUNCTION); - } - - public function isRisky(): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('fix_lambda', 'Whether to fix lambda functions as well.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->tokensAnalyzer = new TokensAnalyzer($tokens); - - for ($index = $tokens->count() - 1; 0 <= $index; --$index) { - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - continue; - } - - if ( - false === $this->configuration['fix_lambda'] - && $this->tokensAnalyzer->isLambda($index) - ) { - continue; - } - - $functionName = $tokens->getNextMeaningfulToken($index); - // These cause syntax errors. - if ($tokens[$functionName]->equalsAny([ - [\T_STRING, '__clone'], - [\T_STRING, '__construct'], - [\T_STRING, '__debugInfo'], - [\T_STRING, '__destruct'], - [\T_STRING, '__isset'], - [\T_STRING, '__serialize'], - [\T_STRING, '__set_state'], - [\T_STRING, '__sleep'], - [\T_STRING, '__toString'], - ], false)) { - continue; - } - - $startIndex = $tokens->getNextTokenOfKind($index, ['{', ';']); - - if ($this->hasReturnTypeHint($tokens, $startIndex)) { - continue; - } - - if ($tokens[$startIndex]->equals(';')) { - // No function body defined, fallback to PHPDoc. - if ($this->hasVoidReturnAnnotation($tokens, $index)) { - $this->fixFunctionDefinition($tokens, $startIndex); - } - - continue; - } - - if ($this->hasReturnAnnotation($tokens, $index)) { - continue; - } - - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $startIndex); - - if ($this->hasVoidReturn($tokens, $startIndex, $endIndex)) { - $this->fixFunctionDefinition($tokens, $startIndex); - } - } - } - - /** - * Determine whether there is a non-void return annotation in the function's PHPDoc comment. - * - * @param int $index The index of the function token - */ - private function hasReturnAnnotation(Tokens $tokens, int $index): bool - { - foreach ($this->findReturnAnnotations($tokens, $index) as $return) { - if (['void'] !== $return->getTypes()) { - return true; - } - } - - return false; - } - - /** - * Determine whether there is a void return annotation in the function's PHPDoc comment. - * - * @param int $index The index of the function token - */ - private function hasVoidReturnAnnotation(Tokens $tokens, int $index): bool - { - foreach ($this->findReturnAnnotations($tokens, $index) as $return) { - if (['void'] === $return->getTypes()) { - return true; - } - } - - return false; - } - - /** - * Determine whether the function already has a return type hint. - * - * @param int $index The index of the end of the function definition line, EG at { or ; - */ - private function hasReturnTypeHint(Tokens $tokens, int $index): bool - { - $endFuncIndex = $tokens->getPrevTokenOfKind($index, [')']); - $nextIndex = $tokens->getNextMeaningfulToken($endFuncIndex); - - return $tokens[$nextIndex]->isGivenKind(CT::T_TYPE_COLON); - } - - /** - * Determine whether the function has a void return. - * - * @param int $startIndex Start of function body - * @param int $endIndex End of function body - */ - private function hasVoidReturn(Tokens $tokens, int $startIndex, int $endIndex): bool - { - for ($i = $startIndex; $i < $endIndex; ++$i) { - if ( - // skip anonymous classes - ($tokens[$i]->isGivenKind(\T_CLASS) && $this->tokensAnalyzer->isAnonymousClass($i)) - // skip lambda functions - || ($tokens[$i]->isGivenKind(\T_FUNCTION) && $this->tokensAnalyzer->isLambda($i)) - ) { - $i = $tokens->getNextTokenOfKind($i, ['{']); - $i = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $i); - - continue; - } - - if ($tokens[$i]->isGivenKind([\T_YIELD, \T_YIELD_FROM])) { - return false; // Generators cannot return void. - } - - if (!$tokens[$i]->isGivenKind(\T_RETURN)) { - continue; - } - - $i = $tokens->getNextMeaningfulToken($i); - if (!$tokens[$i]->equals(';')) { - return false; - } - } - - return true; - } - - /** - * @param int $index The index of the end of the function definition line, EG at { or ; - */ - private function fixFunctionDefinition(Tokens $tokens, int $index): void - { - $endFuncIndex = $tokens->getPrevTokenOfKind($index, [')']); - $tokens->insertAt($endFuncIndex + 1, [ - new Token([CT::T_TYPE_COLON, ':']), - new Token([\T_WHITESPACE, ' ']), - new Token([\T_STRING, 'void']), - ]); - } - - /** - * Find all the return annotations in the function's PHPDoc comment. - * - * @param int $index The index of the function token - * - * @return list - */ - private function findReturnAnnotations(Tokens $tokens, int $index): array - { - do { - $index = $tokens->getPrevNonWhitespace($index); - - if ($tokens[$index]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $index = $tokens->getPrevTokenOfKind($index, [[\T_ATTRIBUTE]]); - } - } while ($tokens[$index]->isGivenKind(self::PREVIOUS_TOKENS)); - - if (!$tokens[$index]->isGivenKind(\T_DOC_COMMENT)) { - return []; - } - - $doc = new DocBlock($tokens[$index]->getContent()); - - return $doc->getAnnotationsOfType('return'); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php deleted file mode 100644 index 2748e54..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php +++ /dev/null @@ -1,1029 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Import; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Processor\ImportProcessor; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * import_symbols?: bool, - * leading_backslash_in_global_namespace?: bool, - * phpdoc_tags?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * import_symbols: bool, - * leading_backslash_in_global_namespace: bool, - * phpdoc_tags: list, - * } - * @phpstan-type _Uses array{ - * constant?: array, - * class?: array, - * function?: array - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author VeeWee - * @author Tomas Jadrny - * @author Greg Korba - * @author SpacePossum - * @author Michael Vorisek - * - * @phpstan-import-type _ImportType from \PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FullyQualifiedStrictTypesFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const REGEX_CLASS = '(?:\\\?+'.TypeExpression::REGEX_IDENTIFIER - .'(\\\\'.TypeExpression::REGEX_IDENTIFIER.')*+)'; - private const CLASSY_KINDS = [\T_CLASS, \T_INTERFACE, \T_TRAIT, FCT::T_ENUM]; - - /** - * @var null|array{ - * constant?: list, - * class?: list, - * function?: list - * } - */ - private ?array $discoveredSymbols; - - /** - * @var array{ - * constant?: array, - * class?: array, - * function?: array - * } - */ - private array $symbolsForImport = []; - - /** - * @var array, array> - */ - private array $reservedIdentifiersByLevel; - - /** - * @var array{ - * constant?: array, - * class?: array, - * function?: array - * } - */ - private array $cacheUsesLast = []; - - /** - * @var array{ - * constant?: array, - * class?: array, - * function?: array - * } - */ - private array $cacheUseNameByShortNameLower; - - /** @var _Uses */ - private array $cacheUseShortNameByName; - - /** @var _Uses */ - private array $cacheUseShortNameByNormalizedName; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes the leading part of fully qualified symbol references if a given symbol is imported or belongs to the current namespace.', - [ - new CodeSample( - <<<'PHP' - baz = $baz; - } - - /** - * @return \Foo\Bar\Baz - */ - public function getBaz() { - return $this->baz; - } - - public function doX(\Foo\Bar $foo, \Exception $e): \Foo\Bar\Baz - { - try {} - catch (\Foo\SomeException $e) {} - } - } - - PHP, - ), - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoSuperfluousPhpdocTagsFixer, OrderedAttributesFixer, OrderedImportsFixer, OrderedInterfacesFixer, StatementIndentationFixer. - * Must run after ClassKeywordFixer, PhpUnitAttributesFixer, PhpdocToPropertyTypeFixer, PhpdocToReturnTypeFixer. - */ - public function getPriority(): int - { - return 7; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([ - CT::T_USE_TRAIT, - FCT::T_ATTRIBUTE, - \T_CATCH, - \T_DOUBLE_COLON, - \T_DOC_COMMENT, - \T_EXTENDS, - \T_FUNCTION, - \T_IMPLEMENTS, - \T_INSTANCEOF, - \T_NEW, - \T_VARIABLE, - ]); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder( - 'leading_backslash_in_global_namespace', - 'Whether FQCN is prefixed with backslash when that FQCN is used in global namespace context.', - )) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder( - 'import_symbols', - 'Whether FQCNs should be automatically imported.', - )) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder( - 'phpdoc_tags', - 'Collection of PHPDoc annotation tags where FQCNs should be processed. As of now only simple tags with `@tag \F\Q\C\N` format are supported (no complex types).', - )) - ->setAllowedTypes(['string[]']) - ->setDefault([ - 'param', - 'phpstan-param', - 'phpstan-property', - 'phpstan-property-read', - 'phpstan-property-write', - 'phpstan-return', - 'phpstan-var', - 'property', - 'property-read', - 'property-write', - 'psalm-param', - 'psalm-property', - 'psalm-property-read', - 'psalm-property-write', - 'psalm-return', - 'psalm-var', - 'return', - 'see', - 'throws', - 'var', - ]) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $namespaceUsesAnalyzer = new NamespaceUsesAnalyzer(); - $functionsAnalyzer = new FunctionsAnalyzer(); - - $this->symbolsForImport = []; - - foreach ($tokens->getNamespaceDeclarations() as $namespaceIndex => $namespace) { - $namespace = $tokens->getNamespaceDeclarations()[$namespaceIndex]; - - $namespaceName = $namespace->getFullName(); - - $uses = []; - $lastUse = null; - - foreach ($namespaceUsesAnalyzer->getDeclarationsInNamespace($tokens, $namespace, true) as $use) { - if (!$use->isClass()) { - continue; - } - - $fullName = ltrim($use->getFullName(), '\\'); - \assert('' !== $fullName); - $uses[$use->getHumanFriendlyType()][$fullName] = $use->getShortName(); - $lastUse = $use; - } - - $indexDiff = 0; - foreach (true === $this->configuration['import_symbols'] ? [true, false] : [false] as $discoverSymbolsPhase) { - $this->discoveredSymbols = $discoverSymbolsPhase ? [] : null; - - $openedCurlyBrackets = 0; - $this->reservedIdentifiersByLevel = []; - - for ($index = $namespace->getScopeStartIndex(); $index < $namespace->getScopeEndIndex() + $indexDiff; ++$index) { - $origSize = \count($tokens); - $token = $tokens[$index]; - - if ($token->equals('{')) { - ++$openedCurlyBrackets; - } elseif ($token->equals('}')) { - unset($this->reservedIdentifiersByLevel[$openedCurlyBrackets]); - --$openedCurlyBrackets; - \assert($openedCurlyBrackets >= 0); - } elseif ($token->isGivenKind(\T_VARIABLE)) { - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if (null !== $prevIndex && $tokens[$prevIndex]->isGivenKind(\T_STRING)) { - $this->fixPrevName($tokens, $index, $uses, $namespaceName); - } - } elseif ($token->isGivenKind(\T_DOUBLE_COLON)) { - $this->fixPrevName($tokens, $index, $uses, $namespaceName); - } elseif ($token->isGivenKind(\T_FUNCTION)) { - $this->fixFunction($functionsAnalyzer, $tokens, $index, $uses, $namespaceName); - } elseif ($token->isGivenKind(FCT::T_ATTRIBUTE)) { - $this->fixAttribute($tokens, $index, $uses, $namespaceName); - } elseif ($token->isGivenKind(\T_CATCH)) { - $this->fixCatch($tokens, $index, $uses, $namespaceName); - } elseif ($discoverSymbolsPhase && $token->isGivenKind(self::CLASSY_KINDS)) { - $this->fixNextName($tokens, $index, $uses, $namespaceName); - } elseif ($token->isGivenKind([\T_EXTENDS, \T_IMPLEMENTS])) { - $this->fixExtendsImplements($tokens, $index, $uses, $namespaceName); - } elseif ($token->isGivenKind([\T_INSTANCEOF, \T_NEW, CT::T_USE_TRAIT, CT::T_TYPE_COLON])) { - $this->fixNextName($tokens, $index, $uses, $namespaceName); - } elseif ($discoverSymbolsPhase && $token->isGivenKind(\T_COMMENT) && Preg::match('/#\[\s*('.self::REGEX_CLASS.')/', $token->getContent(), $matches)) { // @TODO: drop when PHP 8.0+ is required - $attributeClass = $matches[1]; - $this->determineShortType($attributeClass, 'class', $uses, $namespaceName); - } elseif ($token->isGivenKind(\T_DOC_COMMENT)) { - Preg::matchAll('/\*\h*@(?:psalm-|phpstan-)?(?:template(?:-covariant|-contravariant)?|(?:import-)?type)\h+('.TypeExpression::REGEX_IDENTIFIER.')(?!\S)/i', $token->getContent(), $matches); - foreach ($matches[1] as $reservedIdentifier) { - $this->reservedIdentifiersByLevel[$openedCurlyBrackets + 1][$reservedIdentifier] = true; - } - - $this->fixPhpDoc($tokens, $index, $uses, $namespaceName); - } - - $indexDiff += \count($tokens) - $origSize; - } - - $this->reservedIdentifiersByLevel = []; - - if ($discoverSymbolsPhase) { - $this->setupUsesFromDiscoveredSymbols($uses, $namespaceName); - } - } - - if ([] !== $this->symbolsForImport) { // @phpstan-ignore-line notIdentical.alwaysFalse PHP started to complain, please fix me - if (null !== $lastUse) { - $atIndex = $lastUse->getEndIndex() + 1; - } elseif (0 !== $namespace->getEndIndex()) { - $atIndex = $namespace->getEndIndex() + 1; - } else { - $firstTokenIndex = $tokens->getNextMeaningfulToken($namespace->getScopeStartIndex()); - if (null !== $firstTokenIndex && $tokens[$firstTokenIndex]->isGivenKind(\T_DECLARE)) { - $atIndex = $tokens->getNextTokenOfKind($firstTokenIndex, [';']) + 1; - } else { - $atIndex = $namespace->getScopeStartIndex() + 1; - } - } - - // Insert all registered FQCNs - $this->createImportProcessor()->insertImports($tokens, $this->symbolsForImport, $atIndex); - - $this->symbolsForImport = []; - } - } - } - - /** - * @param _Uses $uses - */ - private function refreshUsesCache(array $uses): void - { - if ($this->cacheUsesLast === $uses) { - return; - } - - $this->cacheUsesLast = $uses; - - $this->cacheUseNameByShortNameLower = []; - $this->cacheUseShortNameByName = []; - $this->cacheUseShortNameByNormalizedName = []; - - foreach ($uses as $kind => $kindUses) { - foreach ($kindUses as $useLongName => $useShortName) { - $this->cacheUseNameByShortNameLower[$kind][strtolower($useShortName)] = $useLongName; - $this->cacheUseShortNameByName[$kind][$useLongName] = $useShortName; - - /** @var non-empty-string */ - $normalizedUseLongName = $this->normalizeFqcn($useLongName); - $this->cacheUseShortNameByNormalizedName[$kind][$normalizedUseLongName] = $useShortName; - } - } - } - - private function isReservedIdentifier(string $symbol): bool - { - if (str_contains($symbol, '\\')) { // optimization only - return false; - } - - if ((new TypeAnalysis($symbol))->isReservedType()) { - return true; - } - - foreach ($this->reservedIdentifiersByLevel as $reservedIdentifiers) { - if (isset($reservedIdentifiers[$symbol])) { - return true; - } - } - - return false; - } - - /** - * Resolve absolute or relative symbol to normalized FQCN. - * - * @param _ImportType $importKind - * @param _Uses $uses - * - * @return non-empty-string - */ - private function resolveSymbol(string $symbol, string $importKind, array $uses, string $namespaceName): string - { - if (str_starts_with($symbol, '\\')) { - return substr($symbol, 1); // @phpstan-ignore return.type - } - - if ($this->isReservedIdentifier($symbol)) { - return $symbol; // @phpstan-ignore return.type - } - - $this->refreshUsesCache($uses); - - $symbolArr = explode('\\', $symbol, 2); - $shortStartNameLower = strtolower($symbolArr[0]); - if (isset($this->cacheUseNameByShortNameLower[$importKind][$shortStartNameLower])) { - return $this->cacheUseNameByShortNameLower[$importKind][$shortStartNameLower].(isset($symbolArr[1]) ? '\\'.$symbolArr[1] : ''); - } - - return ('' !== $namespaceName ? $namespaceName.'\\' : '').$symbol; // @phpstan-ignore return.type - } - - /** - * Shorten normalized FQCN as much as possible. - * - * @param _ImportType $importKind - * @param _Uses $uses - */ - private function shortenSymbol(string $fqcn, string $importKind, array $uses, string $namespaceName): string - { - if ($this->isReservedIdentifier($fqcn)) { - return $fqcn; - } - - $this->refreshUsesCache($uses); - - $res = null; - - // try to shorten the name using namespace - $iMin = 0; - if (str_starts_with($fqcn, $namespaceName.'\\')) { - $tmpRes = substr($fqcn, \strlen($namespaceName) + 1); - if (!isset($this->cacheUseNameByShortNameLower[$importKind][strtolower(explode('\\', $tmpRes, 2)[0])]) && !$this->isReservedIdentifier($tmpRes)) { - $res = $tmpRes; - $iMin = substr_count($namespaceName, '\\') + 1; - } - } - - // try to shorten the name using uses - $tmp = $fqcn; - for ($i = substr_count($fqcn, '\\'); $i >= $iMin; --$i) { - if (isset($this->cacheUseShortNameByName[$importKind][$tmp])) { - $tmpRes = $this->cacheUseShortNameByName[$importKind][$tmp].substr($fqcn, \strlen($tmp)); - if (!$this->isReservedIdentifier($tmpRes)) { - $res = $tmpRes; - - break; - } - } - - if ($i > 0) { - \assert(false !== strrpos($tmp, '\\')); - $tmp = substr($tmp, 0, strrpos($tmp, '\\')); - } - } - - if (null === $res) { - $normalizedFqcn = $this->normalizeFqcn($fqcn); - $tmpRes = $this->cacheUseShortNameByNormalizedName[$importKind][$normalizedFqcn] ?? null; - if (null !== $tmpRes && !$this->isReservedIdentifier($tmpRes)) { - $res = $tmpRes; - } - } - - // shortening is not possible, add leading backslash if needed - if (null === $res) { - $res = $fqcn; - if ('' !== $namespaceName - || true === $this->configuration['leading_backslash_in_global_namespace'] - || isset($this->cacheUseNameByShortNameLower[$importKind][strtolower(explode('\\', $res, 2)[0])]) - ) { - $res = '\\'.$res; - } - } - - return $res; - } - - /** - * @param _Uses $uses - */ - private function setupUsesFromDiscoveredSymbols(array &$uses, string $namespaceName): void - { - foreach ($this->discoveredSymbols as $kind => $discoveredSymbols) { - $discoveredFqcnByShortNameLower = []; - - if ('' === $namespaceName) { - foreach ($discoveredSymbols as $symbol) { - if (!str_starts_with($symbol, '\\')) { - $shortStartName = explode('\\', ltrim($symbol, '\\'), 2)[0]; - \assert('' !== $shortStartName); - $shortStartNameLower = strtolower($shortStartName); - $discoveredFqcnByShortNameLower[$kind][$shortStartNameLower] = $this->resolveSymbol($shortStartName, $kind, $uses, $namespaceName); - } - } - } - - foreach ($uses[$kind] ?? [] as $useLongName => $useShortName) { - $discoveredFqcnByShortNameLower[$kind][strtolower($useShortName)] = $useLongName; - } - - $useByShortNameLower = []; - foreach ($uses[$kind] ?? [] as $useShortName) { - $useByShortNameLower[strtolower($useShortName)] = true; - } - - uasort($discoveredSymbols, static function ($a, $b) { - $res = str_starts_with($a, '\\') <=> str_starts_with($b, '\\'); - if (0 !== $res) { - return $res; - } - - return substr_count($a, '\\') <=> substr_count($b, '\\'); - }); - foreach ($discoveredSymbols as $symbol) { - while (true) { - $shortEndNameLower = strtolower(str_contains($symbol, '\\') ? substr($symbol, (int) strrpos($symbol, '\\') + 1) : $symbol); - if (!isset($discoveredFqcnByShortNameLower[$kind][$shortEndNameLower])) { - $shortStartNameLower = strtolower(explode('\\', ltrim($symbol, '\\'), 2)[0]); - if (str_starts_with($symbol, '\\') || ('' === $namespaceName && !isset($useByShortNameLower[$shortStartNameLower])) - || !str_contains($symbol, '\\') - ) { - $discoveredFqcnByShortNameLower[$kind][$shortEndNameLower] = $this->resolveSymbol($symbol, $kind, $uses, $namespaceName); - - break; - } - } - // else short name collision - keep unimported - - if (str_starts_with($symbol, '\\') || '' === $namespaceName || !str_contains($symbol, '\\')) { - break; - } - - \assert(false !== strrpos($symbol, '\\')); - $symbol = substr($symbol, 0, strrpos($symbol, '\\')); - } - } - - foreach ($uses[$kind] ?? [] as $useLongName => $useShortName) { - $discoveredLongName = $discoveredFqcnByShortNameLower[$kind][strtolower($useShortName)] ?? null; - if (strtolower($discoveredLongName) === strtolower($useLongName)) { - unset($discoveredFqcnByShortNameLower[$kind][strtolower($useShortName)]); - } - } - - foreach ($discoveredFqcnByShortNameLower[$kind] ?? [] as $fqcn) { - $shortenedName = ltrim($this->shortenSymbol($fqcn, $kind, [], $namespaceName), '\\'); - if (str_contains($shortenedName, '\\')) { // prevent importing non-namespaced names in global namespace - $shortEndName = str_contains($fqcn, '\\') ? substr($fqcn, (int) strrpos($fqcn, '\\') + 1) : $fqcn; - \assert('' !== $shortEndName); - $uses[$kind][$fqcn] = $shortEndName; - $this->symbolsForImport[$kind][$shortEndName] = $fqcn; - } - } - - if (isset($this->symbolsForImport[$kind])) { - ksort($this->symbolsForImport[$kind], \SORT_NATURAL); - } - } - } - - /** - * @param _Uses $uses - */ - private function fixFunction(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index, array $uses, string $namespaceName): void - { - $arguments = $functionsAnalyzer->getFunctionArguments($tokens, $index); - - foreach ($arguments as $i => $argument) { - $argument = $functionsAnalyzer->getFunctionArguments($tokens, $index)[$i]; - - if ($argument->hasTypeAnalysis()) { - $this->replaceByShortType($tokens, $argument->getTypeAnalysis(), $uses, $namespaceName); - } - } - - $returnTypeAnalysis = $functionsAnalyzer->getFunctionReturnType($tokens, $index); - - if (null !== $returnTypeAnalysis) { - $this->replaceByShortType($tokens, $returnTypeAnalysis, $uses, $namespaceName); - } - } - - /** - * @param _Uses $uses - */ - private function fixPhpDoc(Tokens $tokens, int $index, array $uses, string $namespaceName): void - { - $allowedTags = $this->configuration['phpdoc_tags']; - - if ([] === $allowedTags) { - return; - } - - $phpDoc = $tokens[$index]; - $phpDocContent = $phpDoc->getContent(); - $phpDocContentNew = Preg::replaceCallback('/([*{]\h*@)(\S+)(\h+)('.TypeExpression::REGEX_TYPES.')(?!(?!\})\S)/', function ($matches) use ($allowedTags, $uses, $namespaceName) { - if (!\in_array($matches[2], $allowedTags, true)) { - return $matches[0]; - } - - return $matches[1].$matches[2].$matches[3].$this->fixPhpDocType($matches[4], $uses, $namespaceName); - }, $phpDocContent); - - if (\in_array('see', $allowedTags, true)) { - $phpDocContentNew = Preg::replaceCallback( - '/([*{]\h*)@see(\h+)('.self::REGEX_CLASS.')(::(?:\$\w+|\w+\(\)))(?!(?!\})\S)/', - fn ($matches) => $matches[1].'@see'.$matches[2].$this->fixPhpDocType($matches[3], $uses, $namespaceName).$matches[5], - $phpDocContentNew, - ); - } - - if ($phpDocContentNew !== $phpDocContent) { - $tokens[$index] = new Token([\T_DOC_COMMENT, $phpDocContentNew]); - } - } - - /** - * @param _Uses $uses - */ - private function fixPhpDocType(string $type, array $uses, string $namespaceName): string - { - $typeExpression = new TypeExpression($type, null, []); - - $typeExpression = $typeExpression->mapTypes(function (TypeExpression $type) use ($uses, $namespaceName) { - $currentTypeValue = $type->toString(); - - if ($type->isCompositeType() || !Preg::match('/^'.self::REGEX_CLASS.'$/', $currentTypeValue) || \in_array($currentTypeValue, ['min', 'max'], true)) { - return $type; - } - - $shortTokens = $this->determineShortType($currentTypeValue, 'class', $uses, $namespaceName); - - if (null === $shortTokens) { - return $type; - } - - $newTypeValue = implode('', array_map( - static fn (Token $token) => $token->getContent(), - $shortTokens, - )); - - return $currentTypeValue === $newTypeValue - ? $type - : new TypeExpression($newTypeValue, null, []); - }); - - return $typeExpression->toString(); - } - - /** - * @param _Uses $uses - */ - private function fixExtendsImplements(Tokens $tokens, int $index, array $uses, string $namespaceName): void - { - // We handle `extends` and `implements` with similar logic, but we need to exit the loop under different conditions. - $isExtends = $tokens[$index]->isGivenKind(\T_EXTENDS); - $index = $tokens->getNextMeaningfulToken($index); - - $typeStartIndex = null; - $typeEndIndex = null; - - while (true) { - if ($tokens[$index]->equalsAny([',', '{', [\T_IMPLEMENTS]])) { - if (null !== $typeStartIndex) { - $index += $this->shortenClassIfPossible($tokens, $typeStartIndex, $typeEndIndex, $uses, $namespaceName); - } - $typeStartIndex = null; - - if ($tokens[$index]->equalsAny($isExtends ? [[\T_IMPLEMENTS], '{'] : ['{'])) { - break; - } - } else { - if (null === $typeStartIndex) { - $typeStartIndex = $index; - } - $typeEndIndex = $index; - } - - $index = $tokens->getNextMeaningfulToken($index); - } - } - - /** - * @param _Uses $uses - */ - private function fixCatch(Tokens $tokens, int $index, array $uses, string $namespaceName): void - { - $index = $tokens->getNextMeaningfulToken($index); // '(' - $index = $tokens->getNextMeaningfulToken($index); // first part of first exception class to be caught - - $typeStartIndex = null; - $typeEndIndex = null; - - while (true) { - if ($tokens[$index]->equalsAny([')', [\T_VARIABLE], [CT::T_TYPE_ALTERNATION]])) { - if (null === $typeStartIndex) { - break; - } - - $index += $this->shortenClassIfPossible($tokens, $typeStartIndex, $typeEndIndex, $uses, $namespaceName); - $typeStartIndex = null; - - if ($tokens[$index]->equals(')')) { - break; - } - } else { - if (null === $typeStartIndex) { - $typeStartIndex = $index; - } - $typeEndIndex = $index; - } - - $index = $tokens->getNextMeaningfulToken($index); - } - } - - /** - * @param _Uses $uses - */ - private function fixAttribute(Tokens $tokens, int $index, array $uses, string $namespaceName): void - { - $attributeAnalysis = AttributeAnalyzer::collectOne($tokens, $index); - - foreach ($attributeAnalysis->getAttributes() as $attribute) { - $index = $attribute['start']; - while ($tokens[$index]->isGivenKind([\T_STRING, \T_NS_SEPARATOR])) { - $index = $tokens->getPrevMeaningfulToken($index); - } - $this->fixNextName($tokens, $index, $uses, $namespaceName); - } - } - - /** - * @param _Uses $uses - */ - private function fixPrevName(Tokens $tokens, int $index, array $uses, string $namespaceName): void - { - $typeStartIndex = null; - $typeEndIndex = null; - - while (true) { - $index = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$index]->isObjectOperator()) { - break; - } - - if ($tokens[$index]->isGivenKind([\T_STRING, \T_NS_SEPARATOR])) { - $typeStartIndex = $index; - if (null === $typeEndIndex) { - $typeEndIndex = $index; - } - } else { - if (null !== $typeEndIndex) { - $this->shortenClassIfPossible($tokens, $typeStartIndex, $typeEndIndex, $uses, $namespaceName); - } - - break; - } - } - } - - /** - * @param _Uses $uses - */ - private function fixNextName(Tokens $tokens, int $index, array $uses, string $namespaceName): void - { - $typeStartIndex = null; - $typeEndIndex = null; - - while (true) { - $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind([\T_STRING, \T_NS_SEPARATOR])) { - if (null === $typeStartIndex) { - $typeStartIndex = $index; - } - $typeEndIndex = $index; - } else { - if (null !== $typeStartIndex) { - $this->shortenClassIfPossible($tokens, $typeStartIndex, $typeEndIndex, $uses, $namespaceName); - } - - break; - } - } - } - - /** - * @param _Uses $uses - */ - private function shortenClassIfPossible(Tokens $tokens, int $typeStartIndex, int $typeEndIndex, array $uses, string $namespaceName): int - { - /** @var non-empty-string $content */ - $content = $tokens->generatePartialCode($typeStartIndex, $typeEndIndex); - $newTokens = $this->determineShortType($content, 'class', $uses, $namespaceName); - if (null === $newTokens) { - return 0; - } - - $tokens->overrideRange($typeStartIndex, $typeEndIndex, $newTokens); - - return \count($newTokens) - ($typeEndIndex - $typeStartIndex) - 1; - } - - /** - * @param _Uses $uses - */ - private function replaceByShortType(Tokens $tokens, TypeAnalysis $type, array $uses, string $namespaceName): void - { - $typeStartIndex = $type->getStartIndex(); - - if ($tokens[$typeStartIndex]->isGivenKind(CT::T_NULLABLE_TYPE)) { - $typeStartIndex = $tokens->getNextMeaningfulToken($typeStartIndex); - } - - $types = $this->getTypes($tokens, $typeStartIndex, $type->getEndIndex()); - - foreach ($types as [$startIndex, $endIndex]) { - /** @var non-empty-string $content */ - $content = $tokens->generatePartialCode($startIndex, $endIndex); - $newTokens = $this->determineShortType($content, 'class', $uses, $namespaceName); - if (null !== $newTokens) { - $tokens->overrideRange($startIndex, $endIndex, $newTokens); - } - } - } - - /** - * Determines short type based on FQCN, current namespace and imports (`use` declarations). - * - * @param non-empty-string $typeName - * @param _ImportType $importKind - * @param _Uses $uses - * - * @return null|non-empty-list - */ - private function determineShortType(string $typeName, string $importKind, array $uses, string $namespaceName): ?array - { - if (null !== $this->discoveredSymbols) { - if (!$this->isReservedIdentifier($typeName)) { - $this->discoveredSymbols[$importKind][] = $typeName; - } - - return null; - } - - $fqcn = $this->resolveSymbol($typeName, $importKind, $uses, $namespaceName); - $shortenedType = $this->shortenSymbol($fqcn, $importKind, $uses, $namespaceName); - if ($shortenedType === $typeName) { - return null; - } - - return $this->namespacedStringToTokens($shortenedType); - } - - /** - * @return iterable - */ - private function getTypes(Tokens $tokens, int $index, int $endIndex): iterable - { - $skipNextYield = false; - $typeStartIndex = $typeEndIndex = null; - while (true) { - if ($tokens[$index]->isGivenKind(CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN)) { - $index = $tokens->getNextMeaningfulToken($index); - $typeStartIndex = $typeEndIndex = null; - - continue; - } - - if ( - $tokens[$index]->isGivenKind([CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE]) - || $index > $endIndex - ) { - if (!$skipNextYield && null !== $typeStartIndex) { - $origCount = \count($tokens); - - yield [$typeStartIndex, $typeEndIndex]; - - $endIndex += \count($tokens) - $origCount; - - // type tokens were possibly updated, restart type match - $skipNextYield = true; - $index = $typeEndIndex = $typeStartIndex; - } else { - $skipNextYield = false; - $index = $tokens->getNextMeaningfulToken($index); - $typeStartIndex = $typeEndIndex = null; - } - - if ($index > $endIndex) { - break; - } - - continue; - } - - if (null === $typeStartIndex) { - $typeStartIndex = $index; - } - $typeEndIndex = $index; - - $index = $tokens->getNextMeaningfulToken($index); - } - } - - /** - * @return non-empty-list - */ - private function namespacedStringToTokens(string $input): array - { - $tokens = []; - - if (str_starts_with($input, '\\')) { - $tokens[] = new Token([\T_NS_SEPARATOR, '\\']); - $input = substr($input, 1); - } - - $parts = explode('\\', $input); - foreach ($parts as $index => $part) { - $tokens[] = new Token([\T_STRING, $part]); - - if ($index !== \count($parts) - 1) { - $tokens[] = new Token([\T_NS_SEPARATOR, '\\']); - } - } - - return $tokens; - } - - private function normalizeFqcn(string $input): string - { - $backslashPosition = strrpos($input, '\\'); - if (false === $backslashPosition) { - return strtolower($input); - } - - $namespacePartEndPosition = $backslashPosition + 1; - $mainPart = substr($input, 0, $namespacePartEndPosition); - $lastPart = substr($input, $namespacePartEndPosition); - - return $mainPart.strtolower($lastPart); - } - - /** - * We need to create import processor dynamically (not in constructor), because actual whitespace configuration - * is set later, not when fixer's instance is created. - */ - private function createImportProcessor(): ImportProcessor - { - return new ImportProcessor($this->whitespacesConfig); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php deleted file mode 100644 index 1674869..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php +++ /dev/null @@ -1,733 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Import; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\ClassyAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Processor\ImportProcessor; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * import_classes?: bool|null, - * import_constants?: bool|null, - * import_functions?: bool|null, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * import_classes: bool|null, - * import_constants: bool|null, - * import_functions: bool|null, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class GlobalNamespaceImportFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private ImportProcessor $importProcessor; - - public function __construct() - { - parent::__construct(); - - $this->importProcessor = new ImportProcessor($this->whitespacesConfig); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Imports or fully qualifies global classes/functions/constants.', - [ - new CodeSample( - <<<'PHP' - true, 'import_constants' => true, 'import_functions' => true], - ), - new CodeSample( - <<<'PHP' - false, 'import_constants' => false, 'import_functions' => false], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoUnusedImportsFixer, OrderedImportsFixer, StatementIndentationFixer. - * Must run after NativeConstantInvocationFixer, NativeFunctionInvocationFixer, StringableForToStringFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_DOC_COMMENT, \T_NS_SEPARATOR, \T_USE]) - && $tokens->isTokenKindFound(\T_NAMESPACE) - && 1 === $tokens->countTokenKind(\T_NAMESPACE) - && $tokens->isMonolithicPhp(); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $namespaceAnalyses = $tokens->getNamespaceDeclarations(); - - if (1 !== \count($namespaceAnalyses) || $namespaceAnalyses[0]->isGlobalNamespace()) { - return; - } - - $useDeclarations = (new NamespaceUsesAnalyzer())->getDeclarationsFromTokens($tokens); - - $newImports = []; - - if (true === $this->configuration['import_constants']) { - $newImports['const'] = $this->importConstants($tokens, $useDeclarations); - } elseif (false === $this->configuration['import_constants']) { - $this->fullyQualifyConstants($tokens, $useDeclarations); - } - - if (true === $this->configuration['import_functions']) { - $newImports['function'] = $this->importFunctions($tokens, $useDeclarations); - } elseif (false === $this->configuration['import_functions']) { - $this->fullyQualifyFunctions($tokens, $useDeclarations); - } - - if (true === $this->configuration['import_classes']) { - $newImports['class'] = $this->importClasses($tokens, $useDeclarations); - } elseif (false === $this->configuration['import_classes']) { - $this->fullyQualifyClasses($tokens, $useDeclarations); - } - - if (\count($newImports) > 0) { - if (\count($useDeclarations) > 0) { - $useDeclaration = end($useDeclarations); - $atIndex = $useDeclaration->getEndIndex() + 1; - } else { - \assert(isset($tokens->getNamespaceDeclarations()[0])); - $namespace = $tokens->getNamespaceDeclarations()[0]; - $atIndex = $namespace->getEndIndex() + 1; - } - - $this->importProcessor->insertImports($tokens, $newImports, $atIndex); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('import_constants', 'Whether to import, not import or ignore global constants.')) - ->setDefault(null) - ->setAllowedTypes(['null', 'bool']) - ->getOption(), - (new FixerOptionBuilder('import_functions', 'Whether to import, not import or ignore global functions.')) - ->setDefault(null) - ->setAllowedTypes(['null', 'bool']) - ->getOption(), - (new FixerOptionBuilder('import_classes', 'Whether to import, not import or ignore global classes.')) - ->setDefault(true) - ->setAllowedTypes(['null', 'bool']) - ->getOption(), - ]); - } - - /** - * @param list $useDeclarations - * - * @return array - */ - private function importConstants(Tokens $tokens, array $useDeclarations): array - { - [$global, $other] = $this->filterUseDeclarations($useDeclarations, static fn (NamespaceUseAnalysis $declaration): bool => $declaration->isConstant(), true); - - // find namespaced const declarations (`const FOO = 1`) - // and add them to the not importable names (already used) - for ($index = 0, $count = $tokens->count(); $index < $count; ++$index) { - $token = $tokens[$index]; - - if ($token->isClassy()) { - $index = $tokens->getNextTokenOfKind($index, ['{']); - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if (!$token->isGivenKind(\T_CONST)) { - continue; - } - - $index = $tokens->getNextMeaningfulToken($index); - $other[$tokens[$index]->getContent()] = true; - } - - $analyzer = new TokensAnalyzer($tokens); - $indices = []; - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_STRING)) { - continue; - } - - $name = $token->getContent(); - - if (isset($other[$name])) { - continue; - } - - if (!$analyzer->isConstantInvocation($index)) { - continue; - } - - $nsSeparatorIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$nsSeparatorIndex]->isGivenKind(\T_NS_SEPARATOR)) { - if (!isset($global[$name])) { - // found an unqualified constant invocation - // add it to the not importable names (already used) - $other[$name] = true; - } - - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($nsSeparatorIndex); - if ($tokens[$prevIndex]->isGivenKind([CT::T_NAMESPACE_OPERATOR, \T_STRING])) { - continue; - } - - $indices[] = $index; - } - - return $this->prepareImports($tokens, $indices, $global, $other, true); - } - - /** - * @param list $useDeclarations - * - * @return array - */ - private function importFunctions(Tokens $tokens, array $useDeclarations): array - { - [$global, $other] = $this->filterUseDeclarations($useDeclarations, static fn (NamespaceUseAnalysis $declaration): bool => $declaration->isFunction(), false); - - // find function declarations - // and add them to the not importable names (already used) - foreach ($this->findFunctionDeclarations($tokens, 0, $tokens->count() - 1) as $name) { - $other[strtolower($name)] = true; - } - - $analyzer = new FunctionsAnalyzer(); - $indices = []; - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_STRING)) { - continue; - } - - $name = strtolower($token->getContent()); - - if (isset($other[$name])) { - continue; - } - - if (!$analyzer->isGlobalFunctionUsage($tokens, $index)) { - continue; - } - - $nsSeparatorIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$nsSeparatorIndex]->isGivenKind(\T_NS_SEPARATOR)) { - if (!isset($global[$name])) { - $other[$name] = true; - } - - continue; - } - - $indices[] = $index; - } - - return $this->prepareImports($tokens, $indices, $global, $other, false); - } - - /** - * @param list $useDeclarations - * - * @return array - */ - private function importClasses(Tokens $tokens, array $useDeclarations): array - { - [$global, $other] = $this->filterUseDeclarations($useDeclarations, static fn (NamespaceUseAnalysis $declaration): bool => $declaration->isClass(), false); - - /** @var array $docBlocks */ - $docBlocks = []; - - // find class declarations and class usages in docblocks - // and add them to the not importable names (already used) - for ($index = 0, $count = $tokens->count(); $index < $count; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_DOC_COMMENT)) { - $docBlocks[$index] = new DocBlock($token->getContent()); - - $this->traverseDocBlockTypes($docBlocks[$index], static function (string $type) use ($global, &$other): void { - if (str_contains($type, '\\')) { - return; - } - - $name = strtolower($type); - - if (!isset($global[$name])) { - $other[$name] = true; - } - }); - } - - if (!$token->isClassy()) { - continue; - } - - $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind(\T_STRING)) { - $other[strtolower($tokens[$index]->getContent())] = true; - } - } - - $analyzer = new ClassyAnalyzer(); - $indices = []; - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_STRING)) { - continue; - } - - $name = strtolower($token->getContent()); - - if (isset($other[$name])) { - continue; - } - - if (!$analyzer->isClassyInvocation($tokens, $index)) { - continue; - } - - $nsSeparatorIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$nsSeparatorIndex]->isGivenKind(\T_NS_SEPARATOR)) { - if (!isset($global[$name])) { - $other[$name] = true; - } - - continue; - } - - if ($tokens[$tokens->getPrevMeaningfulToken($nsSeparatorIndex)]->isGivenKind([CT::T_NAMESPACE_OPERATOR, \T_STRING])) { - continue; - } - - $indices[] = $index; - } - - $imports = []; - - foreach ($docBlocks as $index => $docBlock) { - $changed = $this->traverseDocBlockTypes($docBlock, static function (string $type) use ($global, $other, &$imports): string { - if ('\\' !== $type[0]) { - return $type; - } - - /** @var non-empty-string $name */ - $name = substr($type, 1); - - $checkName = strtolower($name); - - if (str_contains($checkName, '\\') || isset($other[$checkName])) { - return $type; - } - - if (isset($global[$checkName])) { - return \is_string($global[$checkName]) ? $global[$checkName] : $name; - } - - $imports[$checkName] = $name; - - return $name; - }); - - if ($changed) { - $tokens[$index] = new Token([\T_DOC_COMMENT, $docBlock->getContent()]); - } - } - - return array_merge($imports, $this->prepareImports($tokens, $indices, $global, $other, false)); - } - - /** - * Removes the leading slash at the given indices (when the name is not already used). - * - * @param list $indices - * @param array $global - * @param array $other - * - * @return array array keys contain the names that must be imported - */ - private function prepareImports(Tokens $tokens, array $indices, array $global, array $other, bool $caseSensitive): array - { - $imports = []; - - foreach ($indices as $index) { - /** @var non-empty-string $name */ - $name = $tokens[$index]->getContent(); - $checkName = $caseSensitive ? $name : strtolower($name); - - if (isset($other[$checkName])) { - continue; - } - - if (!isset($global[$checkName])) { - $imports[$checkName] = $name; - } elseif (\is_string($global[$checkName])) { - $tokens[$index] = new Token([\T_STRING, $global[$checkName]]); - } - - $tokens->clearAt($tokens->getPrevMeaningfulToken($index)); - } - - return $imports; - } - - /** - * @param list $useDeclarations - */ - private function fullyQualifyConstants(Tokens $tokens, array $useDeclarations): void - { - if (!$tokens->isTokenKindFound(CT::T_CONST_IMPORT)) { - return; - } - - [$global] = $this->filterUseDeclarations($useDeclarations, static fn (NamespaceUseAnalysis $declaration): bool => $declaration->isConstant() && !$declaration->isAliased(), true); - - if ([] === $global) { - return; - } - - $analyzer = new TokensAnalyzer($tokens); - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_STRING)) { - continue; - } - - if (!isset($global[$token->getContent()])) { - continue; - } - - if ($tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind(\T_NS_SEPARATOR)) { - continue; - } - - if (!$analyzer->isConstantInvocation($index)) { - continue; - } - - $tokens->insertAt($index, new Token([\T_NS_SEPARATOR, '\\'])); - } - } - - /** - * @param list $useDeclarations - */ - private function fullyQualifyFunctions(Tokens $tokens, array $useDeclarations): void - { - if (!$tokens->isTokenKindFound(CT::T_FUNCTION_IMPORT)) { - return; - } - - [$global] = $this->filterUseDeclarations($useDeclarations, static fn (NamespaceUseAnalysis $declaration): bool => $declaration->isFunction() && !$declaration->isAliased(), false); - - if ([] === $global) { - return; - } - - $analyzer = new FunctionsAnalyzer(); - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_STRING)) { - continue; - } - - if (!isset($global[strtolower($token->getContent())])) { - continue; - } - - if ($tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind(\T_NS_SEPARATOR)) { - continue; - } - - if (!$analyzer->isGlobalFunctionUsage($tokens, $index)) { - continue; - } - - $tokens->insertAt($index, new Token([\T_NS_SEPARATOR, '\\'])); - } - } - - /** - * @param list $useDeclarations - */ - private function fullyQualifyClasses(Tokens $tokens, array $useDeclarations): void - { - if (!$tokens->isTokenKindFound(\T_USE)) { - return; - } - - [$global] = $this->filterUseDeclarations($useDeclarations, static fn (NamespaceUseAnalysis $declaration): bool => $declaration->isClass() && !$declaration->isAliased(), false); - - if ([] === $global) { - return; - } - - $analyzer = new ClassyAnalyzer(); - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_DOC_COMMENT)) { - $doc = new DocBlock($token->getContent()); - - $changed = $this->traverseDocBlockTypes($doc, static function (string $type) use ($global): string { - if (!isset($global[strtolower($type)])) { - return $type; - } - - return '\\'.$type; - }); - - if ($changed) { - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - - continue; - } - - if (!$token->isGivenKind(\T_STRING)) { - continue; - } - - if (!isset($global[strtolower($token->getContent())])) { - continue; - } - - if ($tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind(\T_NS_SEPARATOR)) { - continue; - } - - if (!$analyzer->isClassyInvocation($tokens, $index)) { - continue; - } - - $tokens->insertAt($index, new Token([\T_NS_SEPARATOR, '\\'])); - } - } - - /** - * @param list $declarations - * - * @return array{0: array, 1: array} - */ - private function filterUseDeclarations(array $declarations, callable $callback, bool $caseSensitive): array - { - $global = []; - $other = []; - - foreach ($declarations as $declaration) { - if (!$callback($declaration)) { - continue; - } - - $fullName = ltrim($declaration->getFullName(), '\\'); - - if (str_contains($fullName, '\\')) { - $name = $caseSensitive ? $declaration->getShortName() : strtolower($declaration->getShortName()); - $other[$name] = true; - - continue; - } - - $checkName = $caseSensitive ? $fullName : strtolower($fullName); - $alias = $declaration->getShortName(); - $global[$checkName] = $alias === $fullName ? true : $alias; - } - - return [$global, $other]; - } - - /** - * @return iterable - */ - private function findFunctionDeclarations(Tokens $tokens, int $start, int $end): iterable - { - for ($index = $start; $index <= $end; ++$index) { - $token = $tokens[$index]; - - if ($token->isClassy()) { - $classStart = $tokens->getNextTokenOfKind($index, ['{']); - $classEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $classStart); - - for ($index = $classStart; $index <= $classEnd; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - continue; - } - - $methodStart = $tokens->getNextTokenOfKind($index, ['{', ';']); - - if ($tokens[$methodStart]->equals(';')) { - $index = $methodStart; - - continue; - } - - $methodEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $methodStart); - - foreach ($this->findFunctionDeclarations($tokens, $methodStart, $methodEnd) as $function) { - yield $function; - } - - $index = $methodEnd; - } - - continue; - } - - if (!$token->isGivenKind(\T_FUNCTION)) { - continue; - } - - $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind(CT::T_RETURN_REF)) { - $index = $tokens->getNextMeaningfulToken($index); - } - - if ($tokens[$index]->isGivenKind(\T_STRING)) { - yield $tokens[$index]->getContent(); - } - } - } - - private function traverseDocBlockTypes(DocBlock $doc, callable $callback): bool - { - $annotations = $doc->getAnnotationsOfType(Annotation::TAGS_WITH_TYPES); - - if (0 === \count($annotations)) { - return false; - } - - $changed = false; - - foreach ($annotations as $annotation) { - $types = $annotation->getTypes(); - - $new = array_map(static function (string $fullType) use ($callback): string { - Preg::matchAll('/[\\\\\w]+(?![\\\\\w:])/', $fullType, $matches, \PREG_OFFSET_CAPTURE); - - foreach (array_reverse($matches[0]) as [$type, $offset]) { - $newType = $callback($type); - - if (null !== $newType && $type !== $newType) { - $fullType = substr_replace($fullType, $newType, $offset, \strlen($type)); - } - } - - return $fullType; - }, $types); - - if ($types !== $new) { - $annotation->setTypes($new); - $changed = true; - } - } - - return $changed; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/GroupImportFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/GroupImportFixer.php deleted file mode 100644 index 5c6e102..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/GroupImportFixer.php +++ /dev/null @@ -1,371 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Import; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Utils; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * group_types?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * group_types: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Volodymyr Kupriienko - * @author Greg Korba - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class GroupImportFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** @internal */ - public const GROUP_CLASSY = 'classy'; - - /** @internal */ - public const GROUP_CONSTANTS = 'constants'; - - /** @internal */ - public const GROUP_FUNCTIONS = 'functions'; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There MUST be group use for the same namespaces.', - [ - new CodeSample( - " [self::GROUP_CLASSY]], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_USE); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $allowedTypes = [self::GROUP_CLASSY, self::GROUP_FUNCTIONS, self::GROUP_CONSTANTS]; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('group_types', 'Defines the order of import types.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([static function (array $types) use ($allowedTypes): bool { - foreach ($types as $type) { - if (!\in_array($type, $allowedTypes, true)) { - throw new InvalidOptionsException( - \sprintf( - 'Invalid group type: %s, allowed types: %s.', - $type, - Utils::naturalLanguageJoin($allowedTypes), - ), - ); - } - } - - return true; - }]) - ->setDefault($allowedTypes) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $useWithSameNamespaces = $this->getSameNamespacesByType($tokens); - - if ([] === $useWithSameNamespaces) { - return; - } - - $typeMap = [ - NamespaceUseAnalysis::TYPE_CLASS => self::GROUP_CLASSY, - NamespaceUseAnalysis::TYPE_FUNCTION => self::GROUP_FUNCTIONS, - NamespaceUseAnalysis::TYPE_CONSTANT => self::GROUP_CONSTANTS, - ]; - - // As a first step we need to remove all the use statements for the enabled import types. - // We can't add new group imports yet, because we need to operate on previously determined token indices for all types. - foreach ($useWithSameNamespaces as $type => $uses) { - if (!\in_array($typeMap[$type], $this->configuration['group_types'], true)) { - continue; - } - - $this->removeSingleUseStatements($uses, $tokens); - } - - foreach ($useWithSameNamespaces as $type => $uses) { - if (!\in_array($typeMap[$type], $this->configuration['group_types'], true)) { - continue; - } - - $this->addGroupUseStatements($uses, $tokens); - } - } - - /** - * Gets namespace use analyzers with same namespaces. - * - * @return array> - */ - private function getSameNamespacesByType(Tokens $tokens): array - { - $useDeclarations = (new NamespaceUsesAnalyzer())->getDeclarationsFromTokens($tokens); - - if (0 === \count($useDeclarations)) { - return []; - } - - $allNamespaceAndType = array_map( - fn (NamespaceUseAnalysis $useDeclaration): string => $this->getNamespaceNameWithSlash($useDeclaration).$useDeclaration->getType(), - $useDeclarations, - ); - - $sameNamespaces = array_filter(array_count_values($allNamespaceAndType), static fn (int $count): bool => $count > 1); - $sameNamespaces = array_keys($sameNamespaces); - - $sameNamespaceAnalysis = array_filter($useDeclarations, function (NamespaceUseAnalysis $useDeclaration) use ($sameNamespaces): bool { - $namespaceNameAndType = $this->getNamespaceNameWithSlash($useDeclaration).$useDeclaration->getType(); - - return \in_array($namespaceNameAndType, $sameNamespaces, true); - }); - - usort($sameNamespaceAnalysis, function (NamespaceUseAnalysis $a, NamespaceUseAnalysis $b): int { - $namespaceA = $this->getNamespaceNameWithSlash($a); - $namespaceB = $this->getNamespaceNameWithSlash($b); - - $namespaceDifference = \strlen($namespaceA) <=> \strlen($namespaceB); - - return 0 !== $namespaceDifference ? $namespaceDifference : $a->getFullName() <=> $b->getFullName(); - }); - - $sameNamespaceAnalysisByType = []; - foreach ($sameNamespaceAnalysis as $analysis) { - $sameNamespaceAnalysisByType[$analysis->getType()][] = $analysis; - } - - ksort($sameNamespaceAnalysisByType); - - return $sameNamespaceAnalysisByType; - } - - /** - * @param list $statements - */ - private function removeSingleUseStatements(array $statements, Tokens $tokens): void - { - foreach ($statements as $useDeclaration) { - $index = $useDeclaration->getStartIndex(); - $endIndex = $useDeclaration->getEndIndex(); - - $useStatementTokens = [\T_USE, \T_WHITESPACE, \T_STRING, \T_NS_SEPARATOR, \T_AS, CT::T_CONST_IMPORT, CT::T_FUNCTION_IMPORT]; - - while ($index !== $endIndex) { - if ($tokens[$index]->isGivenKind($useStatementTokens)) { - $tokens->clearAt($index); - } - - ++$index; - } - - if (isset($tokens[$index]) && $tokens[$index]->equals(';')) { - $tokens->clearAt($index); - } - - ++$index; - - if (isset($tokens[$index]) && $tokens[$index]->isGivenKind(\T_WHITESPACE)) { - $tokens->clearAt($index); - } - } - } - - /** - * @param non-empty-list $statements - */ - private function addGroupUseStatements(array $statements, Tokens $tokens): void - { - $currentUseDeclaration = null; - $insertIndex = $statements[0]->getStartIndex(); - - // If group import was inserted in place of removed imports, it may have more tokens than before, - // and indices stored in imports of another type can be out-of-sync, and can point in the middle of group import. - // Let's move the pointer to the closest empty token (erased single import). - if (null !== $tokens[$insertIndex]->getId() || '' !== $tokens[$insertIndex]->getContent()) { - do { - ++$insertIndex; - } while (null !== $tokens[$insertIndex]->getId() || '' !== $tokens[$insertIndex]->getContent()); - } - - foreach ($statements as $index => $useDeclaration) { - if ($this->areDeclarationsDifferent($currentUseDeclaration, $useDeclaration)) { - $currentUseDeclaration = $useDeclaration; - $insertIndex += $this->createNewGroup( - $tokens, - $insertIndex, - $useDeclaration, - rtrim($this->getNamespaceNameWithSlash($currentUseDeclaration), '\\'), - ); - } else { - $newTokens = [ - new Token(','), - new Token([\T_WHITESPACE, ' ']), - ]; - - if ($useDeclaration->isAliased()) { - $tokens->insertAt($insertIndex, $newTokens); - $insertIndex += \count($newTokens); - $newTokens = []; - - $insertIndex += $this->insertToGroupUseWithAlias($tokens, $insertIndex, $useDeclaration); - } - - $newTokens[] = new Token([\T_STRING, $useDeclaration->getShortName()]); - - if (!isset($statements[$index + 1]) || $this->areDeclarationsDifferent($currentUseDeclaration, $statements[$index + 1])) { - $newTokens[] = new Token([CT::T_GROUP_IMPORT_BRACE_CLOSE, '}']); - $newTokens[] = new Token(';'); - $newTokens[] = new Token([\T_WHITESPACE, "\n"]); - } - - $tokens->insertAt($insertIndex, $newTokens); - $insertIndex += \count($newTokens); - } - } - } - - private function getNamespaceNameWithSlash(NamespaceUseAnalysis $useDeclaration): string - { - $position = strrpos($useDeclaration->getFullName(), '\\'); - if (false === $position || 0 === $position) { - return $useDeclaration->getFullName(); - } - - return substr($useDeclaration->getFullName(), 0, $position + 1); - } - - /** - * Insert use with alias to the group. - */ - private function insertToGroupUseWithAlias(Tokens $tokens, int $insertIndex, NamespaceUseAnalysis $useDeclaration): int - { - $newTokens = [ - new Token([\T_STRING, substr($useDeclaration->getFullName(), (int) strripos($useDeclaration->getFullName(), '\\') + 1)]), - new Token([\T_WHITESPACE, ' ']), - new Token([\T_AS, 'as']), - new Token([\T_WHITESPACE, ' ']), - ]; - - $tokens->insertAt($insertIndex, $newTokens); - - return \count($newTokens); - } - - /** - * Creates new use statement group. - */ - private function createNewGroup(Tokens $tokens, int $insertIndex, NamespaceUseAnalysis $useDeclaration, string $currentNamespace): int - { - $insertedTokens = 0; - - $newTokens = [ - new Token([\T_USE, 'use']), - new Token([\T_WHITESPACE, ' ']), - ]; - - if ($useDeclaration->isFunction() || $useDeclaration->isConstant()) { - $importStatementParams = $useDeclaration->isFunction() - ? [CT::T_FUNCTION_IMPORT, 'function'] - : [CT::T_CONST_IMPORT, 'const']; - - $newTokens[] = new Token($importStatementParams); - $newTokens[] = new Token([\T_WHITESPACE, ' ']); - } - - $namespaceParts = explode('\\', $currentNamespace); - - foreach ($namespaceParts as $part) { - $newTokens[] = new Token([\T_STRING, $part]); - $newTokens[] = new Token([\T_NS_SEPARATOR, '\\']); - } - - $newTokens[] = new Token([CT::T_GROUP_IMPORT_BRACE_OPEN, '{']); - - $newTokensCount = \count($newTokens); - $tokens->insertAt($insertIndex, $newTokens); - $insertedTokens += $newTokensCount; - - $insertIndex += $newTokensCount; - - if ($useDeclaration->isAliased()) { - $inserted = $this->insertToGroupUseWithAlias($tokens, $insertIndex + 1, $useDeclaration) + 1; - $insertedTokens += $inserted; - $insertIndex += $inserted; - } - - $tokens->insertAt($insertIndex, new Token([\T_STRING, $useDeclaration->getShortName()])); - - return ++$insertedTokens; - } - - /** - * Check if namespace use analyses are different. - */ - private function areDeclarationsDifferent(?NamespaceUseAnalysis $analysis1, ?NamespaceUseAnalysis $analysis2): bool - { - if (null === $analysis1 || null === $analysis2) { - return true; - } - - $namespaceName1 = $this->getNamespaceNameWithSlash($analysis1); - $namespaceName2 = $this->getNamespaceNameWithSlash($analysis2); - - return $namespaceName1 !== $namespaceName2 || $analysis1->getType() !== $analysis2->getType(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php deleted file mode 100644 index 97ae242..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php +++ /dev/null @@ -1,92 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Import; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Carlos Cirello - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoLeadingImportSlashFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Remove leading slashes in `use` clauses.', - [new CodeSample("isTokenKindFound(\T_USE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $usesIndices = $tokensAnalyzer->getImportUseIndexes(); - - foreach ($usesIndices as $idx) { - $nextTokenIdx = $tokens->getNextMeaningfulToken($idx); - $nextToken = $tokens[$nextTokenIdx]; - - if ($nextToken->isGivenKind(\T_NS_SEPARATOR)) { - $this->removeLeadingImportSlash($tokens, $nextTokenIdx); - } elseif ($nextToken->isGivenKind([CT::T_FUNCTION_IMPORT, CT::T_CONST_IMPORT])) { - $nextTokenIdx = $tokens->getNextMeaningfulToken($nextTokenIdx); - if ($tokens[$nextTokenIdx]->isGivenKind(\T_NS_SEPARATOR)) { - $this->removeLeadingImportSlash($tokens, $nextTokenIdx); - } - } - } - } - - private function removeLeadingImportSlash(Tokens $tokens, int $index): void - { - $previousIndex = $tokens->getPrevNonWhitespace($index); - - if ( - $previousIndex < $index - 1 - || $tokens[$previousIndex]->isComment() - ) { - $tokens->clearAt($index); - - return; - } - - $tokens[$index] = new Token([\T_WHITESPACE, ' ']); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnneededImportAliasFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnneededImportAliasFixer.php deleted file mode 100644 index 6dac26a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnneededImportAliasFixer.php +++ /dev/null @@ -1,92 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Import; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUnneededImportAliasFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Imports should not be aliased as the same name.', - [new CodeSample("isAllTokenKindsFound([\T_USE, \T_AS]); - } - - /** - * {@inheritdoc} - * - * Must run before NoSinglelineWhitespaceBeforeSemicolonsFixer. - * Must run after PhpUnitNamespacedFixer. - */ - public function getPriority(): int - { - return 1; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 1; 0 <= $index; --$index) { - if (!$tokens[$index]->isGivenKind(\T_AS)) { - continue; - } - - $aliasIndex = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$aliasIndex]->isGivenKind(\T_STRING)) { - continue; - } - - $importIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$importIndex]->isGivenKind(\T_STRING)) { - continue; - } - - if ($tokens[$importIndex]->getContent() !== $tokens[$aliasIndex]->getContent()) { - continue; - } - - do { - $importIndex = $tokens->getPrevMeaningfulToken($importIndex); - } while ($tokens[$importIndex]->isGivenKind([\T_NS_SEPARATOR, \T_STRING, \T_AS]) || $tokens[$importIndex]->equals(',')); - - if ($tokens[$importIndex]->isGivenKind([CT::T_FUNCTION_IMPORT, CT::T_CONST_IMPORT])) { - $importIndex = $tokens->getPrevMeaningfulToken($importIndex); - } - - if (!$tokens[$importIndex]->isGivenKind([\T_USE, CT::T_GROUP_IMPORT_BRACE_OPEN])) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($aliasIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php deleted file mode 100644 index 3b855c8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php +++ /dev/null @@ -1,456 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Import; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\GotoLabelAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUnusedImportsFixer extends AbstractFixer -{ - private const TOKENS_NOT_BEFORE_FUNCTION_CALL = [\T_NEW, FCT::T_ATTRIBUTE]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Unused `use` statements must be removed.', - [new CodeSample("isTokenKindFound(\T_USE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $useDeclarations = (new NamespaceUsesAnalyzer())->getDeclarationsFromTokens($tokens, true); - - if (0 === \count($useDeclarations)) { - return; - } - - foreach ($tokens->getNamespaceDeclarations() as $namespace) { - $currentNamespaceUseDeclarations = []; - $currentNamespaceUseDeclarationIndices = []; - - foreach ($useDeclarations as $useDeclaration) { - if ($useDeclaration->getStartIndex() >= $namespace->getScopeStartIndex() && $useDeclaration->getEndIndex() <= $namespace->getScopeEndIndex()) { - $currentNamespaceUseDeclarations[] = $useDeclaration; - $currentNamespaceUseDeclarationIndices[$useDeclaration->getStartIndex()] = $useDeclaration->getEndIndex(); - } - } - - foreach ($currentNamespaceUseDeclarations as $useDeclaration) { - if (!$this->isImportUsed($tokens, $namespace, $useDeclaration, $currentNamespaceUseDeclarationIndices)) { - $this->removeUseDeclaration($tokens, $useDeclaration); - } - } - - $this->removeUsesInSameNamespace($tokens, $currentNamespaceUseDeclarations, $namespace); - } - } - - /** - * @param array $ignoredIndices indices of the use statements themselves that should not be checked as being "used" - */ - private function isImportUsed(Tokens $tokens, NamespaceAnalysis $namespace, NamespaceUseAnalysis $import, array $ignoredIndices): bool - { - $analyzer = new TokensAnalyzer($tokens); - $gotoLabelAnalyzer = new GotoLabelAnalyzer(); - - $namespaceEndIndex = $namespace->getScopeEndIndex(); - $inAttribute = false; - - for ($index = $namespace->getScopeStartIndex(); $index <= $namespaceEndIndex; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(FCT::T_ATTRIBUTE)) { - $inAttribute = true; - - continue; - } - - if ($token->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $inAttribute = false; - - continue; - } - - if (isset($ignoredIndices[$index])) { - $index = $ignoredIndices[$index]; - - continue; - } - - if ($token->isGivenKind(\T_STRING)) { - if (0 !== strcasecmp($import->getShortName(), $token->getContent())) { - continue; - } - - $prevMeaningfulToken = $tokens[$tokens->getPrevMeaningfulToken($index)]; - - if ($prevMeaningfulToken->isGivenKind(\T_NAMESPACE)) { - $index = $tokens->getNextTokenOfKind($index, [';', '{', [\T_CLOSE_TAG]]); - - continue; - } - - if ( - $prevMeaningfulToken->isGivenKind([\T_NS_SEPARATOR, \T_FUNCTION, \T_DOUBLE_COLON]) - || $prevMeaningfulToken->isObjectOperator() - ) { - continue; - } - - if ($prevMeaningfulToken->isGivenKind(\T_CONST) && $tokens[$tokens->getNextMeaningfulToken($index)]->equals('=')) { - continue; - } - - if ($inAttribute) { - return true; - } - - $nextMeaningfulIndex = $tokens->getNextMeaningfulToken($index); - - if ($gotoLabelAnalyzer->belongsToGoToLabel($tokens, $nextMeaningfulIndex)) { - continue; - } - - $nextMeaningfulToken = $tokens[$nextMeaningfulIndex]; - - if ($analyzer->isConstantInvocation($index)) { - $type = NamespaceUseAnalysis::TYPE_CONSTANT; - } elseif ($nextMeaningfulToken->equals('(') && !$prevMeaningfulToken->isGivenKind(self::TOKENS_NOT_BEFORE_FUNCTION_CALL)) { - $type = NamespaceUseAnalysis::TYPE_FUNCTION; - } else { - $type = NamespaceUseAnalysis::TYPE_CLASS; - } - - if ($import->getType() === $type) { - return true; - } - - continue; - } - - if ($token->isComment() - && Preg::match( - '/(?getShortName().'(?![[:alnum:]_])/i', - $token->getContent(), - ) - ) { - return true; - } - } - - return false; - } - - private function removeUseDeclaration( - Tokens $tokens, - NamespaceUseAnalysis $useDeclaration, - bool $forceCompleteRemoval = false - ): void { - [$start, $end] = ($useDeclaration->isInMulti() && !$forceCompleteRemoval) - ? [$useDeclaration->getChunkStartIndex(), $useDeclaration->getChunkEndIndex()] - : [$useDeclaration->getStartIndex(), $useDeclaration->getEndIndex()]; - $loopStartIndex = $useDeclaration->isInMulti() || $forceCompleteRemoval ? $end : $end - 1; - - for ($index = $loopStartIndex; $index >= $start; --$index) { - if ($tokens[$index]->isComment()) { - continue; - } - - if (!$tokens[$index]->isWhitespace() || !str_contains($tokens[$index]->getContent(), "\n")) { - $tokens->clearAt($index); - - continue; - } - - // when multi line white space keep the line feed if the previous token is a comment - $prevIndex = $tokens->getPrevNonWhitespace($index); - - if ($tokens[$prevIndex]->isComment()) { - $content = $tokens[$index]->getContent(); - $tokens[$index] = new Token([\T_WHITESPACE, substr($content, strrpos($content, "\n"))]); // preserve indent only - } else { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } - - // For multi-use import statements the tokens containing FQN were already removed in the loop above. - // We need to clean up tokens around the ex-chunk to keep the correct syntax and achieve proper formatting. - if (!$forceCompleteRemoval && $useDeclaration->isInMulti()) { - $this->cleanUpAfterImportChunkRemoval($tokens, $useDeclaration); - - return; - } - - if ($tokens[$useDeclaration->getEndIndex()]->equals(';')) { // do not remove `? >` - $tokens->clearAt($useDeclaration->getEndIndex()); - } - - $this->cleanUpSurroundingNewLines($tokens, $useDeclaration); - } - - /** - * @param list $useDeclarations - */ - private function removeUsesInSameNamespace(Tokens $tokens, array $useDeclarations, NamespaceAnalysis $namespaceDeclaration): void - { - $namespace = $namespaceDeclaration->getFullName(); - $nsLength = \strlen($namespace.'\\'); - - foreach ($useDeclarations as $useDeclaration) { - if ($useDeclaration->isAliased()) { - continue; - } - - $useDeclarationFullName = ltrim($useDeclaration->getFullName(), '\\'); - - if (!str_starts_with($useDeclarationFullName, $namespace.'\\')) { - continue; - } - - $partName = substr($useDeclarationFullName, $nsLength); - - if (!str_contains($partName, '\\')) { - $this->removeUseDeclaration($tokens, $useDeclaration); - } - } - } - - private function cleanUpAfterImportChunkRemoval(Tokens $tokens, NamespaceUseAnalysis $useDeclaration): void - { - $beforeChunkIndex = $tokens->getPrevMeaningfulToken($useDeclaration->getChunkStartIndex()); - $afterChunkIndex = $tokens->getNextMeaningfulToken($useDeclaration->getChunkEndIndex()); - $hasNonEmptyTokenBefore = $this->scanForNonEmptyTokensUntilNewLineFound( - $tokens, - $afterChunkIndex, - -1, - ); - $hasNonEmptyTokenAfter = $this->scanForNonEmptyTokensUntilNewLineFound( - $tokens, - $afterChunkIndex, - 1, - ); - - // We don't want to merge consequent new lines with indentation (leading to e.g. `\n \n `), - // so it's safe to merge whitespace only if there is any non-empty token before or after the chunk. - $mergingSurroundingWhitespaceIsSafe = $hasNonEmptyTokenBefore[1] || $hasNonEmptyTokenAfter[1]; - $clearToken = static function (int $index) use ($tokens, $mergingSurroundingWhitespaceIsSafe): void { - if ($mergingSurroundingWhitespaceIsSafe) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } else { - $tokens->clearAt($index); - } - }; - - if ($tokens[$afterChunkIndex]->equals(',')) { - $clearToken($afterChunkIndex); - } elseif ($tokens[$beforeChunkIndex]->equals(',')) { - $clearToken($beforeChunkIndex); - } - - // Ensure there's a single space where applicable, otherwise no space (before comma, before closing brace) - for ($index = $beforeChunkIndex; $index <= $afterChunkIndex; ++$index) { - if (null === $tokens[$index]->getId() || !$tokens[$index]->isWhitespace(' ')) { - continue; - } - - $nextTokenIndex = $tokens->getNextMeaningfulToken($index); - if ( - $tokens[$nextTokenIndex]->equals(',') - || $tokens[$nextTokenIndex]->equals(';') - || $tokens[$nextTokenIndex]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE) - ) { - $tokens->clearAt($index); - } else { - $tokens[$index] = new Token([\T_WHITESPACE, ' ']); - } - - $prevTokenIndex = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$prevTokenIndex]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_OPEN)) { - $tokens->clearAt($index); - } - } - - $this->removeLineIfEmpty($tokens, $useDeclaration); - $this->removeImportStatementIfEmpty($tokens, $useDeclaration); - } - - private function cleanUpSurroundingNewLines(Tokens $tokens, NamespaceUseAnalysis $useDeclaration): void - { - $prevIndex = $useDeclaration->getStartIndex() - 1; - $prevToken = $tokens[$prevIndex]; - - if ($prevToken->isWhitespace()) { - $content = rtrim($prevToken->getContent(), " \t"); - - $tokens->ensureWhitespaceAtIndex($prevIndex, 0, $content); - - $prevToken = $tokens[$prevIndex]; - } - - if (!isset($tokens[$useDeclaration->getEndIndex() + 1])) { - return; - } - - $nextIndex = $tokens->getNonEmptySibling($useDeclaration->getEndIndex(), 1); - - if (null === $nextIndex) { - return; - } - - $nextToken = $tokens[$nextIndex]; - - if ($nextToken->isWhitespace()) { - $content = Preg::replace( - "#^\r\n|^\n#", - '', - ltrim($nextToken->getContent(), " \t"), - 1, - ); - - $tokens->ensureWhitespaceAtIndex($nextIndex, 0, $content); - - $nextToken = $tokens[$nextIndex]; - } - - if ($prevToken->isWhitespace() && $nextToken->isWhitespace()) { - $content = $prevToken->getContent().$nextToken->getContent(); - - $tokens->ensureWhitespaceAtIndex($nextIndex, 0, $content); - - $tokens->clearAt($prevIndex); - } - } - - private function removeImportStatementIfEmpty(Tokens $tokens, NamespaceUseAnalysis $useDeclaration): void - { - // First we look for empty groups where all chunks were removed (`use Foo\{};`). - // We're only interested in ending brace if its index is between start and end of the import statement. - $endingBraceIndex = $tokens->getPrevTokenOfKind( - $useDeclaration->getEndIndex(), - [[CT::T_GROUP_IMPORT_BRACE_CLOSE]], - ); - - if ($endingBraceIndex > $useDeclaration->getStartIndex()) { - $openingBraceIndex = $tokens->getPrevMeaningfulToken($endingBraceIndex); - - if ($tokens[$openingBraceIndex]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_OPEN)) { - $this->removeUseDeclaration($tokens, $useDeclaration, true); - } - } - - // Second we look for empty groups where all comma-separated chunks were removed (`use;`). - $beforeSemicolonIndex = $tokens->getPrevMeaningfulToken($useDeclaration->getEndIndex()); - if ( - $tokens[$beforeSemicolonIndex]->isGivenKind(\T_USE) - || \in_array($tokens[$beforeSemicolonIndex]->getContent(), ['function', 'const'], true) - ) { - $this->removeUseDeclaration($tokens, $useDeclaration, true); - } - } - - private function removeLineIfEmpty(Tokens $tokens, NamespaceUseAnalysis $useAnalysis): void - { - if (!$useAnalysis->isInMulti()) { - return; - } - - $hasNonEmptyTokenBefore = $this->scanForNonEmptyTokensUntilNewLineFound( - $tokens, - $useAnalysis->getChunkStartIndex(), - -1, - ); - $hasNonEmptyTokenAfter = $this->scanForNonEmptyTokensUntilNewLineFound( - $tokens, - $useAnalysis->getChunkEndIndex(), - 1, - ); - - if ( - \is_int($hasNonEmptyTokenBefore[0]) - && !$hasNonEmptyTokenBefore[1] - && \is_int($hasNonEmptyTokenAfter[0]) - && !$hasNonEmptyTokenAfter[1] - ) { - $tokens->clearRange($hasNonEmptyTokenBefore[0], $hasNonEmptyTokenAfter[0] - 1); - } - } - - /** - * Returns tuple with the index of first token with whitespace containing new line char - * and a flag if any non-empty token was found along the way. - * - * @param -1|1 $direction - * - * @return array{0: null|int, 1: bool} - */ - private function scanForNonEmptyTokensUntilNewLineFound(Tokens $tokens, int $index, int $direction): array - { - $hasNonEmptyToken = false; - $newLineTokenIndex = null; - - // Iterate until we find new line OR we get out of $tokens bounds (next sibling index is `null`). - while (\is_int($index)) { - $index = $tokens->getNonEmptySibling($index, $direction); - - if (null === $index || null === $tokens[$index]->getId()) { - continue; - } - - if (!$tokens[$index]->isWhitespace()) { - $hasNonEmptyToken = true; - } elseif (str_starts_with($tokens[$index]->getContent(), "\n")) { - $newLineTokenIndex = $index; - - break; - } - } - - return [$newLineTokenIndex, $hasNonEmptyToken]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php deleted file mode 100644 index 74bf01e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php +++ /dev/null @@ -1,659 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Import; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Console\Application; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use PhpCsFixer\Utils; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-type _UseImportInfo array{ - * namespace: non-empty-string, - * startIndex: int, - * endIndex: int, - * importType: self::IMPORT_TYPE_*, - * group: bool, - * } - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case_sensitive?: bool, - * imports_order?: list|null, - * sort_algorithm?: 'alpha'|'length'|'none', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case_sensitive: bool, - * imports_order: list|null, - * sort_algorithm: 'alpha'|'length'|'none', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Sebastiaan Stok - * @author Dariusz Rumiński - * @author Darius Matulionis - * @author Adriano Pilger - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class OrderedImportsFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const IMPORT_TYPE_CLASS = 'class'; - - /** - * @internal - */ - public const IMPORT_TYPE_CONST = 'const'; - - /** - * @internal - */ - public const IMPORT_TYPE_FUNCTION = 'function'; - - /** - * @internal - */ - public const SORT_ALPHA = 'alpha'; - - /** - * @TODO 4.0 remove the possibility to sort by length - * - * @internal - */ - public const SORT_LENGTH = 'length'; - - /** - * @internal - */ - public const SORT_NONE = 'none'; - - /** - * Array of supported sort types in configuration. - * - * @var non-empty-list - */ - private const SUPPORTED_SORT_TYPES = [self::IMPORT_TYPE_CLASS, self::IMPORT_TYPE_CONST, self::IMPORT_TYPE_FUNCTION]; - - /** - * Array of supported sort algorithms in configuration. - * - * @var non-empty-list - */ - private const SUPPORTED_SORT_ALGORITHMS = [self::SORT_ALPHA, self::SORT_LENGTH, self::SORT_NONE]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Ordering `use` statements.', - [ - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - self::SORT_LENGTH], - ), - new CodeSample( - <<<'PHP' - self::SORT_LENGTH, - 'imports_order' => [ - self::IMPORT_TYPE_CONST, - self::IMPORT_TYPE_CLASS, - self::IMPORT_TYPE_FUNCTION, - ], - ], - ), - new CodeSample( - <<<'PHP' - self::SORT_ALPHA, - 'imports_order' => [ - self::IMPORT_TYPE_CONST, - self::IMPORT_TYPE_CLASS, - self::IMPORT_TYPE_FUNCTION, - ], - ], - ), - new CodeSample( - <<<'PHP' - self::SORT_NONE, - 'imports_order' => [ - self::IMPORT_TYPE_CONST, - self::IMPORT_TYPE_CLASS, - self::IMPORT_TYPE_FUNCTION, - ], - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BlankLineBetweenImportGroupsFixer. - * Must run after FullyQualifiedStrictTypesFixer, GlobalNamespaceImportFixer, NoLeadingImportSlashFixer. - */ - public function getPriority(): int - { - return -30; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_USE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $namespacesImports = $tokensAnalyzer->getImportUseIndexes(true); - - foreach (array_reverse($namespacesImports) as $usesPerNamespaceIndices) { - $count = \count($usesPerNamespaceIndices); - - if (1 === $count) { - $this->setNewOrder($tokens, $this->getNewOrder($usesPerNamespaceIndices, $tokens)); - - continue; - } - - $groupUsesOffset = 0; - $groupUses = [$groupUsesOffset => [$usesPerNamespaceIndices[0]]]; - - // if there's some logic between two `use` statements, sort only imports grouped before that logic - for ($index = 0; $index < $count - 1; ++$index) { - \assert(isset($usesPerNamespaceIndices[$index])); - $nextGroupUse = $tokens->getNextTokenOfKind($usesPerNamespaceIndices[$index], [';', [\T_CLOSE_TAG]]); - - if ($tokens[$nextGroupUse]->isGivenKind(\T_CLOSE_TAG)) { - $nextGroupUse = $tokens->getNextTokenOfKind($usesPerNamespaceIndices[$index], [[\T_OPEN_TAG]]); - } - - $nextGroupUse = $tokens->getNextMeaningfulToken($nextGroupUse); - - \assert(isset($usesPerNamespaceIndices[$index + 1])); - if ($nextGroupUse !== $usesPerNamespaceIndices[$index + 1]) { - $groupUses[++$groupUsesOffset] = []; - } - - $groupUses[$groupUsesOffset][] = $usesPerNamespaceIndices[$index + 1]; - } - - for ($index = $groupUsesOffset; $index >= 0; --$index) { - \assert(isset($groupUses[$index])); - $this->setNewOrder($tokens, $this->getNewOrder($groupUses[$index], $tokens)); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $supportedSortTypes = self::SUPPORTED_SORT_TYPES; - $fixerName = $this->getName(); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('sort_algorithm', 'Whether the statements should be sorted alphabetically or by length (*deprecated*), or not sorted.')) // @TODO 4.0 drop 'length' - ->setAllowedValues(self::SUPPORTED_SORT_ALGORITHMS) - ->setDefault(self::SORT_ALPHA) - ->setNormalizer(static function (Options $options, ?string $value) use ($fixerName): ?string { - if (self::SORT_LENGTH === $value) { - Future::triggerDeprecation(new InvalidFixerConfigurationException($fixerName, \sprintf( - 'Option "sort_algorithm:%s" is deprecated and will be removed in version %d.0.', - self::SORT_LENGTH, - Application::getMajorVersion() + 1, - ))); - } - - return $value; - }) - ->getOption(), - (new FixerOptionBuilder('imports_order', 'Defines the order of import types.')) - ->setAllowedTypes(['string[]', 'null']) - ->setAllowedValues([static function (?array $value) use ($supportedSortTypes): bool { - if (null !== $value) { - $missing = array_diff($supportedSortTypes, $value); - if (\count($missing) > 0) { - throw new InvalidOptionsException(\sprintf( - 'Missing sort %s %s.', - 1 === \count($missing) ? 'type' : 'types', - Utils::naturalLanguageJoin(array_values($missing)), - )); - } - - $unknown = array_diff($value, $supportedSortTypes); - if (\count($unknown) > 0) { - throw new InvalidOptionsException(\sprintf( - 'Unknown sort %s %s.', - 1 === \count($unknown) ? 'type' : 'types', - Utils::naturalLanguageJoin(array_values($unknown)), - )); - } - } - - return true; - }]) - ->setDefault( - Future::getV4OrV3(['class', 'function', 'const'], null), - ) - ->getOption(), - (new FixerOptionBuilder('case_sensitive', 'Whether the sorting should be case sensitive.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - /** - * This method is used for sorting the uses in a namespace. - * - * @param _UseImportInfo $first - * @param _UseImportInfo $second - */ - private function sortAlphabetically(array $first, array $second): int - { - // Replace backslashes by spaces and remove opening braces before sorting for correct sort order - $firstNamespace = str_replace(['\\', '{'], [' ', ''], $this->prepareNamespace($first['namespace'])); - $secondNamespace = str_replace(['\\', '{'], [' ', ''], $this->prepareNamespace($second['namespace'])); - - return true === $this->configuration['case_sensitive'] - ? $firstNamespace <=> $secondNamespace - : strcasecmp($firstNamespace, $secondNamespace); - } - - /** - * This method is used for sorting the uses statements in a namespace by length. - * - * @param _UseImportInfo $first - * @param _UseImportInfo $second - */ - private function sortByLength(array $first, array $second): int - { - $firstNamespace = (self::IMPORT_TYPE_CLASS === $first['importType'] ? '' : $first['importType'].' ').$this->prepareNamespace($first['namespace']); - $secondNamespace = (self::IMPORT_TYPE_CLASS === $second['importType'] ? '' : $second['importType'].' ').$this->prepareNamespace($second['namespace']); - - $firstNamespaceLength = \strlen($firstNamespace); - $secondNamespaceLength = \strlen($secondNamespace); - - if ($firstNamespaceLength === $secondNamespaceLength) { - $sortResult = true === $this->configuration['case_sensitive'] - ? $firstNamespace <=> $secondNamespace - : strcasecmp($firstNamespace, $secondNamespace); - } else { - $sortResult = $firstNamespaceLength > $secondNamespaceLength ? 1 : -1; - } - - return $sortResult; - } - - private function prepareNamespace(string $namespace): string - { - return trim(Preg::replace('%/\*(.*)\*/%s', '', $namespace)); - } - - /** - * @param list $uses - * - * @return array - */ - private function getNewOrder(array $uses, Tokens $tokens): array - { - $indices = []; - $originalIndices = []; - $lineEnding = $this->whitespacesConfig->getLineEnding(); - $usesCount = \count($uses); - - for ($i = 0; $i < $usesCount; ++$i) { - \assert(isset($uses[$i])); - $index = $uses[$i]; - - $startIndex = $tokens->getTokenNotOfKindsSibling($index + 1, 1, [\T_WHITESPACE]); - \assert(\is_int($startIndex)); - - $endIndex = $tokens->getNextTokenOfKind($startIndex, [';', [\T_CLOSE_TAG]]); - $previous = $tokens->getPrevMeaningfulToken($endIndex); - - $group = $tokens[$previous]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE); - if ($tokens[$startIndex]->isGivenKind(CT::T_CONST_IMPORT)) { - $type = self::IMPORT_TYPE_CONST; - $index = $tokens->getNextNonWhitespace($startIndex); - } elseif ($tokens[$startIndex]->isGivenKind(CT::T_FUNCTION_IMPORT)) { - $type = self::IMPORT_TYPE_FUNCTION; - $index = $tokens->getNextNonWhitespace($startIndex); - } else { - $type = self::IMPORT_TYPE_CLASS; - $index = $startIndex; - } - - $namespaceTokens = []; - - while ($index <= $endIndex) { - $token = $tokens[$index]; - - if ($index === $endIndex || (!$group && $token->equals(','))) { - if ($group && self::SORT_NONE !== $this->configuration['sort_algorithm']) { - // if group import, sort the items within the group definition - - // figure out where the list of namespace parts within the group def. starts - $namespaceTokensCount = \count($namespaceTokens) - 1; - $namespace = ''; - for ($k = 0; $k < $namespaceTokensCount; ++$k) { - \assert(isset($namespaceTokens[$k])); - if ($namespaceTokens[$k]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_OPEN)) { - $namespace .= '{'; - - break; - } - - $namespace .= $namespaceTokens[$k]->getContent(); - } - - // fetch all parts, split up in an array of strings, move comments to the end - $parts = []; - $firstIndent = ''; - $separator = ', '; - $lastIndent = ''; - $hasGroupTrailingComma = false; - - for ($k1 = $k + 1; $k1 < $namespaceTokensCount; ++$k1) { - $comment = ''; - $namespacePart = ''; - for ($k2 = $k1;; ++$k2) { - \assert(isset($namespaceTokens[$k2])); - if ($namespaceTokens[$k2]->equalsAny([',', [CT::T_GROUP_IMPORT_BRACE_CLOSE]])) { - break; - } - - if ($namespaceTokens[$k2]->isComment()) { - $comment .= $namespaceTokens[$k2]->getContent(); - - continue; - } - - // if there is any line ending inside the group import, it should be indented properly - if ( - '' === $firstIndent - && $namespaceTokens[$k2]->isWhitespace() - && str_contains($namespaceTokens[$k2]->getContent(), $lineEnding) - ) { - $lastIndent = $lineEnding; - $firstIndent = $lineEnding.$this->whitespacesConfig->getIndent(); - $separator = ','.$firstIndent; - } - - $namespacePart .= $namespaceTokens[$k2]->getContent(); - } - - $namespacePart = trim($namespacePart); - if ('' === $namespacePart) { - $hasGroupTrailingComma = true; - - continue; - } - - $comment = trim($comment); - if ('' !== $comment) { - $namespacePart .= ' '.$comment; - } - - $parts[] = $namespacePart; - - $k1 = $k2; - } - - $sortedParts = $parts; - sort($parts); - - // check if the order needs to be updated, otherwise don't touch as we might change valid CS (to other valid CS). - if ($sortedParts === $parts) { - $namespace = Tokens::fromArray($namespaceTokens)->generateCode(); - } else { - $namespace .= $firstIndent.implode($separator, $parts).($hasGroupTrailingComma ? ',' : '').$lastIndent.'}'; - } - } else { - $namespace = Tokens::fromArray($namespaceTokens)->generateCode(); - } - - \assert('' !== $namespace); - - $indices[$startIndex] = [ - 'namespace' => $namespace, - 'startIndex' => $startIndex, - 'endIndex' => $index - 1, - 'importType' => $type, - 'group' => $group, - ]; - - $originalIndices[] = $startIndex; - - if ($index === $endIndex) { - break; - } - - $namespaceTokens = []; - $nextPartIndex = $tokens->getTokenNotOfKindSibling($index, 1, [',', [\T_WHITESPACE]]); - \assert(\is_int($nextPartIndex)); - $startIndex = $nextPartIndex; - $index = $nextPartIndex; - - continue; - } - - $namespaceTokens[] = $token; - ++$index; - } - } - - // Is sort types provided, sorting by groups and each group by algorithm - if (null !== $this->configuration['imports_order']) { - // Grouping indices by import type. - $groupedByTypes = []; - - foreach ($indices as $startIndex => $item) { - $groupedByTypes[$item['importType']][$startIndex] = $item; - } - - // Sorting each group by algorithm. - foreach ($groupedByTypes as $type => $groupIndices) { - $groupedByTypes[$type] = $this->sortByAlgorithm($groupIndices); - } - - // Ordering groups - $sortedGroups = []; - - foreach ($this->configuration['imports_order'] as $type) { - if (isset($groupedByTypes[$type]) && [] !== $groupedByTypes[$type]) { - foreach ($groupedByTypes[$type] as $startIndex => $item) { - $sortedGroups[$startIndex] = $item; - } - } - } - - $indices = $sortedGroups; - } else { - // Sorting only by algorithm - $indices = $this->sortByAlgorithm($indices); - } - - $index = -1; - $usesOrder = []; - - // Loop through the index but use original index order - foreach ($indices as $v) { - ++$index; - \assert(isset($originalIndices[$index])); - $usesOrder[$originalIndices[$index]] = $v; - } - - return $usesOrder; - } - - /** - * @param array $indices - * - * @return array - */ - private function sortByAlgorithm(array $indices): array - { - if (self::SORT_ALPHA === $this->configuration['sort_algorithm']) { - uasort($indices, [$this, 'sortAlphabetically']); - } elseif (self::SORT_LENGTH === $this->configuration['sort_algorithm']) { - uasort($indices, [$this, 'sortByLength']); - } - - return $indices; - } - - /** - * @param array $usesOrder - */ - private function setNewOrder(Tokens $tokens, array $usesOrder): void - { - $mapStartToEnd = []; - - foreach ($usesOrder as $use) { - $mapStartToEnd[$use['startIndex']] = $use['endIndex']; - } - - // Now insert the new tokens, starting from the end - foreach (array_reverse($usesOrder, true) as $index => $use) { - $code = \sprintf( - 'getPrevMeaningfulToken($index); - if ($tokens[$prevIndex]->equals(',')) { - $numberOfInitialTokensToClear = 5; // clear `clearRange(0, $numberOfInitialTokensToClear - 1); - $declarationTokens->clearAt(\count($declarationTokens) - 1); // clear `;` - $declarationTokens->clearEmptyTokens(); - - \assert(isset($mapStartToEnd[$index])); - $tokens->overrideRange($index, $mapStartToEnd[$index], $declarationTokens); - - if ($use['group']) { - // a group import must start with `use` and cannot be part of comma separated import list - self::fixCommaToUse($tokens, $tokens->getPrevMeaningfulToken($index)); - - $closeGroupIndex = $tokens->getNextTokenOfKind($index, [[CT::T_GROUP_IMPORT_BRACE_CLOSE]]); - self::fixCommaToUse($tokens, $tokens->getNextMeaningfulToken($closeGroupIndex)); - } - } - } - - private static function fixCommaToUse(Tokens $tokens, int $index): void - { - if (!$tokens[$index]->equals(',')) { - return; - } - - $tokens[$index] = new Token(';'); - $tokens->insertAt($index + 1, new Token([\T_USE, 'use'])); - - if (!$tokens[$index + 2]->isWhitespace()) { - $tokens->insertAt($index + 2, new Token([\T_WHITESPACE, ' '])); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php deleted file mode 100644 index f834f42..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php +++ /dev/null @@ -1,280 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Import; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * Fixer for rules defined in PSR2 ¶3. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * group_to_single_imports?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * group_to_single_imports: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleImportPerStatementFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There MUST be one use keyword per declaration.', - [ - new CodeSample( - <<<'PHP' - true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before MultilineWhitespaceBeforeSemicolonsFixer, NoLeadingImportSlashFixer, NoSinglelineWhitespaceBeforeSemicolonsFixer, SpaceAfterSemicolonFixer. - */ - public function getPriority(): int - { - return 1; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_USE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - foreach (array_reverse($tokensAnalyzer->getImportUseIndexes()) as $index) { - $endIndex = $tokens->getNextTokenOfKind($index, [';', [\T_CLOSE_TAG]]); - $groupClose = $tokens->getPrevMeaningfulToken($endIndex); - - if ($tokens[$groupClose]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE)) { - if (true === $this->configuration['group_to_single_imports']) { - $this->fixGroupUse($tokens, $index, $endIndex); - } - } else { - $this->fixMultipleUse($tokens, $index, $endIndex); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('group_to_single_imports', 'Whether to change group imports into single imports.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - /** - * @return array{string, ?int, int, string} - */ - private function getGroupDeclaration(Tokens $tokens, int $index): array - { - $groupPrefix = ''; - $comment = ''; - $groupOpenIndex = null; - - for ($i = $index + 1;; ++$i) { - if ($tokens[$i]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_OPEN)) { - $groupOpenIndex = $i; - - break; - } - - if ($tokens[$i]->isComment()) { - $comment .= $tokens[$i]->getContent(); - if (!$tokens[$i - 1]->isWhitespace() && !$tokens[$i + 1]->isWhitespace()) { - $groupPrefix .= ' '; - } - - continue; - } - - if ($tokens[$i]->isWhitespace()) { - $groupPrefix .= ' '; - - continue; - } - - $groupPrefix .= $tokens[$i]->getContent(); - } - - return [ - rtrim($groupPrefix), - $groupOpenIndex, - $tokens->findBlockEnd(Tokens::BLOCK_TYPE_GROUP_IMPORT_BRACE, $groupOpenIndex), - $comment, - ]; - } - - /** - * @return list - */ - private function getGroupStatements(Tokens $tokens, string $groupPrefix, int $groupOpenIndex, int $groupCloseIndex, string $comment): array - { - $statements = []; - $statement = $groupPrefix; - - for ($i = $groupOpenIndex + 1; $i <= $groupCloseIndex; ++$i) { - $token = $tokens[$i]; - - if ($token->equals(',') && $tokens[$tokens->getNextMeaningfulToken($i)]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE)) { - continue; - } - - if ($token->equalsAny([',', [CT::T_GROUP_IMPORT_BRACE_CLOSE]])) { - $statements[] = 'use'.$statement.';'; - $statement = $groupPrefix; - - continue; - } - - if ($token->isWhitespace()) { - $j = $tokens->getNextMeaningfulToken($i); - - if ($tokens[$j]->isGivenKind(\T_AS)) { - $statement .= ' as '; - $i += 2; - } elseif ($tokens[$j]->isGivenKind(CT::T_FUNCTION_IMPORT)) { - $statement = ' function'.$statement; - $i += 2; - } elseif ($tokens[$j]->isGivenKind(CT::T_CONST_IMPORT)) { - $statement = ' const'.$statement; - $i += 2; - } - - if ($token->isWhitespace(" \t") || !str_starts_with($tokens[$i - 1]->getContent(), '//')) { - continue; - } - } - - $statement .= $token->getContent(); - } - - if ('' !== $comment) { - $statements[0] .= ' '.$comment; - } - - return $statements; - } - - private function fixGroupUse(Tokens $tokens, int $index, int $endIndex): void - { - [$groupPrefix, $groupOpenIndex, $groupCloseIndex, $comment] = $this->getGroupDeclaration($tokens, $index); - $statements = $this->getGroupStatements($tokens, $groupPrefix, $groupOpenIndex, $groupCloseIndex, $comment); - - $tokens->clearRange($index, $groupCloseIndex); - if ($tokens[$endIndex]->equals(';')) { - $tokens->clearAt($endIndex); - } - - $ending = $this->whitespacesConfig->getLineEnding(); - $importTokens = Tokens::fromCode('clearAt(0); - $importTokens->clearEmptyTokens(); - - $tokens->insertAt($index, $importTokens); - } - - private function fixMultipleUse(Tokens $tokens, int $index, int $endIndex): void - { - $nextTokenIndex = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$nextTokenIndex]->isGivenKind(CT::T_FUNCTION_IMPORT)) { - $leadingTokens = [ - new Token([CT::T_FUNCTION_IMPORT, 'function']), - new Token([\T_WHITESPACE, ' ']), - ]; - } elseif ($tokens[$nextTokenIndex]->isGivenKind(CT::T_CONST_IMPORT)) { - $leadingTokens = [ - new Token([CT::T_CONST_IMPORT, 'const']), - new Token([\T_WHITESPACE, ' ']), - ]; - } else { - $leadingTokens = []; - } - - $ending = $this->whitespacesConfig->getLineEnding(); - - for ($i = $endIndex - 1; $i > $index; --$i) { - if (!$tokens[$i]->equals(',')) { - continue; - } - - $tokens[$i] = new Token(';'); - $i = $tokens->getNextMeaningfulToken($i); - - $tokens->insertAt($i, new Token([\T_USE, 'use'])); - $tokens->insertAt($i + 1, new Token([\T_WHITESPACE, ' '])); - - foreach ($leadingTokens as $offset => $leadingToken) { - $tokens->insertAt($i + 2 + $offset, clone $leadingToken); - } - - $indent = WhitespacesAnalyzer::detectIndent($tokens, $index); - - if ($tokens[$i - 1]->isWhitespace()) { - $tokens[$i - 1] = new Token([\T_WHITESPACE, $ending.$indent]); - } elseif (!str_contains($tokens[$i - 1]->getContent(), "\n")) { - $tokens->insertAt($i, new Token([\T_WHITESPACE, $ending.$indent])); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php deleted file mode 100644 index af70312..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php +++ /dev/null @@ -1,158 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Import; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use PhpCsFixer\Utils; - -/** - * Fixer for rules defined in PSR2 ¶3. - * - * @author Ceeram - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleLineAfterImportsFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_USE); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Each namespace use MUST go on its own line and there MUST be one blank line after the use statements block.', - [ - new CodeSample( - <<<'PHP' - whitespacesConfig->getLineEnding(); - $tokensAnalyzer = new TokensAnalyzer($tokens); - - $added = 0; - foreach ($tokensAnalyzer->getImportUseIndexes() as $index) { - $index += $added; - $indent = ''; - - // if previous line ends with comment and current line starts with whitespace, use current indent - if ($tokens[$index - 1]->isWhitespace(" \t") && $tokens[$index - 2]->isGivenKind(\T_COMMENT)) { - $indent = $tokens[$index - 1]->getContent(); - } elseif ($tokens[$index - 1]->isWhitespace()) { - $indent = Utils::calculateTrailingWhitespaceIndent($tokens[$index - 1]); - } - - $semicolonIndex = $tokens->getNextTokenOfKind($index, [';', [\T_CLOSE_TAG]]); // Handle insert index for inline T_COMMENT with whitespace after semicolon - $insertIndex = $semicolonIndex; - - if ($tokens[$semicolonIndex]->isGivenKind(\T_CLOSE_TAG)) { - if ($tokens[$insertIndex - 1]->isWhitespace()) { - --$insertIndex; - } - - $tokens->insertAt($insertIndex, new Token(';')); - ++$added; - } - - if ($semicolonIndex === \count($tokens) - 1) { - $tokens->insertAt($insertIndex + 1, new Token([\T_WHITESPACE, $ending.$ending.$indent])); - ++$added; - } else { - $newline = $ending; - $tokens[$semicolonIndex]->isGivenKind(\T_CLOSE_TAG) ? --$insertIndex : ++$insertIndex; - if ($tokens[$insertIndex]->isWhitespace(" \t") && $tokens[$insertIndex + 1]->isComment()) { - ++$insertIndex; - } - - // Increment insert index for inline T_COMMENT or T_DOC_COMMENT - if ($tokens[$insertIndex]->isComment()) { - ++$insertIndex; - } - - $afterSemicolon = $tokens->getNextMeaningfulToken($semicolonIndex); - if (null === $afterSemicolon || !$tokens[$afterSemicolon]->isGivenKind(\T_USE)) { - $newline .= $ending; - } - - if ($tokens[$insertIndex]->isWhitespace()) { - $nextToken = $tokens[$insertIndex]; - if (2 === substr_count($nextToken->getContent(), "\n")) { - continue; - } - $nextMeaningfulAfterUseIndex = $tokens->getNextMeaningfulToken($insertIndex); - if (null !== $nextMeaningfulAfterUseIndex && $tokens[$nextMeaningfulAfterUseIndex]->isGivenKind(\T_USE)) { - if (substr_count($nextToken->getContent(), "\n") < 1) { - $tokens[$insertIndex] = new Token([\T_WHITESPACE, $newline.$indent.ltrim($nextToken->getContent())]); - } - } else { - $tokens[$insertIndex] = new Token([\T_WHITESPACE, $newline.$indent.ltrim($nextToken->getContent())]); - } - } else { - $tokens->insertAt($insertIndex, new Token([\T_WHITESPACE, $newline.$indent])); - ++$added; - } - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/IndentationTrait.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/IndentationTrait.php deleted file mode 100644 index f40ce4c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/IndentationTrait.php +++ /dev/null @@ -1,96 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @phpstan-require-implements FixerInterface - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -trait IndentationTrait -{ - private function getLineIndentation(Tokens $tokens, int $index): string - { - $newlineTokenIndex = $this->getPreviousNewlineTokenIndex($tokens, $index); - - if (null === $newlineTokenIndex) { - return ''; - } - - return $this->extractIndent($this->computeNewLineContent($tokens, $newlineTokenIndex)); - } - - private function extractIndent(string $content): string - { - if (Preg::match('/\R(\h*)[^\r\n]*$/D', $content, $matches)) { - return $matches[1]; - } - - return ''; - } - - private function getPreviousNewlineTokenIndex(Tokens $tokens, int $index): ?int - { - while ($index > 0) { - $index = $tokens->getPrevTokenOfKind($index, [[\T_WHITESPACE], [\T_INLINE_HTML]]); - - if (null === $index) { - break; - } - - if ($this->isNewLineToken($tokens, $index)) { - return $index; - } - } - - return null; - } - - private function computeNewLineContent(Tokens $tokens, int $index): string - { - $content = $tokens[$index]->getContent(); - - if (0 !== $index && $tokens[$index - 1]->isGivenKind([\T_OPEN_TAG, \T_CLOSE_TAG])) { - $content = Preg::replace('/\S/', '', $tokens[$index - 1]->getContent()).$content; - } - - return $content; - } - - private function isNewLineToken(Tokens $tokens, int $index): bool - { - $token = $tokens[$index]; - - if ( - $token->isGivenKind(\T_OPEN_TAG) - && isset($tokens[$index + 1]) - && !$tokens[$index + 1]->isWhitespace() - && Preg::match('/\R/', $token->getContent()) - ) { - return true; - } - - if (!$tokens[$index]->isGivenKind([\T_WHITESPACE, \T_INLINE_HTML])) { - return false; - } - - return Preg::match('/\R/', $this->computeNewLineContent($tokens, $index)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/InternalFixerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/InternalFixerInterface.php deleted file mode 100644 index 3a52651..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/InternalFixerInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface InternalFixerInterface extends FixerInterface {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordFixer.php deleted file mode 100644 index 33114ba..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordFixer.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ExperimentalFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ClassKeywordFixer extends AbstractFixer implements ExperimentalFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts FQCN strings to `*::class` keywords.', - [ - new CodeSample( - <<<'PHP' - count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - $name = substr($token->getContent(), 1, -1); - $name = ltrim($name, '\\'); - $name = str_replace('\\\\', '\\', $name); - - if ($this->exists($name)) { - $substitution = Tokens::fromCode("clearRange(0, 2); - $substitution->clearAt($substitution->getSize() - 1); - $substitution->clearEmptyTokens(); - - $tokens->clearAt($index); - $tokens->insertAt($index, $substitution); - } - } - } - } - - private function exists(string $name): bool - { - if (class_exists($name) || interface_exists($name) || trait_exists($name)) { - $rc = new \ReflectionClass($name); - - return $rc->getName() === $name; - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php deleted file mode 100644 index 76a17fe..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php +++ /dev/null @@ -1,237 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @deprecated - * - * @author Sullivan Senechal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ClassKeywordRemoveFixer extends AbstractFixer implements DeprecatedFixerInterface -{ - /** - * @var array - */ - private array $imports = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts `::class` keywords to FQCN strings.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(CT::T_CLASS_CONSTANT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $previousNamespaceScopeEndIndex = 0; - foreach ($tokens->getNamespaceDeclarations() as $declaration) { - $this->replaceClassKeywordsSection($tokens, '', $previousNamespaceScopeEndIndex, $declaration->getStartIndex()); - $this->replaceClassKeywordsSection($tokens, $declaration->getFullName(), $declaration->getStartIndex(), $declaration->getScopeEndIndex()); - $previousNamespaceScopeEndIndex = $declaration->getScopeEndIndex(); - } - - $this->replaceClassKeywordsSection($tokens, '', $previousNamespaceScopeEndIndex, $tokens->count() - 1); - } - - private function storeImports(Tokens $tokens, int $startIndex, int $endIndex): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $this->imports = []; - - foreach ($tokensAnalyzer->getImportUseIndexes() as $index) { - if ($index < $startIndex || $index > $endIndex) { - continue; - } - - $import = ''; - while (($index = $tokens->getNextMeaningfulToken($index)) !== null) { - if ($tokens[$index]->equalsAny([';', [CT::T_GROUP_IMPORT_BRACE_OPEN]]) || $tokens[$index]->isGivenKind(\T_AS)) { - break; - } - - $import .= $tokens[$index]->getContent(); - } - - // Imports group (PHP 7 spec) - if ($tokens[$index]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_OPEN)) { - $groupEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_GROUP_IMPORT_BRACE, $index); - $groupImports = array_map( - static fn (string $import): string => trim($import), - explode(',', $tokens->generatePartialCode($index + 1, $groupEndIndex - 1)), - ); - foreach ($groupImports as $groupImport) { - $groupImportParts = array_map(static fn (string $import): string => trim($import), explode(' as ', $groupImport)); - if (2 === \count($groupImportParts)) { - $this->imports[$groupImportParts[1]] = $import.$groupImportParts[0]; - } else { - $this->imports[] = $import.$groupImport; - } - } - } elseif ($tokens[$index]->isGivenKind(\T_AS)) { - $aliasIndex = $tokens->getNextMeaningfulToken($index); - $alias = $tokens[$aliasIndex]->getContent(); - $this->imports[$alias] = $import; - } else { - $this->imports[] = $import; - } - } - } - - private function replaceClassKeywordsSection(Tokens $tokens, string $namespace, int $startIndex, int $endIndex): void - { - if ($endIndex - $startIndex < 3) { - return; - } - - $this->storeImports($tokens, $startIndex, $endIndex); - - $ctClassTokens = $tokens->findGivenKind(CT::T_CLASS_CONSTANT, $startIndex, $endIndex); - foreach (array_reverse(array_keys($ctClassTokens)) as $classIndex) { - $this->replaceClassKeyword($tokens, $namespace, $classIndex); - } - } - - private function replaceClassKeyword(Tokens $tokens, string $namespacePrefix, int $classIndex): void - { - $classEndIndex = $tokens->getPrevMeaningfulToken($classIndex); - $classEndIndex = $tokens->getPrevMeaningfulToken($classEndIndex); - - if (!$tokens[$classEndIndex]->isGivenKind(\T_STRING)) { - return; - } - - if ($tokens[$classEndIndex]->equalsAny([[\T_STRING, 'self'], [\T_STATIC, 'static'], [\T_STRING, 'parent']], false)) { - return; - } - - $classBeginIndex = $classEndIndex; - while (true) { - $prev = $tokens->getPrevMeaningfulToken($classBeginIndex); - if (!$tokens[$prev]->isGivenKind([\T_NS_SEPARATOR, \T_STRING])) { - break; - } - - $classBeginIndex = $prev; - } - - $classString = $tokens->generatePartialCode( - $tokens[$classBeginIndex]->isGivenKind(\T_NS_SEPARATOR) - ? $tokens->getNextMeaningfulToken($classBeginIndex) - : $classBeginIndex, - $classEndIndex, - ); - - $classImport = false; - if ($tokens[$classBeginIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $namespacePrefix = ''; - } else { - foreach ($this->imports as $alias => $import) { - if ($classString === $alias) { - $classImport = $import; - - break; - } - - $classStringArray = explode('\\', $classString); - $namespaceToTest = $classStringArray[0]; - - if (0 === ($namespaceToTest <=> substr($import, -\strlen($namespaceToTest)))) { - $classImport = $import; - - break; - } - } - } - - for ($i = $classBeginIndex; $i <= $classIndex; ++$i) { - if (!$tokens[$i]->isComment() && !($tokens[$i]->isWhitespace() && str_contains($tokens[$i]->getContent(), "\n"))) { - $tokens->clearAt($i); - } - } - - $tokens->insertAt($classBeginIndex, new Token([ - \T_CONSTANT_ENCAPSED_STRING, - "'".$this->makeClassFQN($namespacePrefix, $classImport, $classString)."'", - ])); - } - - /** - * @param false|string $classImport - */ - private function makeClassFQN(string $namespacePrefix, $classImport, string $classString): string - { - if (false === $classImport) { - return ('' !== $namespacePrefix ? ($namespacePrefix.'\\') : '').$classString; - } - - $classStringArray = explode('\\', $classString); - $classStringLength = \count($classStringArray); - $classImportArray = explode('\\', $classImport); - $classImportLength = \count($classImportArray); - - if (1 === $classStringLength) { - return $classImport; - } - - return implode('\\', array_merge( - \array_slice($classImportArray, 0, $classImportLength - $classStringLength + 1), - $classStringArray, - )); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php deleted file mode 100644 index 931a110..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php +++ /dev/null @@ -1,166 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CombineConsecutiveIssetsFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Using `isset($var) &&` multiple times should be done in one call.', - [new CodeSample("isAllTokenKindsFound([\T_ISSET, \T_BOOLEAN_AND]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokenCount = $tokens->count(); - - for ($index = 1; $index < $tokenCount; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_ISSET) - || !$tokens[$tokens->getPrevMeaningfulToken($index)]->equalsAny(['(', '{', ';', '=', [\T_OPEN_TAG], [\T_BOOLEAN_AND], [\T_BOOLEAN_OR]])) { - continue; - } - - $issetInfo = $this->getIssetInfo($tokens, $index); - $issetCloseBraceIndex = end($issetInfo); // ')' token - $insertLocation = (int) prev($issetInfo) + 1; // one index after the previous meaningful of ')' - - $booleanAndTokenIndex = $tokens->getNextMeaningfulToken($issetCloseBraceIndex); - - while ($tokens[$booleanAndTokenIndex]->isGivenKind(\T_BOOLEAN_AND)) { - $issetIndex = $tokens->getNextMeaningfulToken($booleanAndTokenIndex); - if (!$tokens[$issetIndex]->isGivenKind(\T_ISSET)) { - $index = $issetIndex; - - break; - } - - // fetch info about the 'isset' statement that we're merging - $nextIssetInfo = $this->getIssetInfo($tokens, $issetIndex); - - $nextMeaningfulTokenIndex = $tokens->getNextMeaningfulToken(end($nextIssetInfo)); - $nextMeaningfulToken = $tokens[$nextMeaningfulTokenIndex]; - - if (!$nextMeaningfulToken->equalsAny([')', '}', ';', [\T_CLOSE_TAG], [\T_BOOLEAN_AND], [\T_BOOLEAN_OR]])) { - $index = $nextMeaningfulTokenIndex; - - break; - } - - // clone what we want to move, do not clone '(' and ')' of the 'isset' statement we're merging - $clones = $this->getTokenClones($tokens, \array_slice($nextIssetInfo, 1, -1)); - - // clean up now the tokens of the 'isset' statement we're merging - $this->clearTokens($tokens, array_merge($nextIssetInfo, [$issetIndex, $booleanAndTokenIndex])); - - // insert the tokens to create the new statement - array_unshift($clones, new Token(','), new Token([\T_WHITESPACE, ' '])); - $tokens->insertAt($insertLocation, $clones); - - // correct some counts and offset based on # of tokens inserted - $numberOfTokensInserted = \count($clones); - $tokenCount += $numberOfTokensInserted; - $issetCloseBraceIndex += $numberOfTokensInserted; - $insertLocation += $numberOfTokensInserted; - - $booleanAndTokenIndex = $tokens->getNextMeaningfulToken($issetCloseBraceIndex); - } - } - } - - /** - * @param list $indices - */ - private function clearTokens(Tokens $tokens, array $indices): void - { - foreach ($indices as $index) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } - - /** - * @param int $index of T_ISSET - * - * @return non-empty-list indices of meaningful tokens belonging to the isset statement - */ - private function getIssetInfo(Tokens $tokens, int $index): array - { - $openIndex = $tokens->getNextMeaningfulToken($index); - - $braceOpenCount = 1; - $meaningfulTokenIndices = [$openIndex]; - - for ($i = $openIndex + 1;; ++$i) { - if ($tokens[$i]->isWhitespace() || $tokens[$i]->isComment()) { - continue; - } - - $meaningfulTokenIndices[] = $i; - - if ($tokens[$i]->equals(')')) { - --$braceOpenCount; - if (0 === $braceOpenCount) { - break; - } - } elseif ($tokens[$i]->equals('(')) { - ++$braceOpenCount; - } - } - - return $meaningfulTokenIndices; - } - - /** - * @param list $indices - * - * @return list - */ - private function getTokenClones(Tokens $tokens, array $indices): array - { - $clones = []; - - foreach ($indices as $i) { - $clones[] = clone $tokens[$i]; - } - - return $clones; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php deleted file mode 100644 index 8faa41d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php +++ /dev/null @@ -1,189 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CombineConsecutiveUnsetsFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Calling `unset` on multiple items should be done in one call.', - [new CodeSample("isTokenKindFound(\T_UNSET); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_UNSET)) { - continue; - } - - $previousUnsetCall = $this->getPreviousUnsetCall($tokens, $index); - if (\is_int($previousUnsetCall)) { - $index = $previousUnsetCall; - - continue; - } - - [$previousUnset, , $previousUnsetBraceEnd] = $previousUnsetCall; - - // Merge the tokens inside the 'unset' call into the previous one 'unset' call. - $tokensAddCount = $this->moveTokens( - $tokens, - $nextUnsetContentStart = $tokens->getNextTokenOfKind($index, ['(']), - $nextUnsetContentEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextUnsetContentStart), - $previousUnsetBraceEnd - 1, - ); - - if (!$tokens[$previousUnsetBraceEnd]->isWhitespace()) { - $tokens->insertAt($previousUnsetBraceEnd, new Token([\T_WHITESPACE, ' '])); - ++$tokensAddCount; - } - - $tokenBeforePreviousUnsetBraceEnd = $tokens->getPrevMeaningfulToken($previousUnsetBraceEnd); - - if (!$tokens[$tokenBeforePreviousUnsetBraceEnd]->equals(',')) { - $tokens->insertAt($previousUnsetBraceEnd, new Token(',')); - ++$tokensAddCount; - } elseif ($tokens[$tokenBeforePreviousUnsetBraceEnd + 1]->isWhitespace()) { - // keeping trailing comma from previous `unset`, but tokens moved - may cause 2 whitespaces tokens one after another - needed to clean this up - $tokens->clearTokenAndMergeSurroundingWhitespace($tokenBeforePreviousUnsetBraceEnd + 1); - } - - // Remove 'unset', '(', ')' and (possibly) ';' from the merged 'unset' call. - $this->clearOffsetTokens($tokens, $tokensAddCount, [$index, $nextUnsetContentStart, $nextUnsetContentEnd]); - - $nextUnsetSemicolon = $tokens->getNextMeaningfulToken($nextUnsetContentEnd); - if (null !== $nextUnsetSemicolon && $tokens[$nextUnsetSemicolon]->equals(';')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($nextUnsetSemicolon); - } - - $index = $previousUnset + 1; - } - } - - /** - * @param list $indices - */ - private function clearOffsetTokens(Tokens $tokens, int $offset, array $indices): void - { - foreach ($indices as $index) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index + $offset); - } - } - - /** - * Find a previous call to unset directly before the index. - * - * Returns an array with - * * unset index - * * opening brace index - * * closing brace index - * * end semicolon index - * - * Or the index to where the method looked for a call. - * - * @return array{int, int, int, int}|int - */ - private function getPreviousUnsetCall(Tokens $tokens, int $index) - { - $previousUnsetSemicolon = $tokens->getPrevMeaningfulToken($index); - if (null === $previousUnsetSemicolon) { - return $index; - } - - if (!$tokens[$previousUnsetSemicolon]->equals(';')) { - return $previousUnsetSemicolon; - } - - $previousUnsetBraceEnd = $tokens->getPrevMeaningfulToken($previousUnsetSemicolon); - if (null === $previousUnsetBraceEnd) { - return $index; - } - - if (!$tokens[$previousUnsetBraceEnd]->equals(')')) { - return $previousUnsetBraceEnd; - } - - $previousUnsetBraceStart = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $previousUnsetBraceEnd); - $previousUnset = $tokens->getPrevMeaningfulToken($previousUnsetBraceStart); - if (null === $previousUnset) { - return $index; - } - - if (!$tokens[$previousUnset]->isGivenKind(\T_UNSET)) { - return $previousUnset; - } - - return [ - $previousUnset, - $previousUnsetBraceStart, - $previousUnsetBraceEnd, - $previousUnsetSemicolon, - ]; - } - - /** - * @param int $start Index previous of the first token to move - * @param int $end Index of the last token to move - * @param int $to Upper boundary index - * - * @return int Number of tokens inserted - */ - private function moveTokens(Tokens $tokens, int $start, int $end, int $to): int - { - $added = 0; - for ($i = $start + 1; $i < $end; $i += 2) { - if ($tokens[$i]->isWhitespace() && $tokens[$to + 1]->isWhitespace()) { - $tokens[$to + 1] = new Token([\T_WHITESPACE, $tokens[$to + 1]->getContent().$tokens[$i]->getContent()]); - } else { - $tokens->insertAt(++$to, clone $tokens[$i]); - ++$end; - ++$added; - } - - $tokens->clearAt($i + 1); - } - - return $added; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php deleted file mode 100644 index 47bd166..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php +++ /dev/null @@ -1,139 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * space?: 'none'|'single', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * space: 'none'|'single', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DeclareEqualNormalizeFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Equal sign in declare statement should be surrounded by spaces or not following configuration.', - [ - new CodeSample(" 'single']), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after DeclareStrictTypesFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DECLARE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = 0, $count = $tokens->count(); $index < $count - 6; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_DECLARE)) { - continue; - } - - $openParenthesisIndex = $tokens->getNextMeaningfulToken($index); - $closeParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesisIndex); - - for ($i = $closeParenthesisIndex; $i > $openParenthesisIndex; --$i) { - if ($tokens[$i]->equals('=')) { - if ('none' === $this->configuration['space']) { - $this->removeWhitespaceAroundToken($tokens, $i); - } else { - $this->ensureWhitespaceAroundToken($tokens, $i); - } - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('space', 'Spacing to apply around the equal sign.')) - ->setAllowedValues(['single', 'none']) - ->setDefault('none') - ->getOption(), - ]); - } - - /** - * @param int $index of `=` token - */ - private function ensureWhitespaceAroundToken(Tokens $tokens, int $index): void - { - if ($tokens[$index + 1]->isWhitespace()) { - if (' ' !== $tokens[$index + 1]->getContent()) { - $tokens[$index + 1] = new Token([\T_WHITESPACE, ' ']); - } - } else { - $tokens->insertAt($index + 1, new Token([\T_WHITESPACE, ' '])); - } - - if ($tokens[$index - 1]->isWhitespace()) { - if (' ' !== $tokens[$index - 1]->getContent() && !$tokens[$tokens->getPrevNonWhitespace($index - 1)]->isComment()) { - $tokens[$index - 1] = new Token([\T_WHITESPACE, ' ']); - } - } else { - $tokens->insertAt($index, new Token([\T_WHITESPACE, ' '])); - } - } - - /** - * @param int $index of `=` token - */ - private function removeWhitespaceAroundToken(Tokens $tokens, int $index): void - { - if (!$tokens[$tokens->getPrevNonWhitespace($index)]->isComment()) { - $tokens->removeLeadingWhitespace($index); - } - - $tokens->removeTrailingWhitespace($index); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareParenthesesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareParenthesesFixer.php deleted file mode 100644 index 655be34..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareParenthesesFixer.php +++ /dev/null @@ -1,59 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DeclareParenthesesFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There must not be spaces around `declare` statement parentheses.', - [new CodeSample("isTokenKindFound(\T_DECLARE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; 0 <= $index; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_DECLARE)) { - continue; - } - - $tokens->removeTrailingWhitespace($index); - - $startParenthesisIndex = $tokens->getNextTokenOfKind($index, ['(']); - $tokens->removeTrailingWhitespace($startParenthesisIndex); - - $endParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startParenthesisIndex); - $tokens->removeLeadingWhitespace($endParenthesisIndex); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php deleted file mode 100644 index d12a2a6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php +++ /dev/null @@ -1,131 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFunctionReferenceFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Vladimir Reznichenko - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DirConstantFixer extends AbstractFunctionReferenceFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replaces `dirname(__FILE__)` expression with equivalent `__DIR__` constant.', - [new CodeSample("isAllTokenKindsFound([\T_STRING, \T_FILE]); - } - - /** - * {@inheritdoc} - * - * Must run before CombineNestedDirnameFixer. - */ - public function getPriority(): int - { - return 40; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $currIndex = 0; - - do { - $boundaries = $this->find('dirname', $tokens, $currIndex, $tokens->count() - 1); - if (null === $boundaries) { - return; - } - - [$functionNameIndex, $openParenthesis, $closeParenthesis] = $boundaries; - - // analysing cursor shift, so nested expressions kept processed - $currIndex = $openParenthesis; - - // ensure __FILE__ is in between (...) - - $fileCandidateRightIndex = $tokens->getPrevMeaningfulToken($closeParenthesis); - $trailingCommaIndex = null; - - if ($tokens[$fileCandidateRightIndex]->equals(',')) { - $trailingCommaIndex = $fileCandidateRightIndex; - $fileCandidateRightIndex = $tokens->getPrevMeaningfulToken($fileCandidateRightIndex); - } - - $fileCandidateRight = $tokens[$fileCandidateRightIndex]; - - if (!$fileCandidateRight->isGivenKind(\T_FILE)) { - continue; - } - - $fileCandidateLeftIndex = $tokens->getNextMeaningfulToken($openParenthesis); - $fileCandidateLeft = $tokens[$fileCandidateLeftIndex]; - - if (!$fileCandidateLeft->isGivenKind(\T_FILE)) { - continue; - } - - // get rid of root namespace when it used - $namespaceCandidateIndex = $tokens->getPrevMeaningfulToken($functionNameIndex); - $namespaceCandidate = $tokens[$namespaceCandidateIndex]; - - if ($namespaceCandidate->isGivenKind(\T_NS_SEPARATOR)) { - $tokens->removeTrailingWhitespace($namespaceCandidateIndex); - $tokens->clearAt($namespaceCandidateIndex); - } - - if (null !== $trailingCommaIndex) { - if (!$tokens[$tokens->getNextNonWhitespace($trailingCommaIndex)]->isComment()) { - $tokens->removeTrailingWhitespace($trailingCommaIndex); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($trailingCommaIndex); - } - - // closing parenthesis removed with leading spaces - if (!$tokens[$tokens->getNextNonWhitespace($closeParenthesis)]->isComment()) { - $tokens->removeLeadingWhitespace($closeParenthesis); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($closeParenthesis); - - // opening parenthesis removed with trailing and leading spaces - if (!$tokens[$tokens->getNextNonWhitespace($openParenthesis)]->isComment()) { - $tokens->removeLeadingWhitespace($openParenthesis); - } - - $tokens->removeTrailingWhitespace($openParenthesis); - $tokens->clearTokenAndMergeSurroundingWhitespace($openParenthesis); - - // replace constant and remove function name - $tokens[$fileCandidateLeftIndex] = new Token([\T_DIR, '__DIR__']); - $tokens->clearTokenAndMergeSurroundingWhitespace($functionNameIndex); - } while (null !== $currIndex); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php deleted file mode 100644 index a30eddd..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php +++ /dev/null @@ -1,188 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * mute_deprecation_error?: bool, - * noise_remaining_usages?: bool, - * noise_remaining_usages_exclude?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * mute_deprecation_error: bool, - * noise_remaining_usages: bool, - * noise_remaining_usages_exclude: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Jules Pietri - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ErrorSuppressionFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const OPTION_MUTE_DEPRECATION_ERROR = 'mute_deprecation_error'; - - /** - * @internal - */ - public const OPTION_NOISE_REMAINING_USAGES = 'noise_remaining_usages'; - - /** - * @internal - */ - public const OPTION_NOISE_REMAINING_USAGES_EXCLUDE = 'noise_remaining_usages_exclude'; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Error control operator should be added to deprecation notices and/or removed from other cases.', - [ - new CodeSample(" true], - ), - new CodeSample( - " true, - self::OPTION_NOISE_REMAINING_USAGES_EXCLUDE => ['unlink'], - ], - ), - ], - null, - 'Risky because adding/removing `@` might cause changes to code behaviour or if `trigger_error` function is overridden.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder(self::OPTION_MUTE_DEPRECATION_ERROR, 'Whether to add `@` in deprecation notices.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder(self::OPTION_NOISE_REMAINING_USAGES, 'Whether to remove `@` in remaining usages.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder(self::OPTION_NOISE_REMAINING_USAGES_EXCLUDE, 'List of global functions to exclude from removing `@`.')) - ->setAllowedTypes(['string[]']) - ->setDefault([]) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - $excludedFunctions = array_map(static fn (string $function): string => strtolower($function), $this->configuration[self::OPTION_NOISE_REMAINING_USAGES_EXCLUDE]); - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (true === $this->configuration[self::OPTION_NOISE_REMAINING_USAGES] && $token->equals('@')) { - $tokens->clearAt($index); - - continue; - } - - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; - } - - $functionIndex = $index; - $startIndex = $index; - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $startIndex = $prevIndex; - $prevIndex = $tokens->getPrevMeaningfulToken($startIndex); - } - - $index = $prevIndex; - - if ($this->isDeprecationErrorCall($tokens, $functionIndex)) { - if (false === $this->configuration[self::OPTION_MUTE_DEPRECATION_ERROR]) { - continue; - } - - if ($tokens[$prevIndex]->equals('@')) { - continue; - } - - $tokens->insertAt($startIndex, new Token('@')); - - continue; - } - - if (!$tokens[$prevIndex]->equals('@')) { - continue; - } - - if (true === $this->configuration[self::OPTION_NOISE_REMAINING_USAGES] && !\in_array($tokens[$functionIndex]->getContent(), $excludedFunctions, true)) { - $tokens->clearAt($index); - } - } - } - - private function isDeprecationErrorCall(Tokens $tokens, int $index): bool - { - if ('trigger_error' !== strtolower($tokens[$index]->getContent())) { - return false; - } - - $endBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $tokens->getNextTokenOfKind($index, [[\T_STRING], '('])); - $prevIndex = $tokens->getPrevMeaningfulToken($endBraceIndex); - - if ($tokens[$prevIndex]->equals(',')) { - $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - } - - return $tokens[$prevIndex]->equals([\T_STRING, 'E_USER_DEPRECATED']); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php deleted file mode 100644 index 13c8896..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php +++ /dev/null @@ -1,84 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ExplicitIndirectVariableFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Add curly braces to indirect variables to make them clear to understand.', - [ - new CodeSample( - <<<'EOT' - $bar['baz']; - echo $foo->$callback($baz); - - EOT, - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_VARIABLE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index > 1; --$index) { - $token = $tokens[$index]; - if (!$token->isGivenKind(\T_VARIABLE)) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $prevToken = $tokens[$prevIndex]; - if (!$prevToken->equals('$') && !$prevToken->isObjectOperator()) { - continue; - } - - $openingBrace = CT::T_DYNAMIC_VAR_BRACE_OPEN; - $closingBrace = CT::T_DYNAMIC_VAR_BRACE_CLOSE; - if ($prevToken->isObjectOperator()) { - $openingBrace = CT::T_DYNAMIC_PROP_BRACE_OPEN; - $closingBrace = CT::T_DYNAMIC_PROP_BRACE_CLOSE; - } - - $tokens->overrideRange($index, $index, [ - new Token([$openingBrace, '{']), - new Token([\T_VARIABLE, $token->getContent()]), - new Token([$closingBrace, '}']), - ]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php deleted file mode 100644 index ff835b9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php +++ /dev/null @@ -1,315 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * functions?: list<'get_called_class'|'get_class'|'get_class_this'|'php_sapi_name'|'phpversion'|'pi'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * functions: list<'get_called_class'|'get_class'|'get_class_this'|'php_sapi_name'|'phpversion'|'pi'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FunctionToConstantFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var null|array> - */ - private static ?array $availableFunctions = null; - - /** - * @var array> - */ - private array $functionsFixMap; - - public function __construct() - { - if (null === self::$availableFunctions) { - self::$availableFunctions = [ - 'get_called_class' => [ - new Token([\T_STATIC, 'static']), - new Token([\T_DOUBLE_COLON, '::']), - new Token([CT::T_CLASS_CONSTANT, 'class']), - ], - 'get_class' => [ - new Token([\T_STRING, 'self']), - new Token([\T_DOUBLE_COLON, '::']), - new Token([CT::T_CLASS_CONSTANT, 'class']), - ], - 'get_class_this' => [ - new Token([\T_STATIC, 'static']), - new Token([\T_DOUBLE_COLON, '::']), - new Token([CT::T_CLASS_CONSTANT, 'class']), - ], - 'php_sapi_name' => [new Token([\T_STRING, 'PHP_SAPI'])], - 'phpversion' => [new Token([\T_STRING, 'PHP_VERSION'])], - 'pi' => [new Token([\T_STRING, 'M_PI'])], - ]; - } - - parent::__construct(); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replace core functions calls returning constants with the constants.', - [ - new CodeSample( - " ['get_called_class', 'get_class_this', 'phpversion']], - ), - ], - null, - 'Risky when any of the configured functions to replace are overridden.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before NativeConstantInvocationFixer, NativeFunctionCasingFixer, NoExtraBlankLinesFixer, NoSinglelineWhitespaceBeforeSemicolonsFixer, NoTrailingWhitespaceFixer, NoWhitespaceInBlankLineFixer, SelfStaticAccessorFixer. - * Must run after NoSpacesAfterFunctionNameFixer, NoSpacesInsideParenthesisFixer, SpacesInsideParenthesesFixer. - */ - public function getPriority(): int - { - return 2; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $this->functionsFixMap = []; - - foreach ($this->configuration['functions'] as $key) { - \assert(isset(self::$availableFunctions[$key])); - $this->functionsFixMap[$key] = self::$availableFunctions[$key]; - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionAnalyzer = new FunctionsAnalyzer(); - - for ($index = $tokens->count() - 4; $index > 0; --$index) { - $candidate = $this->getReplaceCandidate($tokens, $functionAnalyzer, $index); - if (null === $candidate) { - continue; - } - - $this->fixFunctionCallToConstant( - $tokens, - $index, - $candidate[0], // brace open - $candidate[1], // brace close - $candidate[2], // replacement - ); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $functionNames = array_keys(self::$availableFunctions); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('functions', 'List of function names to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($functionNames)]) - ->setDefault([ - 'get_called_class', - 'get_class', - 'get_class_this', - 'php_sapi_name', - 'phpversion', - 'pi', - ]) - ->getOption(), - ]); - } - - /** - * @param non-empty-list $replacements - */ - private function fixFunctionCallToConstant(Tokens $tokens, int $index, int $braceOpenIndex, int $braceCloseIndex, array $replacements): void - { - for ($i = $braceCloseIndex; $i >= $braceOpenIndex; --$i) { - if ($tokens[$i]->isGivenKind([\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT])) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - } - - if ( - $replacements[0]->isGivenKind([\T_CLASS_C, \T_STATIC]) - || ($replacements[0]->isGivenKind(\T_STRING) && 'self' === $replacements[0]->getContent()) - ) { - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $prevToken = $tokens[$prevIndex]; - if ($prevToken->isGivenKind(\T_NS_SEPARATOR)) { - $tokens->clearAt($prevIndex); - } - } - - $tokens->clearAt($index); - $tokens->insertAt($index, $replacements); - } - - /** - * @return ?array{int, int, non-empty-list} - */ - private function getReplaceCandidate( - Tokens $tokens, - FunctionsAnalyzer $functionAnalyzer, - int $index - ): ?array { - if (!$tokens[$index]->isGivenKind(\T_STRING)) { - return null; - } - - $lowerContent = strtolower($tokens[$index]->getContent()); - - if ('get_class' === $lowerContent) { - return $this->fixGetClassCall($tokens, $functionAnalyzer, $index); - } - - if (!isset($this->functionsFixMap[$lowerContent])) { - return null; - } - - if (!$functionAnalyzer->isGlobalFunctionCall($tokens, $index)) { - return null; - } - - // test if function call without parameters - $braceOpenIndex = $tokens->getNextMeaningfulToken($index); - if (!$tokens[$braceOpenIndex]->equals('(')) { - return null; - } - - $braceCloseIndex = $tokens->getNextMeaningfulToken($braceOpenIndex); - if (!$tokens[$braceCloseIndex]->equals(')')) { - return null; - } - - return $this->getReplacementTokenClones($lowerContent, $braceOpenIndex, $braceCloseIndex); - } - - /** - * @return ?array{int, int, non-empty-list} - */ - private function fixGetClassCall( - Tokens $tokens, - FunctionsAnalyzer $functionAnalyzer, - int $index - ): ?array { - if (!isset($this->functionsFixMap['get_class']) && !isset($this->functionsFixMap['get_class_this'])) { - return null; - } - - if (!$functionAnalyzer->isGlobalFunctionCall($tokens, $index)) { - return null; - } - - $braceOpenIndex = $tokens->getNextMeaningfulToken($index); - $braceCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $braceOpenIndex); - - if ($braceCloseIndex === $tokens->getNextMeaningfulToken($braceOpenIndex)) { // no arguments passed - if (isset($this->functionsFixMap['get_class'])) { - return $this->getReplacementTokenClones('get_class', $braceOpenIndex, $braceCloseIndex); - } - } elseif (isset($this->functionsFixMap['get_class_this'])) { - $isThis = false; - - for ($i = $braceOpenIndex + 1; $i < $braceCloseIndex; ++$i) { - if ($tokens[$i]->equalsAny([[\T_WHITESPACE], [\T_COMMENT], [\T_DOC_COMMENT], ')'])) { - continue; - } - - if ($tokens[$i]->isGivenKind(\T_VARIABLE) && '$this' === strtolower($tokens[$i]->getContent())) { - $isThis = true; - - continue; - } - - if (false === $isThis && $tokens[$i]->equals('(')) { - continue; - } - - $isThis = false; - - break; - } - - if ($isThis) { - return $this->getReplacementTokenClones('get_class_this', $braceOpenIndex, $braceCloseIndex); - } - } - - return null; - } - - /** - * @return array{int, int, non-empty-list} - */ - private function getReplacementTokenClones(string $lowerContent, int $braceOpenIndex, int $braceCloseIndex): array - { - \assert(isset($this->functionsFixMap[$lowerContent])); - $clones = array_map( - static fn (Token $token): Token => clone $token, - $this->functionsFixMap[$lowerContent], - ); - - return [ - $braceOpenIndex, - $braceCloseIndex, - $clones, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php deleted file mode 100644 index 4d2cb34..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php +++ /dev/null @@ -1,160 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author John Paul E. Balandan, CPA - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class GetClassToClassKeywordFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replace `get_class` calls on object variables with class keyword syntax.', - [ - new VersionSpecificCodeSample( - "= 8_00_00 && $tokens->isAllTokenKindsFound([\T_STRING, \T_VARIABLE]); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - $indicesToClear = []; - $tokenSlices = []; - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if (!$tokens[$index]->equals([\T_STRING, 'get_class'], false)) { - continue; - } - - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - continue; - } - - $braceOpenIndex = $tokens->getNextMeaningfulToken($index); - $braceCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $braceOpenIndex); - - if ($braceCloseIndex === $tokens->getNextMeaningfulToken($braceOpenIndex)) { - continue; // get_class with no arguments - } - - $meaningfulTokensCount = 0; - $variableTokensIndices = []; - - for ($i = $braceOpenIndex + 1; $i < $braceCloseIndex; ++$i) { - if (!$tokens[$i]->equalsAny([[\T_WHITESPACE], [\T_COMMENT], [\T_DOC_COMMENT], '(', ')'])) { - ++$meaningfulTokensCount; - } - - if (!$tokens[$i]->isGivenKind(\T_VARIABLE)) { - continue; - } - - if ('$this' === strtolower($tokens[$i]->getContent())) { - continue 2; // get_class($this) - } - - $variableTokensIndices[] = $i; - } - - if ($meaningfulTokensCount > 1 || 1 !== \count($variableTokensIndices)) { - continue; // argument contains more logic, or more arguments, or no variable argument - } - - $indicesToClear[$index] = [$braceOpenIndex, current($variableTokensIndices), $braceCloseIndex]; - } - - foreach ($indicesToClear as $index => $items) { - $tokenSlices[$index] = $this->getReplacementTokenSlices($tokens, $items[1]); - $this->clearGetClassCall($tokens, $index, $items[0], $items[2]); - } - - $tokens->insertSlices($tokenSlices); - } - - /** - * @return non-empty-list - */ - private function getReplacementTokenSlices(Tokens $tokens, int $variableIndex): array - { - return [ - new Token([\T_VARIABLE, $tokens[$variableIndex]->getContent()]), - new Token([\T_DOUBLE_COLON, '::']), - new Token([CT::T_CLASS_CONSTANT, 'class']), - ]; - } - - private function clearGetClassCall(Tokens $tokens, int $index, int $braceOpenIndex, int $braceCloseIndex): void - { - for ($i = $braceOpenIndex; $i <= $braceCloseIndex; ++$i) { - if ($tokens[$i]->isGivenKind([\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT])) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $tokens->clearAt($prevIndex); - } - - $tokens->clearAt($index); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php deleted file mode 100644 index 938614b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php +++ /dev/null @@ -1,171 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Vladimir Reznichenko - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class IsNullFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replaces `is_null($var)` expression with `null === $var`.', - [ - new CodeSample("isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - $currIndex = 0; - - while (true) { - // recalculate "end" because we might have added tokens in previous iteration - $matches = $tokens->findSequence([[\T_STRING, 'is_null'], '('], $currIndex, $tokens->count() - 1, false); - - // stop looping if didn't find any new matches - if (null === $matches) { - break; - } - - // 0 and 1 accordingly are "is_null", "(" tokens - $matches = array_keys($matches); - \assert(isset($matches[1])); - - // move the cursor just after the sequence - [$isNullIndex, $currIndex] = $matches; - - if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $matches[0])) { - continue; - } - - $next = $tokens->getNextMeaningfulToken($currIndex); - - if ($tokens[$next]->equals(')')) { - continue; - } - - $prevTokenIndex = $tokens->getPrevMeaningfulToken($matches[0]); - - // handle function references with namespaces - if ($tokens[$prevTokenIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $tokens->removeTrailingWhitespace($prevTokenIndex); - $tokens->clearAt($prevTokenIndex); - - $prevTokenIndex = $tokens->getPrevMeaningfulToken($prevTokenIndex); - } - - // check if inversion being used, text comparison is due to not existing constant - $isInvertedNullCheck = false; - - if ($tokens[$prevTokenIndex]->equals('!')) { - $isInvertedNullCheck = true; - - // get rid of inverting for proper transformations - $tokens->removeTrailingWhitespace($prevTokenIndex); - $tokens->clearAt($prevTokenIndex); - } - - // before getting rind of `()` around a parameter, ensure it's not assignment/ternary invariant - $referenceEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $matches[1]); - $isContainingDangerousConstructs = false; - - for ($paramTokenIndex = $matches[1]; $paramTokenIndex <= $referenceEnd; ++$paramTokenIndex) { - if (\in_array($tokens[$paramTokenIndex]->getContent(), ['?', '?:', '=', '??'], true)) { - $isContainingDangerousConstructs = true; - - break; - } - } - - // edge cases: is_null() followed/preceded by ==, ===, !=, !==, <>, (int-or-other-casting) - $parentLeftToken = $tokens[$tokens->getPrevMeaningfulToken($isNullIndex)]; - $parentRightToken = $tokens[$tokens->getNextMeaningfulToken($referenceEnd)]; - $parentOperations = [\T_IS_EQUAL, \T_IS_NOT_EQUAL, \T_IS_IDENTICAL, \T_IS_NOT_IDENTICAL]; - $wrapIntoParentheses = $parentLeftToken->isCast() || $parentLeftToken->isGivenKind($parentOperations) || $parentRightToken->isGivenKind($parentOperations); - - // possible trailing comma removed - $prevIndex = $tokens->getPrevMeaningfulToken($referenceEnd); - - if ($tokens[$prevIndex]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevIndex); - } - - if (!$isContainingDangerousConstructs) { - // closing parenthesis removed with leading spaces - $tokens->removeLeadingWhitespace($referenceEnd); - $tokens->clearAt($referenceEnd); - - // opening parenthesis removed with trailing spaces - $tokens->removeLeadingWhitespace($matches[1]); - $tokens->removeTrailingWhitespace($matches[1]); - $tokens->clearAt($matches[1]); - } - - // sequence which we'll use as a replacement - $replacement = [ - new Token([\T_STRING, 'null']), - new Token([\T_WHITESPACE, ' ']), - new Token($isInvertedNullCheck ? [\T_IS_NOT_IDENTICAL, '!=='] : [\T_IS_IDENTICAL, '===']), - new Token([\T_WHITESPACE, ' ']), - ]; - - if ($wrapIntoParentheses) { - array_unshift($replacement, new Token('(')); - $tokens->insertAt($referenceEnd + 1, new Token(')')); - } - - $tokens->overrideRange($isNullIndex, $isNullIndex, $replacement); - - // nested is_null calls support - $currIndex = $isNullIndex; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php deleted file mode 100644 index 9f0f13c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php +++ /dev/null @@ -1,229 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _UnsetInfo array{ - * startIndex: int, - * endIndex: int, - * isToTransform: bool, - * isFirst: bool, - * } - * - * @author Gert de Pagter - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUnsetOnPropertyFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Properties should be set to `null` instead of using `unset`.', - [new CodeSample("a);\n")], - null, - 'Risky when relying on attributes to be removed using `unset` rather than be set to `null`.' - .' Changing variables to `null` instead of unsetting means these still show up when looping over class variables' - .' and reference properties remain unbroken.' - .' Since PHP 7.4, this rule might introduce `null` assignments to properties whose type declaration does not allow it.', - ); - } - - public function isRisky(): bool - { - return true; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_UNSET) - && $tokens->isAnyTokenKindsFound([\T_OBJECT_OPERATOR, \T_PAAMAYIM_NEKUDOTAYIM]); - } - - /** - * {@inheritdoc} - * - * Must run before CombineConsecutiveUnsetsFixer. - */ - public function getPriority(): int - { - return 25; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_UNSET)) { - continue; - } - - $unsetsInfo = $this->getUnsetsInfo($tokens, $index); - - if (!$this->isAnyUnsetToTransform($unsetsInfo)) { - continue; - } - - $isLastUnset = true; // "last" as we reverse the array below - - foreach (array_reverse($unsetsInfo) as $unsetInfo) { - $this->updateTokens($tokens, $unsetInfo, $isLastUnset); - $isLastUnset = false; - } - } - } - - /** - * @return list<_UnsetInfo> - */ - private function getUnsetsInfo(Tokens $tokens, int $index): array - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - $unsetStart = $tokens->getNextTokenOfKind($index, ['(']); - $unsetEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $unsetStart); - $isFirst = true; - $unsets = []; - - foreach ($argumentsAnalyzer->getArguments($tokens, $unsetStart, $unsetEnd) as $startIndex => $endIndex) { - $startIndex = $tokens->getNextMeaningfulToken($startIndex - 1); - $endIndex = $tokens->getPrevMeaningfulToken($endIndex + 1); - $unsets[] = [ - 'startIndex' => $startIndex, - 'endIndex' => $endIndex, - 'isToTransform' => $this->isProperty($tokens, $startIndex, $endIndex), - 'isFirst' => $isFirst, - ]; - $isFirst = false; - } - - return $unsets; - } - - private function isProperty(Tokens $tokens, int $index, int $endIndex): bool - { - if ($tokens[$index]->isGivenKind(\T_VARIABLE)) { - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if (null === $nextIndex || !$tokens[$nextIndex]->isGivenKind(\T_OBJECT_OPERATOR)) { - return false; - } - - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - $nextNextIndex = $tokens->getNextMeaningfulToken($nextIndex); - - if (null !== $nextNextIndex && $nextNextIndex < $endIndex) { - return false; - } - - return null !== $nextIndex && $tokens[$nextIndex]->isGivenKind(\T_STRING); - } - - if ($tokens[$index]->isGivenKind([\T_NS_SEPARATOR, \T_STRING])) { - $nextIndex = $tokens->getTokenNotOfKindsSibling($index, 1, [\T_DOUBLE_COLON, \T_NS_SEPARATOR, \T_STRING]); - $nextNextIndex = $tokens->getNextMeaningfulToken($nextIndex); - - if (null !== $nextNextIndex && $nextNextIndex < $endIndex) { - return false; - } - - return null !== $nextIndex && $tokens[$nextIndex]->isGivenKind(\T_VARIABLE); - } - - return false; - } - - /** - * @param list<_UnsetInfo> $unsetsInfo - */ - private function isAnyUnsetToTransform(array $unsetsInfo): bool - { - foreach ($unsetsInfo as $unsetInfo) { - if ($unsetInfo['isToTransform']) { - return true; - } - } - - return false; - } - - /** - * @param _UnsetInfo $unsetInfo - */ - private function updateTokens(Tokens $tokens, array $unsetInfo, bool $isLastUnset): void - { - // if entry is first and to be transformed we remove leading "unset(" - if ($unsetInfo['isFirst'] && $unsetInfo['isToTransform']) { - $braceIndex = $tokens->getPrevTokenOfKind($unsetInfo['startIndex'], ['(']); - $unsetIndex = $tokens->getPrevTokenOfKind($braceIndex, [[\T_UNSET]]); - $tokens->clearTokenAndMergeSurroundingWhitespace($braceIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($unsetIndex); - } - - // if entry is last and to be transformed we remove trailing ")" - if ($isLastUnset && $unsetInfo['isToTransform']) { - $braceIndex = $tokens->getNextTokenOfKind($unsetInfo['endIndex'], [')']); - $previousIndex = $tokens->getPrevMeaningfulToken($braceIndex); - if ($tokens[$previousIndex]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($previousIndex); // trailing ',' in function call (PHP 7.3) - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($braceIndex); - } - - // if entry is not last we replace comma with semicolon (last entry already has semicolon - from original unset) - if (!$isLastUnset) { - $commaIndex = $tokens->getNextTokenOfKind($unsetInfo['endIndex'], [',']); - $tokens[$commaIndex] = new Token(';'); - } - - // if entry is to be unset and is not last we add trailing ")" - if (!$unsetInfo['isToTransform'] && !$isLastUnset) { - $tokens->insertAt($unsetInfo['endIndex'] + 1, new Token(')')); - } - - // if entry is to be unset and is not first we add leading "unset(" - if (!$unsetInfo['isToTransform'] && !$unsetInfo['isFirst']) { - $tokens->insertAt( - $unsetInfo['startIndex'], - [ - new Token([\T_UNSET, 'unset']), - new Token('('), - ], - ); - } - - // and finally - // if entry is to be transformed we add trailing " = null" - if ($unsetInfo['isToTransform']) { - $tokens->insertAt( - $unsetInfo['endIndex'] + 1, - [ - new Token([\T_WHITESPACE, ' ']), - new Token('='), - new Token([\T_WHITESPACE, ' ']), - new Token([\T_STRING, 'null']), - ], - ); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php deleted file mode 100644 index 2cfedf0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php +++ /dev/null @@ -1,356 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * syntax?: 'question_mark'|'union', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * syntax: 'question_mark'|'union', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author John Paul E. Balandan, CPA - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NullableTypeDeclarationFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const OPTION_SYNTAX_UNION = 'union'; - private const OPTION_SYNTAX_QUESTION_MARK = 'question_mark'; - private const PROPERTY_MODIFIERS = [\T_PRIVATE, \T_PROTECTED, \T_PUBLIC, \T_STATIC, \T_ABSTRACT, \T_FINAL, \T_VAR, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET]; - - private int $candidateTokenKind; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Nullable single type declaration should be standardised using configured syntax.', - [ - new VersionSpecificCodeSample( - <<<'PHP' - self::OPTION_SYNTAX_UNION], - ), - new VersionSpecificCodeSample( - <<<'PHP' - self::OPTION_SYNTAX_QUESTION_MARK], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return \PHP_VERSION_ID >= 8_00_00 && $tokens->isTokenKindFound($this->candidateTokenKind); - } - - /** - * {@inheritdoc} - * - * Must run before OrderedTypesFixer, TypesSpacesFixer. - * Must run after NullableTypeDeclarationForDefaultNullValueFixer. - */ - public function getPriority(): int - { - return 2; - } - - protected function configurePostNormalisation(): void - { - $this->candidateTokenKind = self::OPTION_SYNTAX_QUESTION_MARK === $this->configuration['syntax'] - ? CT::T_TYPE_ALTERNATION // `|` -> `?` - : CT::T_NULLABLE_TYPE; // `?` -> `|` - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('syntax', 'Whether to use question mark (`?`) or explicit `null` union for nullable type.')) - ->setAllowedValues([self::OPTION_SYNTAX_UNION, self::OPTION_SYNTAX_QUESTION_MARK]) - ->setDefault(self::OPTION_SYNTAX_QUESTION_MARK) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - foreach (array_reverse($this->getElements($tokens), true) as $index => $type) { - if ('property' === $type) { - $this->normalizePropertyType($tokens, $index); - - continue; - } - - $this->normalizeMethodReturnType($functionsAnalyzer, $tokens, $index); - $this->normalizeMethodArgumentType($functionsAnalyzer, $tokens, $index); - } - } - - /** - * @return array - * - * @phpstan-return array - */ - private function getElements(Tokens $tokens): array - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - $elements = array_map( - static fn (array $element): string => 'method' === $element['type'] ? 'function' : $element['type'], - array_filter( - $tokensAnalyzer->getClassyElements(), - static fn (array $element): bool => \in_array($element['type'], ['method', 'property'], true), - ), - ); - - foreach ($tokens as $index => $token) { - if ( - $token->isGivenKind(\T_FN) - || ($token->isGivenKind(\T_FUNCTION) && !isset($elements[$index])) - ) { - $elements[$index] = 'function'; - } - } - - return $elements; - } - - private function collectTypeAnalysis(Tokens $tokens, int $startIndex, int $endIndex): ?TypeAnalysis - { - $type = ''; - $typeStartIndex = $tokens->getNextMeaningfulToken($startIndex); - $typeEndIndex = $typeStartIndex; - - for ($i = $typeStartIndex; $i < $endIndex; ++$i) { - if ($tokens[$i]->isWhitespace() || $tokens[$i]->isComment()) { - continue; - } - - $type .= $tokens[$i]->getContent(); - $typeEndIndex = $i; - } - - return '' !== $type ? new TypeAnalysis($type, $typeStartIndex, $typeEndIndex) : null; - } - - private function isTypeNormalizable(TypeAnalysis $typeAnalysis): bool - { - $type = $typeAnalysis->getName(); - - if ('null' === strtolower($type) || !$typeAnalysis->isNullable()) { - return false; - } - - if (str_contains($type, '&')) { - return false; // skip DNF types - } - - if (!str_contains($type, '|')) { - return true; - } - - return 1 === substr_count($type, '|') && Preg::match('/(?:\|null$|^null\|)/i', $type); - } - - private function normalizePropertyType(Tokens $tokens, int $index): void - { - $propertyEndIndex = $index; - do { - $index = $tokens->getPrevMeaningfulToken($index); - } while (!$tokens[$index]->isGivenKind(self::PROPERTY_MODIFIERS)); - - $propertyType = $this->collectTypeAnalysis($tokens, $index, $propertyEndIndex); - - if (null === $propertyType || !$this->isTypeNormalizable($propertyType)) { - return; - } - - $this->normalizeNullableType($tokens, $propertyType); - } - - private function normalizeMethodArgumentType(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void - { - foreach (array_reverse($functionsAnalyzer->getFunctionArguments($tokens, $index), true) as $argumentInfo) { - $argumentType = $argumentInfo->getTypeAnalysis(); - - if (null === $argumentType || !$this->isTypeNormalizable($argumentType)) { - continue; - } - - $this->normalizeNullableType($tokens, $argumentType); - } - } - - private function normalizeMethodReturnType(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void - { - $returnType = $functionsAnalyzer->getFunctionReturnType($tokens, $index); - - if (null === $returnType || !$this->isTypeNormalizable($returnType)) { - return; - } - - $this->normalizeNullableType($tokens, $returnType); - } - - private function normalizeNullableType(Tokens $tokens, TypeAnalysis $typeAnalysis): void - { - $type = $typeAnalysis->getName(); - - if (!str_contains($type, '|') && !str_contains($type, '&')) { - $type = ($typeAnalysis->isNullable() ? '?' : '').$type; - } - - $isQuestionMarkSyntax = self::OPTION_SYNTAX_QUESTION_MARK === $this->configuration['syntax']; - - if ($isQuestionMarkSyntax) { - $normalizedType = $this->convertToNullableType($type); - $normalizedTypeAsString = implode('', $normalizedType); - } else { - $normalizedType = $this->convertToExplicitUnionType($type); - $normalizedTypeAsString = implode('|', $normalizedType); - } - - if ($normalizedTypeAsString === $type) { - return; // nothing to fix - } - - $tokens->overrideRange( - $typeAnalysis->getStartIndex(), - $typeAnalysis->getEndIndex(), - $this->createTypeDeclarationTokens($normalizedType, $isQuestionMarkSyntax), - ); - - $prevStartIndex = $typeAnalysis->getStartIndex() - 1; - if (!$tokens[$prevStartIndex]->isWhitespace() && !$tokens[$prevStartIndex]->equals('(')) { - $tokens->ensureWhitespaceAtIndex($prevStartIndex, 1, ' '); - } - } - - /** - * @return array{0: string, 1?: string} - */ - private function convertToNullableType(string $type): array - { - if (str_starts_with($type, '?')) { - return [$type]; // no need to convert; already fixed - } - - return ['?', Preg::replace('/(?:\|null$|^null\|)/i', '', $type)]; - } - - /** - * @return array{0: string, 1?: string} - */ - private function convertToExplicitUnionType(string $type): array - { - if (str_contains($type, '|')) { - return [$type]; // no need to convert; already fixed - } - - return ['null', substr($type, 1)]; - } - - /** - * @param list $types - * - * @return list - */ - private function createTypeDeclarationTokens(array $types, bool $isQuestionMarkSyntax): array - { - $count = \count($types); - $newTokens = []; - - foreach ($types as $index => $type) { - $specialType = [ - '?' => CT::T_NULLABLE_TYPE, - 'array' => CT::T_ARRAY_TYPEHINT, - 'callable' => \T_CALLABLE, - 'static' => \T_STATIC, - ][strtolower($type)] ?? null; - - if (null !== $specialType) { - $newTokens[] = new Token([$specialType, $type]); - } else { - foreach (explode('\\', $type) as $nsIndex => $value) { - if (0 === $nsIndex && '' === $value) { - continue; - } - - if ($nsIndex > 0) { - $newTokens[] = new Token([\T_NS_SEPARATOR, '\\']); - } - - $newTokens[] = new Token([\T_STRING, $value]); - } - } - - if ($index <= $count - 2 && !$isQuestionMarkSyntax) { - $newTokens[] = new Token([CT::T_TYPE_ALTERNATION, '|']); - } - } - - return $newTokens; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php deleted file mode 100644 index d4aedbc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php +++ /dev/null @@ -1,217 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; - -/** - * @deprecated - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * constructs?: list<'abstract'|'as'|'attribute'|'break'|'case'|'catch'|'class'|'clone'|'comment'|'const'|'const_import'|'continue'|'do'|'echo'|'else'|'elseif'|'enum'|'extends'|'final'|'finally'|'for'|'foreach'|'function'|'function_import'|'global'|'goto'|'if'|'implements'|'include'|'include_once'|'instanceof'|'insteadof'|'interface'|'match'|'named_argument'|'namespace'|'new'|'open_tag_with_echo'|'php_doc'|'php_open'|'print'|'private'|'protected'|'public'|'readonly'|'require'|'require_once'|'return'|'static'|'switch'|'throw'|'trait'|'try'|'type_colon'|'use'|'use_lambda'|'use_trait'|'var'|'while'|'yield'|'yield_from'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * constructs: list<'abstract'|'as'|'attribute'|'break'|'case'|'catch'|'class'|'clone'|'comment'|'const'|'const_import'|'continue'|'do'|'echo'|'else'|'elseif'|'enum'|'extends'|'final'|'finally'|'for'|'foreach'|'function'|'function_import'|'global'|'goto'|'if'|'implements'|'include'|'include_once'|'instanceof'|'insteadof'|'interface'|'match'|'named_argument'|'namespace'|'new'|'open_tag_with_echo'|'php_doc'|'php_open'|'print'|'private'|'protected'|'public'|'readonly'|'require'|'require_once'|'return'|'static'|'switch'|'throw'|'trait'|'try'|'type_colon'|'use'|'use_lambda'|'use_trait'|'var'|'while'|'yield'|'yield_from'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Andreas Möller - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleSpaceAfterConstructFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, DeprecatedFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array - */ - private const TOKEN_MAP = [ - 'abstract' => \T_ABSTRACT, - 'as' => \T_AS, - 'attribute' => CT::T_ATTRIBUTE_CLOSE, - 'break' => \T_BREAK, - 'case' => \T_CASE, - 'catch' => \T_CATCH, - 'class' => \T_CLASS, - 'clone' => \T_CLONE, - 'comment' => \T_COMMENT, - 'const' => \T_CONST, - 'const_import' => CT::T_CONST_IMPORT, - 'continue' => \T_CONTINUE, - 'do' => \T_DO, - 'echo' => \T_ECHO, - 'else' => \T_ELSE, - 'elseif' => \T_ELSEIF, - 'enum' => null, - 'extends' => \T_EXTENDS, - 'final' => \T_FINAL, - 'finally' => \T_FINALLY, - 'for' => \T_FOR, - 'foreach' => \T_FOREACH, - 'function' => \T_FUNCTION, - 'function_import' => CT::T_FUNCTION_IMPORT, - 'global' => \T_GLOBAL, - 'goto' => \T_GOTO, - 'if' => \T_IF, - 'implements' => \T_IMPLEMENTS, - 'include' => \T_INCLUDE, - 'include_once' => \T_INCLUDE_ONCE, - 'instanceof' => \T_INSTANCEOF, - 'insteadof' => \T_INSTEADOF, - 'interface' => \T_INTERFACE, - 'match' => null, - 'named_argument' => CT::T_NAMED_ARGUMENT_COLON, - 'namespace' => \T_NAMESPACE, - 'new' => \T_NEW, - 'open_tag_with_echo' => \T_OPEN_TAG_WITH_ECHO, - 'php_doc' => \T_DOC_COMMENT, - 'php_open' => \T_OPEN_TAG, - 'print' => \T_PRINT, - 'private' => \T_PRIVATE, - 'protected' => \T_PROTECTED, - 'public' => \T_PUBLIC, - 'readonly' => null, - 'require' => \T_REQUIRE, - 'require_once' => \T_REQUIRE_ONCE, - 'return' => \T_RETURN, - 'static' => \T_STATIC, - 'switch' => \T_SWITCH, - 'throw' => \T_THROW, - 'trait' => \T_TRAIT, - 'try' => \T_TRY, - 'type_colon' => CT::T_TYPE_COLON, - 'use' => \T_USE, - 'use_lambda' => CT::T_USE_LAMBDA, - 'use_trait' => CT::T_USE_TRAIT, - 'var' => \T_VAR, - 'while' => \T_WHILE, - 'yield' => \T_YIELD, - 'yield_from' => \T_YIELD_FROM, - ]; - - private SingleSpaceAroundConstructFixer $singleSpaceAroundConstructFixer; - - public function __construct() - { - $this->singleSpaceAroundConstructFixer = new SingleSpaceAroundConstructFixer(); - - parent::__construct(); - } - - public function getSuccessorsNames(): array - { - return array_keys($this->proxyFixers); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Ensures a single space after language constructs.', - [ - new CodeSample( - <<<'PHP' - [ - 'echo', - ], - ], - ), - new CodeSample( - <<<'PHP' - [ - 'yield_from', - ], - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BracesFixer, FunctionDeclarationFixer. - * Must run after ArraySyntaxFixer, ModernizeStrposFixer. - */ - public function getPriority(): int - { - return parent::getPriority(); - } - - protected function configurePostNormalisation(): void - { - $this->singleSpaceAroundConstructFixer->configure([ - 'constructs_contain_a_single_space' => [ - 'yield_from', - ], - 'constructs_preceded_by_a_single_space' => [], - 'constructs_followed_by_a_single_space' => $this->configuration['constructs'], - ]); - } - - protected function createProxyFixers(): array - { - return [$this->singleSpaceAroundConstructFixer]; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $defaults = self::TOKEN_MAP; - $tokens = array_keys($defaults); - - unset($defaults['type_colon']); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('constructs', 'List of constructs which must be followed by a single space.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($tokens)]) - ->setDefault(array_keys($defaults)) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php deleted file mode 100644 index f9d4161..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php +++ /dev/null @@ -1,510 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\LanguageConstruct; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * constructs_contain_a_single_space?: list<'yield_from'>, - * constructs_followed_by_a_single_space?: list<'abstract'|'as'|'attribute'|'break'|'case'|'catch'|'class'|'clone'|'comment'|'const'|'const_import'|'continue'|'do'|'echo'|'else'|'elseif'|'enum'|'extends'|'final'|'finally'|'for'|'foreach'|'function'|'function_import'|'global'|'goto'|'if'|'implements'|'include'|'include_once'|'instanceof'|'insteadof'|'interface'|'match'|'named_argument'|'namespace'|'new'|'open_tag_with_echo'|'php_doc'|'php_open'|'print'|'private'|'private_set'|'protected'|'protected_set'|'public'|'public_set'|'readonly'|'require'|'require_once'|'return'|'static'|'switch'|'throw'|'trait'|'try'|'type_colon'|'use'|'use_lambda'|'use_trait'|'var'|'while'|'yield'|'yield_from'>, - * constructs_preceded_by_a_single_space?: list<'as'|'else'|'elseif'|'use_lambda'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * constructs_contain_a_single_space: list<'yield_from'>, - * constructs_followed_by_a_single_space: list<'abstract'|'as'|'attribute'|'break'|'case'|'catch'|'class'|'clone'|'comment'|'const'|'const_import'|'continue'|'do'|'echo'|'else'|'elseif'|'enum'|'extends'|'final'|'finally'|'for'|'foreach'|'function'|'function_import'|'global'|'goto'|'if'|'implements'|'include'|'include_once'|'instanceof'|'insteadof'|'interface'|'match'|'named_argument'|'namespace'|'new'|'open_tag_with_echo'|'php_doc'|'php_open'|'print'|'private'|'private_set'|'protected'|'protected_set'|'public'|'public_set'|'readonly'|'require'|'require_once'|'return'|'static'|'switch'|'throw'|'trait'|'try'|'type_colon'|'use'|'use_lambda'|'use_trait'|'var'|'while'|'yield'|'yield_from'>, - * constructs_preceded_by_a_single_space: list<'as'|'else'|'elseif'|'use_lambda'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Andreas Möller - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleSpaceAroundConstructFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array - */ - private const TOKEN_MAP_CONTAIN_A_SINGLE_SPACE = [ - // for now, only one case - but we are ready to extend it, when we learn about new cases to cover - 'yield_from' => \T_YIELD_FROM, - ]; - - /** - * @var array - */ - private const TOKEN_MAP_PRECEDED_BY_A_SINGLE_SPACE = [ - 'as' => \T_AS, - 'else' => \T_ELSE, - 'elseif' => \T_ELSEIF, - 'use_lambda' => CT::T_USE_LAMBDA, - ]; - - /** - * @var array - */ - private const TOKEN_MAP_FOLLOWED_BY_A_SINGLE_SPACE = [ - 'abstract' => \T_ABSTRACT, - 'as' => \T_AS, - 'attribute' => CT::T_ATTRIBUTE_CLOSE, - 'break' => \T_BREAK, - 'case' => \T_CASE, - 'catch' => \T_CATCH, - 'class' => \T_CLASS, - 'clone' => \T_CLONE, - 'comment' => \T_COMMENT, - 'const' => \T_CONST, - 'const_import' => CT::T_CONST_IMPORT, - 'continue' => \T_CONTINUE, - 'do' => \T_DO, - 'echo' => \T_ECHO, - 'else' => \T_ELSE, - 'elseif' => \T_ELSEIF, - 'enum' => FCT::T_ENUM, - 'extends' => \T_EXTENDS, - 'final' => \T_FINAL, - 'finally' => \T_FINALLY, - 'for' => \T_FOR, - 'foreach' => \T_FOREACH, - 'function' => \T_FUNCTION, - 'function_import' => CT::T_FUNCTION_IMPORT, - 'global' => \T_GLOBAL, - 'goto' => \T_GOTO, - 'if' => \T_IF, - 'implements' => \T_IMPLEMENTS, - 'include' => \T_INCLUDE, - 'include_once' => \T_INCLUDE_ONCE, - 'instanceof' => \T_INSTANCEOF, - 'insteadof' => \T_INSTEADOF, - 'interface' => \T_INTERFACE, - 'match' => FCT::T_MATCH, - 'named_argument' => CT::T_NAMED_ARGUMENT_COLON, - 'namespace' => \T_NAMESPACE, - 'new' => \T_NEW, - 'open_tag_with_echo' => \T_OPEN_TAG_WITH_ECHO, - 'php_doc' => \T_DOC_COMMENT, - 'php_open' => \T_OPEN_TAG, - 'print' => \T_PRINT, - 'private' => \T_PRIVATE, - 'private_set' => FCT::T_PRIVATE_SET, - 'protected' => \T_PROTECTED, - 'protected_set' => FCT::T_PROTECTED_SET, - 'public' => \T_PUBLIC, - 'public_set' => FCT::T_PUBLIC_SET, - 'readonly' => FCT::T_READONLY, - 'require' => \T_REQUIRE, - 'require_once' => \T_REQUIRE_ONCE, - 'return' => \T_RETURN, - 'static' => \T_STATIC, - 'switch' => \T_SWITCH, - 'throw' => \T_THROW, - 'trait' => \T_TRAIT, - 'try' => \T_TRY, - 'type_colon' => CT::T_TYPE_COLON, - 'use' => \T_USE, - 'use_lambda' => CT::T_USE_LAMBDA, - 'use_trait' => CT::T_USE_TRAIT, - 'var' => \T_VAR, - 'while' => \T_WHILE, - 'yield' => \T_YIELD, - 'yield_from' => \T_YIELD_FROM, - ]; - - /** - * @var array - */ - private array $fixTokenMapFollowedByASingleSpace = []; - - /** - * @var array - */ - private array $fixTokenMapContainASingleSpace = []; - - /** - * @var array - */ - private array $fixTokenMapPrecededByASingleSpace = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Ensures a single space after language constructs.', - [ - new CodeSample( - <<<'PHP' - [ - 'yield_from', - ], - 'constructs_followed_by_a_single_space' => [ - 'yield_from', - ], - ], - ), - new CodeSample( - <<<'PHP' - [ - 'use_lambda', - ], - 'constructs_followed_by_a_single_space' => [ - 'use_lambda', - ], - ], - ), - new CodeSample( - <<<'PHP' - [ - 'echo', - ], - ], - ), - new CodeSample( - <<<'PHP' - [ - 'yield_from', - ], - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BracesFixer, FunctionDeclarationFixer. - * Must run after ArraySyntaxFixer, ModernizeStrposFixer. - */ - public function getPriority(): int - { - return 36; - } - - public function isCandidate(Tokens $tokens): bool - { - $tokenKinds = [ - ...array_values($this->fixTokenMapContainASingleSpace), - ...array_values($this->fixTokenMapPrecededByASingleSpace), - ...array_values($this->fixTokenMapFollowedByASingleSpace), - ]; - - return $tokens->isAnyTokenKindsFound($tokenKinds); - } - - protected function configurePostNormalisation(): void - { - $this->fixTokenMapContainASingleSpace = []; - - foreach ($this->configuration['constructs_contain_a_single_space'] as $key) { - $this->fixTokenMapContainASingleSpace[$key] = self::TOKEN_MAP_CONTAIN_A_SINGLE_SPACE[$key]; - } - - $this->fixTokenMapPrecededByASingleSpace = []; - - foreach ($this->configuration['constructs_preceded_by_a_single_space'] as $key) { - $this->fixTokenMapPrecededByASingleSpace[$key] = self::TOKEN_MAP_PRECEDED_BY_A_SINGLE_SPACE[$key]; - } - - $this->fixTokenMapFollowedByASingleSpace = []; - - foreach ($this->configuration['constructs_followed_by_a_single_space'] as $key) { - $this->fixTokenMapFollowedByASingleSpace[$key] = self::TOKEN_MAP_FOLLOWED_BY_A_SINGLE_SPACE[$key]; - } - - if (isset($this->fixTokenMapFollowedByASingleSpace['public'])) { - $this->fixTokenMapFollowedByASingleSpace['constructor_public'] = CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC; - } - - if (isset($this->fixTokenMapFollowedByASingleSpace['protected'])) { - $this->fixTokenMapFollowedByASingleSpace['constructor_protected'] = CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED; - } - - if (isset($this->fixTokenMapFollowedByASingleSpace['private'])) { - $this->fixTokenMapFollowedByASingleSpace['constructor_private'] = CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE; - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokenKindsContainASingleSpace = array_values($this->fixTokenMapContainASingleSpace); - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if ($tokens[$index]->isGivenKind($tokenKindsContainASingleSpace)) { - $token = $tokens[$index]; - - if ( - $token->isGivenKind(\T_YIELD_FROM) - && 'yield from' !== strtolower($token->getContent()) - ) { - $tokens[$index] = new Token([\T_YIELD_FROM, Preg::replace( - '/\s+/', - ' ', - $token->getContent(), - )]); - } - } - } - - $tokenKindsPrecededByASingleSpace = array_values($this->fixTokenMapPrecededByASingleSpace); - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if ($tokens[$index]->isGivenKind($tokenKindsPrecededByASingleSpace)) { - if (!$this->isFullLineCommentBefore($tokens, $index)) { - $tokens->ensureWhitespaceAtIndex($index - 1, 1, ' '); - } - } - } - - $tokenKindsFollowedByASingleSpace = array_values($this->fixTokenMapFollowedByASingleSpace); - - for ($index = $tokens->count() - 2; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind($tokenKindsFollowedByASingleSpace)) { - continue; - } - - $whitespaceTokenIndex = $index + 1; - - if ($tokens[$whitespaceTokenIndex]->equalsAny([',', ':', ';', ')', [CT::T_ARRAY_BRACKET_CLOSE], [CT::T_DESTRUCTURING_BRACKET_CLOSE]])) { - continue; - } - - if ( - $token->isGivenKind(\T_STATIC) - && !$tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind([\T_FN, \T_FUNCTION, \T_NS_SEPARATOR, \T_STRING, \T_VARIABLE, CT::T_ARRAY_TYPEHINT, CT::T_NULLABLE_TYPE]) - ) { - continue; - } - - if ($token->isGivenKind(\T_OPEN_TAG)) { - if ($tokens[$whitespaceTokenIndex]->isGivenKind(\T_WHITESPACE) && !str_contains($tokens[$whitespaceTokenIndex]->getContent(), "\n") && !str_contains($token->getContent(), "\n")) { - $tokens->clearAt($whitespaceTokenIndex); - } - - continue; - } - - if ($token->isGivenKind(\T_CLASS) && $tokens[$tokens->getNextMeaningfulToken($index)]->equals('(')) { - continue; - } - - if ($token->isGivenKind([\T_EXTENDS, \T_IMPLEMENTS]) && $this->isMultilineExtendsOrImplementsWithMoreThanOneAncestor($tokens, $index)) { - continue; - } - - if ($token->isGivenKind(\T_RETURN) && $this->isMultiLineReturn($tokens, $index)) { - continue; - } - - if ($token->isGivenKind(\T_CONST) && $this->isMultilineCommaSeparatedConstant($tokens, $index)) { - continue; - } - - if ($token->isComment() || $token->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - if ($tokens[$whitespaceTokenIndex]->isGivenKind(\T_WHITESPACE) && str_contains($tokens[$whitespaceTokenIndex]->getContent(), "\n")) { - continue; - } - } - - if ($tokens[$whitespaceTokenIndex]->isWhitespace() && str_contains($tokens[$whitespaceTokenIndex]->getContent(), "\n")) { - $nextNextToken = $tokens[$whitespaceTokenIndex + 1]; - if ( - $nextNextToken->isGivenKind(FCT::T_ATTRIBUTE) - || $nextNextToken->isComment() && str_starts_with($nextNextToken->getContent(), '#[') - ) { - continue; - } - - if ($nextNextToken->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - } - - $tokens->ensureWhitespaceAtIndex($whitespaceTokenIndex, 0, ' '); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $tokenMapContainASingleSpaceKeys = array_keys(self::TOKEN_MAP_CONTAIN_A_SINGLE_SPACE); - $tokenMapPrecededByASingleSpaceKeys = array_keys(self::TOKEN_MAP_PRECEDED_BY_A_SINGLE_SPACE); - $tokenMapFollowedByASingleSpaceKeys = array_keys(self::TOKEN_MAP_FOLLOWED_BY_A_SINGLE_SPACE); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('constructs_contain_a_single_space', 'List of constructs which must contain a single space.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($tokenMapContainASingleSpaceKeys)]) - ->setDefault($tokenMapContainASingleSpaceKeys) - ->getOption(), - (new FixerOptionBuilder('constructs_preceded_by_a_single_space', 'List of constructs which must be preceded by a single space.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($tokenMapPrecededByASingleSpaceKeys)]) - ->setDefault(['as', 'use_lambda']) - ->getOption(), - (new FixerOptionBuilder('constructs_followed_by_a_single_space', 'List of constructs which must be followed by a single space.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($tokenMapFollowedByASingleSpaceKeys)]) - ->setDefault($tokenMapFollowedByASingleSpaceKeys) - ->getOption(), - ]); - } - - private function isMultiLineReturn(Tokens $tokens, int $index): bool - { - ++$index; - $tokenFollowingReturn = $tokens[$index]; - - if ( - !$tokenFollowingReturn->isGivenKind(\T_WHITESPACE) - || !str_contains($tokenFollowingReturn->getContent(), "\n") - ) { - return false; - } - - $nestedCount = 0; - - for ($indexEnd = \count($tokens) - 1, ++$index; $index < $indexEnd; ++$index) { - if (str_contains($tokens[$index]->getContent(), "\n")) { - return true; - } - - if ($tokens[$index]->equals('{')) { - ++$nestedCount; - } elseif ($tokens[$index]->equals('}')) { - --$nestedCount; - } elseif (0 === $nestedCount && $tokens[$index]->equalsAny([';', [\T_CLOSE_TAG]])) { - break; - } - } - - return false; - } - - private function isMultilineExtendsOrImplementsWithMoreThanOneAncestor(Tokens $tokens, int $index): bool - { - $hasMoreThanOneAncestor = false; - - while (true) { - ++$index; - $token = $tokens[$index]; - - if ($token->equals(',')) { - $hasMoreThanOneAncestor = true; - - continue; - } - - if ($token->equals('{')) { - return false; - } - - if ($hasMoreThanOneAncestor && str_contains($token->getContent(), "\n")) { - return true; - } - } - - return LogicException('Not reachable code was reached.'); // @phpstan-ignore deadCode.unreachable - } - - private function isMultilineCommaSeparatedConstant(Tokens $tokens, int $constantIndex): bool - { - $isMultilineConstant = false; - $hasMoreThanOneConstant = false; - $index = $constantIndex; - while (!$tokens[$index]->equalsAny([';', [\T_CLOSE_TAG]])) { - ++$index; - - $isMultilineConstant = $isMultilineConstant || str_contains($tokens[$index]->getContent(), "\n"); - - if ($tokens[$index]->equals(',')) { - $hasMoreThanOneConstant = true; - } - - $blockType = Tokens::detectBlockType($tokens[$index]); - - if (null !== $blockType && true === $blockType['isStart']) { - $index = $tokens->findBlockEnd($blockType['type'], $index); - } - } - - return $hasMoreThanOneConstant && $isMultilineConstant; - } - - private function isFullLineCommentBefore(Tokens $tokens, int $index): bool - { - $beforeIndex = $tokens->getPrevNonWhitespace($index); - - if (!$tokens[$beforeIndex]->isGivenKind(\T_COMMENT)) { - return false; - } - - $content = $tokens[$beforeIndex]->getContent(); - - return str_starts_with($content, '#') || str_starts_with($content, '//'); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php deleted file mode 100644 index 6f60b97..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php +++ /dev/null @@ -1,133 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ListNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * syntax?: 'long'|'short', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * syntax: 'long'|'short', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ListSyntaxFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private ?int $candidateTokenKind = null; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'List (`array` destructuring) assignment should be declared using the configured syntax.', - [ - new CodeSample( - " 'long'], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BinaryOperatorSpacesFixer, TernaryOperatorSpacesFixer. - */ - public function getPriority(): int - { - return 2; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound($this->candidateTokenKind); - } - - protected function configurePostNormalisation(): void - { - $this->candidateTokenKind = 'long' === $this->configuration['syntax'] ? CT::T_DESTRUCTURING_BRACKET_OPEN : \T_LIST; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; 0 <= $index; --$index) { - if ($tokens[$index]->isGivenKind($this->candidateTokenKind)) { - if (\T_LIST === $this->candidateTokenKind) { - $this->fixToShortSyntax($tokens, $index); - } else { - $this->fixToLongSyntax($tokens, $index); - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('syntax', 'Whether to use the `long` or `short` syntax for array destructuring.')) - ->setAllowedValues(['long', 'short']) - ->setDefault('short') - ->getOption(), - ]); - } - - private function fixToLongSyntax(Tokens $tokens, int $index): void - { - $closeIndex = $tokens->getNextTokenOfKind($index, [ - [CT::T_DESTRUCTURING_BRACKET_CLOSE], - '[', // [CT::T_ARRAY_BRACKET_OPEN], - ]); - if (!$tokens[$closeIndex]->isGivenKind(CT::T_DESTRUCTURING_BRACKET_CLOSE)) { - return; - } - - $tokens[$index] = new Token('('); - $tokens[$closeIndex] = new Token(')'); - $tokens->insertAt($index, new Token([\T_LIST, 'list'])); - } - - private function fixToShortSyntax(Tokens $tokens, int $index): void - { - $openIndex = $tokens->getNextTokenOfKind($index, ['(']); - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); - - $tokens[$openIndex] = new Token([CT::T_DESTRUCTURING_BRACKET_OPEN, '[']); - $tokens[$closeIndex] = new Token([CT::T_DESTRUCTURING_BRACKET_CLOSE, ']']); - - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php deleted file mode 100644 index 562324f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php +++ /dev/null @@ -1,129 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\NamespaceNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶3. - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BlankLineAfterNamespaceFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There MUST be one blank line after the namespace declaration.', - [ - new CodeSample("isTokenKindFound(\T_NAMESPACE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $lastIndex = $tokens->count() - 1; - - for ($index = $lastIndex; $index >= 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_NAMESPACE)) { - continue; - } - - $semicolonIndex = $tokens->getNextTokenOfKind($index, [';', '{', [\T_CLOSE_TAG]]); - $semicolonToken = $tokens[$semicolonIndex]; - - if (!$semicolonToken->equals(';')) { - continue; - } - - $indexToEnsureBlankLineAfter = $this->getIndexToEnsureBlankLineAfter($tokens, $semicolonIndex); - $indexToEnsureBlankLine = $tokens->getNonEmptySibling($indexToEnsureBlankLineAfter, 1); - - if (null !== $indexToEnsureBlankLine && $tokens[$indexToEnsureBlankLine]->isWhitespace()) { - $tokens[$indexToEnsureBlankLine] = $this->getTokenToInsert($tokens[$indexToEnsureBlankLine]->getContent(), $indexToEnsureBlankLine === $lastIndex); - } else { - $tokens->insertAt($indexToEnsureBlankLineAfter + 1, $this->getTokenToInsert('', $indexToEnsureBlankLineAfter === $lastIndex)); - } - } - } - - private function getIndexToEnsureBlankLineAfter(Tokens $tokens, int $index): int - { - $indexToEnsureBlankLine = $index; - $nextIndex = $tokens->getNonEmptySibling($indexToEnsureBlankLine, 1); - - while (null !== $nextIndex) { - $token = $tokens[$nextIndex]; - - if ($token->isWhitespace()) { - if (Preg::match('/\R/', $token->getContent())) { - break; - } - $nextNextIndex = $tokens->getNonEmptySibling($nextIndex, 1); - - if (!$tokens[$nextNextIndex]->isComment()) { - break; - } - } - - if (!$token->isWhitespace() && !$token->isComment()) { - break; - } - - $indexToEnsureBlankLine = $nextIndex; - $nextIndex = $tokens->getNonEmptySibling($indexToEnsureBlankLine, 1); - } - - return $indexToEnsureBlankLine; - } - - private function getTokenToInsert(string $currentContent, bool $isLastIndex): Token - { - $ending = $this->whitespacesConfig->getLineEnding(); - - $emptyLines = $isLastIndex ? $ending : $ending.$ending; - $indent = Preg::match('/^.*\R( *)$/s', $currentContent, $matches) ? $matches[1] : ''; - - return new Token([\T_WHITESPACE, $emptyLines.$indent]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php deleted file mode 100644 index 23827f7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php +++ /dev/null @@ -1,239 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\NamespaceNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * max_line_breaks?: int, - * min_line_breaks?: int, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * max_line_breaks: int, - * min_line_breaks: int, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Graham Campbell - * @author Greg Korba - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BlankLinesBeforeNamespaceFixer extends AbstractFixer implements WhitespacesAwareFixerInterface, ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Controls blank lines before a namespace declaration.', - [ - new CodeSample(" 1]), - new CodeSample(" 2]), - new CodeSample(" 2]), - new CodeSample(" 0, 'max_line_breaks' => 0]), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_NAMESPACE); - } - - /** - * {@inheritdoc} - * - * Must run after BlankLineAfterOpeningTagFixer, HeaderCommentFixer. - */ - public function getPriority(): int - { - return -31; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('min_line_breaks', 'Minimum line breaks that should exist before namespace declaration.')) - ->setAllowedTypes(['int']) - ->setDefault(2) - ->setNormalizer(static function (Options $options, int $value): int { - if ($value < 0) { - throw new InvalidFixerConfigurationException( - (new self())->getName(), - 'Option `min_line_breaks` cannot be lower than 0.', - ); - } - - return $value; - }) - ->getOption(), - (new FixerOptionBuilder('max_line_breaks', 'Maximum line breaks that should exist before namespace declaration.')) - ->setAllowedTypes(['int']) - ->setDefault(2) - ->setNormalizer(static function (Options $options, int $value): int { - if ($value < 0) { - throw new InvalidFixerConfigurationException( - (new self())->getName(), - 'Option `max_line_breaks` cannot be lower than 0.', - ); - } - - if ($value < $options['min_line_breaks']) { - throw new InvalidFixerConfigurationException( - (new self())->getName(), - 'Option `max_line_breaks` cannot have lower value than `min_line_breaks`.', - ); - } - - return $value; - }) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_NAMESPACE)) { - $this->fixLinesBeforeNamespace( - $tokens, - $index, - $this->configuration['min_line_breaks'], - $this->configuration['max_line_breaks'], - ); - } - } - } - - /** - * Make sure # of line breaks prefixing namespace is within given range. - * - * @param int $expectedMin min. # of line breaks - * @param int $expectedMax max. # of line breaks - */ - protected function fixLinesBeforeNamespace(Tokens $tokens, int $index, int $expectedMin, int $expectedMax): void - { - // Let's determine the total numbers of new lines before the namespace - // and the opening token - $openingTokenIndex = null; - $precedingNewlines = 0; - $newlineInOpening = false; - $openingToken = null; - - for ($i = 1; $i <= 2; ++$i) { - if (isset($tokens[$index - $i])) { - $token = $tokens[$index - $i]; - - if ($token->isGivenKind(\T_OPEN_TAG)) { - $openingToken = $token; - $openingTokenIndex = $index - $i; - $newlineInOpening = str_contains($token->getContent(), "\n"); - - if ($newlineInOpening) { - ++$precedingNewlines; - } - - break; - } - - if (false === $token->isGivenKind(\T_WHITESPACE)) { - break; - } - - $precedingNewlines += substr_count($token->getContent(), "\n"); - } - } - - if ($precedingNewlines >= $expectedMin && $precedingNewlines <= $expectedMax) { - return; - } - - $previousIndex = $index - 1; - $previous = $tokens[$previousIndex]; - - if (0 === $expectedMax) { - // Remove all the previous new lines - if ($previous->isWhitespace()) { - $tokens->clearAt($previousIndex); - } - - // Remove new lines in opening token - if ($newlineInOpening) { - $tokens[$openingTokenIndex] = new Token([\T_OPEN_TAG, rtrim($openingToken->getContent()).' ']); - } - - return; - } - - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - // Allow only as many line breaks as configured: - // - keep as-is when current preceding line breaks are within configured range - // - use configured max line breaks if currently there is more preceding line breaks - // - use configured min line breaks if currently there is less preceding line breaks - $newlinesForWhitespaceToken = $precedingNewlines >= $expectedMax - ? $expectedMax - : max($precedingNewlines, $expectedMin); - - if (null !== $openingToken) { - // Use the configured line ending for the PHP opening tag - $content = rtrim($openingToken->getContent()); - $newContent = $content.$lineEnding; - $tokens[$openingTokenIndex] = new Token([\T_OPEN_TAG, $newContent]); - --$newlinesForWhitespaceToken; - } - - if (0 === $newlinesForWhitespaceToken) { - // We have all the needed new lines in the opening tag - if ($previous->isWhitespace()) { - // Let's remove the previous token containing extra new lines - $tokens->clearAt($previousIndex); - } - - return; - } - - if ($previous->isWhitespace()) { - // Fix the previous whitespace token - $content = $previous->getContent(); - $pos = strrpos($content, "\n"); - $content = false === $pos ? '' : substr($content, $pos + 1); - $tokens[$previousIndex] = new Token([\T_WHITESPACE, str_repeat($lineEnding, $newlinesForWhitespaceToken).$content]); - } else { - // Add a new whitespace token - $tokens->insertAt($index, new Token([\T_WHITESPACE, str_repeat($lineEnding, $newlinesForWhitespaceToken)])); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php deleted file mode 100644 index 2cb05a3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php +++ /dev/null @@ -1,111 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\NamespaceNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CleanNamespaceFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - $samples = []; - - foreach (['namespace Foo \ Bar;', 'echo foo /* comment */ \ bar();'] as $sample) { - $samples[] = new VersionSpecificCodeSample( - "isTokenKindFound(\T_NS_SEPARATOR); - } - - /** - * {@inheritdoc} - * - * Must run before PhpUnitDataProviderReturnTypeFixer. - */ - public function getPriority(): int - { - return 10; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $count = $tokens->count(); - - for ($index = 0; $index < $count; ++$index) { - if ($tokens[$index]->isGivenKind(\T_NS_SEPARATOR)) { - $previousIndex = $tokens->getPrevMeaningfulToken($index); - - $index = $this->fixNamespace( - $tokens, - $tokens[$previousIndex]->isGivenKind(\T_STRING) ? $previousIndex : $index, - ); - } - } - } - - /** - * @param int $index start of namespace - */ - private function fixNamespace(Tokens $tokens, int $index): int - { - $tillIndex = $index; - - // go to the end of the namespace - while ($tokens[$tillIndex]->isGivenKind([\T_NS_SEPARATOR, \T_STRING])) { - $tillIndex = $tokens->getNextMeaningfulToken($tillIndex); - } - - $tillIndex = $tokens->getPrevMeaningfulToken($tillIndex); - - $spaceIndices = []; - - for (; $index <= $tillIndex; ++$index) { - if ($tokens[$index]->isGivenKind(\T_WHITESPACE)) { - $spaceIndices[] = $index; - } elseif ($tokens[$index]->isComment()) { - $tokens->clearAt($index); - } - } - - if ($tokens[$index - 1]->isWhitespace()) { - array_pop($spaceIndices); - } - - foreach ($spaceIndices as $i) { - $tokens->clearAt($i); - } - - return $index; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php deleted file mode 100644 index d8e54d6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\NamespaceNotation; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Graham Campbell - * - * @deprecated Use `blank_lines_before_namespace` with config: ['min_line_breaks' => 0, 'max_line_breaks' => 1] - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoBlankLinesBeforeNamespaceFixer extends AbstractProxyFixer implements WhitespacesAwareFixerInterface, DeprecatedFixerInterface -{ - public function getSuccessorsNames(): array - { - return array_keys($this->proxyFixers); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_NAMESPACE); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should be no blank lines before a namespace declaration.', - [ - new CodeSample( - "configure([ - 'min_line_breaks' => 0, - 'max_line_breaks' => 1, - ]); - - return [ - $blankLineBeforeNamespace, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php deleted file mode 100644 index bbe838c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php +++ /dev/null @@ -1,99 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\NamespaceNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Bram Gotink - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoLeadingNamespaceWhitespaceFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_NAMESPACE); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The namespace declaration line shouldn\'t contain leading whitespace.', - [ - new CodeSample( - <<<'PHP' - isGivenKind(\T_NAMESPACE)) { - continue; - } - - $beforeNamespaceIndex = $index - 1; - $beforeNamespace = $tokens[$beforeNamespaceIndex]; - - if (!$beforeNamespace->isWhitespace()) { - if (!self::endsWithWhitespace($beforeNamespace->getContent())) { - $tokens->insertAt($index, new Token([\T_WHITESPACE, $this->whitespacesConfig->getLineEnding()])); - } - - continue; - } - - $lastNewline = strrpos($beforeNamespace->getContent(), "\n"); - - if (false === $lastNewline) { - $beforeBeforeNamespace = $tokens[$index - 2]; - - if (self::endsWithWhitespace($beforeBeforeNamespace->getContent())) { - $tokens->clearAt($beforeNamespaceIndex); - } else { - $tokens[$beforeNamespaceIndex] = new Token([\T_WHITESPACE, ' ']); - } - } else { - $tokens[$beforeNamespaceIndex] = new Token([\T_WHITESPACE, substr($beforeNamespace->getContent(), 0, $lastNewline + 1)]); - } - } - } - - private static function endsWithWhitespace(string $str): bool - { - if ('' === $str) { - return false; - } - - return '' === trim(substr($str, -1)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php deleted file mode 100644 index a8c684c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php +++ /dev/null @@ -1,77 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\NamespaceNotation; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Graham Campbell - * - * @deprecated Use `blank_lines_before_namespace` with config: ['min_line_breaks' => 2, 'max_line_breaks' => 2] (default) - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleBlankLineBeforeNamespaceFixer extends AbstractProxyFixer implements WhitespacesAwareFixerInterface, DeprecatedFixerInterface -{ - public function getSuccessorsNames(): array - { - return array_keys($this->proxyFixers); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should be exactly one blank line before a namespace declaration.', - [ - new CodeSample("isTokenKindFound(\T_NAMESPACE); - } - - /** - * {@inheritdoc} - * - * Must run after HeaderCommentFixer. - */ - public function getPriority(): int - { - return parent::getPriority(); - } - - protected function createProxyFixers(): array - { - $blankLineBeforeNamespace = new BlankLinesBeforeNamespaceFixer(); - $blankLineBeforeNamespace->configure([ - 'min_line_breaks' => 2, - 'max_line_breaks' => 2, - ]); - - return [ - $blankLineBeforeNamespace, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php deleted file mode 100644 index 1b00009..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php +++ /dev/null @@ -1,232 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Naming; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Fred Cox - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoHomoglyphNamesFixer extends AbstractFixer -{ - /** - * Used the program https://github.com/mcfedr/homoglyph-download - * to generate this list from - * http://homoglyphs.net/?text=abcdefghijklmnopqrstuvwxyz&lang=en&exc7=1&exc8=1&exc13=1&exc14=1. - * - * Symbols replaced include - * - Latin homoglyphs - * - IPA extensions - * - Greek and Coptic - * - Cyrillic - * - Cyrillic Supplement - * - Letterlike Symbols - * - Latin Numbers - * - Fullwidth Latin - * - * This is not the complete list of unicode homographs, but limited - * to those you are more likely to have typed/copied by accident - * - * @var array - */ - private const REPLACEMENTS = [ - 'O' => '0', - '0' => '0', - 'I' => '1', - '1' => '1', - '2' => '2', - '3' => '3', - '4' => '4', - '5' => '5', - '6' => '6', - '7' => '7', - '8' => '8', - '9' => '9', - 'Α' => 'A', - 'А' => 'A', - 'A' => 'A', - 'ʙ' => 'B', - 'Β' => 'B', - 'В' => 'B', - 'B' => 'B', - 'Ϲ' => 'C', - 'С' => 'C', - 'Ⅽ' => 'C', - 'C' => 'C', - 'Ⅾ' => 'D', - 'D' => 'D', - 'Ε' => 'E', - 'Е' => 'E', - 'E' => 'E', - 'Ϝ' => 'F', - 'F' => 'F', - 'ɢ' => 'G', - 'Ԍ' => 'G', - 'G' => 'G', - 'ʜ' => 'H', - 'Η' => 'H', - 'Н' => 'H', - 'H' => 'H', - 'l' => 'I', - 'Ι' => 'I', - 'І' => 'I', - 'Ⅰ' => 'I', - 'I' => 'I', - 'Ј' => 'J', - 'J' => 'J', - 'Κ' => 'K', - 'К' => 'K', - 'K' => 'K', - 'K' => 'K', - 'ʟ' => 'L', - 'Ⅼ' => 'L', - 'L' => 'L', - 'Μ' => 'M', - 'М' => 'M', - 'Ⅿ' => 'M', - 'M' => 'M', - 'ɴ' => 'N', - 'Ν' => 'N', - 'N' => 'N', - 'Ο' => 'O', - 'О' => 'O', - 'O' => 'O', - 'Ρ' => 'P', - 'Р' => 'P', - 'P' => 'P', - 'Q' => 'Q', - 'ʀ' => 'R', - 'R' => 'R', - 'Ѕ' => 'S', - 'S' => 'S', - 'Τ' => 'T', - 'Т' => 'T', - 'T' => 'T', - 'U' => 'U', - 'Ѵ' => 'V', - 'Ⅴ' => 'V', - 'V' => 'V', - 'W' => 'W', - 'Χ' => 'X', - 'Х' => 'X', - 'Ⅹ' => 'X', - 'X' => 'X', - 'ʏ' => 'Y', - 'Υ' => 'Y', - 'Ү' => 'Y', - 'Y' => 'Y', - 'Ζ' => 'Z', - 'Z' => 'Z', - '_' => '_', - 'ɑ' => 'a', - 'а' => 'a', - 'a' => 'a', - 'Ь' => 'b', - 'b' => 'b', - 'ϲ' => 'c', - 'с' => 'c', - 'ⅽ' => 'c', - 'c' => 'c', - 'ԁ' => 'd', - 'ⅾ' => 'd', - 'd' => 'd', - 'е' => 'e', - 'e' => 'e', - 'f' => 'f', - 'ɡ' => 'g', - 'g' => 'g', - 'һ' => 'h', - 'h' => 'h', - 'ɩ' => 'i', - 'і' => 'i', - 'ⅰ' => 'i', - 'i' => 'i', - 'ј' => 'j', - 'j' => 'j', - 'k' => 'k', - 'ⅼ' => 'l', - 'l' => 'l', - 'ⅿ' => 'm', - 'm' => 'm', - 'n' => 'n', - 'ο' => 'o', - 'о' => 'o', - 'o' => 'o', - 'р' => 'p', - 'p' => 'p', - 'q' => 'q', - 'r' => 'r', - 'ѕ' => 's', - 's' => 's', - 't' => 't', - 'u' => 'u', - 'ν' => 'v', - 'ѵ' => 'v', - 'ⅴ' => 'v', - 'v' => 'v', - 'ѡ' => 'w', - 'w' => 'w', - 'х' => 'x', - 'ⅹ' => 'x', - 'x' => 'x', - 'у' => 'y', - 'y' => 'y', - 'z' => 'z', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replace accidental usage of homoglyphs (non ascii characters) in names.', - [new CodeSample("isAnyTokenKindsFound([\T_VARIABLE, \T_STRING]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind([\T_VARIABLE, \T_STRING])) { - continue; - } - - $replaced = Preg::replaceCallback('/[^[:ascii:]]/u', static fn (array $matches): string => self::REPLACEMENTS[$matches[0]] ?? $matches[0], $token->getContent(), -1, $count); - - if ($count > 0) { - $tokens->offsetSet($index, new Token([$token->getId(), $replaced])); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/AssignNullCoalescingToCoalesceEqualFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/AssignNullCoalescingToCoalesceEqualFixer.php deleted file mode 100644 index 0540a59..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/AssignNullCoalescingToCoalesceEqualFixer.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\Fixer\AbstractShortOperatorFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AssignNullCoalescingToCoalesceEqualFixer extends AbstractShortOperatorFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Use the null coalescing assignment operator `??=` where possible.', - [ - new CodeSample( - "isTokenKindFound(\T_COALESCE); - } - - protected function isOperatorTokenCandidate(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->isGivenKind(\T_COALESCE)) { - return false; - } - - // make sure after '??' does not contain '? :' - - $nextIndex = $tokens->getNextTokenOfKind($index, ['?', ';', [\T_CLOSE_TAG]]); - - return !$tokens[$nextIndex]->equals('?'); - } - - protected function getReplacementToken(Token $token): Token - { - return new Token([\T_COALESCE_EQUAL, '??=']); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php deleted file mode 100644 index ea71da3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php +++ /dev/null @@ -1,996 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use PhpCsFixer\Utils; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * default?: 'align'|'align_by_scope'|'align_single_space'|'align_single_space_by_scope'|'align_single_space_minimal'|'align_single_space_minimal_by_scope'|'at_least_single_space'|'no_space'|'single_space'|null, - * operators?: array, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * default: 'align'|'align_by_scope'|'align_single_space'|'align_single_space_by_scope'|'align_single_space_minimal'|'align_single_space_minimal_by_scope'|'at_least_single_space'|'no_space'|'single_space'|null, - * operators: array, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BinaryOperatorSpacesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const SINGLE_SPACE = 'single_space'; - - /** - * @internal - */ - public const AT_LEAST_SINGLE_SPACE = 'at_least_single_space'; - - /** - * @internal - */ - public const NO_SPACE = 'no_space'; - - /** - * @internal - */ - public const ALIGN = 'align'; - - /** - * @internal - */ - public const ALIGN_BY_SCOPE = 'align_by_scope'; - - /** - * @internal - */ - public const ALIGN_SINGLE_SPACE = 'align_single_space'; - - /** - * @internal - */ - public const ALIGN_SINGLE_SPACE_BY_SCOPE = 'align_single_space_by_scope'; - - /** - * @internal - */ - public const ALIGN_SINGLE_SPACE_MINIMAL = 'align_single_space_minimal'; - - /** - * @internal - */ - public const ALIGN_SINGLE_SPACE_MINIMAL_BY_SCOPE = 'align_single_space_minimal_by_scope'; - - /** - * Placeholder used as anchor for right alignment. - * - * @internal - */ - public const ALIGN_PLACEHOLDER = "\x2 ALIGNABLE%d \x3"; - - /** - * @var non-empty-list - */ - private const SUPPORTED_OPERATORS = [ - '=', - '*', - '/', - '%', - '<', - '>', - '|', - '^', - '+', - '-', - '&', - '&=', - '&&', - '||', - '.=', - '/=', - '=>', - '==', - '>=', - '===', - '!=', - '<>', - '!==', - '<=', - 'and', - 'or', - 'xor', - '-=', - '%=', - '*=', - '|=', - '+=', - '<<', - '<<=', - '>>', - '>>=', - '^=', - '**', - '**=', - '<=>', - '??', - '??=', - ]; - - /** - * @var non-empty-list - */ - private const ALLOWED_VALUES = [ - self::ALIGN, - self::ALIGN_BY_SCOPE, - self::ALIGN_SINGLE_SPACE, - self::ALIGN_SINGLE_SPACE_MINIMAL, - self::ALIGN_SINGLE_SPACE_BY_SCOPE, - self::ALIGN_SINGLE_SPACE_MINIMAL_BY_SCOPE, - self::SINGLE_SPACE, - self::NO_SPACE, - self::AT_LEAST_SINGLE_SPACE, - null, - ]; - - /** - * Keep track of the deepest level ever achieved while - * parsing the code. Used later to replace alignment - * placeholders with spaces. - */ - private int $deepestLevel; - - /** - * Level counter of the current nest level. - * So one level alignments are not mixed with - * other level ones. - */ - private int $currentLevel; - - private TokensAnalyzer $tokensAnalyzer; - - /** - * @var array - */ - private array $alignOperatorTokens = []; - - /** - * @var array - */ - private array $operators = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Binary operators should be surrounded by space as configured.', - [ - new CodeSample( - <<<'PHP' - ['=' => self::ALIGN, 'xor' => null]], - ), - new CodeSample( - <<<'PHP' - ['+=' => self::ALIGN_SINGLE_SPACE]], - ), - new CodeSample( - <<<'PHP' - ['===' => self::ALIGN_SINGLE_SPACE_MINIMAL]], - ), - new CodeSample( - <<<'PHP' - ['|' => self::NO_SPACE]], - ), - new CodeSample( - <<<'PHP' - 1, - "baaaaaaaaaaar" => 11, - ]; - - PHP, - ['operators' => ['=>' => self::SINGLE_SPACE]], - ), - new CodeSample( - <<<'PHP' - 12, - "baaaaaaaaaaar" => 13, - - "baz" => 1, - ]; - - PHP, - ['operators' => ['=>' => self::ALIGN]], - ), - new CodeSample( - <<<'PHP' - 12, - "baaaaaaaaaaar" => 13, - - "baz" => 1, - ]; - - PHP, - ['operators' => ['=>' => self::ALIGN_BY_SCOPE]], - ), - new CodeSample( - <<<'PHP' - 12, - "baaaaaaaaaaar" => 13, - - "baz" => 1, - ]; - - PHP, - ['operators' => ['=>' => self::ALIGN_SINGLE_SPACE]], - ), - new CodeSample( - <<<'PHP' - 12, - "baaaaaaaaaaar" => 13, - - "baz" => 1, - ]; - - PHP, - ['operators' => ['=>' => self::ALIGN_SINGLE_SPACE_BY_SCOPE]], - ), - new CodeSample( - <<<'PHP' - 12, - "baaaaaaaaaaar" => 13, - - "baz" => 1, - ]; - - PHP, - ['operators' => ['=>' => self::ALIGN_SINGLE_SPACE_MINIMAL]], - ), - new CodeSample( - <<<'PHP' - 12, - "baaaaaaaaaaar" => 13, - - "baz" => 1, - ]; - - PHP, - ['operators' => ['=>' => self::ALIGN_SINGLE_SPACE_MINIMAL_BY_SCOPE]], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after ArrayIndentationFixer, ArraySyntaxFixer, AssignNullCoalescingToCoalesceEqualFixer, ListSyntaxFixer, LongToShorthandOperatorFixer, ModernizeStrposFixer, NoMultilineWhitespaceAroundDoubleArrowFixer, NoUnsetCastFixer, PowToExponentiationFixer, StandardizeNotEqualsFixer, StrictComparisonFixer. - */ - public function getPriority(): int - { - return -32; - } - - public function isCandidate(Tokens $tokens): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $this->operators = $this->resolveOperatorsFromConfig(); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->tokensAnalyzer = new TokensAnalyzer($tokens); - - // last and first tokens cannot be an operator - for ($index = $tokens->count() - 2; $index > 0; --$index) { - if (!$this->tokensAnalyzer->isBinaryOperator($index)) { - continue; - } - - if ('=' === $tokens[$index]->getContent()) { - $isDeclare = $this->isEqualPartOfDeclareStatement($tokens, $index); - if (false === $isDeclare) { - $this->fixWhiteSpaceAroundOperator($tokens, $index); - } else { - $index = $isDeclare; // skip `declare(foo ==bar)`, see `declare_equal_normalize` - } - } else { - $this->fixWhiteSpaceAroundOperator($tokens, $index); - } - - // previous of binary operator is now never an operator / previous of declare statement cannot be an operator - --$index; - } - - if (\count($this->alignOperatorTokens) > 0) { - $this->fixAlignment($tokens, $this->alignOperatorTokens); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('default', 'Default fix strategy.')) - ->setDefault(self::SINGLE_SPACE) - ->setAllowedValues(self::ALLOWED_VALUES) - ->getOption(), - (new FixerOptionBuilder('operators', 'Dictionary of `binary operator` => `fix strategy` values that differ from the default strategy. Supported are: '.Utils::naturalLanguageJoinWithBackticks(self::SUPPORTED_OPERATORS).'.')) - ->setAllowedTypes(['array']) - ->setAllowedValues([static function (array $option): bool { - foreach ($option as $operator => $value) { - if (!\in_array($operator, self::SUPPORTED_OPERATORS, true)) { - throw new InvalidOptionsException( - \sprintf( - 'Unexpected "operators" key, expected any of %s, got "%s".', - Utils::naturalLanguageJoin(self::SUPPORTED_OPERATORS), - \gettype($operator).'#'.$operator, - ), - ); - } - - if (!\in_array($value, self::ALLOWED_VALUES, true)) { - throw new InvalidOptionsException( - \sprintf( - 'Unexpected value for operator "%s", expected any of %s, got "%s".', - $operator, - Utils::naturalLanguageJoin(array_map( - static fn ($value): string => Utils::toString($value), - self::ALLOWED_VALUES, - )), - \is_object($value) ? \get_class($value) : (null === $value ? 'null' : \gettype($value).'#'.$value), - ), - ); - } - } - - return true; - }]) - ->setDefault([]) - ->getOption(), - ]); - } - - private function fixWhiteSpaceAroundOperator(Tokens $tokens, int $index): void - { - $tokenContent = strtolower($tokens[$index]->getContent()); - - if (!\array_key_exists($tokenContent, $this->operators)) { - return; // not configured to be changed - } - - if (self::SINGLE_SPACE === $this->operators[$tokenContent]) { - $this->fixWhiteSpaceAroundOperatorToSingleSpace($tokens, $index); - - return; - } - - if (self::AT_LEAST_SINGLE_SPACE === $this->operators[$tokenContent]) { - $this->fixWhiteSpaceAroundOperatorToAtLeastSingleSpace($tokens, $index); - - return; - } - - if (self::NO_SPACE === $this->operators[$tokenContent]) { - $this->fixWhiteSpaceAroundOperatorToNoSpace($tokens, $index); - - return; - } - - // schedule for alignment - $this->alignOperatorTokens[$tokenContent] = $this->operators[$tokenContent]; - - if ( - self::ALIGN === $this->operators[$tokenContent] - || self::ALIGN_BY_SCOPE === $this->operators[$tokenContent] - ) { - return; - } - - // fix white space after operator - if ($tokens[$index + 1]->isWhitespace()) { - if ( - self::ALIGN_SINGLE_SPACE_MINIMAL === $this->operators[$tokenContent] - || self::ALIGN_SINGLE_SPACE_MINIMAL_BY_SCOPE === $this->operators[$tokenContent] - ) { - $tokens[$index + 1] = new Token([\T_WHITESPACE, ' ']); - } - - return; - } - - $tokens->insertAt($index + 1, new Token([\T_WHITESPACE, ' '])); - } - - private function fixWhiteSpaceAroundOperatorToSingleSpace(Tokens $tokens, int $index): void - { - // fix white space after operator - if ($tokens[$index + 1]->isWhitespace()) { - $content = $tokens[$index + 1]->getContent(); - if (' ' !== $content && !str_contains($content, "\n") && !$tokens[$tokens->getNextNonWhitespace($index + 1)]->isComment()) { - $tokens[$index + 1] = new Token([\T_WHITESPACE, ' ']); - } - } else { - $tokens->insertAt($index + 1, new Token([\T_WHITESPACE, ' '])); - } - - // fix white space before operator - if ($tokens[$index - 1]->isWhitespace()) { - $content = $tokens[$index - 1]->getContent(); - if (' ' !== $content && !str_contains($content, "\n") && !$tokens[$tokens->getPrevNonWhitespace($index - 1)]->isComment()) { - $tokens[$index - 1] = new Token([\T_WHITESPACE, ' ']); - } - } else { - $tokens->insertAt($index, new Token([\T_WHITESPACE, ' '])); - } - } - - private function fixWhiteSpaceAroundOperatorToAtLeastSingleSpace(Tokens $tokens, int $index): void - { - // fix white space after operator - if (!$tokens[$index + 1]->isWhitespace()) { - $tokens->insertAt($index + 1, new Token([\T_WHITESPACE, ' '])); - } - - // fix white space before operator - if (!$tokens[$index - 1]->isWhitespace()) { - $tokens->insertAt($index, new Token([\T_WHITESPACE, ' '])); - } - } - - private function fixWhiteSpaceAroundOperatorToNoSpace(Tokens $tokens, int $index): void - { - // fix white space after operator - if ($tokens[$index + 1]->isWhitespace()) { - $content = $tokens[$index + 1]->getContent(); - if (!str_contains($content, "\n") && !$tokens[$tokens->getNextNonWhitespace($index + 1)]->isComment()) { - $tokens->clearAt($index + 1); - } - } - - // fix white space before operator - if ($tokens[$index - 1]->isWhitespace()) { - $content = $tokens[$index - 1]->getContent(); - if (!str_contains($content, "\n") && !$tokens[$tokens->getPrevNonWhitespace($index - 1)]->isComment()) { - $tokens->clearAt($index - 1); - } - } - } - - /** - * @return false|int index of T_DECLARE where the `=` belongs to or `false` - */ - private function isEqualPartOfDeclareStatement(Tokens $tokens, int $index) - { - $prevMeaningfulIndex = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$prevMeaningfulIndex]->isGivenKind(\T_STRING)) { - $prevMeaningfulIndex = $tokens->getPrevMeaningfulToken($prevMeaningfulIndex); - if ($tokens[$prevMeaningfulIndex]->equals('(')) { - $prevMeaningfulIndex = $tokens->getPrevMeaningfulToken($prevMeaningfulIndex); - if ($tokens[$prevMeaningfulIndex]->isGivenKind(\T_DECLARE)) { - return $prevMeaningfulIndex; - } - } - } - - return false; - } - - /** - * @return array - */ - private function resolveOperatorsFromConfig(): array - { - $operators = []; - - if (null !== $this->configuration['default']) { - foreach (self::SUPPORTED_OPERATORS as $operator) { - $operators[$operator] = $this->configuration['default']; - } - } - - foreach ($this->configuration['operators'] as $operator => $value) { - if (null === $value) { - unset($operators[$operator]); - } else { - $operators[$operator] = $value; - } - } - - return $operators; - } - - // Alignment logic related methods - - /** - * @param array $toAlign - */ - private function fixAlignment(Tokens $tokens, array $toAlign): void - { - $this->deepestLevel = 0; - $this->currentLevel = 0; - - foreach ($toAlign as $tokenContent => $alignStrategy) { - // This fixer works partially on Tokens and partially on string representation of code. - // During the process of fixing internal state of single Token may be affected by injecting ALIGN_PLACEHOLDER to its content. - // The placeholder will be resolved by `replacePlaceholders` method by removing placeholder or changing it into spaces. - // That way of fixing the code causes disturbances in marking Token as changed - if code is perfectly valid then placeholder - // still be injected and removed, which will cause the `changed` flag to be set. - // To handle that unwanted behaviour we work on clone of Tokens collection and then override original collection with fixed collection. - $tokensClone = clone $tokens; - - if ('=>' === $tokenContent) { - $this->injectAlignmentPlaceholdersForArrow($tokensClone, 0, \count($tokens)); - } else { - $this->injectAlignmentPlaceholdersDefault($tokensClone, 0, \count($tokens), $tokenContent); - } - - // for all tokens that should be aligned but do not have anything to align with, fix spacing if needed - if ( - self::ALIGN_SINGLE_SPACE === $alignStrategy - || self::ALIGN_SINGLE_SPACE_MINIMAL === $alignStrategy - || self::ALIGN_SINGLE_SPACE_BY_SCOPE === $alignStrategy - || self::ALIGN_SINGLE_SPACE_MINIMAL_BY_SCOPE === $alignStrategy - ) { - if ('=>' === $tokenContent) { - for ($index = $tokens->count() - 2; $index > 0; --$index) { - if ($tokens[$index]->isGivenKind(\T_DOUBLE_ARROW)) { // always binary operator, never part of declare statement - $this->fixWhiteSpaceBeforeOperator($tokensClone, $index, $alignStrategy); - } - } - } elseif ('=' === $tokenContent) { - for ($index = $tokens->count() - 2; $index > 0; --$index) { - if ('=' === $tokens[$index]->getContent() && false === $this->isEqualPartOfDeclareStatement($tokens, $index) && $this->tokensAnalyzer->isBinaryOperator($index)) { - $this->fixWhiteSpaceBeforeOperator($tokensClone, $index, $alignStrategy); - } - } - } else { - for ($index = $tokens->count() - 2; $index > 0; --$index) { - $content = $tokens[$index]->getContent(); - if (strtolower($content) === $tokenContent && $this->tokensAnalyzer->isBinaryOperator($index)) { // never part of declare statement - $this->fixWhiteSpaceBeforeOperator($tokensClone, $index, $alignStrategy); - } - } - } - } - - $tokens->setCode($this->replacePlaceholders($tokensClone, $alignStrategy, $tokenContent)); - } - } - - private function injectAlignmentPlaceholdersDefault(Tokens $tokens, int $startAt, int $endAt, string $tokenContent): void - { - $newLineFoundSinceLastPlaceholder = true; - - for ($index = $startAt; $index < $endAt; ++$index) { - $token = $tokens[$index]; - $content = $token->getContent(); - - if (str_contains($content, "\n")) { - $newLineFoundSinceLastPlaceholder = true; - } - - if ( - strtolower($content) === $tokenContent - && $this->tokensAnalyzer->isBinaryOperator($index) - && ('=' !== $content || false === $this->isEqualPartOfDeclareStatement($tokens, $index)) - && $newLineFoundSinceLastPlaceholder - ) { - $tokens[$index] = new Token(\sprintf(self::ALIGN_PLACEHOLDER, $this->currentLevel).$content); - $newLineFoundSinceLastPlaceholder = false; - - continue; - } - - if ($token->isGivenKind(\T_FN)) { - $from = $tokens->getNextMeaningfulToken($index); - $until = $this->tokensAnalyzer->getLastTokenIndexOfArrowFunction($index); - $this->injectAlignmentPlaceholders($tokens, $from + 1, $until - 1, $tokenContent); - $index = $until; - - continue; - } - - if ($token->isGivenKind([\T_FUNCTION, \T_CLASS])) { - $index = $tokens->getNextTokenOfKind($index, ['{', ';', '(']); - // We don't align `=` on multi-line definition of function parameters with default values - if ($tokens[$index]->equals('(')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - continue; - } - - if ($tokens[$index]->equals(';')) { - continue; - } - - // Update the token to the `{` one in order to apply the following logic - $token = $tokens[$index]; - } - - if ($token->equals('{')) { - $until = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - $this->injectAlignmentPlaceholders($tokens, $index + 1, $until - 1, $tokenContent); - $index = $until; - - continue; - } - - if ($token->equals('(')) { - $until = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $this->injectAlignmentPlaceholders($tokens, $index + 1, $until - 1, $tokenContent); - $index = $until; - - continue; - } - - if ($token->equals('[')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_INDEX_BRACKET, $index); - - continue; - } - - if ($token->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - $until = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $index); - $this->injectAlignmentPlaceholders($tokens, $index + 1, $until - 1, $tokenContent); - $index = $until; - - continue; - } - } - } - - private function injectAlignmentPlaceholders(Tokens $tokens, int $from, int $until, string $tokenContent): void - { - // Only inject placeholders for multi-line code - if ($tokens->isPartialCodeMultiline($from, $until)) { - ++$this->deepestLevel; - $currentLevel = $this->currentLevel; - $this->currentLevel = $this->deepestLevel; - $this->injectAlignmentPlaceholdersDefault($tokens, $from, $until, $tokenContent); - $this->currentLevel = $currentLevel; - } - } - - private function injectAlignmentPlaceholdersForArrow(Tokens $tokens, int $startAt, int $endAt): void - { - $newLineFoundSinceLastPlaceholder = true; - $yieldFoundSinceLastPlaceholder = false; - - for ($index = $startAt; $index < $endAt; ++$index) { - $token = $tokens[$index]; - $content = $token->getContent(); - - if (str_contains($content, "\n")) { - $newLineFoundSinceLastPlaceholder = true; - } - - if ($token->isGivenKind(\T_YIELD)) { - $yieldFoundSinceLastPlaceholder = true; - } - - if ($token->isGivenKind(\T_FN)) { - $yieldFoundSinceLastPlaceholder = false; - $from = $tokens->getNextMeaningfulToken($index); - $until = $this->tokensAnalyzer->getLastTokenIndexOfArrowFunction($index); - $this->injectArrayAlignmentPlaceholders($tokens, $from + 1, $until - 1); - $index = $until; - - continue; - } - - if ($token->isGivenKind(\T_ARRAY)) { // don't use "$tokens->isArray()" here, short arrays are handled in the next case - $yieldFoundSinceLastPlaceholder = false; - $from = $tokens->getNextMeaningfulToken($index); - $until = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $from); - $index = $until; - - $this->injectArrayAlignmentPlaceholders($tokens, $from + 1, $until - 1); - - continue; - } - - if ($token->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - $yieldFoundSinceLastPlaceholder = false; - $from = $index; - $until = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $from); - $index = $until; - - $this->injectArrayAlignmentPlaceholders($tokens, $from + 1, $until - 1); - - continue; - } - - // no need to analyse for `isBinaryOperator` (always true), nor if part of declare statement (not valid PHP) - // there is also no need to analyse the second arrow of a line - if ($token->isGivenKind(\T_DOUBLE_ARROW) && $newLineFoundSinceLastPlaceholder) { - if ($yieldFoundSinceLastPlaceholder) { - ++$this->deepestLevel; - ++$this->currentLevel; - } - $tokenContent = \sprintf(self::ALIGN_PLACEHOLDER, $this->currentLevel).$token->getContent(); - - $nextToken = $tokens[$index + 1]; - if (!$nextToken->isWhitespace()) { - $tokenContent .= ' '; - } elseif ($nextToken->isWhitespace(" \t")) { - $tokens[$index + 1] = new Token([\T_WHITESPACE, ' ']); - } - - $tokens[$index] = new Token([\T_DOUBLE_ARROW, $tokenContent]); - $newLineFoundSinceLastPlaceholder = false; - $yieldFoundSinceLastPlaceholder = false; - - continue; - } - - if ($token->equals(';')) { - ++$this->deepestLevel; - ++$this->currentLevel; - - continue; - } - - if ($token->equals(',')) { - for ($i = $index; $i < $endAt - 1; ++$i) { - if (str_contains($tokens[$i - 1]->getContent(), "\n")) { - $newLineFoundSinceLastPlaceholder = true; - - break; - } - - if ($tokens[$i + 1]->isGivenKind(\T_DOUBLE_ARROW)) { - break; - } - - if ($tokens[$i + 1]->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN])) { - $arrayStartIndex = $tokens[$i + 1]->isGivenKind(\T_ARRAY) - ? $tokens->getNextMeaningfulToken($i + 1) - : $i + 1; - $blockType = Tokens::detectBlockType($tokens[$arrayStartIndex]); - $arrayEndIndex = $tokens->findBlockEnd($blockType['type'], $arrayStartIndex); - - if ($tokens->isPartialCodeMultiline($arrayStartIndex, $arrayEndIndex)) { - break; - } - } - - ++$index; - } - } - - if ($token->equals('{')) { - $until = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - $this->injectArrayAlignmentPlaceholders($tokens, $index + 1, $until - 1); - $index = $until; - - continue; - } - - if ($token->equals('(')) { - $until = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $this->injectArrayAlignmentPlaceholders($tokens, $index + 1, $until - 1); - $index = $until; - - continue; - } - } - } - - private function injectArrayAlignmentPlaceholders(Tokens $tokens, int $from, int $until): void - { - // Only inject placeholders for multi-line arrays - if ($tokens->isPartialCodeMultiline($from, $until)) { - ++$this->deepestLevel; - $currentLevel = $this->currentLevel; - $this->currentLevel = $this->deepestLevel; - $this->injectAlignmentPlaceholdersForArrow($tokens, $from, $until); - $this->currentLevel = $currentLevel; - } - } - - private function fixWhiteSpaceBeforeOperator(Tokens $tokens, int $index, string $alignStrategy): void - { - // fix white space after operator is not needed as BinaryOperatorSpacesFixer took care of this (if strategy is _not_ ALIGN) - if (!$tokens[$index - 1]->isWhitespace()) { - $tokens->insertAt($index, new Token([\T_WHITESPACE, ' '])); - - return; - } - - if ( - self::ALIGN_SINGLE_SPACE_MINIMAL !== $alignStrategy && self::ALIGN_SINGLE_SPACE_MINIMAL_BY_SCOPE !== $alignStrategy - || $tokens[$tokens->getPrevNonWhitespace($index - 1)]->isComment() - ) { - return; - } - - $content = $tokens[$index - 1]->getContent(); - if (' ' !== $content && !str_contains($content, "\n")) { - $tokens[$index - 1] = new Token([\T_WHITESPACE, ' ']); - } - } - - /** - * Look for group of placeholders and provide vertical alignment. - */ - private function replacePlaceholders(Tokens $tokens, string $alignStrategy, string $tokenContent): string - { - $tmpCode = $tokens->generateCode(); - - for ($j = 0; $j <= $this->deepestLevel; ++$j) { - $placeholder = \sprintf(self::ALIGN_PLACEHOLDER, $j); - - if (!str_contains($tmpCode, $placeholder)) { - continue; - } - - $lines = explode("\n", $tmpCode); - $groups = []; - $groupIndex = 0; - $groups[$groupIndex] = []; - - foreach ($lines as $index => $line) { - if (substr_count($line, $placeholder) > 0) { - $groups[$groupIndex][] = $index; - } elseif ( - self::ALIGN_BY_SCOPE !== $alignStrategy - && self::ALIGN_SINGLE_SPACE_BY_SCOPE !== $alignStrategy - && self::ALIGN_SINGLE_SPACE_MINIMAL_BY_SCOPE !== $alignStrategy - ) { - ++$groupIndex; - $groups[$groupIndex] = []; - } - } - - foreach ($groups as $group) { - if (\count($group) < 1) { - continue; - } - - if (self::ALIGN !== $alignStrategy) { - // move placeholders to match strategy - foreach ($group as $index) { - \assert(isset($lines[$index])); - $currentPosition = strpos($lines[$index], $placeholder); - \assert(false !== $currentPosition); - $before = substr($lines[$index], 0, $currentPosition); - - if ( - self::ALIGN_SINGLE_SPACE === $alignStrategy - || self::ALIGN_SINGLE_SPACE_BY_SCOPE === $alignStrategy - ) { - if (!str_ends_with($before, ' ')) { // if last char of before-content is not ' '; add it - $before .= ' '; - } - } elseif ( - self::ALIGN_SINGLE_SPACE_MINIMAL === $alignStrategy - || self::ALIGN_SINGLE_SPACE_MINIMAL_BY_SCOPE === $alignStrategy - ) { - if (!Preg::match('/^\h+$/', $before)) { // if indent; do not move, leave to other fixer - $before = rtrim($before).' '; - } - } - - $lines[$index] = $before.substr($lines[$index], $currentPosition); - } - } - - $rightmostSymbol = 0; - foreach ($group as $index) { - \assert(isset($lines[$index])); - $rightmostSymbol = max($rightmostSymbol, $this->getSubstringWidth($lines[$index], $placeholder)); - } - - foreach ($group as $index) { - \assert(isset($lines[$index])); - $line = $lines[$index]; - $currentSymbol = $this->getSubstringWidth($line, $placeholder); - $delta = abs($rightmostSymbol - $currentSymbol); - - if ($delta > 0) { - $line = str_replace($placeholder, str_repeat(' ', $delta).$placeholder, $line); - $lines[$index] = $line; - } - } - } - - $tmpCode = str_replace($placeholder, '', implode("\n", $lines)); - } - - return $tmpCode; - } - - private function getSubstringWidth(string $haystack, string $needle): int - { - $position = strpos($haystack, $needle); - \assert(\is_int($position)); - - $substring = substr($haystack, 0, $position); - - return mb_strwidth($substring); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php deleted file mode 100644 index 2f6820c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php +++ /dev/null @@ -1,162 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * spacing?: 'none'|'one', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * spacing: 'none'|'one', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ConcatSpaceFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Concatenation should be spaced according to configuration.', - [ - new CodeSample( - " 'none'], - ), - new CodeSample( - " 'one'], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after NoUnneededControlParenthesesFixer, SingleLineThrowFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound('.'); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - if ($tokens[$index]->equals('.')) { - if ('one' === $this->configuration['spacing']) { - $this->fixConcatenationToSingleSpace($tokens, $index); - } else { - $this->fixConcatenationToNoSpace($tokens, $index); - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('spacing', 'Spacing to apply around concatenation operator.')) - ->setAllowedValues(['one', 'none']) - ->setDefault('none') - ->getOption(), - ]); - } - - /** - * @param int $index index of concatenation '.' token - */ - private function fixConcatenationToNoSpace(Tokens $tokens, int $index): void - { - $prevNonWhitespaceToken = $tokens[$tokens->getPrevNonWhitespace($index)]; - - if (!$prevNonWhitespaceToken->isGivenKind([\T_LNUMBER, \T_COMMENT, \T_DOC_COMMENT]) || str_starts_with($prevNonWhitespaceToken->getContent(), '/*')) { - $tokens->removeLeadingWhitespace($index, " \t"); - } - - if (!$tokens[$tokens->getNextNonWhitespace($index)]->isGivenKind([\T_LNUMBER, \T_COMMENT, \T_DOC_COMMENT])) { - $tokens->removeTrailingWhitespace($index, " \t"); - } - } - - /** - * @param int $index index of concatenation '.' token - */ - private function fixConcatenationToSingleSpace(Tokens $tokens, int $index): void - { - $this->fixWhiteSpaceAroundConcatToken($tokens, $index, 1); - $this->fixWhiteSpaceAroundConcatToken($tokens, $index, -1); - } - - /** - * @param int $index index of concatenation '.' token - * @param int $offset 1 or -1 - */ - private function fixWhiteSpaceAroundConcatToken(Tokens $tokens, int $index, int $offset): void - { - if (-1 !== $offset && 1 !== $offset) { - throw new \InvalidArgumentException(\sprintf( - 'Expected `-1|1` for "$offset", got "%s"', - $offset, - )); - } - - $offsetIndex = $index + $offset; - - if (!$tokens[$offsetIndex]->isWhitespace()) { - $tokens->insertAt($index + (1 === $offset ? 1 : 0), new Token([\T_WHITESPACE, ' '])); - - return; - } - - if (str_contains($tokens[$offsetIndex]->getContent(), "\n")) { - return; - } - - if ($tokens[$index + $offset * 2]->isComment()) { - return; - } - - $tokens[$offsetIndex] = new Token([\T_WHITESPACE, ' ']); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php deleted file mode 100644 index f1dafc7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php +++ /dev/null @@ -1,181 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\Fixer\AbstractIncrementOperatorFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * style?: 'post'|'pre', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * style: 'post'|'pre', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gregor Harlan - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class IncrementStyleFixer extends AbstractIncrementOperatorFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const STYLE_PRE = 'pre'; - - /** - * @internal - */ - public const STYLE_POST = 'post'; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Pre- or post-increment and decrement operators should be used if possible.', - [ - new CodeSample(" self::STYLE_POST], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoSpacesInsideParenthesisFixer, SpacesInsideParenthesesFixer. - * Must run after StandardizeIncrementFixer. - */ - public function getPriority(): int - { - return 15; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_INC, \T_DEC]); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('style', 'Whether to use pre- or post-increment and decrement operators.')) - ->setAllowedValues([self::STYLE_PRE, self::STYLE_POST]) - ->setDefault(self::STYLE_PRE) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - for ($index = $tokens->count() - 1; 0 <= $index; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind([\T_INC, \T_DEC])) { - continue; - } - - if (self::STYLE_PRE === $this->configuration['style'] && $tokensAnalyzer->isUnarySuccessorOperator($index)) { - $nextToken = $tokens[$tokens->getNextMeaningfulToken($index)]; - - if (!$nextToken->equalsAny([';', ')'])) { - continue; - } - - $startIndex = $this->findStart($tokens, $index); - $prevToken = $tokens[$tokens->getPrevMeaningfulToken($startIndex)]; - - if ($prevToken->equalsAny([';', '{', '}', [\T_OPEN_TAG], ')'])) { - $tokens->clearAt($index); - $tokens->insertAt($startIndex, clone $token); - } - } elseif (self::STYLE_POST === $this->configuration['style'] && $tokensAnalyzer->isUnaryPredecessorOperator($index)) { - $prevToken = $tokens[$tokens->getPrevMeaningfulToken($index)]; - - if (!$prevToken->equalsAny([';', '{', '}', [\T_OPEN_TAG], ')'])) { - continue; - } - - $endIndex = $this->findEnd($tokens, $index); - $nextToken = $tokens[$tokens->getNextMeaningfulToken($endIndex)]; - - if ($nextToken->equalsAny([';', ')'])) { - $tokens->clearAt($index); - $tokens->insertAt($tokens->getNextNonWhitespace($endIndex), clone $token); - } - } - } - } - - private function findEnd(Tokens $tokens, int $index): int - { - $nextIndex = $tokens->getNextMeaningfulToken($index); - $nextToken = $tokens[$nextIndex]; - - while ($nextToken->equalsAny([ - '$', - '(', - '[', - [CT::T_DYNAMIC_PROP_BRACE_OPEN], - [CT::T_DYNAMIC_VAR_BRACE_OPEN], - [CT::T_ARRAY_INDEX_BRACE_OPEN], - [\T_NS_SEPARATOR], - [\T_STATIC], - [\T_STRING], - [\T_VARIABLE], - ])) { - $blockType = Tokens::detectBlockType($nextToken); - - if (null !== $blockType) { - $nextIndex = $tokens->findBlockEnd($blockType['type'], $nextIndex); - } - - $index = $nextIndex; - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - $nextToken = $tokens[$nextIndex]; - } - - if ($nextToken->isObjectOperator()) { - return $this->findEnd($tokens, $nextIndex); - } - - if ($nextToken->isGivenKind(\T_PAAMAYIM_NEKUDOTAYIM)) { - return $this->findEnd($tokens, $tokens->getNextMeaningfulToken($nextIndex)); - } - - return $index; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php deleted file mode 100644 index 7a35c3b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php +++ /dev/null @@ -1,71 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Haralan Dobrev - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class LogicalOperatorsFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Use `&&` and `||` logical operators instead of `and` and `or`.', - [ - new CodeSample( - <<<'PHP' - isAnyTokenKindsFound([\T_LOGICAL_AND, \T_LOGICAL_OR]); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(\T_LOGICAL_AND)) { - $tokens[$index] = new Token([\T_BOOLEAN_AND, '&&']); - } elseif ($token->isGivenKind(\T_LOGICAL_OR)) { - $tokens[$index] = new Token([\T_BOOLEAN_OR, '||']); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/LongToShorthandOperatorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/LongToShorthandOperatorFixer.php deleted file mode 100644 index ec5ff40..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/LongToShorthandOperatorFixer.php +++ /dev/null @@ -1,141 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\Fixer\AbstractShortOperatorFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-import-type _PhpTokenArray from Token - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class LongToShorthandOperatorFixer extends AbstractShortOperatorFixer -{ - /** - * @var non-empty-array - */ - private const OPERATORS = [ - '+' => [\T_PLUS_EQUAL, '+='], - '-' => [\T_MINUS_EQUAL, '-='], - '*' => [\T_MUL_EQUAL, '*='], - '/' => [\T_DIV_EQUAL, '/='], - '&' => [\T_AND_EQUAL, '&='], - '.' => [\T_CONCAT_EQUAL, '.='], - '%' => [\T_MOD_EQUAL, '%='], - '|' => [\T_OR_EQUAL, '|='], - '^' => [\T_XOR_EQUAL, '^='], - ]; - - /** - * @var non-empty-list - */ - private array $operatorTypes; - - private TokensAnalyzer $tokensAnalyzer; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Shorthand notation for operators should be used if possible.', - [ - new CodeSample("isAnyTokenKindsFound([...array_keys(self::OPERATORS), FCT::T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG, FCT::T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->operatorTypes = array_keys(self::OPERATORS); - $this->tokensAnalyzer = new TokensAnalyzer($tokens); - - parent::applyFix($file, $tokens); - } - - protected function isOperatorTokenCandidate(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->equalsAny($this->operatorTypes)) { - return false; - } - - while (null !== $index) { - $index = $tokens->getNextMeaningfulToken($index); - $otherToken = $tokens[$index]; - - if ($otherToken->equalsAny([';', [\T_CLOSE_TAG]])) { - return true; - } - - // fast precedence check - if ($otherToken->equals('?') || $otherToken->isGivenKind(\T_INSTANCEOF)) { - return false; - } - - $blockType = Tokens::detectBlockType($otherToken); - - if (null !== $blockType) { - if (false === $blockType['isStart']) { - return true; - } - - $index = $tokens->findBlockEnd($blockType['type'], $index); - - continue; - } - - // precedence check - if ($this->tokensAnalyzer->isBinaryOperator($index)) { - return false; - } - } - - return false; // unreachable, but keeps SCA happy - } - - protected function getReplacementToken(Token $token): Token - { - \assert(isset(self::OPERATORS[$token->getContent()])); // for PHPStan - - return new Token(self::OPERATORS[$token->getContent()]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewExpressionParenthesesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewExpressionParenthesesFixer.php deleted file mode 100644 index 1eb01b0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewExpressionParenthesesFixer.php +++ /dev/null @@ -1,241 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * use_parentheses?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * use_parentheses: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Valentin Udaltsov - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NewExpressionParenthesesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'All `new` expressions with a further call must (not) be wrapped in parentheses.', - [ - new VersionSpecificCodeSample( - "bar();\n", - new VersionSpecification(8_04_00), - ), - new VersionSpecificCodeSample( - "bar();\n", - new VersionSpecification(8_04_00), - ), - new VersionSpecificCodeSample( - "bar();\n", - new VersionSpecification(8_04_00), - ['use_parentheses' => true], - ), - new VersionSpecificCodeSample( - "bar();\n", - new VersionSpecification(8_04_00), - ['use_parentheses' => true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after NewWithParenthesesFixer, NoUnneededControlParenthesesFixer. - */ - public function getPriority(): int - { - return 29; - } - - public function isCandidate(Tokens $tokens): bool - { - return \PHP_VERSION_ID >= 8_04_00 && $tokens->isTokenKindFound(\T_NEW); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('use_parentheses', 'Whether `new` expressions with a further call should be wrapped in parentheses or not.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $useParentheses = $this->configuration['use_parentheses']; - - for ($index = $tokens->count() - 3; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_NEW)) { - continue; - } - - $classStartIndex = $tokens->getNextMeaningfulToken($index); - - if (null === $classStartIndex) { - return; - } - - // anonymous class - if ($tokens[$classStartIndex]->isGivenKind(\T_CLASS)) { - $nextIndex = $tokens->getNextMeaningfulToken($classStartIndex); - - if ($tokens[$nextIndex]->equals('(')) { - $nextIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextIndex); - } else { - $nextIndex = $classStartIndex; - } - - $bodyStartIndex = $tokens->getNextTokenOfKind($nextIndex, ['{']); - $bodyEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $bodyStartIndex); - - if ($useParentheses) { - $this->ensureWrappedInParentheses($tokens, $index, $bodyEndIndex); - } else { - $this->ensureNotWrappedInParentheses($tokens, $index, $bodyEndIndex); - } - - continue; - } - - // named class - $classEndIndex = $this->findClassEndIndex($tokens, $classStartIndex); - - if (null === $classEndIndex) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($classEndIndex); - - if (!$tokens[$nextIndex]->equals('(')) { - // If arguments' parentheses are absent then either this new expression is not further called - // and does not need parentheses, or we cannot omit its parentheses due to the grammar rules. - continue; - } - - $argsEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextIndex); - - if ($useParentheses) { - $this->ensureWrappedInParentheses($tokens, $index, $argsEndIndex); - } else { - $this->ensureNotWrappedInParentheses($tokens, $index, $argsEndIndex); - } - } - } - - private function ensureWrappedInParentheses(Tokens $tokens, int $exprStartIndex, int $exprEndIndex): void - { - $prevIndex = $tokens->getPrevMeaningfulToken($exprStartIndex); - $nextIndex = $tokens->getNextMeaningfulToken($exprEndIndex); - - if ($tokens[$prevIndex]->isGivenKind(CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN) - && $tokens[$nextIndex]->isGivenKind(CT::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE) - ) { - return; - } - - if (!$tokens[$nextIndex]->isObjectOperator() && !$tokens[$nextIndex]->isGivenKind(\T_PAAMAYIM_NEKUDOTAYIM)) { - return; - } - - $tokens->insertAt($exprStartIndex, [new Token([CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN, '('])]); - $tokens->insertAt($exprEndIndex + 2, [new Token([CT::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE, ')'])]); - } - - private function ensureNotWrappedInParentheses(Tokens $tokens, int $exprStartIndex, int $exprEndIndex): void - { - $prevIndex = $tokens->getPrevMeaningfulToken($exprStartIndex); - $nextIndex = $tokens->getNextMeaningfulToken($exprEndIndex); - - if (!$tokens[$prevIndex]->isGivenKind(CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN) - || !$tokens[$nextIndex]->isGivenKind(CT::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE) - ) { - return; - } - - $operatorIndex = $tokens->getNextMeaningfulToken($nextIndex); - - if (!$tokens[$operatorIndex]->isObjectOperator() && !$tokens[$operatorIndex]->isGivenKind(\T_PAAMAYIM_NEKUDOTAYIM)) { - return; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($prevIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($nextIndex); - } - - private function findClassEndIndex(Tokens $tokens, int $index): ?int - { - // (expression) class name - if ($tokens[$index]->equals('(')) { - return $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - } - - // regular class name or $variable class name - $nextTokens = [ - [\T_STRING], - [\T_NS_SEPARATOR], - [CT::T_NAMESPACE_OPERATOR], - [\T_VARIABLE], - '$', - [CT::T_DYNAMIC_VAR_BRACE_OPEN], - '[', - [\T_OBJECT_OPERATOR], - [\T_NULLSAFE_OBJECT_OPERATOR], - [\T_PAAMAYIM_NEKUDOTAYIM], - ]; - - if (!$tokens[$index]->equalsAny($nextTokens)) { - return null; - } - - while ($tokens[$index]->equalsAny($nextTokens)) { - $blockType = Tokens::detectBlockType($tokens[$index]); - - if (null !== $blockType) { - $index = $tokens->findBlockEnd($blockType['type'], $index); - } - - $index = $tokens->getNextMeaningfulToken($index); - } - - return $index - 1; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php deleted file mode 100644 index 7c9bb38..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php +++ /dev/null @@ -1,105 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @deprecated - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * anonymous_class?: bool, - * named_class?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * anonymous_class: bool, - * named_class: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NewWithBracesFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, DeprecatedFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private NewWithParenthesesFixer $newWithParenthesesFixer; - - public function __construct() - { - $this->newWithParenthesesFixer = new NewWithParenthesesFixer(); - - parent::__construct(); - } - - public function getDefinition(): FixerDefinitionInterface - { - $fixerDefinition = $this->newWithParenthesesFixer->getDefinition(); - - return new FixerDefinition( - 'All instances created with `new` keyword must (not) be followed by braces.', - $fixerDefinition->getCodeSamples(), - $fixerDefinition->getDescription(), - $fixerDefinition->getRiskyDescription(), - ); - } - - /** - * {@inheritdoc} - * - * Must run before ClassDefinitionFixer. - */ - public function getPriority(): int - { - return $this->newWithParenthesesFixer->getPriority(); - } - - public function getSuccessorsNames(): array - { - return [ - $this->newWithParenthesesFixer->getName(), - ]; - } - - /** - * @param _AutogeneratedInputConfiguration $configuration - */ - protected function configurePreNormalisation(array $configuration): void - { - $this->newWithParenthesesFixer->configure($configuration); - } - - protected function createProxyFixers(): array - { - return [ - $this->newWithParenthesesFixer, - ]; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return $this->newWithParenthesesFixer->createConfigurationDefinition(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithParenthesesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithParenthesesFixer.php deleted file mode 100644 index 18cb519..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithParenthesesFixer.php +++ /dev/null @@ -1,223 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * anonymous_class?: bool, - * named_class?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * anonymous_class: bool, - * named_class: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NewWithParenthesesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - private const NEXT_TOKEN_KINDS = [ - '?', - ';', - ',', - '(', - ')', - '[', - ']', - ':', - '<', - '>', - '+', - '-', - '*', - '/', - '%', - '&', - '^', - '|', - [\T_CLASS], - [\T_IS_SMALLER_OR_EQUAL], - [\T_IS_GREATER_OR_EQUAL], - [\T_IS_EQUAL], - [\T_IS_NOT_EQUAL], - [\T_IS_IDENTICAL], - [\T_IS_NOT_IDENTICAL], - [\T_CLOSE_TAG], - [\T_LOGICAL_AND], - [\T_LOGICAL_OR], - [\T_LOGICAL_XOR], - [\T_BOOLEAN_AND], - [\T_BOOLEAN_OR], - [\T_SL], - [\T_SR], - [\T_INSTANCEOF], - [\T_AS], - [\T_DOUBLE_ARROW], - [\T_POW], - [\T_SPACESHIP], - [CT::T_ARRAY_BRACKET_OPEN], - [CT::T_ARRAY_BRACKET_CLOSE], - [CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN], - [CT::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE], - [FCT::T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG], - [FCT::T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG], - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'All instances created with `new` keyword must (not) be followed by parentheses.', - [ - new CodeSample(" false], - ), - new CodeSample( - " false], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before ClassDefinitionFixer, NewExpressionParenthesesFixer. - */ - public function getPriority(): int - { - return 38; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_NEW); - } - - /** - * @protected - * - * @TODO 4.0 move visibility from annotation to code when `NewWithBracesFixer` is removed - */ - public function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('named_class', 'Whether named classes should be followed by parentheses.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('anonymous_class', 'Whether anonymous classes should be followed by parentheses.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(false, true)) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 3; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_NEW)) { - continue; - } - - $nextIndex = $tokens->getNextTokenOfKind($index, self::NEXT_TOKEN_KINDS); - - // new anonymous class definition - if ($tokens[$nextIndex]->isGivenKind(\T_CLASS)) { - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - - if (true === $this->configuration['anonymous_class']) { - $this->ensureParenthesesAt($tokens, $nextIndex); - } else { - $this->ensureNoParenthesesAt($tokens, $nextIndex); - } - - continue; - } - - // entrance into array index syntax - need to look for exit - - while ($tokens[$nextIndex]->equals('[') || $tokens[$nextIndex]->isGivenKind(CT::T_ARRAY_INDEX_BRACE_OPEN)) { - $nextIndex = $tokens->findBlockEnd(Tokens::detectBlockType($tokens[$nextIndex])['type'], $nextIndex); - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - } - - if (true === $this->configuration['named_class']) { - $this->ensureParenthesesAt($tokens, $nextIndex); - } else { - $this->ensureNoParenthesesAt($tokens, $nextIndex); - } - } - } - - private function ensureParenthesesAt(Tokens $tokens, int $index): void - { - $token = $tokens[$index]; - - if (!$token->equals('(') && !$token->isObjectOperator()) { - $tokens->insertAt( - $tokens->getPrevMeaningfulToken($index) + 1, - [new Token('('), new Token(')')], - ); - } - } - - private function ensureNoParenthesesAt(Tokens $tokens, int $index): void - { - if (!$tokens[$index]->equals('(')) { - return; - } - - $closingIndex = $tokens->getNextMeaningfulToken($index); - - // constructor has arguments - parentheses can not be removed - if (!$tokens[$closingIndex]->equals(')')) { - return; - } - - // Check if there's an object operator after the closing parenthesis - // Preserve parentheses in expressions like "new A()->method()" as per RFC - $afterClosingIndex = $tokens->getNextMeaningfulToken($closingIndex); - if ($tokens[$afterClosingIndex]->isObjectOperator()) { - return; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($closingIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoSpaceAroundDoubleColonFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoSpaceAroundDoubleColonFixer.php deleted file mode 100644 index f137ec6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoSpaceAroundDoubleColonFixer.php +++ /dev/null @@ -1,76 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoSpaceAroundDoubleColonFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There must be no space around double colons (also called Scope Resolution Operator or Paamayim Nekudotayim).', - [new CodeSample("isTokenKindFound(\T_DOUBLE_COLON); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 2; $index > 1; --$index) { - if ($tokens[$index]->isGivenKind(\T_DOUBLE_COLON)) { - $this->removeSpace($tokens, $index, 1); - $this->removeSpace($tokens, $index, -1); - } - } - } - - /** - * @param -1|1 $direction - */ - private function removeSpace(Tokens $tokens, int $index, int $direction): void - { - if (!$tokens[$index + $direction]->isWhitespace()) { - return; - } - - if ($tokens[$tokens->getNonWhitespaceSibling($index, $direction)]->isComment()) { - return; - } - - $tokens->clearAt($index + $direction); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessConcatOperatorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessConcatOperatorFixer.php deleted file mode 100644 index 29e24ac..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessConcatOperatorFixer.php +++ /dev/null @@ -1,376 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _ConcatOperandType array{ - * start: int, - * end: int, - * type: self::STR_*, - * } - * @phpstan-type _AutogeneratedInputConfiguration array{ - * juggle_simple_strings?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * juggle_simple_strings: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUselessConcatOperatorFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const STR_DOUBLE_QUOTE = 0; - private const STR_DOUBLE_QUOTE_VAR = 1; - private const STR_SINGLE_QUOTE = 2; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should not be useless concat operations.', - [ - new CodeSample(" true]), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before DateTimeCreateFromFormatCallFixer, EregToPregFixer, PhpUnitDedicateAssertInternalTypeFixer, RegularCallableCallFixer, SetTypeToCastFixer. - * Must run after ExplicitStringVariableFixer, NoBinaryStringFixer, SingleQuoteFixer. - */ - public function getPriority(): int - { - return 5; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound('.') && $tokens->isAnyTokenKindsFound([\T_CONSTANT_ENCAPSED_STRING, '"']); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if (!$tokens[$index]->equals('.')) { - continue; - } - - $nextMeaningfulTokenIndex = $tokens->getNextMeaningfulToken($index); - - if ($this->containsLinebreak($tokens, $index, $nextMeaningfulTokenIndex)) { - continue; - } - - $secondOperand = $this->getConcatOperandType($tokens, $nextMeaningfulTokenIndex, 1); - - if (null === $secondOperand) { - continue; - } - - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($index); - - if ($this->containsLinebreak($tokens, $prevMeaningfulTokenIndex, $index)) { - continue; - } - - $firstOperand = $this->getConcatOperandType($tokens, $prevMeaningfulTokenIndex, -1); - - if (null === $firstOperand) { - continue; - } - - $this->fixConcatOperation($tokens, $firstOperand, $index, $secondOperand); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('juggle_simple_strings', 'Allow for simple string quote juggling if it results in more concat-operations merges.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - /** - * @param _ConcatOperandType $firstOperand - * @param _ConcatOperandType $secondOperand - */ - private function fixConcatOperation(Tokens $tokens, array $firstOperand, int $concatIndex, array $secondOperand): void - { - // if both operands are of the same type then these operands can always be merged - - if ( - (self::STR_DOUBLE_QUOTE === $firstOperand['type'] && self::STR_DOUBLE_QUOTE === $secondOperand['type']) - || (self::STR_SINGLE_QUOTE === $firstOperand['type'] && self::STR_SINGLE_QUOTE === $secondOperand['type']) - ) { - $this->mergeConstantEscapedStringOperands($tokens, $firstOperand, $concatIndex, $secondOperand); - - return; - } - - if (self::STR_DOUBLE_QUOTE_VAR === $firstOperand['type'] && self::STR_DOUBLE_QUOTE_VAR === $secondOperand['type']) { - if ($this->operandsCanNotBeMerged($tokens, $firstOperand, $secondOperand)) { - return; - } - - $this->mergeConstantEscapedStringVarOperands($tokens, $firstOperand, $concatIndex, $secondOperand); - - return; - } - - // if any is double and the other is not, check for simple other, than merge with " - - $operands = [ - [$firstOperand, $secondOperand], - [$secondOperand, $firstOperand], - ]; - - foreach ($operands as $operandPair) { - [$operand1, $operand2] = $operandPair; - - if (self::STR_DOUBLE_QUOTE_VAR === $operand1['type'] && self::STR_DOUBLE_QUOTE === $operand2['type']) { - if ($this->operandsCanNotBeMerged($tokens, $operand1, $operand2)) { - return; - } - - $this->mergeConstantEscapedStringVarOperands($tokens, $firstOperand, $concatIndex, $secondOperand); - - return; - } - - if (false === $this->configuration['juggle_simple_strings']) { - continue; - } - - if (self::STR_DOUBLE_QUOTE === $operand1['type'] && self::STR_SINGLE_QUOTE === $operand2['type']) { - $operantContent = $tokens[$operand2['start']]->getContent(); - - if ($this->isSimpleQuotedStringContent($operantContent)) { - $this->mergeConstantEscapedStringOperands($tokens, $firstOperand, $concatIndex, $secondOperand); - } - - return; - } - - if (self::STR_DOUBLE_QUOTE_VAR === $operand1['type'] && self::STR_SINGLE_QUOTE === $operand2['type']) { - $operantContent = $tokens[$operand2['start']]->getContent(); - - if ($this->isSimpleQuotedStringContent($operantContent)) { - if ($this->operandsCanNotBeMerged($tokens, $operand1, $operand2)) { - return; - } - - $this->mergeConstantEscapedStringVarOperands($tokens, $firstOperand, $concatIndex, $secondOperand); - } - - return; - } - } - } - - /** - * @param -1|1 $direction - * - * @return null|_ConcatOperandType - */ - private function getConcatOperandType(Tokens $tokens, int $index, int $direction): ?array - { - if ($tokens[$index]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - $firstChar = $tokens[$index]->getContent(); - - if ('b' === $firstChar[0] || 'B' === $firstChar[0]) { - return null; // we don't care about these, priorities are set to do deal with these cases - } - - return [ - 'start' => $index, - 'end' => $index, - 'type' => '"' === $firstChar[0] ? self::STR_DOUBLE_QUOTE : self::STR_SINGLE_QUOTE, - ]; - } - - if ($tokens[$index]->equals('"')) { - $end = $tokens->getTokenOfKindSibling($index, $direction, ['"']); - - return [ - 'start' => 1 === $direction ? $index : $end, - 'end' => 1 === $direction ? $end : $index, - 'type' => self::STR_DOUBLE_QUOTE_VAR, - ]; - } - - return null; - } - - /** - * @param _ConcatOperandType $firstOperand - * @param _ConcatOperandType $secondOperand - */ - private function mergeConstantEscapedStringOperands( - Tokens $tokens, - array $firstOperand, - int $concatOperatorIndex, - array $secondOperand - ): void { - $quote = self::STR_DOUBLE_QUOTE === $firstOperand['type'] || self::STR_DOUBLE_QUOTE === $secondOperand['type'] ? '"' : "'"; - $firstOperandTokenContent = $tokens[$firstOperand['start']]->getContent(); - $secondOperandTokenContent = $tokens[$secondOperand['start']]->getContent(); - - $tokens[$firstOperand['start']] = new Token( - [ - \T_CONSTANT_ENCAPSED_STRING, - $quote.substr($firstOperandTokenContent, 1, -1).substr($secondOperandTokenContent, 1, -1).$quote, - ], - ); - - $this->clearConcatAndAround($tokens, $concatOperatorIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($secondOperand['start']); - } - - /** - * @param _ConcatOperandType $firstOperand - * @param _ConcatOperandType $secondOperand - */ - private function mergeConstantEscapedStringVarOperands( - Tokens $tokens, - array $firstOperand, - int $concatOperatorIndex, - array $secondOperand - ): void { - // build up the new content - $newContent = ''; - - foreach ([$firstOperand, $secondOperand] as $operant) { - $operandContent = ''; - - for ($i = $operant['start']; $i <= $operant['end'];) { - $operandContent .= $tokens[$i]->getContent(); - $i = $tokens->getNextMeaningfulToken($i); - } - - $newContent .= substr($operandContent, 1, -1); - } - - // remove tokens making up the concat statement - - for ($i = $secondOperand['end']; $i >= $secondOperand['start'];) { - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - $i = $tokens->getPrevMeaningfulToken($i); - } - - $this->clearConcatAndAround($tokens, $concatOperatorIndex); - - for ($i = $firstOperand['end']; $i > $firstOperand['start'];) { - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - $i = $tokens->getPrevMeaningfulToken($i); - } - - // insert new tokens based on the new content - - $newTokens = Tokens::fromCode('overrideRange($firstOperand['start'], $firstOperand['start'], $insertTokens); - } - - private function clearConcatAndAround(Tokens $tokens, int $concatOperatorIndex): void - { - if ($tokens[$concatOperatorIndex + 1]->isWhitespace()) { - $tokens->clearTokenAndMergeSurroundingWhitespace($concatOperatorIndex + 1); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($concatOperatorIndex); - - if ($tokens[$concatOperatorIndex - 1]->isWhitespace()) { - $tokens->clearTokenAndMergeSurroundingWhitespace($concatOperatorIndex - 1); - } - } - - private function isSimpleQuotedStringContent(string $candidate): bool - { - return !Preg::match('#[\$"\'\\\]#', substr($candidate, 1, -1)); - } - - private function containsLinebreak(Tokens $tokens, int $startIndex, int $endIndex): bool - { - for ($i = $endIndex; $i > $startIndex; --$i) { - if (Preg::match('/\R/', $tokens[$i]->getContent())) { - return true; - } - } - - return false; - } - - /** - * @param _ConcatOperandType $firstOperand - * @param _ConcatOperandType $secondOperand - */ - private function operandsCanNotBeMerged(Tokens $tokens, array $firstOperand, array $secondOperand): bool - { - // If the first operand does not end with a variable, no variables would be broken by concatenation. - if (self::STR_DOUBLE_QUOTE_VAR !== $firstOperand['type']) { - return false; - } - if (!$tokens[$firstOperand['end'] - 1]->isGivenKind(\T_VARIABLE)) { - return false; - } - - $allowedPatternsForSecondOperand = [ - '/^ .*/', // e.g. " foo", ' bar', " $baz" - '/^-(?!\>)/', // e.g. "-foo", '-bar', "-$baz" - ]; - - // If the first operand ends with a variable, the second operand should match one of the allowed patterns. - // Otherwise, the concatenation can break a variable in the first operand. - foreach ($allowedPatternsForSecondOperand as $allowedPattern) { - $secondOperandInnerContent = substr($tokens->generatePartialCode($secondOperand['start'], $secondOperand['end']), 1, -1); - - if (Preg::match($allowedPattern, $secondOperandInnerContent)) { - return false; - } - } - - return true; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessNullsafeOperatorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessNullsafeOperatorFixer.php deleted file mode 100644 index 591cfe7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessNullsafeOperatorFixer.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUselessNullsafeOperatorFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should not be useless Null-safe operator `?->` used.', - [ - new VersionSpecificCodeSample( - <<<'PHP' - parentMethod(); - } - } - - PHP, - new VersionSpecification(8_00_00), - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return \PHP_VERSION_ID >= 8_00_00 && $tokens->isAllTokenKindsFound([\T_VARIABLE, \T_NULLSAFE_OBJECT_OPERATOR]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_NULLSAFE_OBJECT_OPERATOR)) { - continue; - } - - $nullsafeObjectOperatorIndex = $index; - $index = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$index]->isGivenKind(\T_VARIABLE)) { - continue; - } - - if ('$this' !== strtolower($tokens[$index]->getContent())) { - continue; - } - - $tokens[$nullsafeObjectOperatorIndex] = new Token([\T_OBJECT_OPERATOR, '->']); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php deleted file mode 100644 index 7c8c641..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php +++ /dev/null @@ -1,81 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Javier Spagnoletti - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NotOperatorWithSpaceFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Logical NOT operators (`!`) should have leading and trailing whitespaces.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound('!'); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if ($token->equals('!')) { - if (!$tokens[$index + 1]->isWhitespace()) { - $tokens->insertAt($index + 1, new Token([\T_WHITESPACE, ' '])); - } - - if (!$tokens[$index - 1]->isWhitespace()) { - $tokens->insertAt($index, new Token([\T_WHITESPACE, ' '])); - } - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php deleted file mode 100644 index 6c23edd..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Javier Spagnoletti - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NotOperatorWithSuccessorSpaceFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Logical NOT operators (`!`) should have one trailing whitespace.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound('!'); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - $token = $tokens[$index]; - - if ($token->equals('!')) { - $tokens->ensureWhitespaceAtIndex($index + 1, 0, ' '); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php deleted file mode 100644 index 20e9249..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php +++ /dev/null @@ -1,64 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Fabien Potencier - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ObjectOperatorWithoutWhitespaceFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should not be space before or after object operators `->` and `?->`.', - [new CodeSample(" b;\n")], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getObjectOperatorKinds()); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - // [Structure] there should not be space before or after "->" or "?->" - foreach ($tokens as $index => $token) { - if (!$token->isObjectOperator()) { - continue; - } - - // clear whitespace before -> - if ($tokens[$index - 1]->isWhitespace(" \t") && !$tokens[$index - 2]->isComment()) { - $tokens->clearAt($index - 1); - } - - // clear whitespace after -> - if ($tokens[$index + 1]->isWhitespace(" \t") && !$tokens[$index + 2]->isComment()) { - $tokens->clearAt($index + 1); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/OperatorLinebreakFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/OperatorLinebreakFixer.php deleted file mode 100644 index e8639e3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/OperatorLinebreakFixer.php +++ /dev/null @@ -1,314 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\AlternativeSyntaxAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\GotoLabelAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\ReferenceAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\SwitchAnalyzer; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * only_booleans?: bool, - * position?: 'beginning'|'end', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * only_booleans: bool, - * position: 'beginning'|'end', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @phpstan-import-type _PhpTokenPrototypePartial from Token - * - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class OperatorLinebreakFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const BOOLEAN_OPERATORS = [[\T_BOOLEAN_AND], [\T_BOOLEAN_OR], [\T_LOGICAL_AND], [\T_LOGICAL_OR], [\T_LOGICAL_XOR]]; - - private string $position = 'beginning'; - - /** - * @var list<_PhpTokenPrototypePartial> - */ - private array $operators = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Operators - when multiline - must always be at the beginning or at the end of the line.', - [ - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - 'end'], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $this->position = $this->configuration['position']; - $this->operators = self::BOOLEAN_OPERATORS; - - if (false === $this->configuration['only_booleans']) { - $this->operators = array_merge($this->operators, self::getNonBooleanOperators()); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('only_booleans', 'Whether to limit operators to only boolean ones.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('position', 'Whether to place operators at the beginning or at the end of the line.')) - ->setAllowedValues(['beginning', 'end']) - ->setDefault($this->position) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $referenceAnalyzer = new ReferenceAnalyzer(); - $gotoLabelAnalyzer = new GotoLabelAnalyzer(); - $alternativeSyntaxAnalyzer = new AlternativeSyntaxAnalyzer(); - - $index = $tokens->count(); - while ($index > 1) { - --$index; - - if (!$tokens[$index]->equalsAny($this->operators, false)) { - continue; - } - - if ($gotoLabelAnalyzer->belongsToGoToLabel($tokens, $index)) { - continue; - } - - if ($referenceAnalyzer->isReference($tokens, $index)) { - continue; - } - - if ($alternativeSyntaxAnalyzer->belongsToAlternativeSyntax($tokens, $index)) { - continue; - } - - if (SwitchAnalyzer::belongsToSwitch($tokens, $index)) { - continue; - } - - $operatorIndices = [$index]; - if ($tokens[$index]->equals(':')) { - /** @var int $prevIndex */ - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$prevIndex]->equals('?')) { - $operatorIndices = [$prevIndex, $index]; - $index = $prevIndex; - } - } - - $this->fixOperatorLinebreak($tokens, $operatorIndices); - } - } - - /** - * @param non-empty-list $operatorIndices - */ - private function fixOperatorLinebreak(Tokens $tokens, array $operatorIndices): void - { - /** @var int $prevIndex */ - $prevIndex = $tokens->getPrevMeaningfulToken(min($operatorIndices)); - $indexStart = $prevIndex + 1; - - /** @var int $nextIndex */ - $nextIndex = $tokens->getNextMeaningfulToken(max($operatorIndices)); - $indexEnd = $nextIndex - 1; - - if (!$this->isMultiline($tokens, $indexStart, $indexEnd)) { - return; // operator is not surrounded by multiline whitespaces, do not touch it - } - - if ('beginning' === $this->position) { - if (!$this->isMultiline($tokens, max($operatorIndices), $indexEnd)) { - return; // operator already is placed correctly - } - $this->fixMoveToTheBeginning($tokens, $operatorIndices); - - return; - } - - if (!$this->isMultiline($tokens, $indexStart, min($operatorIndices))) { - return; // operator already is placed correctly - } - $this->fixMoveToTheEnd($tokens, $operatorIndices); - } - - /** - * @param non-empty-list $operatorIndices - */ - private function fixMoveToTheBeginning(Tokens $tokens, array $operatorIndices): void - { - /** @var int $prevIndex */ - $prevIndex = $tokens->getNonEmptySibling(min($operatorIndices), -1); - - /** @var int $nextIndex */ - $nextIndex = $tokens->getNextMeaningfulToken(max($operatorIndices)); - - for ($i = $nextIndex - 1; $i > max($operatorIndices); --$i) { - if ($tokens[$i]->isWhitespace() && Preg::match('/\R/u', $tokens[$i]->getContent())) { - $isWhitespaceBefore = $tokens[$prevIndex]->isWhitespace(); - $inserts = $this->getReplacementsAndClear($tokens, $operatorIndices, -1); - if ($isWhitespaceBefore) { - $inserts[] = new Token([\T_WHITESPACE, ' ']); - } - $tokens->insertAt($nextIndex, $inserts); - - break; - } - } - } - - /** - * @param non-empty-list $operatorIndices - */ - private function fixMoveToTheEnd(Tokens $tokens, array $operatorIndices): void - { - /** @var int $prevIndex */ - $prevIndex = $tokens->getPrevMeaningfulToken(min($operatorIndices)); - - /** @var int $nextIndex */ - $nextIndex = $tokens->getNonEmptySibling(max($operatorIndices), 1); - - for ($i = $prevIndex + 1; $i < max($operatorIndices); ++$i) { - if ($tokens[$i]->isWhitespace() && Preg::match('/\R/u', $tokens[$i]->getContent())) { - $isWhitespaceAfter = $tokens[$nextIndex]->isWhitespace(); - $inserts = $this->getReplacementsAndClear($tokens, $operatorIndices, 1); - if ($isWhitespaceAfter) { - array_unshift($inserts, new Token([\T_WHITESPACE, ' '])); - } - $tokens->insertAt($prevIndex + 1, $inserts); - - break; - } - } - } - - /** - * @param list $indices - * - * @return list - */ - private function getReplacementsAndClear(Tokens $tokens, array $indices, int $direction): array - { - return array_map( - static function (int $index) use ($tokens, $direction): Token { - $clone = $tokens[$index]; - - if ($tokens[$index + $direction]->isWhitespace()) { - $tokens->clearAt($index + $direction); - } - - $tokens->clearAt($index); - - return $clone; - }, - $indices, - ); - } - - private function isMultiline(Tokens $tokens, int $indexStart, int $indexEnd): bool - { - for ($index = $indexStart; $index <= $indexEnd; ++$index) { - if (str_contains($tokens[$index]->getContent(), "\n")) { - return true; - } - } - - return false; - } - - /** - * @return non-empty-list<_PhpTokenPrototypePartial> - */ - private static function getNonBooleanOperators(): array - { - return array_merge( - [ - '%', '&', '*', '+', '-', '.', '/', ':', '<', '=', '>', '?', '^', '|', - [\T_AND_EQUAL], [\T_CONCAT_EQUAL], [\T_DIV_EQUAL], [\T_DOUBLE_ARROW], [\T_IS_EQUAL], [\T_IS_GREATER_OR_EQUAL], - [\T_IS_IDENTICAL], [\T_IS_NOT_EQUAL], [\T_IS_NOT_IDENTICAL], [\T_IS_SMALLER_OR_EQUAL], [\T_MINUS_EQUAL], - [\T_MOD_EQUAL], [\T_MUL_EQUAL], [\T_OR_EQUAL], [\T_PAAMAYIM_NEKUDOTAYIM], [\T_PLUS_EQUAL], [\T_POW], - [\T_POW_EQUAL], [\T_SL], [\T_SL_EQUAL], [\T_SR], [\T_SR_EQUAL], [\T_XOR_EQUAL], - [\T_COALESCE], [\T_SPACESHIP], [FCT::T_PIPE], - ], - array_map(static fn (int $id): array => [$id], Token::getObjectOperatorKinds()), - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php deleted file mode 100644 index 012036c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php +++ /dev/null @@ -1,124 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\Fixer\AbstractIncrementOperatorFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author ntzm - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StandardizeIncrementFixer extends AbstractIncrementOperatorFixer -{ - private const EXPRESSION_END_TOKENS = [ - ';', - ')', - ']', - ',', - ':', - [CT::T_DYNAMIC_PROP_BRACE_CLOSE], - [CT::T_DYNAMIC_VAR_BRACE_CLOSE], - [\T_CLOSE_TAG], - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Increment and decrement operators should be used if possible.', - [ - new CodeSample("isAnyTokenKindsFound([\T_PLUS_EQUAL, \T_MINUS_EQUAL]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index > 0; --$index) { - $expressionEnd = $tokens[$index]; - if (!$expressionEnd->equalsAny(self::EXPRESSION_END_TOKENS)) { - continue; - } - - $numberIndex = $tokens->getPrevMeaningfulToken($index); - $number = $tokens[$numberIndex]; - if (!$number->isGivenKind(\T_LNUMBER) || '1' !== $number->getContent()) { - continue; - } - - $operatorIndex = $tokens->getPrevMeaningfulToken($numberIndex); - $operator = $tokens[$operatorIndex]; - if (!$operator->isGivenKind([\T_PLUS_EQUAL, \T_MINUS_EQUAL])) { - continue; - } - - $startIndex = $this->findStart($tokens, $operatorIndex); - - $this->clearRangeLeaveComments( - $tokens, - $tokens->getPrevMeaningfulToken($operatorIndex) + 1, - $numberIndex, - ); - - $tokens->insertAt( - $startIndex, - new Token($operator->isGivenKind(\T_PLUS_EQUAL) ? [\T_INC, '++'] : [\T_DEC, '--']), - ); - } - } - - /** - * Clear tokens in the given range unless they are comments. - */ - private function clearRangeLeaveComments(Tokens $tokens, int $indexStart, int $indexEnd): void - { - for ($i = $indexStart; $i <= $indexEnd; ++$i) { - $token = $tokens[$i]; - - if ($token->isComment()) { - continue; - } - - if ($token->isWhitespace("\n\r")) { - continue; - } - - $tokens->clearAt($i); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php deleted file mode 100644 index 311a531..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php +++ /dev/null @@ -1,62 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StandardizeNotEqualsFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Replace all `<>` with `!=`.', - [new CodeSample(" \$c;\n")], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BinaryOperatorSpacesFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_IS_NOT_EQUAL); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(\T_IS_NOT_EQUAL)) { - $tokens[$index] = new Token([\T_IS_NOT_EQUAL, '!=']); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php deleted file mode 100644 index 0e481e6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php +++ /dev/null @@ -1,133 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\AlternativeSyntaxAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\GotoLabelAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\SwitchAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TernaryOperatorSpacesFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Standardize spaces around ternary operator.', - [new CodeSample("isAllTokenKindsFound(['?', ':']); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $alternativeSyntaxAnalyzer = new AlternativeSyntaxAnalyzer(); - $gotoLabelAnalyzer = new GotoLabelAnalyzer(); - $ternaryOperatorIndices = []; - - foreach ($tokens as $index => $token) { - if (!$token->equalsAny(['?', ':'])) { - continue; - } - - if (SwitchAnalyzer::belongsToSwitch($tokens, $index)) { - continue; - } - - if ($alternativeSyntaxAnalyzer->belongsToAlternativeSyntax($tokens, $index)) { - continue; - } - - if ($gotoLabelAnalyzer->belongsToGoToLabel($tokens, $index)) { - continue; - } - - $ternaryOperatorIndices[] = $index; - } - - foreach (array_reverse($ternaryOperatorIndices) as $index) { - $token = $tokens[$index]; - - if ($token->equals('?')) { - $nextNonWhitespaceIndex = $tokens->getNextNonWhitespace($index); - - if ($tokens[$nextNonWhitespaceIndex]->equals(':')) { - // for `$a ?: $b` remove spaces between `?` and `:` - $tokens->ensureWhitespaceAtIndex($index + 1, 0, ''); - } else { - // for `$a ? $b : $c` ensure space after `?` - $this->ensureWhitespaceExistence($tokens, $index + 1, true); - } - - // for `$a ? $b : $c` ensure space before `?` - $this->ensureWhitespaceExistence($tokens, $index - 1, false); - - continue; - } - - if ($token->equals(':')) { - // for `$a ? $b : $c` ensure space after `:` - $this->ensureWhitespaceExistence($tokens, $index + 1, true); - - $prevNonWhitespaceToken = $tokens[$tokens->getPrevNonWhitespace($index)]; - - if (!$prevNonWhitespaceToken->equals('?')) { - // for `$a ? $b : $c` ensure space before `:` - $this->ensureWhitespaceExistence($tokens, $index - 1, false); - } - } - } - } - - private function ensureWhitespaceExistence(Tokens $tokens, int $index, bool $after): void - { - if ($tokens[$index]->isWhitespace()) { - if ( - !str_contains($tokens[$index]->getContent(), "\n") - && !$tokens[$index - 1]->isComment() - ) { - $tokens[$index] = new Token([\T_WHITESPACE, ' ']); - } - - return; - } - - $index += $after ? 0 : 1; - $tokens->insertAt($index, new Token([\T_WHITESPACE, ' '])); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToElvisOperatorFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToElvisOperatorFixer.php deleted file mode 100644 index cb08385..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToElvisOperatorFixer.php +++ /dev/null @@ -1,223 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\RangeAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-import-type _PhpTokenPrototypePartial from Token - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TernaryToElvisOperatorFixer extends AbstractFixer -{ - /** - * Lower precedence and other valid preceding tokens. - * - * Ordered by most common types first. - * - * @var non-empty-list<_PhpTokenPrototypePartial> - */ - private const VALID_BEFORE_ENDTYPES = [ - '=', - [\T_OPEN_TAG], - [\T_OPEN_TAG_WITH_ECHO], - '(', - ',', - ';', - '[', - '{', - '}', - [CT::T_ARRAY_INDEX_BRACE_OPEN], - [\T_AND_EQUAL], // &= - [\T_CONCAT_EQUAL], // .= - [\T_DIV_EQUAL], // /= - [\T_MINUS_EQUAL], // -= - [\T_MOD_EQUAL], // %= - [\T_MUL_EQUAL], // *= - [\T_OR_EQUAL], // |= - [\T_PLUS_EQUAL], // += - [\T_POW_EQUAL], // **= - [\T_SL_EQUAL], // <<= - [\T_SR_EQUAL], // >>= - [\T_XOR_EQUAL], // ^= - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Use the Elvis operator `?:` where possible.', - [ - new CodeSample( - "isTokenKindFound('?'); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 5; $index > 1; --$index) { - if (!$tokens[$index]->equals('?')) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$nextIndex]->equals(':')) { - continue; // Elvis is alive! - } - - // get and check what is before the `?` operator - - $beforeOperator = $this->getBeforeOperator($tokens, $index); - - if (null === $beforeOperator) { - continue; // contains something we cannot fix because of priorities - } - - // get what is after the `?` token - - $afterOperator = $this->getAfterOperator($tokens, $index); - - // if before and after the `?` operator are the same (in meaningful matter), clear after - - if (RangeAnalyzer::rangeEqualsRange($tokens, $beforeOperator, $afterOperator)) { - $this->clearMeaningfulFromRange($tokens, $afterOperator); - } - } - } - - /** - * @return ?array{start: int, end: int} null if contains ++/-- operator - */ - private function getBeforeOperator(Tokens $tokens, int $index): ?array - { - $blockEdgeDefinitions = Tokens::getBlockEdgeDefinitions(); - $index = $tokens->getPrevMeaningfulToken($index); - $before = ['end' => $index]; - - while (!$tokens[$index]->equalsAny(self::VALID_BEFORE_ENDTYPES)) { - if ($tokens[$index]->isGivenKind([\T_INC, \T_DEC])) { - return null; - } - - $detectedBlockType = Tokens::detectBlockType($tokens[$index]); - - if (null === $detectedBlockType || $detectedBlockType['isStart']) { - $before['start'] = $index; - $index = $tokens->getPrevMeaningfulToken($index); - - continue; - } - - /** @phpstan-ignore-next-line offsetAccess.notFound (we just detected block type, we know it's definition exists under given PHP runtime) */ - $blockType = $blockEdgeDefinitions[$detectedBlockType['type']]; - $openCount = 1; - - do { - $index = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind([\T_INC, \T_DEC])) { - return null; - } - - if ($tokens[$index]->equals($blockType['start'])) { - ++$openCount; - - continue; - } - - if ($tokens[$index]->equals($blockType['end'])) { - --$openCount; - } - } while (1 >= $openCount); - - $before['start'] = $index; - $index = $tokens->getPrevMeaningfulToken($index); - } - - if (!isset($before['start'])) { - return null; - } - - return $before; - } - - /** - * @return array{start: int, end: int} - */ - private function getAfterOperator(Tokens $tokens, int $index): array - { - $index = $tokens->getNextMeaningfulToken($index); - $after = ['start' => $index]; - - do { - $blockType = Tokens::detectBlockType($tokens[$index]); - - if (null !== $blockType) { - $index = $tokens->findBlockEnd($blockType['type'], $index); - } - - $after['end'] = $index; - $index = $tokens->getNextMeaningfulToken($index); - } while (!$tokens[$index]->equals(':')); - - return $after; - } - - /** - * @param array{start: int, end: int} $range - */ - private function clearMeaningfulFromRange(Tokens $tokens, array $range): void - { - // $range['end'] must be meaningful! - for ($i = $range['end']; $i >= $range['start']; $i = $tokens->getPrevMeaningfulToken($i)) { - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php deleted file mode 100644 index 8487435..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php +++ /dev/null @@ -1,222 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TernaryToNullCoalescingFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Use `null` coalescing operator `??` where possible.', - [ - new CodeSample( - "isTokenKindFound(\T_ISSET); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $issetIndices = array_keys($tokens->findGivenKind(\T_ISSET)); - - foreach (array_reverse($issetIndices) as $issetIndex) { - $this->fixIsset($tokens, $issetIndex); - } - } - - /** - * @param int $index of `T_ISSET` token - */ - private function fixIsset(Tokens $tokens, int $index): void - { - $prevTokenIndex = $tokens->getPrevMeaningfulToken($index); - - if ($this->isHigherPrecedenceAssociativityOperator($tokens[$prevTokenIndex])) { - return; - } - - $startBraceIndex = $tokens->getNextTokenOfKind($index, ['(']); - $endBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startBraceIndex); - - $ternaryQuestionMarkIndex = $tokens->getNextMeaningfulToken($endBraceIndex); - - if (!$tokens[$ternaryQuestionMarkIndex]->equals('?')) { - return; // we are not in a ternary operator - } - - // search what is inside the isset() - $issetTokens = $this->getMeaningfulSequence($tokens, $startBraceIndex, $endBraceIndex); - - if ($this->hasChangingContent($issetTokens)) { - return; // some weird stuff inside the isset - } - - $issetCode = $issetTokens->generateCode(); - - if ('$this' === $issetCode) { - return; // null coalescing operator does not with $this - } - - // search what is inside the middle argument of ternary operator - $ternaryColonIndex = $tokens->getNextTokenOfKind($ternaryQuestionMarkIndex, [':']); - $ternaryFirstOperandTokens = $this->getMeaningfulSequence($tokens, $ternaryQuestionMarkIndex, $ternaryColonIndex); - - if ($issetCode !== $ternaryFirstOperandTokens->generateCode()) { - return; // regardless of non-meaningful tokens, the operands are different - } - - $ternaryFirstOperandIndex = $tokens->getNextMeaningfulToken($ternaryQuestionMarkIndex); - - // preserve comments and spaces - $comments = []; - $commentStarted = false; - - for ($loopIndex = $index; $loopIndex < $ternaryFirstOperandIndex; ++$loopIndex) { - if ($tokens[$loopIndex]->isComment()) { - $comments[] = $tokens[$loopIndex]; - $commentStarted = true; - } elseif ($commentStarted) { - if ($tokens[$loopIndex]->isWhitespace()) { - $comments[] = $tokens[$loopIndex]; - } - - $commentStarted = false; - } - } - - $tokens[$ternaryColonIndex] = new Token([\T_COALESCE, '??']); - $tokens->overrideRange($index, $ternaryFirstOperandIndex - 1, $comments); - } - - /** - * Get the sequence of meaningful tokens and returns a new Tokens instance. - * - * @param int $start start index - * @param int $end end index - */ - private function getMeaningfulSequence(Tokens $tokens, int $start, int $end): Tokens - { - $sequence = []; - $index = $start; - - while ($index < $end) { - $index = $tokens->getNextMeaningfulToken($index); - - if ($index >= $end || null === $index) { - break; - } - - $sequence[] = $tokens[$index]; - } - - return Tokens::fromArray($sequence); - } - - /** - * Check if the requested token is an operator computed - * before the ternary operator along with the `isset()`. - */ - private function isHigherPrecedenceAssociativityOperator(Token $token): bool - { - return - $token->isGivenKind([ - \T_ARRAY_CAST, - \T_BOOLEAN_AND, - \T_BOOLEAN_OR, - \T_BOOL_CAST, - \T_COALESCE, - \T_DEC, - \T_DOUBLE_CAST, - \T_INC, - \T_INT_CAST, - \T_IS_EQUAL, - \T_IS_GREATER_OR_EQUAL, - \T_IS_IDENTICAL, - \T_IS_NOT_EQUAL, - \T_IS_NOT_IDENTICAL, - \T_IS_SMALLER_OR_EQUAL, - \T_OBJECT_CAST, - \T_POW, - \T_SL, - \T_SPACESHIP, - \T_SR, - \T_STRING_CAST, - \T_UNSET_CAST, - ]) - || $token->equalsAny([ - '!', - '%', - '&', - '*', - '+', - '-', - '/', - ':', - '^', - '|', - '~', - '.', - ]); - } - - /** - * Check if the `isset()` content may change if called multiple times. - * - * @param Tokens $tokens The original token list - */ - private function hasChangingContent(Tokens $tokens): bool - { - foreach ($tokens as $token) { - if ($token->isGivenKind([ - \T_DEC, - \T_INC, - \T_YIELD, - \T_YIELD_FROM, - ]) || $token->equals('(')) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php deleted file mode 100644 index f297166..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php +++ /dev/null @@ -1,124 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Operator; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * only_dec_inc?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * only_dec_inc: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gregor Harlan - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class UnaryOperatorSpacesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Unary operators should be placed adjacent to their operands.', - [ - new CodeSample(" false], - ), - new CodeSample( - <<<'PHP' - true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NotOperatorWithSpaceFixer, NotOperatorWithSuccessorSpaceFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('only_dec_inc', 'Limit to increment and decrement operators.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - if (true === $this->configuration['only_dec_inc'] && !$tokens[$index]->isGivenKind([\T_DEC, \T_INC])) { - continue; - } - - if ($tokensAnalyzer->isUnarySuccessorOperator($index)) { - if (!$tokens[$tokens->getPrevNonWhitespace($index)]->isComment()) { - $tokens->removeLeadingWhitespace($index); - } - - continue; - } - - if ($tokensAnalyzer->isUnaryPredecessorOperator($index)) { - $tokens->removeTrailingWhitespace($index); - - continue; - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php deleted file mode 100644 index 29b4be8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php +++ /dev/null @@ -1,94 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpTag; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Ceeram - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BlankLineAfterOpeningTagFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Ensure there is no code on the same line as the PHP open tag and it is followed by a blank line.', - [new CodeSample("isMonolithicPhp() && !$tokens->isTokenKindFound(\T_OPEN_TAG_WITH_ECHO); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - $newlineFound = false; - foreach ($tokens as $token) { - if (($token->isWhitespace() || $token->isGivenKind(\T_OPEN_TAG)) && str_contains($token->getContent(), "\n")) { - $newlineFound = true; - - break; - } - } - - // ignore one-line files - if (!$newlineFound) { - return; - } - - $openTagIndex = $tokens[0]->isGivenKind(\T_INLINE_HTML) ? 1 : 0; - $token = $tokens[$openTagIndex]; - - if (!str_contains($token->getContent(), "\n")) { - $tokens[$openTagIndex] = new Token([$token->getId(), rtrim($token->getContent()).$lineEnding]); - } - - $newLineIndex = $openTagIndex + 1; - if (!$tokens->offsetExists($newLineIndex)) { - return; - } - - if ($tokens[$newLineIndex]->isWhitespace()) { - if (!str_contains($tokens[$newLineIndex]->getContent(), "\n")) { - $tokens[$newLineIndex] = new Token([\T_WHITESPACE, $lineEnding.$tokens[$newLineIndex]->getContent()]); - } - } else { - $tokens->insertAt($newLineIndex, new Token([\T_WHITESPACE, $lineEnding])); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/EchoTagSyntaxFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/EchoTagSyntaxFixer.php deleted file mode 100644 index ce7843b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/EchoTagSyntaxFixer.php +++ /dev/null @@ -1,267 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpTag; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * format?: 'long'|'short', - * long_function?: 'echo'|'print', - * shorten_simple_statements_only?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * format: 'long'|'short', - * long_function: 'echo'|'print', - * shorten_simple_statements_only: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Michele Locati - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class EchoTagSyntaxFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** @internal */ - public const OPTION_FORMAT = 'format'; - - /** @internal */ - public const OPTION_SHORTEN_SIMPLE_STATEMENTS_ONLY = 'shorten_simple_statements_only'; - - /** @internal */ - public const OPTION_LONG_FUNCTION = 'long_function'; - - /** @internal */ - public const FORMAT_SHORT = 'short'; - - /** @internal */ - public const FORMAT_LONG = 'long'; - - /** @internal */ - public const LONG_FUNCTION_ECHO = 'echo'; - - /** @internal */ - public const LONG_FUNCTION_PRINT = 'print'; - - private const SUPPORTED_FORMAT_OPTIONS = [ - self::FORMAT_LONG, - self::FORMAT_SHORT, - ]; - - private const SUPPORTED_LONGFUNCTION_OPTIONS = [ - self::LONG_FUNCTION_ECHO, - self::LONG_FUNCTION_PRINT, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - $sample = <<<'EOT' - - - - - - EOT; - - return new FixerDefinition( - 'Replaces short-echo ` self::FORMAT_LONG]), - new CodeSample($sample, [self::OPTION_FORMAT => self::FORMAT_LONG, self::OPTION_LONG_FUNCTION => self::LONG_FUNCTION_PRINT]), - new CodeSample($sample, [self::OPTION_FORMAT => self::FORMAT_SHORT]), - new CodeSample($sample, [self::OPTION_FORMAT => self::FORMAT_SHORT, self::OPTION_SHORTEN_SIMPLE_STATEMENTS_ONLY => false]), - ], - null, - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoMixedEchoPrintFixer. - * Must run after NoUselessPrintfFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - if (self::FORMAT_SHORT === $this->configuration[self::OPTION_FORMAT]) { - return $tokens->isAnyTokenKindsFound([\T_ECHO, \T_PRINT]); - } - - return $tokens->isTokenKindFound(\T_OPEN_TAG_WITH_ECHO); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder(self::OPTION_FORMAT, 'The desired language construct.')) - ->setAllowedValues(self::SUPPORTED_FORMAT_OPTIONS) - ->setDefault(self::FORMAT_LONG) - ->getOption(), - (new FixerOptionBuilder(self::OPTION_LONG_FUNCTION, 'The function to be used to expand the short echo tags.')) - ->setAllowedValues(self::SUPPORTED_LONGFUNCTION_OPTIONS) - ->setDefault(self::LONG_FUNCTION_ECHO) - ->getOption(), - (new FixerOptionBuilder(self::OPTION_SHORTEN_SIMPLE_STATEMENTS_ONLY, 'Render short-echo tags only in case of simple code.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if (self::FORMAT_SHORT === $this->configuration[self::OPTION_FORMAT]) { - $this->longToShort($tokens); - } else { - $this->shortToLong($tokens); - } - } - - private function longToShort(Tokens $tokens): void - { - $count = $tokens->count(); - - for ($index = 0; $index < $count; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_OPEN_TAG)) { - continue; - } - - $echoPrintIndex = $tokens->getNextMeaningfulToken($index); - - if (null === $echoPrintIndex) { - return; - } - - if (!$tokens[$echoPrintIndex]->isGivenKind([\T_ECHO, \T_PRINT])) { - $index = $echoPrintIndex; - - continue; - } - - if (true === $this->configuration[self::OPTION_SHORTEN_SIMPLE_STATEMENTS_ONLY] && $this->isComplexCode($tokens, $echoPrintIndex + 1)) { - $index = $echoPrintIndex; - - continue; - } - - $tokens[$index] = new Token([\T_OPEN_TAG_WITH_ECHO, 'ensureWhitespaceAtIndex($index + 1, 0, ''); - - $this->fixWhitespaceBeforeEchoPrint($tokens, $echoPrintIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($echoPrintIndex); - } - } - - private function shortToLong(Tokens $tokens): void - { - if (self::LONG_FUNCTION_PRINT === $this->configuration[self::OPTION_LONG_FUNCTION]) { - $echoToken = [\T_PRINT, 'print']; - } else { - $echoToken = [\T_ECHO, 'echo']; - } - - $index = -1; - - while (true) { - $index = $tokens->getNextTokenOfKind($index, [[\T_OPEN_TAG_WITH_ECHO]]); - - if (null === $index) { - return; - } - - $replace = [new Token([\T_OPEN_TAG, 'isWhitespace()) { - $replace[] = new Token([\T_WHITESPACE, ' ']); - } - - $tokens->overrideRange($index, $index, $replace); - ++$index; - } - } - - /** - * Check if $tokens, starting at $index, contains "complex code", that is, the content - * of the echo tag contains more than a simple "echo something". - * - * This is done by a very quick test: if the tag contains non-whitespace tokens after - * a semicolon, we consider it as "complex". - * - * @example `` is false (not complex) - * @example `` is false (not "complex") - * @example `` is true ("complex") - */ - private function isComplexCode(Tokens $tokens, int $index): bool - { - $semicolonFound = false; - - for ($count = $tokens->count(); $index < $count; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_CLOSE_TAG)) { - return false; - } - - if (';' === $token->getContent()) { - $semicolonFound = true; - } elseif ($semicolonFound && !$token->isWhitespace()) { - return true; - } - } - - return false; - } - - private function fixWhitespaceBeforeEchoPrint(Tokens $tokens, int $echoPrintIndex): void - { - $whitespaceBeforeEchoPrintIndex = $tokens->getNonEmptySibling($echoPrintIndex, -1); - - if (!$tokens[$whitespaceBeforeEchoPrintIndex]->isWhitespace()) { - return; - } - - $prevWhitespaceBeforeEchoPrintIndex = $tokens->getNonEmptySibling($whitespaceBeforeEchoPrintIndex, -1); - if ( - $tokens[$prevWhitespaceBeforeEchoPrintIndex]->isGivenKind(\T_COMMENT) - && !Preg::match('/\*\/$/', $tokens[$prevWhitespaceBeforeEchoPrintIndex]->getContent()) - ) { - return; - } - - $tokens->clearAt($whitespaceBeforeEchoPrintIndex); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php deleted file mode 100644 index 46da9b8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php +++ /dev/null @@ -1,135 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpTag; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR1 ¶2.1. - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FullOpeningTagFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHP code must use the long `generateCode(); - - // replace all echo ' echo ' $token) { - if ($token->isGivenKind(\T_OPEN_TAG)) { - $tokenContent = $token->getContent(); - $possibleOpenContent = substr($content, $tokensOldContentLength, 5); - - if (false === $possibleOpenContent || 'isGivenKind([\T_COMMENT, \T_DOC_COMMENT, \T_CONSTANT_ENCAPSED_STRING, \T_ENCAPSED_AND_WHITESPACE, \T_STRING])) { - $tokenContent = ''; - $tokenContentLength = 0; - $parts = explode('getContent()); - $iLast = \count($parts) - 1; - - foreach ($parts as $i => $part) { - $tokenContent .= $part; - $tokenContentLength += \strlen($part); - - if ($i !== $iLast) { - $originalTokenContent = substr($content, $tokensOldContentLength + $tokenContentLength, 5); - if ('getId(), $tokenContent]); - $token = $newTokens[$index]; - } - - $tokensOldContentLength += \strlen($token->getContent()); - } - - $tokens->overrideRange(0, $tokens->count() - 1, $newTokens); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php deleted file mode 100644 index b30c6a3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php +++ /dev/null @@ -1,70 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpTag; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Ceeram - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class LinebreakAfterOpeningTagFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Ensure there is no code on the same line as the PHP open tag.', - [new CodeSample("isMonolithicPhp() && !$tokens->isTokenKindFound(\T_OPEN_TAG_WITH_ECHO); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $openTagIndex = $tokens[0]->isGivenKind(\T_INLINE_HTML) ? 1 : 0; - - // ignore if linebreak already present - if (str_contains($tokens[$openTagIndex]->getContent(), "\n")) { - return; - } - - $newlineFound = false; - foreach ($tokens as $token) { - if (($token->isWhitespace() || $token->isGivenKind(\T_OPEN_TAG)) && str_contains($token->getContent(), "\n")) { - $newlineFound = true; - - break; - } - } - - // ignore one-line files - if (!$newlineFound) { - return; - } - - $tokens[$openTagIndex] = new Token([\T_OPEN_TAG, rtrim($tokens[$openTagIndex]->getContent()).$this->whitespacesConfig->getLineEnding()]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php deleted file mode 100644 index 510568d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php +++ /dev/null @@ -1,61 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpTag; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶2.2. - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoClosingTagFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The closing `?>` tag MUST be omitted from files containing only PHP.', - [new CodeSample("\n")], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return \count($tokens) >= 2 && $tokens->isMonolithicPhp() && $tokens->isTokenKindFound(\T_CLOSE_TAG); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $closeTags = $tokens->findGivenKind(\T_CLOSE_TAG); - $index = array_key_first($closeTags); - - if (isset($tokens[$index - 1]) && $tokens[$index - 1]->isWhitespace()) { - $tokens->clearAt($index - 1); - } - $tokens->clearAt($index); - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$prevIndex]->equalsAny([';', '}', [\T_OPEN_TAG]])) { - $tokens->insertAt($prevIndex + 1, new Token(';')); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAssertNewNamesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAssertNewNamesFixer.php deleted file mode 100644 index 4ed16c3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAssertNewNamesFixer.php +++ /dev/null @@ -1,111 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Krzysztof Ciszewski - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitAssertNewNamesFixer extends AbstractPhpUnitFixer -{ - public function isRisky(): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Rename deprecated PHPUnit assertions like `assertFileNotExists` to new methods like `assertFileDoesNotExist`.', - [ - new CodeSample( - <<<'PHP' - assertFileNotExists("test.php"); - $this->assertNotIsWritable("path.php"); - } - } - - PHP, - ), - ], - null, - 'Fixer could be risky if one is overriding PHPUnit\'s native methods.', - ); - } - - /** - * {@inheritdoc} - * - * Must run after PhpUnitDedicateAssertFixer. - */ - public function getPriority(): int - { - return -10; - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - foreach ($this->getPreviousAssertCall($tokens, $startIndex, $endIndex) as $assertCall) { - $this->fixAssertNewNames($tokens, $assertCall); - } - } - - /** - * @param array{ - * index: int, - * loweredName: string, - * openBraceIndex: int, - * closeBraceIndex: int, - * } $assertCall - */ - private function fixAssertNewNames(Tokens $tokens, array $assertCall): void - { - $replacements = [ - 'assertnotisreadable' => 'assertIsNotReadable', - 'assertnotiswritable' => 'assertIsNotWritable', - 'assertdirectorynotexists' => 'assertDirectoryDoesNotExist', - 'assertfilenotexists' => 'assertFileDoesNotExist', - 'assertdirectorynotisreadable' => 'assertDirectoryIsNotReadable', - 'assertdirectorynotiswritable' => 'assertDirectoryIsNotWriteable', - 'assertfilenotisreadable' => 'assertFileIsNotReadable', - 'assertfilenotiswritable' => 'assertFileIsNotWriteable', - 'assertregexp' => 'assertMatchesRegularExpression', - 'assertnotregexp' => 'assertDoesNotMatchRegularExpression', - ]; - $replacement = $replacements[$assertCall['loweredName']] ?? null; - - if (null === $replacement) { - return; - } - - $tokens[$assertCall['index']] = new Token([ - \T_STRING, - $replacement, - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAttributesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAttributesFixer.php deleted file mode 100644 index 35eda13..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAttributesFixer.php +++ /dev/null @@ -1,651 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Processor\ImportProcessor; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * keep_annotations?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * keep_annotations: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitAttributesFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** @var array */ - private array $fixingMap; - - public function __construct() - { - parent::__construct(); - $this->prepareFixingMap(); - } - - public function getDefinition(): FixerDefinitionInterface - { - $codeSample = <<<'PHP' - true]), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return \PHP_VERSION_ID >= 8_00_00 && parent::isCandidate($tokens); - } - - /** - * {@inheritdoc} - * - * Must run before FullyQualifiedStrictTypesFixer, NoEmptyPhpdocFixer, PhpdocSeparationFixer, PhpdocTrimConsecutiveBlankLineSeparationFixer, PhpdocTrimFixer. - * Must run after PhpUnitSizeClassFixer, PhpUnitTestClassRequiresCoversFixer. - */ - public function getPriority(): int - { - return 8; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('keep_annotations', 'Whether to keep annotations or not. This may be helpful for projects that support PHP before version 8 or PHPUnit before version 10.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $classIndex = $tokens->getPrevTokenOfKind($startIndex, [[\T_CLASS]]); - $docBlockIndex = $this->getDocBlockIndex($tokens, $classIndex); - if ($tokens[$docBlockIndex]->isGivenKind(\T_DOC_COMMENT)) { - $startIndex = $docBlockIndex; - } - - for ($index = $endIndex; $index >= $startIndex; --$index) { - if (!$tokens[$index]->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $targetIndex = $tokens->getTokenNotOfKindSibling( - $index, - 1, - [[\T_ABSTRACT], [\T_COMMENT], [\T_FINAL], [\T_FUNCTION], [\T_PRIVATE], [\T_PROTECTED], [\T_PUBLIC], [\T_STATIC], [\T_WHITESPACE]], - ); - $annotationScope = $tokens[$targetIndex]->isGivenKind(\T_CLASS) ? 'class' : 'method'; - - $docBlock = new DocBlock($tokens[$index]->getContent()); - - $presentAttributes = []; - foreach (array_reverse($docBlock->getAnnotations()) as $annotation) { - $annotationName = $annotation->getTag()->getName(); - - if (!isset($this->fixingMap[$annotationName])) { - continue; - } - if (!self::shouldBeFixed($annotationName, $annotationScope)) { - continue; - } - - /** @phpstan-ignore-next-line */ - $tokensToInsert = self::{$this->fixingMap[$annotationName]}($tokens, $index, $annotation); - - $presentAttributes[$annotationName] ??= self::isAttributeAlreadyPresent($tokens, $index, $tokensToInsert); - - if ([] === $tokensToInsert) { - continue; - } - - if (!$presentAttributes[$annotationName]) { - $tokens->insertSlices([$index + 1 => $tokensToInsert]); - } - - if (!$this->configuration['keep_annotations']) { - $annotation->remove(); - } - } - - if ('' === $docBlock->getContent()) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } else { - $tokens[$index] = new Token([\T_DOC_COMMENT, $docBlock->getContent()]); - } - } - } - - private function prepareFixingMap(): void - { - // annotations that map to attribute without parameters - foreach ([ - 'after', - 'afterClass', - 'before', - 'beforeClass', - 'coversNothing', - 'doesNotPerformAssertions', - 'large', - 'medium', - 'runInSeparateProcess', - 'runTestsInSeparateProcesses', - 'small', - 'test', - 'preCondition', - 'postCondition', - ] as $annotation) { - $this->fixingMap[$annotation] = 'fixWithoutParameters'; - } - - // annotations that map to attribute with single string value - foreach (['group', 'testDox', 'ticket'] as $annotation) { - $this->fixingMap[$annotation] = 'fixWithSingleStringValue'; - } - - // annotations that map from 'enabled'/'disabled' value to attribute with boolean value - foreach (['backupGlobals', 'backupStaticAttributes', 'preserveGlobalState'] as $annotation) { - $this->fixingMap[$annotation] = 'fixWithEnabledDisabledValue'; - } - - // annotations that has custom mapping function - $this->fixingMap['covers'] = 'fixCovers'; - $this->fixingMap['dataProvider'] = 'fixDataProvider'; - $this->fixingMap['depends'] = 'fixDepends'; - $this->fixingMap['requires'] = 'fixRequires'; - $this->fixingMap['testWith'] = 'fixTestWith'; - $this->fixingMap['uses'] = 'fixUses'; - } - - private static function shouldBeFixed(string $annotationName, string $annotationScope): bool - { - if ( - 'method' === $annotationScope - && \in_array($annotationName, ['covers', 'large', 'medium', 'runTestsInSeparateProcesses', 'small', 'uses'], true) - ) { - return false; - } - - if ( - 'class' === $annotationScope - && \in_array($annotationName, ['after', 'afterClass', 'before', 'beforeClass', 'dataProvider', 'depends', 'postCondition', 'preCondition', 'runInSeparateProcess', 'test', 'testWith'], true) - ) { - return false; - } - - return true; - } - - /** - * @param list $tokensToInsert - */ - private static function isAttributeAlreadyPresent( - Tokens $tokens, - int $index, - array $tokensToInsert - ): bool { - $attributeIndex = $tokens->getNextMeaningfulToken($index); - if (!$tokens[$attributeIndex]->isGivenKind(\T_ATTRIBUTE)) { - return false; - } - - $insertedClassName = ''; - foreach (\array_slice($tokensToInsert, 3) as $token) { - if ($token->equals('(') || $token->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - break; - } - $insertedClassName .= $token->getContent(); - } - - foreach (AttributeAnalyzer::collect($tokens, $attributeIndex) as $attributeAnalysis) { - foreach ($attributeAnalysis->getAttributes() as $attribute) { - $className = ltrim(AttributeAnalyzer::determineAttributeFullyQualifiedName($tokens, $attribute['name'], $attribute['start']), '\\'); - - if ($insertedClassName === $className) { - return true; - } - - if ('PHPUnit\Framework\Attributes\TestWithJson' === $insertedClassName && 'PHPUnit\Framework\Attributes\TestWith' === $className) { - return true; - } - } - } - - return false; - } - - /** - * @return non-empty-list - */ - private static function fixWithoutParameters(Tokens $tokens, int $index, Annotation $annotation): array - { - return self::createAttributeTokens($tokens, $index, self::getAttributeNameForAnnotation($annotation)); - } - - /** - * @return list - */ - private static function fixWithSingleStringValue(Tokens $tokens, int $index, Annotation $annotation): array - { - Preg::match( - \sprintf('/@%s\s+(.*\S)(?:\R|\s*\*+\/$)/', $annotation->getTag()->getName()), - $annotation->getContent(), - $matches, - ); - if (!isset($matches[1])) { - return []; - } - - return self::createAttributeTokens( - $tokens, - $index, - self::getAttributeNameForAnnotation($annotation), - self::createEscapedStringToken($matches[1]), - ); - } - - /** - * @return list - */ - private static function fixWithEnabledDisabledValue(Tokens $tokens, int $index, Annotation $annotation): array - { - $matches = self::getMatches($annotation); - if (!isset($matches[1])) { - return []; - } - - return self::createAttributeTokens( - $tokens, - $index, - self::getAttributeNameForAnnotation($annotation), - new Token([\T_STRING, isset($matches[1]) && 'enabled' === $matches[1] ? 'true' : 'false']), - ); - } - - /** - * @return list - */ - private static function fixCovers(Tokens $tokens, int $index, Annotation $annotation): array - { - $matches = self::getMatches($annotation); - \assert(isset($matches[1])); - - $splitByDoubleColon = explode('::', $matches[1]); - $splitByDoubleColonCount = \count($splitByDoubleColon); - \assert(isset($splitByDoubleColon[0])); - - if (1 === $splitByDoubleColonCount) { - // naive guessing if it's a Trait or Class, as we do not have access to codebase to make sure, but it's better than nothing - $isTrait = str_ends_with($splitByDoubleColon[0], 'Trait'); - - return self::createAttributeTokens( - $tokens, - $index, - $isTrait ? 'CoversTrait' : 'CoversClass', - ...self::toClassConstant($splitByDoubleColon[0]), - ); - } - - if (2 === $splitByDoubleColonCount) { - \assert(isset($splitByDoubleColon[1])); - if ('' === $splitByDoubleColon[0]) { - return self::createAttributeTokens( - $tokens, - $index, - 'CoversFunction', - self::createEscapedStringToken($splitByDoubleColon[1]), - ); - } - - if ('' !== $splitByDoubleColon[1]) { - return self::createAttributeTokens( - $tokens, - $index, - 'CoversMethod', - ...self::toClassConstant($splitByDoubleColon[0]), - ...[ - new Token(','), - new Token([\T_WHITESPACE, ' ']), - self::fixNameAndCreateEscapedStringToken($splitByDoubleColon[1]), - ], - ); - } - } - - // unexpected format, do not attempt to fix - return []; - } - - /** - * @return list - */ - private static function fixDataProvider(Tokens $tokens, int $index, Annotation $annotation): array - { - $matches = self::getMatches($annotation); - if (!isset($matches[1])) { - return []; - } - - if (str_contains($matches[1], '::')) { - // @phpstan-ignore offsetAccess.notFound - [$class, $method] = explode('::', $matches[1]); - - return self::createAttributeTokens( - $tokens, - $index, - 'DataProviderExternal', - ...[ - ...self::toClassConstant($class), - new Token(','), - new Token([\T_WHITESPACE, ' ']), - self::fixNameAndCreateEscapedStringToken($method), - ], - ); - } - - return self::createAttributeTokens($tokens, $index, 'DataProvider', self::fixNameAndCreateEscapedStringToken($matches[1])); - } - - /** - * @see https://github.com/sebastianbergmann/phpunit/blob/11.5.12/src/Metadata/Parser/AnnotationParser.php#L266 - */ - private static function fixNameAndCreateEscapedStringToken(string $methodName): Token - { - return self::createEscapedStringToken(rtrim($methodName, " ()\n\r\t\v\x00")); - } - - /** - * @return list - */ - private static function fixDepends(Tokens $tokens, int $index, Annotation $annotation): array - { - $matches = self::getMatches($annotation); - if (!isset($matches[1])) { - return []; - } - - $nameSuffix = ''; - $depended = $matches[1]; - if (isset($matches[2])) { - if ('clone' === $matches[1]) { - $nameSuffix = 'UsingDeepClone'; - $depended = $matches[2]; - } elseif ('shallowClone' === $matches[1]) { - $nameSuffix = 'UsingShallowClone'; - $depended = $matches[2]; - } - } - - $class = null; - $method = $depended; - if (str_contains($depended, '::')) { - // @phpstan-ignore offsetAccess.notFound - [$class, $method] = explode('::', $depended); - - if ('class' === $method) { - $method = null; - $nameSuffix = '' === $nameSuffix ? 'OnClass' : ('OnClass'.$nameSuffix); - } else { - $nameSuffix = ('External'.$nameSuffix); - } - } - - $attributeTokens = []; - if (null !== $class) { - $attributeTokens = self::toClassConstant($class); - } - if (null !== $method) { - if ([] !== $attributeTokens) { - $attributeTokens[] = new Token(','); - $attributeTokens[] = new Token([\T_WHITESPACE, ' ']); - } - $attributeTokens[] = self::createEscapedStringToken($method); - } - - return self::createAttributeTokens($tokens, $index, 'Depends'.$nameSuffix, ...$attributeTokens); - } - - /** - * @return list - */ - private static function fixRequires(Tokens $tokens, int $index, Annotation $annotation): array - { - $matches = self::getMatches($annotation); - if (!isset($matches[1])) { - return []; - } - - $map = [ - 'extension' => 'RequiresPhpExtension', - 'function' => 'RequiresFunction', - 'PHP' => 'RequiresPhp', - 'PHPUnit' => 'RequiresPhpunit', - 'OS' => 'RequiresOperatingSystem', - 'OSFAMILY' => 'RequiresOperatingSystemFamily', - 'setting' => 'RequiresSetting', - ]; - - if (!isset($matches[2]) || !isset($map[$matches[1]])) { - return []; - } - - $attributeName = $map[$matches[1]]; - - if ('RequiresFunction' === $attributeName && str_contains($matches[2], '::')) { - // @phpstan-ignore offsetAccess.notFound - [$class, $method] = explode('::', $matches[2]); - - $attributeName = 'RequiresMethod'; - $attributeTokens = [ - ...self::toClassConstant($class), - new Token(','), - new Token([\T_WHITESPACE, ' ']), - self::createEscapedStringToken($method), - ]; - } elseif (\in_array($attributeName, ['RequiresPhp', 'RequiresPhpunit'], true) && isset($matches[3])) { - $attributeTokens = [self::createEscapedStringToken($matches[2].' '.$matches[3])]; - } else { - $attributeTokens = [self::createEscapedStringToken(self::fixVersionConstraint($matches[2]))]; - } - - if (isset($matches[3]) && !\in_array($attributeName, ['RequiresPhp', 'RequiresPhpunit'], true)) { - $attributeTokens[] = new Token(','); - $attributeTokens[] = new Token([\T_WHITESPACE, ' ']); - $attributeTokens[] = self::createEscapedStringToken(self::fixVersionConstraint($matches[3])); - } - - return self::createAttributeTokens($tokens, $index, $attributeName, ...$attributeTokens); - } - - private static function fixVersionConstraint(string $version): string - { - if (Preg::match('/^[\d\.-]+(dev|(RC|alpha|beta)[\d\.])?$/', $version)) { - $version = '>= '.$version; - } - - return $version; - } - - /** - * @return list - */ - private static function fixTestWith(Tokens $tokens, int $index, Annotation $annotation): array - { - $content = $annotation->getContent(); - $content = Preg::replace('/@testWith\s+/', '', $content); - $content = Preg::replace('/(^|\R)\s+\**\s*/', "\n", $content); - $content = trim($content); - if ('' === $content) { - return []; - } - - $attributeTokens = []; - foreach (explode("\n", $content) as $json) { - $attributeTokens = array_merge( - $attributeTokens, - self::createAttributeTokens($tokens, $index, 'TestWithJson', self::createEscapedStringToken($json)), - ); - } - - return $attributeTokens; - } - - /** - * @return list - */ - private static function fixUses(Tokens $tokens, int $index, Annotation $annotation): array - { - $matches = self::getMatches($annotation); - if (!isset($matches[1])) { - return []; - } - - if (str_starts_with($matches[1], '::')) { - $attributeName = 'UsesFunction'; - $attributeTokens = [self::createEscapedStringToken(substr($matches[1], 2))]; - } elseif (Preg::match('/^[a-zA-Z\d\\\]+$/', $matches[1])) { - $attributeName = 'UsesClass'; - $attributeTokens = self::toClassConstant($matches[1]); - } else { - return []; - } - - return self::createAttributeTokens($tokens, $index, $attributeName, ...$attributeTokens); - } - - /** - * @return list - */ - private static function getMatches(Annotation $annotation): array - { - Preg::match( - \sprintf('/@%s\s+(\S+)(?:\s+(\S+))?(?:\s+(.+\S))?\s*(?:\R|\*+\/$)/', $annotation->getTag()->getName()), - $annotation->getContent(), - $matches, - ); - - \assert(array_is_list($matches)); // preg_match matches is not well typed, it depends on used regex, let's assure the type to instruct SCA - - return $matches; - } - - private static function getAttributeNameForAnnotation(Annotation $annotation): string - { - $annotationName = $annotation->getTag()->getName(); - - return 'backupStaticAttributes' === $annotationName - ? 'BackupStaticProperties' - : ucfirst($annotationName); - } - - /** - * @return non-empty-list - */ - private static function createAttributeTokens( - Tokens $tokens, - int $index, - string $className, - Token ...$attributeTokens - ): array { - if ([] !== $attributeTokens) { - $attributeTokens = [ - new Token('('), - ...$attributeTokens, - new Token(')'), - ]; - } - - return [ - clone $tokens[$index + 1], - new Token([\T_ATTRIBUTE, '#[']), - new Token([\T_NS_SEPARATOR, '\\']), - new Token([\T_STRING, 'PHPUnit']), - new Token([\T_NS_SEPARATOR, '\\']), - new Token([\T_STRING, 'Framework']), - new Token([\T_NS_SEPARATOR, '\\']), - new Token([\T_STRING, 'Attributes']), - new Token([\T_NS_SEPARATOR, '\\']), - new Token([\T_STRING, $className]), - ...$attributeTokens, - new Token([CT::T_ATTRIBUTE_CLOSE, ']']), - ]; - } - - /** - * @param non-empty-string $name - * - * @return list - */ - private static function toClassConstant(string $name): array - { - return [ - ...ImportProcessor::tokenizeName($name), - new Token([\T_DOUBLE_COLON, '::']), - new Token([CT::T_CLASS_CONSTANT, 'class']), - ]; - } - - private static function createEscapedStringToken(string $value): Token - { - return new Token([\T_CONSTANT_ENCAPSED_STRING, "'".str_replace("'", "\\'", $value)."'"]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php deleted file mode 100644 index bf49e15..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php +++ /dev/null @@ -1,214 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * assertions?: list<'assertEquals'|'assertNotEquals'|'assertNotSame'|'assertSame'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * assertions: list<'assertEquals'|'assertNotEquals'|'assertNotSame'|'assertSame'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitConstructFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function isRisky(): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPUnit assertion method calls like `->assertSame(true, $foo)` should be written with dedicated method like `->assertTrue($foo)`.', - [ - new CodeSample( - <<<'PHP' - assertEquals(false, $b); - $this->assertSame(true, $a); - $this->assertNotEquals(null, $c); - $this->assertNotSame(null, $d); - } - } - - PHP, - ), - new CodeSample( - <<<'PHP' - assertEquals(false, $b); - $this->assertSame(true, $a); - $this->assertNotEquals(null, $c); - $this->assertNotSame(null, $d); - } - } - - PHP, - ['assertions' => ['assertSame', 'assertNotSame']], - ), - ], - null, - 'Fixer could be risky if one is overriding PHPUnit\'s native methods.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpUnitDedicateAssertFixer. - */ - public function getPriority(): int - { - return -8; - } - - /** - * @uses fixAssertNegative() - * @uses fixAssertPositive() - */ - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - // no assertions to be fixed - fast return - if ([] === $this->configuration['assertions']) { - return; - } - - foreach ($this->configuration['assertions'] as $assertionMethod) { - for ($index = $startIndex; $index < $endIndex; ++$index) { - $index = \call_user_func_array( - \in_array($assertionMethod, ['assertSame', 'assertEquals'], true) - ? [$this, 'fixAssertPositive'] - : [$this, 'fixAssertNegative'], - [$tokens, $index, $assertionMethod], - ); - - if (null === $index) { - break; - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $assertMethods = [ - 'assertEquals', - 'assertNotEquals', - 'assertNotSame', - 'assertSame', - ]; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('assertions', 'List of assertion methods to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($assertMethods)]) - ->setDefault($assertMethods) - ->getOption(), - ]); - } - - private function fixAssertNegative(Tokens $tokens, int $index, string $method): ?int - { - return $this->fixAssert([ - 'false' => 'assertNotFalse', - 'null' => 'assertNotNull', - 'true' => 'assertNotTrue', - ], $tokens, $index, $method); - } - - private function fixAssertPositive(Tokens $tokens, int $index, string $method): ?int - { - return $this->fixAssert([ - 'false' => 'assertFalse', - 'null' => 'assertNull', - 'true' => 'assertTrue', - ], $tokens, $index, $method); - } - - /** - * @param array $map - */ - private function fixAssert(array $map, Tokens $tokens, int $index, string $method): ?int - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - $sequence = $tokens->findSequence( - [ - [\T_STRING, $method], - '(', - ], - $index, - ); - - if (null === $sequence) { - return null; - } - - $sequenceIndices = array_keys($sequence); - - if (!$functionsAnalyzer->isTheSameClassCall($tokens, $sequenceIndices[0])) { - return null; - } - - \assert(isset($sequenceIndices[1])); - $sequenceIndices[2] = $tokens->getNextMeaningfulToken($sequenceIndices[1]); - $firstParameterToken = $tokens[$sequenceIndices[2]]; - - if (!$firstParameterToken->isNativeConstant()) { - return $sequenceIndices[2]; - } - - $sequenceIndices[3] = $tokens->getNextMeaningfulToken($sequenceIndices[2]); - - // return if first method argument is an expression, not value - if (!$tokens[$sequenceIndices[3]]->equals(',')) { - return $sequenceIndices[3]; - } - - \assert(isset($sequenceIndices[0], $map[strtolower($firstParameterToken->getContent())])); - $tokens[$sequenceIndices[0]] = new Token([\T_STRING, $map[strtolower($firstParameterToken->getContent())]]); - $tokens->clearRange($sequenceIndices[2], $tokens->getNextNonWhitespace($sequenceIndices[3]) - 1); - - return $sequenceIndices[3]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderMethodOrderFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderMethodOrderFixer.php deleted file mode 100644 index aaab51e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderMethodOrderFixer.php +++ /dev/null @@ -1,294 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ClassNotation\OrderedClassElementsFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\DataProviderAnalyzer; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * placement?: 'after'|'before', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * placement: 'after'|'before', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @phpstan-import-type _ClassElement from OrderedClassElementsFixer - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitDataProviderMethodOrderFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Data provider method must be placed after/before the last/first test where used.', - [ - new CodeSample( - <<<'PHP' - 'before', - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before ClassAttributesSeparationFixer, NoBlankLinesAfterClassOpeningFixer. - * Must run after OrderedClassElementsFixer. - */ - public function getPriority(): int - { - return 64; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('placement', 'Where to place the data provider relative to the test where used.')) - ->setAllowedValues(['after', 'before']) - ->setDefault('after') - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $elements = $this->getElements($tokens, $startIndex); - - if (0 === \count($elements)) { - return; - } - - $endIndex = $elements[array_key_last($elements)]['end']; - - $dataProvidersWithUsagePairs = $this->getDataProvidersWithUsagePairs($tokens, $startIndex, $endIndex); - $origUsageDataProviderOrderPairs = $this->getOrigUsageDataProviderOrderPairs($dataProvidersWithUsagePairs); - - $sorted = $elements; - $providersPlaced = []; - if ('before' === $this->configuration['placement']) { - foreach ($origUsageDataProviderOrderPairs as [$usageName, $providerName]) { - if (!isset($providersPlaced[$providerName])) { - $providersPlaced[$providerName] = true; - - $sorted = $this->moveMethodElement($sorted, $usageName, $providerName, false); - } - } - } else { - $sameUsageName = false; - $sameProviderName = false; - foreach ($origUsageDataProviderOrderPairs as [$usageName, $providerName]) { - if (!isset($providersPlaced[$providerName])) { - $providersPlaced[$providerName] = true; - - $sortedBefore = $sorted; - $sorted = $this->moveMethodElement( - $sorted, - $usageName === $sameUsageName // @phpstan-ignore argument.type (https://github.com/phpstan/phpstan/issues/12482) - ? $sameProviderName - : $usageName, - $providerName, - true, - ); - - // honour multiple providers order for one test - $sameUsageName = $usageName; - $sameProviderName = $providerName; - - // keep placement after the first test - if ($sortedBefore !== $sorted) { - unset($providersPlaced[$providerName]); - } - } - } - } - - if ($sorted !== $elements) { - $this->sortTokens($tokens, $startIndex, $endIndex, $sorted); - } - } - - /** - * @return list<_ClassElement> - */ - private function getElements(Tokens $tokens, int $startIndex): array - { - $methodOrderFixer = new OrderedClassElementsFixer(); - - return \Closure::bind(static fn () => $methodOrderFixer->getElements($tokens, $startIndex), null, OrderedClassElementsFixer::class)(); - } - - /** - * @param list<_ClassElement> $elements - */ - private function sortTokens(Tokens $tokens, int $startIndex, int $endIndex, array $elements): void - { - $methodOrderFixer = new OrderedClassElementsFixer(); - - \Closure::bind(static fn () => $methodOrderFixer->sortTokens($tokens, $startIndex, $endIndex, $elements), null, OrderedClassElementsFixer::class)(); - } - - /** - * @param list<_ClassElement> $elements - * - * @return list<_ClassElement> - */ - private function moveMethodElement(array $elements, string $nameKeep, string $nameToMove, bool $after): array - { - $i = 0; - $iKeep = false; - $iToMove = false; - foreach ($elements as $element) { - if ('method' === $element['type']) { - if ($element['name'] === $nameKeep) { - $iKeep = $i; - } elseif ($element['name'] === $nameToMove) { - $iToMove = $i; - } - } - - ++$i; - } - \assert(false !== $iKeep); - \assert(false !== $iToMove); - - if ($iToMove === $iKeep + ($after ? 1 : -1)) { - return $elements; - } - - $elementToMove = $elements[$iToMove]; // @phpstan-ignore offsetAccess.notFound - unset($elements[$iToMove]); - - $c = $iKeep - + ($after ? 1 : 0) - + ($iToMove < $iKeep ? -1 : 0); - - return [ - ...\array_slice($elements, 0, $c), - $elementToMove, - ...\array_slice($elements, $c), - ]; - } - - /** - * @return list - * }> - */ - private function getDataProvidersWithUsagePairs(Tokens $tokens, int $startIndex, int $endIndex): array - { - $dataProvidersWithUsagePairs = []; - - $dataProviderAnalyzer = new DataProviderAnalyzer(); - foreach ($dataProviderAnalyzer->getDataProviders($tokens, $startIndex, $endIndex) as $dataProviderAnalysis) { - $usages = []; - foreach ($dataProviderAnalysis->getUsageIndices() as $usageIndex) { - $methodNameTokens = $tokens->findSequence([[\T_FUNCTION], [\T_STRING]], $usageIndex[0], $endIndex); - if (null === $methodNameTokens) { - continue; - } - - $usages[array_key_last($methodNameTokens)] = [ - array_key_last($methodNameTokens), - end($methodNameTokens)->getContent(), - $usageIndex[1], - ]; - } - \assert([] !== $usages); - - $dataProvidersWithUsagePairs[] = [ - [$dataProviderAnalysis->getNameIndex(), $dataProviderAnalysis->getName()], - $usages, - ]; - } - - return $dataProvidersWithUsagePairs; - } - - /** - * @param list - * }> $dataProvidersWithUsagePairs - * - * @return list - */ - private function getOrigUsageDataProviderOrderPairs(array $dataProvidersWithUsagePairs): array - { - $origUsagesOrderPairs = []; - foreach ($dataProvidersWithUsagePairs as [$dataProviderPair, $usagePairs]) { - foreach ($usagePairs as $usagePair) { - $origUsagesOrderPairs[] = [$usagePair, $dataProviderPair[1]]; - } - } - uasort($origUsagesOrderPairs, static function (array $a, array $b): int { - $cmp = $a[0][0] <=> $b[0][0]; - - return 0 !== $cmp - ? $cmp - : $a[0][2] <=> $b[0][2]; - }); - - $origUsageDataProviderOrderPairs = []; - foreach (array_map(static fn (array $v): array => [$v[0][1], $v[1]], $origUsagesOrderPairs) as [$usageName, $providerName]) { - $origUsageDataProviderOrderPairs[] = [$usageName, $providerName]; - } - - return $origUsageDataProviderOrderPairs; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php deleted file mode 100644 index 4bab4ac..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php +++ /dev/null @@ -1,215 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\DataProviderAnalyzer; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * prefix?: string, - * suffix?: string, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * prefix: string, - * suffix: string, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitDataProviderNameFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Data provider names must match the name of the test.', - [ - new CodeSample( - <<<'PHP' - 'data_', - 'suffix' => '', - ], - ), - new CodeSample( - <<<'PHP' - 'provides', - 'suffix' => 'Data', - ], - ), - ], - null, - 'Fixer could be risky if one is calling data provider by name as function.', - ); - } - - public function isRisky(): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('prefix', 'Prefix that replaces "test".')) - ->setAllowedTypes(['string']) - ->setDefault('provide') - ->getOption(), - (new FixerOptionBuilder('suffix', 'Suffix to be present at the end.')) - ->setAllowedTypes(['string']) - ->setDefault('Cases') - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $dataProviders = (new DataProviderAnalyzer())->getDataProviders($tokens, $startIndex, $endIndex); - - $methodsProviders = []; - $providersMethods = []; - foreach ($dataProviders as $dataProviderAnalysis) { - foreach ($dataProviderAnalysis->getUsageIndices() as [$usageIndex]) { - $methodIndex = $tokens->getNextTokenOfKind($usageIndex, [[\T_FUNCTION]]); - $methodsProviders[$methodIndex][$dataProviderAnalysis->getName()] = $usageIndex; - $providersMethods[$dataProviderAnalysis->getName()][$methodIndex] = $usageIndex; - } - } - - foreach ($dataProviders as $dataProviderAnalysis) { - // @phpstan-ignore offsetAccess.notFound - if (\count($providersMethods[$dataProviderAnalysis->getName()]) > 1) { - continue; - } - - $methodIndex = $tokens->getNextTokenOfKind($dataProviderAnalysis->getUsageIndices()[0][0], [[\T_FUNCTION]]); - // @phpstan-ignore offsetAccess.notFound - if (\count($methodsProviders[$methodIndex]) > 1) { - continue; - } - - $dataProviderNewName = $this->getDataProviderNameForUsageIndex($tokens, $methodIndex); - if (null !== $tokens->findSequence([[\T_FUNCTION], [\T_STRING, $dataProviderNewName]], $startIndex, $endIndex)) { - continue; - } - - foreach ($dataProviderAnalysis->getUsageIndices() as [$usageIndex]) { - $tokens[$dataProviderAnalysis->getNameIndex()] = new Token([\T_STRING, $dataProviderNewName]); - - $newContent = $tokens[$usageIndex]->isGivenKind(\T_DOC_COMMENT) - ? Preg::replace( - \sprintf('/(@dataProvider\s+)%s/', $dataProviderAnalysis->getName()), - \sprintf('$1%s', $dataProviderNewName), - $tokens[$usageIndex]->getContent(), - ) - : \sprintf('%1$s%2$s%1$s', $tokens[$usageIndex]->getContent()[0], $dataProviderNewName); - - $tokens[$usageIndex] = new Token([$tokens[$usageIndex]->getId(), $newContent]); - } - } - } - - private function getDataProviderNameForUsageIndex(Tokens $tokens, int $index): string - { - do { - if ($tokens[$index]->isGivenKind(FCT::T_ATTRIBUTE)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - } - $index = $tokens->getNextMeaningfulToken($index); - } while (!$tokens[$index]->isGivenKind(\T_STRING)); - - $name = $tokens[$index]->getContent(); - - $name = Preg::replace('/^test_*/i', '', $name); - - if ('' === $this->configuration['prefix']) { - $name = lcfirst($name); - } elseif ('_' !== substr($this->configuration['prefix'], -1)) { - $name = ucfirst($name); - } - - return $this->configuration['prefix'].$name.$this->configuration['suffix']; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php deleted file mode 100644 index 28f0bbf..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php +++ /dev/null @@ -1,126 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\DataProviderAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitDataProviderReturnTypeFixer extends AbstractPhpUnitFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The return type of PHPUnit data provider must be `iterable`.', - [ - new CodeSample( - <<<'PHP' - getDataProviders($tokens, $startIndex, $endIndex)) as $dataProviderAnalysis) { - $typeAnalysis = $functionsAnalyzer->getFunctionReturnType($tokens, $dataProviderAnalysis->getNameIndex()); - - if (null === $typeAnalysis) { - $argumentsStart = $tokens->getNextTokenOfKind($dataProviderAnalysis->getNameIndex(), ['(']); - $argumentsEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $argumentsStart); - - $tokens->insertAt( - $argumentsEnd + 1, - [ - new Token([CT::T_TYPE_COLON, ':']), - new Token([\T_WHITESPACE, ' ']), - new Token([\T_STRING, 'iterable']), - ], - ); - - continue; - } - - if ('iterable' === $typeAnalysis->getName()) { - continue; - } - - $typeStartIndex = $tokens->getNextMeaningfulToken($typeAnalysis->getStartIndex() - 1); - $typeEndIndex = $typeAnalysis->getEndIndex(); - - // @TODO: drop condition and it's body when PHP 8+ is required - if ($tokens->generatePartialCode($typeStartIndex, $typeEndIndex) !== $typeAnalysis->getName()) { - continue; - } - - $tokens->overrideRange($typeStartIndex, $typeEndIndex, [new Token([\T_STRING, 'iterable'])]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php deleted file mode 100644 index feae559..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php +++ /dev/null @@ -1,154 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\DataProviderAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * force?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * force: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitDataProviderStaticFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Data providers must be static.', - [ - new CodeSample( - <<<'PHP' - getData1(); } - public function provideSomethingCases2() { self::getData2(); } - } - - PHP, - ['force' => true], - ), - new CodeSample( - <<<'PHP' - getData1(); } - public function provideSomething2Cases() { self::getData2(); } - } - - PHP, - ['force' => false], - ), - ], - null, - 'Fixer could be risky if one is calling data provider function dynamically.', - ); - } - - public function isRisky(): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder( - 'force', - 'Whether to make the data providers static even if they have a dynamic class call' - .' (may introduce fatal error "using $this when not in object context",' - .' and you may have to adjust the code manually by converting dynamic calls to static ones).', - )) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $dataProviderAnalyzer = new DataProviderAnalyzer(); - $tokensAnalyzer = new TokensAnalyzer($tokens); - - $inserts = []; - foreach ($dataProviderAnalyzer->getDataProviders($tokens, $startIndex, $endIndex) as $dataProviderDefinitionIndex) { - $methodStartIndex = $tokens->getNextTokenOfKind($dataProviderDefinitionIndex->getNameIndex(), ['{']); - if (null !== $methodStartIndex) { - $methodEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $methodStartIndex); - - if (false === $this->configuration['force'] && null !== $tokens->findSequence([[\T_VARIABLE, '$this']], $methodStartIndex, $methodEndIndex)) { - continue; - } - } - - /** @var int $functionIndex */ - $functionIndex = $tokens->getPrevTokenOfKind($dataProviderDefinitionIndex->getNameIndex(), [[\T_FUNCTION]]); - - $methodAttributes = $tokensAnalyzer->getMethodAttributes($functionIndex); - if (false !== $methodAttributes['static']) { - continue; - } - - $inserts[$functionIndex] = [new Token([\T_STATIC, 'static']), new Token([\T_WHITESPACE, ' '])]; - } - $tokens->insertSlices($inserts); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php deleted file mode 100644 index 9f90921..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php +++ /dev/null @@ -1,606 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * target?: '3.0'|'3.5'|'5.0'|'5.6'|'newest', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * target: '3.0'|'3.5'|'5.0'|'5.6'|'newest', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitDedicateAssertFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array - */ - private const FIX_MAP = [ - 'array_key_exists' => [ - 'positive' => 'assertArrayHasKey', - 'negative' => 'assertArrayNotHasKey', - 'argument_count' => 2, - ], - 'empty' => [ - 'positive' => 'assertEmpty', - 'negative' => 'assertNotEmpty', - ], - 'file_exists' => [ - 'positive' => 'assertFileExists', - 'negative' => 'assertFileNotExists', - ], - 'is_array' => true, - 'is_bool' => true, - 'is_callable' => true, - 'is_dir' => [ - 'positive' => 'assertDirectoryExists', - 'negative' => 'assertDirectoryNotExists', - ], - 'is_double' => true, - 'is_float' => true, - 'is_infinite' => [ - 'positive' => 'assertInfinite', - 'negative' => 'assertFinite', - ], - 'is_int' => true, - 'is_integer' => true, - 'is_long' => true, - 'is_nan' => [ - 'positive' => 'assertNan', - 'negative' => false, - ], - 'is_null' => [ - 'positive' => 'assertNull', - 'negative' => 'assertNotNull', - ], - 'is_numeric' => true, - 'is_object' => true, - 'is_readable' => [ - 'positive' => 'assertIsReadable', - 'negative' => 'assertNotIsReadable', - ], - 'is_real' => true, - 'is_resource' => true, - 'is_scalar' => true, - 'is_string' => true, - 'is_writable' => [ - 'positive' => 'assertIsWritable', - 'negative' => 'assertNotIsWritable', - ], - 'str_contains' => [ // since 7.5 - 'positive' => 'assertStringContainsString', - 'negative' => 'assertStringNotContainsString', - 'argument_count' => 2, - 'swap_arguments' => true, - ], - 'str_ends_with' => [ // since 3.4 - 'positive' => 'assertStringEndsWith', - 'negative' => 'assertStringEndsNotWith', - 'argument_count' => 2, - 'swap_arguments' => true, - ], - 'str_starts_with' => [ // since 3.4 - 'positive' => 'assertStringStartsWith', - 'negative' => 'assertStringStartsNotWith', - 'argument_count' => 2, - 'swap_arguments' => true, - ], - ]; - - /** - * @var list - */ - private array $functions = []; - - public function isRisky(): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPUnit assertions like `assertInternalType`, `assertFileExists`, should be used over `assertTrue`.', - [ - new CodeSample( - <<<'PHP' - assertTrue(is_float( $a), "my message"); - $this->assertTrue(is_nan($a)); - } - } - - PHP, - ), - new CodeSample( - <<<'PHP' - assertTrue(is_dir($a)); - $this->assertTrue(is_writable($a)); - $this->assertTrue(is_readable($a)); - } - } - - PHP, - ['target' => PhpUnitTargetVersion::VERSION_5_6], - ), - ], - null, - 'Fixer could be risky if one is overriding PHPUnit\'s native methods.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoUnusedImportsFixer, PhpUnitAssertNewNamesFixer, PhpUnitDedicateAssertInternalTypeFixer. - * Must run after ModernizeStrposFixer, NoAliasFunctionsFixer, PhpUnitConstructFixer. - */ - public function getPriority(): int - { - return -9; - } - - protected function configurePostNormalisation(): void - { - // assertions added in 3.0: assertArrayNotHasKey assertArrayHasKey assertFileNotExists assertFileExists assertNotNull, assertNull - $this->functions = [ - 'array_key_exists', - 'file_exists', - 'is_null', - 'str_ends_with', - 'str_starts_with', - ]; - - if (PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_3_5)) { - // assertions added in 3.5: assertInternalType assertNotEmpty assertEmpty - $this->functions = array_merge($this->functions, [ - 'empty', - 'is_array', - 'is_bool', - 'is_boolean', - 'is_callable', - 'is_double', - 'is_float', - 'is_int', - 'is_integer', - 'is_long', - 'is_numeric', - 'is_object', - 'is_real', - 'is_scalar', - 'is_string', - ]); - } - - if (PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_5_0)) { - // assertions added in 5.0: assertFinite assertInfinite assertNan - $this->functions = array_merge($this->functions, [ - 'is_infinite', - 'is_nan', - ]); - } - - if (PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_5_6)) { - // assertions added in 5.6: assertDirectoryExists assertDirectoryNotExists assertIsReadable assertNotIsReadable assertIsWritable assertNotIsWritable - $this->functions = array_merge($this->functions, [ - 'is_dir', - 'is_readable', - 'is_writable', - ]); - } - - if (PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_7_5)) { - $this->functions = array_merge($this->functions, [ - 'str_contains', - ]); - } - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - foreach ($this->getPreviousAssertCall($tokens, $startIndex, $endIndex) as $assertCall) { - // test and fix for assertTrue/False to dedicated asserts - if (\in_array($assertCall['loweredName'], ['asserttrue', 'assertfalse'], true)) { - $this->fixAssertTrueFalse($tokens, $argumentsAnalyzer, $assertCall); - - continue; - } - - if (\in_array( - $assertCall['loweredName'], - ['assertsame', 'assertnotsame', 'assertequals', 'assertnotequals'], - true, - )) { - $this->fixAssertSameEquals($tokens, $assertCall); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('target', 'Target version of PHPUnit.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([ - PhpUnitTargetVersion::VERSION_3_0, - PhpUnitTargetVersion::VERSION_3_5, - PhpUnitTargetVersion::VERSION_5_0, - PhpUnitTargetVersion::VERSION_5_6, - PhpUnitTargetVersion::VERSION_NEWEST, - ]) - ->setDefault(PhpUnitTargetVersion::VERSION_NEWEST) - ->getOption(), - ]); - } - - /** - * @param array{ - * index: int, - * loweredName: string, - * openBraceIndex: int, - * closeBraceIndex: int, - * } $assertCall - */ - private function fixAssertTrueFalse(Tokens $tokens, ArgumentsAnalyzer $argumentsAnalyzer, array $assertCall): void - { - $testDefaultNamespaceTokenIndex = null; - $testIndex = $tokens->getNextMeaningfulToken($assertCall['openBraceIndex']); - - if (!$tokens[$testIndex]->isGivenKind([\T_EMPTY, \T_STRING])) { - if ($this->fixAssertTrueFalseInstanceof($tokens, $assertCall, $testIndex)) { - return; - } - - if (!$tokens[$testIndex]->isGivenKind(\T_NS_SEPARATOR)) { - return; - } - - $testDefaultNamespaceTokenIndex = $testIndex; - $testIndex = $tokens->getNextMeaningfulToken($testIndex); - } - - $testOpenIndex = $tokens->getNextMeaningfulToken($testIndex); - - if (!$tokens[$testOpenIndex]->equals('(')) { - return; - } - - $testCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $testOpenIndex); - $assertCallCloseIndex = $tokens->getNextMeaningfulToken($testCloseIndex); - - if (!$tokens[$assertCallCloseIndex]->equalsAny([')', ','])) { - return; - } - - $content = strtolower($tokens[$testIndex]->getContent()); - - if (!\in_array($content, $this->functions, true)) { - return; - } - - $arguments = $argumentsAnalyzer->getArguments($tokens, $testOpenIndex, $testCloseIndex); - $isPositive = 'asserttrue' === $assertCall['loweredName']; - - if (isset(self::FIX_MAP[$content]) && \is_array(self::FIX_MAP[$content])) { - $fixDetails = self::FIX_MAP[$content]; - $expectedCount = $fixDetails['argument_count'] ?? 1; - - if ($expectedCount !== \count($arguments)) { - return; - } - - $isPositive = $isPositive ? 'positive' : 'negative'; - - if (false === $fixDetails[$isPositive]) { - return; - } - - $tokens[$assertCall['index']] = new Token([\T_STRING, $fixDetails[$isPositive]]); - $this->removeFunctionCall($tokens, $testDefaultNamespaceTokenIndex, $testIndex, $testOpenIndex, $testCloseIndex); - - if ($fixDetails['swap_arguments'] ?? false) { - if (2 !== $expectedCount) { - throw new \RuntimeException('Can only swap two arguments, please update map or logic.'); - } - - $this->swapArguments($tokens, $arguments); - } - - return; - } - - if (1 !== \count($arguments)) { - return; - } - - $type = substr($content, 3); - - $tokens[$assertCall['index']] = new Token([\T_STRING, $isPositive ? 'assertInternalType' : 'assertNotInternalType']); - $tokens[$testIndex] = new Token([\T_CONSTANT_ENCAPSED_STRING, "'".$type."'"]); - $tokens[$testOpenIndex] = new Token(','); - - $tokens->clearTokenAndMergeSurroundingWhitespace($testCloseIndex); - $commaIndex = $tokens->getPrevMeaningfulToken($testCloseIndex); - - if ($tokens[$commaIndex]->equals(',')) { - $tokens->removeTrailingWhitespace($commaIndex); - $tokens->clearAt($commaIndex); - } - - if (!$tokens[$testOpenIndex + 1]->isWhitespace()) { - $tokens->insertAt($testOpenIndex + 1, new Token([\T_WHITESPACE, ' '])); - } - - if (null !== $testDefaultNamespaceTokenIndex) { - $tokens->clearTokenAndMergeSurroundingWhitespace($testDefaultNamespaceTokenIndex); - } - } - - /** - * @param array{ - * index: int, - * loweredName: string, - * openBraceIndex: int, - * closeBraceIndex: int, - * } $assertCall - */ - private function fixAssertTrueFalseInstanceof(Tokens $tokens, array $assertCall, int $testIndex): bool - { - $isPositiveAssertion = 'asserttrue' === $assertCall['loweredName']; - - if ($tokens[$testIndex]->equals('!')) { - $variableIndex = $tokens->getNextMeaningfulToken($testIndex); - $isPositiveCondition = false; - } else { - $variableIndex = $testIndex; - $isPositiveCondition = true; - } - - if (!$tokens[$variableIndex]->isGivenKind(\T_VARIABLE)) { - return false; - } - - $instanceOfIndex = $tokens->getNextMeaningfulToken($variableIndex); - - if (!$tokens[$instanceOfIndex]->isGivenKind(\T_INSTANCEOF)) { - return false; - } - - $classEndIndex = $tokens->getNextMeaningfulToken($instanceOfIndex); - $classPartTokens = []; - - do { - $classPartTokens[] = $tokens[$classEndIndex]; - $classEndIndex = $tokens->getNextMeaningfulToken($classEndIndex); - } while ($tokens[$classEndIndex]->isGivenKind([\T_STRING, \T_NS_SEPARATOR, \T_VARIABLE])); - - if ($tokens[$classEndIndex]->equalsAny([',', ')'])) { // do the fixing - $isInstanceOfVar = $classPartTokens[0]->isGivenKind(\T_VARIABLE); - $insertIndex = $testIndex - 1; - $newTokens = []; - - foreach ($classPartTokens as $token) { - $newTokens[++$insertIndex] = clone $token; - } - - if (!$isInstanceOfVar) { - $newTokens[++$insertIndex] = new Token([\T_DOUBLE_COLON, '::']); - $newTokens[++$insertIndex] = new Token([CT::T_CLASS_CONSTANT, 'class']); - } - - $newTokens[++$insertIndex] = new Token(','); - $newTokens[++$insertIndex] = new Token([\T_WHITESPACE, ' ']); - $newTokens[++$insertIndex] = clone $tokens[$variableIndex]; - - for ($i = $classEndIndex - 1; $i >= $testIndex; --$i) { - if (!$tokens[$i]->isComment()) { - $tokens->clearTokenAndMergeSurroundingWhitespace($i); - } - } - - $name = $isPositiveAssertion && $isPositiveCondition || !$isPositiveAssertion && !$isPositiveCondition - ? 'assertInstanceOf' - : 'assertNotInstanceOf'; - - $tokens->insertSlices($newTokens); - $tokens[$assertCall['index']] = new Token([\T_STRING, $name]); - } - - return true; - } - - /** - * @param array{ - * index: int, - * loweredName: string, - * openBraceIndex: int, - * closeBraceIndex: int, - * } $assertCall - */ - private function fixAssertSameEquals(Tokens $tokens, array $assertCall): void - { - // @ $this->/self::assertEquals/Same([$nextIndex]) - $expectedIndex = $tokens->getNextMeaningfulToken($assertCall['openBraceIndex']); - - // do not fix - // let $a = [1,2]; $b = "2"; - // "$this->assertEquals("2", count($a)); $this->assertEquals($b, count($a)); $this->assertEquals(2.1, count($a));" - - if ($tokens[$expectedIndex]->isGivenKind(\T_VARIABLE)) { - if (!$tokens[$tokens->getNextMeaningfulToken($expectedIndex)]->equals(',')) { - return; - } - } elseif (!$tokens[$expectedIndex]->isGivenKind([\T_LNUMBER, \T_VARIABLE])) { - return; - } - - // @ $this->/self::assertEquals/Same([$nextIndex,$commaIndex]) - $commaIndex = $tokens->getNextMeaningfulToken($expectedIndex); - - if (!$tokens[$commaIndex]->equals(',')) { - return; - } - - // @ $this->/self::assertEquals/Same([$nextIndex,$commaIndex,$countCallIndex]) - $countCallIndex = $tokens->getNextMeaningfulToken($commaIndex); - - if ($tokens[$countCallIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $defaultNamespaceTokenIndex = $countCallIndex; - $countCallIndex = $tokens->getNextMeaningfulToken($countCallIndex); - } else { - $defaultNamespaceTokenIndex = null; - } - - if (!$tokens[$countCallIndex]->isGivenKind(\T_STRING)) { - return; - } - - $lowerContent = strtolower($tokens[$countCallIndex]->getContent()); - - if (!\in_array($lowerContent, ['count', 'sizeof'], true)) { - return; // not a call to "count" or "sizeOf" - } - - // @ $this->/self::assertEquals/Same([$nextIndex,$commaIndex,[$defaultNamespaceTokenIndex,]$countCallIndex,$countCallOpenBraceIndex]) - $countCallOpenBraceIndex = $tokens->getNextMeaningfulToken($countCallIndex); - - if (!$tokens[$countCallOpenBraceIndex]->equals('(')) { - return; - } - - $countCallCloseBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $countCallOpenBraceIndex); - $afterCountCallCloseBraceIndex = $tokens->getNextMeaningfulToken($countCallCloseBraceIndex); - - if (!$tokens[$afterCountCallCloseBraceIndex]->equalsAny([')', ','])) { - return; - } - - $this->removeFunctionCall( - $tokens, - $defaultNamespaceTokenIndex, - $countCallIndex, - $countCallOpenBraceIndex, - $countCallCloseBraceIndex, - ); - - $tokens[$assertCall['index']] = new Token([ - \T_STRING, - false === strpos($assertCall['loweredName'], 'not', 6) ? 'assertCount' : 'assertNotCount', - ]); - } - - private function removeFunctionCall(Tokens $tokens, ?int $callNSIndex, int $callIndex, int $openIndex, int $closeIndex): void - { - $tokens->clearTokenAndMergeSurroundingWhitespace($callIndex); - - if (null !== $callNSIndex) { - $tokens->clearTokenAndMergeSurroundingWhitespace($callNSIndex); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($openIndex); - $commaIndex = $tokens->getPrevMeaningfulToken($closeIndex); - - if ($tokens[$commaIndex]->equals(',')) { - $tokens->removeTrailingWhitespace($commaIndex); - $tokens->clearAt($commaIndex); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($closeIndex); - } - - /** - * @param array $argumentsIndices - */ - private function swapArguments(Tokens $tokens, array $argumentsIndices): void - { - \assert(isset(array_keys($argumentsIndices)[0], array_keys($argumentsIndices)[1])); - [$firstArgumentIndex, $secondArgumentIndex] = array_keys($argumentsIndices); - - \assert(isset($argumentsIndices[$firstArgumentIndex], $argumentsIndices[$secondArgumentIndex])); - $firstArgumentEndIndex = $argumentsIndices[$firstArgumentIndex]; - $secondArgumentEndIndex = $argumentsIndices[$secondArgumentIndex]; - - $firstClone = $this->cloneAndClearTokens($tokens, $firstArgumentIndex, $firstArgumentEndIndex); - $secondClone = $this->cloneAndClearTokens($tokens, $secondArgumentIndex, $secondArgumentEndIndex); - - \assert([] !== $firstClone); - \assert([] !== $secondClone); - - if (!$firstClone[0]->isWhitespace()) { - array_unshift($firstClone, new Token([\T_WHITESPACE, ' '])); - } - - $tokens->insertAt($secondArgumentIndex, $firstClone); - - if ($secondClone[0]->isWhitespace()) { - array_shift($secondClone); - } - - $tokens->insertAt($firstArgumentIndex, $secondClone); - } - - /** - * @return list - */ - private function cloneAndClearTokens(Tokens $tokens, int $start, int $end): array - { - $clone = []; - - for ($i = $start; $i <= $end; ++$i) { - if ('' === $tokens[$i]->getContent()) { - continue; - } - - $clone[] = clone $tokens[$i]; - $tokens->clearAt($i); - } - - return $clone; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php deleted file mode 100644 index ba1cbad..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php +++ /dev/null @@ -1,210 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * target?: '7.5'|'newest', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * target: '7.5'|'newest', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitDedicateAssertInternalTypeFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array - */ - private array $typeToDedicatedAssertMap = [ - 'array' => 'assertIsArray', - 'boolean' => 'assertIsBool', - 'bool' => 'assertIsBool', - 'double' => 'assertIsFloat', - 'float' => 'assertIsFloat', - 'integer' => 'assertIsInt', - 'int' => 'assertIsInt', - 'null' => 'assertNull', - 'numeric' => 'assertIsNumeric', - 'object' => 'assertIsObject', - 'real' => 'assertIsFloat', - 'resource' => 'assertIsResource', - 'string' => 'assertIsString', - 'scalar' => 'assertIsScalar', - 'callable' => 'assertIsCallable', - 'iterable' => 'assertIsIterable', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPUnit assertions like `assertIsArray` should be used over `assertInternalType`.', - [ - new CodeSample( - <<<'PHP' - assertInternalType("array", $var); - $this->assertInternalType("boolean", $var); - } - } - - PHP, - ), - new CodeSample( - <<<'PHP' - assertInternalType("array", $var); - $this->assertInternalType("boolean", $var); - } - } - - PHP, - ['target' => PhpUnitTargetVersion::VERSION_7_5], - ), - ], - null, - 'Risky when PHPUnit methods are overridden or when project has PHPUnit incompatibilities.', - ); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run after NoBinaryStringFixer, NoUselessConcatOperatorFixer, PhpUnitDedicateAssertFixer. - */ - public function getPriority(): int - { - return -16; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('target', 'Target version of PHPUnit.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([PhpUnitTargetVersion::VERSION_7_5, PhpUnitTargetVersion::VERSION_NEWEST]) - ->setDefault(PhpUnitTargetVersion::VERSION_NEWEST) - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $anonymousClassIndices = []; - $tokenAnalyzer = new TokensAnalyzer($tokens); - - for ($index = $startIndex; $index < $endIndex; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_CLASS) || !$tokenAnalyzer->isAnonymousClass($index)) { - continue; - } - - $openingBraceIndex = $tokens->getNextTokenOfKind($index, ['{']); - $closingBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $openingBraceIndex); - - $anonymousClassIndices[$closingBraceIndex] = $openingBraceIndex; - } - - for ($index = $endIndex - 1; $index > $startIndex; --$index) { - if (isset($anonymousClassIndices[$index])) { - $index = $anonymousClassIndices[$index]; - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_STRING)) { - continue; - } - - $functionName = strtolower($tokens[$index]->getContent()); - - if ('assertinternaltype' !== $functionName && 'assertnotinternaltype' !== $functionName) { - continue; - } - - $bracketTokenIndex = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$bracketTokenIndex]->equals('(')) { - continue; - } - - $expectedTypeTokenIndex = $tokens->getNextMeaningfulToken($bracketTokenIndex); - $expectedTypeToken = $tokens[$expectedTypeTokenIndex]; - - if (!$expectedTypeToken->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - continue; - } - - $expectedType = trim($expectedTypeToken->getContent(), '\'"'); - - if (!isset($this->typeToDedicatedAssertMap[$expectedType])) { - continue; - } - - $commaTokenIndex = $tokens->getNextMeaningfulToken($expectedTypeTokenIndex); - - if (!$tokens[$commaTokenIndex]->equals(',')) { - continue; - } - - $newAssertion = $this->typeToDedicatedAssertMap[$expectedType]; - - if ('assertnotinternaltype' === $functionName) { - $newAssertion = str_replace('Is', 'IsNot', $newAssertion); - $newAssertion = str_replace('Null', 'NotNull', $newAssertion); - } - - $nextMeaningfulTokenIndex = $tokens->getNextMeaningfulToken($commaTokenIndex); - - $tokens->overrideRange($index, $nextMeaningfulTokenIndex - 1, [ - new Token([\T_STRING, $newAssertion]), - new Token('('), - ]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php deleted file mode 100644 index 704ed9a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php +++ /dev/null @@ -1,302 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * target?: '5.2'|'5.6'|'8.4'|'newest', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * target: '5.2'|'5.6'|'8.4'|'newest', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitExpectationFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array - */ - private array $methodMap = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Usages of `->setExpectedException*` methods MUST be replaced by `->expectException*` methods.', - [ - new CodeSample( - <<<'PHP' - setExpectedException("RuntimeException", "Msg", 123); - foo(); - } - - public function testBar() - { - $this->setExpectedExceptionRegExp("RuntimeException", "/Msg.*/", 123); - bar(); - } - } - - PHP, - ), - new CodeSample( - <<<'PHP' - setExpectedException("RuntimeException", null, 123); - foo(); - } - - public function testBar() - { - $this->setExpectedExceptionRegExp("RuntimeException", "/Msg.*/", 123); - bar(); - } - } - - PHP, - ['target' => PhpUnitTargetVersion::VERSION_8_4], - ), - new CodeSample( - <<<'PHP' - setExpectedException("RuntimeException", null, 123); - foo(); - } - - public function testBar() - { - $this->setExpectedExceptionRegExp("RuntimeException", "/Msg.*/", 123); - bar(); - } - } - - PHP, - ['target' => PhpUnitTargetVersion::VERSION_5_6], - ), - new CodeSample( - <<<'PHP' - setExpectedException("RuntimeException", "Msg", 123); - foo(); - } - - public function testBar() - { - $this->setExpectedExceptionRegExp("RuntimeException", "/Msg.*/", 123); - bar(); - } - } - - PHP, - ['target' => PhpUnitTargetVersion::VERSION_5_2], - ), - ], - null, - 'Risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.', - ); - } - - /** - * {@inheritdoc} - * - * Must run after PhpUnitNoExpectationAnnotationFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isRisky(): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $this->methodMap = [ - 'setExpectedException' => 'expectExceptionMessage', - ]; - - if (PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_5_6)) { - $this->methodMap['setExpectedExceptionRegExp'] = 'expectExceptionMessageRegExp'; - } - - if (PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_8_4)) { - $this->methodMap['setExpectedExceptionRegExp'] = 'expectExceptionMessageMatches'; - $this->methodMap['expectExceptionMessageRegExp'] = 'expectExceptionMessageMatches'; - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('target', 'Target version of PHPUnit.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([PhpUnitTargetVersion::VERSION_5_2, PhpUnitTargetVersion::VERSION_5_6, PhpUnitTargetVersion::VERSION_8_4, PhpUnitTargetVersion::VERSION_NEWEST]) - ->setDefault(PhpUnitTargetVersion::VERSION_NEWEST) - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - foreach (Token::getObjectOperatorKinds() as $objectOperator) { - $this->applyPhpUnitClassFixWithObjectOperator($tokens, $startIndex, $endIndex, $objectOperator); - } - } - - private function applyPhpUnitClassFixWithObjectOperator(Tokens $tokens, int $startIndex, int $endIndex, int $objectOperator): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - $oldMethodSequence = [ - [\T_VARIABLE, '$this'], - [$objectOperator], - [\T_STRING], - ]; - - for ($index = $startIndex; $startIndex < $endIndex; ++$index) { - /** @var null|array{Token, Token, Token} $match */ - $match = $tokens->findSequence($oldMethodSequence, $index); - - if (null === $match) { - return; - } - - [$thisIndex, , $index] = array_keys($match); - - if (!isset($this->methodMap[$tokens[$index]->getContent()])) { - continue; - } - $newExpectedExceptionName = $this->methodMap[$tokens[$index]->getContent()]; - - $openIndex = $tokens->getNextTokenOfKind($index, ['(']); - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); - $commaIndex = $tokens->getPrevMeaningfulToken($closeIndex); - if ($tokens[$commaIndex]->equals(',')) { - $tokens->removeTrailingWhitespace($commaIndex); - $tokens->clearAt($commaIndex); - } - - $arguments = $argumentsAnalyzer->getArguments($tokens, $openIndex, $closeIndex); - $argumentsCnt = \count($arguments); - - $argumentsReplacements = ['expectException', $newExpectedExceptionName, 'expectExceptionCode']; - - $indent = $this->whitespacesConfig->getLineEnding().WhitespacesAnalyzer::detectIndent($tokens, $thisIndex); - - $isMultilineWhitespace = false; - - for ($cnt = $argumentsCnt - 1; $cnt >= 1; --$cnt) { - \assert(isset(array_keys($arguments)[$cnt])); - $argStart = array_keys($arguments)[$cnt]; - $argBefore = $tokens->getPrevMeaningfulToken($argStart); - - if (!isset($argumentsReplacements[$cnt])) { - throw new \LogicException(\sprintf('Unexpected index %d to find replacement method.', $cnt)); - } - - if ('expectExceptionMessage' === $argumentsReplacements[$cnt]) { - $paramIndicatorIndex = $tokens->getNextMeaningfulToken($argBefore); - $afterParamIndicatorIndex = $tokens->getNextMeaningfulToken($paramIndicatorIndex); - - if ( - $tokens[$paramIndicatorIndex]->equals([\T_STRING, 'null'], false) - && $tokens[$afterParamIndicatorIndex]->equals(')') - ) { - if ($tokens[$argBefore + 1]->isWhitespace()) { - $tokens->clearTokenAndMergeSurroundingWhitespace($argBefore + 1); - } - $tokens->clearTokenAndMergeSurroundingWhitespace($argBefore); - $tokens->clearTokenAndMergeSurroundingWhitespace($paramIndicatorIndex); - - continue; - } - } - - $isMultilineWhitespace = $isMultilineWhitespace || ($tokens[$argStart]->isWhitespace() && !$tokens[$argStart]->isWhitespace(" \t")); - $tokensOverrideArgStart = [ - new Token([\T_WHITESPACE, $indent]), - new Token([\T_VARIABLE, '$this']), - new Token([\T_OBJECT_OPERATOR, '->']), - new Token([\T_STRING, $argumentsReplacements[$cnt]]), - new Token('('), - ]; - $tokensOverrideArgBefore = [ - new Token(')'), - new Token(';'), - ]; - - if ($isMultilineWhitespace) { - $tokensOverrideArgStart[] = new Token([\T_WHITESPACE, $indent.$this->whitespacesConfig->getIndent()]); - array_unshift($tokensOverrideArgBefore, new Token([\T_WHITESPACE, $indent])); - } - - if ($tokens[$argStart]->isWhitespace()) { - $tokens->overrideRange($argStart, $argStart, $tokensOverrideArgStart); - } else { - $tokens->insertAt($argStart, $tokensOverrideArgStart); - } - - $tokens->overrideRange($argBefore, $argBefore, $tokensOverrideArgBefore); - } - - $methodName = 'expectException'; - if ('expectExceptionMessageRegExp' === $tokens[$index]->getContent()) { - $methodName = $newExpectedExceptionName; - } - $tokens[$index] = new Token([\T_STRING, $methodName]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php deleted file mode 100644 index aa5dc7d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php +++ /dev/null @@ -1,92 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Roland Franssen - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitFqcnAnnotationFixer extends AbstractPhpUnitFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPUnit annotations should be a FQCNs including a root namespace.', - [ - new CodeSample( - <<<'PHP' - getPrevTokenOfKind($startIndex, [[\T_DOC_COMMENT]]); - - if (null !== $prevDocCommentIndex) { - $startIndex = $prevDocCommentIndex; - } - - $this->fixPhpUnitClass($tokens, $startIndex, $endIndex); - } - - private function fixPhpUnitClass(Tokens $tokens, int $startIndex, int $endIndex): void - { - for ($index = $startIndex; $index < $endIndex; ++$index) { - if ($tokens[$index]->isGivenKind(\T_DOC_COMMENT)) { - $tokens[$index] = new Token([\T_DOC_COMMENT, Preg::replace( - '~^(\s*\*\s*@(?:expectedException|covers|coversDefaultClass|uses)\h+)(?!(?:self|static)::)(\w.*)$~m', - '$1\\\$2', - $tokens[$index]->getContent(), - )]); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php deleted file mode 100644 index 7cec173..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php +++ /dev/null @@ -1,124 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * types?: list<'abstract'|'final'|'normal'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * types: list<'abstract'|'final'|'normal'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gert de Pagter - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitInternalClassFixer extends AbstractPhpUnitFixer implements WhitespacesAwareFixerInterface, ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'All PHPUnit test classes should be marked as internal.', - [ - new CodeSample(" ['final']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before FinalInternalClassFixer, PhpdocSeparationFixer. - */ - public function getPriority(): int - { - return 68; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $types = ['normal', 'final', 'abstract']; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('types', 'What types of classes to mark as internal.')) - ->setAllowedValues([new AllowedValueSubset($types)]) - ->setAllowedTypes(['string[]']) - ->setDefault(['normal', 'final']) - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $classIndex = $tokens->getPrevTokenOfKind($startIndex, [[\T_CLASS]]); - - $prevIndex = $tokens->getPrevMeaningfulToken($classIndex); - if ($tokens[$prevIndex]->isGivenKind(\T_NEW)) { - return; // Skip instantiation of anonymous classes - } - - if (!$this->isAllowedByConfiguration($tokens, $classIndex)) { - return; - } - - $this->ensureIsDocBlockWithAnnotation( - $tokens, - $classIndex, - 'internal', - ['internal'], - [], - ); - } - - private function isAllowedByConfiguration(Tokens $tokens, int $index): bool - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $modifiers = $tokensAnalyzer->getClassyModifiers($index); - - if (isset($modifiers['final'])) { - return \in_array('final', $this->configuration['types'], true); - } - - if (isset($modifiers['abstract'])) { - return \in_array('abstract', $this->configuration['types'], true); - } - - return \in_array('normal', $this->configuration['types'], true); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php deleted file mode 100644 index 250cd62..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php +++ /dev/null @@ -1,267 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\Line; -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use PhpCsFixer\Utils; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case?: 'camel_case'|'snake_case', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case: 'camel_case'|'snake_case', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitMethodCasingFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const CAMEL_CASE = 'camel_case'; - - /** - * @internal - */ - public const SNAKE_CASE = 'snake_case'; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Enforce camel (or snake) case for PHPUnit test methods, following configuration.', - [ - new CodeSample( - <<<'PHP' - self::SNAKE_CASE], - ), - new VersionSpecificCodeSample( - <<<'PHP' - self::SNAKE_CASE], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after PhpUnitTestAnnotationFixer. - */ - public function getPriority(): int - { - return 0; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('case', 'Apply camel or snake case to test methods.')) - ->setAllowedValues([self::CAMEL_CASE, self::SNAKE_CASE]) - ->setDefault(self::CAMEL_CASE) - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $existingFunctionNamesLowercase = []; - for ($index = $endIndex - 1; $index > $startIndex; --$index) { - if (!$this->isMethod($tokens, $index)) { - continue; - } - $functionNameIndex = $tokens->getNextMeaningfulToken($index); - $existingFunctionNamesLowercase[strtolower($tokens[$functionNameIndex]->getContent())] = null; - } - unset($index); - - for ($index = $endIndex - 1; $index > $startIndex; --$index) { - if (!$this->isTestMethod($tokens, $index)) { - continue; - } - - $functionNameIndex = $tokens->getNextMeaningfulToken($index); - $functionName = $tokens[$functionNameIndex]->getContent(); - $functionNameLowercase = strtolower($functionName); - $newFunctionName = $this->updateMethodCasing($functionName); - $newFunctionNameLowercase = strtolower($newFunctionName); - if ( - \array_key_exists($newFunctionNameLowercase, $existingFunctionNamesLowercase) - && $functionNameLowercase !== $newFunctionNameLowercase - ) { - continue; - } - $existingFunctionNamesLowercase[$newFunctionNameLowercase] = null; - - if ($newFunctionName !== $functionName) { - $tokens[$functionNameIndex] = new Token([\T_STRING, $newFunctionName]); - } - - $docBlockIndex = $this->getDocBlockIndex($tokens, $index); - - if ($tokens[$docBlockIndex]->isGivenKind(\T_DOC_COMMENT)) { - $this->updateDocBlock($tokens, $docBlockIndex); - } - } - } - - private function updateMethodCasing(string $functionName): string - { - $parts = explode('::', $functionName); - - $functionNamePart = array_pop($parts); - - if (self::CAMEL_CASE === $this->configuration['case']) { - $newFunctionNamePart = $functionNamePart; - $newFunctionNamePart = ucwords($newFunctionNamePart, '_'); - $newFunctionNamePart = str_replace('_', '', $newFunctionNamePart); - $newFunctionNamePart = lcfirst($newFunctionNamePart); - } else { - $newFunctionNamePart = Utils::camelCaseToUnderscore($functionNamePart); - } - - $parts[] = $newFunctionNamePart; - - return implode('::', $parts); - } - - private function isTestMethod(Tokens $tokens, int $index): bool - { - // Check if we are dealing with a (non-abstract, non-lambda) function - if (!$this->isMethod($tokens, $index)) { - return false; - } - - // if the function name starts with test it's a test - $functionNameIndex = $tokens->getNextMeaningfulToken($index); - $functionName = $tokens[$functionNameIndex]->getContent(); - - if (str_starts_with($functionName, 'test')) { - return true; - } - - if ($this->isTestAttributePresent($tokens, $index)) { - return true; - } - - $docBlockIndex = $this->getDocBlockIndex($tokens, $index); - - return - $tokens[$docBlockIndex]->isGivenKind(\T_DOC_COMMENT) // If the function doesn't have test in its name, and no doc block, it's not a test - && str_contains($tokens[$docBlockIndex]->getContent(), '@test'); - } - - private function isMethod(Tokens $tokens, int $index): bool - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - return $tokens[$index]->isGivenKind(\T_FUNCTION) && !$tokensAnalyzer->isLambda($index); - } - - private function updateDocBlock(Tokens $tokens, int $docBlockIndex): void - { - $doc = new DocBlock($tokens[$docBlockIndex]->getContent()); - $lines = $doc->getLines(); - - $docBlockNeedsUpdate = false; - for ($inc = 0; $inc < \count($lines); ++$inc) { - $lineContent = $lines[$inc]->getContent(); - if (!str_contains($lineContent, '@depends')) { - continue; - } - - $newLineContent = Preg::replaceCallback('/(@depends\s+)(.+)(\b)/', fn (array $matches): string => \sprintf( - '%s%s%s', - $matches[1], - $this->updateMethodCasing($matches[2]), - $matches[3], - ), $lineContent); - - if ($newLineContent !== $lineContent) { - $lines[$inc] = new Line($newLineContent); - $docBlockNeedsUpdate = true; - } - } - - if ($docBlockNeedsUpdate) { - $lines = implode('', $lines); - $tokens[$docBlockIndex] = new Token([\T_DOC_COMMENT, $lines]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php deleted file mode 100644 index 4318184..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php +++ /dev/null @@ -1,141 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * target?: '5.4'|'5.5'|'newest', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * target: '5.4'|'5.5'|'newest', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitMockFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private bool $fixCreatePartialMock; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Usages of `->getMock` and `->getMockWithoutInvokingTheOriginalConstructor` methods MUST be replaced by `->createMock` or `->createPartialMock` methods.', - [ - new CodeSample( - <<<'PHP' - getMockWithoutInvokingTheOriginalConstructor("Foo"); - $mock1 = $this->getMock("Foo"); - $mock1 = $this->getMock("Bar", ["aaa"]); - $mock1 = $this->getMock("Baz", ["aaa"], ["argument"]); // version with more than 2 params is not supported - } - } - - PHP, - ), - new CodeSample( - <<<'PHP' - getMock("Foo"); - $mock1 = $this->getMock("Bar", ["aaa"]); // version with multiple params is not supported - } - } - - PHP, - ['target' => PhpUnitTargetVersion::VERSION_5_4], - ), - ], - null, - 'Risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.', - ); - } - - public function isRisky(): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $this->fixCreatePartialMock = PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_5_5); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - for ($index = $startIndex; $index < $endIndex; ++$index) { - if (!$tokens[$index]->isObjectOperator()) { - continue; - } - - $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->equals([\T_STRING, 'getMockWithoutInvokingTheOriginalConstructor'], false)) { - $tokens[$index] = new Token([\T_STRING, 'createMock']); - } elseif ($tokens[$index]->equals([\T_STRING, 'getMock'], false)) { - $openingParenthesis = $tokens->getNextMeaningfulToken($index); - $closingParenthesis = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openingParenthesis); - - $argumentsCount = $argumentsAnalyzer->countArguments($tokens, $openingParenthesis, $closingParenthesis); - - if (1 === $argumentsCount) { - $tokens[$index] = new Token([\T_STRING, 'createMock']); - } elseif (2 === $argumentsCount && true === $this->fixCreatePartialMock) { - $tokens[$index] = new Token([\T_STRING, 'createPartialMock']); - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('target', 'Target version of PHPUnit.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([PhpUnitTargetVersion::VERSION_5_4, PhpUnitTargetVersion::VERSION_5_5, PhpUnitTargetVersion::VERSION_NEWEST]) - ->setDefault(PhpUnitTargetVersion::VERSION_NEWEST) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php deleted file mode 100644 index 033d707..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php +++ /dev/null @@ -1,129 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Michał Adamski - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitMockShortWillReturnFixer extends AbstractPhpUnitFixer -{ - private const RETURN_METHODS_MAP = [ - 'returnargument' => 'willReturnArgument', - 'returncallback' => 'willReturnCallback', - 'returnself' => 'willReturnSelf', - 'returnvalue' => 'willReturn', - 'returnvaluemap' => 'willReturnMap', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Usage of PHPUnit\'s mock e.g. `->will($this->returnValue(..))` must be replaced by its shorter equivalent such as `->willReturn(...)`.', - [ - new CodeSample( - <<<'PHP' - createMock(Some::class); - $someMock->method("some")->will($this->returnSelf()); - $someMock->method("some")->will($this->returnValue("example")); - $someMock->method("some")->will($this->returnArgument(2)); - $someMock->method("some")->will($this->returnCallback("str_rot13")); - $someMock->method("some")->will($this->returnValueMap(["a","b","c"])); - } - } - - PHP, - ), - ], - null, - 'Risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.', - ); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - for ($index = $startIndex; $index < $endIndex; ++$index) { - if (!$tokens[$index]->isObjectOperator()) { - continue; - } - - $functionToReplaceIndex = $tokens->getNextMeaningfulToken($index); - if (!$tokens[$functionToReplaceIndex]->equals([\T_STRING, 'will'], false)) { - continue; - } - - $functionToReplaceOpeningBraceIndex = $tokens->getNextMeaningfulToken($functionToReplaceIndex); - - if (!$tokens[$functionToReplaceOpeningBraceIndex]->equals('(')) { - continue; - } - - $classReferenceIndex = $tokens->getNextMeaningfulToken($functionToReplaceOpeningBraceIndex); - $objectOperatorIndex = $tokens->getNextMeaningfulToken($classReferenceIndex); - $functionToRemoveIndex = $tokens->getNextMeaningfulToken($objectOperatorIndex); - - if (!$functionsAnalyzer->isTheSameClassCall($tokens, $functionToRemoveIndex)) { - continue; - } - - if (!\array_key_exists(strtolower($tokens[$functionToRemoveIndex]->getContent()), self::RETURN_METHODS_MAP)) { - continue; - } - - $openingBraceIndex = $tokens->getNextMeaningfulToken($functionToRemoveIndex); - - if ($tokens[$tokens->getNextMeaningfulToken($openingBraceIndex)]->isGivenKind(CT::T_FIRST_CLASS_CALLABLE)) { - continue; - } - - $closingBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openingBraceIndex); - - $tokens[$functionToReplaceIndex] = new Token([\T_STRING, self::RETURN_METHODS_MAP[strtolower($tokens[$functionToRemoveIndex]->getContent())]]); - $tokens->clearTokenAndMergeSurroundingWhitespace($classReferenceIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($objectOperatorIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($functionToRemoveIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($openingBraceIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($closingBraceIndex); - - $commaAfterClosingBraceIndex = $tokens->getNextMeaningfulToken($closingBraceIndex); - if ($tokens[$commaAfterClosingBraceIndex]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($commaAfterClosingBraceIndex); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php deleted file mode 100644 index c44ffda..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php +++ /dev/null @@ -1,249 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\ClassyAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * target?: '4.8'|'5.7'|'6.0'|'newest', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * target: '4.8'|'5.7'|'6.0'|'newest', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitNamespacedFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private string $originalClassRegEx; - - /** - * Class Mappings. - * - * * [original classname => new classname] Some classes which match the - * original class regular expression do not have a same-compound name- - * space class and need a dedicated translation table. This trans- - * lation table is defined in @see configure. - * - * @var array Class Mappings - */ - private array $classMap; - - public function getDefinition(): FixerDefinitionInterface - { - $codeSample = <<<'PHP' - PhpUnitTargetVersion::VERSION_4_8]), - ], - "PHPUnit v6 has finally fully switched to namespaces.\n" - ."You could start preparing the upgrade by switching from non-namespaced TestCase to namespaced one.\n" - .'Forward compatibility layer (`\PHPUnit\Framework\TestCase` class) was backported to PHPUnit v4.8.35 and PHPUnit v5.4.0.'."\n" - .'Extended forward compatibility layer (`PHPUnit\Framework\Assert`, `PHPUnit\Framework\BaseTestListener`, `PHPUnit\Framework\TestListener` classes) was introduced in v5.7.0.'."\n", - 'Risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_STRING); - } - - /** - * {@inheritdoc} - * - * Must run before NoUnneededImportAliasFixer. - */ - public function getPriority(): int - { - return 2; - } - - public function isRisky(): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - if (PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_6_0)) { - $this->originalClassRegEx = '/^PHPUnit_\w+$/i'; - // @noinspection ClassConstantCanBeUsedInspection - $this->classMap = [ - 'PHPUnit_Extensions_PhptTestCase' => 'PHPUnit\Runner\PhptTestCase', - 'PHPUnit_Framework_Constraint' => 'PHPUnit\Framework\Constraint\Constraint', - 'PHPUnit_Framework_Constraint_StringMatches' => 'PHPUnit\Framework\Constraint\StringMatchesFormatDescription', - 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => 'PHPUnit\Framework\Constraint\JsonMatchesErrorMessageProvider', - 'PHPUnit_Framework_Constraint_PCREMatch' => 'PHPUnit\Framework\Constraint\RegularExpression', - 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => 'PHPUnit\Framework\Constraint\ExceptionMessageRegularExpression', - 'PHPUnit_Framework_Constraint_And' => 'PHPUnit\Framework\Constraint\LogicalAnd', - 'PHPUnit_Framework_Constraint_Or' => 'PHPUnit\Framework\Constraint\LogicalOr', - 'PHPUnit_Framework_Constraint_Not' => 'PHPUnit\Framework\Constraint\LogicalNot', - 'PHPUnit_Framework_Constraint_Xor' => 'PHPUnit\Framework\Constraint\LogicalXor', - 'PHPUnit_Framework_Error' => 'PHPUnit\Framework\Error\Error', - 'PHPUnit_Framework_TestSuite_DataProvider' => 'PHPUnit\Framework\DataProviderTestSuite', - 'PHPUnit_Framework_MockObject_Invocation_Static' => 'PHPUnit\Framework\MockObject\Invocation\StaticInvocation', - 'PHPUnit_Framework_MockObject_Invocation_Object' => 'PHPUnit\Framework\MockObject\Invocation\ObjectInvocation', - 'PHPUnit_Framework_MockObject_Stub_Return' => 'PHPUnit\Framework\MockObject\Stub\ReturnStub', - 'PHPUnit_Runner_Filter_Group_Exclude' => 'PHPUnit\Runner\Filter\ExcludeGroupFilterIterator', - 'PHPUnit_Runner_Filter_Group_Include' => 'PHPUnit\Runner\Filter\IncludeGroupFilterIterator', - 'PHPUnit_Runner_Filter_Test' => 'PHPUnit\Runner\Filter\NameFilterIterator', - 'PHPUnit_Util_PHP' => 'PHPUnit\Util\PHP\AbstractPhpProcess', - 'PHPUnit_Util_PHP_Default' => 'PHPUnit\Util\PHP\DefaultPhpProcess', - 'PHPUnit_Util_PHP_Windows' => 'PHPUnit\Util\PHP\WindowsPhpProcess', - 'PHPUnit_Util_Regex' => 'PHPUnit\Util\RegularExpression', - 'PHPUnit_Util_TestDox_ResultPrinter_XML' => 'PHPUnit\Util\TestDox\XmlResultPrinter', - 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => 'PHPUnit\Util\TestDox\HtmlResultPrinter', - 'PHPUnit_Util_TestDox_ResultPrinter_Text' => 'PHPUnit\Util\TestDox\TextResultPrinter', - 'PHPUnit_Util_TestSuiteIterator' => 'PHPUnit\Framework\TestSuiteIterator', - 'PHPUnit_Util_XML' => 'PHPUnit\Util\Xml', - ]; - } elseif (PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_5_7)) { - $this->originalClassRegEx = '/^PHPUnit_Framework_(TestCase|Assert|BaseTestListener|TestListener)+$/i'; - $this->classMap = []; - } else { - $this->originalClassRegEx = '/^PHPUnit_Framework_TestCase$/i'; - $this->classMap = []; - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $importedOriginalClassesMap = []; - $currIndex = 0; - - while (true) { - $currIndex = $tokens->getNextTokenOfKind($currIndex, [[\T_STRING]]); - - if (null === $currIndex) { - break; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($currIndex); - - if ($tokens[$prevIndex]->isGivenKind([\T_CONST, \T_DOUBLE_COLON])) { - continue; - } - - $originalClass = $tokens[$currIndex]->getContent(); - $allowedReplacementScenarios = (new ClassyAnalyzer())->isClassyInvocation($tokens, $currIndex) - || $this->isImport($tokens, $currIndex); - - if (!$allowedReplacementScenarios || !Preg::match($this->originalClassRegEx, $originalClass)) { - ++$currIndex; - - continue; - } - - $substituteTokens = $this->generateReplacement($originalClass); - - $tokens->clearAt($currIndex); - $tokens->insertAt( - $currIndex, - isset($importedOriginalClassesMap[$originalClass]) ? $substituteTokens[$substituteTokens->getSize() - 1] : $substituteTokens, - ); - - $prevIndex = $tokens->getPrevMeaningfulToken($currIndex); - if ($tokens[$prevIndex]->isGivenKind(\T_USE)) { - $importedOriginalClassesMap[$originalClass] = true; - } elseif ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - - if ($tokens[$prevIndex]->isGivenKind(\T_USE)) { - $importedOriginalClassesMap[$originalClass] = true; - } - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('target', 'Target version of PHPUnit.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([PhpUnitTargetVersion::VERSION_4_8, PhpUnitTargetVersion::VERSION_5_7, PhpUnitTargetVersion::VERSION_6_0, PhpUnitTargetVersion::VERSION_NEWEST]) - ->setDefault(PhpUnitTargetVersion::VERSION_NEWEST) - ->getOption(), - ]); - } - - private function generateReplacement(string $originalClassName): Tokens - { - $delimiter = '_'; - $string = $originalClassName; - - $map = array_change_key_case($this->classMap); - if (isset($map[strtolower($originalClassName)])) { - $delimiter = '\\'; - $string = $map[strtolower($originalClassName)]; - } - - $parts = explode($delimiter, $string); - $tokensArray = []; - - while ([] !== $parts) { - $tokensArray[] = new Token([\T_STRING, array_shift($parts)]); - if ([] !== $parts) { - $tokensArray[] = new Token([\T_NS_SEPARATOR, '\\']); - } - } - - return Tokens::fromArray($tokensArray); - } - - private function isImport(Tokens $tokens, int $currIndex): bool - { - $prevIndex = $tokens->getPrevMeaningfulToken($currIndex); - - if ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - } - - return $tokens[$prevIndex]->isGivenKind(\T_USE); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php deleted file mode 100644 index 92fc93b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php +++ /dev/null @@ -1,287 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * target?: '3.2'|'4.3'|'newest', - * use_class_const?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * target: '3.2'|'4.3'|'newest', - * use_class_const: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitNoExpectationAnnotationFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private bool $fixMessageRegExp; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Usages of `@expectedException*` annotations MUST be replaced by `->setExpectedException*` methods.', - [ - new CodeSample( - <<<'PHP' - PhpUnitTargetVersion::VERSION_3_2], - ), - ], - null, - 'Risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoEmptyPhpdocFixer, PhpUnitExpectationFixer. - */ - public function getPriority(): int - { - return 10; - } - - public function isRisky(): bool - { - return true; - } - - protected function configurePostNormalisation(): void - { - $this->fixMessageRegExp = PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_4_3); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('target', 'Target version of PHPUnit.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([PhpUnitTargetVersion::VERSION_3_2, PhpUnitTargetVersion::VERSION_4_3, PhpUnitTargetVersion::VERSION_NEWEST]) - ->setDefault(PhpUnitTargetVersion::VERSION_NEWEST) - ->getOption(), - (new FixerOptionBuilder('use_class_const', 'Use ::class notation.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - for ($i = $endIndex - 1; $i > $startIndex; --$i) { - if (!$tokens[$i]->isGivenKind(\T_FUNCTION) || $tokensAnalyzer->isLambda($i)) { - continue; - } - - $functionIndex = $i; - $docBlockIndex = $i; - - // ignore abstract functions - $braceIndex = $tokens->getNextTokenOfKind($functionIndex, [';', '{']); - if (!$tokens[$braceIndex]->equals('{')) { - continue; - } - - do { - $docBlockIndex = $tokens->getPrevNonWhitespace($docBlockIndex); - } while ($tokens[$docBlockIndex]->isGivenKind([\T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_FINAL, \T_ABSTRACT, \T_COMMENT])); - - if (!$tokens[$docBlockIndex]->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($tokens[$docBlockIndex]->getContent()); - $annotations = []; - - foreach ($doc->getAnnotationsOfType([ - 'expectedException', - 'expectedExceptionCode', - 'expectedExceptionMessage', - 'expectedExceptionMessageRegExp', - ]) as $annotation) { - $tag = $annotation->getTag()->getName(); - $content = $this->extractContentFromAnnotation($annotation); - $annotations[$tag] = $content; - $annotation->remove(); - } - - if (!isset($annotations['expectedException'])) { - continue; - } - - if (!$this->fixMessageRegExp && isset($annotations['expectedExceptionMessageRegExp'])) { - continue; - } - - $originalIndent = WhitespacesAnalyzer::detectIndent($tokens, $docBlockIndex); - - $paramList = $this->annotationsToParamList($annotations); - - $newMethodsCode = '' - .(isset($annotations['expectedExceptionMessageRegExp']) ? 'setExpectedExceptionRegExp' : 'setExpectedException') - .'(' - .implode(', ', $paramList) - .');'; - $newMethods = Tokens::fromCode($newMethodsCode); - $newMethods[0] = new Token([ - \T_WHITESPACE, - $this->whitespacesConfig->getLineEnding().$originalIndent.$this->whitespacesConfig->getIndent(), - ]); - - // apply changes - $docContent = $doc->getContent(); - if ('' === $docContent) { - $docContent = '/** */'; - } - $tokens[$docBlockIndex] = new Token([\T_DOC_COMMENT, $docContent]); - $tokens->insertAt($braceIndex + 1, $newMethods); - - $whitespaceIndex = $braceIndex + $newMethods->getSize() + 1; - $tokens[$whitespaceIndex] = new Token([ - \T_WHITESPACE, - $this->whitespacesConfig->getLineEnding().$tokens[$whitespaceIndex]->getContent(), - ]); - - $i = $docBlockIndex; - } - } - - private function extractContentFromAnnotation(Annotation $annotation): string - { - $tag = $annotation->getTag()->getName(); - - if (!Preg::match('/@'.$tag.'\s+(.+)$/s', $annotation->getContent(), $matches)) { - return ''; - } - - \assert(isset($matches[1])); - $content = Preg::replace('/\*+\/$/', '', $matches[1]); - - if (Preg::match('/\R/u', $content)) { - $content = Preg::replace('/\s*\R+\s*\*\s*/u', ' ', $content); - } - - return rtrim($content); - } - - /** - * @param array $annotations - * - * @return non-empty-list - */ - private function annotationsToParamList(array $annotations): array - { - $params = []; - \assert(isset($annotations['expectedException'])); - $exceptionClass = ltrim($annotations['expectedException'], '\\'); - - if (str_contains($exceptionClass, '*')) { - \assert(\is_int(strpos($exceptionClass, '*'))); - $exceptionClass = substr($exceptionClass, 0, strpos($exceptionClass, '*')); - } - - $exceptionClass = trim($exceptionClass); - - if (true === $this->configuration['use_class_const']) { - $params[] = "\\{$exceptionClass}::class"; - } else { - $params[] = "'{$exceptionClass}'"; - } - - if (isset($annotations['expectedExceptionMessage'])) { - $params[] = var_export($annotations['expectedExceptionMessage'], true); - } elseif (isset($annotations['expectedExceptionMessageRegExp'])) { - $params[] = var_export($annotations['expectedExceptionMessageRegExp'], true); - } elseif (isset($annotations['expectedExceptionCode'])) { - $params[] = 'null'; - } - - if (isset($annotations['expectedExceptionCode'])) { - $params[] = $annotations['expectedExceptionCode']; - } - - return $params; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php deleted file mode 100644 index 45266c1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php +++ /dev/null @@ -1,115 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Gert de Pagter - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitSetUpTearDownVisibilityFixer extends AbstractPhpUnitFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Changes the visibility of the `setUp()` and `tearDown()` functions of PHPUnit to `protected`, to match the PHPUnit TestCase.', - [ - new CodeSample( - <<<'PHP' - hello = "hello"; - } - - public function tearDown() - { - $this->hello = null; - } - } - - PHP, - ), - ], - null, - 'This fixer may change functions named `setUp()` or `tearDown()` outside of PHPUnit tests, ' - .'when a class is wrongly seen as a PHPUnit test.', - ); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $counter = 0; - $tokensAnalyzer = new TokensAnalyzer($tokens); - - $slicesToInsert = []; - - for ($index = $startIndex + 1; $index < $endIndex; ++$index) { - if (2 === $counter) { - break; // we've seen both methods we are interested in, so stop analyzing this class - } - - if ($tokens[$index]->equals('{')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - continue; - } - - $functionNameIndex = $tokens->getNextMeaningfulToken($index); - $functionName = strtolower($tokens[$functionNameIndex]->getContent()); - - if ('setup' !== $functionName && 'teardown' !== $functionName) { - continue; - } - - ++$counter; - - $visibility = $tokensAnalyzer->getMethodAttributes($index)['visibility']; - - if (\T_PUBLIC === $visibility) { - $visibilityIndex = $tokens->getPrevTokenOfKind($index, [[\T_PUBLIC]]); - $tokens[$visibilityIndex] = new Token([\T_PROTECTED, 'protected']); - - continue; - } - - if (null === $visibility) { - $slicesToInsert[$index] = [new Token([\T_PROTECTED, 'protected']), new Token([\T_WHITESPACE, ' '])]; - } - } - - $tokens->insertSlices($slicesToInsert); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php deleted file mode 100644 index bcef2e4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php +++ /dev/null @@ -1,109 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * group?: 'large'|'medium'|'small', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * group: 'large'|'medium'|'small', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Jefersson Nathan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitSizeClassFixer extends AbstractPhpUnitFixer implements WhitespacesAwareFixerInterface, ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const SIZES = ['small', 'medium', 'large']; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'All PHPUnit test cases should have `@small`, `@medium` or `@large` annotation to enable run time limits.', - [ - new CodeSample(" 'medium']), - ], - 'The special groups [small, medium, large] provides a way to identify tests that are taking long to be executed.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpUnitAttributesFixer, PhpdocSeparationFixer. - */ - public function getPriority(): int - { - return 9; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('group', 'Define a specific group to be used in case no group is already in use.')) - ->setAllowedValues(self::SIZES) - ->setDefault('small') - ->getOption(), - ]); - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $classIndex = $tokens->getPrevTokenOfKind($startIndex, [[\T_CLASS]]); - - if ($this->isAbstractClass($tokens, $classIndex)) { - return; - } - - $this->ensureIsDocBlockWithAnnotation( - $tokens, - $classIndex, - $this->configuration['group'], - self::SIZES, - [ - 'phpunit\framework\attributes\small', - 'phpunit\framework\attributes\medium', - 'phpunit\framework\attributes\large', - ], - ); - } - - private function isAbstractClass(Tokens $tokens, int $i): bool - { - $typeIndex = $tokens->getPrevMeaningfulToken($i); - - return $tokens[$typeIndex]->isGivenKind(\T_ABSTRACT); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php deleted file mode 100644 index 2e1c013..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php +++ /dev/null @@ -1,160 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * assertions?: list<'assertAttributeEquals'|'assertAttributeNotEquals'|'assertEquals'|'assertNotEquals'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * assertions: list<'assertAttributeEquals'|'assertAttributeNotEquals'|'assertEquals'|'assertNotEquals'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitStrictFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array - */ - private const ASSERTION_MAP = [ - 'assertAttributeEquals' => 'assertAttributeSame', - 'assertAttributeNotEquals' => 'assertAttributeNotSame', - 'assertEquals' => 'assertSame', - 'assertNotEquals' => 'assertNotSame', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPUnit methods like `assertSame` should be used instead of `assertEquals`.', - [ - new CodeSample( - <<<'PHP' - assertAttributeEquals(a(), b()); - $this->assertAttributeNotEquals(a(), b()); - $this->assertEquals(a(), b()); - $this->assertNotEquals(a(), b()); - } - } - - PHP, - ), - new CodeSample( - <<<'PHP' - assertAttributeEquals(a(), b()); - $this->assertAttributeNotEquals(a(), b()); - $this->assertEquals(a(), b()); - $this->assertNotEquals(a(), b()); - } - } - - PHP, - ['assertions' => ['assertEquals']], - ), - ], - null, - 'Risky when any of the functions are overridden or when testing object equality.', - ); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - $functionsAnalyzer = new FunctionsAnalyzer(); - - foreach ($this->configuration['assertions'] as $methodBefore) { - $methodAfter = self::ASSERTION_MAP[$methodBefore]; - - for ($index = $startIndex; $index < $endIndex; ++$index) { - $methodIndex = $tokens->getNextTokenOfKind($index, [[\T_STRING, $methodBefore]]); - - if (null === $methodIndex) { - break; - } - - if (!$functionsAnalyzer->isTheSameClassCall($tokens, $methodIndex)) { - continue; - } - - $openingParenthesisIndex = $tokens->getNextMeaningfulToken($methodIndex); - $argumentsCount = $argumentsAnalyzer->countArguments( - $tokens, - $openingParenthesisIndex, - $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openingParenthesisIndex), - ); - - if (2 === $argumentsCount || 3 === $argumentsCount) { - $tokens[$methodIndex] = new Token([\T_STRING, $methodAfter]); - } - - $index = $methodIndex; - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('assertions', 'List of assertion methods to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset(array_keys(self::ASSERTION_MAP))]) - ->setDefault([ - 'assertAttributeEquals', - 'assertAttributeNotEquals', - 'assertEquals', - 'assertNotEquals', - ]) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php deleted file mode 100644 index aec1ed9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php +++ /dev/null @@ -1,61 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use Composer\Semver\Comparator; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitTargetVersion -{ - public const VERSION_3_0 = '3.0'; - public const VERSION_3_2 = '3.2'; - public const VERSION_3_5 = '3.5'; - public const VERSION_4_3 = '4.3'; - public const VERSION_4_8 = '4.8'; - public const VERSION_5_0 = '5.0'; - public const VERSION_5_2 = '5.2'; - public const VERSION_5_4 = '5.4'; - public const VERSION_5_5 = '5.5'; - public const VERSION_5_6 = '5.6'; - public const VERSION_5_7 = '5.7'; - public const VERSION_6_0 = '6.0'; - public const VERSION_7_5 = '7.5'; - public const VERSION_8_4 = '8.4'; - public const VERSION_9_1 = '9.1'; - public const VERSION_10_0 = '10.0'; - public const VERSION_11_0 = '11.0'; - public const VERSION_NEWEST = 'newest'; - - private function __construct() {} - - public static function fulfills(string $candidate, string $target): bool - { - if (self::VERSION_NEWEST === $target) { - throw new \LogicException(\sprintf('Parameter `target` shall not be provided as "%s", determine proper target for tested PHPUnit feature instead.', self::VERSION_NEWEST)); - } - - if (self::VERSION_NEWEST === $candidate) { - return true; - } - - return Comparator::greaterThanOrEqualTo($candidate, $target); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php deleted file mode 100644 index fb6f461..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php +++ /dev/null @@ -1,415 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\Line; -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * style?: 'annotation'|'prefix', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * style: 'annotation'|'prefix', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gert de Pagter - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitTestAnnotationFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function isRisky(): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Adds or removes @test annotations from tests, following configuration.', - [ - new CodeSample( - <<<'PHP' - whitespacesConfig->getLineEnding(), - ), - new CodeSample( - <<<'PHP' - whitespacesConfig->getLineEnding(), - ['style' => 'annotation'], - ), - ], - null, - 'This fixer may change the name of your tests, and could cause incompatibility with' - .' abstract classes or interfaces.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoEmptyPhpdocFixer, PhpUnitMethodCasingFixer, PhpdocTrimFixer. - */ - public function getPriority(): int - { - return 10; - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - if ('annotation' === $this->configuration['style']) { - $this->applyTestAnnotation($tokens, $startIndex, $endIndex); - } else { - $this->applyTestPrefix($tokens, $startIndex, $endIndex); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('style', 'Whether to use the @test annotation or not.')) - ->setAllowedValues(['prefix', 'annotation']) - ->setDefault('prefix') - ->getOption(), - ]); - } - - private function applyTestAnnotation(Tokens $tokens, int $startIndex, int $endIndex): void - { - for ($i = $endIndex - 1; $i > $startIndex; --$i) { - if (!$this->isTestMethod($tokens, $i)) { - continue; - } - - $functionNameIndex = $tokens->getNextMeaningfulToken($i); - $functionName = $tokens[$functionNameIndex]->getContent(); - - if ($this->hasTestPrefix($functionName) && !$this->hasProperTestAnnotation($tokens, $i)) { - $newFunctionName = $this->removeTestPrefix($functionName); - $tokens[$functionNameIndex] = new Token([\T_STRING, $newFunctionName]); - } - - $docBlockIndex = $this->getDocBlockIndex($tokens, $i); - - if ($tokens[$docBlockIndex]->isGivenKind(\T_DOC_COMMENT)) { - $lines = $this->updateDocBlock($tokens, $docBlockIndex); - $lines = $this->addTestAnnotation($lines, $tokens, $docBlockIndex); - $lines = implode('', $lines); - - $tokens[$docBlockIndex] = new Token([\T_DOC_COMMENT, $lines]); - } else { - // Create a new docblock if it didn't have one before; - $this->createDocBlock($tokens, $docBlockIndex, 'test'); - } - } - } - - private function applyTestPrefix(Tokens $tokens, int $startIndex, int $endIndex): void - { - for ($i = $endIndex - 1; $i > $startIndex; --$i) { - // We explicitly check again if the function has a doc block to save some time. - if (!$this->isTestMethod($tokens, $i)) { - continue; - } - - $docBlockIndex = $this->getDocBlockIndex($tokens, $i); - - if (!$tokens[$docBlockIndex]->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $lines = $this->updateDocBlock($tokens, $docBlockIndex); - $lines = implode('', $lines); - $tokens[$docBlockIndex] = new Token([\T_DOC_COMMENT, $lines]); - - $functionNameIndex = $tokens->getNextMeaningfulToken($i); - $functionName = $tokens[$functionNameIndex]->getContent(); - - if ($this->hasTestPrefix($functionName)) { - continue; - } - - $newFunctionName = $this->addTestPrefix($functionName); - $tokens[$functionNameIndex] = new Token([\T_STRING, $newFunctionName]); - } - } - - private function isTestMethod(Tokens $tokens, int $index): bool - { - // Check if we are dealing with a (non-abstract, non-lambda) function - if (!$this->isMethod($tokens, $index)) { - return false; - } - - // if the function name starts with test it is a test - $functionNameIndex = $tokens->getNextMeaningfulToken($index); - $functionName = $tokens[$functionNameIndex]->getContent(); - - if ($this->hasTestPrefix($functionName)) { - return true; - } - - $docBlockIndex = $this->getDocBlockIndex($tokens, $index); - - // If the function doesn't have test in its name, and no doc block, it is not a test - return - $tokens[$docBlockIndex]->isGivenKind(\T_DOC_COMMENT) - && str_contains($tokens[$docBlockIndex]->getContent(), '@test'); - } - - private function isMethod(Tokens $tokens, int $index): bool - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - return $tokens[$index]->isGivenKind(\T_FUNCTION) && !$tokensAnalyzer->isLambda($index); - } - - private function hasTestPrefix(string $functionName): bool - { - return str_starts_with($functionName, 'test'); - } - - private function hasProperTestAnnotation(Tokens $tokens, int $index): bool - { - $docBlockIndex = $this->getDocBlockIndex($tokens, $index); - $doc = $tokens[$docBlockIndex]->getContent(); - - return Preg::match('/\*\s+@test\b/', $doc); - } - - private function removeTestPrefix(string $functionName): string - { - $remainder = Preg::replace('/^test(?=[A-Z_])_?/', '', $functionName); - - if ('' === $remainder) { - return $functionName; - } - - return lcfirst($remainder); - } - - private function addTestPrefix(string $functionName): string - { - return 'test'.ucfirst($functionName); - } - - /** - * @return list - */ - private function updateDocBlock(Tokens $tokens, int $docBlockIndex): array - { - $doc = new DocBlock($tokens[$docBlockIndex]->getContent()); - $lines = $doc->getLines(); - - return $this->updateLines($lines, $tokens, $docBlockIndex); - } - - /** - * @param list $lines - * - * @return list - */ - private function updateLines(array $lines, Tokens $tokens, int $docBlockIndex): array - { - $needsAnnotation = 'annotation' === $this->configuration['style']; - - $doc = new DocBlock($tokens[$docBlockIndex]->getContent()); - foreach ($lines as $i => $line) { - // If we need to add test annotation and it is a single line comment we need to deal with that separately - if ($needsAnnotation && ($line->isTheStart() && $line->isTheEnd())) { - if (!$this->doesDocBlockContainTest($doc)) { - $lines = $this->splitUpDocBlock($lines, $tokens, $docBlockIndex); - - return $this->updateLines($lines, $tokens, $docBlockIndex); - } - // One we split it up, we run the function again, so we deal with other things in a proper way - } - - if (!$needsAnnotation - && str_contains($line->getContent(), ' @test') - && !str_contains($line->getContent(), '@testWith') - && !str_contains($line->getContent(), '@testdox') - ) { - // We remove @test from the doc block - $lines[$i] = $line = new Line(str_replace(' @test', '', $line->getContent())); - } - // ignore the line if it isn't @depends - if (!str_contains($line->getContent(), '@depends')) { - continue; - } - - $lines[$i] = $this->updateDependsAnnotation($line); - } - - return $lines; - } - - /** - * Take a one line doc block, and turn it into a multi line doc block. - * - * @param non-empty-list $lines - * - * @return non-empty-list - */ - private function splitUpDocBlock(array $lines, Tokens $tokens, int $docBlockIndex): array - { - $lineContent = $this->getSingleLineDocBlockEntry($lines); - $lineEnd = $this->whitespacesConfig->getLineEnding(); - $originalIndent = WhitespacesAnalyzer::detectIndent($tokens, $tokens->getNextNonWhitespace($docBlockIndex)); - - return [ - new Line('/**'.$lineEnd), - new Line($originalIndent.' * '.$lineContent.$lineEnd), - new Line($originalIndent.' */'), - ]; - } - - /** - * @TODO check whether it's doable to use \PhpCsFixer\DocBlock\DocBlock::getSingleLineDocBlockEntry instead - * - * @param non-empty-list $lines - */ - private function getSingleLineDocBlockEntry(array $lines): string - { - $line = $lines[0]; - $line = str_replace('*/', '', $line->getContent()); - $line = trim($line); - $line = str_split($line); - $i = \count($line); - do { - --$i; - } while ('*' !== $line[$i] && '*' !== $line[$i - 1] && '/' !== $line[$i - 2]); - if (' ' === $line[$i]) { - ++$i; - } - $line = \array_slice($line, $i); - - return implode('', $line); - } - - /** - * Updates the depends tag on the current doc block. - */ - private function updateDependsAnnotation(Line $line): Line - { - if ('annotation' === $this->configuration['style']) { - return $this->removeTestPrefixFromDependsAnnotation($line); - } - - return $this->addTestPrefixToDependsAnnotation($line); - } - - private function removeTestPrefixFromDependsAnnotation(Line $line): Line - { - $line = str_split($line->getContent()); - - $dependsIndex = $this->findWhereDependsFunctionNameStarts($line); - $dependsFunctionName = implode('', \array_slice($line, $dependsIndex)); - - if ($this->hasTestPrefix($dependsFunctionName)) { - $dependsFunctionName = $this->removeTestPrefix($dependsFunctionName); - } - array_splice($line, $dependsIndex); - - return new Line(implode('', $line).$dependsFunctionName); - } - - private function addTestPrefixToDependsAnnotation(Line $line): Line - { - $line = str_split($line->getContent()); - $dependsIndex = $this->findWhereDependsFunctionNameStarts($line); - $dependsFunctionName = implode('', \array_slice($line, $dependsIndex)); - - if (!$this->hasTestPrefix($dependsFunctionName)) { - $dependsFunctionName = $this->addTestPrefix($dependsFunctionName); - } - - array_splice($line, $dependsIndex); - - return new Line(implode('', $line).$dependsFunctionName); - } - - /** - * Helps to find where the function name in the doc block starts. - * - * @param list $line - */ - private function findWhereDependsFunctionNameStarts(array $line): int - { - $index = (int) stripos(implode('', $line), '@depends') + 8; - - while (' ' === $line[$index]) { - ++$index; - } - - return $index; - } - - /** - * @param list $lines - * - * @return list - */ - private function addTestAnnotation(array $lines, Tokens $tokens, int $docBlockIndex): array - { - $doc = new DocBlock($tokens[$docBlockIndex]->getContent()); - - if (!$this->doesDocBlockContainTest($doc)) { - $originalIndent = WhitespacesAnalyzer::detectIndent($tokens, $docBlockIndex); - $lineEnd = $this->whitespacesConfig->getLineEnding(); - - array_splice($lines, -1, 0, [new Line($originalIndent.' *'.$lineEnd.$originalIndent.' * @test'.$lineEnd)]); - \assert(array_is_list($lines)); // we know it's list, but we need to tell PHPStan - } - - return $lines; - } - - private function doesDocBlockContainTest(DocBlock $doc): bool - { - return 0 !== \count($doc->getAnnotationsOfType('test')); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php deleted file mode 100644 index 19d4e80..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php +++ /dev/null @@ -1,646 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use PhpCsFixer\Utils; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * call_type?: 'self'|'static'|'this', - * methods?: array, - * target?: '10.0'|'11.0'|'newest', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * call_type: 'self'|'static'|'this', - * methods: array, - * target: '10.0'|'11.0'|'newest', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @phpstan-import-type _PhpTokenArray from Token - * - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitTestCaseStaticMethodCallsFixer extends AbstractPhpUnitFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const CALL_TYPE_THIS = 'this'; - - /** - * @internal - */ - public const CALL_TYPE_SELF = 'self'; - - /** - * @internal - */ - public const CALL_TYPE_STATIC = 'static'; - - /** - * @var array - */ - private const METHODS = [ - // Assert methods - 'anything' => true, - 'arrayHasKey' => true, - 'assertArrayHasKey' => true, - 'assertArrayIsEqualToArrayIgnoringListOfKeys' => true, - 'assertArrayIsEqualToArrayOnlyConsideringListOfKeys' => true, - 'assertArrayIsIdenticalToArrayIgnoringListOfKeys' => true, - 'assertArrayIsIdenticalToArrayOnlyConsideringListOfKeys' => true, - 'assertArrayNotHasKey' => true, - 'assertArraySubset' => true, - 'assertArraysAreIdentical' => true, - 'assertArraysAreIdenticalIgnoringOrder' => true, - 'assertArraysHaveIdenticalValues' => true, - 'assertArraysHaveIdenticalValuesIgnoringOrder' => true, - 'assertArraysAreEqual' => true, - 'assertArraysAreEqualIgnoringOrder' => true, - 'assertArraysHaveEqualValues' => true, - 'assertArraysHaveEqualValuesIgnoringOrder' => true, - 'assertAttributeContains' => true, - 'assertAttributeContainsOnly' => true, - 'assertAttributeCount' => true, - 'assertAttributeEmpty' => true, - 'assertAttributeEquals' => true, - 'assertAttributeGreaterThan' => true, - 'assertAttributeGreaterThanOrEqual' => true, - 'assertAttributeInstanceOf' => true, - 'assertAttributeInternalType' => true, - 'assertAttributeLessThan' => true, - 'assertAttributeLessThanOrEqual' => true, - 'assertAttributeNotContains' => true, - 'assertAttributeNotContainsOnly' => true, - 'assertAttributeNotCount' => true, - 'assertAttributeNotEmpty' => true, - 'assertAttributeNotEquals' => true, - 'assertAttributeNotInstanceOf' => true, - 'assertAttributeNotInternalType' => true, - 'assertAttributeNotSame' => true, - 'assertAttributeSame' => true, - 'assertClassHasAttribute' => true, - 'assertClassHasStaticAttribute' => true, - 'assertClassNotHasAttribute' => true, - 'assertClassNotHasStaticAttribute' => true, - 'assertContains' => true, - 'assertContainsEquals' => true, - 'assertContainsNotOnlyArray' => true, - 'assertContainsNotOnlyBool' => true, - 'assertContainsNotOnlyCallable' => true, - 'assertContainsNotOnlyClosedResource' => true, - 'assertContainsNotOnlyFloat' => true, - 'assertContainsNotOnlyInstancesOf' => true, - 'assertContainsNotOnlyInt' => true, - 'assertContainsNotOnlyIterable' => true, - 'assertContainsNotOnlyNull' => true, - 'assertContainsNotOnlyNumeric' => true, - 'assertContainsNotOnlyObject' => true, - 'assertContainsNotOnlyResource' => true, - 'assertContainsNotOnlyScalar' => true, - 'assertContainsNotOnlyString' => true, - 'assertContainsOnly' => true, - 'assertContainsOnlyArray' => true, - 'assertContainsOnlyBool' => true, - 'assertContainsOnlyCallable' => true, - 'assertContainsOnlyClosedResource' => true, - 'assertContainsOnlyFloat' => true, - 'assertContainsOnlyInstancesOf' => true, - 'assertContainsOnlyInt' => true, - 'assertContainsOnlyIterable' => true, - 'assertContainsOnlyNull' => true, - 'assertContainsOnlyNumeric' => true, - 'assertContainsOnlyObject' => true, - 'assertContainsOnlyResource' => true, - 'assertContainsOnlyScalar' => true, - 'assertContainsOnlyString' => true, - 'assertCount' => true, - 'assertDirectoryDoesNotExist' => true, - 'assertDirectoryExists' => true, - 'assertDirectoryIsNotReadable' => true, - 'assertDirectoryIsNotWritable' => true, - 'assertDirectoryIsReadable' => true, - 'assertDirectoryIsWritable' => true, - 'assertDirectoryNotExists' => true, - 'assertDirectoryNotIsReadable' => true, - 'assertDirectoryNotIsWritable' => true, - 'assertDoesNotMatchRegularExpression' => true, - 'assertEmpty' => true, - 'assertEquals' => true, - 'assertEqualsCanonicalizing' => true, - 'assertEqualsIgnoringCase' => true, - 'assertEqualsWithDelta' => true, - 'assertEqualXMLStructure' => true, - 'assertFalse' => true, - 'assertFileDoesNotExist' => true, - 'assertFileEquals' => true, - 'assertFileEqualsCanonicalizing' => true, - 'assertFileEqualsFileIgnoringWhitespace' => true, - 'assertFileEqualsIgnoringCase' => true, - 'assertFileExists' => true, - 'assertFileIsNotReadable' => true, - 'assertFileIsNotWritable' => true, - 'assertFileIsReadable' => true, - 'assertFileIsWritable' => true, - 'assertFileMatchesFormat' => true, - 'assertFileMatchesFormatFile' => true, - 'assertFileNotEquals' => true, - 'assertFileNotEqualsCanonicalizing' => true, - 'assertFileNotEqualsFileIgnoringWhitespace' => true, - 'assertFileNotEqualsIgnoringCase' => true, - 'assertFileNotExists' => true, - 'assertFileNotIsReadable' => true, - 'assertFileNotIsWritable' => true, - 'assertFinite' => true, - 'assertGreaterThan' => true, - 'assertGreaterThanOrEqual' => true, - 'assertInfinite' => true, - 'assertInstanceOf' => true, - 'assertInternalType' => true, - 'assertIsArray' => true, - 'assertIsBool' => true, - 'assertIsCallable' => true, - 'assertIsClosedResource' => true, - 'assertIsFloat' => true, - 'assertIsInt' => true, - 'assertIsIterable' => true, - 'assertIsList' => true, - 'assertIsNotArray' => true, - 'assertIsNotBool' => true, - 'assertIsNotCallable' => true, - 'assertIsNotClosedResource' => true, - 'assertIsNotFloat' => true, - 'assertIsNotInt' => true, - 'assertIsNotIterable' => true, - 'assertIsNotNumeric' => true, - 'assertIsNotObject' => true, - 'assertIsNotReadable' => true, - 'assertIsNotResource' => true, - 'assertIsNotScalar' => true, - 'assertIsNotString' => true, - 'assertIsNotWritable' => true, - 'assertIsNumeric' => true, - 'assertIsObject' => true, - 'assertIsReadable' => true, - 'assertIsResource' => true, - 'assertIsScalar' => true, - 'assertIsString' => true, - 'assertIsWritable' => true, - 'assertJson' => true, - 'assertJsonFileEqualsJsonFile' => true, - 'assertJsonFileNotEqualsJsonFile' => true, - 'assertJsonStringEqualsJsonFile' => true, - 'assertJsonStringEqualsJsonString' => true, - 'assertJsonStringNotEqualsJsonFile' => true, - 'assertJsonStringNotEqualsJsonString' => true, - 'assertLessThan' => true, - 'assertLessThanOrEqual' => true, - 'assertMatchesRegularExpression' => true, - 'assertNan' => true, - 'assertNotContains' => true, - 'assertNotContainsEquals' => true, - 'assertNotContainsOnly' => true, - 'assertNotCount' => true, - 'assertNotEmpty' => true, - 'assertNotEquals' => true, - 'assertNotEqualsCanonicalizing' => true, - 'assertNotEqualsIgnoringCase' => true, - 'assertNotEqualsWithDelta' => true, - 'assertNotFalse' => true, - 'assertNotInstanceOf' => true, - 'assertNotInternalType' => true, - 'assertNotIsReadable' => true, - 'assertNotIsWritable' => true, - 'assertNotNull' => true, - 'assertNotRegExp' => true, - 'assertNotSame' => true, - 'assertNotSameSize' => true, - 'assertNotTrue' => true, - 'assertNull' => true, - 'assertObjectEquals' => true, - 'assertObjectHasAttribute' => true, - 'assertObjectHasProperty' => true, - 'assertObjectNotEquals' => true, - 'assertObjectNotHasAttribute' => true, - 'assertObjectNotHasProperty' => true, - 'assertRegExp' => true, - 'assertSame' => true, - 'assertSameSize' => true, - 'assertStringContainsString' => true, - 'assertStringContainsStringIgnoringCase' => true, - 'assertStringContainsStringIgnoringLineEndings' => true, - 'assertStringEndsNotWith' => true, - 'assertStringEndsWith' => true, - 'assertStringEqualsFile' => true, - 'assertStringEqualsFileCanonicalizing' => true, - 'assertStringEqualsFileIgnoringCase' => true, - 'assertStringEqualsFileIgnoringWhitespace' => true, - 'assertStringEqualsStringIgnoringLineEndings' => true, - 'assertStringEqualsStringIgnoringWhitespace' => true, - 'assertStringMatchesFormat' => true, - 'assertStringMatchesFormatFile' => true, - 'assertStringNotContainsString' => true, - 'assertStringNotContainsStringIgnoringCase' => true, - 'assertStringNotEqualsFile' => true, - 'assertStringNotEqualsFileCanonicalizing' => true, - 'assertStringNotEqualsFileIgnoringCase' => true, - 'assertStringNotEqualsFileIgnoringWhitespace' => true, - 'assertStringNotEqualsStringIgnoringWhitespace' => true, - 'assertStringNotMatchesFormat' => true, - 'assertStringNotMatchesFormatFile' => true, - 'assertStringStartsNotWith' => true, - 'assertStringStartsWith' => true, - 'assertThat' => true, - 'assertTrue' => true, - 'assertXmlFileEqualsXmlFile' => true, - 'assertXmlFileEqualsXmlFileConsideringComments' => true, - 'assertXmlFileNotEqualsXmlFile' => true, - 'assertXmlFileNotEqualsXmlFileConsideringComments' => true, - 'assertXmlStringEqualsXmlFile' => true, - 'assertXmlStringEqualsXmlFileConsideringComments' => true, - 'assertXmlStringEqualsXmlString' => true, - 'assertXmlStringEqualsXmlStringConsideringComments' => true, - 'assertXmlStringNotEqualsXmlFile' => true, - 'assertXmlStringNotEqualsXmlFileConsideringComments' => true, - 'assertXmlStringNotEqualsXmlString' => true, - 'assertXmlStringNotEqualsXmlStringConsideringComments' => true, - 'attribute' => true, - 'attributeEqualTo' => true, - 'callback' => true, - 'classHasAttribute' => true, - 'classHasStaticAttribute' => true, - 'contains' => true, - 'containsEqual' => true, - 'containsIdentical' => true, - 'containsOnly' => true, - 'containsOnlyArray' => true, - 'containsOnlyBool' => true, - 'containsOnlyCallable' => true, - 'containsOnlyClosedResource' => true, - 'containsOnlyFloat' => true, - 'containsOnlyInstancesOf' => true, - 'containsOnlyInt' => true, - 'containsOnlyIterable' => true, - 'containsOnlyNull' => true, - 'containsOnlyNumeric' => true, - 'containsOnlyObject' => true, - 'containsOnlyResource' => true, - 'containsOnlyScalar' => true, - 'containsOnlyString' => true, - 'countOf' => true, - 'directoryExists' => true, - 'equalTo' => true, - 'equalToCanonicalizing' => true, - 'equalToIgnoringCase' => true, - 'equalToWithDelta' => true, - 'fail' => true, - 'fileExists' => true, - 'getCount' => true, - 'getObjectAttribute' => true, - 'getStaticAttribute' => true, - 'greaterThan' => true, - 'greaterThanOrEqual' => true, - 'identicalTo' => true, - 'isArray' => true, - 'isBool' => true, - 'isCallable' => true, - 'isClosedResource' => true, - 'isEmpty' => true, - 'isFalse' => true, - 'isFinite' => true, - 'isFloat' => true, - 'isInfinite' => true, - 'isInstanceOf' => true, - 'isInt' => true, - 'isIterable' => true, - 'isJson' => true, - 'isList' => true, - 'isNan' => true, - 'isNull' => true, - 'isNumeric' => true, - 'isObject' => true, - 'isReadable' => true, - 'isResource' => true, - 'isScalar' => true, - 'isString' => true, - 'isTrue' => true, - 'isType' => true, - 'isWritable' => true, - 'lessThan' => true, - 'lessThanOrEqual' => true, - 'logicalAnd' => true, - 'logicalNot' => true, - 'logicalOr' => true, - 'logicalXor' => true, - 'markTestIncomplete' => true, - 'markTestSkipped' => true, - 'matches' => true, - 'matchesRegularExpression' => true, - 'objectEquals' => true, - 'objectHasAttribute' => true, - 'readAttribute' => true, - 'resetCount' => true, - 'stringContains' => true, - 'stringEndsWith' => true, - 'stringEqualsStringIgnoringLineEndings' => true, - 'stringEqualsStringIgnoringWhitespace' => true, - 'stringStartsWith' => true, - - // TestCase methods - 'any' => true, - 'at' => true, - 'atLeast' => true, - 'atLeastOnce' => true, - 'atMost' => true, - 'createStub' => true, - 'createConfiguredStub' => true, - 'createStubForIntersectionOfInterfaces' => true, - 'exactly' => true, - 'getStubBuilder' => true, - 'never' => true, - 'once' => true, - 'onConsecutiveCalls' => true, - 'returnArgument' => true, - 'returnCallback' => true, - 'returnSelf' => true, - 'returnValue' => true, - 'returnValueMap' => true, - 'setUpBeforeClass' => true, - 'tearDownAfterClass' => true, - 'throwException' => true, - ]; - - /** - * @var array - */ - private const ALLOWED_VALUES = [ - self::CALL_TYPE_THIS => true, - self::CALL_TYPE_SELF => true, - self::CALL_TYPE_STATIC => true, - ]; - - /** - * @var non-empty-array - */ - private array $conversionMap = [ - self::CALL_TYPE_THIS => [[\T_OBJECT_OPERATOR, '->'], [\T_VARIABLE, '$this']], - self::CALL_TYPE_SELF => [[\T_DOUBLE_COLON, '::'], [\T_STRING, 'self']], - self::CALL_TYPE_STATIC => [[\T_DOUBLE_COLON, '::'], [\T_STATIC, 'static']], - ]; - - public function getDefinition(): FixerDefinitionInterface - { - $codeSample = <<<'PHP' - assertSame(1, 2); - self::assertSame(1, 2); - static::assertSame(1, 2); - static::assertTrue(false); - } - } - - PHP; - - return new FixerDefinition( - 'Calls to `PHPUnit\Framework\TestCase` static methods (like assertions) must all be of the same type, either `$this->`, `self::` or `static::`.', - [ - new CodeSample($codeSample), - new CodeSample($codeSample, ['call_type' => self::CALL_TYPE_THIS]), - new CodeSample($codeSample, ['methods' => ['assertTrue' => self::CALL_TYPE_THIS]]), - ], - null, - 'Risky when PHPUnit methods are overridden or not accessible, or when project has PHPUnit incompatibilities.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before SelfStaticAccessorFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isRisky(): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('call_type', 'The call type to use for referring to PHPUnit methods.')) - ->setAllowedTypes(['string']) - ->setAllowedValues(array_keys(self::ALLOWED_VALUES)) - ->setDefault(Future::getV4OrV3(self::CALL_TYPE_THIS, self::CALL_TYPE_STATIC)) // vide https://github.com/sebastianbergmann/phpunit/issues/2104#issuecomment-192919598 - ->getOption(), - (new FixerOptionBuilder('methods', 'Dictionary of `method` => `call_type` values that differ from the default strategy.')) - ->setAllowedTypes(['array']) - ->setAllowedValues([static function (array $option): bool { - foreach ($option as $method => $value) { - if (!isset(self::METHODS[$method])) { - throw new InvalidOptionsException( - \sprintf( - 'Unexpected "methods" key, expected any of %s, got "%s".', - Utils::naturalLanguageJoin(array_keys(self::METHODS)), - \gettype($method).'#'.$method, - ), - ); - } - - if (!isset(self::ALLOWED_VALUES[$value])) { - throw new InvalidOptionsException( - \sprintf( - 'Unexpected value for method "%s", expected any of %s, got "%s".', - $method, - Utils::naturalLanguageJoin(array_keys(self::ALLOWED_VALUES)), - \is_object($value) ? \get_class($value) : (null === $value ? 'null' : \gettype($value).'#'.$value), - ), - ); - } - } - - return true; - }]) - ->setDefault([]) - ->getOption(), - (new FixerOptionBuilder('target', 'Target version of PHPUnit.')) - ->setAllowedTypes(['string']) - ->setAllowedValues([ - PhpUnitTargetVersion::VERSION_10_0, - PhpUnitTargetVersion::VERSION_11_0, - PhpUnitTargetVersion::VERSION_NEWEST, - ]) - ->setDefault(Future::getV4OrV3(PhpUnitTargetVersion::VERSION_NEWEST, PhpUnitTargetVersion::VERSION_10_0)) - ->getOption(), - ]); - } - - protected function configurePostNormalisation(): void - { - $dynamicMethods = []; - if (PhpUnitTargetVersion::fulfills($this->configuration['target'], PhpUnitTargetVersion::VERSION_11_0)) { - // not statc since v11 - $dynamicMethods = [ - 'any', - 'atLeast', - 'atLeastOnce', - 'atMost', - 'exactly', - 'never', - 'once', - 'throwException', - ]; - } - if (PhpUnitTargetVersion::VERSION_11_0 === $this->configuration['target']) { - // not static since v11, removed in v12 - $dynamicMethods[] = 'onConsecutiveCalls'; - $dynamicMethods[] = 'returnArgument'; - $dynamicMethods[] = 'returnCallback'; - $dynamicMethods[] = 'returnSelf'; - $dynamicMethods[] = 'returnValue'; - $dynamicMethods[] = 'returnValueMap'; - } - - foreach ($dynamicMethods as $method) { - if (isset($this->configuration['methods'][$method])) { - throw new InvalidFixerConfigurationException( - $this->getName(), - \sprintf('Configuration cannot contain method "%s" and target "%s", it is dynamic in that PHPUnit version.', $method, $this->configuration['target']), - ); - } - - $this->configuration['methods'][$method] = self::CALL_TYPE_THIS; - } - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $analyzer = new TokensAnalyzer($tokens); - - for ($index = $startIndex; $index < $endIndex; ++$index) { - // skip anonymous classes - if ($tokens[$index]->isGivenKind(\T_CLASS)) { - $index = $this->findEndOfNextBlock($tokens, $index); - - continue; - } - - $callType = $this->configuration['call_type']; - - if ($tokens[$index]->isGivenKind(\T_FUNCTION)) { - // skip lambda - if ($analyzer->isLambda($index)) { - $index = $this->findEndOfNextBlock($tokens, $index); - - continue; - } - - // do not change `self` to `this` in static methods - if (self::CALL_TYPE_THIS === $callType) { - $attributes = $analyzer->getMethodAttributes($index); - - if (false !== $attributes['static']) { - $index = $this->findEndOfNextBlock($tokens, $index); - - continue; - } - } - } - - if (!$tokens[$index]->isGivenKind(\T_STRING) || !isset(self::METHODS[$tokens[$index]->getContent()])) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$nextIndex]->equals('(')) { - $index = $nextIndex; - - continue; - } - - if ($tokens[$tokens->getNextMeaningfulToken($nextIndex)]->isGivenKind(CT::T_FIRST_CLASS_CALLABLE)) { - continue; - } - - $methodName = $tokens[$index]->getContent(); - - if (isset($this->configuration['methods'][$methodName])) { - $callType = $this->configuration['methods'][$methodName]; - } - - $operatorIndex = $tokens->getPrevMeaningfulToken($index); - $referenceIndex = $tokens->getPrevMeaningfulToken($operatorIndex); - - if (!$this->needsConversion($tokens, $index, $referenceIndex, $callType)) { - continue; - } - - \assert(isset($this->conversionMap[$callType])); // for PHPStan - $tokens[$operatorIndex] = new Token($this->conversionMap[$callType][0]); - $tokens[$referenceIndex] = new Token($this->conversionMap[$callType][1]); - } - } - - private function needsConversion(Tokens $tokens, int $index, int $referenceIndex, string $callType): bool - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - \assert(isset($this->conversionMap[$callType])); // for PHPStan - - return $functionsAnalyzer->isTheSameClassCall($tokens, $index) - && !$tokens[$referenceIndex]->equals($this->conversionMap[$callType][1], false); - } - - private function findEndOfNextBlock(Tokens $tokens, int $index): int - { - $nextIndex = $tokens->getNextTokenOfKind($index, [';', '{']); - - return $tokens[$nextIndex]->equals('{') - ? $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $nextIndex) - : $nextIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php deleted file mode 100644 index d87c302..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php +++ /dev/null @@ -1,98 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\PhpUnit; - -use PhpCsFixer\Fixer\AbstractPhpUnitFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitTestClassRequiresCoversFixer extends AbstractPhpUnitFixer implements WhitespacesAwareFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Adds a default `@coversNothing` annotation to PHPUnit test classes that have no `@covers*` annotation.', - [ - new CodeSample( - <<<'PHP' - assertSame(a(), b()); - } - } - - PHP, - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpUnitAttributesFixer, PhpdocSeparationFixer. - */ - public function getPriority(): int - { - return 9; - } - - protected function applyPhpUnitClassFix(Tokens $tokens, int $startIndex, int $endIndex): void - { - $classIndex = $tokens->getPrevTokenOfKind($startIndex, [[\T_CLASS]]); - - $tokensAnalyzer = new TokensAnalyzer($tokens); - - if ($tokensAnalyzer->isAnonymousClass($classIndex)) { - return; - } - - $modifiers = $tokensAnalyzer->getClassyModifiers($classIndex); - - if (isset($modifiers['abstract'])) { - return; // don't add `@covers` annotation for abstract base classes - } - - $this->ensureIsDocBlockWithAnnotation( - $tokens, - $classIndex, - 'coversNothing', - [ - 'covers', - 'coversDefaultClass', - 'coversNothing', - ], - [ - 'phpunit\framework\attributes\coversclass', - 'phpunit\framework\attributes\coversnothing', - 'phpunit\framework\attributes\coversmethod', - 'phpunit\framework\attributes\coversfunction', - 'phpunit\framework\attributes\coverstrait', - ], - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php deleted file mode 100644 index 494269e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php +++ /dev/null @@ -1,186 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * comment_type?: 'all_multiline'|'phpdocs_like'|'phpdocs_only', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * comment_type: 'all_multiline'|'phpdocs_like'|'phpdocs_only', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Filippo Tessarotto - * @author Julien Falque - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AlignMultilineCommentFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var null|non-empty-list - */ - private ?array $tokenKinds = null; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Each line of multi-line DocComments must have an asterisk [PSR-5] and must be aligned with the first one.', - [ - new CodeSample( - <<<'PHP' - 'phpdocs_like'], - ), - new CodeSample( - <<<'PHP' - 'all_multiline'], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before CommentToPhpdocFixer, GeneralPhpdocAnnotationRemoveFixer, GeneralPhpdocTagRenameFixer, NoBlankLinesAfterPhpdocFixer, NoEmptyPhpdocFixer, NoSuperfluousPhpdocTagsFixer, PhpdocAddMissingParamAnnotationFixer, PhpdocAlignFixer, PhpdocAnnotationWithoutDotFixer, PhpdocArrayTypeFixer, PhpdocInlineTagNormalizerFixer, PhpdocLineSpanFixer, PhpdocListTypeFixer, PhpdocNoAccessFixer, PhpdocNoAliasTagFixer, PhpdocNoDuplicateTypesFixer, PhpdocNoEmptyReturnFixer, PhpdocNoPackageFixer, PhpdocNoUselessInheritdocFixer, PhpdocOrderByValueFixer, PhpdocOrderFixer, PhpdocParamOrderFixer, PhpdocReadonlyClassCommentToKeywordFixer, PhpdocReturnSelfReferenceFixer, PhpdocSeparationFixer, PhpdocSingleLineVarSpacingFixer, PhpdocSummaryFixer, PhpdocTagCasingFixer, PhpdocTagNoNamedArgumentsFixer, PhpdocTagTypeFixer, PhpdocToParamTypeFixer, PhpdocToPropertyTypeFixer, PhpdocToReturnTypeFixer, PhpdocTrimConsecutiveBlankLineSeparationFixer, PhpdocTrimFixer, PhpdocTypesNoDuplicatesFixer, PhpdocTypesOrderFixer, PhpdocVarAnnotationCorrectOrderFixer, PhpdocVarWithoutNameFixer. - * Must run after ArrayIndentationFixer. - */ - public function getPriority(): int - { - return 27; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound($this->tokenKinds); - } - - protected function configurePostNormalisation(): void - { - $this->tokenKinds = [\T_DOC_COMMENT]; - if ('phpdocs_only' !== $this->configuration['comment_type']) { - $this->tokenKinds[] = \T_COMMENT; - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind($this->tokenKinds)) { - continue; - } - - $whitespace = ''; - $previousIndex = $index - 1; - - if ($tokens[$previousIndex]->isWhitespace()) { - $whitespace = $tokens[$previousIndex]->getContent(); - --$previousIndex; - } - - if ($tokens[$previousIndex]->isGivenKind(\T_OPEN_TAG)) { - $whitespace = Preg::replace('/\S/', '', $tokens[$previousIndex]->getContent()).$whitespace; - } - - if (!Preg::match('/\R(\h*)$/', $whitespace, $matches)) { - continue; - } - - if ($token->isGivenKind(\T_COMMENT) && 'all_multiline' !== $this->configuration['comment_type'] && Preg::match('/\R(?:\R|\s*[^\s\*])/', $token->getContent())) { - continue; - } - - $indentation = $matches[1]; - $lines = Preg::split('/\R/u', $token->getContent()); - - foreach ($lines as $lineNumber => $line) { - if (0 === $lineNumber) { - continue; - } - - $line = ltrim($line); - - if ($token->isGivenKind(\T_COMMENT) && (!isset($line[0]) || '*' !== $line[0])) { - continue; - } - - if (!isset($line[0])) { - $line = '*'; - } elseif ('*' !== $line[0]) { - $line = '* '.$line; - } - - $lines[$lineNumber] = $indentation.' '.$line; - } - - $tokens[$index] = new Token([$token->getId(), implode($lineEnding, $lines)]); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('comment_type', 'Whether to fix PHPDoc comments only (`phpdocs_only`), any multi-line comment whose lines all start with an asterisk (`phpdocs_like`) or any multi-line comment (`all_multiline`).')) - ->setAllowedValues(['phpdocs_only', 'phpdocs_like', 'all_multiline']) - ->setDefault('phpdocs_only') - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php deleted file mode 100644 index 1b655cb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php +++ /dev/null @@ -1,185 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * annotations?: list, - * case_sensitive?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * annotations: list, - * case_sensitive: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Graham Campbell - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class GeneralPhpdocAnnotationRemoveFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes configured annotations from PHPDoc.', - [ - new CodeSample( - <<<'PHP' - ['author']], - ), - new CodeSample( - <<<'PHP' - ['author'], 'case_sensitive' => false], - ), - new CodeSample( - <<<'PHP' - ['package', 'subpackage']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoEmptyPhpdocFixer, PhpdocAlignFixer, PhpdocLineSpanFixer, PhpdocSeparationFixer, PhpdocTrimFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 10; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if (0 === \count($this->configuration['annotations'])) { - return; - } - - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - $annotations = $this->getAnnotationsToRemove($doc); - - // nothing to do if there are no annotations - if (0 === \count($annotations)) { - continue; - } - - foreach ($annotations as $annotation) { - $annotation->remove(); - } - - if ('' === $doc->getContent()) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } else { - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('annotations', 'List of annotations to remove, e.g. `["author"]`.')) - ->setAllowedTypes(['string[]']) - ->setDefault([]) - ->getOption(), - (new FixerOptionBuilder('case_sensitive', 'Should annotations be case sensitive.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - /** - * @return list - */ - private function getAnnotationsToRemove(DocBlock $doc): array - { - if (true === $this->configuration['case_sensitive']) { - return $doc->getAnnotationsOfType($this->configuration['annotations']); - } - - $typesToSearchFor = array_map(static fn (string $type): string => strtolower($type), $this->configuration['annotations']); - - $annotations = []; - - foreach ($doc->getAnnotations() as $annotation) { - $tagName = strtolower($annotation->getTag()->getName()); - if (\in_array($tagName, $typesToSearchFor, true)) { - $annotations[] = $annotation; - } - } - - return $annotations; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocTagRenameFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocTagRenameFixer.php deleted file mode 100644 index 7bbb237..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocTagRenameFixer.php +++ /dev/null @@ -1,217 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case_sensitive?: bool, - * fix_annotation?: bool, - * fix_inline?: bool, - * replacements?: array, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case_sensitive: bool, - * fix_annotation: bool, - * fix_inline: bool, - * replacements: array, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class GeneralPhpdocTagRenameFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Renames PHPDoc tags.', - [ - new CodeSample(" [ - 'inheritDocs' => 'inheritDoc', - ], - ]), - new CodeSample(" [ - 'inheritDocs' => 'inheritDoc', - ], - 'fix_annotation' => false, - ]), - new CodeSample(" [ - 'inheritDocs' => 'inheritDoc', - ], - 'fix_inline' => false, - ]), - new CodeSample(" [ - 'inheritDocs' => 'inheritDoc', - ], - 'case_sensitive' => true, - ]), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAddMissingParamAnnotationFixer, PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - // must be run before PhpdocAddMissingParamAnnotationFixer - return 11; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('fix_annotation', 'Whether annotation tags should be fixed.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('fix_inline', 'Whether inline tags should be fixed.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('replacements', 'A map of tags to replace.')) - ->setAllowedTypes(['array']) - ->setNormalizer(static function (Options $options, array $value): array { - $normalizedValue = []; - - foreach ($value as $from => $to) { - if (!\is_string($from)) { - throw new InvalidOptionsException('Tag to replace must be a string.'); - } - - if (!Preg::match('#^\S+$#', $to) || str_contains($to, '*/')) { - throw new InvalidOptionsException(\sprintf( - 'Tag "%s" cannot be replaced by invalid tag "%s".', - $from, - $to, - )); - } - - $from = trim($from); - $to = trim($to); - - if (false === $options['case_sensitive']) { - $lowercaseFrom = strtolower($from); - - if (isset($normalizedValue[$lowercaseFrom]) && $normalizedValue[$lowercaseFrom] !== $to) { - throw new InvalidOptionsException(\sprintf( - 'Tag "%s" cannot be configured to be replaced with several different tags when case sensitivity is off.', - $from, - )); - } - - $from = $lowercaseFrom; - } - - $normalizedValue[$from] = $to; - } - - foreach ($normalizedValue as $from => $to) { - if (isset($normalizedValue[$to]) && $normalizedValue[$to] !== $to) { - throw new InvalidOptionsException(\sprintf( - 'Cannot change tag "%1$s" to tag "%2$s", as the tag "%2$s" is configured to be replaced to "%3$s".', - $from, - $to, - $normalizedValue[$to], - )); - } - } - - return $normalizedValue; - }) - ->setDefault([]) - ->getOption(), - (new FixerOptionBuilder('case_sensitive', 'Whether tags should be replaced only if they have exact same casing.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if (0 === \count($this->configuration['replacements'])) { - return; - } - - if (true === $this->configuration['fix_annotation']) { - $regex = true === $this->configuration['fix_inline'] - ? '/(["\'])[^\1]*\1(*SKIP)(*FAIL)|\b(?<=@)(?P%s)\b/' - : '/(["\'])[^\1]*\1(*SKIP)(*FAIL)|(?%s)(?!\})/'; - } else { - $regex = '/(?<={@)(?P%s)(?=[ \t}])/'; - } - - $caseInsensitive = false === $this->configuration['case_sensitive']; - $replacements = $this->configuration['replacements']; - $regex = \sprintf($regex, implode('|', array_keys($replacements))); - - if ($caseInsensitive) { - $regex .= 'i'; - } - - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, Preg::replaceCallback( - $regex, - static function (array $matches) use ($caseInsensitive, $replacements) { - \assert(isset($matches['tag'])); - if ($caseInsensitive) { - $matches['tag'] = strtolower($matches['tag']); - } - - \assert(isset($replacements[$matches['tag']])); - - return $replacements[$matches['tag']]; - }, - $token->getContent(), - )]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php deleted file mode 100644 index b2beb23..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php +++ /dev/null @@ -1,113 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoBlankLinesAfterPhpdocFixer extends AbstractFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should not be blank lines between docblock and the documented element.', - [ - new CodeSample( - <<<'PHP' - $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - // get the next non-whitespace token inc comments, provided - // that there is whitespace between it and the current token - $next = $tokens->getNextNonWhitespace($index); - if ($index + 2 === $next && false === $tokens[$next]->isGivenKind([ - \T_BREAK, - \T_COMMENT, - \T_CONTINUE, - \T_DECLARE, - \T_DOC_COMMENT, - \T_GOTO, - \T_INCLUDE, - \T_INCLUDE_ONCE, - \T_NAMESPACE, - \T_REQUIRE, - \T_REQUIRE_ONCE, - \T_RETURN, - \T_THROW, - \T_USE, - \T_WHITESPACE, - ])) { - $this->fixWhitespace($tokens, $index + 1); - } - } - } - - /** - * Cleanup a whitespace token. - */ - private function fixWhitespace(Tokens $tokens, int $index): void - { - $content = $tokens[$index]->getContent(); - // if there is more than one new line in the whitespace, then we need to fix it - if (substr_count($content, "\n") > 1) { - // the final bit of the whitespace must be the next statement's indentation - \assert(false !== strrpos($content, "\n")); - $tokens[$index] = new Token([\T_WHITESPACE, substr($content, strrpos($content, "\n"))]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php deleted file mode 100644 index ff8f823..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php +++ /dev/null @@ -1,87 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoEmptyPhpdocFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should not be empty PHPDoc blocks.', - [new CodeSample("isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - if (!Preg::match('#^/\*\*[\s\*]*\*/$#', $token->getContent())) { - continue; - } - - if ( - $tokens[$index - 1]->isGivenKind([\T_OPEN_TAG, \T_WHITESPACE]) - && substr_count($tokens[$index - 1]->getContent(), "\n") > 0 - && $tokens[$index + 1]->isGivenKind(\T_WHITESPACE) - && Preg::match('/^\R/', $tokens[$index + 1]->getContent()) - ) { - $tokens[$index - 1] = new Token([ - $tokens[$index - 1]->getId(), - Preg::replace('/\h*$/', '', $tokens[$index - 1]->getContent()), - ]); - - $newContent = Preg::replace('/^\R/', '', $tokens[$index + 1]->getContent()); - if ('' === $newContent) { - $tokens->clearAt($index + 1); - } else { - $tokens[$index + 1] = new Token([\T_WHITESPACE, $newContent]); - } - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php deleted file mode 100644 index 2be5eed..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php +++ /dev/null @@ -1,763 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\NamespacesAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _TypeInfo array{ - * types: list, - * allows_null: bool, - * } - * @phpstan-type _DocumentElement array{ - * index: int, - * type: 'classy'|'function'|'property', - * modifiers: array, - * types: array, - * } - * @phpstan-type _AutogeneratedInputConfiguration array{ - * allow_hidden_params?: bool, - * allow_mixed?: bool, - * allow_unused_params?: bool, - * remove_inheritdoc?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * allow_hidden_params: bool, - * allow_mixed: bool, - * allow_unused_params: bool, - * remove_inheritdoc: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoSuperfluousPhpdocTagsFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** @var _TypeInfo */ - private const NO_TYPE_INFO = [ - 'types' => [], - 'allows_null' => true, - ]; - private const SYMBOL_KINDS = [\T_CLASS, \T_INTERFACE, FCT::T_ENUM]; - - private const MODIFIER_KINDS = [ - \T_PRIVATE, - \T_PROTECTED, - \T_PUBLIC, - \T_ABSTRACT, - \T_FINAL, - \T_STATIC, - FCT::T_READONLY, - FCT::T_PRIVATE_SET, - FCT::T_PROTECTED_SET, - FCT::T_PUBLIC_SET, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes `@param`, `@return` and `@var` tags that don\'t provide any useful information.', - [ - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoEmptyPhpdocFixer, PhpdocAlignFixer, PhpdocLineSpanFixer, VoidReturnFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, FullyQualifiedStrictTypesFixer, PhpdocAddMissingParamAnnotationFixer, PhpdocIndentFixer, PhpdocReturnSelfReferenceFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocToParamTypeFixer, PhpdocToPropertyTypeFixer, PhpdocToReturnTypeFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 6; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - $namespaceUseAnalyzer = new NamespaceUsesAnalyzer(); - $shortNames = []; - $currentSymbol = null; - $currentSymbolEndIndex = null; - - foreach ($namespaceUseAnalyzer->getDeclarationsFromTokens($tokens) as $namespaceUseAnalysis) { - $shortNames[strtolower($namespaceUseAnalysis->getShortName())] = strtolower($namespaceUseAnalysis->getFullName()); - } - - foreach ($tokens as $index => $token) { - if ($index === $currentSymbolEndIndex) { - $currentSymbol = null; - $currentSymbolEndIndex = null; - - continue; - } - - if ($token->isGivenKind(\T_CLASS) && $tokensAnalyzer->isAnonymousClass($index)) { - continue; - } - - if ($token->isGivenKind(self::SYMBOL_KINDS)) { - $currentSymbol = $tokens[$tokens->getNextMeaningfulToken($index)]->getContent(); - $currentSymbolEndIndex = $tokens->findBlockEnd( - Tokens::BLOCK_TYPE_BRACE, - $tokens->getNextTokenOfKind($index, ['{']), - ); - - continue; - } - - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $documentedElement = $this->findDocumentedElement($tokens, $index); - - if (null === $documentedElement) { - continue; - } - - $content = $initialContent = $token->getContent(); - - if (true === $this->configuration['remove_inheritdoc']) { - $content = $this->removeSuperfluousInheritDoc($content); - } - - $namespace = (new NamespacesAnalyzer())->getNamespaceAt($tokens, $index)->getFullName(); - if ('' === $namespace) { - $namespace = null; - } - - if ('function' === $documentedElement['type']) { - $content = $this->fixFunctionDocComment($content, $tokens, $documentedElement, $namespace, $currentSymbol, $shortNames); - } elseif ('property' === $documentedElement['type']) { - $content = $this->fixPropertyDocComment($content, $tokens, $documentedElement, $namespace, $currentSymbol, $shortNames); - } elseif ('classy' === $documentedElement['type']) { - $content = $this->fixClassDocComment($content, $documentedElement); - } else { - throw new \RuntimeException('Unknown type.'); - } - - if ('' === $content) { - $content = '/** */'; - } - - if ($content !== $initialContent) { - $tokens[$index] = new Token([\T_DOC_COMMENT, $content]); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('allow_mixed', 'Whether type `mixed` without description is allowed (`true`) or considered superfluous (`false`).')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('remove_inheritdoc', 'Remove `@inheritDoc` tags.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('allow_hidden_params', 'Whether `param` annotation for hidden params in method signature are allowed.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(true, false)) - ->getOption(), - (new FixerOptionBuilder('allow_unused_params', 'Whether `param` annotation without actual signature is allowed (`true`) or considered superfluous (`false`).')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - /** - * @return null|_DocumentElement - */ - private function findDocumentedElement(Tokens $tokens, int $docCommentIndex): ?array - { - $typeKinds = [ - CT::T_NULLABLE_TYPE, - CT::T_ARRAY_TYPEHINT, - CT::T_TYPE_ALTERNATION, - CT::T_TYPE_INTERSECTION, - \T_STRING, - \T_NS_SEPARATOR, - ]; - - $element = [ - 'modifiers' => [], - 'types' => [], - ]; - - $index = $tokens->getNextMeaningfulToken($docCommentIndex); - - if (null !== $index && $tokens[$index]->isGivenKind(FCT::T_ATTRIBUTE)) { - do { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - $index = $tokens->getNextMeaningfulToken($index); - } while (null !== $index && $tokens[$index]->isGivenKind(\T_ATTRIBUTE)); - } - - while (true) { - if (null === $index) { - break; - } - - if ($tokens[$index]->isClassy()) { - $element['index'] = $index; - $element['type'] = 'classy'; - - return $element; - } - - if ($tokens[$index]->isGivenKind([\T_FUNCTION, \T_FN])) { - $element['index'] = $index; - $element['type'] = 'function'; - - return $element; - } - - if ($tokens[$index]->isGivenKind(\T_VARIABLE)) { - $element['index'] = $index; - $element['type'] = 'property'; - - return $element; - } - - if ($tokens[$index]->isGivenKind(self::MODIFIER_KINDS)) { - $element['modifiers'][$index] = $tokens[$index]; - } elseif ($tokens[$index]->isGivenKind($typeKinds)) { - $element['types'][$index] = $tokens[$index]; - } else { - break; - } - - $index = $tokens->getNextMeaningfulToken($index); - } - - return null; - } - - /** - * @param _DocumentElement&array{type: 'function', ...} $element - * @param null|non-empty-string $namespace - * @param array $shortNames - */ - private function fixFunctionDocComment( - string $content, - Tokens $tokens, - array $element, - ?string $namespace, - ?string $currentSymbol, - array $shortNames - ): string { - $docBlock = new DocBlock($content); - - $openingParenthesisIndex = $tokens->getNextTokenOfKind($element['index'], ['(']); - $closingParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openingParenthesisIndex); - - $argumentsInfo = $this->getArgumentsInfo( - $tokens, - $openingParenthesisIndex + 1, - $closingParenthesisIndex - 1, - ); - - foreach ($docBlock->getAnnotationsOfType('param') as $annotation) { - $argumentName = $annotation->getVariableName(); - - if (null === $argumentName) { - if ($this->annotationIsSuperfluous($annotation, self::NO_TYPE_INFO, $namespace, $currentSymbol, $shortNames)) { - $annotation->remove(); - } - - continue; - } - - if (!isset($argumentsInfo[$argumentName]) && true === $this->configuration['allow_unused_params']) { - continue; - } - - if (!isset($argumentsInfo[$argumentName]) || $this->annotationIsSuperfluous($annotation, $argumentsInfo[$argumentName], $namespace, $currentSymbol, $shortNames)) { - $annotation->remove(); - } - } - - $returnTypeInfo = $this->getReturnTypeInfo($tokens, $closingParenthesisIndex); - - foreach ($docBlock->getAnnotationsOfType('return') as $annotation) { - if ($this->annotationIsSuperfluous($annotation, $returnTypeInfo, $namespace, $currentSymbol, $shortNames)) { - $annotation->remove(); - } - } - - $this->removeSuperfluousModifierAnnotation($docBlock, $element); - - return $docBlock->getContent(); - } - - /** - * @param _DocumentElement&array{type: 'property', ...} $element - * @param null|non-empty-string $namespace - * @param array $shortNames - */ - private function fixPropertyDocComment( - string $content, - Tokens $tokens, - array $element, - ?string $namespace, - ?string $currentSymbol, - array $shortNames - ): string { - if (\count($element['types']) > 0) { - $propertyTypeInfo = $this->parseTypeHint($tokens, array_key_first($element['types'])); - } else { - $propertyTypeInfo = self::NO_TYPE_INFO; - } - - $docBlock = new DocBlock($content); - - foreach ($docBlock->getAnnotationsOfType('var') as $annotation) { - if ($this->annotationIsSuperfluous($annotation, $propertyTypeInfo, $namespace, $currentSymbol, $shortNames)) { - $annotation->remove(); - } - } - - return $docBlock->getContent(); - } - - /** - * @param _DocumentElement&array{type: 'classy', ...} $element - */ - private function fixClassDocComment(string $content, array $element): string - { - $docBlock = new DocBlock($content); - - $this->removeSuperfluousModifierAnnotation($docBlock, $element); - - return $docBlock->getContent(); - } - - /** - * @return array - */ - private function getArgumentsInfo(Tokens $tokens, int $start, int $end): array - { - $argumentsInfo = []; - - for ($index = $start; $index <= $end; ++$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_VARIABLE)) { - continue; - } - - $beforeArgumentIndex = $tokens->getPrevTokenOfKind($index, ['(', ',', [CT::T_ATTRIBUTE_CLOSE]]); - $typeIndex = $tokens->getNextMeaningfulToken($beforeArgumentIndex); - - if ($typeIndex !== $index) { - $info = $this->parseTypeHint($tokens, $typeIndex); - } else { - $info = self::NO_TYPE_INFO; - } - - if (!$info['allows_null']) { - $nextIndex = $tokens->getNextMeaningfulToken($index); - if ( - $tokens[$nextIndex]->equals('=') - && $tokens[$tokens->getNextMeaningfulToken($nextIndex)]->equals([\T_STRING, 'null'], false) - ) { - $info['allows_null'] = true; - } - } - - $argumentsInfo[$token->getContent()] = $info; - } - - // virtualise "hidden params" as if they would be regular ones - if (true === $this->configuration['allow_hidden_params']) { - $paramsString = $tokens->generatePartialCode($start, $end); - Preg::matchAll('|/\*[^$]*(\$\w+)[^*]*\*/|', $paramsString, $matches); - - foreach ($matches[1] as $match) { - $argumentsInfo[$match] = self::NO_TYPE_INFO; // HINT: one could try to extract actual type for hidden param, for now we only indicate it's existence - } - } - - return $argumentsInfo; - } - - /** - * @return _TypeInfo - */ - private function getReturnTypeInfo(Tokens $tokens, int $closingParenthesisIndex): array - { - $colonIndex = $tokens->getNextMeaningfulToken($closingParenthesisIndex); - - return $tokens[$colonIndex]->isGivenKind(CT::T_TYPE_COLON) - ? $this->parseTypeHint($tokens, $tokens->getNextMeaningfulToken($colonIndex)) - : self::NO_TYPE_INFO; - } - - /** - * @param int $index The index of the first token of the type hint - * - * @return _TypeInfo - */ - private function parseTypeHint(Tokens $tokens, int $index): array - { - $allowsNull = false; - - $types = []; - - while (true) { - $type = ''; - - if ($tokens[$index]->isGivenKind([FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET])) { - $index = $tokens->getNextMeaningfulToken($index); - } - - if ($tokens[$index]->isGivenKind([CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE])) { - $index = $tokens->getNextMeaningfulToken($index); - - continue; - } - - if ($tokens[$index]->isGivenKind(CT::T_NULLABLE_TYPE)) { - $allowsNull = true; - $index = $tokens->getNextMeaningfulToken($index); - } - - while ($tokens[$index]->isGivenKind([\T_NS_SEPARATOR, \T_STATIC, \T_STRING, CT::T_ARRAY_TYPEHINT, \T_CALLABLE])) { - $type .= $tokens[$index]->getContent(); - $index = $tokens->getNextMeaningfulToken($index); - } - - if ('' === $type) { - break; - } - - $types[] = $type; - - if (!$tokens[$index]->isGivenKind([CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION])) { - break; - } - - $index = $tokens->getNextMeaningfulToken($index); - } - - return [ - 'types' => $types, - 'allows_null' => $allowsNull, - ]; - } - - /** - * @param _TypeInfo $info - * @param null|non-empty-string $namespace - * @param array $symbolShortNames - */ - private function annotationIsSuperfluous( - Annotation $annotation, - array $info, - ?string $namespace, - ?string $currentSymbol, - array $symbolShortNames - ): bool { - if ('param' === $annotation->getTag()->getName()) { - $regex = '{\*\h*@param(?:\h+'.TypeExpression::REGEX_TYPES.')?(?!\S)(?:\h+(?:\&\h*)?(?:\.{3}\h*)?\$\S+)?(?:\s+(?(?!\*+\/)\S+))?}s'; - } elseif ('var' === $annotation->getTag()->getName()) { - $regex = '{\*\h*@var(?:\h+'.TypeExpression::REGEX_TYPES.')?(?!\S)(?:\h+\$\S+)?(?:\s+(?(?!\*\/)\S+))?}s'; - } else { - $regex = '{\*\h*@return(?:\h+'.TypeExpression::REGEX_TYPES.')?(?!\S)(?:\s+(?(?!\*\/)\S+))?}s'; - } - - if (!Preg::match($regex, $annotation->getContent(), $matches)) { - // Unable to match the annotation, it must be malformed or has unsupported format. - // Either way we don't want to tinker with it. - return false; - } - - if (isset($matches['description'])) { - return false; - } - - if (!isset($matches['types']) || '' === $matches['types']) { - // If there's no type info in the annotation, further checks make no sense, exit early. - return true; - } - - $annotationTypes = $this->toComparableNames($annotation->getTypes(), $namespace, $currentSymbol, $symbolShortNames); - - if (['null'] === $annotationTypes && ['null'] !== $info['types']) { - return false; - } - - if (['mixed'] === $annotationTypes && [] === $info['types']) { - return false === $this->configuration['allow_mixed']; - } - - $actualTypes = $info['types']; - - if ($info['allows_null']) { - $actualTypes[] = 'null'; - } - - $actualTypes = $this->toComparableNames($actualTypes, $namespace, $currentSymbol, $symbolShortNames); - - if ($annotationTypes === $actualTypes) { - return true; - } - - // retry comparison with annotation type unioned with null - // phpstan implies the null presence from the native type - $annotationTypes = array_merge($annotationTypes, ['null']); - sort($annotationTypes); - - return $actualTypes === $annotationTypes; - } - - /** - * Normalizes types to make them comparable. - * - * Converts given types to lowercase, replaces imports aliases with - * their matching FQCN, and finally sorts the result. - * - * @param list $types The types to normalize - * @param null|non-empty-string $namespace - * @param array $symbolShortNames The imports aliases - * - * @return list The normalized types - */ - private function toComparableNames(array $types, ?string $namespace, ?string $currentSymbol, array $symbolShortNames): array - { - if (isset($types[0][0]) && '?' === $types[0][0]) { - $types = [ - substr($types[0], 1), - 'null', - ]; - } - - $normalized = array_map( - function (string $type) use ($namespace, $currentSymbol, $symbolShortNames): string { - if (str_contains($type, '&')) { - $intersects = explode('&', $type); - - $intersects = $this->toComparableNames($intersects, $namespace, $currentSymbol, $symbolShortNames); - - return implode('&', $intersects); - } - - if ('self' === $type && null !== $currentSymbol) { - $type = $currentSymbol; - } - - $type = strtolower($type); - - if (isset($symbolShortNames[$type])) { - return $symbolShortNames[$type]; // always FQCN /wo leading backslash and in lower-case - } - - if (str_starts_with($type, '\\')) { - return substr($type, 1); - } - - if (null !== $namespace && !(new TypeAnalysis($type))->isReservedType()) { - $type = strtolower($namespace).'\\'.$type; - } - - return $type; - }, - $types, - ); - - sort($normalized); - - return $normalized; - } - - private function removeSuperfluousInheritDoc(string $docComment): string - { - return Preg::replace('~ - # $1: before @inheritDoc tag - ( - # beginning of comment or a PHPDoc tag - (?: - ^/\*\* - (?: - \R - [ \t]*(?:\*[ \t]*)? - )*? - | - @\N+ - ) - - # empty comment lines - (?: - \R - [ \t]*(?:\*[ \t]*?)? - )* - ) - - # spaces before @inheritDoc tag - [ \t]* - - # @inheritDoc tag - (?:@inheritDocs?|\{@inheritDocs?\}) - - # $2: after @inheritDoc tag - ( - # empty comment lines - (?: - \R - [ \t]*(?:\*[ \t]*)? - )* - - # a PHPDoc tag or end of comment - (?: - @\N+ - | - (?: - \R - [ \t]*(?:\*[ \t]*)? - )* - [ \t]*\*/$ - ) - ) - ~ix', '$1$2', $docComment); - } - - /** - * @param _DocumentElement $element - */ - private function removeSuperfluousModifierAnnotation(DocBlock $docBlock, array $element): void - { - foreach (['abstract' => \T_ABSTRACT, 'final' => \T_FINAL] as $annotationType => $modifierToken) { - $annotations = $docBlock->getAnnotationsOfType($annotationType); - - foreach ($element['modifiers'] as $token) { - if ($token->isGivenKind($modifierToken)) { - foreach ($annotations as $annotation) { - $annotation->remove(); - } - } - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php deleted file mode 100644 index 347274e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php +++ /dev/null @@ -1,309 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\Line; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * only_untyped?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * only_untyped: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocAddMissingParamAnnotationFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPDoc should contain `@param` for all params.', - [ - new CodeSample( - <<<'PHP' - true], - ), - new CodeSample( - <<<'PHP' - false], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoEmptyPhpdocFixer, NoSuperfluousPhpdocTagsFixer, PhpdocAlignFixer, PhpdocOrderFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, GeneralPhpdocTagRenameFixer, PhpdocIndentFixer, PhpdocNoAliasTagFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 10; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $argumentsAnalyzer = new ArgumentsAnalyzer(); - - for ($index = 0, $limit = $tokens->count(); $index < $limit; ++$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $tokenContent = $token->getContent(); - - if (str_contains(strtolower($tokenContent), strtolower('inheritdoc'))) { - continue; - } - - // ignore one-line phpdocs like `/** foo */`, as there is no place to put new annotations - if (!str_contains($tokenContent, "\n")) { - continue; - } - - $mainIndex = $index; - $index = $tokens->getNextMeaningfulToken($index); - - if (null === $index) { - return; - } - - while ($tokens[$index]->isGivenKind([ - \T_ABSTRACT, - \T_FINAL, - \T_PRIVATE, - \T_PROTECTED, - \T_PUBLIC, - \T_STATIC, - ])) { - $index = $tokens->getNextMeaningfulToken($index); - } - - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - continue; - } - - $openIndex = $tokens->getNextTokenOfKind($index, ['(']); - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openIndex); - - $arguments = []; - - foreach ($argumentsAnalyzer->getArguments($tokens, $openIndex, $index) as $start => $end) { - $argumentInfo = $this->prepareArgumentInformation($tokens, $start, $end); - - if (false === $this->configuration['only_untyped'] || '' === $argumentInfo['type']) { - $arguments[$argumentInfo['name']] = $argumentInfo; - } - } - - if (0 === \count($arguments)) { - continue; - } - - $doc = new DocBlock($tokenContent); - $lastParamLine = null; - - foreach ($doc->getAnnotationsOfType('param') as $annotation) { - $pregMatched = Preg::match('/^[^$]+(\$\w+).*$/s', $annotation->getContent(), $matches); - - if ($pregMatched) { - unset($arguments[$matches[1]]); - } - - $lastParamLine = max($lastParamLine, $annotation->getEnd()); - } - - if (0 === \count($arguments)) { - continue; - } - - $lines = $doc->getLines(); - $linesCount = \count($lines); - - \assert(isset($lines[$linesCount - 1])); - Preg::match('/^(\s*).*$/', $lines[$linesCount - 1]->getContent(), $matches); - \assert(isset($matches[1])); - $indent = $matches[1]; - - $newLines = []; - - foreach ($arguments as $argument) { - $type = '' !== $argument['type'] ? $argument['type'] : 'mixed'; - - if (!str_starts_with($type, '?') && 'null' === strtolower($argument['default'])) { - $type = 'null|'.$type; - } - - $newLines[] = new Line(\sprintf( - '%s* @param %s %s%s', - $indent, - $type, - $argument['name'], - $this->whitespacesConfig->getLineEnding(), - )); - } - - array_splice( - $lines, - $lastParamLine > 0 ? $lastParamLine + 1 : $linesCount - 1, - 0, - $newLines, - ); - - $tokens[$mainIndex] = new Token([\T_DOC_COMMENT, implode('', $lines)]); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('only_untyped', 'Whether to add missing `@param` annotations for untyped parameters only.')) - ->setDefault(true) - ->setAllowedTypes(['bool']) - ->getOption(), - ]); - } - - /** - * @return array{default: string, name: string, type: string} - */ - private function prepareArgumentInformation(Tokens $tokens, int $start, int $end): array - { - $info = [ - 'default' => '', - 'name' => '', - 'type' => '', - ]; - - $sawName = false; - - for ($index = $start; $index <= $end; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(FCT::T_ATTRIBUTE)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - - continue; - } - - if ( - $token->isComment() - || $token->isWhitespace() - || $token->isGivenKind([ - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, - FCT::T_READONLY, - FCT::T_PRIVATE_SET, - FCT::T_PROTECTED_SET, - FCT::T_PUBLIC_SET, - ]) - ) { - continue; - } - - if ($token->isGivenKind(\T_VARIABLE)) { - $sawName = true; - $info['name'] = $token->getContent(); - - continue; - } - - if ($token->equals('=')) { - continue; - } - - if ($sawName) { - $info['default'] .= $token->getContent(); - } elseif (!$token->equals('&')) { - if ($token->isGivenKind(\T_ELLIPSIS)) { - if ('' === $info['type']) { - $info['type'] = 'array'; - } else { - $info['type'] .= '[]'; - } - } else { - $info['type'] .= $token->getContent(); - } - } - } - - return $info; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php deleted file mode 100644 index 59af3b8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php +++ /dev/null @@ -1,513 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * align?: 'left'|'vertical', - * spacing?: array|int, - * tags?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * align: 'left'|'vertical', - * spacing: array|int, - * tags: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @author Sebastiaan Stok - * @author Graham Campbell - * @author Dariusz Rumiński - * @author Jakub Kwaśniewski - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocAlignFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const ALIGN_LEFT = 'left'; - - /** - * @internal - */ - public const ALIGN_VERTICAL = 'vertical'; - - private const DEFAULT_TAGS = [ - 'method', - 'param', - 'property', - 'return', - 'throws', - 'type', - 'var', - ]; - - private const TAGS_WITH_NAME = [ - 'param', - 'property', - 'property-read', - 'property-write', - 'phpstan-param', - 'phpstan-property', - 'phpstan-property-read', - 'phpstan-property-write', - 'phpstan-assert', - 'phpstan-assert-if-true', - 'phpstan-assert-if-false', - 'psalm-param', - 'psalm-param-out', - 'psalm-property', - 'psalm-property-read', - 'psalm-property-write', - 'psalm-assert', - 'psalm-assert-if-true', - 'psalm-assert-if-false', - ]; - - private const TAGS_WITH_METHOD_SIGNATURE = [ - 'method', - 'phpstan-method', - 'psalm-method', - ]; - - private const DEFAULT_SPACING = 1; - - private const DEFAULT_SPACING_KEY = '_default'; - - private string $regex; - - private string $regexCommentLine; - - private string $align; - - /** - * same spacing for all or specific for different tags. - * - * @var array|int - */ - private $spacing = 1; - - public function getDefinition(): FixerDefinitionInterface - { - $code = <<<'EOF' - self::ALIGN_VERTICAL]), - new CodeSample($code, ['align' => self::ALIGN_LEFT]), - new CodeSample($code, ['align' => self::ALIGN_LEFT, 'spacing' => 2]), - new CodeSample($code, ['align' => self::ALIGN_LEFT, 'spacing' => ['param' => 2]]), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, GeneralPhpdocAnnotationRemoveFixer, GeneralPhpdocTagRenameFixer, NoBlankLinesAfterPhpdocFixer, NoEmptyPhpdocFixer, NoSuperfluousPhpdocTagsFixer, PhpdocAddMissingParamAnnotationFixer, PhpdocAnnotationWithoutDotFixer, PhpdocArrayTypeFixer, PhpdocIndentFixer, PhpdocInlineTagNormalizerFixer, PhpdocLineSpanFixer, PhpdocListTypeFixer, PhpdocNoAccessFixer, PhpdocNoAliasTagFixer, PhpdocNoDuplicateTypesFixer, PhpdocNoEmptyReturnFixer, PhpdocNoPackageFixer, PhpdocNoUselessInheritdocFixer, PhpdocOrderByValueFixer, PhpdocOrderFixer, PhpdocParamOrderFixer, PhpdocReadonlyClassCommentToKeywordFixer, PhpdocReturnSelfReferenceFixer, PhpdocScalarFixer, PhpdocSeparationFixer, PhpdocSingleLineVarSpacingFixer, PhpdocSummaryFixer, PhpdocTagCasingFixer, PhpdocTagNoNamedArgumentsFixer, PhpdocTagTypeFixer, PhpdocToCommentFixer, PhpdocToParamTypeFixer, PhpdocToPropertyTypeFixer, PhpdocToReturnTypeFixer, PhpdocTrimConsecutiveBlankLineSeparationFixer, PhpdocTrimFixer, PhpdocTypesFixer, PhpdocTypesNoDuplicatesFixer, PhpdocTypesOrderFixer, PhpdocVarAnnotationCorrectOrderFixer, PhpdocVarWithoutNameFixer. - */ - public function getPriority(): int - { - /* - * Should be run after all other docblock fixers. This because they - * modify other annotations to change their type and or separation - * which totally change the behaviour of this fixer. It's important that - * annotations are of the correct type, and are grouped correctly - * before running this fixer. - */ - return -42; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function configurePostNormalisation(): void - { - $tagsWithNameToAlign = array_intersect($this->configuration['tags'], self::TAGS_WITH_NAME); - $tagsWithMethodSignatureToAlign = array_intersect($this->configuration['tags'], self::TAGS_WITH_METHOD_SIGNATURE); - $tagsWithoutNameToAlign = array_diff($this->configuration['tags'], $tagsWithNameToAlign, $tagsWithMethodSignatureToAlign); - - $indentRegex = '^(?P(?:\ {2}|\t)*)\ ?'; - - $types = []; - - // e.g. @param <$var> - if ([] !== $tagsWithNameToAlign) { - $types[] = '(?P'.implode('|', $tagsWithNameToAlign).')\s+(?P(?:'.TypeExpression::REGEX_TYPES.')?)\s*(?P(?:&|\.{3})?\$\S+)'; - } - - // e.g. @return - if ([] !== $tagsWithoutNameToAlign) { - $types[] = '(?P'.implode('|', $tagsWithoutNameToAlign).')\s+(?P(?:'.TypeExpression::REGEX_TYPES.')?)'; - } - - // e.g. @method - if ([] !== $tagsWithMethodSignatureToAlign) { - $types[] = '(?P'.implode('|', $tagsWithMethodSignatureToAlign).')(\s+(?Pstatic))?(\s+(?P(?:'.TypeExpression::REGEX_TYPES.')?))\s+(?P.+\))'; - } - - // optional - $desc = '(?:\s+(?P\V*))'; - - $this->regex = '/'.$indentRegex.'\*\h*@(?J)(?:'.implode('|', $types).')'.$desc.'\h*\r?$/'; - $this->regexCommentLine = '/'.$indentRegex.'\*(?!\h?+@)(?:\s+(?P\V+))(?align = $this->configuration['align']; - $this->spacing = $this->configuration['spacing']; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $content = $token->getContent(); - $docBlock = new DocBlock($content); - $this->fixDocBlock($docBlock); - $newContent = $docBlock->getContent(); - if ($newContent !== $content) { - $tokens[$index] = new Token([\T_DOC_COMMENT, $newContent]); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $allowPositiveIntegers = static function ($value) { - $spacings = \is_array($value) ? $value : [$value]; - foreach ($spacings as $val) { - if (\is_int($val) && $val <= 0) { - throw new InvalidOptionsException('The option "spacing" is invalid. All spacings must be greater than zero.'); - } - } - - return true; - }; - - $tags = new FixerOptionBuilder( - 'tags', - 'The tags that should be aligned. Allowed values are tags with name (`\''.implode('\', \'', self::TAGS_WITH_NAME).'\'`), tags with method signature (`\''.implode('\', \'', self::TAGS_WITH_METHOD_SIGNATURE).'\'`) and any custom tag with description (e.g. `@tag `).', - ); - $tags - ->setAllowedTypes(['string[]']) - ->setDefault(self::DEFAULT_TAGS) - ; - - $align = new FixerOptionBuilder('align', 'How comments should be aligned.'); - $align - ->setAllowedTypes(['string']) - ->setAllowedValues([self::ALIGN_LEFT, self::ALIGN_VERTICAL]) - ->setDefault(self::ALIGN_VERTICAL) - ; - - $spacing = new FixerOptionBuilder( - 'spacing', - 'Spacing between tag, hint, comment, signature, etc. You can set same spacing for all tags using a positive integer or different spacings for different tags using an associative array of positive integers `[\'tagA\' => spacingForA, \'tagB\' => spacingForB]`. If you want to define default spacing to more than 1 space use `_default` key in config array, e.g.: `[\'tagA\' => spacingForA, \'tagB\' => spacingForB, \'_default\' => spacingForAllOthers]`.', - ); - $spacing->setAllowedTypes(['int', 'array']) - ->setAllowedValues([$allowPositiveIntegers]) - ->setDefault(self::DEFAULT_SPACING) - ; - - return new FixerConfigurationResolver([$tags->getOption(), $align->getOption(), $spacing->getOption()]); - } - - private function fixDocBlock(DocBlock $docBlock): void - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - for ($i = 0, $l = \count($docBlock->getLines()); $i < $l; ++$i) { - $matches = $this->getMatches($docBlock->getLine($i)->getContent()); - - if (null === $matches) { - continue; - } - - $current = $i; - $items = [$matches]; - - while (true) { - if (null === $docBlock->getLine(++$i)) { - break 2; - } - - $matches = $this->getMatches($docBlock->getLine($i)->getContent(), true); - if (null === $matches) { - break; - } - - $items[] = $matches; - } - - // compute the max length of the tag, hint and variables - $hasStatic = false; - $tagMax = 0; - $hintMax = 0; - $varMax = 0; - - foreach ($items as $item) { - if (null === $item['tag']) { - continue; - } - - $hasStatic = $hasStatic || '' !== $item['static']; - $tagMax = max($tagMax, \strlen($item['tag'])); - $hintMax = max($hintMax, \strlen($item['hint'])); - $varMax = max($varMax, \strlen($item['var'])); - } - - $itemOpeningLine = null; - - $currTag = null; - $spacingForTag = $this->spacingForTag($currTag); - - // update - foreach ($items as $j => $item) { - \assert(isset($item['desc'])); - - if (null === $item['tag']) { - if ('@' === $item['desc'][0]) { - $line = $item['indent'].' * '.$item['desc']; - $docBlock->getLine($current + $j)->setContent($line.$lineEnding); - - continue; - } - - $extraIndent = 2 * $spacingForTag; - - if (\in_array($itemOpeningLine['tag'], self::TAGS_WITH_NAME, true) || \in_array($itemOpeningLine['tag'], self::TAGS_WITH_METHOD_SIGNATURE, true)) { - $extraIndent += $varMax + $spacingForTag; - } - - if ($hasStatic) { - $extraIndent += 7; // \strlen('static '); - } - - $line = $item['indent'] - .' * ' - .('' !== $itemOpeningLine['hint'] ? ' ' : '') - .$this->getIndent( - $tagMax + $hintMax + $extraIndent, - $this->getLeftAlignedDescriptionIndent($items, $j), - ) - .$item['desc']; - - $docBlock->getLine($current + $j)->setContent($line.$lineEnding); - - continue; - } - - $currTag = $item['tag']; - - $spacingForTag = $this->spacingForTag($currTag); - - $itemOpeningLine = $item; - - $line = $item['indent'] - .' * @' - .$item['tag']; - - if ($hasStatic) { - $line .= $this->getIndent( - $tagMax - \strlen($item['tag']) + $spacingForTag, - '' !== $item['static'] ? $spacingForTag : 0, - ) - .('' !== $item['static'] ? $item['static'] : $this->getIndent(6 /* \strlen('static') */, 0)); - $hintVerticalAlignIndent = $spacingForTag; - } else { - $hintVerticalAlignIndent = $tagMax - \strlen($item['tag']) + $spacingForTag; - } - - $line .= $this->getIndent( - $hintVerticalAlignIndent, - '' !== $item['hint'] ? $spacingForTag : 0, - ) - .$item['hint']; - - if ('' !== $item['var']) { - $line .= $this->getIndent((0 !== $hintMax ? $hintMax : -1) - mb_strlen($item['hint']) + $spacingForTag, $spacingForTag) - .$item['var'] - .( - '' !== $item['desc'] - ? $this->getIndent($varMax - \strlen($item['var']) + $spacingForTag, $spacingForTag).$item['desc'] - : '' - ); - } elseif ('' !== $item['desc']) { - $line .= $this->getIndent($hintMax - \strlen($item['hint']) + $spacingForTag, $spacingForTag).$item['desc']; - } - - $docBlock->getLine($current + $j)->setContent($line.$lineEnding); - } - } - } - - private function spacingForTag(?string $tag): int - { - return (\is_int($this->spacing)) - ? $this->spacing - : ($this->spacing[$tag ?? ''] ?? $this->spacing[self::DEFAULT_SPACING_KEY] ?? self::DEFAULT_SPACING); - } - - /** - * @TODO Introduce proper DTO instead of an array - * - * @return null|array{indent: null|string, tag: null|string, hint: string, var: null|string, static: string, desc?: null|string} - */ - private function getMatches(string $line, bool $matchCommentOnly = false): ?array - { - if (Preg::match($this->regex, $line, $matches)) { - if (isset($matches['tag2']) && '' !== $matches['tag2']) { - \assert(isset($matches['hint2'])); - $matches['tag'] = $matches['tag2']; - $matches['hint'] = $matches['hint2']; - $matches['var'] = ''; - } - - if (isset($matches['tag3']) && '' !== $matches['tag3']) { - \assert(isset($matches['hint3'], $matches['signature'], $matches['static'])); - $matches['tag'] = $matches['tag3']; - $matches['hint'] = $matches['hint3']; - $matches['var'] = $matches['signature']; - - // Since static can be both a return type declaration & a keyword that defines static methods - // we assume it's a type declaration when only one value is present - if ('' === $matches['hint'] && '' !== $matches['static']) { - $matches['hint'] = $matches['static']; - $matches['static'] = ''; - } - } - - if (isset($matches['hint'])) { - $matches['hint'] = trim($matches['hint']); - } - - $matches['static'] ??= ''; - - return $matches; - } - - if ($matchCommentOnly && Preg::match($this->regexCommentLine, $line, $matches)) { - $matches['tag'] = null; - $matches['var'] = ''; - $matches['hint'] = ''; - $matches['static'] = ''; - - return $matches; - } - - return null; - } - - private function getIndent(int $verticalAlignIndent, int $leftAlignIndent = 1): string - { - $indent = self::ALIGN_VERTICAL === $this->align ? $verticalAlignIndent : $leftAlignIndent; - - return str_repeat(' ', $indent); - } - - /** - * @param non-empty-list $items - */ - private function getLeftAlignedDescriptionIndent(array $items, int $index): int - { - if (self::ALIGN_LEFT !== $this->align) { - return 0; - } - - // Find last tagged line: - $item = null; - for (; $index >= 0; --$index) { - \assert(isset($items[$index])); - $item = $items[$index]; - if (null !== $item['tag']) { - break; - } - } - - // No last tag found — no indent: - if (null === $item) { - return 0; - } - - $spacingForTag = $this->spacingForTag($item['tag']); - - // Indent according to existing values: - return - $this->getSentenceIndent($item['static'], $spacingForTag) - + $this->getSentenceIndent($item['tag'], $spacingForTag) - + $this->getSentenceIndent($item['hint'], $spacingForTag) - + $this->getSentenceIndent($item['var'], $spacingForTag); - } - - /** - * Get indent for sentence. - */ - private function getSentenceIndent(?string $sentence, int $spacingForTag = 1): int - { - if (null === $sentence) { - return 0; - } - - $length = \strlen($sentence); - - return 0 === $length ? 0 : $length + $spacingForTag; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php deleted file mode 100644 index 991b616..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php +++ /dev/null @@ -1,131 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocAnnotationWithoutDotFixer extends AbstractFixer -{ - /** - * @var non-empty-list - */ - private array $tags = ['throws', 'return', 'param', 'internal', 'deprecated', 'var', 'type']; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPDoc annotation descriptions should not be a sentence.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - $annotations = $doc->getAnnotations(); - - if (0 === \count($annotations)) { - continue; - } - - foreach ($annotations as $annotation) { - if ( - !$annotation->getTag()->valid() || !\in_array($annotation->getTag()->getName(), $this->tags, true) - ) { - continue; - } - - $lineAfterAnnotation = $doc->getLine($annotation->getEnd() + 1); - if (null !== $lineAfterAnnotation) { - $lineAfterAnnotationTrimmed = ltrim($lineAfterAnnotation->getContent()); - if ('' === $lineAfterAnnotationTrimmed || !str_starts_with($lineAfterAnnotationTrimmed, '*')) { - // malformed PHPDoc, missing asterisk ! - continue; - } - } - - $content = $annotation->getContent(); - - if ( - !Preg::match('/[.。]\h*$/u', $content) - || Preg::match('/[.。](?!\h*$)/u', $content, $matches) - ) { - continue; - } - - $endLine = $doc->getLine($annotation->getEnd()); - $endLine->setContent(Preg::replace('/(?getContent())); - - $startLine = $doc->getLine($annotation->getStart()); - $optionalTypeRegEx = $annotation->supportTypes() - ? \sprintf('(?:%s\s+(?:\$\w+\s+)?)', preg_quote(implode('|', $annotation->getTypes()), '/')) - : ''; - $content = Preg::replaceCallback( - '/^(\s*\*\s*@\w+\s+'.$optionalTypeRegEx.')(\p{Lu}?(?=\p{Ll}|\p{Zs}))(.*)$/', - static fn (array $matches): string => $matches[1].mb_strtolower($matches[2]).$matches[3], - $startLine->getContent(), - 1, - ); - $startLine->setContent($content); - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocArrayTypeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocArrayTypeFixer.php deleted file mode 100644 index 54e82ae..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocArrayTypeFixer.php +++ /dev/null @@ -1,98 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractPhpdocTypesFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocArrayTypeFixer extends AbstractPhpdocTypesFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - public function isRisky(): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPDoc `array` type must be used instead of `T[]`.', - [ - new CodeSample( - <<<'PHP' - ', $level); - }, - $type, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php deleted file mode 100644 index f797279..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php +++ /dev/null @@ -1,149 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Utils; - -/** - * @author Ceeram - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocIndentFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Docblocks should have the same indentation as the documented subject.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; 0 <= $index; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - - // skip if there is no next token or if next token is block end `}` - if (null === $nextIndex || $tokens[$nextIndex]->equals('}')) { - continue; - } - - $prevIndex = $index - 1; - $prevToken = $tokens[$prevIndex]; - - // ignore inline docblocks - if ( - $prevToken->isGivenKind(\T_OPEN_TAG) - || ($prevToken->isWhitespace(" \t") && !$tokens[$index - 2]->isGivenKind(\T_OPEN_TAG)) - || $prevToken->equalsAny([';', ',', '{', '(']) - ) { - continue; - } - - if ($tokens[$nextIndex - 1]->isWhitespace()) { - $indent = Utils::calculateTrailingWhitespaceIndent($tokens[$nextIndex - 1]); - } else { - $indent = ''; - } - - $newPrevContent = $this->fixWhitespaceBeforeDocblock($prevToken->getContent(), $indent); - - $tokens[$index] = new Token([\T_DOC_COMMENT, $this->fixDocBlock($token->getContent(), $indent)]); - - if (!$prevToken->isWhitespace()) { - if ('' !== $indent) { - $tokens->insertAt($index, new Token([\T_WHITESPACE, $indent])); - } - } elseif ('' !== $newPrevContent) { - if ($prevToken->isArray()) { - $tokens[$prevIndex] = new Token([$prevToken->getId(), $newPrevContent]); - } else { - $tokens[$prevIndex] = new Token($newPrevContent); - } - } else { - $tokens->clearAt($prevIndex); - } - } - } - - /** - * Fix indentation of Docblock. - * - * @param string $content Docblock contents - * @param string $indent Indentation to apply - * - * @return string Dockblock contents including correct indentation - */ - private function fixDocBlock(string $content, string $indent): string - { - return ltrim(Preg::replace('/^\h*\*/m', $indent.' *', $content)); - } - - /** - * @param string $content Whitespace before Docblock - * @param string $indent Indentation of the documented subject - * - * @return string Whitespace including correct indentation for Dockblock after this whitespace - */ - private function fixWhitespaceBeforeDocblock(string $content, string $indent): string - { - return rtrim($content, " \t").$indent; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagNormalizerFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagNormalizerFixer.php deleted file mode 100644 index af43036..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagNormalizerFixer.php +++ /dev/null @@ -1,124 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * tags?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * tags: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocInlineTagNormalizerFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Fixes PHPDoc inline tags.', - [ - new CodeSample( - " ['TUTORIAL']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 0; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if (0 === \count($this->configuration['tags'])) { - return; - } - - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - // Move `@` inside tag, for example @{tag} -> {@tag}, replace multiple curly brackets, - // remove spaces between '{' and '@', remove white space between end - // of text and closing bracket and between the tag and inline comment. - $content = Preg::replaceCallback( - \sprintf( - '#(?:@{+|{+\h*@)\h*(%s)\b([^}]*)(?:}+)#i', - implode('|', array_map(static fn (string $tag): string => preg_quote($tag, '/'), $this->configuration['tags'])), - ), - static function (array $matches): string { - \assert(isset($matches[1], $matches[2])); - $doc = trim($matches[2]); - - if ('' === $doc) { - return '{@'.$matches[1].'}'; - } - - return '{@'.$matches[1].' '.$doc.'}'; - }, - $token->getContent(), - ); - - $tokens[$index] = new Token([\T_DOC_COMMENT, $content]); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('tags', 'The list of tags to normalize.')) - ->setAllowedTypes(['string[]']) - ->setDefault(['example', 'id', 'internal', 'inheritdoc', 'inheritdocs', 'link', 'source', 'toc', 'tutorial']) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php deleted file mode 100644 index e90c807..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php +++ /dev/null @@ -1,270 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case?: 'multi'|'single'|null, - * class?: 'multi'|'single'|null, - * const?: 'multi'|'single'|null, - * function?: 'multi'|'single'|null, - * method?: 'multi'|'single'|null, - * other?: 'multi'|'single'|null, - * property?: 'multi'|'single'|null, - * trait_import?: 'multi'|'single'|null, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case: 'multi'|'single'|null, - * class: 'multi'|'single'|null, - * const: 'multi'|'single'|null, - * function: 'multi'|'single'|null, - * method: 'multi'|'single'|null, - * other: 'multi'|'single'|null, - * property: 'multi'|'single'|null, - * trait_import: 'multi'|'single'|null, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gert de Pagter - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocLineSpanFixer extends AbstractFixer implements WhitespacesAwareFixerInterface, ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - private const PROPERTY_PART_KINDS = [ - \T_PUBLIC, - \T_PROTECTED, - \T_PRIVATE, - \T_FINAL, - \T_ABSTRACT, - \T_COMMENT, - \T_VAR, - \T_STATIC, - \T_STRING, - \T_NS_SEPARATOR, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, - CT::T_ARRAY_TYPEHINT, - CT::T_NULLABLE_TYPE, - CT::T_TYPE_ALTERNATION, - CT::T_TYPE_INTERSECTION, - FCT::T_ATTRIBUTE, - FCT::T_READONLY, - FCT::T_PRIVATE_SET, - FCT::T_PROTECTED_SET, - FCT::T_PUBLIC_SET, - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Changes doc blocks from single to multi line, or reversed.', - [ - new CodeSample(" 'single'], - ), - new CodeSample( - " 'multi'], - ), - new CodeSample( - <<<'PHP' - 'single'], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, GeneralPhpdocAnnotationRemoveFixer, NoSuperfluousPhpdocTagsFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 5; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('class', 'Whether class/interface/enum/trait blocks should be single or multi line.')) - ->setAllowedValues(['single', 'multi', null]) - ->setDefault('multi') - ->getOption(), - (new FixerOptionBuilder('trait_import', 'Whether trait usage blocks should be single or multi line.')) - ->setAllowedValues(['single', 'multi', null]) - ->setDefault(null) - ->getOption(), - (new FixerOptionBuilder('const', 'Whether const blocks should be single or multi line.')) - ->setAllowedValues(['single', 'multi', null]) - ->setDefault('multi') - ->getOption(), - (new FixerOptionBuilder('property', 'Whether property doc blocks should be single or multi line.')) - ->setAllowedValues(['single', 'multi', null]) - ->setDefault('multi') - ->getOption(), - (new FixerOptionBuilder('method', 'Whether method doc blocks should be single or multi line.')) - ->setAllowedValues(['single', 'multi', null]) - ->setDefault('multi') - ->getOption(), - (new FixerOptionBuilder('case', 'Whether enum case doc blocks should be single or multi line.')) - ->setAllowedValues(['single', 'multi', null]) - ->setDefault('multi') - ->getOption(), - (new FixerOptionBuilder('function', 'Whether function declaration doc blocks should be single or multi line.')) - ->setAllowedValues(['single', 'multi', null]) - ->setDefault('multi') - ->getOption(), - (new FixerOptionBuilder('other', 'Whether blocks for other code lines should be single or multi line.')) - ->setAllowedValues(['single', 'multi', null]) - ->setDefault(null) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $analyzer = new TokensAnalyzer($tokens); - - $handled = []; - foreach ($analyzer->getClassyElements() as $index => $element) { - $type = $element['type']; - $type = 'promoted_property' === $type ? 'property' : $type; - - $docIndex = $this->getDocBlockIndex($tokens, $index); - if (null === $docIndex) { - continue; - } - - $handled[$docIndex] = true; - $this->fixDocBlock($tokens, $docIndex, $type); - } - - if ( - !isset($this->configuration['class']) - && !isset($this->configuration['function']) - && !isset($this->configuration['other']) - ) { - return; - } - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if (isset($handled[$index])) { - continue; - } - - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_FUNCTION) && !$analyzer->isLambda($index)) { - $docIndex = $this->getDocBlockIndex($tokens, $index); - - if (null === $docIndex || isset($handled[$docIndex])) { - continue; - } - - $handled[$docIndex] = true; - $this->fixDocBlock($tokens, $docIndex, 'function'); - - continue; - } - - if ($token->isGivenKind(\T_DOC_COMMENT)) { - $this->fixDocBlock($tokens, $index, 'other'); - - continue; - } - - if (!$token->isClassy()) { - continue; - } - - $docIndex = $this->getDocBlockIndex($tokens, $index); - if (null === $docIndex) { - continue; - } - - $handled[$docIndex] = true; - $this->fixDocBlock($tokens, $docIndex, 'class'); - } - } - - private function getDocBlockIndex(Tokens $tokens, int $index): ?int - { - do { - $index = $tokens->getPrevNonWhitespace($index); - - if ($tokens[$index]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - } - } while ($tokens[$index]->isGivenKind(self::PROPERTY_PART_KINDS)); - - return $tokens[$index]->isGivenKind(\T_DOC_COMMENT) ? $index : null; - } - - private function fixDocBlock(Tokens $tokens, int $docIndex, string $type): void - { - if (!isset($this->configuration[$type])) { - return; - } - - $doc = new DocBlock($tokens[$docIndex]->getContent()); - - if ('multi' === $this->configuration[$type]) { - $doc->makeMultiLine(WhitespacesAnalyzer::detectIndent($tokens, $docIndex), $this->whitespacesConfig->getLineEnding()); - } elseif ('single' === $this->configuration[$type]) { - $doc->makeSingleLine(); - } - - $tokens->offsetSet($docIndex, new Token([\T_DOC_COMMENT, $doc->getContent()])); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocListTypeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocListTypeFixer.php deleted file mode 100644 index 6c8463c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocListTypeFixer.php +++ /dev/null @@ -1,75 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractPhpdocTypesFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocListTypeFixer extends AbstractPhpdocTypesFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - public function isRisky(): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPDoc `list` type must be used instead of `array` without a key.', - [ - new CodeSample( - <<<'PHP' - $x - * @param array> $y - */ - - PHP, - ), - ], - null, - 'Risky when `array` key should be present, but is missing.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer, PhpdocNoDuplicateTypesFixer, PhpdocTypesOrderFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocArrayTypeFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 1; - } - - protected function normalize(string $type): string - { - return Preg::replace('/\barray(?=<(?:[^,<]|<[^>]+>)+(>|{|\())/i', 'list', $type); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php deleted file mode 100644 index 4af0fc5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php +++ /dev/null @@ -1,75 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @author Graham Campbell - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocNoAccessFixer extends AbstractProxyFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - '`@access` annotations must be removed from PHPDoc.', - [ - new CodeSample( - <<<'PHP' - configure( - ['annotations' => ['access'], - 'case_sensitive' => true, - ], - ); - - return [$fixer]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php deleted file mode 100644 index 7f53cef..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php +++ /dev/null @@ -1,149 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\ConfigurationException\InvalidConfigurationException; -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; - -/** - * Case-sensitive tag replace fixer (does not process inline tags like {@inheritdoc}). - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * replacements?: array, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * replacements: array, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Graham Campbell - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocNoAliasTagFixer extends AbstractProxyFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'No alias PHPDoc tags should be used.', - [ - new CodeSample( - <<<'PHP' - ['link' => 'website']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAddMissingParamAnnotationFixer, PhpdocAlignFixer, PhpdocSingleLineVarSpacingFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return parent::getPriority(); - } - - protected function configurePostNormalisation(): void - { - \assert(isset($this->proxyFixers['general_phpdoc_tag_rename'])); - - /** @var GeneralPhpdocTagRenameFixer $generalPhpdocTagRenameFixer */ - $generalPhpdocTagRenameFixer = $this->proxyFixers['general_phpdoc_tag_rename']; - - try { - $generalPhpdocTagRenameFixer->configure([ - 'fix_annotation' => true, - 'fix_inline' => false, - 'replacements' => $this->configuration['replacements'], - 'case_sensitive' => true, - ]); - } catch (InvalidConfigurationException $exception) { - throw new InvalidFixerConfigurationException( - $this->getName(), - Preg::replace('/^\[.+?\] /', '', $exception->getMessage()), - $exception, - ); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('replacements', 'Mapping between replaced annotations with new ones.')) - ->setAllowedTypes(['array']) - ->setDefault( - Future::getV4OrV3(['const' => 'var'], []) - + [ - 'property-read' => 'property', - 'property-write' => 'property', - 'type' => 'var', - 'link' => 'see', - ], - ) - ->getOption(), - ]); - } - - protected function createProxyFixers(): array - { - return [new GeneralPhpdocTagRenameFixer()]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoDuplicateTypesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoDuplicateTypesFixer.php deleted file mode 100644 index 83fd6eb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoDuplicateTypesFixer.php +++ /dev/null @@ -1,105 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocNoDuplicateTypesFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes duplicate PHPDoc types.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - $annotations = $doc->getAnnotationsOfType(Annotation::TAGS_WITH_TYPES); - - if (0 === \count($annotations)) { - continue; - } - - foreach ($annotations as $annotation) { - // fix main types - if (null !== $annotation->getTypeExpression()) { - $annotation->setTypes( - $annotation->getTypeExpression() - ->removeDuplicateTypes() - ->getTypes(), - ); - } - - // fix @method parameters types - $line = $doc->getLine($annotation->getStart()); - $line->setContent(Preg::replaceCallback('/\*\h*@method\h+'.TypeExpression::REGEX_TYPES.'\h+\K(?&callable)/', static function (array $matches): string { - \assert(isset($matches[0])); - - $typeExpression = new TypeExpression($matches[0], null, []); - - return implode('|', $typeExpression->removeDuplicateTypes()->getTypes()); - }, $line->getContent())); - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php deleted file mode 100644 index 640b24d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php +++ /dev/null @@ -1,123 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocNoEmptyReturnFixer extends AbstractFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - '`@return void` and `@return null` annotations must be removed from PHPDoc.', - [ - new CodeSample( - <<<'PHP' - $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - $annotations = $doc->getAnnotationsOfType('return'); - - if (0 === \count($annotations)) { - continue; - } - - foreach ($annotations as $annotation) { - $this->fixAnnotation($annotation); - } - - $newContent = $doc->getContent(); - - if ($newContent === $token->getContent()) { - continue; - } - - if ('' === $newContent) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - continue; - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } - - /** - * Remove `return void` or `return null` annotations. - */ - private function fixAnnotation(Annotation $annotation): void - { - $types = $annotation->getNormalizedTypes(); - - if (1 === \count($types) && ('null' === $types[0] || 'void' === $types[0])) { - $annotation->remove(); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php deleted file mode 100644 index eb69e1e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @author Graham Campbell - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocNoPackageFixer extends AbstractProxyFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - '`@package` and `@subpackage` annotations must be removed from PHPDoc.', - [ - new CodeSample( - <<<'PHP' - configure([ - 'annotations' => ['package', 'subpackage'], - 'case_sensitive' => true, - ]); - - return [$fixer]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php deleted file mode 100644 index 9d7cd5f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php +++ /dev/null @@ -1,153 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Remove inheritdoc tags from classy that does not inherit. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocNoUselessInheritdocFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Classy that does not inherit must not have `@inheritdoc` tags.', - [ - new CodeSample("isTokenKindFound(\T_DOC_COMMENT) && $tokens->isAnyTokenKindsFound([\T_CLASS, \T_INTERFACE]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - // min. offset 4 as minimal candidate is @: isGivenKind([\T_CLASS, \T_INTERFACE])) { - $index = $this->fixClassy($tokens, $index); - } - } - } - - private function fixClassy(Tokens $tokens, int $index): int - { - // figure out where the classy starts - $classOpenIndex = $tokens->getNextTokenOfKind($index, ['{']); - - // figure out where the classy ends - $classEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $classOpenIndex); - - // is classy extending or implementing some interface - $extendingOrImplementing = $this->isExtendingOrImplementing($tokens, $index, $classOpenIndex); - - if (!$extendingOrImplementing) { - // PHPDoc of classy should not have inherit tag even when using traits as Traits cannot provide this information - $this->fixClassyOutside($tokens, $index); - } - - // figure out if the classy uses a trait - if (!$extendingOrImplementing && $this->isUsingTrait($tokens, $index, $classOpenIndex, $classEndIndex)) { - $extendingOrImplementing = true; - } - - $this->fixClassyInside($tokens, $classOpenIndex, $classEndIndex, !$extendingOrImplementing); - - return $classEndIndex; - } - - private function fixClassyInside(Tokens $tokens, int $classOpenIndex, int $classEndIndex, bool $fixThisLevel): void - { - for ($i = $classOpenIndex; $i < $classEndIndex; ++$i) { - if ($tokens[$i]->isGivenKind(\T_CLASS)) { - $i = $this->fixClassy($tokens, $i); - } elseif ($fixThisLevel && $tokens[$i]->isGivenKind(\T_DOC_COMMENT)) { - $this->fixToken($tokens, $i); - } - } - } - - private function fixClassyOutside(Tokens $tokens, int $classIndex): void - { - $previousIndex = $tokens->getPrevNonWhitespace($classIndex); - if ($tokens[$previousIndex]->isGivenKind(\T_DOC_COMMENT)) { - $this->fixToken($tokens, $previousIndex); - } - } - - private function fixToken(Tokens $tokens, int $tokenIndex): void - { - $count = 0; - $content = Preg::replaceCallback( - '#(\h*(?:@{*|{*\h*@)\h*inheritdoc\h*)([^}]*)((?:}*)\h*)#i', - static fn (array $matches): string => ' '.$matches[2], - $tokens[$tokenIndex]->getContent(), - -1, - $count, - ); - - if ($count > 0) { - $tokens[$tokenIndex] = new Token([\T_DOC_COMMENT, $content]); - } - } - - private function isExtendingOrImplementing(Tokens $tokens, int $classIndex, int $classOpenIndex): bool - { - for ($index = $classIndex; $index < $classOpenIndex; ++$index) { - if ($tokens[$index]->isGivenKind([\T_EXTENDS, \T_IMPLEMENTS])) { - return true; - } - } - - return false; - } - - private function isUsingTrait(Tokens $tokens, int $classIndex, int $classOpenIndex, int $classCloseIndex): bool - { - if ($tokens[$classIndex]->isGivenKind(\T_INTERFACE)) { - // cannot use Trait inside an interface - return false; - } - - $useIndex = $tokens->getNextTokenOfKind($classOpenIndex, [[CT::T_USE_TRAIT]]); - - return null !== $useIndex && $useIndex < $classCloseIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php deleted file mode 100644 index 51a86f9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php +++ /dev/null @@ -1,231 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * annotations?: list<'author'|'covers'|'coversNothing'|'dataProvider'|'depends'|'group'|'internal'|'method'|'mixin'|'property'|'property-read'|'property-write'|'requires'|'throws'|'uses'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * annotations: array{'author'?: 'author', 'covers'?: 'covers', 'coversNothing'?: 'coversnothing', 'dataProvider'?: 'dataprovider', 'depends'?: 'depends', 'group'?: 'group', 'internal'?: 'internal', 'method'?: 'method', 'mixin'?: 'mixin', 'property'?: 'property', 'property-read'?: 'property-read', 'property-write'?: 'property-write', 'requires'?: 'requires', 'throws'?: 'throws', 'uses'?: 'uses'}, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Filippo Tessarotto - * @author Andreas Möller - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocOrderByValueFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Order PHPDoc tags by value.', - [ - new CodeSample( - <<<'PHP' - [ - 'author', - ], - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpUnitFqcnAnnotationFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return -10; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAllTokenKindsFound([\T_CLASS, \T_DOC_COMMENT]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if ([] === $this->configuration['annotations']) { - return; - } - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - foreach ($this->configuration['annotations'] as $type => $typeLowerCase) { - $findPattern = \sprintf( - '/@%s\s.+@%s\s/s', - $type, - $type, - ); - - if ( - !$tokens[$index]->isGivenKind(\T_DOC_COMMENT) - || !Preg::match($findPattern, $tokens[$index]->getContent()) - ) { - continue; - } - - $docBlock = new DocBlock($tokens[$index]->getContent()); - - $annotations = $docBlock->getAnnotationsOfType($type); - $annotationMap = []; - - if (\in_array($type, ['property', 'property-read', 'property-write'], true)) { - $replacePattern = \sprintf( - '/(?s)\*\s*@%s\s+(?P.+\s+)?\$(?P\S+).*/', - $type, - ); - - $replacement = '\2'; - } elseif ('method' === $type) { - $replacePattern = '/(?s)\*\s*@method\s+(?P.+\s+)?(?P.+)\(.*/'; - $replacement = '\2'; - } else { - $replacePattern = \sprintf( - '/\*\s*@%s\s+(?P.+)/', - $typeLowerCase, - ); - - $replacement = '\1'; - } - - foreach ($annotations as $annotation) { - $rawContent = $annotation->getContent(); - - $comparableContent = Preg::replace( - $replacePattern, - $replacement, - strtolower(trim($rawContent)), - ); - - $annotationMap[$comparableContent] = $rawContent; - } - - $orderedAnnotationMap = $annotationMap; - - ksort($orderedAnnotationMap, \SORT_STRING); - - if ($orderedAnnotationMap === $annotationMap) { - continue; - } - - $lines = $docBlock->getLines(); - - foreach (array_reverse($annotations) as $annotation) { - array_splice( - $lines, - $annotation->getStart(), - $annotation->getEnd() - $annotation->getStart() + 1, - array_pop($orderedAnnotationMap), - ); - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, implode('', $lines)]); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $allowedValues = [ - 'author', - 'covers', - 'coversNothing', - 'dataProvider', - 'depends', - 'group', - 'internal', - 'method', - 'mixin', - 'property', - 'property-read', - 'property-write', - 'requires', - 'throws', - 'uses', - ]; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('annotations', 'List of annotations to order, e.g. `["covers"]`.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([ - new AllowedValueSubset($allowedValues), - ]) - ->setNormalizer(static function (Options $options, array $value): array { - $normalized = []; - - foreach ($value as $annotation) { - // since we will be using "strtolower" on the input annotations when building the sorting - // map we must match the type in lower case as well - $normalized[$annotation] = strtolower($annotation); - } - - return $normalized; - }) - ->setDefault([ - 'covers', - ]) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php deleted file mode 100644 index 46a29f5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php +++ /dev/null @@ -1,247 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Utils; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * order?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * order: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Graham Campbell - * @author Jakub Kwaśniewski - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocOrderFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** @var list */ - private array $configurationOrder; - - public function getDefinition(): FixerDefinitionInterface - { - $code = <<<'EOF' - ['param', 'return', 'throws']]), - new CodeSample($code, ['order' => ['param', 'throws', 'return']]), - new CodeSample($code, ['order' => ['param', 'custom', 'throws', 'return']]), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer, PhpdocSeparationFixer, PhpdocTrimFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocAddMissingParamAnnotationFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return -2; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('order', 'Sequence in which annotations in PHPDoc should be ordered.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([static function (array $order): bool { - if (\count($order) < 2) { - throw new InvalidOptionsException('The option "order" value is invalid. Minimum two tags are required.'); - } - - $unique = array_unique($order); - if (\count($order) !== \count($unique)) { - $duplicates = array_keys(array_filter(array_count_values($order), static fn (int $count): bool => $count > 1)); - - throw new InvalidOptionsException(\sprintf( - 'The option "order" value is invalid. Tag%s %s %s duplicated.', - \count($duplicates) > 1 ? 's' : '', - Utils::naturalLanguageJoin($duplicates), // @phpstan-ignore-line argument.type - \count($duplicates) > 1 ? 'are' : 'is', - )); - } - - return true; - }]) - ->setDefault(Future::getV4OrV3(['param', 'return', 'throws'], ['param', 'throws', 'return'])) - ->getOption(), - ]); - } - - protected function configurePostNormalisation(): void - { - $this->configurationOrder = []; - foreach ($this->configuration['order'] as $type) { - $this->configurationOrder[] = $type; - if (!\in_array('phpstan-'.$type, $this->configuration['order'], true)) { - $this->configurationOrder[] = 'phpstan-'.$type; - } - if (!\in_array('psalm-'.$type, $this->configuration['order'], true)) { - $this->configurationOrder[] = 'psalm-'.$type; - } - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - // assuming annotations are already grouped by tags - $content = $token->getContent(); - - // sort annotations - $successors = $this->configurationOrder; - while (\count($successors) >= 3) { - $predecessor = array_shift($successors); - $content = $this->moveAnnotationsBefore($predecessor, $successors, $content); - } - - // we're parsing the content last time to make sure the internal - // state of the docblock is correct after the modifications - $predecessors = $this->configurationOrder; - $last = array_pop($predecessors); - $content = $this->moveAnnotationsAfter($last, $predecessors, $content); - - // persist the content at the end - $tokens[$index] = new Token([\T_DOC_COMMENT, $content]); - } - } - - /** - * Move all given annotations in before given set of annotations. - * - * @param string $move Tag of annotations that should be moved - * @param list $before Tags of annotations that should moved annotations be placed before - */ - private function moveAnnotationsBefore(string $move, array $before, string $content): string - { - $doc = new DocBlock($content); - $toBeMoved = $doc->getAnnotationsOfType($move); - - // nothing to do if there are no annotations to be moved - if (0 === \count($toBeMoved)) { - return $content; - } - - $others = $doc->getAnnotationsOfType($before); - - if (0 === \count($others)) { - return $content; - } - - // get the index of the final line of the final toBoMoved annotation - $end = end($toBeMoved)->getEnd(); - - $line = $doc->getLine($end); - - // move stuff about if required - foreach ($others as $other) { - if ($other->getStart() < $end) { - // we're doing this to maintain the original line indices - $line->setContent($line->getContent().$other->getContent()); - $other->remove(); - } - } - - return $doc->getContent(); - } - - /** - * Move all given annotations after given set of annotations. - * - * @param string $move Tag of annotations that should be moved - * @param list $after Tags of annotations that should moved annotations be placed after - */ - private function moveAnnotationsAfter(string $move, array $after, string $content): string - { - $doc = new DocBlock($content); - $toBeMoved = $doc->getAnnotationsOfType($move); - - // nothing to do if there are no annotations to be moved - if (0 === \count($toBeMoved)) { - return $content; - } - - $others = $doc->getAnnotationsOfType($after); - - // nothing to do if there are no other annotations - if (0 === \count($others)) { - return $content; - } - - // get the index of the first line of the first toBeMoved annotation - $start = $toBeMoved[0]->getStart(); - $line = $doc->getLine($start); - - // move stuff about if required - foreach (array_reverse($others) as $other) { - if ($other->getEnd() > $start) { - // we're doing this to maintain the original line indices - $line->setContent($other->getContent().$line->getContent()); - $other->remove(); - } - } - - return $doc->getContent(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php deleted file mode 100644 index 5e5adb8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php +++ /dev/null @@ -1,273 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Jonathan Gruber - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocParamOrderFixer extends AbstractFixer -{ - private const PARAM_TAG = 'param'; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return parent::getPriority(); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Orders all `@param` annotations in DocBlocks according to method signature.', - [ - new CodeSample( - <<<'PHP' - $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - // Check for function / closure token - $nextFunctionToken = $tokens->getNextTokenOfKind($index, [[\T_FUNCTION], [\T_FN]]); - if (null === $nextFunctionToken) { - return; - } - - // Find start index of param block (opening parenthesis) - $paramBlockStart = $tokens->getNextTokenOfKind($index, ['(']); - if (null === $paramBlockStart) { - return; - } - - $doc = new DocBlock($token->getContent()); - $paramAnnotations = $doc->getAnnotationsOfType(self::PARAM_TAG); - - if ([] === $paramAnnotations) { - continue; - } - - $paramNames = $this->getFunctionParamNames($tokens, $paramBlockStart); - $doc = $this->rewriteDocBlock($doc, $paramNames, $paramAnnotations); - - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } - - /** - * @return list - */ - private function getFunctionParamNames(Tokens $tokens, int $paramBlockStart): array - { - $paramBlockEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $paramBlockStart); - - $paramNames = []; - for ( - $i = $tokens->getNextTokenOfKind($paramBlockStart, [[\T_VARIABLE]]); - null !== $i && $i < $paramBlockEnd; - $i = $tokens->getNextTokenOfKind($i, [[\T_VARIABLE]]) - ) { - $paramNames[] = $tokens[$i]; - } - - return $paramNames; - } - - /** - * Overwrite the param annotations in order. - * - * @param list $paramNames - * @param non-empty-list $paramAnnotations - */ - private function rewriteDocBlock(DocBlock $doc, array $paramNames, array $paramAnnotations): DocBlock - { - $orderedAnnotations = $this->sortParamAnnotations($paramNames, $paramAnnotations); - $otherAnnotations = $this->getOtherAnnotationsBetweenParams($doc, $paramAnnotations); - - // Append annotations found between param ones - if ([] !== $otherAnnotations) { - array_push($orderedAnnotations, ...$otherAnnotations); - } - - // Overwrite all annotations between first and last @param tag in order - $paramsStart = reset($paramAnnotations)->getStart(); - $paramsEnd = end($paramAnnotations)->getEnd(); - - foreach ($doc->getAnnotations() as $annotation) { - if ($annotation->getStart() < $paramsStart || $annotation->getEnd() > $paramsEnd) { - continue; - } - - $annotation->remove(); - $doc - ->getLine($annotation->getStart()) - ->setContent(current($orderedAnnotations)) - ; - - next($orderedAnnotations); - } - - return $doc; - } - - /** - * Sort the param annotations according to the function parameters. - * - * @param list $funcParamNames - * @param non-empty-list $paramAnnotations - * - * @return non-empty-list - */ - private function sortParamAnnotations(array $funcParamNames, array $paramAnnotations): array - { - $validParams = []; - foreach ($funcParamNames as $paramName) { - foreach ($this->findParamAnnotationByIdentifier($paramAnnotations, $paramName->getContent()) as $index => $annotation) { - // Found an exactly matching @param annotation - $validParams[$index] = $annotation->getContent(); - } - } - - // Detect superfluous annotations - $invalidParams = array_values( - array_diff_key($paramAnnotations, $validParams), - ); - - // Append invalid parameters to the (ordered) valid ones - $orderedParams = array_values($validParams); - foreach ($invalidParams as $params) { - $orderedParams[] = $params->getContent(); - } - \assert(\count($orderedParams) > 0); - - return $orderedParams; - } - - /** - * Fetch all annotations except the param ones. - * - * @param list $paramAnnotations - * - * @return list - */ - private function getOtherAnnotationsBetweenParams(DocBlock $doc, array $paramAnnotations): array - { - if (0 === \count($paramAnnotations)) { - return []; - } - - $paramsStart = reset($paramAnnotations)->getStart(); - $paramsEnd = end($paramAnnotations)->getEnd(); - - $otherAnnotations = []; - foreach ($doc->getAnnotations() as $annotation) { - if ($annotation->getStart() < $paramsStart || $annotation->getEnd() > $paramsEnd) { - continue; - } - - if (self::PARAM_TAG !== $annotation->getTag()->getName()) { - $otherAnnotations[] = $annotation->getContent(); - } - } - - return $otherAnnotations; - } - - /** - * Return the indices of the lines of a specific parameter annotation. - * - * @param list $paramAnnotations - * - * @return array Mapping of found indices and corresponding Annotations - */ - private function findParamAnnotationByIdentifier(array $paramAnnotations, string $identifier): array - { - $blockLevel = 0; - $blockMatch = false; - $blockIndices = []; - - $paramRegex = '/\*\h*@param\h*(?:|'.TypeExpression::REGEX_TYPES.'\h*)&?(?=\$\b)'.preg_quote($identifier).'\b/'; - - foreach ($paramAnnotations as $i => $param) { - $blockStart = Preg::match('/\s*{\s*/', $param->getContent()); - $blockEndMatches = Preg::matchAll('/}[\*\s\n]*/', $param->getContent()); - - if (0 === $blockLevel && Preg::match($paramRegex, $param->getContent())) { - if ($blockStart) { - $blockMatch = true; // Start of a nested block - } else { - return [$i => $param]; // Top level match - } - } - - if ($blockStart) { - ++$blockLevel; - } - - if (0 !== $blockEndMatches) { - $blockLevel -= $blockEndMatches; - } - - if ($blockMatch) { - $blockIndices[$i] = $param; - if (0 === $blockLevel) { - return $blockIndices; - } - } - } - - return []; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php deleted file mode 100644 index 98eaf8f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php +++ /dev/null @@ -1,238 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; -use PhpCsFixer\Utils; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * replacements?: array, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * replacements: array, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocReturnSelfReferenceFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var non-empty-list - */ - private const TO_TYPES = [ - '$this', - 'static', - 'self', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The type of `@return` annotations of methods returning a reference to itself must the configured one.', - [ - new CodeSample( - <<<'PHP' - ['this' => 'self']], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return \count($tokens) > 10 && $tokens->isAllTokenKindsFound([\T_DOC_COMMENT, \T_FUNCTION]) && $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds()); - } - - /** - * {@inheritdoc} - * - * Must run before NoSuperfluousPhpdocTagsFixer, PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 10; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - foreach ($tokensAnalyzer->getClassyElements() as $index => $element) { - if ('method' === $element['type']) { - $this->fixMethod($tokens, $index); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $default = [ - 'this' => '$this', - '@this' => '$this', - '$self' => 'self', - '@self' => 'self', - '$static' => 'static', - '@static' => 'static', - ]; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('replacements', 'Mapping between replaced return types with new ones.')) - ->setAllowedTypes(['array']) - ->setNormalizer(static function (Options $options, array $value) use ($default): array { - $normalizedValue = []; - - foreach ($value as $from => $to) { - if (\is_string($from)) { - $from = strtolower($from); - } - - if (!isset($default[$from])) { - throw new InvalidOptionsException(\sprintf( - 'Unknown key "%s", expected any of %s.', - \gettype($from).'#'.$from, - Utils::naturalLanguageJoin(array_keys($default)), - )); - } - - if (!\in_array($to, self::TO_TYPES, true)) { - throw new InvalidOptionsException(\sprintf( - 'Unknown value "%s", expected any of %s.', - \is_object($to) ? \get_class($to) : \gettype($to).(\is_resource($to) ? '' : '#'.$to), - Utils::naturalLanguageJoin(self::TO_TYPES), - )); - } - - $normalizedValue[$from] = $to; - } - - return $normalizedValue; - }) - ->setDefault($default) - ->getOption(), - ]); - } - - private function fixMethod(Tokens $tokens, int $index): void - { - // find PHPDoc of method (if any) - while (true) { - $tokenIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$tokenIndex]->isGivenKind([\T_STATIC, \T_FINAL, \T_ABSTRACT, \T_PRIVATE, \T_PROTECTED, \T_PUBLIC])) { - break; - } - - $index = $tokenIndex; - } - - $docIndex = $tokens->getPrevNonWhitespace($index); - if (!$tokens[$docIndex]->isGivenKind(\T_DOC_COMMENT)) { - return; - } - - // find @return - $docBlock = new DocBlock($tokens[$docIndex]->getContent()); - $returnsBlock = $docBlock->getAnnotationsOfType('return'); - - if (0 === \count($returnsBlock)) { - return; // no return annotation found - } - - $returnsBlock = $returnsBlock[0]; - $types = $returnsBlock->getTypes(); - - if (0 === \count($types)) { - return; // no return type(s) found - } - - $newTypes = []; - - foreach ($types as $type) { - $newTypes[] = $this->configuration['replacements'][strtolower($type)] ?? $type; - } - - if ($types === $newTypes) { - return; - } - - $returnsBlock->setTypes($newTypes); - $tokens[$docIndex] = new Token([\T_DOC_COMMENT, $docBlock->getContent()]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php deleted file mode 100644 index 5b84caf..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php +++ /dev/null @@ -1,152 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractPhpdocTypesFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * types?: list<'boolean'|'callback'|'double'|'integer'|'never-return'|'never-returns'|'no-return'|'real'|'str'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * types: list<'boolean'|'callback'|'double'|'integer'|'never-return'|'never-returns'|'no-return'|'real'|'str'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocScalarFixer extends AbstractPhpdocTypesFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * The types to fix. - */ - private const TYPES_MAP = [ - 'boolean' => 'bool', - 'callback' => 'callable', - 'double' => 'float', - 'integer' => 'int', - 'never-return' => 'never', - 'never-returns' => 'never', - 'no-return' => 'never', - 'real' => 'float', - 'str' => 'string', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Scalar types should always be written in the same form. `int` not `integer`, `bool` not `boolean`, `float` not `real` or `double`.', - [ - new CodeSample( - <<<'PHP' - ['boolean']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before GeneralPhpdocAnnotationRemoveFixer, GeneralPhpdocTagRenameFixer, NoBlankLinesAfterPhpdocFixer, NoEmptyPhpdocFixer, NoSuperfluousPhpdocTagsFixer, PhpdocAddMissingParamAnnotationFixer, PhpdocAlignFixer, PhpdocArrayTypeFixer, PhpdocInlineTagNormalizerFixer, PhpdocLineSpanFixer, PhpdocListTypeFixer, PhpdocNoAccessFixer, PhpdocNoAliasTagFixer, PhpdocNoDuplicateTypesFixer, PhpdocNoEmptyReturnFixer, PhpdocNoPackageFixer, PhpdocNoUselessInheritdocFixer, PhpdocOrderByValueFixer, PhpdocOrderFixer, PhpdocParamOrderFixer, PhpdocReadonlyClassCommentToKeywordFixer, PhpdocReturnSelfReferenceFixer, PhpdocSeparationFixer, PhpdocSingleLineVarSpacingFixer, PhpdocSummaryFixer, PhpdocTagCasingFixer, PhpdocTagNoNamedArgumentsFixer, PhpdocTagTypeFixer, PhpdocToParamTypeFixer, PhpdocToPropertyTypeFixer, PhpdocToReturnTypeFixer, PhpdocTrimConsecutiveBlankLineSeparationFixer, PhpdocTrimFixer, PhpdocTypesNoDuplicatesFixer, PhpdocTypesOrderFixer, PhpdocVarAnnotationCorrectOrderFixer, PhpdocVarWithoutNameFixer. - * Must run after PhpdocTypesFixer. - */ - public function getPriority(): int - { - /* - * Should be run before all other docblock fixers apart from the - * phpdoc_to_comment and phpdoc_indent fixer to make sure all fixers - * apply correct indentation to new code they add. This should run - * before alignment of params is done since this fixer might change - * the type and thereby un-aligning the params. We also must run after - * the phpdoc_types_fixer because it can convert types to things that - * we can fix. - */ - return 15; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $defaultTypes = ['boolean', 'callback', 'double', 'integer', 'real', 'str']; - $allowedTypes = array_keys(self::TYPES_MAP); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('types', 'A list of types to fix.')) - ->setAllowedValues([new AllowedValueSubset($allowedTypes)]) - ->setDefault(Future::getV4OrV3($allowedTypes, $defaultTypes)) - ->getOption(), - ]); - } - - protected function normalize(string $type): string - { - $suffix = ''; - while (str_ends_with($type, '[]')) { - $type = substr($type, 0, -2); - $suffix .= '[]'; - } - - if (\in_array($type, $this->configuration['types'], true)) { - $type = self::TYPES_MAP[$type]; - } - - return $type.$suffix; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php deleted file mode 100644 index db7de52..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php +++ /dev/null @@ -1,336 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * groups?: list>, - * skip_unlisted_annotations?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * groups: list>, - * skip_unlisted_annotations: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Graham Campbell - * @author Jakub Kwaśniewski - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocSeparationFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - * - * @var non-empty-list> - */ - public const OPTION_GROUPS_DEFAULT = [ - ['author', 'copyright', 'license'], - ['category', 'package', 'subpackage'], - ['property', 'property-read', 'property-write'], - ['deprecated', 'link', 'see', 'since'], - ]; - - /** - * @var list> - */ - private array $groups; - - public function getDefinition(): FixerDefinitionInterface - { - $code = <<<'EOF' - [ - ['deprecated', 'link', 'see', 'since'], - ['author', 'copyright', 'license'], - ['category', 'package', 'subpackage'], - ['property', 'property-read', 'property-write'], - ['param', 'return'], - ]]), - new CodeSample($code, ['groups' => [ - ['author', 'throws', 'custom'], - ['return', 'param'], - ]]), - new CodeSample( - <<<'EOF' - [['ORM\*'], ['Assert\*']]], - ), - new CodeSample($code, ['skip_unlisted_annotations' => true]), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, GeneralPhpdocAnnotationRemoveFixer, PhpUnitAttributesFixer, PhpUnitInternalClassFixer, PhpUnitSizeClassFixer, PhpUnitTestClassRequiresCoversFixer, PhpdocIndentFixer, PhpdocNoAccessFixer, PhpdocNoEmptyReturnFixer, PhpdocNoPackageFixer, PhpdocOrderFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return -3; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function configurePostNormalisation(): void - { - $this->groups = $this->configuration['groups']; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - $this->fixDescription($doc); - $this->fixAnnotations($doc); - - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $allowTagToBelongToOnlyOneGroup = static function (array $groups): bool { - $tags = []; - foreach ($groups as $groupIndex => $group) { - foreach ($group as $member) { - if (isset($tags[$member])) { - if ($groupIndex === $tags[$member]) { - throw new InvalidOptionsException( - 'The option "groups" value is invalid. ' - .'The "'.$member.'" tag is specified more than once.', - ); - } - - throw new InvalidOptionsException( - 'The option "groups" value is invalid. ' - .'The "'.$member.'" tag belongs to more than one group.', - ); - } - $tags[$member] = $groupIndex; - } - } - - return true; - }; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('groups', 'Sets of annotation types to be grouped together. Use `*` to match any tag character.')) - ->setAllowedTypes(['string[][]']) - ->setDefault(self::OPTION_GROUPS_DEFAULT) - ->setAllowedValues([$allowTagToBelongToOnlyOneGroup]) - ->getOption(), - (new FixerOptionBuilder('skip_unlisted_annotations', 'Whether to skip annotations that are not listed in any group.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(true, false)) - ->getOption(), - ]); - } - - /** - * Make sure the description is separated from the annotations. - */ - private function fixDescription(DocBlock $doc): void - { - foreach ($doc->getLines() as $index => $line) { - if ($line->containsATag()) { - break; - } - - if ($line->containsUsefulContent()) { - $next = $doc->getLine($index + 1); - - if (null !== $next && $next->containsATag()) { - $line->addBlank(); - - break; - } - } - } - } - - /** - * Make sure the annotations are correctly separated. - */ - private function fixAnnotations(DocBlock $doc): void - { - foreach ($doc->getAnnotations() as $index => $annotation) { - $next = $doc->getAnnotation($index + 1); - - if (null === $next) { - break; - } - - $shouldBeTogether = $this->shouldBeTogether($annotation, $next, $this->groups); - - if (true === $shouldBeTogether) { - $this->ensureAreTogether($doc, $annotation, $next); - } elseif (false === $shouldBeTogether || false === $this->configuration['skip_unlisted_annotations']) { - $this->ensureAreSeparate($doc, $annotation, $next); - } - } - } - - /** - * Force the given annotations to immediately follow each other. - */ - private function ensureAreTogether(DocBlock $doc, Annotation $first, Annotation $second): void - { - $pos = $first->getEnd(); - $final = $second->getStart(); - - for (++$pos; $pos < $final; ++$pos) { - $doc->getLine($pos)->remove(); - } - } - - /** - * Force the given annotations to have one empty line between each other. - */ - private function ensureAreSeparate(DocBlock $doc, Annotation $first, Annotation $second): void - { - $pos = $first->getEnd(); - $final = $second->getStart() - 1; - - // check if we need to add a line, or need to remove one or more lines - if ($pos === $final) { - $doc->getLine($pos)->addBlank(); - - return; - } - - for (++$pos; $pos < $final; ++$pos) { - $doc->getLine($pos)->remove(); - } - } - - /** - * @param list> $groups - */ - private function shouldBeTogether(Annotation $first, Annotation $second, array $groups): ?bool - { - $firstName = $this->tagName($first); - $secondName = $this->tagName($second); - - // A tag could not be read. - if (null === $firstName || null === $secondName) { - return null; - } - - if ($firstName === $secondName) { - return true; - } - - foreach ($groups as $group) { - $firstTagIsInGroup = $this->isInGroup($firstName, $group); - $secondTagIsInGroup = $this->isInGroup($secondName, $group); - - if ($firstTagIsInGroup) { - return $secondTagIsInGroup; - } - - if ($secondTagIsInGroup) { - return false; - } - } - - return null; - } - - private function tagName(Annotation $annotation): ?string - { - Preg::match('/@([a-zA-Z0-9_\\\-]+(?=\s|$|\())/', $annotation->getContent(), $matches); - - return $matches[1] ?? null; - } - - /** - * @param list $group - */ - private function isInGroup(string $tag, array $group): bool - { - foreach ($group as $tagInGroup) { - $tagInGroup = str_replace('*', '\*', $tagInGroup); - $tagInGroup = preg_quote($tagInGroup, '/'); - $tagInGroup = str_replace('\\\\\*', '.*?', $tagInGroup); - - if (Preg::match("/^{$tagInGroup}$/", $tag)) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php deleted file mode 100644 index 0dc2f97..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for part of rule defined in PSR5 ¶7.22. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocSingleLineVarSpacingFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Single line `@var` PHPDoc should have proper spacing.', - [new CodeSample("isAnyTokenKindsFound([\T_COMMENT, \T_DOC_COMMENT]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isComment()) { - continue; - } - - $content = $token->getContent(); - $fixedContent = $this->fixTokenContent($content); - - if ($content !== $fixedContent) { - $tokens[$index] = new Token([\T_DOC_COMMENT, $fixedContent]); - } - } - } - - private function fixTokenContent(string $content): string - { - return Preg::replaceCallback( - '#^/\*\*\h*@var\h+(\S+)\h*(\$\S+)?\h*([^\n]*)\*/$#', - static function (array $matches) { - $content = '/** @var'; - - for ($i = 1, $m = \count($matches); $i < $m; ++$i) { - \assert(isset($matches[$i])); - if ('' !== $matches[$i]) { - $content .= ' '.$matches[$i]; - } - } - - return rtrim($content).' */'; - }, - $content, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php deleted file mode 100644 index e83b782..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php +++ /dev/null @@ -1,107 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\ShortDescription; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocSummaryFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPDoc summary should end in either a full stop, exclamation mark, or question mark.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - $end = (new ShortDescription($doc))->getEnd(); - - if (null !== $end) { - $line = $doc->getLine($end); - $content = rtrim($line->getContent()); - - if ( - // final line of Description is NOT properly formatted - !$this->isCorrectlyFormatted($content) - // and first line of Description, if different than final line, does NOT indicate a list - && (1 === $end || ($doc->isMultiLine() && ':' !== substr(rtrim($doc->getLine(1)->getContent()), -1))) - ) { - $line->setContent($content.'.'.$this->whitespacesConfig->getLineEnding()); - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } - } - } - - /** - * Is the last line of the short description correctly formatted? - */ - private function isCorrectlyFormatted(string $content): bool - { - if (str_contains(strtolower($content), strtolower('{@inheritdoc}'))) { - return true; - } - - return $content !== rtrim($content, '.:。!?¡¿!?'); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagCasingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagCasingFixer.php deleted file mode 100644 index ad8a184..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagCasingFixer.php +++ /dev/null @@ -1,113 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\ConfigurationException\InvalidConfigurationException; -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * tags?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * tags: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocTagCasingFixer extends AbstractProxyFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Fixes casing of PHPDoc tags.', - [ - new CodeSample(" ['foo'], - ]), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return parent::getPriority(); - } - - protected function configurePostNormalisation(): void - { - $replacements = []; - foreach ($this->configuration['tags'] as $tag) { - $replacements[$tag] = $tag; - } - - \assert(isset($this->proxyFixers['general_phpdoc_tag_rename'])); - - /** @var GeneralPhpdocTagRenameFixer $generalPhpdocTagRenameFixer */ - $generalPhpdocTagRenameFixer = $this->proxyFixers['general_phpdoc_tag_rename']; - - try { - $generalPhpdocTagRenameFixer->configure([ - 'case_sensitive' => false, - 'fix_annotation' => true, - 'fix_inline' => true, - 'replacements' => $replacements, - ]); - } catch (InvalidConfigurationException $exception) { - throw new InvalidFixerConfigurationException( - $this->getName(), - Preg::replace('/^\[.+?\] /', '', $exception->getMessage()), - $exception, - ); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('tags', 'List of tags to fix with their expected casing.')) - ->setAllowedTypes(['string[]']) - ->setDefault(['inheritDoc']) - ->getOption(), - ]); - } - - protected function createProxyFixers(): array - { - return [new GeneralPhpdocTagRenameFixer()]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagNoNamedArgumentsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagNoNamedArgumentsFixer.php deleted file mode 100644 index 4931037..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagNoNamedArgumentsFixer.php +++ /dev/null @@ -1,178 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\DocBlockAnnotationTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\FullyQualifiedNameAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * description?: string, - * fix_attribute?: bool, - * fix_internal?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * description: string, - * fix_attribute: bool, - * fix_internal: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocTagNoNamedArgumentsFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - use DocBlockAnnotationTrait; - - public function getDefinition(): FixerDefinitionInterface - { - $code - = <<<'PHP' - 'Parameter names are not covered by the backward compatibility promise.']), - ], - ); - } - - public function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('description', 'Description of the tag.')) - ->setAllowedTypes(['string']) - ->setDefault('') - ->getOption(), - (new FixerOptionBuilder('fix_attribute', 'Whether to fix attribute classes.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('fix_internal', 'Whether to fix internal elements (marked with `@internal`).')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds()); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if (!$tokens[$index]->isClassy()) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - \assert(\is_int($prevIndex)); - - if ($tokens[$prevIndex]->isGivenKind(\T_NEW)) { - continue; - } - - if (!$this->configuration['fix_attribute'] && self::isAttributeClass($tokens, $prevIndex)) { - continue; - } - - $this->ensureIsDocBlockWithAnnotation( - $tokens, - $index, - 'no-named-arguments', - $this->configuration['fix_internal'] ? ['no-named-arguments'] : ['internal', 'no-named-arguments'], - [], - ); - - $docBlockIndex = $tokens->getPrevTokenOfKind($index + 2, [[\T_DOC_COMMENT]]); - \assert(\is_int($docBlockIndex)); - - $content = $tokens[$docBlockIndex]->getContent(); - - $newContent = Preg::replace('/@no-named-arguments.*\R/', rtrim('@no-named-arguments '.$this->configuration['description']).$this->whitespacesConfig->getLineEnding(), $content); - - if ($newContent !== $content) { - $tokens[$docBlockIndex] = new Token([\T_DOC_COMMENT, $newContent]); - } - } - } - - private static function isAttributeClass(Tokens $tokens, int $index): bool - { - while ($tokens[$index]->isGivenKind([\T_FINAL, FCT::T_READONLY])) { - $index = $tokens->getPrevMeaningfulToken($index); - \assert(\is_int($index)); - } - - if (!$tokens[$index]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - return false; - } - - $fullyQualifiedNameAnalyzer = new FullyQualifiedNameAnalyzer($tokens); - - foreach (AttributeAnalyzer::collect($tokens, $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $index)) as $attributeAnalysis) { - foreach ($attributeAnalysis->getAttributes() as $attribute) { - $attributeName = strtolower($fullyQualifiedNameAnalyzer->getFullyQualifiedName($attribute['name'], $attribute['start'], NamespaceUseAnalysis::TYPE_CLASS)); - if ('attribute' === $attributeName) { - return true; - } - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagTypeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagTypeFixer.php deleted file mode 100644 index 85cff39..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagTypeFixer.php +++ /dev/null @@ -1,219 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * tags?: array, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * tags: array, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocTagTypeFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const TAG_REGEX = '/^(?: - (? - (?:@(?.+?)(?:\s.+)?) - ) - | - {(? - (?:@(?.+?)(?:\s.+)?) - )} - )$/x'; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Forces PHPDoc tags to be either regular annotations or inline.', - [ - new CodeSample( - " ['inheritdoc' => 'inline']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 0; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if (0 === \count($this->configuration['tags'])) { - return; - } - - $regularExpression = \sprintf( - '/({?@(?:%s).*?(?:(?=\s\*\/)|(?=\n)}?))/i', - implode('|', array_map( - static fn (string $tag): string => preg_quote($tag, '/'), - array_keys($this->configuration['tags']), - )), - ); - - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $parts = Preg::split( - $regularExpression, - $token->getContent(), - -1, - \PREG_SPLIT_DELIM_CAPTURE, - ); - - for ($i = 1, $max = \count($parts) - 1; $i < $max; $i += 2) { - \assert(isset($parts[$i])); - if (!Preg::match(self::TAG_REGEX, $parts[$i], $matches)) { - continue; - } - - if ('' !== $matches['tag']) { - $tag = $matches['tag']; - $tagName = $matches['tag_name']; - } else { - $tag = $matches['inlined_tag']; - $tagName = $matches['inlined_tag_name']; - } - - $tagName = strtolower($tagName); - if (!isset($this->configuration['tags'][$tagName])) { - continue; - } - - if ('inline' === $this->configuration['tags'][$tagName]) { - $parts[$i] = '{'.$tag.'}'; - - continue; - } - - if (!$this->tagIsSurroundedByText($parts, $i)) { - $parts[$i] = $tag; - } - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, implode('', $parts)]); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('tags', 'The list of tags to fix.')) - ->setAllowedTypes(["array"]) - ->setAllowedValues([static function (array $value): bool { - foreach ($value as $type) { - if (!\in_array($type, ['annotation', 'inline'], true)) { - throw new InvalidOptionsException("Unknown tag type \"{$type}\"."); - } - } - - return true; - }]) - ->setDefault([ - 'api' => 'annotation', - 'author' => 'annotation', - 'copyright' => 'annotation', - 'deprecated' => 'annotation', - 'example' => 'annotation', - 'global' => 'annotation', - 'inheritDoc' => 'annotation', - 'internal' => 'annotation', - 'license' => 'annotation', - 'method' => 'annotation', - 'package' => 'annotation', - 'param' => 'annotation', - 'property' => 'annotation', - 'return' => 'annotation', - 'see' => 'annotation', - 'since' => 'annotation', - 'throws' => 'annotation', - 'todo' => 'annotation', - 'uses' => 'annotation', - 'var' => 'annotation', - 'version' => 'annotation', - ]) - ->setNormalizer(static function (Options $options, array $value): array { - $normalized = []; - - foreach ($value as $tag => $type) { - $normalized[strtolower($tag)] = $type; - } - - return $normalized; - }) - ->getOption(), - ]); - } - - /** - * @param array $parts - */ - private function tagIsSurroundedByText(array $parts, int $index): bool - { - \assert(isset($parts[$index - 1], $parts[$index + 1])); - - return - Preg::match('/(^|\R)\h*[^@\s]\N*/', $this->cleanComment($parts[$index - 1])) - || Preg::match('/^.*?\R\s*[^@\s]/', $this->cleanComment($parts[$index + 1])); - } - - private function cleanComment(string $comment): string - { - $comment = Preg::replace('/^\/\*\*|\*\/$/', '', $comment); - - return Preg::replace('/(\R)(\h*\*)?\h*/', '$1', $comment); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php deleted file mode 100644 index 284631b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php +++ /dev/null @@ -1,194 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\CommentsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * allow_before_return_statement?: bool, - * ignored_tags?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * allow_before_return_statement: bool, - * ignored_tags: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Ceeram - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocToCommentFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var list - */ - private array $ignoredTags = []; - private bool $allowBeforeReturnStatement = false; - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - /** - * {@inheritdoc} - * - * Must run before GeneralPhpdocAnnotationRemoveFixer, GeneralPhpdocTagRenameFixer, NoBlankLinesAfterPhpdocFixer, NoEmptyCommentFixer, NoEmptyPhpdocFixer, NoSuperfluousPhpdocTagsFixer, PhpdocAddMissingParamAnnotationFixer, PhpdocAlignFixer, PhpdocAnnotationWithoutDotFixer, PhpdocArrayTypeFixer, PhpdocIndentFixer, PhpdocInlineTagNormalizerFixer, PhpdocLineSpanFixer, PhpdocListTypeFixer, PhpdocNoAccessFixer, PhpdocNoAliasTagFixer, PhpdocNoDuplicateTypesFixer, PhpdocNoEmptyReturnFixer, PhpdocNoPackageFixer, PhpdocNoUselessInheritdocFixer, PhpdocOrderByValueFixer, PhpdocOrderFixer, PhpdocParamOrderFixer, PhpdocReadonlyClassCommentToKeywordFixer, PhpdocReturnSelfReferenceFixer, PhpdocSeparationFixer, PhpdocSingleLineVarSpacingFixer, PhpdocSummaryFixer, PhpdocTagCasingFixer, PhpdocTagNoNamedArgumentsFixer, PhpdocTagTypeFixer, PhpdocToParamTypeFixer, PhpdocToPropertyTypeFixer, PhpdocToReturnTypeFixer, PhpdocTrimConsecutiveBlankLineSeparationFixer, PhpdocTrimFixer, PhpdocTypesNoDuplicatesFixer, PhpdocTypesOrderFixer, PhpdocVarAnnotationCorrectOrderFixer, PhpdocVarWithoutNameFixer, SingleLineCommentSpacingFixer, SingleLineCommentStyleFixer. - * Must run after CommentToPhpdocFixer. - */ - public function getPriority(): int - { - /* - * Should be run before all other docblock fixers so that these fixers - * don't touch doc comments which are meant to be converted to regular - * comments. - */ - return 25; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Docblocks should only be used on structural elements.', - [ - new CodeSample( - <<<'PHP' - $sqlite) { - $sqlite->open($path); - } - - PHP, - ), - new CodeSample( - <<<'PHP' - $sqlite) { - $sqlite->open($path); - } - - /** @todo This should be a PHPDoc as the tag is on "ignored_tags" list */ - foreach($connections as $key => $sqlite) { - $sqlite->open($path); - } - - PHP, - ['ignored_tags' => ['todo']], - ), - new CodeSample( - <<<'PHP' - $sqlite) { - $sqlite->open($path); - } - - function returnClassName() { - /** @var class-string */ - return \StdClass::class; - } - - PHP, - ['allow_before_return_statement' => true], - ), - ], - ); - } - - protected function configurePostNormalisation(): void - { - $this->ignoredTags = array_map( - static fn (string $tag): string => strtolower($tag), - $this->configuration['ignored_tags'], - ); - - $this->allowBeforeReturnStatement = true === $this->configuration['allow_before_return_statement']; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('ignored_tags', 'List of ignored tags (matched case insensitively).')) - ->setAllowedTypes(['string[]']) - ->setDefault([]) - ->getOption(), - (new FixerOptionBuilder('allow_before_return_statement', 'Whether to allow PHPDoc before return statement.')) - ->setAllowedTypes(['bool']) - ->setDefault(Future::getV4OrV3(true, false)) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $commentsAnalyzer = new CommentsAnalyzer(); - - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - if ($commentsAnalyzer->isHeaderComment($tokens, $index)) { - continue; - } - - if ($this->allowBeforeReturnStatement && $commentsAnalyzer->isBeforeReturn($tokens, $index)) { - continue; - } - - if ($commentsAnalyzer->isBeforeStructuralElement($tokens, $index)) { - continue; - } - - if (0 < Preg::matchAll('~\@([a-zA-Z0-9_\\\-]+)\b~', $token->getContent(), $matches)) { - foreach ($matches[1] as $match) { - if (\in_array(strtolower($match), $this->ignoredTags, true)) { - continue 2; - } - } - } - - $tokens[$index] = new Token([\T_COMMENT, '/*'.ltrim($token->getContent(), '/*')]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php deleted file mode 100644 index 2a18cc0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php +++ /dev/null @@ -1,195 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\Line; -use PhpCsFixer\DocBlock\ShortDescription; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Nobu Funaki - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocTrimConsecutiveBlankLineSeparationFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes extra blank lines after summary and after description in PHPDoc.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - $summaryEnd = (new ShortDescription($doc))->getEnd(); - - if (null !== $summaryEnd) { - $this->fixSummary($doc, $summaryEnd); - $this->fixDescription($doc, $summaryEnd); - } - - $this->fixAllTheRest($doc); - - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } - - private function fixSummary(DocBlock $doc, int $summaryEnd): void - { - $nonBlankLineAfterSummary = $this->findNonBlankLine($doc, $summaryEnd); - - $this->removeExtraBlankLinesBetween($doc, $summaryEnd, $nonBlankLineAfterSummary); - } - - private function fixDescription(DocBlock $doc, int $summaryEnd): void - { - $annotationStart = $this->findFirstAnnotationOrEnd($doc); - - // assuming the end of the Description appears before the first Annotation - $descriptionEnd = $this->reverseFindLastUsefulContent($doc, $annotationStart); - - if (null === $descriptionEnd || $summaryEnd === $descriptionEnd) { - return; // no Description - } - - if ($annotationStart === \count($doc->getLines()) - 1) { - return; // no content after Description - } - - $this->removeExtraBlankLinesBetween($doc, $descriptionEnd, $annotationStart); - } - - private function fixAllTheRest(DocBlock $doc): void - { - $annotationStart = $this->findFirstAnnotationOrEnd($doc); - $lastLine = $this->reverseFindLastUsefulContent($doc, \count($doc->getLines()) - 1); - - if (null !== $lastLine && $annotationStart !== $lastLine) { - $this->removeExtraBlankLinesBetween($doc, $annotationStart, $lastLine); - } - } - - private function removeExtraBlankLinesBetween(DocBlock $doc, int $from, int $to): void - { - for ($index = $from + 1; $index < $to; ++$index) { - $line = $doc->getLine($index); - $next = $doc->getLine($index + 1); - $this->removeExtraBlankLine($line, $next); - } - } - - private function removeExtraBlankLine(Line $current, Line $next): void - { - if (!$current->isTheEnd() && !$current->containsUsefulContent() - && !$next->isTheEnd() && !$next->containsUsefulContent()) { - $current->remove(); - } - } - - private function findNonBlankLine(DocBlock $doc, int $after): ?int - { - foreach ($doc->getLines() as $index => $line) { - if ($index <= $after) { - continue; - } - - if ($line->containsATag() || $line->containsUsefulContent() || $line->isTheEnd()) { - return $index; - } - } - - return null; - } - - private function findFirstAnnotationOrEnd(DocBlock $doc): int - { - foreach ($doc->getLines() as $index => $line) { - if ($line->containsATag()) { - return $index; - } - } - - if (!isset($index)) { - throw new \LogicException('PHPDoc has empty lines collection.'); - } - - return $index; // no Annotation, return the last line - } - - private function reverseFindLastUsefulContent(DocBlock $doc, int $from): ?int - { - for ($index = $from - 1; $index >= 0; --$index) { - if ($doc->getLine($index)->containsUsefulContent()) { - return $index; - } - } - - return null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php deleted file mode 100644 index 8532a42..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php +++ /dev/null @@ -1,123 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocTrimFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'PHPDoc should start and end with content, excluding the very first and last line of the docblocks.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $content = $token->getContent(); - $content = $this->fixStart($content); - // we need re-parse the docblock after fixing the start before - // fixing the end in order for the lines to be correctly indexed - $content = $this->fixEnd($content); - $tokens[$index] = new Token([\T_DOC_COMMENT, $content]); - } - } - - /** - * Make sure the first useful line starts immediately after the first line. - */ - private function fixStart(string $content): string - { - return Preg::replace( - '~ - (^/\*\*) # DocComment begin - (?: - \R\h*(?:\*\h*)? # lines without useful content - (?!\R\h*\*/) # not followed by a DocComment end - )+ - (\R\h*(?:\*\h*)?\S) # first line with useful content - ~x', - '$1$2', - $content, - ); - } - - /** - * Make sure the last useful line is immediately before the final line. - */ - private function fixEnd(string $content): string - { - return Preg::replace( - '~ - (\R\h*(?:\*\h*)?\S.*?) # last line with useful content - (?: - (? - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractPhpdocTypesFixer; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * exclude?: list<'$this'|'array'|'bool'|'boolean'|'callable'|'double'|'false'|'float'|'int'|'integer'|'iterable'|'mixed'|'null'|'object'|'parent'|'resource'|'scalar'|'self'|'static'|'string'|'true'|'void'>, - * groups?: list<'alias'|'meta'|'simple'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * exclude: list<'$this'|'array'|'bool'|'boolean'|'callable'|'double'|'false'|'float'|'int'|'integer'|'iterable'|'mixed'|'null'|'object'|'parent'|'resource'|'scalar'|'self'|'static'|'string'|'true'|'void'>, - * groups: list<'alias'|'meta'|'simple'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Graham Campbell - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocTypesFixer extends AbstractPhpdocTypesFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * Available types, grouped. - * - * @var non-empty-array> - */ - private const POSSIBLE_TYPES = [ - 'alias' => [ - 'boolean', - 'double', - 'integer', - ], - 'meta' => [ - '$this', - 'false', - 'mixed', - 'parent', - 'resource', - 'scalar', - 'self', - 'static', - 'true', - 'void', - ], - 'simple' => [ - 'array', - 'bool', - 'callable', - 'float', - 'int', - 'iterable', - 'null', - 'object', - 'string', - ], - ]; - - /** @var array */ - private array $typesSetToFix; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'The correct case must be used for standard PHP types in PHPDoc.', - [ - new CodeSample( - <<<'PHP' - ['simple', 'alias']], - ), - new CodeSample( - <<<'PHP' - ['resource']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before GeneralPhpdocAnnotationRemoveFixer, GeneralPhpdocTagRenameFixer, NoBlankLinesAfterPhpdocFixer, NoEmptyPhpdocFixer, NoSuperfluousPhpdocTagsFixer, PhpdocAddMissingParamAnnotationFixer, PhpdocAlignFixer, PhpdocArrayTypeFixer, PhpdocInlineTagNormalizerFixer, PhpdocLineSpanFixer, PhpdocListTypeFixer, PhpdocNoAccessFixer, PhpdocNoAliasTagFixer, PhpdocNoDuplicateTypesFixer, PhpdocNoEmptyReturnFixer, PhpdocNoPackageFixer, PhpdocNoUselessInheritdocFixer, PhpdocOrderByValueFixer, PhpdocOrderFixer, PhpdocParamOrderFixer, PhpdocReadonlyClassCommentToKeywordFixer, PhpdocReturnSelfReferenceFixer, PhpdocScalarFixer, PhpdocSeparationFixer, PhpdocSingleLineVarSpacingFixer, PhpdocSummaryFixer, PhpdocTagCasingFixer, PhpdocTagNoNamedArgumentsFixer, PhpdocTagTypeFixer, PhpdocToParamTypeFixer, PhpdocToPropertyTypeFixer, PhpdocToReturnTypeFixer, PhpdocTrimConsecutiveBlankLineSeparationFixer, PhpdocTrimFixer, PhpdocTypesNoDuplicatesFixer, PhpdocTypesOrderFixer, PhpdocVarAnnotationCorrectOrderFixer, PhpdocVarWithoutNameFixer. - * Must run after PhpdocIndentFixer. - */ - public function getPriority(): int - { - /* - * Should be run before all other docblock fixers apart from the - * phpdoc_to_comment and phpdoc_indent fixer to make sure all fixers - * apply correct indentation to new code they add. This should run - * before alignment of params is done since this fixer might change - * the type and thereby un-aligning the params. We also must run before - * the phpdoc_scalar_fixer so that it can make changes after us. - */ - return 16; - } - - protected function configurePostNormalisation(): void - { - $typesToFix = array_merge(...array_map(static fn (string $group): array => self::POSSIBLE_TYPES[$group], $this->configuration['groups'])); - $this->typesSetToFix = array_combine($typesToFix, array_fill(0, \count($typesToFix), true)); - - foreach ($this->configuration['exclude'] as $type) { - unset($this->typesSetToFix[$type]); - } - } - - protected function normalize(string $type): string - { - $typeExpression = new TypeExpression($type, null, []); - - $newTypeExpression = $typeExpression->mapTypes(function (TypeExpression $type) { - if ($type->isUnionType()) { - return $type; - } - - $value = $type->toString(); - $valueLower = strtolower($value); - if (isset($this->typesSetToFix[$valueLower])) { - return new TypeExpression($valueLower, null, []); - } - - return $type; - }); - - return $newTypeExpression->toString(); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $possibleGroups = array_keys(self::POSSIBLE_TYPES); - $allPossibleTypes = array_merge(...array_values(self::POSSIBLE_TYPES)); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('exclude', 'List of types to exclude from fixing, regardless of groups.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($allPossibleTypes)]) - ->setDefault([]) - ->getOption(), - (new FixerOptionBuilder('groups', 'Type groups to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($possibleGroups)]) - ->setDefault($possibleGroups) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesNoDuplicatesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesNoDuplicatesFixer.php deleted file mode 100644 index e2dc432..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesNoDuplicatesFixer.php +++ /dev/null @@ -1,70 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - * - * @deprecated in favour of PhpdocNoDuplicateTypesFixer - */ -final class PhpdocTypesNoDuplicatesFixer extends AbstractProxyFixer implements DeprecatedFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes duplicate PHPDoc types.', - [ - new CodeSample( - <<<'PHP' - createProxyFixers()[0]->getPriority(); - } - - public function getSuccessorsNames(): array - { - return array_keys($this->proxyFixers); - } - - protected function createProxyFixers(): array - { - $fixer = new PhpdocNoDuplicateTypesFixer(); - - return [$fixer]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php deleted file mode 100644 index 8561ae4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php +++ /dev/null @@ -1,234 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\Annotation; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * case_sensitive?: bool, - * null_adjustment?: 'always_first'|'always_last'|'none', - * sort_algorithm?: 'alpha'|'none', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * case_sensitive: bool, - * null_adjustment: 'always_first'|'always_last'|'none', - * sort_algorithm: 'alpha'|'none', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocTypesOrderFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Sorts PHPDoc types.', - [ - new CodeSample( - <<<'PHP' - 'always_last'], - ), - new CodeSample( - <<<'PHP' - 'alpha'], - ), - new CodeSample( - <<<'PHP' - 'alpha', - 'null_adjustment' => 'always_last', - ], - ), - new CodeSample( - <<<'PHP' - 'alpha', - 'null_adjustment' => 'none', - ], - ), - new CodeSample( - <<<'PHP' - true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before PhpdocAlignFixer. - * Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocArrayTypeFixer, PhpdocIndentFixer, PhpdocListTypeFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_DOC_COMMENT); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('sort_algorithm', 'The sorting algorithm to apply.')) - ->setAllowedValues(['alpha', 'none']) - ->setDefault('alpha') - ->getOption(), - (new FixerOptionBuilder('null_adjustment', 'Forces the position of `null` (overrides `sort_algorithm`).')) - ->setAllowedValues(['always_first', 'always_last', 'none']) - ->setDefault('always_first') - ->getOption(), - (new FixerOptionBuilder('case_sensitive', 'Whether the sorting should be case sensitive.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - $annotations = $doc->getAnnotationsOfType(Annotation::TAGS_WITH_TYPES); - - if (0 === \count($annotations)) { - continue; - } - - foreach ($annotations as $annotation) { - // fix main types - if (null !== $annotation->getTypeExpression()) { - $annotation->setTypes( - $this->sortTypes( - $annotation->getTypeExpression(), - ), - ); - } - - // fix @method parameters types - $line = $doc->getLine($annotation->getStart()); - $line->setContent(Preg::replaceCallback('/\*\h*@method\h+'.TypeExpression::REGEX_TYPES.'\h+\K(?&callable)/', function (array $matches): string { - \assert(isset($matches[0])); - - $typeExpression = new TypeExpression($matches[0], null, []); - - return implode('|', $this->sortTypes($typeExpression)); - }, $line->getContent())); - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } - - /** - * @return list - */ - private function sortTypes(TypeExpression $typeExpression): array - { - $normalizeType = static fn (string $type): string => Preg::replace('/^\(*\??\\\?/', '', $type); - - $sortedTypeExpression = $typeExpression->sortTypes( - function (TypeExpression $a, TypeExpression $b) use ($normalizeType): int { - $a = $normalizeType($a->toString()); - $b = $normalizeType($b->toString()); - $lowerCaseA = strtolower($a); - $lowerCaseB = strtolower($b); - - if ('none' !== $this->configuration['null_adjustment']) { - if ('null' === $lowerCaseA && 'null' !== $lowerCaseB) { - return 'always_last' === $this->configuration['null_adjustment'] ? 1 : -1; - } - if ('null' !== $lowerCaseA && 'null' === $lowerCaseB) { - return 'always_last' === $this->configuration['null_adjustment'] ? -1 : 1; - } - } - - if ('alpha' === $this->configuration['sort_algorithm']) { - return true === $this->configuration['case_sensitive'] ? $a <=> $b : strcasecmp($a, $b); - } - - return 0; - }, - ); - - return $sortedTypeExpression->getTypes(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php deleted file mode 100644 index 734e2d7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php +++ /dev/null @@ -1,89 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocVarAnnotationCorrectOrderFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - '`@var` and `@type` annotations must have type and name in the correct order.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_DOC_COMMENT); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - if (!str_contains(strtolower($token->getContent()), strtolower('@var')) && !str_contains(strtolower($token->getContent()), strtolower('@type'))) { - continue; - } - - $newContent = Preg::replace( - '/(@(?:type|var)\s*)(\$\S+)(\h+)([^\$](?:[^<\s]|<[^>]*>)*)(\s|\*)/i', - '$1$4$3$2$5', - $token->getContent(), - ); - - if ($newContent === $token->getContent()) { - continue; - } - - $tokens[$index] = new Token([$token->getId(), $newContent]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php deleted file mode 100644 index 0342302..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php +++ /dev/null @@ -1,155 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Phpdoc; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\DocBlock\Line; -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Graham Campbell - * @author Dave van der Brugge - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpdocVarWithoutNameFixer extends AbstractFixer -{ - private const PROPERTY_MODIFIER_KINDS = [\T_PRIVATE, \T_PROTECTED, \T_PUBLIC, \T_VAR, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - '`@var` and `@type` annotations of classy properties should not contain the name.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_DOC_COMMENT) && $tokens->isAnyTokenKindsFound([\T_CLASS, \T_TRAIT]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_DOC_COMMENT)) { - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if (null === $nextIndex) { - continue; - } - - // For people writing "static public $foo" instead of "public static $foo" - if ($tokens[$nextIndex]->isGivenKind(\T_STATIC)) { - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - } - - // We want only doc blocks that are for properties and thus have specified access modifiers next - if (!$tokens[$nextIndex]->isGivenKind(self::PROPERTY_MODIFIER_KINDS)) { - continue; - } - - $doc = new DocBlock($token->getContent()); - - $firstLevelLines = $this->getFirstLevelLines($doc); - $annotations = $doc->getAnnotationsOfType(['type', 'var']); - - foreach ($annotations as $annotation) { - if (isset($firstLevelLines[$annotation->getStart()])) { - $this->fixLine($firstLevelLines[$annotation->getStart()]); - } - } - - $tokens[$index] = new Token([\T_DOC_COMMENT, $doc->getContent()]); - } - } - - private function fixLine(Line $line): void - { - Preg::matchAll('/ \$'.TypeExpression::REGEX_IDENTIFIER.'(?getContent(), $matches); - - foreach ($matches[0] as $match) { - $line->setContent(str_replace($match, '', $line->getContent())); - } - } - - /** - * @return array - */ - private function getFirstLevelLines(DocBlock $docBlock): array - { - $nested = 0; - $lines = $docBlock->getLines(); - - foreach ($lines as $index => $line) { - $content = $line->getContent(); - - if (Preg::match('/\s*\*\s*}$/', $content)) { - --$nested; - } - - if ($nested > 0) { - unset($lines[$index]); - } - - if (Preg::match('/\s\{$/', $content)) { - ++$nested; - } - } - - return $lines; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php deleted file mode 100644 index 5df1425..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php +++ /dev/null @@ -1,108 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ReturnNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoUselessReturnFixer extends AbstractFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAllTokenKindsFound([\T_FUNCTION, \T_RETURN]); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should not be an empty `return` statement at the end of a function.', - [ - new CodeSample( - <<<'PHP' - $token) { - if (!$token->isGivenKind(\T_FUNCTION)) { - continue; - } - - $index = $tokens->getNextTokenOfKind($index, [';', '{']); - if ($tokens[$index]->equals('{')) { - $this->fixFunction($tokens, $index, $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index)); - } - } - } - - /** - * @param int $start Token index of the opening brace token of the function - * @param int $end Token index of the closing brace token of the function - */ - private function fixFunction(Tokens $tokens, int $start, int $end): void - { - for ($index = $end; $index > $start; --$index) { - if (!$tokens[$index]->isGivenKind(\T_RETURN)) { - continue; - } - - $nextAt = $tokens->getNextMeaningfulToken($index); - if (!$tokens[$nextAt]->equals(';')) { - continue; - } - - if ($tokens->getNextMeaningfulToken($nextAt) !== $end) { - continue; - } - - $previous = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$previous]->equalsAny([[\T_ELSE], ')'])) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($nextAt); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php deleted file mode 100644 index 1d832bf..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php +++ /dev/null @@ -1,638 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ReturnNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\DocBlock\DocBlock; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * skip_named_var_tags?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * skip_named_var_tags: bool, - * } - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - */ -final class ReturnAssignmentFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private TokensAnalyzer $tokensAnalyzer; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Local, dynamic and directly referenced variables should not be assigned and directly returned by a function or method.', - [ - new CodeSample( - <<<'PHP' - true, - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BlankLineBeforeStatementFixer. - * Must run after NoEmptyStatementFixer, NoUnneededBracesFixer, NoUnneededCurlyBracesFixer. - */ - public function getPriority(): int - { - return -15; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAllTokenKindsFound([\T_FUNCTION, \T_RETURN, \T_VARIABLE]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokenCount = \count($tokens); - $this->tokensAnalyzer = new TokensAnalyzer($tokens); - - for ($index = 1; $index < $tokenCount; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - continue; - } - - $next = $tokens->getNextMeaningfulToken($index); - if ($tokens[$next]->isGivenKind(CT::T_RETURN_REF)) { - continue; - } - - $functionOpenIndex = $tokens->getNextTokenOfKind($index, ['{', ';']); - if ($tokens[$functionOpenIndex]->equals(';')) { // abstract function - $index = $functionOpenIndex - 1; - - continue; - } - - $functionCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $functionOpenIndex); - $totalTokensAdded = 0; - - do { - $tokensAdded = $this->fixFunction( - $tokens, - $index, - $functionOpenIndex, - $functionCloseIndex, - ); - - $functionCloseIndex += $tokensAdded; - $totalTokensAdded += $tokensAdded; - } while ($tokensAdded > 0); - - $index = $functionCloseIndex; - $tokenCount += $totalTokensAdded; - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('skip_named_var_tags', 'Whether to skip cases where named `@var` tags are used.')) - ->setDefault(false) - ->setAllowedTypes(['bool']) - ->getOption(), - ]); - } - - /** - * @param int $functionIndex token index of T_FUNCTION - * @param int $functionOpenIndex token index of the opening brace token of the function - * @param int $functionCloseIndex token index of the closing brace token of the function - * - * @return int >= 0 number of tokens inserted into the Tokens collection - */ - private function fixFunction(Tokens $tokens, int $functionIndex, int $functionOpenIndex, int $functionCloseIndex): int - { - $inserted = 0; - $candidates = []; - $isRisky = false; - - if ($tokens[$tokens->getNextMeaningfulToken($functionIndex)]->isGivenKind(CT::T_RETURN_REF)) { - $isRisky = true; - } - - // go through the function declaration and check if references are passed - // - check if it will be risky to fix return statements of this function - for ($index = $functionIndex + 1; $index < $functionOpenIndex; ++$index) { - if ($tokens[$index]->equals('&')) { - $isRisky = true; - - break; - } - } - - // go through all the tokens of the body of the function: - // - check if it will be risky to fix return statements of this function - // - check nested functions; fix when found and update the upper limit + number of inserted token - // - check for return statements that might be fixed (based on if fixing will be risky, which is only know after analyzing the whole function) - - for ($index = $functionOpenIndex + 1; $index < $functionCloseIndex; ++$index) { - if ($tokens[$index]->isGivenKind(\T_FUNCTION)) { - $nestedFunctionOpenIndex = $tokens->getNextTokenOfKind($index, ['{', ';']); - if ($tokens[$nestedFunctionOpenIndex]->equals(';')) { // abstract function - $index = $nestedFunctionOpenIndex - 1; - - continue; - } - - $nestedFunctionCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $nestedFunctionOpenIndex); - - $tokensAdded = $this->fixFunction( - $tokens, - $index, - $nestedFunctionOpenIndex, - $nestedFunctionCloseIndex, - ); - - $index = $nestedFunctionCloseIndex + $tokensAdded; - $functionCloseIndex += $tokensAdded; - $inserted += $tokensAdded; - } - - if ($isRisky) { - continue; // don't bother to look into anything else than nested functions as the current is risky already - } - - if ($tokens[$index]->equals('&')) { - $isRisky = true; - - continue; - } - - if ($tokens[$index]->isGivenKind(\T_RETURN)) { - $candidates[] = $index; - - continue; - } - - // test if there is anything in the function body that might - // change global state or indirect changes (like through references, eval, etc.) - - if ($tokens[$index]->isGivenKind([ - CT::T_DYNAMIC_VAR_BRACE_OPEN, // "$h = ${$g};" case - \T_EVAL, // "$c = eval('return $this;');" case - \T_GLOBAL, - \T_INCLUDE, // loading additional symbols we cannot analyse here - \T_INCLUDE_ONCE, // " - \T_REQUIRE, // " - \T_REQUIRE_ONCE, // " - ])) { - $isRisky = true; - - continue; - } - - if ($tokens[$index]->isGivenKind(\T_STATIC)) { - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$nextIndex]->isGivenKind(\T_FUNCTION)) { - $isRisky = true; // "static $a" case - - continue; - } - } - - if ($tokens[$index]->equals('$')) { - $nextIndex = $tokens->getNextMeaningfulToken($index); - if ($tokens[$nextIndex]->isGivenKind(\T_VARIABLE)) { - $isRisky = true; // "$$a" case - - continue; - } - } - - if ($this->tokensAnalyzer->isSuperGlobal($index)) { - $isRisky = true; - - continue; - } - } - - if ($isRisky) { - return $inserted; - } - - // fix the candidates in reverse order when applicable - for ($i = \count($candidates) - 1; $i >= 0; --$i) { - \assert(isset($candidates[$i])); - $index = $candidates[$i]; - - // Check if returning only a variable (i.e. not the result of an expression, function call etc.) - $returnVarIndex = $tokens->getNextMeaningfulToken($index); - if (!$tokens[$returnVarIndex]->isGivenKind(\T_VARIABLE)) { - continue; // example: "return 1;" - } - - $endReturnVarIndex = $tokens->getNextMeaningfulToken($returnVarIndex); - if (!$tokens[$endReturnVarIndex]->equalsAny([';', [\T_CLOSE_TAG]])) { - continue; // example: "return $a + 1;" - } - - // Check that the variable is assigned just before it is returned - $assignVarEndIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$assignVarEndIndex]->equals(';')) { - continue; // example: "? return $a;" - } - - // Note: here we are @ "; return $a;" (or "; return $a ? >") - while (true) { - $prevMeaningful = $tokens->getPrevMeaningfulToken($assignVarEndIndex); - - if (!$tokens[$prevMeaningful]->equals(')')) { - break; - } - - $assignVarEndIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $prevMeaningful); - } - - $assignVarOperatorIndex = $tokens->getPrevTokenOfKind( - $assignVarEndIndex, - ['=', ';', '{', '}', [\T_OPEN_TAG], [\T_OPEN_TAG_WITH_ECHO]], - ); - - if ($tokens[$assignVarOperatorIndex]->equals('}')) { - $startIndex = $this->isCloseBracePartOfDefinition($tokens, $assignVarOperatorIndex); // test for `anonymous class`, `lambda` and `match` - - if (null === $startIndex) { - continue; - } - - $assignVarOperatorIndex = $tokens->getPrevMeaningfulToken($startIndex); - } - - if (!$tokens[$assignVarOperatorIndex]->equals('=')) { - continue; - } - - // Note: here we are @ "= [^;{] ; return $a;" - $assignVarIndex = $tokens->getPrevMeaningfulToken($assignVarOperatorIndex); - if (!$tokens[$assignVarIndex]->equals($tokens[$returnVarIndex], false)) { - continue; - } - - // Note: here we are @ "$a = [^;{] ; return $a;" - $beforeAssignVarIndex = $tokens->getPrevMeaningfulToken($assignVarIndex); - if (!$tokens[$beforeAssignVarIndex]->equalsAny([';', '{', '}'])) { - continue; - } - - if ( - $this->configuration['skip_named_var_tags'] - && $this->hasNamedVarTag($tokens, $assignVarIndex, $functionOpenIndex) - ) { - continue; - } - - // Check if there is a `catch` or `finally` block between the assignment and the return - if ($this->isUsedInCatchOrFinally($tokens, $returnVarIndex, $functionOpenIndex, $functionCloseIndex)) { - continue; - } - - // Note: here we are @ "[;{}] $a = [^;{] ; return $a;" - $inserted += $this->simplifyReturnStatement( - $tokens, - $assignVarIndex, - $assignVarOperatorIndex, - $index, - $endReturnVarIndex, - ); - } - - return $inserted; - } - - /** - * @return int >= 0 number of tokens inserted into the Tokens collection - */ - private function simplifyReturnStatement( - Tokens $tokens, - int $assignVarIndex, - int $assignVarOperatorIndex, - int $returnIndex, - int $returnVarEndIndex - ): int { - $inserted = 0; - $originalIndent = $tokens[$assignVarIndex - 1]->isWhitespace() - ? $tokens[$assignVarIndex - 1]->getContent() - : null; - - // remove the return statement - if ($tokens[$returnVarEndIndex]->equals(';')) { // do not remove PHP close tags - $tokens->clearTokenAndMergeSurroundingWhitespace($returnVarEndIndex); - } - - for ($i = $returnIndex; $i <= $returnVarEndIndex - 1; ++$i) { - $this->clearIfSave($tokens, $i); - } - - // remove no longer needed indentation of the old/remove return statement - if ($tokens[$returnIndex - 1]->isWhitespace()) { - $content = $tokens[$returnIndex - 1]->getContent(); - $fistLinebreakPos = strrpos($content, "\n"); - $content = false === $fistLinebreakPos - ? ' ' - : substr($content, $fistLinebreakPos); - - $tokens[$returnIndex - 1] = new Token([\T_WHITESPACE, $content]); - } - - // remove the variable and the assignment - for ($i = $assignVarIndex; $i <= $assignVarOperatorIndex; ++$i) { - $this->clearIfSave($tokens, $i); - } - - // insert new return statement - $tokens->insertAt($assignVarIndex, new Token([\T_RETURN, 'return'])); - ++$inserted; - - // use the original indent of the var assignment for the new return statement - if ( - null !== $originalIndent - && $tokens[$assignVarIndex - 1]->isWhitespace() - && $originalIndent !== $tokens[$assignVarIndex - 1]->getContent() - ) { - $tokens[$assignVarIndex - 1] = new Token([\T_WHITESPACE, $originalIndent]); - } - - // remove trailing space after the new return statement which might be added during the cleanup process - $nextIndex = $tokens->getNonEmptySibling($assignVarIndex, 1); - if (!$tokens[$nextIndex]->isWhitespace()) { - $tokens->insertAt($nextIndex, new Token([\T_WHITESPACE, ' '])); - ++$inserted; - } - - return $inserted; - } - - private function clearIfSave(Tokens $tokens, int $index): void - { - if ($tokens[$index]->isComment()) { - return; - } - - if ($tokens[$index]->isWhitespace() && $tokens[$tokens->getPrevNonWhitespace($index)]->isComment()) { - return; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - - /** - * @param int $index open brace index - * - * @return null|int index of the first token of a definition (lambda, anonymous class or match) or `null` if not an anonymous - */ - private function isCloseBracePartOfDefinition(Tokens $tokens, int $index): ?int - { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $index); - $candidateIndex = $this->isOpenBraceOfLambda($tokens, $index); - - if (null !== $candidateIndex) { - return $candidateIndex; - } - - $candidateIndex = $this->isOpenBraceOfAnonymousClass($tokens, $index); - - return $candidateIndex ?? $this->isOpenBraceOfMatch($tokens, $index); - } - - /** - * @param int $index open brace index - * - * @return null|int index of T_NEW of anonymous class or `null` if not an anonymous - */ - private function isOpenBraceOfAnonymousClass(Tokens $tokens, int $index): ?int - { - do { - $index = $tokens->getPrevMeaningfulToken($index); - } while ($tokens[$index]->equalsAny([',', [\T_STRING], [\T_IMPLEMENTS], [\T_EXTENDS], [\T_NS_SEPARATOR]])); - - if ($tokens[$index]->equals(')')) { // skip constructor braces and content within - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $index = $tokens->getPrevMeaningfulToken($index); - } - - if (!$tokens[$index]->isGivenKind(\T_CLASS) || !$this->tokensAnalyzer->isAnonymousClass($index)) { - return null; - } - - return $tokens->getPrevTokenOfKind($index, [[\T_NEW]]); - } - - /** - * @param int $index open brace index - * - * @return null|int index of T_FUNCTION or T_STATIC of lambda or `null` if not a lambda - */ - private function isOpenBraceOfLambda(Tokens $tokens, int $index): ?int - { - $index = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$index]->equals(')')) { - return null; - } - - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $index = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$index]->isGivenKind(CT::T_USE_LAMBDA)) { - $index = $tokens->getPrevTokenOfKind($index, [')']); - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $index = $tokens->getPrevMeaningfulToken($index); - } - - if ($tokens[$index]->isGivenKind(CT::T_RETURN_REF)) { - $index = $tokens->getPrevMeaningfulToken($index); - } - - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - return null; - } - - $staticCandidate = $tokens->getPrevMeaningfulToken($index); - - return $tokens[$staticCandidate]->isGivenKind(\T_STATIC) ? $staticCandidate : $index; - } - - /** - * @param int $index open brace index - * - * @return null|int index of T_MATCH or `null` if not a `match` - */ - private function isOpenBraceOfMatch(Tokens $tokens, int $index): ?int - { - if (!$tokens->isTokenKindFound(FCT::T_MATCH)) { - return null; - } - - $index = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$index]->equals(')')) { - return null; - } - - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $index = $tokens->getPrevMeaningfulToken($index); - - return $tokens[$index]->isGivenKind(\T_MATCH) ? $index : null; - } - - private function hasNamedVarTag(Tokens $tokens, int $assignVarIndex, int $functionOpenIndex): bool - { - $docIndex = $tokens->getPrevTokenOfKind($assignVarIndex, [[\T_DOC_COMMENT]]); - if (null === $docIndex || $docIndex <= $functionOpenIndex) { - return false; - } - - $doc = new DocBlock($tokens[$docIndex]->getContent()); - $annotations = $doc->getAnnotationsOfType(['var', 'psalm-var', 'phpstan-var']); - - foreach ($annotations as $annotation) { - if (null !== $annotation->getVariableName()) { - return true; - } - } - - return false; - } - - private function isUsedInCatchOrFinally(Tokens $tokens, int $returnVarIndex, int $functionOpenIndex, int $functionCloseIndex): bool - { - // Find try - $tryIndex = $tokens->getPrevTokenOfKind($returnVarIndex, [[\T_TRY]]); - if (null === $tryIndex || $tryIndex <= $functionOpenIndex) { - return false; - } - $tryOpenIndex = $tokens->getNextTokenOfKind($tryIndex, ['{']); - $tryCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $tryOpenIndex); - - // Find catch or finally - $nextIndex = $tokens->getNextMeaningfulToken($tryCloseIndex); - if (null === $nextIndex) { - return false; - } - - // Find catches - while ($tokens[$nextIndex]->isGivenKind(\T_CATCH)) { - $catchOpenIndex = $tokens->getNextTokenOfKind($nextIndex, ['{']); - $catchCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $catchOpenIndex); - - if ($catchCloseIndex >= $functionCloseIndex) { - return false; - } - $varIndex = $tokens->getNextTokenOfKind($catchOpenIndex, [$tokens[$returnVarIndex]]); - // Check if the variable is used in the finally block - if (null !== $varIndex && $varIndex < $catchCloseIndex) { - return true; - } - - $nextIndex = $tokens->getNextMeaningfulToken($catchCloseIndex); - if (null === $nextIndex) { - return false; - } - } - - if (!$tokens[$nextIndex]->isGivenKind(\T_FINALLY)) { - return false; - } - - $finallyIndex = $nextIndex; - if ($finallyIndex >= $functionCloseIndex) { - return false; - } - $finallyOpenIndex = $tokens->getNextTokenOfKind($finallyIndex, ['{']); - $finallyCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $finallyOpenIndex); - $varIndex = $tokens->getNextTokenOfKind($finallyOpenIndex, [$tokens[$returnVarIndex]]); - // Check if the variable is used in the finally block - if (null !== $varIndex && $varIndex < $finallyCloseIndex) { - return true; - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php deleted file mode 100644 index 0ec50df..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php +++ /dev/null @@ -1,198 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\ReturnNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SimplifiedNullReturnFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'A return statement wishing to return `void` should not return `null`.', - [ - new CodeSample("isTokenKindFound(\T_RETURN); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->fixRange($tokens, 1, $tokens->count() - 1); - } - - private function fixRange(Tokens $tokens, int $startIndex, int $endIndex): void - { - for ($index = $startIndex; $index < $endIndex; ++$index) { - if ($tokens[$index]->isGivenKind(CT::T_PROPERTY_HOOK_BRACE_OPEN)) { - $propertyHookCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PROPERTY_HOOK, $index); - $this->scanRange($tokens, $index, $propertyHookCloseIndex); - $index = $propertyHookCloseIndex; - - continue; - } - - if (!$tokens[$index]->isGivenKind(\T_RETURN)) { - continue; - } - - if ($this->needFixing($tokens, $index)) { - $this->clear($tokens, $index); - } - } - } - - private function scanRange(Tokens $tokens, int $startIndex, int $endIndex): void - { - for ($index = $startIndex; $index < $endIndex; ++$index) { - if ($tokens[$index]->isGivenKind(\T_FUNCTION)) { - $braceOpenIndex = $tokens->getNextTokenOfKind($index, ['{']); - $braceCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $braceOpenIndex); - $this->fixRange($tokens, $braceOpenIndex, $braceCloseIndex); - $index = $braceCloseIndex; - } - } - } - - /** - * Clear the return statement located at a given index. - */ - private function clear(Tokens $tokens, int $index): void - { - while (!$tokens[++$index]->equalsAny([';', [\T_CLOSE_TAG]])) { - if ($this->shouldClearToken($tokens, $index)) { - $tokens->clearAt($index); - } - } - } - - /** - * Does the return statement located at a given index need fixing? - */ - private function needFixing(Tokens $tokens, int $index): bool - { - if ($this->isStrictOrNullableReturnTypeFunction($tokens, $index)) { - return false; - } - - $content = ''; - while (!$tokens[$index]->equalsAny([';', [\T_CLOSE_TAG]])) { - $index = $tokens->getNextMeaningfulToken($index); - $content .= $tokens[$index]->getContent(); - } - - $lastTokenContent = $tokens[$index]->getContent(); - $content = substr($content, 0, -\strlen($lastTokenContent)); - - $content = ltrim($content, '('); - $content = rtrim($content, ')'); - - return 'null' === strtolower($content); - } - - /** - * Is the return within a function with a non-void or nullable return type? - * - * @param int $returnIndex Current return token index - */ - private function isStrictOrNullableReturnTypeFunction(Tokens $tokens, int $returnIndex): bool - { - $functionIndex = $returnIndex; - do { - $functionIndex = $tokens->getPrevTokenOfKind($functionIndex, [[\T_FUNCTION]]); - if (null === $functionIndex) { - return false; - } - $openingCurlyBraceIndex = $tokens->getNextTokenOfKind($functionIndex, ['{']); - $closingCurlyBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $openingCurlyBraceIndex); - } while ($closingCurlyBraceIndex < $returnIndex); - - $possibleVoidIndex = $tokens->getPrevMeaningfulToken($openingCurlyBraceIndex); - $isStrictReturnType = $tokens[$possibleVoidIndex]->isGivenKind([\T_STRING, CT::T_ARRAY_TYPEHINT]) - && 'void' !== $tokens[$possibleVoidIndex]->getContent(); - - $nullableTypeIndex = $tokens->getNextTokenOfKind($functionIndex, [[CT::T_NULLABLE_TYPE]]); - $isNullableReturnType = null !== $nullableTypeIndex && $nullableTypeIndex < $openingCurlyBraceIndex; - - return $isStrictReturnType || $isNullableReturnType; - } - - /** - * Should we clear the specific token? - * - * We'll leave it alone if - * - token is a comment - * - token is whitespace that is immediately before a comment - * - token is whitespace that is immediately before the PHP close tag - * - token is whitespace that is immediately after a comment and before a semicolon - */ - private function shouldClearToken(Tokens $tokens, int $index): bool - { - $token = $tokens[$index]; - - if ($token->isComment()) { - return false; - } - - if (!$token->isWhitespace()) { - return true; - } - - if ( - $tokens[$index + 1]->isComment() - || $tokens[$index + 1]->isGivenKind(\T_CLOSE_TAG) - || ($tokens[$index - 1]->isComment() && $tokens[$index + 1]->equals(';')) - ) { - return false; - } - - return true; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php deleted file mode 100644 index cacb59f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php +++ /dev/null @@ -1,256 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Semicolon; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * strategy?: 'new_line_for_chained_calls'|'no_multi_line', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * strategy: 'new_line_for_chained_calls'|'no_multi_line', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Graham Campbell - * @author Egidijus Girčys - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MultilineWhitespaceBeforeSemicolonsFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @internal - */ - public const STRATEGY_NO_MULTI_LINE = 'no_multi_line'; - - /** - * @internal - */ - public const STRATEGY_NEW_LINE_FOR_CHAINED_CALLS = 'new_line_for_chained_calls'; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Forbid multi-line whitespace before the closing semicolon or move the semicolon to the new line for chained calls.', - [ - new CodeSample( - <<<'PHP' - method1() - ->method2() - ->method(3); - - PHP, - ['strategy' => self::STRATEGY_NEW_LINE_FOR_CHAINED_CALLS], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before SpaceAfterSemicolonFixer. - * Must run after CombineConsecutiveIssetsFixer, GetClassToClassKeywordFixer, NoEmptyStatementFixer, SimplifiedIfReturnFixer, SingleImportPerStatementFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(';'); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder( - 'strategy', - 'Forbid multi-line whitespace or move the semicolon to the new line for chained calls.', - )) - ->setAllowedValues([self::STRATEGY_NO_MULTI_LINE, self::STRATEGY_NEW_LINE_FOR_CHAINED_CALLS]) - ->setDefault(self::STRATEGY_NO_MULTI_LINE) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - for ($index = 0, $count = \count($tokens); $index < $count; ++$index) { - if ($tokens[$index]->isGivenKind(\T_CONST)) { - $index = $tokens->getNextTokenOfKind($index, [';']); - - continue; - } - - if (!$tokens[$index]->equals(';')) { - continue; - } - - $previousIndex = $index - 1; - $previous = $tokens[$previousIndex]; - - $indent = $this->findWhitespaceBeforeFirstCall($index, $tokens); - if (self::STRATEGY_NEW_LINE_FOR_CHAINED_CALLS === $this->configuration['strategy'] && null !== $indent) { - if ($previous->isWhitespace() && $previous->getContent() === $lineEnding.$indent) { - continue; - } - - // unset whitespace and semicolon - if ($previous->isWhitespace()) { - $tokens->clearAt($previousIndex); - } - $tokens->clearAt($index); - - // find the line ending token index after the semicolon - $index = $this->getNewLineIndex($index, $tokens); - - // appended new line to the last method call - $newline = new Token([\T_WHITESPACE, $lineEnding.$indent]); - - // insert the new line with indented semicolon - $tokens->insertAt($index++, [$newline, new Token(';')]); - } else { - if (!$previous->isWhitespace() || !str_contains($previous->getContent(), "\n")) { - continue; - } - - $content = $previous->getContent(); - if (str_starts_with($content, $lineEnding) && $tokens[$index - 2]->isComment()) { - // if there is comment between closing parenthesis and semicolon - - // unset whitespace and semicolon - $tokens->clearAt($previousIndex); - $tokens->clearAt($index); - - // find the significant token index before the semicolon - $significantTokenIndex = $this->getPreviousSignificantTokenIndex($index, $tokens); - - // insert the semicolon - $tokens->insertAt($significantTokenIndex + 1, [new Token(';')]); - } else { - // if there is whitespace between closing bracket and semicolon, just remove it - $tokens->clearAt($previousIndex); - } - } - } - } - - /** - * Find the index for the next new line. Return the given index when there's no new line. - */ - private function getNewLineIndex(int $index, Tokens $tokens): int - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - for ($index, $count = \count($tokens); $index < $count; ++$index) { - if (!$tokens[$index]->isWhitespace() && !$tokens[$index]->isComment()) { - break; - } - if (false !== strstr($tokens[$index]->getContent(), $lineEnding)) { - return $index; - } - } - - return $index; - } - - /** - * Find the index for the previous significant token. Return the given index when there's no significant token. - */ - private function getPreviousSignificantTokenIndex(int $index, Tokens $tokens): int - { - $stopTokens = [ - \T_LNUMBER, - \T_DNUMBER, - \T_STRING, - \T_VARIABLE, - \T_CONSTANT_ENCAPSED_STRING, - ]; - for ($index; $index > 0; --$index) { - if ($tokens[$index]->isGivenKind($stopTokens) || $tokens[$index]->equals(')')) { - return $index; - } - } - - return $index; - } - - /** - * Checks if the semicolon closes a multiline call and returns the whitespace of the first call at $index. - * i.e. it will return the whitespace marked with '____' in the example underneath. - * - * .. - * ____$this->methodCall() - * ->anotherCall(); - * .. - */ - private function findWhitespaceBeforeFirstCall(int $index, Tokens $tokens): ?string - { - $isMultilineCall = false; - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - while (!$tokens[$prevIndex]->equalsAny([';', ':', '{', '}', [\T_OPEN_TAG], [\T_OPEN_TAG_WITH_ECHO], [\T_ELSE]])) { - $index = $prevIndex; - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - $blockType = Tokens::detectBlockType($tokens[$index]); - if (null !== $blockType && !$blockType['isStart']) { - $prevIndex = $tokens->findBlockStart($blockType['type'], $index); - - continue; - } - - if ($tokens[$index]->isObjectOperator() || $tokens[$index]->isGivenKind(\T_DOUBLE_COLON)) { - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $isMultilineCall = $isMultilineCall || $tokens->isPartialCodeMultiline($prevIndex, $index); - } - } - - return $isMultilineCall ? WhitespacesAnalyzer::detectIndent($tokens, $index) : null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php deleted file mode 100644 index 91197ef..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php +++ /dev/null @@ -1,188 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Semicolon; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoEmptyStatementFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Remove useless (semicolon) statements.', - [ - new CodeSample("isTokenKindFound(';'); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = 0, $count = $tokens->count(); $index < $count; ++$index) { - if ($tokens[$index]->isGivenKind([\T_BREAK, \T_CONTINUE])) { - $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->equals([\T_LNUMBER, '1'])) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - - continue; - } - - // skip T_FOR parenthesis to ignore double `;` like `for ($i = 1; ; ++$i) {...}` - if ($tokens[$index]->isGivenKind(\T_FOR)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $tokens->getNextMeaningfulToken($index)) + 1; - - continue; - } - - if (!$tokens[$index]->equals(';')) { - continue; - } - - $previousMeaningfulIndex = $tokens->getPrevMeaningfulToken($index); - - // A semicolon can always be removed if it follows a semicolon, '{' or opening tag. - if ($tokens[$previousMeaningfulIndex]->equalsAny(['{', ';', [\T_OPEN_TAG]])) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - continue; - } - - // A semicolon might be removed if it follows a '}' but only if the brace is part of certain structures. - if ($tokens[$previousMeaningfulIndex]->equals('}')) { - $this->fixSemicolonAfterCurlyBraceClose($tokens, $index, $previousMeaningfulIndex); - - continue; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - if (null !== $nextIndex && $tokens[$nextIndex]->isGivenKind(CT::T_PROPERTY_HOOK_BRACE_CLOSE)) { - continue; - } - - // A semicolon might be removed together with its noop statement, for example "getPrevMeaningfulToken($previousMeaningfulIndex); - - if ( - $tokens[$prePreviousMeaningfulIndex]->equalsAny([';', '{', '}', [\T_OPEN_TAG]]) - && $tokens[$previousMeaningfulIndex]->isGivenKind([\T_CONSTANT_ENCAPSED_STRING, \T_DNUMBER, \T_LNUMBER, \T_STRING, \T_VARIABLE]) - ) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - $tokens->clearTokenAndMergeSurroundingWhitespace($previousMeaningfulIndex); - } - } - } - - /** - * Fix semicolon after closing curly brace if needed. - * - * Test for the following cases - * - just '{' '}' block (following open tag or ';') - * - if, else, elseif - * - interface, trait, class (but not anonymous) - * - catch, finally (but not try) - * - for, foreach, while (but not 'do - while') - * - switch - * - function (declaration, but not lambda) - * - declare (with '{' '}') - * - namespace (with '{' '}') - * - * @param int $index Semicolon index - */ - private function fixSemicolonAfterCurlyBraceClose(Tokens $tokens, int $index, int $curlyCloseIndex): void - { - $curlyOpeningIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $curlyCloseIndex); - $beforeCurlyOpeningIndex = $tokens->getPrevMeaningfulToken($curlyOpeningIndex); - - if ($tokens[$beforeCurlyOpeningIndex]->isGivenKind([\T_ELSE, \T_FINALLY, \T_NAMESPACE, \T_OPEN_TAG]) || $tokens[$beforeCurlyOpeningIndex]->equalsAny([';', '{', '}'])) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - return; - } - - // check for namespaces and class, interface and trait definitions - if ($tokens[$beforeCurlyOpeningIndex]->isGivenKind(\T_STRING)) { - $classyTestIndex = $tokens->getPrevMeaningfulToken($beforeCurlyOpeningIndex); - - while ($tokens[$classyTestIndex]->equals(',') || $tokens[$classyTestIndex]->isGivenKind([\T_STRING, \T_NS_SEPARATOR, \T_EXTENDS, \T_IMPLEMENTS])) { - $classyTestIndex = $tokens->getPrevMeaningfulToken($classyTestIndex); - } - - $tokensAnalyzer = new TokensAnalyzer($tokens); - - if ( - $tokens[$classyTestIndex]->isGivenKind(\T_NAMESPACE) - || ($tokens[$classyTestIndex]->isClassy() && !$tokensAnalyzer->isAnonymousClass($classyTestIndex)) - ) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - - return; - } - - // early return check, below only control structures with conditions are fixed - if (!$tokens[$beforeCurlyOpeningIndex]->equals(')')) { - return; - } - - $openingBraceIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $beforeCurlyOpeningIndex); - $beforeOpeningBraceIndex = $tokens->getPrevMeaningfulToken($openingBraceIndex); - - if ($tokens[$beforeOpeningBraceIndex]->isGivenKind([\T_IF, \T_ELSEIF, \T_FOR, \T_FOREACH, \T_WHILE, \T_SWITCH, \T_CATCH, \T_DECLARE])) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - - return; - } - - // check for function definition - if ($tokens[$beforeOpeningBraceIndex]->isGivenKind(\T_STRING)) { - $beforeStringIndex = $tokens->getPrevMeaningfulToken($beforeOpeningBraceIndex); - - if ($tokens[$beforeStringIndex]->isGivenKind(\T_FUNCTION)) { - $tokens->clearTokenAndMergeSurroundingWhitespace($index); // implicit return - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php deleted file mode 100644 index d3f584b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Semicolon; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Graham Campbell - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoSinglelineWhitespaceBeforeSemicolonsFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Single-line whitespace before closing semicolon are prohibited.', - [new CodeSample("foo() ;\n")], - ); - } - - /** - * {@inheritdoc} - * - * Must run after CombineConsecutiveIssetsFixer, FunctionToConstantFixer, LongToShorthandOperatorFixer, NoEmptyStatementFixer, NoUnneededImportAliasFixer, SimplifiedIfReturnFixer, SingleImportPerStatementFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(';'); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->equals(';') || !$tokens[$index - 1]->isWhitespace(" \t")) { - continue; - } - - if ($tokens[$index - 2]->equals(';')) { - // do not remove all whitespace before the semicolon because it is also whitespace after another semicolon - $tokens->ensureWhitespaceAtIndex($index - 1, 0, ' '); - } elseif (!$tokens[$index - 2]->isComment()) { - $tokens->clearAt($index - 1); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php deleted file mode 100644 index 5c08880..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Semicolon; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SemicolonAfterInstructionFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Instructions must be terminated with a semicolon.', - [new CodeSample("\n")], - ); - } - - /** - * {@inheritdoc} - * - * Must run before SimplifiedIfReturnFixer. - */ - public function getPriority(): int - { - return 2; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_CLOSE_TAG); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 1; $index > 1; --$index) { - if (!$tokens[$index]->isGivenKind(\T_CLOSE_TAG)) { - continue; - } - - $prev = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$prev]->equalsAny([';', '{', '}', ':', [\T_OPEN_TAG]])) { - continue; - } - - $tokens->insertAt($prev + 1, new Token(';')); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php deleted file mode 100644 index 259e934..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php +++ /dev/null @@ -1,161 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Semicolon; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * remove_in_empty_for_expressions?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * remove_in_empty_for_expressions: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SpaceAfterSemicolonFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Fix whitespace after a semicolon.', - [ - new CodeSample( - <<<'PHP' - true, - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after CombineConsecutiveUnsetsFixer, MultilineWhitespaceBeforeSemicolonsFixer, NoEmptyStatementFixer, OrderedClassElementsFixer, SingleImportPerStatementFixer, SingleTraitInsertPerStatementFixer. - */ - public function getPriority(): int - { - return -1; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(';'); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('remove_in_empty_for_expressions', 'Whether spaces should be removed for empty `for` expressions.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $insideForParenthesesUntil = null; - - for ($index = 0, $max = \count($tokens) - 1; $index < $max; ++$index) { - if (true === $this->configuration['remove_in_empty_for_expressions']) { - if ($tokens[$index]->isGivenKind(\T_FOR)) { - $index = $tokens->getNextMeaningfulToken($index); - $insideForParenthesesUntil = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - continue; - } - - if ($index === $insideForParenthesesUntil) { - $insideForParenthesesUntil = null; - - continue; - } - } - - if (!$tokens[$index]->equals(';')) { - continue; - } - - if (!$tokens[$index + 1]->isWhitespace()) { - if ( - !$tokens[$index + 1]->equalsAny([')', [\T_INLINE_HTML]]) && ( - false === $this->configuration['remove_in_empty_for_expressions'] - || !$tokens[$index + 1]->equals(';') - ) - ) { - $tokens->insertAt($index + 1, new Token([\T_WHITESPACE, ' '])); - ++$max; - } - - continue; - } - - if ( - null !== $insideForParenthesesUntil - && ($tokens[$index + 2]->equals(';') || $index + 2 === $insideForParenthesesUntil) - && !Preg::match('/\R/', $tokens[$index + 1]->getContent()) - ) { - $tokens->clearAt($index + 1); - - continue; - } - - if ( - isset($tokens[$index + 2]) - && !$tokens[$index + 1]->equals([\T_WHITESPACE, ' ']) - && $tokens[$index + 1]->isWhitespace(" \t") - && !$tokens[$index + 2]->isComment() - && !$tokens[$index + 2]->equals(')') - ) { - $tokens[$index + 1] = new Token([\T_WHITESPACE, ' ']); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php deleted file mode 100644 index 799084e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php +++ /dev/null @@ -1,333 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Strict; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use Symfony\Component\OptionsResolver\Options; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * preserve_existing_declaration?: bool, - * strategy?: 'add_when_missing'|'enforce'|'remove', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * strategy: 'add_when_missing'|'enforce'|'remove', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Jordi Boggiano - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DeclareStrictTypesFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Force a strict types mode in all files.', - [ - new CodeSample( - " 'enforce'], - ), - new CodeSample( - " 'add_when_missing'], - ), - new CodeSample( - " 'remove'], - ), - new CodeSample( - " 'remove'], - ), - new CodeSample( // @TODO v4.0: remove me, "preserve_existing_declaration" option is deprecated - " false], - ), - new CodeSample( // @TODO v4.0: remove me, "preserve_existing_declaration" option is deprecated - " true], - ), - ], - null, - 'Enabling strict types will stop non strict code from working.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before BlankLineAfterOpeningTagFixer, DeclareEqualNormalizeFixer, HeaderCommentFixer. - */ - public function getPriority(): int - { - return 2; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isMonolithicPhp() && !$tokens->isTokenKindFound(\T_OPEN_TAG_WITH_ECHO); - } - - public function isRisky(): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $fixerName = $this->getName(); - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('preserve_existing_declaration', 'Whether existing strict_types=? should be preserved and not overridden.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->setNormalizer(static function (Options $options, bool $value) use ($fixerName): bool { - if (true === $value && 'enforce' !== $options['strategy']) { - throw new InvalidFixerConfigurationException( - $fixerName, - 'Cannot configure "strategy" in parallel to configuring "preserve_existing_declaration".', - ); - } - - return $value; - }) - ->setDeprecationMessage('Use `strategy` to configure behaviour.') // @TODO 4.0: remove option and normalizer related to it - ->getOption(), - (new FixerOptionBuilder('strategy', 'Whether existing strict_types=? should be enforced, removed (effectively turning strict mode off and using the engine into default type coercion mode), or added when missing.')) - ->setAllowedValues(['remove', 'add_when_missing', 'enforce']) - ->setDefault('enforce') - ->getOption(), - ]); - } - - /** - * @TODO v4.0: remove the hook - */ - protected function configurePostNormalisation(): void - { - // @phpstan-ignore-next-line offsetAccess.notFound "preserve_existing_declaration" option is deprecated - if ('enforce' === $this->configuration['strategy'] && true === $this->configuration['preserve_existing_declaration']) { - $this->configuration['strategy'] = 'add_when_missing'; - } - - // @phpstan-ignore-next-line unset.offset "preserve_existing_declaration" option is deprecated - unset($this->configuration['preserve_existing_declaration']); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $openTagIndex = $tokens[0]->isGivenKind(\T_INLINE_HTML) ? 1 : 0; - - $declaration = $this->getStrictTypesDeclaration($tokens); - - if ('remove' === $this->configuration['strategy']) { - if (null !== $declaration) { - $this->removeStrictTypesDeclaration($tokens, $declaration); - } - - return; - } - - if (null === $declaration) { - $this->insertSequence($openTagIndex, $tokens); // declaration not found, insert one - - return; - } - - $this->fixStrictTypesCasingAndValue($tokens, $declaration['sequence']); - } - - /** - * @return null|array{declare_index: int, open_parenthesis: int, close_parenthesis: int, sequence: array} - */ - private function getStrictTypesDeclaration(Tokens $tokens): ?array - { - foreach ($tokens->findGivenKind(\T_DECLARE) as $index => $token) { - $openParenthesis = $tokens->getNextMeaningfulToken($index); - $closeParenthesis = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesis); - - $strictTypesSequence = $tokens->findSequence([[\T_STRING, 'strict_types'], '=', [\T_LNUMBER]], $openParenthesis, $closeParenthesis, false); - if (null === $strictTypesSequence) { - continue; - } - - return [ - 'declare_index' => $index, - 'open_parenthesis' => $openParenthesis, - 'close_parenthesis' => $closeParenthesis, - 'sequence' => $strictTypesSequence, - ]; - } - - return null; - } - - /** - * @param array{declare_index: int, open_parenthesis: int, close_parenthesis: int, sequence: array} $declaration - */ - private function removeStrictTypesDeclaration(Tokens $tokens, array $declaration): void - { - $sequenceIndices = array_keys($declaration['sequence']); - $sequenceIndexMap = array_fill_keys($sequenceIndices, true); - \assert(\array_key_exists(0, $sequenceIndices)); - $sequenceStart = $sequenceIndices[0]; - $sequenceEnd = $sequenceIndices[\count($sequenceIndices) - 1]; - - if (!$this->hasOtherDeclareOptions($tokens, $declaration['open_parenthesis'], $declaration['close_parenthesis'], $sequenceIndexMap)) { - $this->removeDeclareStatement($tokens, $declaration['declare_index'], $declaration['close_parenthesis']); - - return; - } - - for ($index = $sequenceEnd; $index >= $sequenceStart; --$index) { - if ($tokens->isEmptyAt($index)) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - - $prevMeaningful = $tokens->getPrevMeaningfulToken($sequenceStart); - if (null !== $prevMeaningful && $tokens[$prevMeaningful]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($prevMeaningful); - - $nextMeaningful = $tokens->getNextMeaningfulToken($sequenceEnd); - if (null !== $nextMeaningful) { - $tokens->removeLeadingWhitespace($nextMeaningful, " \t"); - } - - return; - } - - $nextMeaningful = $tokens->getNextMeaningfulToken($sequenceEnd); - if (null !== $nextMeaningful && $tokens[$nextMeaningful]->equals(',')) { - $tokens->clearTokenAndMergeSurroundingWhitespace($nextMeaningful); - - $afterComma = $tokens->getNextMeaningfulToken($nextMeaningful); - if (null !== $afterComma) { - $tokens->removeLeadingWhitespace($afterComma, " \t"); - } - } - } - - /** - * @param array $sequenceIndexMap - */ - private function hasOtherDeclareOptions(Tokens $tokens, int $openParenthesis, int $closeParenthesis, array $sequenceIndexMap): bool - { - $index = $tokens->getNextMeaningfulToken($openParenthesis); - while (null !== $index && $index < $closeParenthesis) { - if ($tokens[$index]->isGivenKind(\T_STRING) && !isset($sequenceIndexMap[$index])) { - return true; - } - - $index = $tokens->getNextMeaningfulToken($index); - } - - return false; - } - - private function removeDeclareStatement(Tokens $tokens, int $declareIndex, int $closeParenthesis): void - { - $semicolonIndex = $tokens->getNextMeaningfulToken($closeParenthesis); - if (null === $semicolonIndex) { - return; - } - - for ($index = $semicolonIndex; $index >= $declareIndex; --$index) { - if ($tokens->isEmptyAt($index)) { - continue; - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($index); - } - } - - /** - * @param array $sequence - */ - private function fixStrictTypesCasingAndValue(Tokens $tokens, array $sequence): void - { - foreach ($sequence as $index => $token) { - if ($token->isGivenKind(\T_STRING)) { - $tokens[$index] = new Token([\T_STRING, strtolower($token->getContent())]); - - continue; - } - - if ($token->isGivenKind(\T_LNUMBER) && 'enforce' === $this->configuration['strategy']) { - $tokens[$index] = new Token([\T_LNUMBER, '1']); - - break; - } - } - } - - private function insertSequence(int $openTagIndex, Tokens $tokens): void - { - $sequence = [ - new Token([\T_DECLARE, 'declare']), - new Token('('), - new Token([\T_STRING, 'strict_types']), - new Token('='), - new Token([\T_LNUMBER, '1']), - new Token(')'), - new Token(';'), - ]; - $nextIndex = $openTagIndex + \count($sequence) + 1; - - $tokens->insertAt($openTagIndex + 1, $sequence); - - // transform "getContent(); - if (!str_contains($content, ' ') || str_contains($content, "\n")) { - $tokens[$openTagIndex] = new Token([$tokens[$openTagIndex]->getId(), trim($tokens[$openTagIndex]->getContent()).' ']); - } - - if (\count($tokens) === $nextIndex) { - return; // no more tokens after sequence, single_blank_line_at_eof might add a line - } - - $lineEnding = $this->whitespacesConfig->getLineEnding(); - if ($tokens[$nextIndex]->isWhitespace()) { - $content = $tokens[$nextIndex]->getContent(); - $tokens[$nextIndex] = new Token([\T_WHITESPACE, $lineEnding.ltrim($content, " \t")]); - } else { - $tokens->insertAt($nextIndex, new Token([\T_WHITESPACE, $lineEnding])); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php deleted file mode 100644 index eae5b37..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php +++ /dev/null @@ -1,77 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Strict; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StrictComparisonFixer extends AbstractFixer -{ - private const FIX_MAP = [ - \T_IS_EQUAL => [\T_IS_IDENTICAL, '==='], - \T_IS_NOT_EQUAL => [\T_IS_NOT_IDENTICAL, '!=='], - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Comparisons should be strict.', - [new CodeSample("isAnyTokenKindsFound([\T_IS_EQUAL, \T_IS_NOT_EQUAL]); - } - - public function isRisky(): bool - { - return true; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens->findGivenKind([\T_IS_EQUAL, \T_IS_NOT_EQUAL]) as $kind => $kindTokens) { - foreach ($kindTokens as $index => $token) { - \assert(isset(self::FIX_MAP[$kind])); - $newToken = self::FIX_MAP[$kind]; - - $tokens[$index] = new Token($newToken); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php deleted file mode 100644 index 65212d3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php +++ /dev/null @@ -1,170 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Strict; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StrictParamFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Functions should be used with `$strict` param set to `true`.', - [new CodeSample("isTokenKindFound(\T_STRING); - } - - public function isRisky(): bool - { - return true; - } - - /** - * {@inheritdoc} - * - * Must run before MethodArgumentSpaceFixer, NativeFunctionInvocationFixer. - */ - public function getPriority(): int - { - return 31; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - static $map = null; - - if (null === $map) { - $trueToken = new Token([\T_STRING, 'true']); - - $map = [ - 'array_keys' => [null, null, $trueToken], - 'array_search' => [null, null, $trueToken], - 'base64_decode' => [null, $trueToken], - 'in_array' => [null, null, $trueToken], - 'mb_detect_encoding' => [null, [new Token([\T_STRING, 'mb_detect_order']), new Token('('), new Token(')')], $trueToken], - ]; - } - - for ($index = $tokens->count() - 1; 0 <= $index; --$index) { - $token = $tokens[$index]; - - $nextIndex = $tokens->getNextMeaningfulToken($index); - if (null !== $nextIndex && !$tokens[$nextIndex]->equals('(')) { - continue; - } - - $lowercaseContent = strtolower($token->getContent()); - if (isset($map[$lowercaseContent]) && $functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) { - $this->fixFunction($tokens, $index, $map[$lowercaseContent]); - } - } - } - - /** - * @param list $functionParams - */ - private function fixFunction(Tokens $tokens, int $functionIndex, array $functionParams): void - { - $startBraceIndex = $tokens->getNextTokenOfKind($functionIndex, ['(']); - $endBraceIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $startBraceIndex); - $paramsQuantity = 0; - $expectParam = true; - - for ($index = $startBraceIndex + 1; $index < $endBraceIndex; ++$index) { - $token = $tokens[$index]; - - if ($expectParam && !$token->isWhitespace() && !$token->isComment()) { - ++$paramsQuantity; - $expectParam = false; - } - - if ($token->equals('(')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - continue; - } - - if ($token->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $index); - - continue; - } - - if ($token->equals(',')) { - $expectParam = true; - - continue; - } - } - - $functionParamsQuantity = \count($functionParams); - - if ($paramsQuantity === $functionParamsQuantity) { - return; - } - - $tokensToInsert = []; - - for ($i = $paramsQuantity; $i < $functionParamsQuantity; ++$i) { - // function call do not have all params that are required to set useStrict flag, exit from method! - if (null === $functionParams[$i]) { - return; - } - - $tokensToInsert[] = new Token(','); - $tokensToInsert[] = new Token([\T_WHITESPACE, ' ']); - - if (!\is_array($functionParams[$i])) { - $tokensToInsert[] = clone $functionParams[$i]; - - continue; - } - - foreach ($functionParams[$i] as $param) { - $tokensToInsert[] = clone $param; - } - } - - $beforeEndBraceIndex = $tokens->getPrevMeaningfulToken($endBraceIndex); - - if ($tokens[$beforeEndBraceIndex]->equals(',')) { - array_shift($tokensToInsert); - $tokensToInsert[] = new Token(','); - } - - $tokens->insertAt($beforeEndBraceIndex + 1, $tokensToInsert); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php deleted file mode 100644 index 24162f5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php +++ /dev/null @@ -1,155 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @deprecated Use `string_implicit_backslashes` with config: ['single_quoted' => 'ignore', 'double_quoted' => 'escape', 'heredoc' => 'escape'] (default) - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * double_quoted?: bool, - * heredoc_syntax?: bool, - * single_quoted?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * double_quoted: bool, - * heredoc_syntax: bool, - * single_quoted: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Filippo Tessarotto - * @author Michael Vorisek - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class EscapeImplicitBackslashesFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, DeprecatedFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getSuccessorsNames(): array - { - return array_keys($this->proxyFixers); - } - - public function getDefinition(): FixerDefinitionInterface - { - $codeSample = <<<'EOF' - true], - ), - new CodeSample( - $codeSample, - ['double_quoted' => false], - ), - new CodeSample( - $codeSample, - ['heredoc_syntax' => false], - ), - ], - 'In PHP double-quoted strings and heredocs some chars like `n`, `$` or `u` have special meanings if preceded by a backslash ' - .'(and some are special only if followed by other special chars), while a backslash preceding other chars are interpreted like a plain ' - .'backslash. The precise list of those special chars is hard to remember and to identify quickly: this fixer escapes backslashes ' - ."that do not start a special interpretation with the char after them.\n" - .'It is possible to fix also single-quoted strings: in this case there is no special chars apart from single-quote and backslash ' - .'itself, so the fixer simply ensure that all backslashes are escaped. Both single and double backslashes are allowed in single-quoted ' - .'strings, so the purpose in this context is mainly to have a uniformed way to have them written all over the codebase.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before HeredocToNowdocFixer, SingleQuoteFixer. - * Must run after MultilineStringToHeredocFixer. - */ - public function getPriority(): int - { - return parent::getPriority(); - } - - protected function configurePostNormalisation(): void - { - /** @var StringImplicitBackslashesFixer */ - $stringImplicitBackslashesFixer = $this->proxyFixers['string_implicit_backslashes']; - - $stringImplicitBackslashesFixer->configure([ - 'single_quoted' => true === $this->configuration['single_quoted'] ? 'escape' : 'ignore', - 'double_quoted' => true === $this->configuration['double_quoted'] ? 'escape' : 'ignore', - 'heredoc' => true === $this->configuration['heredoc_syntax'] ? 'escape' : 'ignore', - ]); - } - - protected function createProxyFixers(): array - { - $stringImplicitBackslashesFixer = new StringImplicitBackslashesFixer(); - $stringImplicitBackslashesFixer->configure([ - 'single_quoted' => 'ignore', - 'double_quoted' => 'escape', - 'heredoc' => 'escape', - ]); - - return [ - $stringImplicitBackslashesFixer, - ]; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('single_quoted', 'Whether to fix single-quoted strings.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - (new FixerOptionBuilder('double_quoted', 'Whether to fix double-quoted strings.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - (new FixerOptionBuilder('heredoc_syntax', 'Whether to fix heredoc syntax.')) - ->setAllowedTypes(['bool']) - ->setDefault(true) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php deleted file mode 100644 index 6908e7d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php +++ /dev/null @@ -1,168 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Filippo Tessarotto - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ExplicitStringVariableFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts implicit variables into explicit ones in double-quoted strings or heredoc syntax.', - [new CodeSample( - <<<'EOT' - country !"; - $c = "I have $farm[0] chickens !"; - - EOT, - )], - 'The reasoning behind this rule is the following:' - ."\n".'- When there are two valid ways of doing the same thing, using both is confusing, there should be a coding standard to follow.' - ."\n".'- PHP manual marks `"$var"` syntax as implicit and `"{$var}"` syntax as explicit: explicit code should always be preferred.' - ."\n".'- Explicit syntax allows word concatenation inside strings, e.g. `"{$var}IsAVar"`, implicit doesn\'t.' - ."\n".'- Explicit syntax is easier to detect for IDE/editors and therefore has colors/highlight with higher contrast, which is easier to read.' - ."\n".'Backtick operator is skipped because it is harder to handle; you can use `backtick_to_shell_exec` fixer to normalize backticks to strings.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoUselessConcatOperatorFixer. - * Must run after BacktickToShellExecFixer. - */ - public function getPriority(): int - { - return 6; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_VARIABLE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $backtickStarted = false; - for ($index = \count($tokens) - 1; $index > 0; --$index) { - $token = $tokens[$index]; - - if ($token->equals('`')) { - $backtickStarted = !$backtickStarted; - - continue; - } - - if ($backtickStarted || !$token->isGivenKind(\T_VARIABLE)) { - continue; - } - - $prevToken = $tokens[$index - 1]; - - if (!$this->isStringPartToken($prevToken)) { - continue; - } - - $distinctVariableIndex = $index; - $variableTokens = [ - $distinctVariableIndex => [ - 'tokens' => [$index => $token], - 'firstVariableTokenIndex' => $index, - 'lastVariableTokenIndex' => $index, - ], - ]; - - $nextIndex = $index + 1; - $squareBracketCount = 0; - - while (!$this->isStringPartToken($tokens[$nextIndex])) { - if ($tokens[$nextIndex]->isGivenKind(\T_CURLY_OPEN)) { - $nextIndex = $tokens->getNextTokenOfKind($nextIndex, [[CT::T_CURLY_CLOSE]]); - } elseif ($tokens[$nextIndex]->isGivenKind(\T_VARIABLE) && 1 !== $squareBracketCount) { - $distinctVariableIndex = $nextIndex; - $variableTokens[$distinctVariableIndex] = [ - 'tokens' => [$nextIndex => $tokens[$nextIndex]], - 'firstVariableTokenIndex' => $nextIndex, - 'lastVariableTokenIndex' => $nextIndex, - ]; - } else { - $variableTokens[$distinctVariableIndex]['tokens'][$nextIndex] = $tokens[$nextIndex]; - $variableTokens[$distinctVariableIndex]['lastVariableTokenIndex'] = $nextIndex; - - if ($tokens[$nextIndex]->equalsAny(['[', ']'])) { - ++$squareBracketCount; - } - } - - ++$nextIndex; - } - krsort($variableTokens, \SORT_NUMERIC); - - foreach ($variableTokens as $distinctVariableSet) { - if (1 === \count($distinctVariableSet['tokens'])) { - $singleVariableIndex = array_key_first($distinctVariableSet['tokens']); - $singleVariableToken = current($distinctVariableSet['tokens']); - $tokens->overrideRange($singleVariableIndex, $singleVariableIndex, [ - new Token([\T_CURLY_OPEN, '{']), - new Token([\T_VARIABLE, $singleVariableToken->getContent()]), - new Token([CT::T_CURLY_CLOSE, '}']), - ]); - } else { - foreach ($distinctVariableSet['tokens'] as $variablePartIndex => $variablePartToken) { - if ($variablePartToken->isGivenKind(\T_NUM_STRING)) { - $tokens[$variablePartIndex] = new Token([\T_LNUMBER, $variablePartToken->getContent()]); - - continue; - } - - if ($variablePartToken->isGivenKind(\T_STRING) && $tokens[$variablePartIndex + 1]->equals(']')) { - $tokens[$variablePartIndex] = new Token([\T_CONSTANT_ENCAPSED_STRING, "'".$variablePartToken->getContent()."'"]); - } - } - - $tokens->insertAt($distinctVariableSet['lastVariableTokenIndex'] + 1, new Token([CT::T_CURLY_CLOSE, '}'])); - $tokens->insertAt($distinctVariableSet['firstVariableTokenIndex'], new Token([\T_CURLY_OPEN, '{'])); - } - } - } - } - - /** - * Check if token is a part of a string. - * - * @param Token $token The token to check - */ - private function isStringPartToken(Token $token): bool - { - return $token->isGivenKind(\T_ENCAPSED_AND_WHITESPACE) - || $token->isGivenKind(\T_START_HEREDOC) - || '"' === $token->getContent() - || 'b"' === strtolower($token->getContent()); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocClosingMarkerFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocClosingMarkerFixer.php deleted file mode 100644 index 760d042..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocClosingMarkerFixer.php +++ /dev/null @@ -1,207 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * closing_marker?: string, - * explicit_heredoc_style?: bool, - * reserved_closing_markers?: list, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * closing_marker: string, - * explicit_heredoc_style: bool, - * reserved_closing_markers: list, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Michael Vorisek - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class HeredocClosingMarkerFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var non-empty-list - */ - public const RESERVED_CLOSING_MARKERS = [ - 'CSS', - 'DIFF', - 'HTML', - 'JS', - 'JSON', - 'MD', - 'PHP', - 'PYTHON', - 'RST', - 'TS', - 'SQL', - 'XML', - 'YAML', - ]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Unify `heredoc` or `nowdoc` closing marker.', - [ - new CodeSample( - <<<'EOD' - 'EOF'], - ), - new CodeSample( - <<<'EOD_' - true], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_START_HEREDOC); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder( - 'closing_marker', - 'Preferred closing marker.', - )) - ->setAllowedTypes(['string']) - ->setDefault('EOD') - ->getOption(), - (new FixerOptionBuilder( - 'reserved_closing_markers', - 'Reserved closing markers to be kept unchanged.', - )) - ->setAllowedTypes(['string[]']) - ->setDefault(self::RESERVED_CLOSING_MARKERS) - ->getOption(), - (new FixerOptionBuilder( - 'explicit_heredoc_style', - 'Whether the closing marker should be wrapped in double quotes.', - )) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $reservedClosingMarkersMap = null; - - $startIndex = null; - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(\T_START_HEREDOC)) { - $startIndex = $index; - - continue; - } - - if (null !== $startIndex && $token->isGivenKind(\T_END_HEREDOC)) { - $existingClosingMarker = trim($token->getContent()); - - if (null === $reservedClosingMarkersMap) { - $reservedClosingMarkersMap = []; - foreach ($this->configuration['reserved_closing_markers'] as $v) { - $reservedClosingMarkersMap[mb_strtoupper($v)] = $v; - } - } - - $existingClosingMarker = mb_strtoupper($existingClosingMarker); - do { - $newClosingMarker = $reservedClosingMarkersMap[$existingClosingMarker] ?? null; - if (!str_ends_with($existingClosingMarker, '_')) { - break; - } - $existingClosingMarker = substr($existingClosingMarker, 0, -1); - } while (null === $newClosingMarker); - - if (null === $newClosingMarker) { - $newClosingMarker = $this->configuration['closing_marker']; - } - - $content = $tokens->generatePartialCode($startIndex + 1, $index - 1); - while (Preg::match('~(^|[\r\n])\s*'.preg_quote($newClosingMarker, '~').'(?!\w)~', $content)) { - $newClosingMarker .= '_'; - } - - [$tokens[$startIndex], $tokens[$index]] = $this->convertClosingMarker($tokens[$startIndex], $token, $newClosingMarker); - - $startIndex = null; - - continue; - } - } - } - - /** - * @return array{Token, Token} - */ - private function convertClosingMarker(Token $startToken, Token $endToken, string $newClosingMarker): array - { - $isNowdoc = str_contains($startToken->getContent(), '\''); - - $markerQuote = $isNowdoc - ? '\'' - : (true === $this->configuration['explicit_heredoc_style'] ? '"' : ''); - - return [new Token([ - $startToken->getId(), - Preg::replace('/<<<\h*\K["\']?[^\s"\']+["\']?/', $markerQuote.$newClosingMarker.$markerQuote, $startToken->getContent()), - ]), new Token([ - $endToken->getId(), - Preg::replace('/\S+/', $newClosingMarker, $endToken->getContent()), - ])]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php deleted file mode 100644 index 7bbbd86..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php +++ /dev/null @@ -1,109 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class HeredocToNowdocFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Convert `heredoc` to `nowdoc` where possible.', - [ - new CodeSample( - <<<'EOF' - isTokenKindFound(\T_START_HEREDOC); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_START_HEREDOC) || str_contains($token->getContent(), "'")) { - continue; - } - - if ($tokens[$index + 1]->isGivenKind(\T_END_HEREDOC)) { - $tokens[$index] = $this->convertToNowdoc($token); - - continue; - } - - if ( - !$tokens[$index + 1]->isGivenKind(\T_ENCAPSED_AND_WHITESPACE) - || !$tokens[$index + 2]->isGivenKind(\T_END_HEREDOC) - ) { - continue; - } - - $content = $tokens[$index + 1]->getContent(); - // regex: odd number of backslashes, not followed by dollar - if (Preg::match('/(?convertToNowdoc($token); - $content = str_replace(['\\\\', '\$'], ['\\', '$'], $content); - $tokens[$index + 1] = new Token([ - $tokens[$index + 1]->getId(), - $content, - ]); - } - } - - /** - * Transforms the heredoc start token to nowdoc notation. - */ - private function convertToNowdoc(Token $token): Token - { - return new Token([ - $token->getId(), - Preg::replace('/^([Bb]?<<<)(\h*)"?([^\s"]+)"?/', '$1$2\'$3\'', $token->getContent()), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/MultilineStringToHeredocFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/MultilineStringToHeredocFixer.php deleted file mode 100644 index 8dbc68e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/MultilineStringToHeredocFixer.php +++ /dev/null @@ -1,156 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Michael Vorisek - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MultilineStringToHeredocFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Convert multiline string to `heredoc` or `nowdoc`.', - [ - new CodeSample( - <<<'EOD' - getName()}"; - EOD."\n", - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_CONSTANT_ENCAPSED_STRING, \T_ENCAPSED_AND_WHITESPACE]); - } - - /** - * {@inheritdoc} - * - * Must run before EscapeImplicitBackslashesFixer, HeredocIndentationFixer, StringImplicitBackslashesFixer. - */ - public function getPriority(): int - { - return 16; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $complexStringStartIndex = null; - foreach ($tokens as $index => $token) { - if (null === $complexStringStartIndex) { - if ($token->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - $this->convertStringToHeredoc($tokens, $index, $index); - } elseif ($token->equalsAny(['"', 'b"', 'B"'])) { - $complexStringStartIndex = $index; - } - } elseif ($token->equals('"')) { - $this->convertStringToHeredoc($tokens, $complexStringStartIndex, $index); - - $complexStringStartIndex = null; - } - } - } - - private function convertStringToHeredoc(Tokens $tokens, int $stringStartIndex, int $stringEndIndex): void - { - $closingMarker = 'EOD'; - - if ($tokens[$stringStartIndex]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - $content = $tokens[$stringStartIndex]->getContent(); - if ('b' === strtolower(substr($content, 0, 1))) { - $content = substr($content, 1); - } - $isSingleQuoted = str_starts_with($content, '\''); - $content = substr($content, 1, -1); - - if ($isSingleQuoted) { - $content = Preg::replace('~\\\([\\\\\'])~', '$1', $content); - } else { - $content = Preg::replace('~(\\\\\\\)|\\\(")~', '$1$2', $content); - } - - $constantStringToken = new Token([\T_ENCAPSED_AND_WHITESPACE, $content."\n"]); - } else { - $content = $tokens->generatePartialCode($stringStartIndex + 1, $stringEndIndex - 1); - $isSingleQuoted = false; - $constantStringToken = null; - } - - if (!str_contains($content, "\n") && !str_contains($content, "\r")) { - return; - } - - while (Preg::match('~(^|[\r\n])\s*'.preg_quote($closingMarker, '~').'(?!\w)~', $content)) { - $closingMarker .= '_'; - } - - $quoting = $isSingleQuoted ? '\'' : ''; - $heredocStartToken = new Token([\T_START_HEREDOC, '<<<'.$quoting.$closingMarker.$quoting."\n"]); - $heredocEndToken = new Token([\T_END_HEREDOC, $closingMarker]); - - if (null !== $constantStringToken) { - $tokens->overrideRange($stringStartIndex, $stringEndIndex, [ - $heredocStartToken, - $constantStringToken, - $heredocEndToken, - ]); - } else { - for ($i = $stringStartIndex + 1; $i < $stringEndIndex; ++$i) { - if ($tokens[$i]->isGivenKind(\T_ENCAPSED_AND_WHITESPACE)) { - $tokens[$i] = new Token([ - $tokens[$i]->getId(), - Preg::replace('~(\\\\\\\)|\\\(")~', '$1$2', $tokens[$i]->getContent()), - ]); - } - } - - $tokens[$stringStartIndex] = $heredocStartToken; - $tokens[$stringEndIndex] = $heredocEndToken; - if ($tokens[$stringEndIndex - 1]->isGivenKind(\T_ENCAPSED_AND_WHITESPACE)) { - $tokens[$stringEndIndex - 1] = new Token([ - $tokens[$stringEndIndex - 1]->getId(), - $tokens[$stringEndIndex - 1]->getContent()."\n", - ]); - } else { - $tokens->insertAt($stringEndIndex, new Token([ - \T_ENCAPSED_AND_WHITESPACE, - "\n", - ])); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php deleted file mode 100644 index a0c1e04..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php +++ /dev/null @@ -1,77 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author ntzm - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoBinaryStringFixer extends AbstractFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound( - [ - \T_CONSTANT_ENCAPSED_STRING, - \T_START_HEREDOC, - 'b"', - ], - ); - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There should not be a binary flag before strings.', - [ - new CodeSample(" $token) { - if ($token->isGivenKind([\T_CONSTANT_ENCAPSED_STRING, \T_START_HEREDOC])) { - $content = $token->getContent(); - - if ('b' === strtolower($content[0])) { - $tokens[$index] = new Token([$token->getId(), substr($content, 1)]); - } - } elseif ($token->equals('b"')) { - $tokens[$index] = new Token('"'); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php deleted file mode 100644 index 96d08dc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php +++ /dev/null @@ -1,101 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoTrailingWhitespaceInStringFixer extends AbstractFixer -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_CONSTANT_ENCAPSED_STRING, \T_ENCAPSED_AND_WHITESPACE, \T_INLINE_HTML]); - } - - public function isRisky(): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There must be no trailing whitespace at the end of lines in strings.', - [ - new CodeSample( - "count() - 1, $last = true; $index >= 0; --$index, $last = false) { - $token = $tokens[$index]; - - if (!$token->isGivenKind([\T_CONSTANT_ENCAPSED_STRING, \T_ENCAPSED_AND_WHITESPACE, \T_INLINE_HTML])) { - continue; - } - - $isInlineHtml = $token->isGivenKind(\T_INLINE_HTML); - $regex = $isInlineHtml && $last ? '/\h+(?=\R|$)/' : '/\h+(?=\R)/'; - $content = Preg::replace($regex, '', $token->getContent()); - - if ($token->getContent() === $content) { - continue; - } - - if (!$isInlineHtml || 0 === $index) { - $this->updateContent($tokens, $index, $content); - - continue; - } - - $prev = $index - 1; - - if ($tokens[$prev]->equals([\T_CLOSE_TAG, '?>']) && Preg::match('/^\R/', $content, $match)) { - $tokens[$prev] = new Token([\T_CLOSE_TAG, $tokens[$prev]->getContent().$match[0]]); - $content = substr($content, \strlen($match[0])); - $content = false === $content ? '' : $content; // @phpstan-ignore-line due to https://github.com/phpstan/phpstan/issues/1215 , awaiting PHP8 as min requirement of Fixer - } - - $this->updateContent($tokens, $index, $content); - } - } - - private function updateContent(Tokens $tokens, int $index, string $content): void - { - if ('' === $content) { - $tokens->clearAt($index); - - return; - } - - $tokens[$index] = new Token([$tokens[$index]->getId(), $content]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php deleted file mode 100644 index 3cbdc5d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php +++ /dev/null @@ -1,98 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dave van der Brugge - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SimpleToComplexStringVariableFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Converts explicit variables in double-quoted strings and heredoc syntax from simple to complex format (`${` to `{$`).', - [ - new CodeSample( - <<<'EOT' - isTokenKindFound(\T_DOLLAR_OPEN_CURLY_BRACES); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 3; $index > 0; --$index) { - if (!$tokens[$index]->isGivenKind(\T_DOLLAR_OPEN_CURLY_BRACES)) { - continue; - } - $varnameToken = $tokens[$index + 1]; - - if (!$varnameToken->isGivenKind(\T_STRING_VARNAME)) { - continue; - } - - $dollarCloseToken = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_COMPLEX_STRING_VARIABLE, $index); - - $prevTokenContent = $tokens[$index - 1]->getContent(); - if (str_ends_with($prevTokenContent, '$') && !str_ends_with($prevTokenContent, '\$')) { - $tokens[$index - 1] = new Token([\T_ENCAPSED_AND_WHITESPACE, substr($prevTokenContent, 0, -1).'\$']); - } - $tokens[$index] = new Token([\T_CURLY_OPEN, '{']); - $tokens[$index + 1] = new Token([\T_VARIABLE, '$'.$varnameToken->getContent()]); - $tokens[$dollarCloseToken] = new Token([CT::T_CURLY_CLOSE, '}']); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php deleted file mode 100644 index 48d7fb6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php +++ /dev/null @@ -1,124 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * strings_containing_single_quote_chars?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * strings_containing_single_quote_chars: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleQuoteFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - $codeSample = <<<'EOF' - true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before NoUselessConcatOperatorFixer. - * Must run after BacktickToShellExecFixer, EscapeImplicitBackslashesFixer, StringImplicitBackslashesFixer. - */ - public function getPriority(): int - { - return 10; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_CONSTANT_ENCAPSED_STRING); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - continue; - } - - $content = $token->getContent(); - $prefix = ''; - - if ('b' === strtolower($content[0])) { - $prefix = $content[0]; - $content = substr($content, 1); - } - - if ( - '"' === $content[0] - && (true === $this->configuration['strings_containing_single_quote_chars'] || !str_contains($content, "'")) - // regex: odd number of backslashes, not followed by double quote or dollar - && !Preg::match('/(?setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringImplicitBackslashesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringImplicitBackslashesFixer.php deleted file mode 100644 index 0f25ff9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringImplicitBackslashesFixer.php +++ /dev/null @@ -1,195 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * double_quoted?: 'escape'|'ignore'|'unescape', - * heredoc?: 'escape'|'ignore'|'unescape', - * single_quoted?: 'escape'|'ignore'|'unescape', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * double_quoted: 'escape'|'ignore'|'unescape', - * heredoc: 'escape'|'ignore'|'unescape', - * single_quoted: 'escape'|'ignore'|'unescape', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Filippo Tessarotto - * @author Michael Vorisek - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StringImplicitBackslashesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - $codeSample = <<<'EOF' - 'escape'], - ), - new CodeSample( - $codeSample, - ['double_quoted' => 'unescape'], - ), - new CodeSample( - $codeSample, - ['heredoc' => 'unescape'], - ), - ], - 'In PHP double-quoted strings and heredocs some chars like `n`, `$` or `u` have special meanings if preceded by a backslash ' - .'(and some are special only if followed by other special chars), while a backslash preceding other chars are interpreted like a plain ' - .'backslash. The precise list of those special chars is hard to remember and to identify quickly: this fixer escapes backslashes ' - ."that do not start a special interpretation with the char after them.\n" - .'It is possible to fix also single-quoted strings: in this case there is no special chars apart from single-quote and backslash ' - .'itself, so the fixer simply ensure that all backslashes are escaped. Both single and double backslashes are allowed in single-quoted ' - .'strings, so the purpose in this context is mainly to have a uniformed way to have them written all over the codebase.', - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_ENCAPSED_AND_WHITESPACE, \T_CONSTANT_ENCAPSED_STRING]); - } - - /** - * {@inheritdoc} - * - * Must run before HeredocToNowdocFixer, SingleQuoteFixer. - * Must run after MultilineStringToHeredocFixer. - */ - public function getPriority(): int - { - return 15; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $singleQuotedReservedRegex = '[\'\\\]'; - $doubleQuotedReservedRegex = '(?:[efnrtv$"\\\0-7]|x[0-9A-Fa-f]|u{|$)'; - $heredocSyntaxReservedRegex = '(?:[efnrtv$\\\0-7]|x[0-9A-Fa-f]|u{|$)'; - - $doubleQuoteOpened = false; - foreach ($tokens as $index => $token) { - if ($token->equalsAny(['"', 'b"', 'B"'])) { - $doubleQuoteOpened = !$doubleQuoteOpened; - } - - if (!$token->isGivenKind([\T_ENCAPSED_AND_WHITESPACE, \T_CONSTANT_ENCAPSED_STRING])) { - continue; - } - - $content = $token->getContent(); - if (!str_contains($content, '\\')) { - continue; - } - - // nowdoc syntax - if ($token->isGivenKind(\T_ENCAPSED_AND_WHITESPACE) && '\'' === substr(rtrim($tokens[$index - 1]->getContent()), -1)) { - continue; - } - - $firstTwoCharacters = strtolower(substr($content, 0, 2)); - $isSingleQuotedString = $token->isGivenKind(\T_CONSTANT_ENCAPSED_STRING) && ('\'' === $content[0] || 'b\'' === $firstTwoCharacters); - $isDoubleQuotedString = ($token->isGivenKind(\T_CONSTANT_ENCAPSED_STRING) && ('"' === $content[0] || 'b"' === $firstTwoCharacters)) - || ($token->isGivenKind(\T_ENCAPSED_AND_WHITESPACE) && $doubleQuoteOpened); - - if ($isSingleQuotedString - ? 'ignore' === $this->configuration['single_quoted'] - : ($isDoubleQuotedString - ? 'ignore' === $this->configuration['double_quoted'] - : 'ignore' === $this->configuration['heredoc']) - ) { - continue; - } - - $escapeBackslashes = $isSingleQuotedString - ? 'escape' === $this->configuration['single_quoted'] - : ($isDoubleQuotedString - ? 'escape' === $this->configuration['double_quoted'] - : 'escape' === $this->configuration['heredoc']); - - $reservedRegex = $isSingleQuotedString - ? $singleQuotedReservedRegex - : ($isDoubleQuotedString - ? $doubleQuotedReservedRegex - : $heredocSyntaxReservedRegex); - - if ($escapeBackslashes) { - $regex = '/(?getId(), $newContent]); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('single_quoted', 'Whether to escape backslashes in single-quoted strings.')) - ->setAllowedValues(['escape', 'unescape', 'ignore']) - ->setDefault('unescape') - ->getOption(), - (new FixerOptionBuilder('double_quoted', 'Whether to escape backslashes in double-quoted strings.')) - ->setAllowedValues(['escape', 'unescape', 'ignore']) - ->setDefault('escape') - ->getOption(), - (new FixerOptionBuilder('heredoc', 'Whether to escape backslashes in heredoc syntax.')) - ->setAllowedValues(['escape', 'unescape', 'ignore']) - ->setDefault('escape') - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLengthToEmptyFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLengthToEmptyFixer.php deleted file mode 100644 index d51b121..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLengthToEmptyFixer.php +++ /dev/null @@ -1,326 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFunctionReferenceFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StringLengthToEmptyFixer extends AbstractFunctionReferenceFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'String tests for empty must be done against `\'\'`, not with `strlen`.', - [new CodeSample("findStrLengthCalls($tokens) as $candidate) { - [$functionNameIndex, $openParenthesisIndex, $closeParenthesisIndex] = $candidate; - $arguments = $argumentsAnalyzer->getArguments($tokens, $openParenthesisIndex, $closeParenthesisIndex); - - if (1 !== \count($arguments)) { - continue; // must be one argument - } - - // test for leading `\` before `strlen` call - - $nextIndex = $tokens->getNextMeaningfulToken($closeParenthesisIndex); - $previousIndex = $tokens->getPrevMeaningfulToken($functionNameIndex); - - if ($tokens[$previousIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $namespaceSeparatorIndex = $previousIndex; - $previousIndex = $tokens->getPrevMeaningfulToken($previousIndex); - } else { - $namespaceSeparatorIndex = null; - } - - // test for yoda vs non-yoda fix case - - if ($this->isOperatorOfInterest($tokens[$previousIndex])) { // test if valid yoda case to fix - $operatorIndex = $previousIndex; - $operandIndex = $tokens->getPrevMeaningfulToken($previousIndex); - - if (!$this->isOperandOfInterest($tokens[$operandIndex])) { // test if operand is `0` or `1` - continue; - } - - $replacement = $this->getReplacementYoda($tokens[$operatorIndex], $tokens[$operandIndex]); - - if (null === $replacement) { - continue; - } - - if ($this->isOfHigherPrecedence($tokens[$nextIndex])) { // is of higher precedence right; continue - continue; - } - - if ($this->isOfHigherPrecedence($tokens[$tokens->getPrevMeaningfulToken($operandIndex)])) { // is of higher precedence left; continue - continue; - } - } elseif ($this->isOperatorOfInterest($tokens[$nextIndex])) { // test if valid !yoda case to fix - $operatorIndex = $nextIndex; - $operandIndex = $tokens->getNextMeaningfulToken($nextIndex); - - if (!$this->isOperandOfInterest($tokens[$operandIndex])) { // test if operand is `0` or `1` - continue; - } - - $replacement = $this->getReplacementNotYoda($tokens[$operatorIndex], $tokens[$operandIndex]); - - if (null === $replacement) { - continue; - } - - if ($this->isOfHigherPrecedence($tokens[$tokens->getNextMeaningfulToken($operandIndex)])) { // is of higher precedence right; continue - continue; - } - - if ($this->isOfHigherPrecedence($tokens[$previousIndex])) { // is of higher precedence left; continue - continue; - } - } else { - continue; - } - - // prepare for fixing - - $keepParentheses = $this->keepParentheses($tokens, $openParenthesisIndex, $closeParenthesisIndex); - - if (\T_IS_IDENTICAL === $replacement) { - $operandContent = '==='; - } else { // T_IS_NOT_IDENTICAL === $replacement - $operandContent = '!=='; - } - - // apply fixing - - $tokens[$operandIndex] = new Token([\T_CONSTANT_ENCAPSED_STRING, "''"]); - $tokens[$operatorIndex] = new Token([$replacement, $operandContent]); - - if (!$keepParentheses) { - $tokens->clearTokenAndMergeSurroundingWhitespace($closeParenthesisIndex); - $tokens->clearTokenAndMergeSurroundingWhitespace($openParenthesisIndex); - } - - $tokens->clearTokenAndMergeSurroundingWhitespace($functionNameIndex); - - if (null !== $namespaceSeparatorIndex) { - $tokens->clearTokenAndMergeSurroundingWhitespace($namespaceSeparatorIndex); - } - } - } - - private function getReplacementYoda(Token $operator, Token $operand): ?int - { - /* Yoda 0 - - 0 === strlen($b) | '' === $b - 0 !== strlen($b) | '' !== $b - 0 <= strlen($b) | X makes no sense, assume overridden - 0 >= strlen($b) | '' === $b - 0 < strlen($b) | '' !== $b - 0 > strlen($b) | X makes no sense, assume overridden - */ - - if ('0' === $operand->getContent()) { - if ($operator->isGivenKind([\T_IS_IDENTICAL, \T_IS_GREATER_OR_EQUAL])) { - return \T_IS_IDENTICAL; - } - - if ($operator->isGivenKind(\T_IS_NOT_IDENTICAL) || $operator->equals('<')) { - return \T_IS_NOT_IDENTICAL; - } - - return null; - } - - /* Yoda 1 - - 1 === strlen($b) | X cannot simplify - 1 !== strlen($b) | X cannot simplify - 1 <= strlen($b) | '' !== $b - 1 >= strlen($b) | cannot simplify - 1 < strlen($b) | cannot simplify - 1 > strlen($b) | '' === $b - */ - - if ($operator->isGivenKind(\T_IS_SMALLER_OR_EQUAL)) { - return \T_IS_NOT_IDENTICAL; - } - - if ($operator->equals('>')) { - return \T_IS_IDENTICAL; - } - - return null; - } - - private function getReplacementNotYoda(Token $operator, Token $operand): ?int - { - /* Not Yoda 0 - - strlen($b) === 0 | $b === '' - strlen($b) !== 0 | $b !== '' - strlen($b) <= 0 | $b === '' - strlen($b) >= 0 | X makes no sense, assume overridden - strlen($b) < 0 | X makes no sense, assume overridden - strlen($b) > 0 | $b !== '' - */ - - if ('0' === $operand->getContent()) { - if ($operator->isGivenKind([\T_IS_IDENTICAL, \T_IS_SMALLER_OR_EQUAL])) { - return \T_IS_IDENTICAL; - } - - if ($operator->isGivenKind(\T_IS_NOT_IDENTICAL) || $operator->equals('>')) { - return \T_IS_NOT_IDENTICAL; - } - - return null; - } - - /* Not Yoda 1 - - strlen($b) === 1 | X cannot simplify - strlen($b) !== 1 | X cannot simplify - strlen($b) <= 1 | X cannot simplify - strlen($b) >= 1 | $b !== '' - strlen($b) < 1 | $b === '' - strlen($b) > 1 | X cannot simplify - */ - - if ($operator->isGivenKind(\T_IS_GREATER_OR_EQUAL)) { - return \T_IS_NOT_IDENTICAL; - } - - if ($operator->equals('<')) { - return \T_IS_IDENTICAL; - } - - return null; - } - - private function isOperandOfInterest(Token $token): bool - { - if (!$token->isGivenKind(\T_LNUMBER)) { - return false; - } - - $content = $token->getContent(); - - return '0' === $content || '1' === $content; - } - - private function isOperatorOfInterest(Token $token): bool - { - return - $token->isGivenKind([\T_IS_IDENTICAL, \T_IS_NOT_IDENTICAL, \T_IS_SMALLER_OR_EQUAL, \T_IS_GREATER_OR_EQUAL]) - || $token->equals('<') || $token->equals('>'); - } - - private function isOfHigherPrecedence(Token $token): bool - { - return $token->isGivenKind([\T_INSTANCEOF, \T_POW, \T_SL, \T_SR]) || $token->equalsAny([ - '!', - '%', - '*', - '+', - '-', - '.', - '/', - '~', - '?', - ]); - } - - private function keepParentheses(Tokens $tokens, int $openParenthesisIndex, int $closeParenthesisIndex): bool - { - $i = $tokens->getNextMeaningfulToken($openParenthesisIndex); - - if ($tokens[$i]->isCast()) { - $i = $tokens->getNextMeaningfulToken($i); - } - - for (; $i < $closeParenthesisIndex; ++$i) { - $token = $tokens[$i]; - - if ($token->isGivenKind([\T_VARIABLE, \T_STRING]) || $token->isObjectOperator() || $token->isWhitespace() || $token->isComment()) { - continue; - } - - $blockType = Tokens::detectBlockType($token); - - if (null !== $blockType && $blockType['isStart']) { - $i = $tokens->findBlockEnd($blockType['type'], $i); - - continue; - } - - return true; - } - - return false; - } - - /** - * @return iterable - */ - private function findStrLengthCalls(Tokens $tokens): iterable - { - $candidates = []; - $count = \count($tokens); - - for ($i = 0; $i < $count; ++$i) { - $candidate = $this->find('strlen', $tokens, $i, $count); - - if (null === $candidate) { - break; - } - - $i = $candidate[1]; // proceed to openParenthesisIndex - $candidates[] = $candidate; - } - - foreach (array_reverse($candidates) as $candidate) { - yield $candidate; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php deleted file mode 100644 index ba3601b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\StringNotation; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixes the line endings in multi-line strings. - * - * @author Ilija Tovilo - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StringLineEndingFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_CONSTANT_ENCAPSED_STRING, \T_ENCAPSED_AND_WHITESPACE, \T_INLINE_HTML]); - } - - public function isRisky(): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'All multi-line strings must use correct line ending.', - [ - new CodeSample( - "whitespacesConfig->getLineEnding(); - - foreach ($tokens as $tokenIndex => $token) { - if (!$token->isGivenKind([\T_CONSTANT_ENCAPSED_STRING, \T_ENCAPSED_AND_WHITESPACE, \T_INLINE_HTML])) { - continue; - } - - $tokens[$tokenIndex] = new Token([ - $token->getId(), - Preg::replace( - '#\R#u', - $ending, - $token->getContent(), - ), - ]); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php deleted file mode 100644 index e579a16..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php +++ /dev/null @@ -1,204 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\IndentationTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ArrayIndentationFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - use IndentationTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Each element of an array must be indented exactly once.', - [ - new CodeSample(" [\n 'baz' => true,\n ],\n];\n"), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([\T_ARRAY, \T_LIST, CT::T_ARRAY_BRACKET_OPEN, CT::T_DESTRUCTURING_BRACKET_OPEN]); - } - - /** - * {@inheritdoc} - * - * Must run before AlignMultilineCommentFixer, BinaryOperatorSpacesFixer. - * Must run after MethodArgumentSpaceFixer. - */ - public function getPriority(): int - { - return 29; - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $lastIndent = ''; - - /** @var list $scopes */ - $scopes = []; - $previousLineInitialIndent = ''; - $previousLineNewIndent = ''; - - foreach ($tokens as $index => $token) { - $currentScope = [] !== $scopes ? \count($scopes) - 1 : null; - - if ($token->isComment()) { - continue; - } - - if ( - $token->isGivenKind([CT::T_ARRAY_BRACKET_OPEN, CT::T_DESTRUCTURING_BRACKET_OPEN]) - || ($token->equals('(') && $tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind([\T_ARRAY, \T_LIST])) - ) { - $blockType = Tokens::detectBlockType($token); - $endIndex = $tokens->findBlockEnd($blockType['type'], $index); - - $scopes[] = [ - 'type' => 'array', - 'end_index' => $endIndex, - 'initial_indent' => $lastIndent, - ]; - - continue; - } - - if ($this->isNewLineToken($tokens, $index)) { - $lastIndent = $this->extractIndent($this->computeNewLineContent($tokens, $index)); - } - - if (null === $currentScope) { - continue; - } - - \assert(isset($scopes[$currentScope])); - - if ($token->isWhitespace()) { - if (!Preg::match('/\R/', $token->getContent())) { - continue; - } - - if ('array' === $scopes[$currentScope]['type']) { - $indent = false; - - for ($searchEndIndex = $index + 1; $searchEndIndex < $scopes[$currentScope]['end_index']; ++$searchEndIndex) { - $searchEndToken = $tokens[$searchEndIndex]; - - if ( - (!$searchEndToken->isWhitespace() && !$searchEndToken->isComment()) - || ($searchEndToken->isWhitespace() && Preg::match('/\R/', $searchEndToken->getContent())) - ) { - $indent = true; - - break; - } - } - - $content = Preg::replace( - '/(\R+)\h*$/', - '$1'.$scopes[$currentScope]['initial_indent'].($indent ? $this->whitespacesConfig->getIndent() : ''), - $token->getContent(), - ); - - $previousLineInitialIndent = $this->extractIndent($token->getContent()); - $previousLineNewIndent = $this->extractIndent($content); - } else { - $content = Preg::replace( - '/(\R)'.preg_quote($scopes[$currentScope]['initial_indent'], '/').'(\h*)$/', - '$1'.$scopes[$currentScope]['new_indent'].'$2', - $token->getContent(), - ); - } - - $tokens[$index] = new Token([\T_WHITESPACE, $content]); - $lastIndent = $this->extractIndent($content); - - continue; - } - - if ($index === $scopes[$currentScope]['end_index']) { - while ([] !== $scopes && $index === $scopes[$currentScope]['end_index']) { - array_pop($scopes); - --$currentScope; - } - - continue; - } - - if ($token->equals(',')) { - continue; - } - - if ('expression' !== $scopes[$currentScope]['type']) { - $endIndex = $this->findExpressionEndIndex($tokens, $index, $scopes[$currentScope]['end_index']); - - if ($endIndex === $index) { - continue; - } - - $scopes[] = [ - 'type' => 'expression', - 'end_index' => $endIndex, - 'initial_indent' => $previousLineInitialIndent, - 'new_indent' => $previousLineNewIndent, - ]; - } - } - } - - private function findExpressionEndIndex(Tokens $tokens, int $index, int $parentScopeEndIndex): int - { - $endIndex = null; - - for ($searchEndIndex = $index + 1; $searchEndIndex < $parentScopeEndIndex; ++$searchEndIndex) { - $searchEndToken = $tokens[$searchEndIndex]; - - if ($searchEndToken->equalsAny(['(', '{']) - || $searchEndToken->isGivenKind([CT::T_ARRAY_BRACKET_OPEN, CT::T_DESTRUCTURING_BRACKET_OPEN]) - ) { - $type = Tokens::detectBlockType($searchEndToken); - $searchEndIndex = $tokens->findBlockEnd( - $type['type'], - $searchEndIndex, - ); - - continue; - } - - if ($searchEndToken->equals(',')) { - $endIndex = $tokens->getPrevMeaningfulToken($searchEndIndex); - - break; - } - } - - return $endIndex ?? $tokens->getPrevMeaningfulToken($parentScopeEndIndex); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php deleted file mode 100644 index 7b10fe3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php +++ /dev/null @@ -1,405 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * statements?: list<'break'|'case'|'continue'|'declare'|'default'|'do'|'exit'|'for'|'foreach'|'goto'|'if'|'include'|'include_once'|'phpdoc'|'require'|'require_once'|'return'|'switch'|'throw'|'try'|'while'|'yield'|'yield_from'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * statements: list<'break'|'case'|'continue'|'declare'|'default'|'do'|'exit'|'for'|'foreach'|'goto'|'if'|'include'|'include_once'|'phpdoc'|'require'|'require_once'|'return'|'switch'|'throw'|'try'|'while'|'yield'|'yield_from'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * @author Andreas Möller - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BlankLineBeforeStatementFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var array - */ - private const TOKEN_MAP = [ - 'break' => \T_BREAK, - 'case' => \T_CASE, - 'continue' => \T_CONTINUE, - 'declare' => \T_DECLARE, - 'default' => \T_DEFAULT, - 'do' => \T_DO, - 'exit' => \T_EXIT, - 'for' => \T_FOR, - 'foreach' => \T_FOREACH, - 'goto' => \T_GOTO, - 'if' => \T_IF, - 'include' => \T_INCLUDE, - 'include_once' => \T_INCLUDE_ONCE, - 'phpdoc' => \T_DOC_COMMENT, - 'require' => \T_REQUIRE, - 'require_once' => \T_REQUIRE_ONCE, - 'return' => \T_RETURN, - 'switch' => \T_SWITCH, - 'throw' => \T_THROW, - 'try' => \T_TRY, - 'while' => \T_WHILE, - 'yield' => \T_YIELD, - 'yield_from' => \T_YIELD_FROM, - ]; - - /** - * @var list - */ - private array $fixTokenMap = []; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'An empty line feed must precede any configured statement.', - [ - new CodeSample( - <<<'PHP' - process(); - break; - case 44: - break; - } - - PHP, - [ - 'statements' => ['break'], - ], - ), - new CodeSample( - <<<'PHP' - isTired()) { - $bar->sleep(); - continue; - } - } - - PHP, - [ - 'statements' => ['continue'], - ], - ), - new CodeSample( - <<<'PHP' - 0); - - PHP, - [ - 'statements' => ['do'], - ], - ), - new CodeSample( - <<<'PHP' - ['exit'], - ], - ), - new CodeSample( - <<<'PHP' - ['goto'], - ], - ), - new CodeSample( - <<<'PHP' - ['if'], - ], - ), - new CodeSample( - <<<'PHP' - ['return'], - ], - ), - new CodeSample( - <<<'PHP' - ['switch'], - ], - ), - new CodeSample( - <<<'PHP' - bar(); - throw new \UnexpectedValueException("A cannot be null."); - } - - PHP, - [ - 'statements' => ['throw'], - ], - ), - new CodeSample( - <<<'PHP' - bar(); - } catch (\Exception $exception) { - $a = -1; - } - - PHP, - [ - 'statements' => ['try'], - ], - ), - new CodeSample( - <<<'PHP' - ['yield'], - ], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after NoExtraBlankLinesFixer, NoUselessElseFixer, NoUselessReturnFixer, ReturnAssignmentFixer, YieldFromArrayToYieldsFixer. - */ - public function getPriority(): int - { - return -21; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound($this->fixTokenMap); - } - - protected function configurePostNormalisation(): void - { - $fixTokenMap = []; - - foreach ($this->configuration['statements'] as $key) { - $fixTokenMap[$key] = self::TOKEN_MAP[$key]; - } - - $this->fixTokenMap = array_values($fixTokenMap); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $analyzer = new TokensAnalyzer($tokens); - - for ($index = $tokens->count() - 1; $index > 0; --$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind($this->fixTokenMap)) { - continue; - } - - if ($token->isGivenKind(\T_WHILE) && $analyzer->isWhilePartOfDoWhile($index)) { - continue; - } - - if ($token->isGivenKind(\T_CASE) && $analyzer->isEnumCase($index)) { - continue; - } - - $insertBlankLineIndex = $this->getInsertBlankLineIndex($tokens, $index); - $prevNonWhitespace = $tokens->getPrevNonWhitespace($insertBlankLineIndex); - - if ($this->shouldAddBlankLine($tokens, $prevNonWhitespace)) { - $this->insertBlankLine($tokens, $insertBlankLineIndex); - } - - $index = $prevNonWhitespace; - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('statements', 'List of statements which must be preceded by an empty line.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset(array_keys(self::TOKEN_MAP))]) - ->setDefault([ - 'break', - 'continue', - 'declare', - 'return', - 'throw', - 'try', - ]) - ->getOption(), - ]); - } - - private function getInsertBlankLineIndex(Tokens $tokens, int $index): int - { - while ($index > 0) { - if ($tokens[$index - 1]->isWhitespace() && substr_count($tokens[$index - 1]->getContent(), "\n") > 1) { - break; - } - - $prevIndex = $tokens->getPrevNonWhitespace($index); - - if (!$tokens[$prevIndex]->isComment()) { - break; - } - - if (!$tokens[$prevIndex - 1]->isWhitespace()) { - break; - } - - if (1 !== substr_count($tokens[$prevIndex - 1]->getContent(), "\n")) { - break; - } - - $index = $prevIndex; - } - - return $index; - } - - private function shouldAddBlankLine(Tokens $tokens, int $prevNonWhitespace): bool - { - $prevNonWhitespaceToken = $tokens[$prevNonWhitespace]; - - if ($prevNonWhitespaceToken->isComment()) { - for ($j = $prevNonWhitespace - 1; $j >= 0; --$j) { - if (str_contains($tokens[$j]->getContent(), "\n")) { - return false; - } - - if ($tokens[$j]->isWhitespace() || $tokens[$j]->isComment()) { - continue; - } - - return $tokens[$j]->equalsAny([';', '}']); - } - } - - return $prevNonWhitespaceToken->equalsAny([';', '}']); - } - - private function insertBlankLine(Tokens $tokens, int $index): void - { - $prevIndex = $index - 1; - $prevToken = $tokens[$prevIndex]; - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - if ($prevToken->isWhitespace()) { - $newlinesCount = substr_count($prevToken->getContent(), "\n"); - - if (0 === $newlinesCount) { - $tokens[$prevIndex] = new Token([\T_WHITESPACE, rtrim($prevToken->getContent(), " \t").$lineEnding.$lineEnding]); - } elseif (1 === $newlinesCount) { - $tokens[$prevIndex] = new Token([\T_WHITESPACE, $lineEnding.$prevToken->getContent()]); - } - } else { - $tokens->insertAt($index, new Token([\T_WHITESPACE, $lineEnding.$lineEnding])); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBetweenImportGroupsFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBetweenImportGroupsFixer.php deleted file mode 100644 index 12f043f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBetweenImportGroupsFixer.php +++ /dev/null @@ -1,191 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author Sander Verkuil - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BlankLineBetweenImportGroupsFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - private const IMPORT_TYPE_CLASS = 'class'; - - private const IMPORT_TYPE_CONST = 'const'; - - private const IMPORT_TYPE_FUNCTION = 'function'; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Putting blank lines between `use` statement groups.', - [ - new CodeSample( - <<<'PHP' - isTokenKindFound(\T_USE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - $namespacesImports = $tokensAnalyzer->getImportUseIndexes(true); - - foreach (array_reverse($namespacesImports) as $uses) { - $this->walkOverUses($tokens, $uses); - } - } - - /** - * @param list $uses - */ - private function walkOverUses(Tokens $tokens, array $uses): void - { - $usesCount = \count($uses); - - if ($usesCount < 2) { - return; // nothing to fix - } - - $previousType = null; - - for ($i = $usesCount - 1; $i >= 0; --$i) { - \assert(isset($uses[$i])); - $index = $uses[$i]; - $startIndex = $tokens->getNextMeaningfulToken($index + 1); - $endIndex = $tokens->getNextTokenOfKind($startIndex, [';', [\T_CLOSE_TAG]]); - - if ($tokens[$startIndex]->isGivenKind(CT::T_CONST_IMPORT)) { - $type = self::IMPORT_TYPE_CONST; - } elseif ($tokens[$startIndex]->isGivenKind(CT::T_FUNCTION_IMPORT)) { - $type = self::IMPORT_TYPE_FUNCTION; - } else { - $type = self::IMPORT_TYPE_CLASS; - } - - if (null !== $previousType && $type !== $previousType) { - $this->ensureLine($tokens, $endIndex + 1); - } - - $previousType = $type; - } - } - - private function ensureLine(Tokens $tokens, int $index): void - { - static $lineEnding; - - if (null === $lineEnding) { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - $lineEnding .= $lineEnding; - } - - $index = $this->getInsertIndex($tokens, $index); - $indent = WhitespacesAnalyzer::detectIndent($tokens, $index); - - $tokens->ensureWhitespaceAtIndex($index, 1, $lineEnding.$indent); - } - - private function getInsertIndex(Tokens $tokens, int $index): int - { - $tokensCount = \count($tokens); - - for (; $index < $tokensCount - 1; ++$index) { - if (!$tokens[$index]->isWhitespace() && !$tokens[$index]->isComment()) { - return $index - 1; - } - - $content = $tokens[$index]->getContent(); - - if (str_contains($content, "\n")) { - break; - } - } - - return $index; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypeDeclarationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypeDeclarationFixer.php deleted file mode 100644 index 9e31fa0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypeDeclarationFixer.php +++ /dev/null @@ -1,71 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Jack Cherng - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CompactNullableTypeDeclarationFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Remove extra spaces in a nullable type declaration.', - [ - new CodeSample( - "isTokenKindFound(CT::T_NULLABLE_TYPE); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = $tokens->count() - 1; $index >= 0; --$index) { - if (!$tokens[$index]->isGivenKind(CT::T_NULLABLE_TYPE)) { - continue; - } - - // remove whitespaces only if there are only whitespaces - // between '?' and the variable type - if ( - $tokens[$index + 1]->isWhitespace() - && $tokens[$index + 2]->isGivenKind([ - CT::T_ARRAY_TYPEHINT, - \T_CALLABLE, - \T_NS_SEPARATOR, - \T_STATIC, - \T_STRING, - ]) - ) { - $tokens->removeTrailingWhitespace($index); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php deleted file mode 100644 index 385fbfb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php +++ /dev/null @@ -1,65 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; - -/** - * @author Jack Cherng - * - * @deprecated - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CompactNullableTypehintFixer extends AbstractProxyFixer implements DeprecatedFixerInterface -{ - private CompactNullableTypeDeclarationFixer $compactNullableTypeDeclarationFixer; - - public function __construct() - { - $this->compactNullableTypeDeclarationFixer = new CompactNullableTypeDeclarationFixer(); - - parent::__construct(); - } - - public function getDefinition(): FixerDefinitionInterface - { - $fixerDefinition = $this->compactNullableTypeDeclarationFixer->getDefinition(); - - return new FixerDefinition( - 'Remove extra spaces in a nullable typehint.', - $fixerDefinition->getCodeSamples(), - $fixerDefinition->getDescription(), - $fixerDefinition->getRiskyDescription(), - ); - } - - public function getSuccessorsNames(): array - { - return [ - $this->compactNullableTypeDeclarationFixer->getName(), - ]; - } - - protected function createProxyFixers(): array - { - return [ - $this->compactNullableTypeDeclarationFixer, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php deleted file mode 100644 index b5ea1d2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php +++ /dev/null @@ -1,182 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * indentation?: 'same_as_start'|'start_plus_one', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * indentation: 'same_as_start'|'start_plus_one', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class HeredocIndentationFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Heredoc/nowdoc content must be properly indented.', - [ - new CodeSample( - <<<'SAMPLE' - 'same_as_start'], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run after BracesFixer, MultilineStringToHeredocFixer, StatementIndentationFixer. - */ - public function getPriority(): int - { - return -26; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound(\T_START_HEREDOC); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('indentation', 'Whether the indentation should be the same as in the start token line or one level more.')) - ->setAllowedValues(['start_plus_one', 'same_as_start']) - ->setDefault('start_plus_one') - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - for ($index = \count($tokens) - 1; 0 <= $index; --$index) { - if (!$tokens[$index]->isGivenKind(\T_END_HEREDOC)) { - continue; - } - - $end = $index; - $index = $tokens->getPrevTokenOfKind($index, [[\T_START_HEREDOC]]); - - $this->fixIndentation($tokens, $index, $end); - } - } - - private function fixIndentation(Tokens $tokens, int $start, int $end): void - { - $indent = WhitespacesAnalyzer::detectIndent($tokens, $start); - - if ('start_plus_one' === $this->configuration['indentation']) { - $indent .= $this->whitespacesConfig->getIndent(); - } - - Preg::match('/^\h*/', $tokens[$end]->getContent(), $matches); - \assert(isset($matches[0])); - $currentIndent = $matches[0]; - $currentIndentLength = \strlen($currentIndent); - - $content = $indent.substr($tokens[$end]->getContent(), $currentIndentLength); - $tokens[$end] = new Token([\T_END_HEREDOC, $content]); - - if ($end === $start + 1) { - return; - } - - $index = $end - 1; - - for ($last = true; $index > $start; --$index, $last = false) { - if (!$tokens[$index]->isGivenKind([\T_ENCAPSED_AND_WHITESPACE, \T_WHITESPACE])) { - continue; - } - - $content = $tokens[$index]->getContent(); - - if ('' !== $currentIndent) { - $content = Preg::replace('/(?<=\v)(?!'.$currentIndent.')\h+/', '', $content); - } - - $regexEnd = $last && '' === $currentIndent ? '(?!\v|$)' : '(?!\v)'; - $content = Preg::replace('/(?<=\v)'.$currentIndent.$regexEnd.'/', $indent, $content); - - $tokens[$index] = new Token([$tokens[$index]->getId(), $content]); - } - - ++$index; - - if (!$tokens[$index]->isGivenKind(\T_ENCAPSED_AND_WHITESPACE)) { - $tokens->insertAt($index, new Token([\T_ENCAPSED_AND_WHITESPACE, $indent])); - - return; - } - - $content = $tokens[$index]->getContent(); - - if (!\in_array($content[0], ["\r", "\n"], true) && ('' === $currentIndent || str_starts_with($content, $currentIndent))) { - $content = $indent.substr($content, $currentIndentLength); - } elseif ('' !== $currentIndent) { - $content = Preg::replace('/^(?!'.$currentIndent.')\h+/', '', $content); - } - - $tokens[$index] = new Token([\T_ENCAPSED_AND_WHITESPACE, $content]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php deleted file mode 100644 index b8c33dd..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php +++ /dev/null @@ -1,142 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶2.4. - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class IndentationTypeFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - private string $indent; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Code MUST use configured indentation type.', - [ - new CodeSample("isAnyTokenKindsFound([\T_COMMENT, \T_DOC_COMMENT, \T_WHITESPACE]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->indent = $this->whitespacesConfig->getIndent(); - - foreach ($tokens as $index => $token) { - if ($token->isComment()) { - $tokens[$index] = $this->fixIndentInComment($tokens, $index); - - continue; - } - - if ($token->isWhitespace()) { - $tokens[$index] = $this->fixIndentToken($tokens, $index); - - continue; - } - } - } - - private function fixIndentInComment(Tokens $tokens, int $index): Token - { - $content = Preg::replace('/^(?:(?getContent(), -1, $count); - - // Also check for more tabs. - while (0 !== $count) { - $content = Preg::replace('/^(\ +)?\t/m', '\1 ', $content, -1, $count); - } - - $indent = $this->indent; - - // change indent to expected one - $content = Preg::replaceCallback('/^(?: )+/m', fn (array $matches): string => $this->getExpectedIndent($matches[0], $indent), $content); - - return new Token([$tokens[$index]->getId(), $content]); - } - - private function fixIndentToken(Tokens $tokens, int $index): Token - { - $content = $tokens[$index]->getContent(); - $previousTokenHasTrailingLinebreak = false; - - // @TODO this can be removed when we have a transformer for "T_OPEN_TAG" to "T_OPEN_TAG + T_WHITESPACE" - if (str_contains($tokens[$index - 1]->getContent(), "\n")) { - $content = "\n".$content; - $previousTokenHasTrailingLinebreak = true; - } - - $indent = $this->indent; - $newContent = Preg::replaceCallback( - '/(\R)(\h+)/', // find indent - function (array $matches) use ($indent): string { - \assert(isset($matches[1], $matches[2])); - // normalize mixed indent - $content = Preg::replace('/(?:(?getExpectedIndent($content, $indent); - }, - $content, - ); - - if ($previousTokenHasTrailingLinebreak) { - $newContent = substr($newContent, 1); - } - - return new Token([\T_WHITESPACE, $newContent]); - } - - /** - * @return string mixed - */ - private function getExpectedIndent(string $content, string $indent): string - { - if ("\t" === $indent) { - $content = str_replace(' ', $indent, $content); - } - - return $content; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php deleted file mode 100644 index 3f9d3a8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php +++ /dev/null @@ -1,87 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶2.2. - * - * @author Fabien Potencier - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class LineEndingFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function isCandidate(Tokens $tokens): bool - { - return true; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'All PHP files must use same line ending.', - [ - new CodeSample( - "whitespacesConfig->getLineEnding(); - - for ($index = 0, $count = \count($tokens); $index < $count; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_ENCAPSED_AND_WHITESPACE)) { - if ($tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind(\T_END_HEREDOC)) { - $tokens[$index] = new Token([ - $token->getId(), - Preg::replace( - '#\R#', - $ending, - $token->getContent(), - ), - ]); - } - - continue; - } - - if ($token->isGivenKind([\T_CLOSE_TAG, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG, \T_START_HEREDOC, \T_WHITESPACE])) { - $tokens[$index] = new Token([ - $token->getId(), - Preg::replace( - '#\R#', - $ending, - $token->getContent(), - ), - ]); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php deleted file mode 100644 index d5d5058..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php +++ /dev/null @@ -1,231 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Vladimir Boliev - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MethodChainingIndentationFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Method chaining MUST be properly indented. Method chaining with different levels of indentation is not supported.', - [new CodeSample("setEmail('voff.web@gmail.com')\n ->setPassword('233434');\n")], - ); - } - - /** - * {@inheritdoc} - * - * Must run after NoSpaceAroundDoubleColonFixer. - */ - public function getPriority(): int - { - return 0; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(Token::getObjectOperatorKinds()); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - for ($index = 1, $count = \count($tokens); $index < $count; ++$index) { - if (!$tokens[$index]->isObjectOperator()) { - continue; - } - - $endParenthesisIndex = $tokens->getNextTokenOfKind($index, ['(', ';', ',', [\T_CLOSE_TAG]]); - $previousEndParenthesisIndex = $tokens->getPrevTokenOfKind($index, [')']); - - if ( - null === $endParenthesisIndex - || !$tokens[$endParenthesisIndex]->equals('(') && null === $previousEndParenthesisIndex - ) { - continue; - } - - if ($this->canBeMovedToNextLine($index, $tokens)) { - $newline = new Token([\T_WHITESPACE, $lineEnding]); - - if ($tokens[$index - 1]->isWhitespace()) { - $tokens[$index - 1] = $newline; - } else { - $tokens->insertAt($index, $newline); - ++$index; - ++$endParenthesisIndex; - } - } - - $currentIndent = $this->getIndentAt($tokens, $index - 1); - - if (null === $currentIndent) { - continue; - } - - $expectedIndent = $this->getExpectedIndentAt($tokens, $index); - - if ($currentIndent !== $expectedIndent) { - $tokens[$index - 1] = new Token([\T_WHITESPACE, $lineEnding.$expectedIndent]); - } - - if (!$tokens[$endParenthesisIndex]->equals('(')) { - continue; - } - - $endParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $endParenthesisIndex); - - for ($searchIndex = $index + 1; $searchIndex < $endParenthesisIndex; ++$searchIndex) { - $searchToken = $tokens[$searchIndex]; - - if (!$searchToken->isWhitespace()) { - continue; - } - - $content = $searchToken->getContent(); - - if (!Preg::match('/\R/', $content)) { - continue; - } - - $content = Preg::replace( - '/(\R)'.$currentIndent.'(\h*)$/D', - '$1'.$expectedIndent.'$2', - $content, - ); - - $tokens[$searchIndex] = new Token([$searchToken->getId(), $content]); - } - } - } - - /** - * @param int $index index of the first token on the line to indent - */ - private function getExpectedIndentAt(Tokens $tokens, int $index): string - { - $index = $tokens->getPrevMeaningfulToken($index); - $indent = $this->whitespacesConfig->getIndent(); - - for ($i = $index; $i >= 0; --$i) { - if ($tokens[$i]->equals(')')) { - $i = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $i); - } - - $currentIndent = $this->getIndentAt($tokens, $i); - if (null === $currentIndent) { - continue; - } - - if ($this->currentLineRequiresExtraIndentLevel($tokens, $i, $index)) { - return $currentIndent.$indent; - } - - return $currentIndent; - } - - return $indent; - } - - /** - * @param int $index position of the object operator token ("->" or "?->") - */ - private function canBeMovedToNextLine(int $index, Tokens $tokens): bool - { - $prevMeaningful = $tokens->getPrevMeaningfulToken($index); - $hasCommentBefore = false; - - for ($i = $index - 1; $i > $prevMeaningful; --$i) { - if ($tokens[$i]->isComment()) { - $hasCommentBefore = true; - - continue; - } - - if ($tokens[$i]->isWhitespace() && Preg::match('/\R/', $tokens[$i]->getContent())) { - return $hasCommentBefore; - } - } - - return false; - } - - /** - * @param int $index index of the indentation token - */ - private function getIndentAt(Tokens $tokens, int $index): ?string - { - if (Preg::match('/\R{1}(\h*)$/', $this->getIndentContentAt($tokens, $index), $matches)) { - return $matches[1]; - } - - return null; - } - - private function getIndentContentAt(Tokens $tokens, int $index): string - { - if (!$tokens[$index]->isGivenKind([\T_WHITESPACE, \T_INLINE_HTML])) { - return ''; - } - - $content = $tokens[$index]->getContent(); - - if ($tokens[$index]->isWhitespace() && $tokens[$index - 1]->isGivenKind(\T_OPEN_TAG)) { - $content = $tokens[$index - 1]->getContent().$content; - } - - if (Preg::match('/\R/', $content)) { - return $content; - } - - return ''; - } - - /** - * @param int $start index of first meaningful token on previous line - * @param int $end index of last token on previous line - */ - private function currentLineRequiresExtraIndentLevel(Tokens $tokens, int $start, int $end): bool - { - $firstMeaningful = $tokens->getNextMeaningfulToken($start); - - if ($tokens[$firstMeaningful]->isObjectOperator()) { - $thirdMeaningful = $tokens->getNextMeaningfulToken($tokens->getNextMeaningfulToken($firstMeaningful)); - - return - $tokens[$thirdMeaningful]->equals('(') - && $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $thirdMeaningful) > $end; - } - - return - !$tokens[$end]->equals(')') - || $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $end) >= $start; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php deleted file mode 100644 index f48aa5a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php +++ /dev/null @@ -1,531 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\SwitchAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * tokens?: list<'attribute'|'break'|'case'|'comma'|'continue'|'curly_brace_block'|'default'|'extra'|'parenthesis_brace_block'|'return'|'square_brace_block'|'switch'|'throw'|'use'|'use_trait'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * tokens: list<'attribute'|'break'|'case'|'comma'|'continue'|'curly_brace_block'|'default'|'extra'|'parenthesis_brace_block'|'return'|'square_brace_block'|'switch'|'throw'|'use'|'use_trait'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoExtraBlankLinesFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - /** - * @var non-empty-list - */ - private const AVAILABLE_TOKENS = [ - 'attribute', - 'break', - 'case', - 'comma', - 'continue', - 'curly_brace_block', - 'default', - 'extra', - 'parenthesis_brace_block', - 'return', - 'square_brace_block', - 'switch', - 'throw', - 'use', - 'use_trait', - ]; - - /** - * @var array key is token id - */ - private array $tokenKindCallbackMap; - - /** - * @var array key is token's content - */ - private array $tokenEqualsMap; - - private Tokens $tokens; - - private TokensAnalyzer $tokensAnalyzer; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Removes extra blank lines and/or blank lines following configuration.', - [ - new CodeSample( - <<<'PHP' - ['break']], - ), - new CodeSample( - <<<'PHP' - ['continue']], - ), - new CodeSample( - <<<'PHP' - ['curly_brace_block']], - ), - new CodeSample( - <<<'PHP' - ['extra']], - ), - new CodeSample( - <<<'PHP' - ['parenthesis_brace_block']], - ), - new CodeSample( - <<<'PHP' - ['return']], - ), - new CodeSample( - <<<'PHP' - ['square_brace_block']], - ), - new CodeSample( - <<<'PHP' - ['throw']], - ), - new CodeSample( - <<<'PHP' - ['use']], - ), - new CodeSample( - <<<'PHP' - ['switch', 'case', 'default']], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before BlankLineBeforeStatementFixer. - * Must run after ClassAttributesSeparationFixer, CombineConsecutiveUnsetsFixer, EmptyLoopBodyFixer, EmptyLoopConditionFixer, FunctionToConstantFixer, LongToShorthandOperatorFixer, ModernizeStrposFixer, NoEmptyCommentFixer, NoEmptyPhpdocFixer, NoEmptyStatementFixer, NoUnusedImportsFixer, NoUselessElseFixer, NoUselessPrintfFixer, NoUselessReturnFixer, NoUselessSprintfFixer, PhpdocReadonlyClassCommentToKeywordFixer, StringLengthToEmptyFixer, YieldFromArrayToYieldsFixer. - */ - public function getPriority(): int - { - return -20; - } - - public function isCandidate(Tokens $tokens): bool - { - return true; - } - - /** - * @param _AutogeneratedInputConfiguration $configuration - */ - protected function configurePreNormalisation(array $configuration): void - { - if (isset($configuration['tokens']) && \in_array('use_trait', $configuration['tokens'], true)) { - Future::triggerDeprecation(new \RuntimeException('Option "tokens: use_trait" used in `no_extra_blank_lines` rule is deprecated, use the rule `class_attributes_separation` with `elements: trait_import` instead.')); - } - } - - protected function configurePostNormalisation(): void - { - $tokensConfiguration = $this->configuration['tokens']; - - $this->tokenEqualsMap = []; - - if (\in_array('comma', $tokensConfiguration, true)) { - $this->tokenEqualsMap[','] = [$this, 'fixAfterToken']; - } - - if (\in_array('curly_brace_block', $tokensConfiguration, true)) { - $this->tokenEqualsMap['{'] = [$this, 'fixStructureOpenCloseIfMultiLine']; // i.e. not: CT::T_ARRAY_INDEX_BRACE_OPEN - } - - if (\in_array('parenthesis_brace_block', $tokensConfiguration, true)) { - $this->tokenEqualsMap['('] = [$this, 'fixStructureOpenCloseIfMultiLine']; // i.e. not: CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN - } - - // Each item requires explicit array-like callable, otherwise PHPStan will complain about unused private methods. - $configMap = [ - 'attribute' => [CT::T_ATTRIBUTE_CLOSE, [$this, 'fixAfterToken']], - 'break' => [\T_BREAK, [$this, 'fixAfterToken']], - 'case' => [\T_CASE, [$this, 'fixAfterCaseToken']], - 'continue' => [\T_CONTINUE, [$this, 'fixAfterToken']], - 'default' => [\T_DEFAULT, [$this, 'fixAfterToken']], - 'extra' => [\T_WHITESPACE, [$this, 'removeMultipleBlankLines']], - 'return' => [\T_RETURN, [$this, 'fixAfterToken']], - 'square_brace_block' => [CT::T_ARRAY_BRACKET_OPEN, [$this, 'fixStructureOpenCloseIfMultiLine']], - 'switch' => [\T_SWITCH, [$this, 'fixAfterToken']], - 'throw' => [\T_THROW, [$this, 'fixAfterThrowToken']], - 'use' => [\T_USE, [$this, 'removeBetweenUse']], - 'use_trait' => [CT::T_USE_TRAIT, [$this, 'removeBetweenUse']], - ]; - - $this->tokenKindCallbackMap = []; - - foreach ($tokensConfiguration as $config) { - if (isset($configMap[$config])) { - $this->tokenKindCallbackMap[$configMap[$config][0]] = $configMap[$config][1]; - } - } - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->tokens = $tokens; - $this->tokensAnalyzer = new TokensAnalyzer($this->tokens); - - for ($index = $tokens->getSize() - 1; $index > 0; --$index) { - $this->fixByToken($tokens[$index], $index); - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('tokens', 'List of tokens to fix.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset(self::AVAILABLE_TOKENS)]) - ->setDefault(['extra']) - ->getOption(), - ]); - } - - /** - * @uses fixAfterToken() - * @uses fixAfterCaseToken() - * @uses fixAfterThrowToken() - * @uses fixStructureOpenCloseIfMultiLine() - * @uses removeBetweenUse() - * @uses removeMultipleBlankLines() - */ - private function fixByToken(Token $token, int $index): void - { - foreach ($this->tokenKindCallbackMap as $kind => $callback) { - if (!$token->isGivenKind($kind)) { - continue; - } - - \assert(isset($this->tokenKindCallbackMap[$token->getId()])); - \call_user_func_array($this->tokenKindCallbackMap[$token->getId()], [$index]); - - return; - } - - foreach ($this->tokenEqualsMap as $equals => $callback) { - if (!$token->equals($equals)) { - continue; - } - - \assert(isset($this->tokenEqualsMap[$token->getContent()])); - \call_user_func_array($this->tokenEqualsMap[$token->getContent()], [$index]); - - return; - } - } - - private function removeBetweenUse(int $index): void - { - $next = $this->tokens->getNextTokenOfKind($index, [';', [\T_CLOSE_TAG]]); - - if (null === $next || $this->tokens[$next]->isGivenKind(\T_CLOSE_TAG)) { - return; - } - - $nextUseCandidate = $this->tokens->getNextMeaningfulToken($next); - - if (null === $nextUseCandidate || !$this->tokens[$nextUseCandidate]->isGivenKind($this->tokens[$index]->getId()) || !$this->containsLinebreak($index, $nextUseCandidate)) { - return; - } - - $this->removeEmptyLinesAfterLineWithTokenAt($next); - } - - private function removeMultipleBlankLines(int $index): void - { - $expected = $this->tokens[$index - 1]->isGivenKind(\T_OPEN_TAG) && Preg::match('/\R$/', $this->tokens[$index - 1]->getContent()) ? 1 : 2; - - $parts = Preg::split('/(.*\R)/', $this->tokens[$index]->getContent(), -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); - $count = \count($parts); - - if ($count > $expected) { - \assert(isset($parts[$count - 1])); - $this->tokens[$index] = new Token([\T_WHITESPACE, implode('', \array_slice($parts, 0, $expected)).rtrim($parts[$count - 1], "\r\n")]); - } - } - - private function fixAfterToken(int $index): void - { - for ($i = $index - 1; $i > 0; --$i) { - if ($this->tokens[$i]->isGivenKind(\T_FUNCTION) && $this->tokensAnalyzer->isLambda($i)) { - return; - } - - if ($this->tokens[$i]->isGivenKind(\T_CLASS) && $this->tokensAnalyzer->isAnonymousClass($i)) { - return; - } - - if ($this->tokens[$i]->isGivenKind([CT::T_ARRAY_BRACKET_OPEN, CT::T_DESTRUCTURING_BRACKET_OPEN])) { - return; - } - - if ($this->tokens[$i]->isWhitespace() && str_contains($this->tokens[$i]->getContent(), "\n")) { - break; - } - } - - $this->removeEmptyLinesAfterLineWithTokenAt($index); - } - - private function fixAfterCaseToken(int $index): void - { - $enumSwitchIndex = $this->tokens->getPrevTokenOfKind($index, [[\T_SWITCH], [FCT::T_ENUM]]); - - if (!$this->tokens[$enumSwitchIndex]->isGivenKind(\T_SWITCH)) { - return; - } - - $this->removeEmptyLinesAfterLineWithTokenAt($index); - } - - private function fixAfterThrowToken(int $index): void - { - $prevIndex = $this->tokens->getPrevMeaningfulToken($index); - - if (!$this->tokens[$prevIndex]->equalsAny([';', '{', '}', ':', [\T_OPEN_TAG]])) { - return; - } - - if ($this->tokens[$prevIndex]->equals(':') && !SwitchAnalyzer::belongsToSwitch($this->tokens, $prevIndex)) { - return; - } - - $this->fixAfterToken($index); - } - - /** - * Remove white line(s) after the index of a block type, - * but only if the block is not on one line. - * - * @param int $index body start - */ - private function fixStructureOpenCloseIfMultiLine(int $index): void - { - $blockTypeInfo = Tokens::detectBlockType($this->tokens[$index]); - $bodyEnd = $this->tokens->findBlockEnd($blockTypeInfo['type'], $index); - - for ($i = $bodyEnd - 1; $i >= $index; --$i) { - if (str_contains($this->tokens[$i]->getContent(), "\n")) { - $this->removeEmptyLinesAfterLineWithTokenAt($i); - $this->removeEmptyLinesAfterLineWithTokenAt($index); - - break; - } - } - } - - private function removeEmptyLinesAfterLineWithTokenAt(int $index): void - { - // find the line break - $parenthesesDepth = 0; - $tokenCount = \count($this->tokens); - for ($end = $index; $end < $tokenCount; ++$end) { - if ($this->tokens[$end]->equals('(')) { - ++$parenthesesDepth; - - continue; - } - - if ($this->tokens[$end]->equals(')')) { - --$parenthesesDepth; - if ($parenthesesDepth < 0) { - return; - } - - continue; - } - - if ( - $this->tokens[$end]->equals('}') - || str_contains($this->tokens[$end]->getContent(), "\n") - ) { - break; - } - } - - if ($end === $tokenCount) { - return; // not found, early return - } - - $ending = $this->whitespacesConfig->getLineEnding(); - - for ($i = $end; $i < $tokenCount && $this->tokens[$i]->isWhitespace(); ++$i) { - $content = $this->tokens[$i]->getContent(); - - if (substr_count($content, "\n") < 1) { - continue; - } - - $newContent = Preg::replace('/^.*\R(\h*)$/s', $ending.'$1', $content); - - $this->tokens[$i] = new Token([\T_WHITESPACE, $newContent]); - } - } - - private function containsLinebreak(int $startIndex, int $endIndex): bool - { - for ($i = $endIndex; $i > $startIndex; --$i) { - if (Preg::match('/\R/', $this->tokens[$i]->getContent())) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php deleted file mode 100644 index 6b738a2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php +++ /dev/null @@ -1,114 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * positions?: list<'inside'|'outside'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * positions: list<'inside'|'outside'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Javier Spagnoletti - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoSpacesAroundOffsetFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There MUST NOT be spaces around offset braces.', - [ - new CodeSample(" ['inside']]), - new CodeSample(" ['outside']]), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(['[', CT::T_ARRAY_INDEX_BRACE_OPEN]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - foreach ($tokens as $index => $token) { - if (!$token->equalsAny(['[', [CT::T_ARRAY_INDEX_BRACE_OPEN]])) { - continue; - } - - if (\in_array('inside', $this->configuration['positions'], true)) { - if ($token->equals('[')) { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_INDEX_BRACKET, $index); - } else { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_INDEX_BRACE, $index); - } - - // remove space after opening `[` or `{` - if ($tokens[$index + 1]->isWhitespace(" \t")) { - $tokens->clearAt($index + 1); - } - - // remove space before closing `]` or `}` - if ($tokens[$endIndex - 1]->isWhitespace(" \t")) { - $tokens->clearAt($endIndex - 1); - } - } - - if (\in_array('outside', $this->configuration['positions'], true)) { - $prevNonWhitespaceIndex = $tokens->getPrevNonWhitespace($index); - if ($tokens[$prevNonWhitespaceIndex]->isComment()) { - continue; - } - - $tokens->removeLeadingWhitespace($index); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - $values = ['inside', 'outside']; - - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('positions', 'Whether spacing should be fixed inside and/or outside the offset braces.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset($values)]) - ->setDefault($values) - ->getOption(), - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php deleted file mode 100644 index 07ac05e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php +++ /dev/null @@ -1,88 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractProxyFixer; -use PhpCsFixer\Fixer\DeprecatedFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶4.3, ¶4.6, ¶5. - * - * @author Marc Aubé - * @author Dariusz Rumiński - * - * @deprecated in favour of SpacesInsideParenthesisFixer - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoSpacesInsideParenthesisFixer extends AbstractProxyFixer implements DeprecatedFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There MUST NOT be a space after the opening parenthesis. There MUST NOT be a space before the closing parenthesis.', - [ - new CodeSample( - <<<'PHP' - proxyFixers); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isTokenKindFound('('); - } - - protected function createProxyFixers(): array - { - return [new SpacesInsideParenthesesFixer()]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php deleted file mode 100644 index a8f1509..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php +++ /dev/null @@ -1,108 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶2.3. - * - * Don't add trailing spaces at the end of non-blank lines. - * - * @author Fabien Potencier - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoTrailingWhitespaceFixer extends AbstractFixer -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'There must be no trailing whitespace at the end of non-blank lines.', - [new CodeSample("= 0; --$index) { - $token = $tokens[$index]; - if ( - $token->isGivenKind(\T_OPEN_TAG) - && $tokens->offsetExists($index + 1) - && $tokens[$index + 1]->isWhitespace() - && Preg::match('/(.*)\h$/', $token->getContent(), $openTagMatches) - && Preg::match('/^(\R)(.*)$/s', $tokens[$index + 1]->getContent(), $whitespaceMatches) - ) { - $tokens[$index] = new Token([\T_OPEN_TAG, $openTagMatches[1].$whitespaceMatches[1]]); - $tokens->ensureWhitespaceAtIndex($index + 1, 0, $whitespaceMatches[2]); - - continue; - } - - if (!$token->isWhitespace()) { - continue; - } - - $lines = Preg::split('/(\R+)/', $token->getContent(), -1, \PREG_SPLIT_DELIM_CAPTURE); - $linesSize = \count($lines); - - // fix only multiline whitespaces or singleline whitespaces at the end of file - if ($linesSize > 1 || !isset($tokens[$index + 1])) { - if (!$tokens[$index - 1]->isGivenKind(\T_OPEN_TAG) || !Preg::match('/(.*)\R$/', $tokens[$index - 1]->getContent())) { - \assert(isset($lines[0])); - $lines[0] = rtrim($lines[0], " \t"); - } - - for ($i = 1; $i < $linesSize; ++$i) { - \assert(isset($lines[$i])); - $trimmedLine = rtrim($lines[$i], " \t"); - if ('' !== $trimmedLine) { - $lines[$i] = $trimmedLine; - } - } - - $content = implode('', $lines); - if ('' !== $content) { - $tokens[$index] = new Token([$token->getId(), $content]); - } else { - $tokens->clearAt($index); - } - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php deleted file mode 100644 index f9887ac..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php +++ /dev/null @@ -1,92 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NoWhitespaceInBlankLineFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Remove trailing whitespace at the end of blank lines.', - [new CodeSample("isWhitespace()) { - $this->fixWhitespaceToken($tokens, $i); - } - } - } - - private function fixWhitespaceToken(Tokens $tokens, int $index): void - { - $content = $tokens[$index]->getContent(); - $lines = Preg::split("/(\r\n|\n)/", $content); - $lineCount = \count($lines); - - if ( - // fix T_WHITESPACES with at least 3 lines (eg `\n \n`) - $lineCount > 2 - // and T_WHITESPACES with at least 2 lines at the end of file or after open tag with linebreak - || ($lineCount > 0 && (!isset($tokens[$index + 1]) || $tokens[$index - 1]->isGivenKind(\T_OPEN_TAG))) - ) { - $lMax = isset($tokens[$index + 1]) ? $lineCount - 1 : $lineCount; - - $lStart = 1; - if ($tokens[$index - 1]->isGivenKind(\T_OPEN_TAG) && "\n" === substr($tokens[$index - 1]->getContent(), -1)) { - $lStart = 0; - } - - for ($l = $lStart; $l < $lMax; ++$l) { - \assert(isset($lines[$l])); - $lines[$l] = Preg::replace('/^\h+$/', '', $lines[$l]); - } - $content = implode($this->whitespacesConfig->getLineEnding(), $lines); - $tokens->ensureWhitespaceAtIndex($index, 0, $content); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php deleted file mode 100644 index 49f6cca..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * A file must always end with a line endings character. - * - * Fixer for rules defined in PSR2 ¶2.2. - * - * @author Fabien Potencier - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SingleBlankLineAtEofFixer extends AbstractFixer implements WhitespacesAwareFixerInterface -{ - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'A PHP file without end tag must always end with a single empty line feed.', - [ - new CodeSample("count(); - - if ($count > 0 && !$tokens[$count - 1]->isGivenKind([\T_INLINE_HTML, \T_CLOSE_TAG, \T_OPEN_TAG])) { - $tokens->ensureWhitespaceAtIndex($count - 1, 1, $this->whitespacesConfig->getLineEnding()); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php deleted file mode 100644 index 88ff5ee..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php +++ /dev/null @@ -1,245 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Fixer for rules defined in PSR2 ¶4.3, ¶4.6, ¶5. - * - * @phpstan-type _AutogeneratedInputConfiguration array{ - * space?: 'none'|'single', - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * space: 'none'|'single', - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Marc Aubé - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SpacesInsideParenthesesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Parentheses must be declared using the configured whitespace.', - [ - new CodeSample( - <<<'PHP' - 'none'], - ), - new CodeSample( - <<<'PHP' - 'single'], - ), - new CodeSample( - <<<'PHP' - 'single'], - ), - ], - 'By default there are not any additional spaces inside parentheses, however with `space=single` configuration option whitespace inside parentheses will be unified to single space.', - ); - } - - /** - * {@inheritdoc} - * - * Must run before FunctionToConstantFixer, GetClassToClassKeywordFixer, StringLengthToEmptyFixer. - * Must run after CombineConsecutiveIssetsFixer, CombineNestedDirnameFixer, IncrementStyleFixer, LambdaNotUsedImportFixer, ModernizeStrposFixer, NoUselessSprintfFixer, PowToExponentiationFixer. - */ - public function getPriority(): int - { - return 3; - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound(['(', CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - if ('none' === $this->configuration['space']) { - foreach ($tokens as $index => $token) { - if (!$token->equalsAny(['(', [CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN]])) { - continue; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - // ignore parenthesis for T_ARRAY - if (null !== $prevIndex && $tokens[$prevIndex]->isGivenKind(\T_ARRAY)) { - continue; - } - - $blockType = Tokens::detectBlockType($token); - $endIndex = $tokens->findBlockEnd($blockType['type'], $index); - - // remove space after opening `(` - if (!$tokens[$tokens->getNextNonWhitespace($index)]->isComment()) { - $this->removeSpaceAroundToken($tokens, $index + 1); - } - - // remove space before closing `)` if it is not `list($a, $b, )` case - if (!$tokens[$tokens->getPrevMeaningfulToken($endIndex)]->equals(',')) { - $this->removeSpaceAroundToken($tokens, $endIndex - 1); - } - } - } - - if ('single' === $this->configuration['space']) { - foreach ($tokens as $index => $token) { - if (!$token->equalsAny(['(', [CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN]])) { - continue; - } - - $blockType = Tokens::detectBlockType($token); - $endParenthesisIndex = $tokens->findBlockEnd($blockType['type'], $index); - - // if not other content than spaces in block remove spaces - $blockContent = $this->getBlockContent($index, $endParenthesisIndex, $tokens); - if (1 === \count($blockContent) && \in_array(' ', $blockContent, true)) { - $this->removeSpaceAroundToken($tokens, $index + 1); - - continue; - } - - // don't process if the next token is `)` - $nextMeaningfulTokenIndex = $tokens->getNextMeaningfulToken($index); - if (')' === $tokens[$nextMeaningfulTokenIndex]->getContent()) { - continue; - } - - $afterParenthesisIndex = $tokens->getNextNonWhitespace($endParenthesisIndex); - $afterParenthesisToken = $tokens[$afterParenthesisIndex]; - - if ($afterParenthesisToken->isGivenKind(CT::T_USE_LAMBDA)) { - $useStartParenthesisIndex = $tokens->getNextTokenOfKind($afterParenthesisIndex, ['(']); - $useEndParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $useStartParenthesisIndex); - - // add single-line edge whitespaces inside use parentheses - $this->fixParenthesisInnerEdge($tokens, $useStartParenthesisIndex, $useEndParenthesisIndex); - } - - // add single-line edge whitespaces inside parameters list parentheses - $this->fixParenthesisInnerEdge($tokens, $index, $endParenthesisIndex); - } - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('space', 'Whether to have `single` or `none` space inside parentheses.')) - ->setAllowedValues(['none', 'single']) - ->setDefault('none') - ->getOption(), - ]); - } - - /** - * Remove spaces from token at a given index. - */ - private function removeSpaceAroundToken(Tokens $tokens, int $index): void - { - $token = $tokens[$index]; - - if ($token->isWhitespace() && !str_contains($token->getContent(), "\n")) { - $tokens->clearAt($index); - } - } - - private function fixParenthesisInnerEdge(Tokens $tokens, int $start, int $end): void - { - // fix white space before ')' - if ($tokens[$end - 1]->isWhitespace()) { - $content = $tokens[$end - 1]->getContent(); - if (' ' !== $content && !str_contains($content, "\n") && !$tokens[$tokens->getPrevNonWhitespace($end - 1)]->isComment()) { - $tokens[$end - 1] = new Token([\T_WHITESPACE, ' ']); - } - } else { - $tokens->insertAt($end, new Token([\T_WHITESPACE, ' '])); - } - - // fix white space after '(' - if ($tokens[$start + 1]->isWhitespace()) { - $content = $tokens[$start + 1]->getContent(); - if (' ' !== $content && !str_contains($content, "\n") && !$tokens[$tokens->getNextNonWhitespace($start + 1)]->isComment()) { - $tokens[$start + 1] = new Token([\T_WHITESPACE, ' ']); - } - } else { - $tokens->insertAt($start + 1, new Token([\T_WHITESPACE, ' '])); - } - } - - /** - * @return list - */ - private function getBlockContent(int $startIndex, int $endIndex, Tokens $tokens): array - { - // + 1 for ( - $contents = []; - for ($i = ($startIndex + 1); $i < $endIndex; ++$i) { - $contents[] = $tokens[$i]->getContent(); - } - - return $contents; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php deleted file mode 100644 index d0bbe43..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php +++ /dev/null @@ -1,842 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\Fixer\IndentationTrait; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\AlternativeSyntaxAnalyzer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * stick_comment_to_next_continuous_control_statement?: bool, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * stick_comment_to_next_continuous_control_statement: bool, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StatementIndentationFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - use IndentationTrait; - - private const BLOCK_SIGNATURE_FIRST_TOKENS = [ - \T_USE, - \T_IF, - \T_ELSE, - \T_ELSEIF, - \T_FOR, - \T_FOREACH, - \T_WHILE, - \T_DO, - \T_SWITCH, - \T_CASE, - \T_DEFAULT, - \T_TRY, - \T_CLASS, - \T_INTERFACE, - \T_TRAIT, - \T_EXTENDS, - \T_IMPLEMENTS, - \T_CONST, - FCT::T_MATCH, - FCT::T_ENUM, - ]; - private const CONTROL_STRUCTURE_POSSIBIBLY_WITHOUT_BRACES_TOKENS = [ - \T_IF, - \T_ELSE, - \T_ELSEIF, - \T_FOR, - \T_FOREACH, - \T_WHILE, - \T_DO, - ]; - private const BLOCK_FIRST_TOKENS = ['{', [CT::T_DESTRUCTURING_BRACKET_OPEN], [CT::T_USE_TRAIT], [CT::T_GROUP_IMPORT_BRACE_OPEN], [CT::T_PROPERTY_HOOK_BRACE_OPEN], [FCT::T_ATTRIBUTE]]; - private const PROPERTY_KEYWORDS = [\T_VAR, \T_PUBLIC, \T_PROTECTED, \T_PRIVATE, \T_STATIC, FCT::T_READONLY]; - - private AlternativeSyntaxAnalyzer $alternativeSyntaxAnalyzer; - - private bool $bracesFixerCompatibility; - - public function __construct(bool $bracesFixerCompatibility = false) - { - parent::__construct(); - - $this->bracesFixerCompatibility = $bracesFixerCompatibility; - } - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Each statement must be indented.', - [ - new CodeSample( - <<<'PHP' - false], - ), - new CodeSample( - <<<'PHP' - true], - ), - ], - ); - } - - /** - * {@inheritdoc} - * - * Must run before HeredocIndentationFixer. - * Must run after BracesPositionFixer, ClassAttributesSeparationFixer, CurlyBracesPositionFixer, FullyQualifiedStrictTypesFixer, GlobalNamespaceImportFixer, MethodArgumentSpaceFixer, NoUselessElseFixer, YieldFromArrayToYieldsFixer. - */ - public function getPriority(): int - { - return -3; - } - - public function isCandidate(Tokens $tokens): bool - { - return true; - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('stick_comment_to_next_continuous_control_statement', 'Last comment of code block counts as comment for next block.')) - ->setAllowedTypes(['bool']) - ->setDefault(false) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $this->alternativeSyntaxAnalyzer = new AlternativeSyntaxAnalyzer(); - - $endIndex = \count($tokens) - 1; - if ($tokens[$endIndex]->isWhitespace()) { - --$endIndex; - } - - $lastIndent = $this->getLineIndentationWithBracesCompatibility( - $tokens, - 0, - $this->extractIndent($this->computeNewLineContent($tokens, 0)), - ); - - /** - * @var list $scopes - */ - $scopes = [ - [ - 'type' => 'block', - 'skip' => false, - 'end_index' => $endIndex, - 'end_index_inclusive' => true, - 'initial_indent' => $lastIndent, - 'is_indented_block' => false, - ], - ]; - - $previousLineInitialIndent = ''; - $previousLineNewIndent = ''; - $noBracesBlockStarts = []; - $alternativeBlockStarts = []; - $caseBlockStarts = []; - - foreach ($tokens as $index => $token) { - $currentScope = \count($scopes) - 1; - - if (isset($noBracesBlockStarts[$index])) { - $scopes[] = [ - 'type' => 'block', - 'skip' => false, - 'end_index' => $this->findStatementEndIndex($tokens, $index, \count($tokens) - 1) + 1, - 'end_index_inclusive' => true, - 'initial_indent' => $this->getLineIndentationWithBracesCompatibility($tokens, $index, $lastIndent), - 'is_indented_block' => true, - ]; - ++$currentScope; - } - - if ( - $token->equalsAny(self::BLOCK_FIRST_TOKENS) - || ($token->equals('(') && !$tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind(\T_ARRAY)) - || isset($alternativeBlockStarts[$index]) - || isset($caseBlockStarts[$index]) - ) { - $endIndexInclusive = true; - - if ($token->isGivenKind([\T_EXTENDS, \T_IMPLEMENTS])) { - $endIndex = $tokens->getNextTokenOfKind($index, ['{']); - } elseif ($token->isGivenKind(CT::T_USE_TRAIT)) { - $endIndex = $tokens->getNextTokenOfKind($index, [';']); - } elseif ($token->equals(':')) { - if (isset($caseBlockStarts[$index])) { - [$endIndex, $endIndexInclusive] = $this->findCaseBlockEnd($tokens, $index); - } elseif ($this->alternativeSyntaxAnalyzer->belongsToAlternativeSyntax($tokens, $index)) { - $endIndex = $this->alternativeSyntaxAnalyzer->findAlternativeSyntaxBlockEnd($tokens, $alternativeBlockStarts[$index]); - } - } elseif ($token->isGivenKind(CT::T_DESTRUCTURING_BRACKET_OPEN)) { - $endIndex = $tokens->getNextTokenOfKind($index, [[CT::T_DESTRUCTURING_BRACKET_CLOSE]]); - } elseif ($token->isGivenKind(CT::T_GROUP_IMPORT_BRACE_OPEN)) { - $endIndex = $tokens->getNextTokenOfKind($index, [[CT::T_GROUP_IMPORT_BRACE_CLOSE]]); - } elseif ($token->equals('{')) { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - } elseif ($token->equals('(')) { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - } elseif ($token->isGivenKind(CT::T_PROPERTY_HOOK_BRACE_OPEN)) { - $endIndex = $tokens->getNextTokenOfKind($index, [[CT::T_PROPERTY_HOOK_BRACE_CLOSE]]); - } else { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - } - - if ('block_signature' === $scopes[$currentScope]['type']) { - $initialIndent = $scopes[$currentScope]['initial_indent']; - } else { - $initialIndent = $this->getLineIndentationWithBracesCompatibility($tokens, $index, $lastIndent); - } - - $skip = false; - if ($this->bracesFixerCompatibility) { - $prevIndex = $tokens->getPrevMeaningfulToken($index); - if (null !== $prevIndex) { - $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - } - if (null !== $prevIndex && $tokens[$prevIndex]->isGivenKind([\T_FUNCTION, \T_FN])) { - $skip = true; - } - } - - $scopes[] = [ - 'type' => 'block', - 'skip' => $skip, - 'end_index' => $endIndex, - 'end_index_inclusive' => $endIndexInclusive, - 'initial_indent' => $initialIndent, - 'is_indented_block' => true, - ]; - ++$currentScope; - - while ($index >= $scopes[$currentScope]['end_index']) { - array_pop($scopes); - - --$currentScope; - } - - continue; - } - - if ( - $token->isGivenKind(CT::T_ARRAY_BRACKET_OPEN) - || ($token->equals('(') && $tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind(\T_ARRAY)) - ) { - $blockType = $token->equals('(') ? Tokens::BLOCK_TYPE_PARENTHESIS : Tokens::BLOCK_TYPE_ARRAY_BRACKET; - - $scopes[] = [ - 'type' => 'statement', - 'skip' => true, - 'end_index' => $tokens->findBlockEnd($blockType, $index), - 'end_index_inclusive' => true, - 'initial_indent' => $previousLineInitialIndent, - 'new_indent' => $previousLineNewIndent, - 'is_indented_block' => false, - ]; - - continue; - } - - $isPropertyStart = $this->isPropertyStart($tokens, $index); - if ($isPropertyStart || $token->isGivenKind(self::BLOCK_SIGNATURE_FIRST_TOKENS)) { - $lastWhitespaceIndex = null; - $closingParenthesisIndex = null; - - for ($endIndex = $index + 1, $max = \count($tokens); $endIndex < $max; ++$endIndex) { - $endToken = $tokens[$endIndex]; - - if ($endToken->equals('(')) { - $closingParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $endIndex); - $endIndex = $closingParenthesisIndex; - - continue; - } - - if ($endToken->isGivenKind(CT::T_ARRAY_BRACKET_OPEN)) { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_BRACKET, $endIndex); - - continue; - } - - if ($endToken->equalsAny(['{', ';', [\T_DOUBLE_ARROW], [\T_IMPLEMENTS]])) { - break; - } - - if ($endToken->equals(':')) { - if ($token->isGivenKind([\T_CASE, \T_DEFAULT])) { - $caseBlockStarts[$endIndex] = $index; - } else { - $alternativeBlockStarts[$endIndex] = $index; - } - - break; - } - - if (!$token->isGivenKind(self::CONTROL_STRUCTURE_POSSIBIBLY_WITHOUT_BRACES_TOKENS)) { - continue; - } - - if ($endToken->isWhitespace()) { - $lastWhitespaceIndex = $endIndex; - - continue; - } - - if (!$endToken->isComment()) { - $noBraceBlockStartIndex = $lastWhitespaceIndex ?? $endIndex; - $noBracesBlockStarts[$noBraceBlockStartIndex] = true; - - $endIndex = $closingParenthesisIndex ?? $index; - - break; - } - } - - $scopes[] = [ - 'type' => 'block_signature', - 'skip' => false, - 'end_index' => $endIndex, - 'end_index_inclusive' => true, - 'initial_indent' => $this->getLineIndentationWithBracesCompatibility($tokens, $index, $lastIndent), - 'is_indented_block' => $isPropertyStart || $token->isGivenKind([\T_EXTENDS, \T_IMPLEMENTS, \T_CONST, \T_CASE]), - ]; - - continue; - } - - if ($token->isGivenKind(\T_FUNCTION)) { - $endIndex = $index + 1; - - for ($max = \count($tokens); $endIndex < $max; ++$endIndex) { - if ($tokens[$endIndex]->equals('(')) { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $endIndex); - - continue; - } - - if ($tokens[$endIndex]->equalsAny(['{', ';'])) { - break; - } - } - - $scopes[] = [ - 'type' => 'block_signature', - 'skip' => false, - 'end_index' => $endIndex, - 'end_index_inclusive' => true, - 'initial_indent' => $this->getLineIndentationWithBracesCompatibility($tokens, $index, $lastIndent), - 'is_indented_block' => false, - ]; - - continue; - } - - if ( - $token->isWhitespace() - || ($index > 0 && $tokens[$index - 1]->isGivenKind(\T_OPEN_TAG)) - ) { - $previousOpenTagContent = $tokens[$index - 1]->isGivenKind(\T_OPEN_TAG) - ? Preg::replace('/\S/', '', $tokens[$index - 1]->getContent()) - : ''; - - $content = $previousOpenTagContent.($token->isWhitespace() ? $token->getContent() : ''); - - if (!Preg::match('/\R/', $content)) { - continue; - } - - $nextToken = $tokens[$index + 1] ?? null; - - if ( - $this->bracesFixerCompatibility - && null !== $nextToken - && $nextToken->isComment() - && !$this->isCommentWithFixableIndentation($tokens, $index + 1) - ) { - continue; - } - - if ('block' === $scopes[$currentScope]['type'] || 'block_signature' === $scopes[$currentScope]['type']) { - $indent = false; - - if ($scopes[$currentScope]['is_indented_block']) { - $firstNonWhitespaceTokenIndex = null; - $nextNewlineIndex = null; - for ($searchIndex = $index + 1, $max = \count($tokens); $searchIndex < $max; ++$searchIndex) { - $searchToken = $tokens[$searchIndex]; - - if (!$searchToken->isWhitespace()) { - if (null === $firstNonWhitespaceTokenIndex) { - $firstNonWhitespaceTokenIndex = $searchIndex; - } - - continue; - } - - if (Preg::match('/\R/', $searchToken->getContent())) { - $nextNewlineIndex = $searchIndex; - - break; - } - } - - $endIndex = $scopes[$currentScope]['end_index']; - - if (!$scopes[$currentScope]['end_index_inclusive']) { - ++$endIndex; - } - - if ( - (null !== $firstNonWhitespaceTokenIndex && $firstNonWhitespaceTokenIndex < $endIndex) - || (null !== $nextNewlineIndex && $nextNewlineIndex < $endIndex) - ) { - if ( - // do we touch whitespace directly before comment... - $tokens[$firstNonWhitespaceTokenIndex]->isGivenKind(\T_COMMENT) - // ...and afterwards, there is only comment or `}` - && $tokens[$tokens->getNextMeaningfulToken($firstNonWhitespaceTokenIndex)]->equals('}') - ) { - if ( - // ... and the comment was only content in docblock - $tokens[$tokens->getPrevMeaningfulToken($firstNonWhitespaceTokenIndex)]->equals('{') - ) { - $indent = true; - } else { - // or it was dedicated comment for next control loop - // ^^ we need to check if there is a control group afterwards, and in that case don't make extra indent level - $nextIndex = $tokens->getNextMeaningfulToken($firstNonWhitespaceTokenIndex); - $nextNextIndex = $tokens->getNextMeaningfulToken($nextIndex); - - if (null !== $nextNextIndex && $tokens[$nextNextIndex]->isGivenKind([\T_ELSE, \T_ELSEIF])) { - $indent = true !== $this->configuration['stick_comment_to_next_continuous_control_statement']; - } else { - $indent = true; - } - } - } else { - $indent = true; - } - } - } - - $previousLineInitialIndent = $this->extractIndent($content); - - if ($scopes[$currentScope]['skip']) { - $whitespaces = $previousLineInitialIndent; - } else { - $whitespaces = $scopes[$currentScope]['initial_indent'].($indent ? $this->whitespacesConfig->getIndent() : ''); - } - - $content = Preg::replace( - '/(\R+)\h*$/', - '$1'.$whitespaces, - $content, - ); - - $previousLineNewIndent = $this->extractIndent($content); - } else { - $content = Preg::replace( - '/(\R)'.$scopes[$currentScope]['initial_indent'].'(\h*)$/D', - '$1'.$scopes[$currentScope]['new_indent'].'$2', - $content, - ); - } - - $lastIndent = $this->extractIndent($content); - - if ('' !== $previousOpenTagContent) { - $content = Preg::replace("/^{$previousOpenTagContent}/", '', $content); - } - - if ('' !== $content) { - $tokens->ensureWhitespaceAtIndex($index, 0, $content); - } elseif ($token->isWhitespace()) { - $tokens->clearAt($index); - } - - if (null !== $nextToken && $nextToken->isComment()) { - $tokens[$index + 1] = new Token([ - $nextToken->getId(), - Preg::replace( - '/(\R)'.preg_quote($previousLineInitialIndent, '/').'(\h*\S+.*)/', - '$1'.$previousLineNewIndent.'$2', - $nextToken->getContent(), - ), - ]); - } - - if ($token->isWhitespace()) { - continue; - } - } - - if ($this->isNewLineToken($tokens, $index)) { - $lastIndent = $this->extractIndent($this->computeNewLineContent($tokens, $index)); - } - - while ($index >= $scopes[$currentScope]['end_index']) { - array_pop($scopes); - - if ([] === $scopes) { - return; - } - - --$currentScope; - } - - if ($token->isComment() || $token->equalsAny([';', ',', '}', [\T_OPEN_TAG], [\T_CLOSE_TAG], [CT::T_ATTRIBUTE_CLOSE]])) { - continue; - } - - if ('statement' !== $scopes[$currentScope]['type'] && 'block_signature' !== $scopes[$currentScope]['type']) { - $endIndex = $this->findStatementEndIndex($tokens, $index, $scopes[$currentScope]['end_index']); - - if ($endIndex === $index) { - continue; - } - - $scopes[] = [ - 'type' => 'statement', - 'skip' => false, - 'end_index' => $endIndex, - 'end_index_inclusive' => false, - 'initial_indent' => $previousLineInitialIndent, - 'new_indent' => $previousLineNewIndent, - 'is_indented_block' => true, - ]; - } - } - } - - private function findStatementEndIndex(Tokens $tokens, int $index, int $parentScopeEndIndex): int - { - $endIndex = null; - - $ifLevel = 0; - $doWhileLevel = 0; - for ($searchEndIndex = $index; $searchEndIndex <= $parentScopeEndIndex; ++$searchEndIndex) { - $searchEndToken = $tokens[$searchEndIndex]; - - if ( - $searchEndToken->isGivenKind(\T_IF) - && !$tokens[$tokens->getPrevMeaningfulToken($searchEndIndex)]->isGivenKind(\T_ELSE) - ) { - ++$ifLevel; - - continue; - } - - if ($searchEndToken->isGivenKind(\T_DO)) { - ++$doWhileLevel; - - continue; - } - - if ($searchEndToken->equalsAny(['(', '{', [CT::T_ARRAY_BRACKET_OPEN]])) { - if ($searchEndToken->equals('(')) { - $blockType = Tokens::BLOCK_TYPE_PARENTHESIS; - } elseif ($searchEndToken->equals('{')) { - $blockType = Tokens::BLOCK_TYPE_BRACE; - } else { - $blockType = Tokens::BLOCK_TYPE_ARRAY_BRACKET; - } - - $searchEndIndex = $tokens->findBlockEnd($blockType, $searchEndIndex); - $searchEndToken = $tokens[$searchEndIndex]; - } - - if (!$searchEndToken->equalsAny([';', ',', '}', [\T_CLOSE_TAG]])) { - continue; - } - - $controlStructureContinuationIndex = $tokens->getNextMeaningfulToken($searchEndIndex); - - if ( - $ifLevel > 0 - && null !== $controlStructureContinuationIndex - && $tokens[$controlStructureContinuationIndex]->isGivenKind([\T_ELSE, \T_ELSEIF]) - ) { - if ( - $tokens[$controlStructureContinuationIndex]->isGivenKind(\T_ELSE) - && !$tokens[$tokens->getNextMeaningfulToken($controlStructureContinuationIndex)]->isGivenKind(\T_IF) - ) { - --$ifLevel; - } - - $searchEndIndex = $controlStructureContinuationIndex; - - continue; - } - - if ( - $doWhileLevel > 0 - && null !== $controlStructureContinuationIndex - && $tokens[$controlStructureContinuationIndex]->isGivenKind(\T_WHILE) - ) { - --$doWhileLevel; - $searchEndIndex = $controlStructureContinuationIndex; - - continue; - } - - $endIndex = $tokens->getPrevNonWhitespace($searchEndIndex); - - break; - } - - return $endIndex ?? $tokens->getPrevMeaningfulToken($parentScopeEndIndex); - } - - /** - * @return array{int, bool} - */ - private function findCaseBlockEnd(Tokens $tokens, int $index): array - { - for ($max = \count($tokens); $index < $max; ++$index) { - if ($tokens[$index]->isGivenKind(\T_SWITCH)) { - $braceIndex = $tokens->getNextMeaningfulToken( - $tokens->findBlockEnd( - Tokens::BLOCK_TYPE_PARENTHESIS, - $tokens->getNextMeaningfulToken($index), - ), - ); - - if ($tokens[$braceIndex]->equals(':')) { - $index = $this->alternativeSyntaxAnalyzer->findAlternativeSyntaxBlockEnd($tokens, $index); - } else { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $braceIndex); - } - - continue; - } - - if ($tokens[$index]->equals('{')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - continue; - } - - if ($tokens[$index]->isGivenKind([\T_CASE, \T_DEFAULT])) { - return [$index, true]; - } - - if ($tokens[$index]->equalsAny(['}', [\T_ENDSWITCH]])) { - return [$tokens->getPrevNonWhitespace($index), false]; - } - } - - throw new \LogicException('End of case block not found.'); - } - - private function getLineIndentationWithBracesCompatibility(Tokens $tokens, int $index, string $regularIndent): string - { - if ( - $this->bracesFixerCompatibility - && $tokens[$index]->isGivenKind(\T_OPEN_TAG) - && Preg::match('/\R/', $tokens[$index]->getContent()) - && isset($tokens[$index + 1]) - && $tokens[$index + 1]->isWhitespace() - && Preg::match('/\h+$/D', $tokens[$index + 1]->getContent()) - ) { - return Preg::replace('/.*?(\h+)$/sD', '$1', $tokens[$index + 1]->getContent()); - } - - return $regularIndent; - } - - /** - * Returns whether the token at given index is the last token in a property - * declaration before the type or the name of that property. - */ - private function isPropertyStart(Tokens $tokens, int $index): bool - { - $nextIndex = $tokens->getNextMeaningfulToken($index); - if ( - null === $nextIndex - || $tokens[$nextIndex]->isGivenKind(self::PROPERTY_KEYWORDS) - || $tokens[$nextIndex]->isGivenKind([\T_CONST, \T_FUNCTION]) - ) { - return false; - } - - while ($tokens[$index]->isGivenKind(self::PROPERTY_KEYWORDS)) { - if ($tokens[$index]->isGivenKind([\T_VAR, \T_PUBLIC, \T_PROTECTED, \T_PRIVATE])) { - return true; - } - - $index = $tokens->getPrevMeaningfulToken($index); - } - - return false; - } - - /** - * Returns whether the token at given index is a comment whose indentation - * can be fixed. - * - * Indentation of a comment is not changed when the comment is part of a - * multi-line message whose lines are all single-line comments and at least - * one line has meaningful content. - */ - private function isCommentWithFixableIndentation(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->isComment()) { - return false; - } - - if (str_starts_with($tokens[$index]->getContent(), '/*')) { - return true; - } - - $indent = preg_quote($this->whitespacesConfig->getIndent(), '~'); - - if (Preg::match("~^(//|#)({$indent}.*)?$~", $tokens[$index]->getContent())) { - return false; - } - - $firstCommentIndex = $index; - while (true) { - $firstCommentCandidateIndex = $this->getSiblingContinuousSingleLineComment($tokens, $firstCommentIndex, false); - if (null === $firstCommentCandidateIndex) { - break; - } - - $firstCommentIndex = $firstCommentCandidateIndex; - } - - $lastCommentIndex = $index; - while (true) { - $lastCommentCandidateIndex = $this->getSiblingContinuousSingleLineComment($tokens, $lastCommentIndex, true); - if (null === $lastCommentCandidateIndex) { - break; - } - - $lastCommentIndex = $lastCommentCandidateIndex; - } - - if ($firstCommentIndex === $lastCommentIndex) { - return true; - } - - for ($i = $firstCommentIndex + 1; $i < $lastCommentIndex; ++$i) { - if (!$tokens[$i]->isWhitespace() && !$tokens[$i]->isComment()) { - return false; - } - } - - return true; - } - - private function getSiblingContinuousSingleLineComment(Tokens $tokens, int $index, bool $after): ?int - { - $siblingIndex = $index; - do { - if ($after) { - $siblingIndex = $tokens->getNextTokenOfKind($siblingIndex, [[\T_COMMENT]]); - } else { - $siblingIndex = $tokens->getPrevTokenOfKind($siblingIndex, [[\T_COMMENT]]); - } - - if (null === $siblingIndex) { - return null; - } - } while (str_starts_with($tokens[$siblingIndex]->getContent(), '/*')); - - $newLines = 0; - for ($i = min($siblingIndex, $index) + 1, $max = max($siblingIndex, $index); $i < $max; ++$i) { - if ($tokens[$i]->isWhitespace() && Preg::match('/\R/', $tokens[$i]->getContent())) { - if (1 === $newLines || Preg::match('/\R.*\R/', $tokens[$i]->getContent())) { - return null; - } - - ++$newLines; - } - } - - return $siblingIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php deleted file mode 100644 index 33a9ad5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php +++ /dev/null @@ -1,265 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\AllowedValueSubset; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Future; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * elements?: list<'constant'|'function'|'property'>, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * elements: list<'constant'|'function'|'property'>, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @author Dariusz Rumiński - * @author John Paul E. Balandan, CPA - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TypeDeclarationSpacesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - private const PROPERTY_MODIFIERS = [\T_PRIVATE, \T_PROTECTED, \T_PUBLIC, \T_STATIC, \T_VAR, \T_FINAL, FCT::T_READONLY, FCT::T_PUBLIC_SET, FCT::T_PROTECTED_SET, FCT::T_PRIVATE_SET]; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'Ensure single space between a variable and its type declaration in function arguments and properties.', - [ - new CodeSample( - <<<'PHP' - (string) $c; - } - } - - PHP, - ['elements' => ['function']], - ), - new CodeSample( - <<<'PHP' - ['property']], - ), - new VersionSpecificCodeSample( - <<<'PHP' - ['constant']], - ), - ], - ); - } - - public function isCandidate(Tokens $tokens): bool - { - return $tokens->isAnyTokenKindsFound([...Token::getClassyTokenKinds(), \T_FN, \T_FUNCTION]); - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('elements', 'Structural elements where the spacing after the type declaration should be fixed.')) - ->setAllowedTypes(['string[]']) - ->setAllowedValues([new AllowedValueSubset(['function', 'property', 'constant'])]) - ->setDefault( - Future::getV4OrV3(['function', 'property', 'constant'], ['function', 'property']), - ) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $functionsAnalyzer = new FunctionsAnalyzer(); - - foreach (array_reverse($this->getElements($tokens), true) as $index => $type) { - if ('property' === $type && \in_array('property', $this->configuration['elements'], true)) { - $this->ensureSingleSpaceAtPropertyTypehint($tokens, $index); - - continue; - } - - if ('method' === $type && \in_array('function', $this->configuration['elements'], true)) { - $this->ensureSingleSpaceAtFunctionArgumentTypehint($functionsAnalyzer, $tokens, $index); - - continue; - } - - if ('const' === $type && \in_array('constant', $this->configuration['elements'], true)) { - $this->ensureSingleSpaceAtConstantTypehint($tokens, $index); - - // implicit continue; - } - } - } - - /** - * @return array - * - * @phpstan-return array - */ - private function getElements(Tokens $tokens): array - { - $tokensAnalyzer = new TokensAnalyzer($tokens); - - $elements = array_map( - static fn (array $element): string => $element['type'], - array_filter( - $tokensAnalyzer->getClassyElements(), - static fn (array $element): bool => \in_array($element['type'], ['method', 'property', 'const'], true), - ), - ); - - foreach ($tokens as $index => $token) { - if ( - $token->isGivenKind(\T_FN) - || ($token->isGivenKind(\T_FUNCTION) && !isset($elements[$index])) - ) { - $elements[$index] = 'method'; - } - } - - return $elements; - } - - private function ensureSingleSpaceAtFunctionArgumentTypehint(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void - { - foreach (array_reverse($functionsAnalyzer->getFunctionArguments($tokens, $index)) as $argumentInfo) { - $argumentType = $argumentInfo->getTypeAnalysis(); - - if (null === $argumentType) { - continue; - } - - $tokens->ensureWhitespaceAtIndex($argumentType->getEndIndex() + 1, 0, ' '); - } - } - - private function ensureSingleSpaceAtPropertyTypehint(Tokens $tokens, int $index): void - { - $propertyIndex = $index; - - do { - $index = $tokens->getPrevMeaningfulToken($index); - } while (!$tokens[$index]->isGivenKind(self::PROPERTY_MODIFIERS)); - - $propertyType = $this->collectTypeAnalysis($tokens, $index, $propertyIndex); - - if (null === $propertyType) { - return; - } - - $tokens->ensureWhitespaceAtIndex($propertyType->getEndIndex() + 1, 0, ' '); - } - - private function ensureSingleSpaceAtConstantTypehint(Tokens $tokens, int $index): void - { - $constIndex = $index; - $equalsIndex = $tokens->getNextTokenOfKind($constIndex, ['=']); - - if (null === $equalsIndex) { - return; - } - - $nameIndex = $tokens->getPrevMeaningfulToken($equalsIndex); - - if (!$tokens[$nameIndex]->isGivenKind(\T_STRING)) { - return; - } - - $typeEndIndex = $tokens->getPrevMeaningfulToken($nameIndex); - - if (null === $typeEndIndex || $tokens[$typeEndIndex]->isGivenKind(\T_CONST)) { - return; - } - - $tokens->ensureWhitespaceAtIndex($typeEndIndex + 1, 0, ' '); - } - - private function collectTypeAnalysis(Tokens $tokens, int $startIndex, int $endIndex): ?TypeAnalysis - { - $type = ''; - $typeStartIndex = $tokens->getNextMeaningfulToken($startIndex); - $typeEndIndex = $typeStartIndex; - - for ($i = $typeStartIndex; $i < $endIndex; ++$i) { - if ($tokens[$i]->isWhitespace() || $tokens[$i]->isComment()) { - continue; - } - - $type .= $tokens[$i]->getContent(); - $typeEndIndex = $i; - } - - return '' !== $type ? new TypeAnalysis($type, $typeStartIndex, $typeEndIndex) : null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php deleted file mode 100644 index 5820c69..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php +++ /dev/null @@ -1,175 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer\Whitespace; - -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\ConfigurableFixerTrait; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver; -use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface; -use PhpCsFixer\FixerConfiguration\FixerOptionBuilder; -use PhpCsFixer\FixerDefinition\CodeSample; -use PhpCsFixer\FixerDefinition\FixerDefinition; -use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; -use PhpCsFixer\FixerDefinition\VersionSpecification; -use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @phpstan-type _AutogeneratedInputConfiguration array{ - * space?: 'none'|'single', - * space_multiple_catch?: 'none'|'single'|null, - * } - * @phpstan-type _AutogeneratedComputedConfiguration array{ - * space: 'none'|'single', - * space_multiple_catch: 'none'|'single'|null, - * } - * - * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TypesSpacesFixer extends AbstractFixer implements ConfigurableFixerInterface -{ - /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */ - use ConfigurableFixerTrait; - - public function getDefinition(): FixerDefinitionInterface - { - return new FixerDefinition( - 'A single space or none should be around union type and intersection type operators.', - [ - new CodeSample( - " 'single'], - ), - new VersionSpecificCodeSample( - "isAnyTokenKindsFound([CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION]); - } - - protected function configurePostNormalisation(): void - { - if (!isset($this->configuration['space_multiple_catch'])) { - $this->configuration = [ - 'space' => $this->configuration['space'], - 'space_multiple_catch' => $this->configuration['space'], - ]; - } - } - - protected function createConfigurationDefinition(): FixerConfigurationResolverInterface - { - return new FixerConfigurationResolver([ - (new FixerOptionBuilder('space', 'Spacing to apply around union type and intersection type operators.')) - ->setAllowedValues(['none', 'single']) - ->setDefault('none') - ->getOption(), - (new FixerOptionBuilder('space_multiple_catch', 'Spacing to apply around type operator when catching exceptions of multiple types, use `null` to follow the value configured for `space`.')) - ->setAllowedValues(['none', 'single', null]) - ->setDefault(null) - ->getOption(), - ]); - } - - protected function applyFix(\SplFileInfo $file, Tokens $tokens): void - { - $tokenCount = $tokens->count() - 1; - - for ($index = 0; $index < $tokenCount; ++$index) { - if ($tokens[$index]->isGivenKind([CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION])) { - $tokenCount += $this->fixSpacing($tokens, $index, 'single' === $this->configuration['space']); - - continue; - } - - if ($tokens[$index]->isGivenKind(\T_CATCH)) { - while (true) { - $index = $tokens->getNextTokenOfKind($index, [')', [CT::T_TYPE_ALTERNATION]]); - - if ($tokens[$index]->equals(')')) { - break; - } - - $tokenCount += $this->fixSpacing($tokens, $index, 'single' === $this->configuration['space_multiple_catch']); - } - - // implicit continue - } - } - } - - private function fixSpacing(Tokens $tokens, int $index, bool $singleSpace): int - { - if (!$singleSpace) { - $this->ensureNoSpace($tokens, $index + 1); - $this->ensureNoSpace($tokens, $index - 1); - - return 0; - } - - $addedTokenCount = 0; - $addedTokenCount += $this->ensureSingleSpace($tokens, $index + 1, 0); - $addedTokenCount += $this->ensureSingleSpace($tokens, $index - 1, 1); - - return $addedTokenCount; - } - - private function ensureSingleSpace(Tokens $tokens, int $index, int $offset): int - { - if (!$tokens[$index]->isWhitespace()) { - $tokens->insertSlices([$index + $offset => new Token([\T_WHITESPACE, ' '])]); - - return 1; - } - - if (' ' !== $tokens[$index]->getContent() && !Preg::match('/\R/', $tokens[$index]->getContent())) { - $tokens[$index] = new Token([\T_WHITESPACE, ' ']); - } - - return 0; - } - - private function ensureNoSpace(Tokens $tokens, int $index): void - { - if ($tokens[$index]->isWhitespace() && !Preg::match('/\R/', $tokens[$index]->getContent())) { - $tokens->clearAt($index); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php deleted file mode 100644 index bd14c0e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php +++ /dev/null @@ -1,27 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Fixer; - -use PhpCsFixer\WhitespacesFixerConfig; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface WhitespacesAwareFixerInterface extends FixerInterface -{ - public function setWhitespacesConfig(WhitespacesFixerConfig $config): void; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php deleted file mode 100644 index 290eb7d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php +++ /dev/null @@ -1,82 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @author ntzm - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AliasedFixerOption implements FixerOptionInterface -{ - private FixerOptionInterface $fixerOption; - - private string $alias; - - public function __construct(FixerOptionInterface $fixerOption, string $alias) - { - $this->fixerOption = $fixerOption; - $this->alias = $alias; - } - - public function getAlias(): string - { - return $this->alias; - } - - public function getName(): string - { - return $this->fixerOption->getName(); - } - - public function getDescription(): string - { - return $this->fixerOption->getDescription(); - } - - public function hasDefault(): bool - { - return $this->fixerOption->hasDefault(); - } - - /** - * @return mixed - * - * @throws \LogicException when no default value is defined - */ - public function getDefault() - { - return $this->fixerOption->getDefault(); - } - - public function getAllowedTypes(): ?array - { - return $this->fixerOption->getAllowedTypes(); - } - - public function getAllowedValues(): ?array - { - return $this->fixerOption->getAllowedValues(); - } - - public function getNormalizer(): ?\Closure - { - return $this->fixerOption->getNormalizer(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php deleted file mode 100644 index 8b75316..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php +++ /dev/null @@ -1,80 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @author ntzm - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AliasedFixerOptionBuilder -{ - private FixerOptionBuilder $optionBuilder; - - private string $alias; - - public function __construct(FixerOptionBuilder $optionBuilder, string $alias) - { - $this->optionBuilder = $optionBuilder; - $this->alias = $alias; - } - - /** - * @param mixed $default - */ - public function setDefault($default): self - { - $this->optionBuilder->setDefault($default); - - return $this; - } - - /** - * @param list $allowedTypes - */ - public function setAllowedTypes(array $allowedTypes): self - { - $this->optionBuilder->setAllowedTypes($allowedTypes); - - return $this; - } - - /** - * @param non-empty-list $allowedValues - */ - public function setAllowedValues(array $allowedValues): self - { - $this->optionBuilder->setAllowedValues($allowedValues); - - return $this; - } - - public function setNormalizer(\Closure $normalizer): self - { - $this->optionBuilder->setNormalizer($normalizer); - - return $this; - } - - public function getOption(): AliasedFixerOption - { - return new AliasedFixerOption( - $this->optionBuilder->getOption(), - $this->alias, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php deleted file mode 100644 index 88aa905..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AllowedValueSubset -{ - /** - * @var non-empty-list - */ - private array $allowedValues; - - /** - * @param non-empty-list $allowedValues - */ - public function __construct(array $allowedValues) - { - sort($allowedValues, \SORT_FLAG_CASE | \SORT_STRING); - $this->allowedValues = $allowedValues; - } - - /** - * Checks whether the given values are a subset of the allowed ones. - * - * @param mixed $values the value to validate - */ - public function __invoke($values): bool - { - if (!\is_array($values)) { - return false; - } - - foreach ($values as $value) { - if (!\in_array($value, $this->allowedValues, true)) { - return false; - } - } - - return true; - } - - /** - * @return non-empty-list - */ - public function getAllowedValues(): array - { - return $this->allowedValues; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php deleted file mode 100644 index 8f85554..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php +++ /dev/null @@ -1,76 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DeprecatedFixerOption implements DeprecatedFixerOptionInterface -{ - private FixerOptionInterface $option; - - private string $deprecationMessage; - - public function __construct(FixerOptionInterface $option, string $deprecationMessage) - { - $this->option = $option; - $this->deprecationMessage = $deprecationMessage; - } - - public function getName(): string - { - return $this->option->getName(); - } - - public function getDescription(): string - { - return $this->option->getDescription(); - } - - public function hasDefault(): bool - { - return $this->option->hasDefault(); - } - - /** - * @return mixed - */ - public function getDefault() - { - return $this->option->getDefault(); - } - - public function getAllowedTypes(): ?array - { - return $this->option->getAllowedTypes(); - } - - public function getAllowedValues(): ?array - { - return $this->option->getAllowedValues(); - } - - public function getNormalizer(): ?\Closure - { - return $this->option->getNormalizer(); - } - - public function getDeprecationMessage(): string - { - return $this->deprecationMessage; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php deleted file mode 100644 index 36cf496..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php +++ /dev/null @@ -1,23 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface DeprecatedFixerOptionInterface extends FixerOptionInterface -{ - public function getDeprecationMessage(): string; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php deleted file mode 100644 index 8df8847..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php +++ /dev/null @@ -1,154 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -use PhpCsFixer\Future; -use PhpCsFixer\Preg; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; -use Symfony\Component\OptionsResolver\OptionsResolver; - -/** - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixerConfigurationResolver implements FixerConfigurationResolverInterface -{ - /** - * @var list - * - * @readonly - */ - private array $options; - - /** - * @param iterable $options - */ - public function __construct(iterable $options) - { - $fixerOptionSorter = new FixerOptionSorter(); - $this->validateOptions($options); - - $this->options = $fixerOptionSorter->sort($options); - - if (0 === \count($this->options)) { - throw new \LogicException('Options cannot be empty.'); - } - } - - public function getOptions(): array - { - return $this->options; - } - - public function resolve(array $configuration): array - { - $resolver = new OptionsResolver(); - - foreach ($this->options as $option) { - $name = $option->getName(); - - if ($option instanceof AliasedFixerOption) { - $alias = $option->getAlias(); - - if (\array_key_exists($alias, $configuration)) { - if (\array_key_exists($name, $configuration)) { - throw new InvalidOptionsException(\sprintf('Aliased option "%s"/"%s" is passed multiple times.', $name, $alias)); - } - - Future::triggerDeprecation(new \RuntimeException(\sprintf( - 'Option "%s" is deprecated, use "%s" instead.', - $alias, - $name, - ))); - - $configuration[$name] = $configuration[$alias]; - unset($configuration[$alias]); - } - } - - if ($option->hasDefault()) { - $resolver->setDefault($name, $option->getDefault()); - } else { - $resolver->setRequired($name); - } - - $allowedValues = $option->getAllowedValues(); - if (null !== $allowedValues) { - foreach ($allowedValues as &$allowedValue) { - if (\is_object($allowedValue) && \is_callable($allowedValue)) { - $allowedValue = static fn (/* mixed */ $values) => $allowedValue($values); - } - } - - $resolver->setAllowedValues($name, $allowedValues); - } - - $allowedTypes = $option->getAllowedTypes(); - if (null !== $allowedTypes) { - $allowedTypesNormalised = array_map( - static function (string $type): string { - // Symfony OptionsResolver doesn't support `array` natively, let's simplify the type - $matches = []; - if (true === Preg::match('/array<\w+,\s*(\??[\w\'|]+)>/', $type, $matches)) { - if ('?' === $matches[1][0]) { - return 'array'; - } - - if ("'" === $matches[1][0]) { - return 'string[]'; - } - - return $matches[1].'[]'; - } - - // Symfony OptionsResolver doesn't support 'class-string' natively, let's simplify the type - return str_replace('class-string', 'string', $type); - }, - $allowedTypes, - ); - - $resolver->setAllowedTypes($name, $allowedTypesNormalised); - } - - $normalizer = $option->getNormalizer(); - if (null !== $normalizer) { - $resolver->setNormalizer($name, $normalizer); - } - } - - return $resolver->resolve($configuration); - } - - /** - * @param iterable $options - * - * @throws \LogicException when the option is already defined - */ - private function validateOptions(iterable $options): void - { - $names = []; - - foreach ($options as $option) { - $name = $option->getName(); - - if (\in_array($name, $names, true)) { - throw new \LogicException(\sprintf('The "%s" option is defined multiple times.', $name)); - } - - $names[] = $name; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php deleted file mode 100644 index 61761fc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface FixerConfigurationResolverInterface -{ - /** - * @return list - */ - public function getOptions(): array; - - /** - * @param array $configuration - * - * @return array - */ - public function resolve(array $configuration): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php deleted file mode 100644 index 4e35765..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php +++ /dev/null @@ -1,147 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixerOption implements FixerOptionInterface -{ - private string $name; - - private string $description; - - private bool $isRequired; - - /** - * @var mixed - */ - private $default; - - /** - * @var null|list - */ - private ?array $allowedTypes; - - /** - * @var null|non-empty-list - */ - private ?array $allowedValues; - - private ?\Closure $normalizer; - - /** - * @param mixed $default - * @param null|list $allowedTypes - * @param null|non-empty-list $allowedValues - */ - public function __construct( - string $name, - string $description, - bool $isRequired = true, - $default = null, - ?array $allowedTypes = null, - ?array $allowedValues = null, - ?\Closure $normalizer = null - ) { - if ($isRequired && null !== $default) { - throw new \LogicException('Required options cannot have a default value.'); - } - - if (null !== $allowedValues) { - $allowedValues = array_map( - fn ($allowedValue) => $allowedValue instanceof \Closure ? $this->unbind($allowedValue) : $allowedValue, - $allowedValues, - ); - } - - $this->name = $name; - $this->description = $description; - $this->isRequired = $isRequired; - $this->default = $default; - $this->allowedTypes = $allowedTypes; - $this->allowedValues = $allowedValues; - - if (null !== $normalizer) { - $this->normalizer = $this->unbind($normalizer); - } else { - $this->normalizer = null; - } - } - - public function getName(): string - { - return $this->name; - } - - public function getDescription(): string - { - return $this->description; - } - - public function hasDefault(): bool - { - return !$this->isRequired; - } - - /** - * @return mixed - */ - public function getDefault() - { - if (!$this->hasDefault()) { - throw new \LogicException('No default value defined.'); - } - - return $this->default; - } - - public function getAllowedTypes(): ?array - { - return $this->allowedTypes; - } - - public function getAllowedValues(): ?array - { - return $this->allowedValues; - } - - public function getNormalizer(): ?\Closure - { - return $this->normalizer; - } - - /** - * Unbinds the given closure to avoid memory leaks. - * - * The closures provided to this class were probably defined in a fixer - * class and thus bound to it by default. The configuration will then be - * stored in {@see AbstractFixer::$configurationDefinition}, leading to the - * following cyclic reference: - * - * fixer -> configuration definition -> options -> closures -> fixer - * - * This cyclic reference prevent the garbage collector to free memory as - * all elements are still referenced. - * - * See {@see https://bugs.php.net/bug.php?id=69639 Bug #69639} for details. - */ - private function unbind(\Closure $closure): \Closure - { - return $closure->bindTo(null); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php deleted file mode 100644 index d3413a5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php +++ /dev/null @@ -1,129 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixerOptionBuilder -{ - private string $name; - - private string $description; - - /** - * @var null|mixed - */ - private $default; - - private bool $isRequired = true; - - /** - * @var null|list - */ - private ?array $allowedTypes = null; - - /** - * @var null|non-empty-list - */ - private ?array $allowedValues = null; - - private ?\Closure $normalizer = null; - - private ?string $deprecationMessage = null; - - public function __construct(string $name, string $description) - { - $this->name = $name; - $this->description = $description; - $this->default = null; - } - - /** - * @param mixed $default - * - * @return $this - */ - public function setDefault($default): self - { - $this->default = $default; - $this->isRequired = false; - - return $this; - } - - /** - * @param list $allowedTypes - * - * @return $this - */ - public function setAllowedTypes(array $allowedTypes): self - { - $this->allowedTypes = $allowedTypes; - - return $this; - } - - /** - * @param non-empty-list $allowedValues - * - * @return $this - */ - public function setAllowedValues(array $allowedValues): self - { - $this->allowedValues = $allowedValues; - - return $this; - } - - /** - * @return $this - */ - public function setNormalizer(\Closure $normalizer): self - { - $this->normalizer = $normalizer; - - return $this; - } - - /** - * @return $this - */ - public function setDeprecationMessage(?string $deprecationMessage): self - { - $this->deprecationMessage = $deprecationMessage; - - return $this; - } - - public function getOption(): FixerOptionInterface - { - $option = new FixerOption( - $this->name, - $this->description, - $this->isRequired, - $this->default, - $this->allowedTypes, - $this->allowedValues, - $this->normalizer, - ); - - if (null !== $this->deprecationMessage) { - $option = new DeprecatedFixerOption($option, $this->deprecationMessage); - } - - return $option; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php deleted file mode 100644 index 35af494..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php +++ /dev/null @@ -1,46 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface FixerOptionInterface -{ - public function getName(): string; - - public function getDescription(): string; - - public function hasDefault(): bool; - - /** - * @return mixed - * - * @throws \LogicException when no default value is defined - */ - public function getDefault(); - - /** - * @return null|list - */ - public function getAllowedTypes(): ?array; - - /** - * @return null|non-empty-list - */ - public function getAllowedValues(): ?array; - - public function getNormalizer(): ?\Closure; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionSorter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionSorter.php deleted file mode 100644 index 90b7fde..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionSorter.php +++ /dev/null @@ -1,39 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixerOptionSorter -{ - /** - * @param iterable $options - * - * @return list - */ - public function sort(iterable $options): array - { - if (!\is_array($options)) { - $options = iterator_to_array($options, false); - } - - usort($options, static fn (FixerOptionInterface $a, FixerOptionInterface $b): int => $a->getName() <=> $b->getName()); - - return $options; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php deleted file mode 100644 index 5355a44..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerConfiguration; - -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class InvalidOptionsForEnvException extends InvalidOptionsException {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php deleted file mode 100644 index 826374d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php +++ /dev/null @@ -1,51 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CodeSample implements CodeSampleInterface -{ - private string $code; - - /** - * @var null|array - */ - private ?array $configuration; - - /** - * @param null|array $configuration - */ - public function __construct(string $code, ?array $configuration = null) - { - $this->code = $code; - $this->configuration = $configuration; - } - - public function getCode(): string - { - return $this->code; - } - - public function getConfiguration(): ?array - { - return $this->configuration; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php deleted file mode 100644 index 0f8da2b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface CodeSampleInterface -{ - public function getCode(): string; - - /** - * @return null|array - */ - public function getConfiguration(): ?array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php deleted file mode 100644 index ce2471d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php +++ /dev/null @@ -1,58 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FileSpecificCodeSample implements FileSpecificCodeSampleInterface -{ - private CodeSampleInterface $codeSample; - - private \SplFileInfo $splFileInfo; - - /** - * @param null|array $configuration - */ - public function __construct( - string $code, - \SplFileInfo $splFileInfo, - ?array $configuration = null - ) { - $this->codeSample = new CodeSample($code, $configuration); - $this->splFileInfo = $splFileInfo; - } - - public function getCode(): string - { - return $this->codeSample->getCode(); - } - - public function getConfiguration(): ?array - { - return $this->codeSample->getConfiguration(); - } - - public function getSplFileInfo(): \SplFileInfo - { - return $this->splFileInfo; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php deleted file mode 100644 index a7784de..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php +++ /dev/null @@ -1,27 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface FileSpecificCodeSampleInterface extends CodeSampleInterface -{ - public function getSplFileInfo(): \SplFileInfo; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php deleted file mode 100644 index 408a785..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixerDefinition implements FixerDefinitionInterface -{ - private string $summary; - - /** - * @var list - */ - private array $codeSamples; - - /** - * Description of Fixer and benefit of using it. - */ - private ?string $description; - - /** - * Description why Fixer is risky. - */ - private ?string $riskyDescription; - - /** - * @param list $codeSamples array of samples, where single sample is [code, configuration] - * @param null|string $riskyDescription null for non-risky fixer - */ - public function __construct( - string $summary, - array $codeSamples, - ?string $description = null, - ?string $riskyDescription = null - ) { - $this->summary = $summary; - $this->codeSamples = $codeSamples; - $this->description = $description; - $this->riskyDescription = $riskyDescription; - } - - public function getSummary(): string - { - return $this->summary; - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function getRiskyDescription(): ?string - { - return $this->riskyDescription; - } - - public function getCodeSamples(): array - { - return $this->codeSamples; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php deleted file mode 100644 index 4e61ff6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface FixerDefinitionInterface -{ - public function getSummary(): string; - - public function getDescription(): ?string; - - /** - * @return null|string null for non-risky fixer - */ - public function getRiskyDescription(): ?string; - - /** - * Array of samples, where single sample is [code, configuration]. - * - * @return list - */ - public function getCodeSamples(): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php deleted file mode 100644 index ff60c6a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Andreas Möller - * - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class VersionSpecificCodeSample implements VersionSpecificCodeSampleInterface -{ - private CodeSampleInterface $codeSample; - - private VersionSpecificationInterface $versionSpecification; - - /** - * @param null|array $configuration - */ - public function __construct( - string $code, - VersionSpecificationInterface $versionSpecification, - ?array $configuration = null - ) { - $this->codeSample = new CodeSample($code, $configuration); - $this->versionSpecification = $versionSpecification; - } - - public function getCode(): string - { - return $this->codeSample->getCode(); - } - - public function getConfiguration(): ?array - { - return $this->codeSample->getConfiguration(); - } - - public function isSuitableFor(int $version): bool - { - return $this->versionSpecification->isSatisfiedBy($version); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php deleted file mode 100644 index ed2176f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Andreas Möller - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface VersionSpecificCodeSampleInterface extends CodeSampleInterface -{ - public function isSuitableFor(int $version): bool; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php deleted file mode 100644 index bf951f4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Andreas Möller - * - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class VersionSpecification implements VersionSpecificationInterface -{ - /** - * @var null|int<1, max> - */ - private ?int $minimum; - - /** - * @var null|int<1, max> - */ - private ?int $maximum; - - /** - * @param null|int<1, max> $minimum - * @param null|int<1, max> $maximum - * - * @throws \InvalidArgumentException - */ - public function __construct(?int $minimum = null, ?int $maximum = null) - { - if (null === $minimum && null === $maximum) { - throw new \InvalidArgumentException('Minimum or maximum need to be specified.'); - } - - if (null !== $minimum && 1 > $minimum) { - throw new \InvalidArgumentException('Minimum needs to be either null or an integer greater than 0.'); - } - - if (null !== $maximum) { - if (1 > $maximum) { - throw new \InvalidArgumentException('Maximum needs to be either null or an integer greater than 0.'); - } - - if (null !== $minimum && $maximum < $minimum) { - throw new \InvalidArgumentException('Maximum should not be lower than the minimum.'); - } - } - - $this->minimum = $minimum; - $this->maximum = $maximum; - } - - public function isSatisfiedBy(int $version): bool - { - if (null !== $this->minimum && $version < $this->minimum) { - return false; - } - - if (null !== $this->maximum && $version > $this->maximum) { - return false; - } - - return true; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php deleted file mode 100644 index 64548c2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\FixerDefinition; - -/** - * @author Andreas Möller - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface VersionSpecificationInterface -{ - public function isSatisfiedBy(int $version): bool; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerFactory.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerFactory.php deleted file mode 100644 index a8e5159..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerFactory.php +++ /dev/null @@ -1,246 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Fixer\ConfigurableFixerInterface; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface; -use PhpCsFixer\RuleSet\RuleSetInterface; -use Symfony\Component\Finder\Finder as SymfonyFinder; -use Symfony\Component\Finder\SplFileInfo; - -/** - * Class provides a way to create a group of fixers. - * - * Fixers may be registered (made the factory aware of them) by - * registering a custom fixer and default, built in fixers. - * Then, one can attach Config instance to fixer instances. - * - * Finally factory creates a ready to use group of fixers. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixerFactory -{ - private FixerNameValidator $nameValidator; - - /** - * @var list - */ - private array $fixers = []; - - /** - * @var array - */ - private array $fixersByName = []; - - public function __construct() - { - $this->nameValidator = new FixerNameValidator(); - } - - public function setWhitespacesConfig(WhitespacesFixerConfig $config): self - { - foreach ($this->fixers as $fixer) { - if ($fixer instanceof WhitespacesAwareFixerInterface) { - $fixer->setWhitespacesConfig($config); - } - } - - return $this; - } - - /** - * @return list - */ - public function getFixers(): array - { - $this->fixers = Utils::sortFixers($this->fixers); - - return $this->fixers; - } - - /** - * @return $this - */ - public function registerBuiltInFixers(): self - { - static $builtInFixers = null; - - if (null === $builtInFixers) { - /** @var list> */ - $builtInFixers = []; - - $finder = SymfonyFinder::create()->files() - ->in(__DIR__.'/Fixer') - ->exclude(['Internal']) - ->name('*Fixer.php') - ->depth(1) - ; - - /** @var SplFileInfo $file */ - foreach ($finder as $file) { - $relativeNamespace = $file->getRelativePath(); - $fixerClass = 'PhpCsFixer\Fixer\\'.('' !== $relativeNamespace ? $relativeNamespace.'\\' : '').$file->getBasename('.php'); - $builtInFixers[] = $fixerClass; - } - } - - foreach ($builtInFixers as $class) { - /** @var FixerInterface */ - $fixer = new $class(); - $this->registerFixer($fixer, false); - } - - return $this; - } - - /** - * @param iterable $fixers - * - * @return $this - */ - public function registerCustomFixers(iterable $fixers): self - { - foreach ($fixers as $fixer) { - $this->registerFixer($fixer, true); - } - - return $this; - } - - /** - * @return $this - */ - public function registerFixer(FixerInterface $fixer, bool $isCustom): self - { - $name = $fixer->getName(); - - if (isset($this->fixersByName[$name])) { - throw new \UnexpectedValueException(\sprintf('Fixer named "%s" is already registered.', $name)); - } - - if (!$this->nameValidator->isValid($name, $isCustom)) { - throw new \UnexpectedValueException(\sprintf('Fixer named "%s" has invalid name.', $name)); - } - - $this->fixers[] = $fixer; - $this->fixersByName[$name] = $fixer; - - return $this; - } - - /** - * Apply RuleSet on fixers to filter out all unwanted fixers. - * - * @return $this - */ - public function useRuleSet(RuleSetInterface $ruleSet): self - { - $fixers = []; - $fixersByName = []; - $fixerConflicts = []; - - $fixerNames = array_keys($ruleSet->getRules()); - foreach ($fixerNames as $name) { - if (!\array_key_exists($name, $this->fixersByName)) { - throw new \UnexpectedValueException(\sprintf('Rule "%s" does not exist.', $name)); - } - - $fixer = $this->fixersByName[$name]; - $config = $ruleSet->getRuleConfiguration($name); - - if (null !== $config) { - if ($fixer instanceof ConfigurableFixerInterface) { - if (\count($config) < 1) { - throw new InvalidFixerConfigurationException($fixer->getName(), 'Configuration must be an array and may not be empty.'); - } - - $fixer->configure($config); - } else { - throw new InvalidFixerConfigurationException($fixer->getName(), 'Is not configurable.'); - } - } - - $fixers[] = $fixer; - $fixersByName[$name] = $fixer; - $conflicts = array_values(array_intersect($this->getFixersConflicts($fixer), $fixerNames)); - - if (\count($conflicts) > 0) { - $fixerConflicts[$name] = $conflicts; - } - } - - if (\count($fixerConflicts) > 0) { - throw new \UnexpectedValueException($this->generateConflictMessage($fixerConflicts)); - } - - $this->fixers = $fixers; - $this->fixersByName = $fixersByName; - - return $this; - } - - /** - * Check if fixer exists. - */ - public function hasRule(string $name): bool - { - return isset($this->fixersByName[$name]); - } - - /** - * @return list - */ - private function getFixersConflicts(FixerInterface $fixer): array - { - return [ - 'blank_lines_before_namespace' => [ - 'no_blank_lines_before_namespace', - 'single_blank_line_before_namespace', - ], - 'no_blank_lines_before_namespace' => ['single_blank_line_before_namespace'], - 'single_import_per_statement' => ['group_import'], - ][$fixer->getName()] ?? []; - } - - /** - * @param array> $fixerConflicts - */ - private function generateConflictMessage(array $fixerConflicts): string - { - $message = 'Rule contains conflicting fixers:'; - $report = []; - - foreach ($fixerConflicts as $fixer => $fixers) { - // filter mutual conflicts - $report[$fixer] = array_values(array_filter( - $fixers, - static fn (string $candidate): bool => !\array_key_exists($candidate, $report) || !\in_array($fixer, $report[$candidate], true), - )); - - if (\count($report[$fixer]) > 0) { - $message .= \sprintf("\n- \"%s\" with %s", $fixer, Utils::naturalLanguageJoin($report[$fixer])); - } - } - - return $message; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerNameValidator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerNameValidator.php deleted file mode 100644 index e134c9a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/FixerNameValidator.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixerNameValidator -{ - public function isValid(string $name, bool $isCustom): bool - { - if (!$isCustom) { - return Preg::match('/^[a-z][a-z0-9_]*$/', $name); - } - - return Preg::match('/^[A-Z][a-zA-Z0-9]*\/[a-z][a-z0-9_]*$/', $name); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Future.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Future.php deleted file mode 100644 index 0485bff..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Future.php +++ /dev/null @@ -1,114 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Future -{ - private static bool $isFutureModeEnforced = false; - - /** - * @var array - */ - private static array $deprecations = []; - - private function __construct() - { - // cannot create instance - } - - /** - * @return mixed - */ - public static function runWithEnforcedFutureMode(callable $callback) - { - try { - self::$isFutureModeEnforced = true; - - return $callback(); - } finally { - self::$isFutureModeEnforced = false; - } - } - - public static function isFutureModeEnabled(): bool - { - return self::$isFutureModeEnforced || filter_var( - getenv('PHP_CS_FIXER_FUTURE_MODE'), - \FILTER_VALIDATE_BOOL, - ); - } - - public static function triggerDeprecation(\Exception $futureException): void - { - if (self::isFutureModeEnabled()) { - throw new \RuntimeException( - 'Your are using something deprecated, see previous exception. Aborting execution because `PHP_CS_FIXER_FUTURE_MODE` environment variable is set.', - 0, - $futureException, - ); - } - - $message = $futureException->getMessage(); - - self::$deprecations[$message] = true; - @trigger_error($message, \E_USER_DEPRECATED); - } - - /** - * @return list - */ - public static function getTriggeredDeprecations(): array - { - $triggeredDeprecations = array_keys(self::$deprecations); - sort($triggeredDeprecations); - - return $triggeredDeprecations; - } - - /** - * @template T - * - * @param T $new - * @param T $old - * - * @return T - * - * @TODO v4.0: remove this method, ensure code compiles, create getV5OrV4. While removing, ensure to document in `UPGRADE-vX.md` file. - */ - public static function getV4OrV3($new, $old) - { - return self::getNewOrOld($new, $old); - } - - /** - * @template T - * - * @param T $new - * @param T $old - * - * @return T - */ - private static function getNewOrOld($new, $old) - { - return self::isFutureModeEnabled() ? $new : $old; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Hasher.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Hasher.php deleted file mode 100644 index 236bf04..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Hasher.php +++ /dev/null @@ -1,40 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Hasher -{ - private function __construct() - { - // cannot create instance of util. class - } - - /** - * @return non-empty-string - */ - public static function calculate(string $code): string - { - return \PHP_VERSION_ID >= 8_01_00 - ? hash('xxh128', $code) - : md5($code); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php deleted file mode 100644 index 4395a88..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php +++ /dev/null @@ -1,58 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -use PhpCsFixer\Hasher; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CachingLinter implements LinterInterface -{ - private LinterInterface $sublinter; - - /** - * @var array - */ - private array $cache = []; - - public function __construct(LinterInterface $linter) - { - $this->sublinter = $linter; - } - - public function isAsync(): bool - { - return $this->sublinter->isAsync(); - } - - public function lintFile(string $path): LintingResultInterface - { - $checksum = Hasher::calculate(file_get_contents($path)); - - return $this->cache[$checksum] ??= $this->sublinter->lintFile($path); - } - - public function lintSource(string $source): LintingResultInterface - { - $checksum = Hasher::calculate($source); - - return $this->cache[$checksum] ??= $this->sublinter->lintSource($source); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/Linter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/Linter.php deleted file mode 100644 index 5fe267f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/Linter.php +++ /dev/null @@ -1,51 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -/** - * Handle PHP code linting process. - * - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Linter implements LinterInterface -{ - private LinterInterface $subLinter; - - public function __construct() - { - $this->subLinter = new TokenizerLinter(); - } - - public function isAsync(): bool - { - return $this->subLinter->isAsync(); - } - - public function lintFile(string $path): LintingResultInterface - { - return $this->subLinter->lintFile($path); - } - - public function lintSource(string $source): LintingResultInterface - { - return $this->subLinter->lintSource($source); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php deleted file mode 100644 index 883c71c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php +++ /dev/null @@ -1,37 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -/** - * Interface for PHP code linting process manager. - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface LinterInterface -{ - public function isAsync(): bool; - - /** - * Lint PHP file. - */ - public function lintFile(string $path): LintingResultInterface; - - /** - * Lint PHP code. - */ - public function lintSource(string $source): LintingResultInterface; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/LintingException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/LintingException.php deleted file mode 100644 index c2e1c85..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/LintingException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -/** - * @author Dariusz Rumiński - * - * @final - * - * @TODO 4.0 make class "final" - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -class LintingException extends \RuntimeException {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php deleted file mode 100644 index ccac4ef..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface LintingResultInterface -{ - /** - * Check if linting process was successful and raise LintingException if not. - */ - public function check(): void; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php deleted file mode 100644 index ac50217..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php +++ /dev/null @@ -1,153 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -use PhpCsFixer\FileReader; -use PhpCsFixer\FileRemoval; -use Symfony\Component\Filesystem\Exception\IOException; -use Symfony\Component\Process\PhpExecutableFinder; -use Symfony\Component\Process\Process; - -/** - * Handle PHP code linting using separated process of `php -l _file_`. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProcessLinter implements LinterInterface -{ - private FileRemoval $fileRemoval; - - private ProcessLinterProcessBuilder $processBuilder; - - /** - * Temporary file for code linting. - */ - private ?string $temporaryFile = null; - - /** - * @param null|string $executable PHP executable, null for autodetection - */ - public function __construct(?string $executable = null) - { - if (null === $executable) { - $executableFinder = new PhpExecutableFinder(); - $executable = $executableFinder->find(false); - - if (false === $executable) { - throw new UnavailableLinterException('Cannot find PHP executable.'); - } - - if ('phpdbg' === \PHP_SAPI) { - if (!str_contains($executable, 'phpdbg')) { - throw new UnavailableLinterException('Automatically found PHP executable is non-standard phpdbg. Could not find proper PHP executable.'); - } - - // automatically found executable is `phpdbg`, let us try to fallback to regular `php` - $executable = str_replace('phpdbg', 'php', $executable); - - if (!is_executable($executable)) { - throw new UnavailableLinterException('Automatically found PHP executable is phpdbg. Could not find proper PHP executable.'); - } - } - } - - $this->processBuilder = new ProcessLinterProcessBuilder($executable); - $this->fileRemoval = new FileRemoval(); - } - - public function __destruct() - { - if (null !== $this->temporaryFile) { - $this->fileRemoval->delete($this->temporaryFile); - } - } - - /** - * This class is not intended to be serialized, - * and cannot be deserialized (see __wakeup method). - */ - public function __serialize(): array - { - throw new \BadMethodCallException('Cannot serialize '.self::class); - } - - /** - * Disable the deserialization of the class to prevent attacker executing - * code by leveraging the __destruct method. - * - * @param array $data - * - * @see https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection - */ - public function __unserialize(array $data): void - { - throw new \BadMethodCallException('Cannot unserialize '.self::class); - } - - public function isAsync(): bool - { - return true; - } - - public function lintFile(string $path): LintingResultInterface - { - return new ProcessLintingResult($this->createProcessForFile($path), $path); - } - - public function lintSource(string $source): LintingResultInterface - { - return new ProcessLintingResult($this->createProcessForSource($source), $this->temporaryFile); - } - - /** - * @param string $path path to file - */ - private function createProcessForFile(string $path): Process - { - // in case php://stdin - if (!is_file($path)) { - return $this->createProcessForSource(FileReader::createSingleton()->read($path)); - } - - $process = $this->processBuilder->build($path); - $process->setTimeout(10); - $process->start(); - - return $process; - } - - /** - * Create process that lint PHP code. - * - * @param string $source code - */ - private function createProcessForSource(string $source): Process - { - if (null === $this->temporaryFile) { - $this->temporaryFile = tempnam(sys_get_temp_dir(), 'cs_fixer_tmp_'); - $this->fileRemoval->observe($this->temporaryFile); - } - - if (false === @file_put_contents($this->temporaryFile, $source)) { - throw new IOException(\sprintf('Failed to write file "%s".', $this->temporaryFile), 0, null, $this->temporaryFile); - } - - return $this->createProcessForFile($this->temporaryFile); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php deleted file mode 100644 index a054c9e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php +++ /dev/null @@ -1,48 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -use Symfony\Component\Process\Process; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProcessLinterProcessBuilder -{ - private string $executable; - - /** - * @param string $executable PHP executable - */ - public function __construct(string $executable) - { - $this->executable = $executable; - } - - public function build(string $path): Process - { - return new Process([ - $this->executable, - '-l', - $path, - ]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php deleted file mode 100644 index 76981fe..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php +++ /dev/null @@ -1,88 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -use Symfony\Component\Process\Process; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProcessLintingResult implements LintingResultInterface -{ - private Process $process; - - private ?string $path; - - private ?bool $isSuccessful = null; - - public function __construct(Process $process, ?string $path = null) - { - $this->process = $process; - $this->path = $path; - } - - public function check(): void - { - if (!$this->isSuccessful()) { - // on some systems stderr is used, but on others, it's not - throw new LintingException($this->getProcessErrorMessage(), $this->process->getExitCode()); - } - } - - private function getProcessErrorMessage(): string - { - $errorOutput = $this->process->getErrorOutput(); - $output = strtok(ltrim('' !== $errorOutput ? $errorOutput : $this->process->getOutput()), "\n"); - - if (false === $output) { - return 'Fatal error: Unable to lint file.'; - } - - if (null !== $this->path) { - $needle = \sprintf('in %s ', $this->path); - $pos = strrpos($output, $needle); - - if (false !== $pos) { - $output = \sprintf('%s%s', substr($output, 0, $pos), substr($output, $pos + \strlen($needle))); - } - } - - $prefix = substr($output, 0, 18); - - if ('PHP Parse error: ' === $prefix) { - return \sprintf('Parse error: %s.', substr($output, 18)); - } - - if ('PHP Fatal error: ' === $prefix) { - return \sprintf('Fatal error: %s.', substr($output, 18)); - } - - return \sprintf('%s.', $output); - } - - private function isSuccessful(): bool - { - if (null === $this->isSuccessful) { - $this->process->wait(); - $this->isSuccessful = $this->process->isSuccessful(); - } - - return $this->isSuccessful; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php deleted file mode 100644 index ac90efa..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php +++ /dev/null @@ -1,60 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -use PhpCsFixer\FileReader; -use PhpCsFixer\Hasher; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Handle PHP code linting. - * - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TokenizerLinter implements LinterInterface -{ - public function isAsync(): bool - { - return false; - } - - public function lintFile(string $path): LintingResultInterface - { - return $this->lintSource(FileReader::createSingleton()->read($path)); - } - - public function lintSource(string $source): LintingResultInterface - { - try { - // To lint, we will parse the source into Tokens. - // During that process, it might throw a ParseError or CompileError. - // If it won't, cache of tokenized version of source will be kept, which is great for Runner. - // Yet, first we need to clear already existing cache to not hit it and lint the code indeed. - $codeHash = Hasher::calculate($source); - Tokens::clearCache($codeHash); - Tokens::fromCode($source); - - return new TokenizerLintingResult(); - } catch (\CompileError|\ParseError $e) { - return new TokenizerLintingResult($e); - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php deleted file mode 100644 index aef6e82..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TokenizerLintingResult implements LintingResultInterface -{ - private ?\Error $error; - - public function __construct(?\Error $error = null) - { - $this->error = $error; - } - - public function check(): void - { - if (null !== $this->error) { - throw new LintingException( - \sprintf('%s: %s on line %d.', $this->getMessagePrefix(), $this->error->getMessage(), $this->error->getLine()), - $this->error->getCode(), - $this->error, - ); - } - } - - private function getMessagePrefix(): string - { - return $this->error instanceof \ParseError ? 'Parse error' : 'Fatal error'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php deleted file mode 100644 index d50b10b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php +++ /dev/null @@ -1,28 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Linter; - -/** - * Exception that is thrown when the chosen linter is not available on the environment. - * - * @author Dariusz Rumiński - * - * @final - * - * @TODO 4.0 make class "final" - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -class UnavailableLinterException extends \RuntimeException {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ParallelAwareConfigInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ParallelAwareConfigInterface.php deleted file mode 100644 index cff9bf3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ParallelAwareConfigInterface.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Runner\Parallel\ParallelConfig; - -/** - * @author Greg Korba - * - * @TODO 4.0 Include parallel runner config in main ConfigInterface - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface ParallelAwareConfigInterface extends ConfigInterface -{ - public function getParallelConfig(): ParallelConfig; - - /** - * @return $this - */ - public function setParallelConfig(ParallelConfig $config): ConfigInterface; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/PharChecker.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/PharChecker.php deleted file mode 100644 index cf0eb34..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/PharChecker.php +++ /dev/null @@ -1,40 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PharChecker implements PharCheckerInterface -{ - public function checkFileValidity(string $filename): ?string - { - try { - $phar = new \Phar($filename); - // free the variable to unlock the file - unset($phar); - } catch (\Exception $e) { - if (!$e instanceof \UnexpectedValueException && !$e instanceof \PharException) { - throw $e; - } - - return 'Failed to create Phar instance. '.$e->getMessage(); - } - - return null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php deleted file mode 100644 index 6622822..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface PharCheckerInterface -{ - /** - * @return null|string the invalidity reason if any, null otherwise - */ - public function checkFileValidity(string $filename): ?string; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Preg.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Preg.php deleted file mode 100644 index e5e6b9e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Preg.php +++ /dev/null @@ -1,220 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * This class replaces preg_* functions to better handling UTF8 strings, - * ensuring no matter "u" modifier is present or absent subject will be handled correctly. - * - * @author Kuba Werłos - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Preg -{ - /** - * @param array $matches - * @param int-mask $flags - * - * @param-out ($flags is PREG_OFFSET_CAPTURE - * ? array - * : ($flags is PREG_UNMATCHED_AS_NULL - * ? array - * : ($flags is int-mask&768 - * ? array - * : array - * ) - * ) - * ) $matches - * - * @throws PregException - */ - public static function match(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool - { - $result = @preg_match(self::addUtf8Modifier($pattern), $subject, $matches, $flags, $offset); - if (false !== $result && \PREG_NO_ERROR === preg_last_error()) { - return 1 === $result; - } - - $result = @preg_match(self::removeUtf8Modifier($pattern), $subject, $matches, $flags, $offset); - if (false !== $result && \PREG_NO_ERROR === preg_last_error()) { - return 1 === $result; - } - - throw self::newPregException(preg_last_error(), preg_last_error_msg(), __METHOD__, $pattern); - } - - /** - * @param array $matches - * @param int-mask $flags - * - * @param-out ($flags is PREG_PATTERN_ORDER - * ? array> - * : ($flags is PREG_SET_ORDER - * ? list> - * : ($flags is int-mask&(256|257) - * ? array> - * : ($flags is int-mask&258 - * ? list> - * : ($flags is int-mask&(512|513) - * ? array> - * : ($flags is int-mask&514 - * ? list> - * : ($flags is int-mask&770 - * ? list> - * : ($flags is 0 ? array> : array) - * ) - * ) - * ) - * ) - * ) - * ) - * ) $matches - * - * @return 0|positive-int - * - * @throws PregException - */ - public static function matchAll(string $pattern, string $subject, ?array &$matches = null, int $flags = \PREG_PATTERN_ORDER, int $offset = 0): int - { - $result = @preg_match_all(self::addUtf8Modifier($pattern), $subject, $matches, $flags, $offset); - if (false !== $result && \PREG_NO_ERROR === preg_last_error()) { - return $result; - } - - $result = @preg_match_all(self::removeUtf8Modifier($pattern), $subject, $matches, $flags, $offset); - if (false !== $result && \PREG_NO_ERROR === preg_last_error()) { - return $result; - } - - throw self::newPregException(preg_last_error(), preg_last_error_msg(), __METHOD__, $pattern); - } - - /** - * @param-out int $count - * - * @return ($subject is non-empty-string ? ($replacement is non-empty-string ? non-empty-string : string) : string) - * - * @throws PregException - */ - public static function replace(string $pattern, string $replacement, string $subject, int $limit = -1, ?int &$count = null): string - { - $result = @preg_replace(self::addUtf8Modifier($pattern), $replacement, $subject, $limit, $count); - if (null !== $result && \PREG_NO_ERROR === preg_last_error()) { - return $result; - } - - $result = @preg_replace(self::removeUtf8Modifier($pattern), $replacement, $subject, $limit, $count); - if (null !== $result && \PREG_NO_ERROR === preg_last_error()) { - return $result; - } - - throw self::newPregException(preg_last_error(), preg_last_error_msg(), __METHOD__, $pattern); - } - - /** - * @param-out int $count - * - * @throws PregException - */ - public static function replaceCallback(string $pattern, callable $callback, string $subject, int $limit = -1, ?int &$count = null): string - { - $result = @preg_replace_callback(self::addUtf8Modifier($pattern), $callback, $subject, $limit, $count); - if (null !== $result && \PREG_NO_ERROR === preg_last_error()) { - return $result; - } - - $result = @preg_replace_callback(self::removeUtf8Modifier($pattern), $callback, $subject, $limit, $count); - if (null !== $result && \PREG_NO_ERROR === preg_last_error()) { - return $result; - } - - throw self::newPregException(preg_last_error(), preg_last_error_msg(), __METHOD__, $pattern); - } - - /** - * @return ($flags is PREG_SPLIT_OFFSET_CAPTURE ? list}> : list) - * - * @throws PregException - */ - public static function split(string $pattern, string $subject, int $limit = -1, int $flags = 0): array - { - $result = @preg_split(self::addUtf8Modifier($pattern), $subject, $limit, $flags); - if (false !== $result && \PREG_NO_ERROR === preg_last_error()) { - return $result; - } - - $result = @preg_split(self::removeUtf8Modifier($pattern), $subject, $limit, $flags); - if (false !== $result && \PREG_NO_ERROR === preg_last_error()) { - return $result; - } - - throw self::newPregException(preg_last_error(), preg_last_error_msg(), __METHOD__, $pattern); - } - - private static function addUtf8Modifier(string $pattern): string - { - return $pattern.'u'; - } - - private static function removeUtf8Modifier(string $pattern): string - { - if ('' === $pattern) { - return ''; - } - - $delimiter = $pattern[0]; - - $endDelimiterPosition = strrpos($pattern, $delimiter); - \assert(\is_int($endDelimiterPosition)); - - return substr($pattern, 0, $endDelimiterPosition).str_replace('u', '', substr($pattern, $endDelimiterPosition)); - } - - /** - * Create the generic PregException message and tell more about such kind of error in the message. - */ - private static function newPregException(int $error, string $errorMsg, string $method, string $pattern): PregException - { - $result = null; - $errorMessage = null; - - try { - $result = ExecutorWithoutErrorHandler::execute(static fn () => preg_match($pattern, '')); - } catch (ExecutorWithoutErrorHandlerException $e) { - $result = false; - $errorMessage = $e->getMessage(); - } - - if (false !== $result) { - return new PregException(\sprintf('Unknown error occurred when calling %s: %s.', $method, $errorMsg), $error); - } - - $code = preg_last_error(); - - $message = \sprintf( - '(code: %d) %s', - $code, - preg_replace('~preg_[a-z_]+[()]{2}: ~', '', $errorMessage), - ); - - return new PregException( - \sprintf('%s(): Invalid PCRE pattern "%s": %s (version: %s)', $method, $pattern, $message, \PCRE_VERSION), - $code, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/PregException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/PregException.php deleted file mode 100644 index d506fed..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/PregException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * Exception that is thrown when PCRE function encounters an error. - * - * @author Kuba Werłos - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PregException extends \RuntimeException {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMajorMinorDeprecationSetDefinition.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMajorMinorDeprecationSetDefinition.php deleted file mode 100644 index 1fea5b6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMajorMinorDeprecationSetDefinition.php +++ /dev/null @@ -1,41 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -use PhpCsFixer\Preg; - -/** - * @internal - * - * @TODO v4 remove me @MARKER_deprecated_migration_ruleset - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractMajorMinorDeprecationSetDefinition extends AbstractMigrationSetDefinition implements DeprecatedRuleSetDefinitionInterface -{ - public function getRules(): array - { - $newName = Preg::replace('#(\d+)\.?(\d)#', '\1x\2', $this->getName()); - - return [ - $newName => true, - ]; - } - - public function getSuccessorsNames(): array - { - return array_keys($this->getRules()); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMigrationSetDefinition.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMigrationSetDefinition.php deleted file mode 100644 index 2fc4e29..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMigrationSetDefinition.php +++ /dev/null @@ -1,87 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -use PhpCsFixer\Preg; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractMigrationSetDefinition extends AbstractRuleSetDefinition -{ - private string $entity; - - /** @var array{'major': int, 'minor': int} */ - private array $version; - - public function __construct() - { - parent::__construct(); - $this->parseRuleSetName(); - } - - /** - * @internal - */ - public function getEntity(): string - { - return $this->entity; - } - - public function getVersionMajorMinor(): string - { - return \sprintf('%s.%s', $this->version['major'], $this->version['minor']); - } - - public function getDescription(): string - { - $improvement = [ - 'PHPUnit' => 'tests code', - ][$this->getEntity()] ?? 'code'; - - return \sprintf('Rules to improve %s for %s %s compatibility.', $improvement, $this->getEntity(), $this->getVersionMajorMinor()); - } - - private function parseRuleSetName(): void - { - $name = $this->getName(); - - // @TODO v4 - `x?` -> `x` @MARKER_deprecated_migration_name_pattern - if (Preg::match('#^@PHPUnit(\d+)x?(\d)Migration.*$#', $name, $matches)) { - $this->entity = 'PHPUnit'; - $this->version = [ - 'major' => (int) $matches[1], - 'minor' => (int) $matches[2], - ]; - - return; - } - - // @TODO v4 - `x?` -> `x` @MARKER_deprecated_migration_name_pattern - if (Preg::match('#^@PHP(\d)x?(\d)Migration.*$#', $name, $matches)) { - $this->entity = 'PHP'; - $this->version = [ - 'major' => (int) $matches[1], - 'minor' => (int) $matches[2], - ]; - - return; - } - - throw new \RuntimeException(\sprintf('Cannot generate name of "%s" / "%s".', static::class, $name)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AbstractRuleSetDefinition.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AbstractRuleSetDefinition.php deleted file mode 100644 index dc79176..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AbstractRuleSetDefinition.php +++ /dev/null @@ -1,37 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractRuleSetDefinition implements RuleSetDefinitionInterface -{ - public function __construct() {} - - public function getName(): string - { - $name = substr(static::class, 1 + (int) strrpos(static::class, '\\'), -3); - - return '@'.str_replace('Risky', ':risky', $name); - } - - public function isRisky(): bool - { - return str_contains(static::class, 'Risky'); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticMigrationSetTrait.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticMigrationSetTrait.php deleted file mode 100644 index 53b4cbc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticMigrationSetTrait.php +++ /dev/null @@ -1,114 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -use Composer\Semver\Semver; -use PhpCsFixer\ComposerJsonReader; -use PhpCsFixer\ConfigurationException\UnresolvableAutoRuleSetConfigurationException; - -/** - * @internal - * - * @phpstan-require-implements AutomaticRuleSetDefinitionInterface - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -trait AutomaticMigrationSetTrait -{ - private function calculateTargetSet(string $setName, string $entity, bool $isRisky): string - { - static $set = null; - - if (null === $set) { - $actualVersion = self::calculateActualVersion($entity); - - $candidates = self::calculateCandidateSets($entity, $isRisky); - $composerCandidates = Semver::rsort(array_keys($candidates)); - - foreach ($composerCandidates as $candidate) { - if (Semver::satisfies($actualVersion, '>='.$candidate)) { - $set = $candidates[$candidate]; // @phpstan-ignore offsetAccess.notFound - - break; - } - } - - if (null === $set) { - throw new UnresolvableAutoRuleSetConfigurationException(\sprintf('No migration set found feasible for %s (%s %s).', $setName, $entity, $actualVersion)); - } - } - - return $set; - } - - /** - * @return list - */ - private static function getMigrationSets(): array - { - static $sets = null; - - if (null === $sets) { - $sets = array_values(array_filter( - RuleSets::getSetDefinitions(), - static fn (RuleSetDefinitionInterface $set): bool => !($set instanceof DeprecatedRuleSetDefinitionInterface) && is_subclass_of($set, AbstractMigrationSetDefinition::class), - )); - } - - return $sets; - } - - private static function calculateActualVersion(string $entity): string - { - $composerJsonReader = ComposerJsonReader::createSingleton(); - - if ('PHP' === $entity) { - $version = $composerJsonReader->getPhp(); - } elseif ('PHPUnit' === $entity) { - $version = $composerJsonReader->getPhpUnit(); - } else { - throw new \InvalidArgumentException(\sprintf('Entity "%s" is not supported.', $entity)); - } - - if (null === $version) { - throw new UnresolvableAutoRuleSetConfigurationException(\sprintf('Cannot detect %s version from "composer.json".', $entity)); - } - - return $version; - } - - /** - * @return array [ 'major.minor' => '@SetName', ... ] - */ - private static function calculateCandidateSets(string $entity, bool $isRisky): array - { - $candidates = []; - foreach (self::getMigrationSets() as $set) { - if ($set->getEntity() !== $entity) { - continue; - } - - if ($set->isRisky() !== $isRisky) { - continue; - } - - $candidates[$set->getVersionMajorMinor()] = $set->getName(); - } - - return $candidates; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticRuleSetDefinitionInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticRuleSetDefinitionInterface.php deleted file mode 100644 index d5fab1e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/AutomaticRuleSetDefinitionInterface.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -/** - * Used to indicate that the ruleset can be automatically determined and will differ based on runtime conditions. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface AutomaticRuleSetDefinitionInterface -{ - public const WARNING_MESSAGE_DECORATED = 'This rule is automatic: it\'s definition depends on your project, eg "composer.json" file.'; - - /** - * @return array|bool> - */ - public function getRulesCandidates(): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDefinitionInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDefinitionInterface.php deleted file mode 100644 index 21f0e40..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDefinitionInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -/** - * @author Greg Korba - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface DeprecatedRuleSetDefinitionInterface extends RuleSetDefinitionInterface -{ - /** - * Returns names of rule sets to use instead, if any. - * - * @return list - */ - public function getSuccessorsNames(): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDescriptionInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDescriptionInterface.php deleted file mode 100644 index 90cfd2a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDescriptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -/* - * @deprecated - * @TODO v4 remove me @MARKER_deprecated_DeprecatedRuleSetDescriptionInterface - */ -class_alias( - DeprecatedRuleSetDefinitionInterface::class, - DeprecatedRuleSetDescriptionInterface::class, // @phpstan-ignore class.notFound -); diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/InternalRuleSetDefinitionInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/InternalRuleSetDefinitionInterface.php deleted file mode 100644 index 6190252..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/InternalRuleSetDefinitionInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface InternalRuleSetDefinitionInterface {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSet.php deleted file mode 100644 index 6f1035d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSet.php +++ /dev/null @@ -1,162 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; -use PhpCsFixer\Future; -use PhpCsFixer\Utils; - -/** - * Set of rules to be used by fixer. - * - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RuleSet implements RuleSetInterface -{ - /** - * Group of rules generated from input set. - * - * The key is name of rule, value is configuration array or true. - * The key must not point to any set. - * - * @var array|true> - */ - private array $rules; - - public function __construct(array $set = []) - { - foreach ($set as $name => $value) { - if ('' === $name) { - throw new \InvalidArgumentException('Rule/set name must not be empty.'); - } - - if (\is_int($name)) { - throw new \InvalidArgumentException(\sprintf('Missing value for "%s" rule/set.', $value)); - } - - if (!\is_bool($value) && !\is_array($value)) { - $message = str_starts_with($name, '@') ? 'Set must be enabled (true) or disabled (false). Other values are not allowed.' : 'Rule must be enabled (true), disabled (false) or configured (non-empty, assoc array). Other values are not allowed.'; - - if (null === $value) { - $message .= ' To disable the '.(str_starts_with($name, '@') ? 'set' : 'rule').', use "FALSE" instead of "NULL".'; - } - - throw new InvalidFixerConfigurationException($name, $message); - } - } - - $this->rules = $this->resolveSet($set); - } - - public function hasRule(string $rule): bool - { - return \array_key_exists($rule, $this->rules); - } - - public function getRuleConfiguration(string $rule): ?array - { - if (!$this->hasRule($rule)) { - throw new \InvalidArgumentException(\sprintf('Rule "%s" is not in the set.', $rule)); - } - - if (true === $this->rules[$rule]) { - return null; - } - - return $this->rules[$rule]; - } - - public function getRules(): array - { - return $this->rules; - } - - /** - * Resolve input set into group of rules. - * - * @param array|bool> $rules - * - * @return array|true> - */ - private function resolveSet(array $rules): array - { - $resolvedRules = []; - - // expand sets - foreach ($rules as $name => $value) { - if (str_starts_with($name, '@')) { - if (!\is_bool($value)) { - throw new \UnexpectedValueException(\sprintf('Nested rule set "%s" configuration must be a boolean.', $name)); - } - - $set = $this->resolveSubset($name, $value); - $resolvedRules = array_merge($resolvedRules, $set); - } else { - $resolvedRules[$name] = $value; - } - } - - // filter out all resolvedRules that are off - $resolvedRules = array_filter( - $resolvedRules, - static fn ($value): bool => false !== $value, - ); - - return $resolvedRules; - } - - /** - * Resolve set rules as part of another set. - * - * If set value is false then disable all fixers in set, - * if not then get value from set item. - * - * @return array|bool> - */ - private function resolveSubset(string $setName, bool $setValue): array - { - $ruleSet = RuleSets::getSetDefinition($setName); - - if ($ruleSet instanceof DeprecatedRuleSetDefinitionInterface) { - $messageEnd = [] === $ruleSet->getSuccessorsNames() - ? 'No replacement available' - : \sprintf('Use %s instead', Utils::naturalLanguageJoin($ruleSet->getSuccessorsNames())); - - Future::triggerDeprecation(new \RuntimeException("Rule set \"{$setName}\" is deprecated. {$messageEnd}.")); - } - - $rules = $ruleSet->getRules(); - - foreach ($rules as $name => $value) { - if (str_starts_with($name, '@')) { - $set = $this->resolveSubset($name, $setValue); - unset($rules[$name]); - $rules = array_merge($rules, $set); - } elseif (!$setValue) { - $rules[$name] = false; - } else { - $rules[$name] = $value; - } - } - - return $rules; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetDefinitionInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetDefinitionInterface.php deleted file mode 100644 index d31e9d6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetDefinitionInterface.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface RuleSetDefinitionInterface -{ - public function getDescription(): string; - - public function getName(): string; - - /** - * Get all rules from rules set. - * - * @return array|bool> - */ - public function getRules(): array; - - public function isRisky(): bool; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php deleted file mode 100644 index 7eb1395..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php +++ /dev/null @@ -1,51 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -/** - * Set of rules to be used by fixer. - * - * Example of set: ["@PSR2" => true, "@PSR1" => false, "strict" => true]. - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface RuleSetInterface -{ - /** - * @param array|bool> $set - */ - public function __construct(array $set = []); - - /** - * Get configuration for given rule. - * - * @return null|array - */ - public function getRuleConfiguration(string $rule): ?array; - - /** - * Get all rules from rules set. - * - * @return array|true> - */ - public function getRules(): array; - - /** - * Check given rule is in rules set. - */ - public function hasRule(string $rule): bool; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php deleted file mode 100644 index adf441e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php +++ /dev/null @@ -1,121 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet; - -use PhpCsFixer\RuleSetNameValidator; -use Symfony\Component\Finder\Finder; - -/** - * Set of rule sets to be used by fixer. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RuleSets -{ - /** - * @var null|array - */ - private static ?array $builtInSetDefinitions = null; - - /** - * @var array - */ - private static array $customRuleSetDefinitions = []; - - /** - * @return array - */ - public static function getSetDefinitions(): array - { - $allRuleSets = array_merge( - self::getBuiltInSetDefinitions(), - self::$customRuleSetDefinitions, - ); - - uksort($allRuleSets, static fn (string $x, string $y): int => strnatcasecmp($x, $y)); - - return $allRuleSets; - } - - /** - * @return array - */ - public static function getBuiltInSetDefinitions(): array - { - if (null === self::$builtInSetDefinitions) { - self::$builtInSetDefinitions = []; - - $finder = Finder::create() - ->files() - ->in(__DIR__.'/Sets') - ->exclude('Internal/') - ; - - foreach ($finder as $file) { - /** @var class-string $class */ - $class = 'PhpCsFixer\RuleSet\Sets\\'.$file->getBasename('.php'); - - /** @var RuleSetDefinitionInterface */ - $set = new $class(); - - if (!RuleSetNameValidator::isValid($set->getName(), false)) { - throw new \InvalidArgumentException(\sprintf('Rule set name invalid: %s', $set->getName())); - } - - self::$builtInSetDefinitions[$set->getName()] = $set; - } - - uksort(self::$builtInSetDefinitions, static fn (string $x, string $y): int => strnatcasecmp($x, $y)); - } - - return self::$builtInSetDefinitions; - } - - /** - * @return list - */ - public static function getSetDefinitionNames(): array - { - return array_keys(self::getSetDefinitions()); - } - - public static function getSetDefinition(string $name): RuleSetDefinitionInterface - { - $definitions = self::getSetDefinitions(); - - if (!isset($definitions[$name])) { - throw new \InvalidArgumentException(\sprintf('Set "%s" does not exist.', $name)); - } - - return $definitions[$name]; - } - - public static function registerCustomRuleSet(RuleSetDefinitionInterface $ruleset): void - { - $name = $ruleset->getName(); - - if (!RuleSetNameValidator::isValid($name, true)) { - throw new \InvalidArgumentException('RuleSet name must begin with "@" and a letter (a-z, A-Z), and can contain only letters (a-z, A-Z), numbers, underscores, slashes, colons, dots and hyphens.'); - } - - if (\array_key_exists($name, self::getSetDefinitions())) { - throw new \InvalidArgumentException(\sprintf('Set "%s" is already defined.', $name)); - } - - self::$customRuleSetDefinitions[$name] = $ruleset; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationRiskySet.php deleted file mode 100644 index 85a0133..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationRiskySet.php +++ /dev/null @@ -1,54 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\AutomaticMigrationSetTrait; -use PhpCsFixer\RuleSet\AutomaticRuleSetDefinitionInterface; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AutoPHPMigrationRiskySet extends AbstractRuleSetDefinition implements AutomaticRuleSetDefinitionInterface -{ - use AutomaticMigrationSetTrait; - - public function getName(): string - { - return '@'.lcfirst(ltrim(parent::getName(), '@')); - } - - public function getRules(): array - { - return [ - $this->calculateTargetSet($this->getName(), 'PHP', $this->isRisky()) => true, - ]; - } - - public function getDescription(): string - { - return 'Migration rules to improve code towards the minimum ``PHP`` supported by your project (taken from ``composer.json`` file).'; - } - - public function getRulesCandidates(): array - { - $sets = array_values(self::calculateCandidateSets('PHP', $this->isRisky())); - ksort($sets); - - return array_combine($sets, array_fill(0, \count($sets), true)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationSet.php deleted file mode 100644 index 85d1d32..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPMigrationSet.php +++ /dev/null @@ -1,55 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\AutomaticMigrationSetTrait; -use PhpCsFixer\RuleSet\AutomaticRuleSetDefinitionInterface; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AutoPHPMigrationSet extends AbstractRuleSetDefinition implements AutomaticRuleSetDefinitionInterface -{ - use AutomaticMigrationSetTrait; - - public function getName(): string - { - return '@'.lcfirst(ltrim(parent::getName(), '@')); - } - - public function getRules(): array - { - return [ - $this->calculateTargetSet($this->getName(), 'PHP', $this->isRisky()) => true, - ]; - } - - public function getDescription(): string - { - return 'Migration rules to improve code towards the minimum ``PHP`` supported by your project (taken from ``composer.json`` file).'; - } - - public function getRulesCandidates(): array - { - $sets = array_values(self::calculateCandidateSets('PHP', $this->isRisky())); - - ksort($sets); - - return array_combine($sets, array_fill(0, \count($sets), true)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPUnitMigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPUnitMigrationRiskySet.php deleted file mode 100644 index 7e1c8d8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoPHPUnitMigrationRiskySet.php +++ /dev/null @@ -1,55 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\AutomaticMigrationSetTrait; -use PhpCsFixer\RuleSet\AutomaticRuleSetDefinitionInterface; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AutoPHPUnitMigrationRiskySet extends AbstractRuleSetDefinition implements AutomaticRuleSetDefinitionInterface -{ - use AutomaticMigrationSetTrait; - - public function getName(): string - { - return '@'.lcfirst(ltrim(parent::getName(), '@')); - } - - public function getRules(): array - { - return [ - $this->calculateTargetSet($this->getName(), 'PHPUnit', $this->isRisky()) => true, - ]; - } - - public function getDescription(): string - { - return 'Migration rules to improve test code towards the minimum ``PHPUnit`` supported by your project (taken from ``composer.json`` file).'; - } - - public function getRulesCandidates(): array - { - $sets = array_values(self::calculateCandidateSets('PHPUnit', $this->isRisky())); - - ksort($sets); - - return array_combine($sets, array_fill(0, \count($sets), true)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoRiskySet.php deleted file mode 100644 index 1c5ff33..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoRiskySet.php +++ /dev/null @@ -1,84 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\ConfigurationException\UnresolvableAutoRuleSetConfigurationException; -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\AutomaticRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AutoRiskySet extends AbstractRuleSetDefinition implements AutomaticRuleSetDefinitionInterface -{ - public function getName(): string - { - return '@'.lcfirst(ltrim(parent::getName(), '@')); - } - - public function getRules(): array - { - $sets = array_filter( - $this->getCandidates(), - fn (RuleSetDefinitionInterface $set): bool => $this->isSetDiscoverable($set), - ); - $sets = array_map( - static fn (RuleSetDefinitionInterface $set): string => $set->getName(), - $sets, - ); - - return array_combine($sets, array_fill(0, \count($sets), true)); - } - - public function getDescription(): string - { - return 'Default (risky) rule set. Applies newest ``PER-CS`` and optimizations for ``PHP`` and ``PHPUnit``, based on project\'s ``composer.json`` file.'; - } - - public function getRulesCandidates(): array - { - $sets = array_map( - static fn (RuleSetDefinitionInterface $set): string => $set->getName(), - $this->getCandidates(), - ); - - return array_combine($sets, array_fill(0, \count($sets), true)); - } - - /** @return list */ - private function getCandidates(): array - { - // order matters - return [ - new PERCSRiskySet(), - new AutoPHPMigrationRiskySet(), - new AutoPHPUnitMigrationRiskySet(), - ]; - } - - private function isSetDiscoverable(RuleSetDefinitionInterface $set): bool - { - try { - $set->getRules(); - - return true; - } catch (UnresolvableAutoRuleSetConfigurationException $unused) { - return false; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoSet.php deleted file mode 100644 index 7baf9fe..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/AutoSet.php +++ /dev/null @@ -1,85 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\ConfigurationException\UnresolvableAutoRuleSetConfigurationException; -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\AutomaticRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - * - * @TODO refactor for DRY between Auto*Set classes // keradus - */ -final class AutoSet extends AbstractRuleSetDefinition implements AutomaticRuleSetDefinitionInterface -{ - public function getName(): string - { - return '@'.lcfirst(ltrim(parent::getName(), '@')); - } - - public function getRules(): array - { - $sets = array_filter( - $this->getCandidates(), - fn (RuleSetDefinitionInterface $set): bool => $this->isSetDiscoverable($set), - ); - $sets = array_map( - static fn (RuleSetDefinitionInterface $set): string => $set->getName(), - $sets, - ); - - return array_combine($sets, array_fill(0, \count($sets), true)); - } - - public function getDescription(): string - { - return 'Default rule set. Applies newest ``PER-CS`` and optimizations for ``PHP``, based on project\'s ``composer.json`` file.'; - } - - public function getRulesCandidates(): array - { - $sets = array_map( - static fn (RuleSetDefinitionInterface $set): string => $set->getName(), - $this->getCandidates(), - ); - - return array_combine($sets, array_fill(0, \count($sets), true)); - } - - /** @return list */ - private function getCandidates(): array - { - // order matters - return [ - new PERCSSet(), - new AutoPHPMigrationSet(), - ]; - } - - private function isSetDiscoverable(RuleSetDefinitionInterface $set): bool - { - try { - $set->getRules(); - - return true; - } catch (UnresolvableAutoRuleSetConfigurationException $unused) { - return false; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php deleted file mode 100644 index fcb2b9a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php +++ /dev/null @@ -1,44 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DoctrineAnnotationSet extends AbstractRuleSetDefinition -{ - public function getRules(): array - { - return [ - 'doctrine_annotation_array_assignment' => [ - 'operator' => ':', - ], - 'doctrine_annotation_braces' => true, - 'doctrine_annotation_indentation' => true, - 'doctrine_annotation_spaces' => [ - 'before_array_assignments_colon' => false, - ], - ]; - } - - public function getDescription(): string - { - return 'Rules covering ``Doctrine`` annotations with configuration based on examples found in `Doctrine Annotation documentation `_ and `Symfony documentation `_.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10RiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10RiskySet.php deleted file mode 100644 index 70e8eb5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10RiskySet.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @internal - * - * PER Coding Style v1.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/1.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS10RiskySet extends AbstractRuleSetDefinition implements DeprecatedRuleSetDefinitionInterface -{ - public function getName(): string - { - return '@PER-CS1.0:risky'; - } - - public function getRules(): array - { - return $this->getProxiedSet()->getRules(); - } - - public function getDescription(): string - { - return $this->getProxiedSet()->getDescription(); - } - - public function getSuccessorsNames(): array - { - return [$this->getProxiedSet()->getName()]; - } - - private function getProxiedSet(): RuleSetDefinitionInterface - { - return new PERCS1x0RiskySet(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10Set.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10Set.php deleted file mode 100644 index eef15fd..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS10Set.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @internal - * - * PER Coding Style v1.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/1.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS10Set extends AbstractRuleSetDefinition implements DeprecatedRuleSetDefinitionInterface -{ - public function getName(): string - { - return '@PER-CS1.0'; - } - - public function getRules(): array - { - return $this->getProxiedSet()->getRules(); - } - - public function getDescription(): string - { - return $this->getProxiedSet()->getDescription(); - } - - public function getSuccessorsNames(): array - { - return [$this->getProxiedSet()->getName()]; - } - - private function getProxiedSet(): RuleSetDefinitionInterface - { - return new PERCS1x0Set(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php deleted file mode 100644 index e633f6a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php +++ /dev/null @@ -1,46 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * PER Coding Style v1.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/1.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS1x0RiskySet extends AbstractRuleSetDefinition -{ - public function getName(): string - { - return '@PER-CS1x0:risky'; - } - - public function getRules(): array - { - return [ - '@PSR12:risky' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PER Coding Style 1.0 `_.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php deleted file mode 100644 index 2fa3023..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php +++ /dev/null @@ -1,46 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * PER Coding Style v1.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/1.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS1x0Set extends AbstractRuleSetDefinition -{ - public function getName(): string - { - return '@PER-CS1x0'; - } - - public function getRules(): array - { - return [ - '@PSR12' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PER Coding Style 1.0 `_.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20RiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20RiskySet.php deleted file mode 100644 index 8c8987f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20RiskySet.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @internal - * - * PER Coding Style v2.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/2.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS20RiskySet extends AbstractRuleSetDefinition implements DeprecatedRuleSetDefinitionInterface -{ - public function getName(): string - { - return '@PER-CS2.0:risky'; - } - - public function getRules(): array - { - return $this->getProxiedSet()->getRules(); - } - - public function getDescription(): string - { - return $this->getProxiedSet()->getDescription(); - } - - public function getSuccessorsNames(): array - { - return [$this->getProxiedSet()->getName()]; - } - - private function getProxiedSet(): RuleSetDefinitionInterface - { - return new PERCS2x0RiskySet(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20Set.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20Set.php deleted file mode 100644 index a29da12..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS20Set.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @internal - * - * PER Coding Style v2.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/2.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS20Set extends AbstractRuleSetDefinition implements DeprecatedRuleSetDefinitionInterface -{ - public function getName(): string - { - return '@PER-CS2.0'; - } - - public function getRules(): array - { - return $this->getProxiedSet()->getRules(); - } - - public function getDescription(): string - { - return $this->getProxiedSet()->getDescription(); - } - - public function getSuccessorsNames(): array - { - return [$this->getProxiedSet()->getName()]; - } - - private function getProxiedSet(): RuleSetDefinitionInterface - { - return new PERCS2x0Set(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0RiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0RiskySet.php deleted file mode 100644 index 9748df2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0RiskySet.php +++ /dev/null @@ -1,46 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * PER Coding Style v2.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/2.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS2x0RiskySet extends AbstractRuleSetDefinition -{ - public function getName(): string - { - return '@PER-CS2x0:risky'; - } - - public function getRules(): array - { - return [ - '@PER-CS1x0:risky' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PER Coding Style 2.0 `_.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0Set.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0Set.php deleted file mode 100644 index 3032711..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0Set.php +++ /dev/null @@ -1,117 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * PER Coding Style v2.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/2.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS2x0Set extends AbstractRuleSetDefinition -{ - public function getName(): string - { - return '@PER-CS2x0'; - } - - public function getRules(): array - { - return [ - '@PER-CS1x0' => true, - 'array_indentation' => true, - 'array_syntax' => true, - 'attribute_block_no_spaces' => true, - 'cast_spaces' => true, - 'concat_space' => ['spacing' => 'one'], - 'function_declaration' => [ - 'closure_fn_spacing' => 'none', - ], - 'method_argument_space' => [ - 'after_heredoc' => false, // @TODO: default value of this option changed, consider to switch to new default - ], - 'new_with_parentheses' => [ - 'anonymous_class' => false, - ], - 'single_line_empty_body' => true, - 'single_space_around_construct' => [ - 'constructs_followed_by_a_single_space' => [ - 'abstract', - 'as', - 'case', - 'catch', - 'class', - 'const', - 'const_import', - 'do', - 'else', - 'elseif', - 'enum', - 'final', - 'finally', - 'for', - 'foreach', - 'function', - 'function_import', - 'if', - 'insteadof', - 'interface', - 'match', - 'named_argument', - 'namespace', - 'new', - 'private', - 'protected', - 'public', - 'readonly', - 'static', - 'switch', - 'trait', - 'try', - 'type_colon', - 'use', - 'use_lambda', - 'while', - ], - 'constructs_preceded_by_a_single_space' => [ - 'as', - 'else', - 'elseif', - 'use_lambda', - ], - ], - 'trailing_comma_in_multiline' => [ - 'after_heredoc' => true, - 'elements' => [ - 'arguments', - 'array_destructuring', - 'arrays', - 'match', - 'parameters', - ], - ], - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PER Coding Style 2.0 `_.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30RiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30RiskySet.php deleted file mode 100644 index eac8f01..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30RiskySet.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @internal - * - * PER Coding Style v3.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/3.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS30RiskySet extends AbstractRuleSetDefinition implements DeprecatedRuleSetDefinitionInterface -{ - public function getName(): string - { - return '@PER-CS3.0:risky'; - } - - public function getRules(): array - { - return $this->getProxiedSet()->getRules(); - } - - public function getDescription(): string - { - return $this->getProxiedSet()->getDescription(); - } - - public function getSuccessorsNames(): array - { - return [$this->getProxiedSet()->getName()]; - } - - private function getProxiedSet(): RuleSetDefinitionInterface - { - return new PERCS3x0RiskySet(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30Set.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30Set.php deleted file mode 100644 index 798d1a6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS30Set.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; - -/** - * @internal - * - * PER Coding Style v3.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/3.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS30Set extends AbstractRuleSetDefinition implements DeprecatedRuleSetDefinitionInterface -{ - public function getName(): string - { - return '@PER-CS3.0'; - } - - public function getRules(): array - { - return $this->getProxiedSet()->getRules(); - } - - public function getDescription(): string - { - return $this->getProxiedSet()->getDescription(); - } - - public function getSuccessorsNames(): array - { - return [$this->getProxiedSet()->getName()]; - } - - private function getProxiedSet(): RuleSetDefinitionInterface - { - return new PERCS3x0Set(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0RiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0RiskySet.php deleted file mode 100644 index 10a5d30..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0RiskySet.php +++ /dev/null @@ -1,46 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * PER Coding Style v3.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/3.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS3x0RiskySet extends AbstractRuleSetDefinition -{ - public function getName(): string - { - return '@PER-CS3x0:risky'; - } - - public function getRules(): array - { - return [ - '@PER-CS2x0:risky' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PER Coding Style 3.0 `_.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0Set.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0Set.php deleted file mode 100644 index 556aac6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS3x0Set.php +++ /dev/null @@ -1,54 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * PER Coding Style v3.0. - * - * @see https://github.com/php-fig/per-coding-style/blob/3.0.0/spec.md - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCS3x0Set extends AbstractRuleSetDefinition -{ - public function getName(): string - { - return '@PER-CS3x0'; - } - - public function getRules(): array - { - return [ - '@PER-CS2x0' => true, - 'nullable_type_declaration' => true, - 'operator_linebreak' => true, - 'ordered_types' => [ - 'null_adjustment' => 'always_last', - 'sort_algorithm' => 'none', - ], - 'single_class_element_per_statement' => true, - 'types_spaces' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PER Coding Style 3.0 `_.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSRiskySet.php deleted file mode 100644 index 24b493b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSRiskySet.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSets; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCSRiskySet extends AbstractRuleSetDefinition -{ - public function getName(): string - { - return '@PER-CS:risky'; - } - - public function getRules(): array - { - return [ - $this->getHighestPerCsSet()->getName() => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PER Coding Style `_, Set is an alias for the latest revision of ``PER-CS`` rules - use it if you always want to be in sync with newest ``PER-CS`` standard.'; - } - - private function getHighestPerCsSet(): RuleSetDefinitionInterface - { - static $set = null; - - if (null === $set) { - $currentSet = $this; - - $sets = array_filter( - RuleSets::getSetDefinitions(), - static fn (RuleSetDefinitionInterface $set): bool => !($set instanceof DeprecatedRuleSetDefinitionInterface) - && $set->isRisky() === $currentSet->isRisky() - && $set->getName() !== $currentSet->getName() - && str_starts_with($set->getName(), str_replace(':risky', '', $currentSet->getName())), - ); - - ksort($sets, \SORT_NATURAL); - - $set = array_pop($sets); - } - - return $set; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSSet.php deleted file mode 100644 index bc1b893..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSSet.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSetDefinitionInterface; -use PhpCsFixer\RuleSet\RuleSets; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERCSSet extends AbstractRuleSetDefinition -{ - public function getName(): string - { - return '@PER-CS'; - } - - public function getRules(): array - { - return [ - $this->getHighestPerCsSet()->getName() => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PER Coding Style `_, Set is an alias for the latest revision of ``PER-CS`` rules - use it if you always want to be in sync with newest ``PER-CS`` standard.'; - } - - private function getHighestPerCsSet(): RuleSetDefinitionInterface - { - static $set = null; - - if (null === $set) { - $currentSet = $this; - - $sets = array_filter( - RuleSets::getSetDefinitions(), - static fn (RuleSetDefinitionInterface $set): bool => !($set instanceof DeprecatedRuleSetDefinitionInterface) - && $set->isRisky() === $currentSet->isRisky() - && $set->getName() !== $currentSet->getName() - && str_starts_with($set->getName(), $currentSet->getName()), - ); - - ksort($sets, \SORT_NATURAL); - - $set = array_pop($sets); - } - - return $set; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php deleted file mode 100644 index 5c0f436..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php +++ /dev/null @@ -1,54 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; - -/** - * @internal - * - * @deprecated use `@PER-CS:risky` instead - * - * @TODO 4.0 remove me - * - * Last updated to PER Coding Style v2.0. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERRiskySet extends AbstractRuleSetDefinition implements DeprecatedRuleSetDefinitionInterface -{ - public function getName(): string - { - return '@PER:risky'; - } - - public function getRules(): array - { - return [ - '@PER-CS:risky' => true, - ]; - } - - public function getDescription(): string - { - return 'Alias for the newest ``PER-CS`` risky rules. It is recommended you use ``@PER-CS2.0:risky`` instead if you want to stick with stable ruleset.'; - } - - public function getSuccessorsNames(): array - { - return ['@PER-CS:risky']; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php deleted file mode 100644 index dfb2e6e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php +++ /dev/null @@ -1,49 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; -use PhpCsFixer\RuleSet\DeprecatedRuleSetDefinitionInterface; - -/** - * @internal - * - * @deprecated use `@PER-CS` instead - * - * @TODO 4.0 remove me - * - * Last updated to PER Coding Style v2.0. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PERSet extends AbstractRuleSetDefinition implements DeprecatedRuleSetDefinitionInterface -{ - public function getRules(): array - { - return [ - '@PER-CS' => true, - ]; - } - - public function getDescription(): string - { - return 'Alias for the newest ``PER-CS`` rules. It is recommended you use ``@PER-CS3.0`` instead if you want to stick with stable ruleset.'; - } - - public function getSuccessorsNames(): array - { - return ['@PER-CS']; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php deleted file mode 100644 index 8002068..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP54MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP56MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP56MigrationRiskySet.php deleted file mode 100644 index b139c83..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP56MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP56MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x4MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x4MigrationSet.php deleted file mode 100644 index 10ad710..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x4MigrationSet.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP5x4MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - 'array_syntax' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x6MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x6MigrationRiskySet.php deleted file mode 100644 index d1bd793..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP5x6MigrationRiskySet.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP5x6MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - 'pow_to_exponentiation' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationRiskySet.php deleted file mode 100644 index f63090c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP70MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationSet.php deleted file mode 100644 index e56ce78..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP70MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationRiskySet.php deleted file mode 100644 index abdf48d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP71MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationSet.php deleted file mode 100644 index d751d8d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP71MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP73MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP73MigrationSet.php deleted file mode 100644 index f86e09d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP73MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP73MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationRiskySet.php deleted file mode 100644 index e2a0dbc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP74MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationSet.php deleted file mode 100644 index 4bb2a5e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP74MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationRiskySet.php deleted file mode 100644 index da886d7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationRiskySet.php +++ /dev/null @@ -1,43 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP7x0MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP5x6Migration:risky' => true, - 'combine_nested_dirname' => true, - 'declare_strict_types' => true, - 'non_printable_character' => true, - 'random_api_migration' => [ // @TODO v4 replace with `true` - 'replacements' => [ - 'mt_getrandmax' => 'getrandmax', - 'mt_rand' => 'random_int', - 'mt_srand' => 'srand', - 'rand' => 'random_int', - ], - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationSet.php deleted file mode 100644 index 4db2651..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x0MigrationSet.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP7x0MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP5x4Migration' => true, - 'ternary_to_null_coalescing' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationRiskySet.php deleted file mode 100644 index c5ba6df..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationRiskySet.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP7x1MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP7x0Migration:risky' => true, - 'void_return' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationSet.php deleted file mode 100644 index 852e9ed..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x1MigrationSet.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP7x1MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP7x0Migration' => true, - 'list_syntax' => true, - 'modifier_keywords' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x3MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x3MigrationSet.php deleted file mode 100644 index adf8768..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x3MigrationSet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP7x3MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP7x1Migration' => true, - 'heredoc_indentation' => true, - 'method_argument_space' => ['after_heredoc' => true], - 'no_whitespace_before_comma_in_array' => ['after_heredoc' => true], - 'trailing_comma_in_multiline' => ['after_heredoc' => true], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationRiskySet.php deleted file mode 100644 index bb47342..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationRiskySet.php +++ /dev/null @@ -1,35 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP7x4MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP7x1Migration:risky' => true, - 'implode_call' => true, - 'no_alias_functions' => true, - 'use_arrow_functions' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationSet.php deleted file mode 100644 index f18460c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP7x4MigrationSet.php +++ /dev/null @@ -1,35 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP7x4MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP7x3Migration' => true, - 'assign_null_coalescing_to_coalesce_equal' => true, - 'normalize_index_brace' => true, - 'short_scalar_cast' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php deleted file mode 100644 index 51c4928..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP80MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php deleted file mode 100644 index 02349fc..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP80MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php deleted file mode 100644 index fdf9051..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP81MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationRiskySet.php deleted file mode 100644 index 5e51547..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP82MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php deleted file mode 100644 index 59c8f11..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP82MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php deleted file mode 100644 index 17d4014..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP83MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP84MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP84MigrationSet.php deleted file mode 100644 index 0735a44..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP84MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP84MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP85MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP85MigrationSet.php deleted file mode 100644 index 7e46b91..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP85MigrationSet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP85MigrationSet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationRiskySet.php deleted file mode 100644 index 8b39b0a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationRiskySet.php +++ /dev/null @@ -1,42 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x0MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP7x4Migration:risky' => true, - 'get_class_to_class_keyword' => true, - 'modernize_strpos' => true, - 'no_alias_functions' => [ - 'sets' => [ - '@all', - ], - ], - 'no_php4_constructor' => true, - 'no_unneeded_final_method' => true, // final private method (not constructor) are no longer allowed >= PHP8.0 - 'no_unreachable_default_argument_value' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationSet.php deleted file mode 100644 index c9b3442..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x0MigrationSet.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x0MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP7x4Migration' => true, - 'clean_namespace' => true, - 'no_unset_cast' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationRiskySet.php deleted file mode 100644 index dffb766..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationRiskySet.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x1MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x0Migration:risky' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationSet.php deleted file mode 100644 index 8e8fc38..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x1MigrationSet.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x1MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x0Migration' => true, - 'octal_notation' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationRiskySet.php deleted file mode 100644 index 1ee4418..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationRiskySet.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x2MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x1Migration:risky' => true, - 'phpdoc_readonly_class_comment_to_keyword' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationSet.php deleted file mode 100644 index 5335c82..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x2MigrationSet.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x2MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x1Migration' => true, - 'simple_to_complex_string_variable' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationRiskySet.php deleted file mode 100644 index adf2569..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationRiskySet.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x3MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x2Migration:risky' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationSet.php deleted file mode 100644 index 56cf6db..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x3MigrationSet.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x3MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x2Migration' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationRiskySet.php deleted file mode 100644 index 3662297..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationRiskySet.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x4MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x3Migration:risky' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationSet.php deleted file mode 100644 index 920ac96..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x4MigrationSet.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x4MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x3Migration' => true, - 'new_expression_parentheses' => true, - 'nullable_type_declaration_for_default_null_value' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationRiskySet.php deleted file mode 100644 index 9f77a2e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationRiskySet.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x5MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x4Migration:risky' => true, - 'modern_serialization_methods' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationSet.php deleted file mode 100644 index cecd27f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP8x5MigrationSet.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHP8x5MigrationSet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP8x4Migration' => true, - 'switch_case_semicolon_to_colon' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php deleted file mode 100644 index 9bf5f10..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit100MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit10x0MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit10x0MigrationRiskySet.php deleted file mode 100644 index 240c0b6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit10x0MigrationRiskySet.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit10x0MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit9x1Migration:risky' => true, - 'php_unit_data_provider_static' => ['force' => true], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit11x0MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit11x0MigrationRiskySet.php deleted file mode 100644 index ab7a4ba..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit11x0MigrationRiskySet.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit11x0MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit10x0Migration:risky' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php deleted file mode 100644 index bbe5450..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit30MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php deleted file mode 100644 index 26f2302..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit32MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php deleted file mode 100644 index 20173b2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit35MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x0MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x0MigrationRiskySet.php deleted file mode 100644 index 8e3a996..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x0MigrationRiskySet.php +++ /dev/null @@ -1,35 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit3x0MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - 'php_unit_dedicate_assert' => [ - 'target' => PhpUnitTargetVersion::VERSION_3_0, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x2MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x2MigrationRiskySet.php deleted file mode 100644 index e9bf90a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x2MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit3x2MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit3x0Migration:risky' => true, - 'php_unit_no_expectation_annotation' => [ - 'target' => PhpUnitTargetVersion::VERSION_3_2, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x5MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x5MigrationRiskySet.php deleted file mode 100644 index 94f7090..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit3x5MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit3x5MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit3x2Migration:risky' => true, - 'php_unit_dedicate_assert' => [ - 'target' => PhpUnitTargetVersion::VERSION_3_5, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit43MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit43MigrationRiskySet.php deleted file mode 100644 index 541f060..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit43MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit43MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit48MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit48MigrationRiskySet.php deleted file mode 100644 index 1d69611..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit48MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit48MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x3MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x3MigrationRiskySet.php deleted file mode 100644 index f83cc4c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x3MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit4x3MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit3x5Migration:risky' => true, - 'php_unit_no_expectation_annotation' => [ - 'target' => PhpUnitTargetVersion::VERSION_4_3, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x8MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x8MigrationRiskySet.php deleted file mode 100644 index 355d822..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit4x8MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit4x8MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit4x3Migration:risky' => true, - 'php_unit_namespaced' => [ - 'target' => PhpUnitTargetVersion::VERSION_4_8, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit50MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit50MigrationRiskySet.php deleted file mode 100644 index fd931b8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit50MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit50MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit52MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit52MigrationRiskySet.php deleted file mode 100644 index b5eafb9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit52MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit52MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit54MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit54MigrationRiskySet.php deleted file mode 100644 index 58892ba..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit54MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit54MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit55MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit55MigrationRiskySet.php deleted file mode 100644 index c4aa26e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit55MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit55MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit56MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit56MigrationRiskySet.php deleted file mode 100644 index 388c3eb..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit56MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit56MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit57MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit57MigrationRiskySet.php deleted file mode 100644 index 8d14483..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit57MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit57MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x0MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x0MigrationRiskySet.php deleted file mode 100644 index 845d497..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x0MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit5x0MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit4x8Migration:risky' => true, - 'php_unit_dedicate_assert' => [ - 'target' => PhpUnitTargetVersion::VERSION_5_0, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x2MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x2MigrationRiskySet.php deleted file mode 100644 index c8c75f8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x2MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit5x2MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit5x0Migration:risky' => true, - 'php_unit_expectation' => [ - 'target' => PhpUnitTargetVersion::VERSION_5_2, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x4MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x4MigrationRiskySet.php deleted file mode 100644 index beb1c0d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x4MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit5x4MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit5x2Migration:risky' => true, - 'php_unit_mock' => [ - 'target' => PhpUnitTargetVersion::VERSION_5_4, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x5MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x5MigrationRiskySet.php deleted file mode 100644 index e6a7289..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x5MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit5x5MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit5x4Migration:risky' => true, - 'php_unit_mock' => [ - 'target' => PhpUnitTargetVersion::VERSION_5_5, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x6MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x6MigrationRiskySet.php deleted file mode 100644 index b6154b5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x6MigrationRiskySet.php +++ /dev/null @@ -1,39 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit5x6MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit5x5Migration:risky' => true, - 'php_unit_dedicate_assert' => [ - 'target' => PhpUnitTargetVersion::VERSION_5_6, - ], - 'php_unit_expectation' => [ - 'target' => PhpUnitTargetVersion::VERSION_5_6, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x7MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x7MigrationRiskySet.php deleted file mode 100644 index d25d00f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit5x7MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit5x7MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit5x6Migration:risky' => true, - 'php_unit_namespaced' => [ - 'target' => PhpUnitTargetVersion::VERSION_5_7, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit60MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit60MigrationRiskySet.php deleted file mode 100644 index b25d2a0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit60MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit60MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit6x0MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit6x0MigrationRiskySet.php deleted file mode 100644 index d5ea9c5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit6x0MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit6x0MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit5x7Migration:risky' => true, - 'php_unit_namespaced' => [ - 'target' => PhpUnitTargetVersion::VERSION_6_0, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit75MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit75MigrationRiskySet.php deleted file mode 100644 index 4ff82c7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit75MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit75MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit7x5MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit7x5MigrationRiskySet.php deleted file mode 100644 index e648182..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit7x5MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit7x5MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit6x0Migration:risky' => true, - 'php_unit_dedicate_assert_internal_type' => [ - 'target' => PhpUnitTargetVersion::VERSION_7_5, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit84MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit84MigrationRiskySet.php deleted file mode 100644 index 0443154..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit84MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit84MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit8x4MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit8x4MigrationRiskySet.php deleted file mode 100644 index e90bb5b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit8x4MigrationRiskySet.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\PhpUnit\PhpUnitTargetVersion; -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit8x4MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit7x5Migration:risky' => true, - 'php_unit_expectation' => [ - 'target' => PhpUnitTargetVersion::VERSION_8_4, - ], - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit91MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit91MigrationRiskySet.php deleted file mode 100644 index 53013c2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit91MigrationRiskySet.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMajorMinorDeprecationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit91MigrationRiskySet extends AbstractMajorMinorDeprecationSetDefinition {} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit9x1MigrationRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit9x1MigrationRiskySet.php deleted file mode 100644 index 7ee55a1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit9x1MigrationRiskySet.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractMigrationSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PHPUnit9x1MigrationRiskySet extends AbstractMigrationSetDefinition -{ - public function getRules(): array - { - return [ - '@PHPUnit8x4Migration:risky' => true, - 'php_unit_assert_new_names' => true, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12RiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12RiskySet.php deleted file mode 100644 index d8e4211..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12RiskySet.php +++ /dev/null @@ -1,38 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PSR12RiskySet extends AbstractRuleSetDefinition -{ - public function getRules(): array - { - return [ - 'no_trailing_whitespace_in_string' => true, - 'no_unreachable_default_argument_value' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PSR-12 `_ standard.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12Set.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12Set.php deleted file mode 100644 index 151c396..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12Set.php +++ /dev/null @@ -1,128 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PSR12Set extends AbstractRuleSetDefinition -{ - public function getRules(): array - { - return [ - '@PSR2' => true, - 'binary_operator_spaces' => [ - 'default' => 'at_least_single_space', - ], - 'blank_line_after_opening_tag' => true, - 'blank_line_between_import_groups' => true, - 'blank_lines_before_namespace' => true, - 'braces_position' => [ - 'allow_single_line_anonymous_functions' => false, - 'allow_single_line_empty_anonymous_classes' => true, - ], - 'class_definition' => [ - 'inline_constructor_arguments' => false, // handled by method_argument_space fixer - 'space_before_parenthesis' => true, // defined in PSR12 ¶8. Anonymous Classes - ], - 'compact_nullable_type_declaration' => true, - 'declare_equal_normalize' => true, - 'lowercase_cast' => true, - 'lowercase_static_reference' => true, - 'modifier_keywords' => true, - 'new_with_parentheses' => [ - 'anonymous_class' => true, - ], - 'no_blank_lines_after_class_opening' => true, - 'no_extra_blank_lines' => [ - 'tokens' => [ - 'use', // defined in PSR12 ¶3. Declare Statements, Namespace, and Import Statements - ], - ], - 'no_leading_import_slash' => true, - 'no_whitespace_in_blank_line' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', - ], - ], - 'ordered_imports' => [ - 'imports_order' => [ - 'class', - 'function', - 'const', - ], - 'sort_algorithm' => 'none', - ], - 'return_type_declaration' => true, - 'short_scalar_cast' => true, - 'single_import_per_statement' => ['group_to_single_imports' => false], - 'single_space_around_construct' => [ - 'constructs_followed_by_a_single_space' => [ - 'abstract', - 'as', - 'case', - 'catch', - 'class', - 'const_import', - 'do', - 'else', - 'elseif', - 'final', - 'finally', - 'for', - 'foreach', - 'function', - 'function_import', - 'if', - 'insteadof', - 'interface', - 'namespace', - 'new', - 'private', - 'protected', - 'public', - 'static', - 'switch', - 'trait', - 'try', - 'use', - 'use_lambda', - 'while', - ], - 'constructs_preceded_by_a_single_space' => [ - 'as', - 'else', - 'elseif', - 'use_lambda', - ], - ], - 'single_trait_insert_per_statement' => true, - 'ternary_operator_spaces' => true, - 'unary_operator_spaces' => [ - 'only_dec_inc' => true, - ], - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PSR-12 `_ standard.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR1Set.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR1Set.php deleted file mode 100644 index d566528..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR1Set.php +++ /dev/null @@ -1,38 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PSR1Set extends AbstractRuleSetDefinition -{ - public function getRules(): array - { - return [ - 'encoding' => true, - 'full_opening_tag' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PSR-1 `_ standard.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR2Set.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR2Set.php deleted file mode 100644 index 4082a39..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR2Set.php +++ /dev/null @@ -1,111 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PSR2Set extends AbstractRuleSetDefinition -{ - public function getRules(): array - { - return [ - '@PSR1' => true, - 'blank_line_after_namespace' => true, - 'braces_position' => [ - 'allow_single_line_anonymous_functions' => false, - ], - 'class_definition' => true, - 'constant_case' => true, - 'control_structure_braces' => true, - 'control_structure_continuation_position' => true, - 'elseif' => true, - 'function_declaration' => [ - 'closure_fn_spacing' => 'one', // @TODO: default value of this option changed, consider to switch to new default - ], - 'indentation_type' => true, - 'line_ending' => true, - 'lowercase_keywords' => true, - 'method_argument_space' => [ - 'after_heredoc' => false, // @TODO: default value of this option changed, consider to switch to new default - 'attribute_placement' => 'ignore', - 'on_multiline' => 'ensure_fully_multiline', - ], - 'modifier_keywords' => ['elements' => ['method', 'property']], - 'no_break_comment' => true, - 'no_closing_tag' => true, - 'no_multiple_statements_per_line' => true, - 'no_space_around_double_colon' => true, - 'no_spaces_after_function_name' => true, - 'no_trailing_whitespace' => true, - 'no_trailing_whitespace_in_comment' => true, - 'single_blank_line_at_eof' => true, - 'single_class_element_per_statement' => [ - 'elements' => [ - 'property', - ], - ], - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_space_around_construct' => [ - 'constructs_followed_by_a_single_space' => [ - 'abstract', - 'as', - 'case', - 'catch', - 'class', - 'do', - 'else', - 'elseif', - 'final', - 'for', - 'foreach', - 'function', - 'if', - 'interface', - 'namespace', - 'private', - 'protected', - 'public', - 'static', - 'switch', - 'trait', - 'try', - 'use_lambda', - 'while', - ], - 'constructs_preceded_by_a_single_space' => [ - 'as', - 'else', - 'elseif', - 'use_lambda', - ], - ], - 'spaces_inside_parentheses' => true, - 'statement_indentation' => true, - 'switch_case_semicolon_to_colon' => true, - 'switch_case_space' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow `PSR-2 `_ standard.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerRiskySet.php deleted file mode 100644 index bc795a3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerRiskySet.php +++ /dev/null @@ -1,71 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpCsFixerRiskySet extends AbstractRuleSetDefinition -{ - public function getRules(): array - { - return [ - '@PER-CS:risky' => true, - '@Symfony:risky' => true, - 'comment_to_phpdoc' => true, - 'declare_strict_types' => true, - 'final_internal_class' => true, - 'get_class_to_class_keyword' => false, - 'modernize_strpos' => false, - // @TODO: consider switching to `true`, like in @Symfony - 'native_constant_invocation' => [ - 'fix_built_in' => false, - 'include' => [ - 'DIRECTORY_SEPARATOR', - 'PHP_INT_SIZE', - 'PHP_SAPI', - 'PHP_VERSION_ID', - ], - 'scope' => 'namespaced', - 'strict' => true, - ], - 'no_alias_functions' => [ - 'sets' => [ - '@all', - ], - ], - 'no_trailing_whitespace_in_string' => true, // override Symfony to mimics PER / CS - 'no_unset_on_property' => true, - 'php_unit_data_provider_name' => true, - 'php_unit_data_provider_return_type' => true, - 'php_unit_data_provider_static' => ['force' => true], - 'php_unit_strict' => true, - 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'], - 'strict_comparison' => true, - 'strict_param' => true, - 'void_return' => true, // override Symfony - 'yield_from_array_to_yields' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules recommended by ``PHP CS Fixer`` team, highly opinionated. Extends ``@PER-CS:risky`` and ``@Symfony:risky``.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php deleted file mode 100644 index 164df96..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php +++ /dev/null @@ -1,123 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpCsFixerSet extends AbstractRuleSetDefinition -{ - public function getRules(): array - { - return [ - '@PER-CS' => true, - '@Symfony' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', - 'case', - 'continue', - 'declare', - 'default', - 'exit', - 'goto', - 'include', - 'include_once', - 'phpdoc', - 'require', - 'require_once', - 'return', - 'switch', - 'throw', - 'try', - 'yield', - 'yield_from', - ], - ], - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'empty_loop_body' => true, - 'explicit_indirect_variable' => true, - 'explicit_string_variable' => true, - 'fully_qualified_strict_types' => [ - 'import_symbols' => true, - ], - 'heredoc_to_nowdoc' => true, - 'method_argument_space' => [ - 'after_heredoc' => true, - 'on_multiline' => 'ensure_fully_multiline', - ], - 'method_chaining_indentation' => true, - 'multiline_comment_opening_closing' => true, - 'multiline_whitespace_before_semicolons' => [ - 'strategy' => 'new_line_for_chained_calls', - ], - 'no_extra_blank_lines' => [ - 'tokens' => [ - 'attribute', - 'break', - 'case', - 'continue', - 'curly_brace_block', - 'default', - 'extra', - 'parenthesis_brace_block', - 'return', - 'square_brace_block', - 'switch', - 'throw', - 'use', - ], - ], - 'no_superfluous_elseif' => true, - 'no_superfluous_phpdoc_tags' => [ - 'allow_hidden_params' => true, - 'allow_mixed' => true, // @TODO revalidate to keep `true` or unify into `false` - 'remove_inheritdoc' => true, - ], - 'no_whitespace_in_empty_array' => true, - 'operator_linebreak' => true, - 'ordered_class_elements' => true, - 'ordered_types' => [ - 'null_adjustment' => 'always_last', - ], - 'php_unit_data_provider_method_order' => true, - 'php_unit_internal_class' => true, - 'php_unit_test_class_requires_covers' => true, - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_no_duplicate_types' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_order_by_value' => true, - 'phpdoc_types_order' => true, - 'return_assignment' => true, - 'self_static_accessor' => true, - 'single_line_comment_style' => true, - 'single_line_empty_body' => true, - 'single_line_throw' => false, - 'string_implicit_backslashes' => true, - 'trailing_comma_in_multiline' => ['after_heredoc' => true, 'elements' => ['array_destructuring', 'arrays']], - 'whitespace_after_comma_in_array' => ['ensure_single_space' => true], - ]; - } - - public function getDescription(): string - { - return 'Rules recommended by ``PHP CS Fixer`` team, highly opinionated. Extends ``@PER-CS`` and ``@Symfony``.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php deleted file mode 100644 index 8a2b7b6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php +++ /dev/null @@ -1,89 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SymfonyRiskySet extends AbstractRuleSetDefinition -{ - public function getRules(): array - { - return [ - '@PHP5x6Migration:risky' => true, - '@PSR12:risky' => true, - 'array_push' => true, - 'combine_nested_dirname' => true, - 'declare_strict_types' => [ - 'strategy' => 'remove', - ], - 'dir_constant' => true, - 'ereg_to_preg' => true, - 'error_suppression' => true, - 'fopen_flag_order' => true, - 'fopen_flags' => [ - 'b_mode' => false, - ], - 'function_to_constant' => true, - 'get_class_to_class_keyword' => true, - 'implode_call' => true, - 'is_null' => true, - 'logical_operators' => true, - 'long_to_shorthand_operator' => true, - 'modern_serialization_methods' => true, - 'modernize_strpos' => true, - 'modernize_types_casting' => true, - 'native_constant_invocation' => ['strict' => false], - 'native_function_invocation' => [ - 'include' => [ - '@compiler_optimized', - ], - 'scope' => 'namespaced', - 'strict' => true, - ], - 'no_alias_functions' => true, - 'no_homoglyph_names' => true, - 'no_php4_constructor' => true, - 'no_trailing_whitespace_in_string' => false, // override PER-CS - 'no_unneeded_final_method' => true, - 'no_useless_sprintf' => true, - 'non_printable_character' => true, - 'ordered_traits' => true, - 'php_unit_construct' => true, - 'php_unit_mock_short_will_return' => true, - 'php_unit_set_up_tear_down_visibility' => true, - 'php_unit_test_annotation' => true, - 'psr_autoloading' => true, - 'self_accessor' => true, - 'set_type_to_cast' => true, - 'static_lambda' => true, - 'string_length_to_empty' => true, - 'string_line_ending' => true, - 'ternary_to_elvis_operator' => true, - 'void_return' => [ - 'fix_lambda' => false, - ], - ]; - } - - public function getDescription(): string - { - return 'Rules that follow the official `Symfony Coding Standards `_. Extends ``@PER-CS:risky``.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php deleted file mode 100644 index 131110c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php +++ /dev/null @@ -1,269 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\RuleSet\Sets; - -use PhpCsFixer\Fixer\Phpdoc\PhpdocSeparationFixer; -use PhpCsFixer\RuleSet\AbstractRuleSetDefinition; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SymfonySet extends AbstractRuleSetDefinition -{ - public function getRules(): array - { - return [ - '@PER-CS3x0' => true, - 'align_multiline_comment' => true, - 'backtick_to_shell_exec' => true, - 'binary_operator_spaces' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'return', - ], - ], - 'braces_position' => [ - 'allow_single_line_anonymous_functions' => true, - 'allow_single_line_empty_anonymous_classes' => true, - ], - 'class_attributes_separation' => [ - 'elements' => [ - 'method' => 'one', - ], - ], - 'class_definition' => [ - 'single_line' => true, - ], - 'class_reference_name_casing' => true, - 'clean_namespace' => true, - 'concat_space' => true, // overrides @PER-CS2.0 - 'declare_parentheses' => true, - 'echo_tag_syntax' => true, - 'empty_loop_body' => ['style' => 'braces'], - 'empty_loop_condition' => true, - 'fully_qualified_strict_types' => true, - 'function_declaration' => [ // overrides @PER-CS2.0 - 'closure_fn_spacing' => 'one', // @TODO: default value of this option changed, consider to switch to new default - ], - 'general_phpdoc_tag_rename' => [ - 'replacements' => [ - 'inheritDocs' => 'inheritDoc', - ], - ], - 'global_namespace_import' => [ - 'import_classes' => false, - 'import_constants' => false, - 'import_functions' => false, - ], - 'include' => true, - 'increment_style' => true, - 'integer_literal_case' => true, - 'lambda_not_used_import' => true, - 'linebreak_after_opening_tag' => true, - 'magic_constant_casing' => true, - 'magic_method_casing' => true, - 'method_argument_space' => [ // overrides @PER-CS2.0 - 'after_heredoc' => true, - 'on_multiline' => 'ignore', - ], - 'native_function_casing' => true, - 'native_type_declaration_casing' => true, - 'no_alias_language_construct_call' => true, - 'no_alternative_syntax' => true, - 'no_binary_string' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_empty_comment' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => [ - 'tokens' => [ - 'attribute', - 'case', - 'continue', - 'curly_brace_block', - 'default', - 'extra', - 'parenthesis_brace_block', - 'square_brace_block', - 'switch', - 'throw', - 'use', - ], - ], - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => true, - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_null_property_initialization' => true, - 'no_short_bool_cast' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_around_offset' => true, - 'no_superfluous_phpdoc_tags' => [ - 'allow_hidden_params' => true, - 'remove_inheritdoc' => true, - ], - 'no_trailing_comma_in_singleline' => true, - 'no_unneeded_braces' => [ - 'namespaces' => true, - ], - 'no_unneeded_control_parentheses' => [ - 'statements' => [ - 'break', - 'clone', - 'continue', - 'echo_print', - 'negative_instanceof', - 'others', - 'return', - 'switch_case', - 'yield', - 'yield_from', - ], - ], - 'no_unneeded_import_alias' => true, - 'no_unset_cast' => true, - 'no_unused_imports' => true, - 'no_useless_concat_operator' => true, - 'no_useless_else' => true, - 'no_useless_nullsafe_operator' => true, - 'no_useless_return' => true, - 'no_whitespace_before_comma_in_array' => ['after_heredoc' => true], - 'normalize_index_brace' => true, - 'nullable_type_declaration_for_default_null_value' => true, - 'object_operator_without_whitespace' => true, - 'operator_linebreak' => [ - 'only_booleans' => true, - ], - 'ordered_imports' => [ - 'imports_order' => [ - 'class', - 'function', - 'const', - ], - 'sort_algorithm' => 'alpha', - ], - 'php_unit_fqcn_annotation' => true, - 'php_unit_method_casing' => true, - 'phpdoc_align' => true, - 'phpdoc_annotation_without_dot' => true, - 'phpdoc_indent' => true, - 'phpdoc_inline_tag_normalizer' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_alias_tag' => [ - 'replacements' => [ - 'const' => 'var', // @TODO 4.0 add to @PhpdocNoAliasTagFixer defaults - 'link' => 'see', - 'property-read' => 'property', - 'property-write' => 'property', - 'type' => 'var', - ], - ], - 'phpdoc_no_package' => true, - 'phpdoc_no_useless_inheritdoc' => true, - 'phpdoc_order' => [ - 'order' => [ - 'param', - 'return', - 'throws', - ], - ], - 'phpdoc_return_self_reference' => true, - 'phpdoc_scalar' => [ - 'types' => [ // @TODO v4 drop custom config with => true, as v4 defaults are same - 'boolean', - 'callback', - 'double', - 'integer', - 'never-return', - 'never-returns', - 'no-return', - 'real', - 'str', - ], - ], - 'phpdoc_separation' => [ - 'groups' => [ - ['Annotation', 'NamedArgumentConstructor', 'Target'], - ...PhpdocSeparationFixer::OPTION_GROUPS_DEFAULT, - ], - 'skip_unlisted_annotations' => false, // @TODO: default value of this option changed, consider to switch to new default - ], - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_summary' => true, - 'phpdoc_tag_type' => [ - 'tags' => [ - 'inheritDoc' => 'inline', - ], - ], - 'phpdoc_to_comment' => [ - 'allow_before_return_statement' => false, // @TODO: default value of this option changed, consider to switch to new default - ], - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_types' => true, - 'phpdoc_types_order' => [ - 'null_adjustment' => 'always_last', - 'sort_algorithm' => 'none', - ], - 'phpdoc_var_annotation_correct_order' => true, - 'phpdoc_var_without_name' => true, - 'protected_to_private' => true, - 'semicolon_after_instruction' => true, - 'simple_to_complex_string_variable' => true, - 'single_import_per_statement' => true, - 'single_line_comment_spacing' => true, - 'single_line_comment_style' => [ - 'comment_types' => [ - 'hash', - ], - ], - 'single_line_empty_body' => false, // overrides @PER-CS2.0 - 'single_line_throw' => true, - 'single_quote' => true, - 'single_space_around_construct' => true, - 'space_after_semicolon' => [ - 'remove_in_empty_for_expressions' => true, - ], - 'standardize_increment' => true, - 'standardize_not_equals' => true, - 'statement_indentation' => [ - 'stick_comment_to_next_continuous_control_statement' => true, - ], - 'switch_continue_to_break' => true, - 'trailing_comma_in_multiline' => [ - 'after_heredoc' => true, - 'elements' => [ // explicitly omit 'arguments' - 'array_destructuring', - 'arrays', - 'match', - 'parameters', - ], - ], - 'trim_array_spaces' => true, - 'type_declaration_spaces' => [ - 'elements' => ['function', 'property'], // @TODO v4.0 and before consider to add 'constant' (default value) - ], - 'unary_operator_spaces' => true, - 'whitespace_after_comma_in_array' => true, - 'yoda_style' => true, - ]; - } - - public function getDescription(): string - { - return 'Rules that follow the official `Symfony Coding Standards `_. Extends ``@PER-CS``.'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSetNameValidator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSetNameValidator.php deleted file mode 100644 index 2f3eeac..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/RuleSetNameValidator.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RuleSetNameValidator -{ - public static function isValid(string $name, bool $isCustom): bool - { - if (!$isCustom) { - return Preg::match('/^@[a-z][a-z0-9\/_\-\.]*(:risky)?$/i', $name); - } - - // See: https://regex101.com/r/VcOnNr/7 - return Preg::match('/^@(?!PhpCsFixer)[a-z][a-z0-9_]*\/[a-z][a-z0-9_\-\.]*(:risky)?$/i', $name); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Event/AnalysisStarted.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Event/AnalysisStarted.php deleted file mode 100644 index 707403a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Event/AnalysisStarted.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Event; - -use Symfony\Contracts\EventDispatcher\Event; - -/** - * Event that is fired when Fixer starts analysis. - * - * @author Greg Korba - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AnalysisStarted extends Event -{ - public const NAME = 'fixer.analysis_started'; - public const MODE_SEQUENTIAL = 'sequential'; - public const MODE_PARALLEL = 'parallel'; - - /** @var self::MODE_* */ - private string $mode; - private bool $dryRun; - - /** - * @param self::MODE_* $mode - */ - public function __construct(string $mode, bool $dryRun) - { - $this->mode = $mode; - $this->dryRun = $dryRun; - } - - public function getMode(): string - { - return $this->mode; - } - - public function isDryRun(): bool - { - return $this->dryRun; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Event/FileProcessed.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Event/FileProcessed.php deleted file mode 100644 index 6fa8426..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Event/FileProcessed.php +++ /dev/null @@ -1,71 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Event; - -use Symfony\Contracts\EventDispatcher\Event; - -/** - * Event that is fired when file was processed by Fixer. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FileProcessed extends Event -{ - /** - * Event name. - */ - public const NAME = 'fixer.file_processed'; - - public const STATUS_INVALID = 1; - public const STATUS_SKIPPED = 2; - public const STATUS_NO_CHANGES = 3; - public const STATUS_FIXED = 4; - public const STATUS_EXCEPTION = 5; - public const STATUS_LINT = 6; - public const STATUS_NON_MONOLITHIC = 7; - - /** - * @var self::STATUS_* - */ - private int $status; - - private ?string $fileHash; - - /** - * @param self::STATUS_* $status - */ - public function __construct(int $status, ?string $fileHash = null) - { - $this->status = $status; - $this->fileHash = $fileHash; - } - - /** - * @return self::STATUS_* - */ - public function getStatus(): int - { - return $this->status; - } - - public function getFileHash(): ?string - { - return $this->fileHash; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingFileIterator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingFileIterator.php deleted file mode 100644 index ae98362..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingFileIterator.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner; - -use PhpCsFixer\Linter\LinterInterface; -use PhpCsFixer\Linter\LintingResultInterface; - -/** - * @internal - * - * @extends \CachingIterator> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FileCachingLintingFileIterator extends \CachingIterator implements LintingResultAwareFileIteratorInterface -{ - private LinterInterface $linter; - private ?LintingResultInterface $currentResult = null; - private ?LintingResultInterface $nextResult = null; - - /** - * @param \Iterator $iterator - */ - public function __construct(\Iterator $iterator, LinterInterface $linter) - { - parent::__construct($iterator); - - $this->linter = $linter; - } - - public function currentLintingResult(): ?LintingResultInterface - { - return $this->currentResult; - } - - public function next(): void - { - parent::next(); - - $this->currentResult = $this->nextResult; - - if ($this->hasNext()) { - $this->nextResult = $this->handleItem($this->getInnerIterator()->current()); - } - } - - public function rewind(): void - { - parent::rewind(); - - if ($this->valid()) { - $this->currentResult = $this->handleItem($this->current()); - } - - if ($this->hasNext()) { - $this->nextResult = $this->handleItem($this->getInnerIterator()->current()); - } - } - - private function handleItem(\SplFileInfo $file): LintingResultInterface - { - return $this->linter->lintFile($file->getRealPath()); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php deleted file mode 100644 index 7a88e55..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php +++ /dev/null @@ -1,112 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner; - -use PhpCsFixer\Cache\CacheManagerInterface; -use PhpCsFixer\FileReader; -use PhpCsFixer\Runner\Event\FileProcessed; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Contracts\EventDispatcher\Event; - -/** - * @internal - * - * @extends \FilterIterator> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FileFilterIterator extends \FilterIterator -{ - private ?EventDispatcherInterface $eventDispatcher; - - private CacheManagerInterface $cacheManager; - - /** - * @var array - */ - private array $visitedElements = []; - - /** - * @param iterable<\SplFileInfo> $iterator - */ - public function __construct( - iterable $iterator, - ?EventDispatcherInterface $eventDispatcher, - CacheManagerInterface $cacheManager - ) { - if (!$iterator instanceof \Iterator) { - $iterator = new \IteratorIterator( - $iterator instanceof \Traversable ? $iterator : new \ArrayIterator($iterator), - ); - } - - parent::__construct($iterator); - - $this->eventDispatcher = $eventDispatcher; - $this->cacheManager = $cacheManager; - } - - public function accept(): bool - { - $file = $this->current(); - if (!$file instanceof \SplFileInfo) { - throw new \RuntimeException( - \sprintf( - 'Expected instance of "\SplFileInfo", got "%s".', - get_debug_type($file), - ), - ); - } - - $path = $file->isLink() ? $file->getPathname() : $file->getRealPath(); - - if (isset($this->visitedElements[$path])) { - return false; - } - - $this->visitedElements[$path] = true; - - if (!$file->isFile() || $file->isLink()) { - return false; - } - - $content = FileReader::createSingleton()->read($path); - - // mark as skipped: - if ( - // empty file - '' === $content - // file that does not need fixing due to cache - || !$this->cacheManager->needFixing($file->getPathname(), $content) - ) { - $this->dispatchEvent(FileProcessed::NAME, new FileProcessed(FileProcessed::STATUS_SKIPPED)); - - return false; - } - - return true; - } - - private function dispatchEvent(string $name, Event $event): void - { - if (null === $this->eventDispatcher) { - return; - } - - $this->eventDispatcher->dispatch($event, $name); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/LintingFileIterator.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/LintingFileIterator.php deleted file mode 100644 index 4de06d9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/LintingFileIterator.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner; - -use PhpCsFixer\Linter\LinterInterface; -use PhpCsFixer\Linter\LintingResultInterface; - -/** - * @internal - * - * @extends \IteratorIterator> - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class LintingFileIterator extends \IteratorIterator implements LintingResultAwareFileIteratorInterface -{ - private ?LintingResultInterface $currentResult = null; - - private LinterInterface $linter; - - /** - * @param \Traversable $iterator - */ - public function __construct(\Traversable $iterator, LinterInterface $linter) - { - parent::__construct($iterator); - - $this->linter = $linter; - } - - public function currentLintingResult(): ?LintingResultInterface - { - return $this->currentResult; - } - - public function next(): void - { - parent::next(); - - $this->currentResult = $this->valid() ? $this->handleItem($this->current()) : null; - } - - public function rewind(): void - { - parent::rewind(); - - $this->currentResult = $this->valid() ? $this->handleItem($this->current()) : null; - } - - private function handleItem(\SplFileInfo $file): LintingResultInterface - { - return $this->linter->lintFile($file->getRealPath()); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/LintingResultAwareFileIteratorInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/LintingResultAwareFileIteratorInterface.php deleted file mode 100644 index bcaf63f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/LintingResultAwareFileIteratorInterface.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner; - -use PhpCsFixer\Linter\LintingResultInterface; - -/** - * @internal - * - * @extends \Iterator - * - * @author Greg Korba - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface LintingResultAwareFileIteratorInterface extends \Iterator -{ - public function currentLintingResult(): ?LintingResultInterface; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelAction.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelAction.php deleted file mode 100644 index 0584115..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelAction.php +++ /dev/null @@ -1,37 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -/** - * @author Greg Korba - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ParallelAction -{ - // Actions executed by the runner (main process) - public const RUNNER_REQUEST_ANALYSIS = 'requestAnalysis'; - public const RUNNER_THANK_YOU = 'thankYou'; - - // Actions executed by the worker - public const WORKER_ERROR_REPORT = 'errorReport'; - public const WORKER_GET_FILE_CHUNK = 'getFileChunk'; - public const WORKER_HELLO = 'hello'; - public const WORKER_RESULT = 'result'; - - private function __construct() {} -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfig.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfig.php deleted file mode 100644 index 99faa9a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfig.php +++ /dev/null @@ -1,69 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -/** - * @author Greg Korba - * - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ParallelConfig -{ - /** @internal */ - public const DEFAULT_FILES_PER_PROCESS = 10; - - /** @internal */ - public const DEFAULT_PROCESS_TIMEOUT = 120; - - private int $filesPerProcess; - private int $maxProcesses; - private int $processTimeout; - - /** - * @param positive-int $maxProcesses - * @param positive-int $filesPerProcess - * @param positive-int $processTimeout - */ - public function __construct( - int $maxProcesses = 2, - int $filesPerProcess = self::DEFAULT_FILES_PER_PROCESS, - int $processTimeout = self::DEFAULT_PROCESS_TIMEOUT - ) { - if ($maxProcesses <= 0 || $filesPerProcess <= 0 || $processTimeout <= 0) { - throw new \InvalidArgumentException('Invalid parallelisation configuration: only positive integers are allowed'); - } - - $this->maxProcesses = $maxProcesses; - $this->filesPerProcess = $filesPerProcess; - $this->processTimeout = $processTimeout; - } - - public function getFilesPerProcess(): int - { - return $this->filesPerProcess; - } - - public function getMaxProcesses(): int - { - return $this->maxProcesses; - } - - public function getProcessTimeout(): int - { - return $this->processTimeout; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfigFactory.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfigFactory.php deleted file mode 100644 index 3fdc589..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelConfigFactory.php +++ /dev/null @@ -1,63 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -use Fidry\CpuCoreCounter\CpuCoreCounter; -use Fidry\CpuCoreCounter\Finder\DummyCpuCoreFinder; -use Fidry\CpuCoreCounter\Finder\FinderRegistry; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ParallelConfigFactory -{ - private static ?CpuCoreCounter $cpuDetector = null; - - private function __construct() {} - - public static function sequential(): ParallelConfig - { - return new ParallelConfig(1); - } - - /** - * @param null|positive-int $filesPerProcess - * @param null|positive-int $processTimeout - * @param null|positive-int $maxProcesses - */ - public static function detect( - ?int $filesPerProcess = null, - ?int $processTimeout = null, - ?int $maxProcesses = null - ): ParallelConfig { - if (null === self::$cpuDetector) { - self::$cpuDetector = new CpuCoreCounter([ - ...FinderRegistry::getDefaultLogicalFinders(), - new DummyCpuCoreFinder(1), - ]); - } - - // Reserve 1 core for the main orchestrating process - $available = self::$cpuDetector->getAvailableForParallelisation(1, $maxProcesses); - - return new ParallelConfig( - $available->availableCpus, - $filesPerProcess ?? ParallelConfig::DEFAULT_FILES_PER_PROCESS, - $processTimeout ?? ParallelConfig::DEFAULT_PROCESS_TIMEOUT, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelisationException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelisationException.php deleted file mode 100644 index 19682f6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ParallelisationException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -/** - * Common exception for all the errors related to parallelisation. - * - * @author Greg Korba - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ParallelisationException extends \RuntimeException -{ - public static function forUnknownIdentifier(ProcessIdentifier $identifier): self - { - return new self('Unknown process identifier: '.$identifier->toString()); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/Process.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/Process.php deleted file mode 100644 index 81c6189..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/Process.php +++ /dev/null @@ -1,199 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -use React\ChildProcess\Process as ReactProcess; -use React\EventLoop\LoopInterface; -use React\EventLoop\TimerInterface; -use React\Stream\ReadableStreamInterface; -use React\Stream\WritableStreamInterface; - -/** - * Represents single process that is handled within parallel run. - * Inspired by: - * - https://github.com/phpstan/phpstan-src/blob/9ce425bca5337039fb52c0acf96a20a2b8ace490/src/Parallel/Process.php - * - https://github.com/phpstan/phpstan-src/blob/1477e752b4b5893f323b6d2c43591e68b3d85003/src/Process/ProcessHelper.php. - * - * @author Greg Korba - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Process -{ - // Properties required for process instantiation - private string $command; - private LoopInterface $loop; - private int $timeoutSeconds; - - // Properties required for process execution - private ?ReactProcess $process = null; - private ?WritableStreamInterface $in = null; - - /** @var resource */ - private $stdErr; - - /** @var resource */ - private $stdOut; - - /** @var callable(array): void */ - private $onData; - - /** @var callable(\Throwable): void */ - private $onError; - - private ?TimerInterface $timer = null; - - public function __construct(string $command, LoopInterface $loop, int $timeoutSeconds) - { - $this->command = $command; - $this->loop = $loop; - $this->timeoutSeconds = $timeoutSeconds; - } - - /** - * @param callable(array $json): void $onData callback to be called when data is received from the parallelisation operator - * @param callable(\Throwable $exception): void $onError callback to be called when an exception occurs - * @param callable(?int $exitCode, string $output): void $onExit callback to be called when the process exits - */ - public function start(callable $onData, callable $onError, callable $onExit): void - { - $sysTempDir = sys_get_temp_dir(); - if (!is_writable($sysTempDir)) { - throw new ParallelisationException(\sprintf( - 'Failed creating temp file as sys_get_temp_dir="%s" is not writable.', - $sysTempDir, - )); - } - - $stdOut = tmpfile(); - if (false === $stdOut) { - throw new ParallelisationException('Failed creating temp file for stdOut.'); - } - $this->stdOut = $stdOut; - - $stdErr = tmpfile(); - if (false === $stdErr) { - throw new ParallelisationException('Failed creating temp file for stdErr.'); - } - $this->stdErr = $stdErr; - - $this->onData = $onData; - $this->onError = $onError; - - $this->process = new ReactProcess($this->command, null, null, [ - 1 => $this->stdOut, - 2 => $this->stdErr, - ]); - $this->process->start($this->loop); - $this->process->on('exit', function ($exitCode) use ($onExit): void { - $this->cancelTimer(); - - $output = ''; - rewind($this->stdOut); - $stdOut = stream_get_contents($this->stdOut); - if (\is_string($stdOut)) { - $output .= $stdOut; - } - - rewind($this->stdErr); - $stdErr = stream_get_contents($this->stdErr); - if (\is_string($stdErr)) { - $output .= $stdErr; - } - - $onExit($exitCode, $output); - - fclose($this->stdOut); - fclose($this->stdErr); - }); - } - - /** - * Handles requests from parallelisation operator to its worker (spawned process). - * - * @param array $data - */ - public function request(array $data): void - { - $this->cancelTimer(); // Configured process timeout actually means "chunk timeout" (each request resets timer) - - if (null === $this->in) { - throw new ParallelisationException( - 'Process not connected with parallelisation operator, ensure `bindConnection()` was called', - ); - } - - $this->in->write($data); - $this->timer = $this->loop->addTimer($this->timeoutSeconds, function (): void { - ($this->onError)( - new \Exception( - \sprintf( - 'Child process timed out after %d seconds. Try making it longer using `ParallelConfig`.', - $this->timeoutSeconds, - ), - ) - ); - }); - } - - public function quit(): void - { - $this->cancelTimer(); - if (null === $this->process || !$this->process->isRunning()) { - return; - } - - foreach ($this->process->pipes as $pipe) { - $pipe->close(); - } - - if (null === $this->in) { - return; - } - - $this->in->end(); - } - - public function bindConnection(ReadableStreamInterface $out, WritableStreamInterface $in): void - { - $this->in = $in; - - $in->on('error', function (\Throwable $error): void { - ($this->onError)($error); - }); - - $out->on('data', function (array $json): void { - $this->cancelTimer(); - - // Pass everything to the parallelisation operator, it should decide how to handle the data - ($this->onData)($json); - }); - $out->on('error', function (\Throwable $error): void { - ($this->onError)($error); - }); - } - - private function cancelTimer(): void - { - if (null === $this->timer) { - return; - } - - $this->loop->cancelTimer($this->timer); - $this->timer = null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessFactory.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessFactory.php deleted file mode 100644 index 4c5c6b6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessFactory.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -use PhpCsFixer\Runner\RunnerConfig; -use React\EventLoop\LoopInterface; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Process\PhpExecutableFinder; - -/** - * @author Greg Korba - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProcessFactory -{ - public function create( - LoopInterface $loop, - InputInterface $input, - RunnerConfig $runnerConfig, - ProcessIdentifier $identifier, - int $serverPort - ): Process { - $commandArgs = $this->getCommandArgs($serverPort, $identifier, $input, $runnerConfig); - - return new Process( - implode(' ', $commandArgs), - $loop, - $runnerConfig->getParallelConfig()->getProcessTimeout(), - ); - } - - /** - * @private - * - * @return non-empty-list - */ - public function getCommandArgs(int $serverPort, ProcessIdentifier $identifier, InputInterface $input, RunnerConfig $runnerConfig): array - { - $phpBinary = (new PhpExecutableFinder())->find(false); - - if (false === $phpBinary) { - throw new ParallelisationException('Cannot find PHP executable.'); - } - - $mainScript = realpath(__DIR__.'/../../../php-cs-fixer'); - if (false === $mainScript - && isset($_SERVER['argv'][0]) - && str_contains($_SERVER['argv'][0], 'php-cs-fixer') - ) { - $mainScript = $_SERVER['argv'][0]; - } - - if (!is_file($mainScript)) { - throw new ParallelisationException('Cannot determine Fixer executable.'); - } - - $commandArgs = [ - ProcessUtils::escapeArgument($phpBinary), - ProcessUtils::escapeArgument($mainScript), - 'worker', - \sprintf('--port=%s', (string) $serverPort), - \sprintf('--identifier=%s', ProcessUtils::escapeArgument($identifier->toString())), - ]; - - if ($runnerConfig->isDryRun()) { - $commandArgs[] = '--dry-run'; - } - - if (filter_var($input->getOption('diff'), \FILTER_VALIDATE_BOOLEAN)) { - $commandArgs[] = '--diff'; - } - - if (filter_var($input->getOption('stop-on-violation'), \FILTER_VALIDATE_BOOLEAN)) { - $commandArgs[] = '--stop-on-violation'; - } - - foreach (['allow-risky', 'config', 'rules', 'using-cache', 'cache-file'] as $option) { - $optionValue = $input->getOption($option); - - if (null !== $optionValue) { - $commandArgs[] = \sprintf('--%s=%s', $option, ProcessUtils::escapeArgument($optionValue)); - } - } - - return $commandArgs; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessIdentifier.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessIdentifier.php deleted file mode 100644 index eeb4534..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessIdentifier.php +++ /dev/null @@ -1,57 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -/** - * Represents identifier of single process that is handled within parallel run. - * - * @author Greg Korba - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProcessIdentifier -{ - private const IDENTIFIER_PREFIX = 'php-cs-fixer_parallel_'; - - private string $identifier; - - private function __construct(string $identifier) - { - $this->identifier = $identifier; - } - - public function toString(): string - { - return $this->identifier; - } - - public static function create(): self - { - return new self(uniqid(self::IDENTIFIER_PREFIX, true)); - } - - public static function fromRaw(string $identifier): self - { - if (!str_starts_with($identifier, self::IDENTIFIER_PREFIX)) { - throw new ParallelisationException(\sprintf('Invalid process identifier "%s".', $identifier)); - } - - return new self($identifier); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessPool.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessPool.php deleted file mode 100644 index 6b64c4f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessPool.php +++ /dev/null @@ -1,101 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -use React\Socket\ServerInterface; - -/** - * Represents collection of active processes that are being run in parallel. - * Inspired by {@see https://github.com/phpstan/phpstan-src/blob/ed68345a82992775112acc2c2bd639d1bd3a1a02/src/Parallel/ProcessPool.php}. - * - * @author Greg Korba - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProcessPool -{ - /** - * @readonly - */ - private ServerInterface $server; - - /** - * @var null|(callable(): void) - * - * @readonly - */ - private $onServerClose; - - /** - * @var array - */ - private array $processes = []; - - /** - * @param null|(callable(): void) $onServerClose - */ - public function __construct(ServerInterface $server, ?callable $onServerClose = null) - { - $this->server = $server; - $this->onServerClose = $onServerClose; - } - - public function getProcess(ProcessIdentifier $identifier): Process - { - if (!isset($this->processes[$identifier->toString()])) { - throw ParallelisationException::forUnknownIdentifier($identifier); - } - - return $this->processes[$identifier->toString()]; - } - - public function addProcess(ProcessIdentifier $identifier, Process $process): void - { - $this->processes[$identifier->toString()] = $process; - } - - public function endProcessIfKnown(ProcessIdentifier $identifier): void - { - if (!isset($this->processes[$identifier->toString()])) { - return; - } - - $this->endProcess($identifier); - } - - public function endAll(): void - { - foreach ($this->processes as $identifier => $process) { - $this->endProcessIfKnown(ProcessIdentifier::fromRaw($identifier)); - } - } - - private function endProcess(ProcessIdentifier $identifier): void - { - $this->getProcess($identifier)->quit(); - - unset($this->processes[$identifier->toString()]); - - if (0 === \count($this->processes)) { - $this->server->close(); - - if (null !== $this->onServerClose) { - ($this->onServerClose)(); - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessUtils.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessUtils.php deleted file mode 100644 index 263d8ef..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/ProcessUtils.php +++ /dev/null @@ -1,83 +0,0 @@ - - * Dariusz Rumiński - * - * This file was copied (and slightly modified) from Symfony: - * - https://github.com/symfony/symfony/blob/3.4/src/Symfony/Component/Process/ProcessUtils.php#L41 - * - (c) Fabien Potencier - * - For the full copyright and license information, please see https://github.com/symfony/symfony/blob/3.4/src/Symfony/Component/Process/LICENSE - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ProcessUtils -{ - /** - * This class should not be instantiated. - */ - private function __construct() {} - - /** - * Escapes a string to be used as a shell argument. - * - * @param string $argument The argument that will be escaped - * - * @return string The escaped argument - */ - public static function escapeArgument(string $argument): string - { - // Fix for PHP bug #43784 escapeshellarg removes % from given string - // Fix for PHP bug #49446 escapeshellarg doesn't work on Windows - // @see https://bugs.php.net/43784 - // @see https://bugs.php.net/49446 - if ('\\' === \DIRECTORY_SEPARATOR) { - if ('' === $argument) { - return escapeshellarg($argument); - } - - $escapedArgument = ''; - $quote = false; - foreach (preg_split('/(")/', $argument, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE) as $part) { // @phpstan-ignore foreach.nonIterable - if ('"' === $part) { - $escapedArgument .= '\"'; - } elseif (self::isSurroundedBy($part, '%')) { - // Avoid environment variable expansion - $escapedArgument .= '^%"'.substr($part, 1, -1).'"^%'; - } else { - // escape trailing backslash - if ('\\' === substr($part, -1)) { - $part .= '\\'; - } - $quote = true; - $escapedArgument .= $part; - } - } - if ($quote) { - $escapedArgument = '"'.$escapedArgument.'"'; - } - - return $escapedArgument; - } - - return "'".str_replace("'", "'\\''", $argument)."'"; - } - - private static function isSurroundedBy(string $arg, string $char): bool - { - return 2 < \strlen($arg) && $char === $arg[0] && $char === $arg[\strlen($arg) - 1]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/WorkerException.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/WorkerException.php deleted file mode 100644 index 4b88e68..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Parallel/WorkerException.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner\Parallel; - -/** - * @author Greg Korba - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class WorkerException extends \RuntimeException -{ - private string $originalTraceAsString; - - private function __construct(string $message, int $code) - { - parent::__construct($message, $code); - } - - /** - * @param array{ - * class: class-string<\Throwable>, - * message: string, - * file: string, - * line: int, - * code: int, - * trace: string, - * ... - * } $data - */ - public static function fromRaw(array $data): self - { - $exception = new self( - \sprintf('[%s] %s', $data['class'], $data['message']), - $data['code'], - ); - $exception->file = $data['file']; - $exception->line = $data['line']; - $exception->originalTraceAsString = \sprintf( - '## %s(%d)%s%s', - $data['file'], - $data['line'], - \PHP_EOL, - $data['trace'], - ); - - return $exception; - } - - public function getOriginalTraceAsString(): string - { - return $this->originalTraceAsString; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Runner.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Runner.php deleted file mode 100644 index 9234c3e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/Runner.php +++ /dev/null @@ -1,803 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner; - -use Clue\React\NDJson\Decoder; -use Clue\React\NDJson\Encoder; -use PhpCsFixer\AbstractFixer; -use PhpCsFixer\Cache\CacheManagerInterface; -use PhpCsFixer\Cache\Directory; -use PhpCsFixer\Cache\DirectoryInterface; -use PhpCsFixer\Config\NullRuleCustomisationPolicy; -use PhpCsFixer\Config\RuleCustomisationPolicyInterface; -use PhpCsFixer\Console\Command\WorkerCommand; -use PhpCsFixer\Differ\DifferInterface; -use PhpCsFixer\Error\Error; -use PhpCsFixer\Error\ErrorsManager; -use PhpCsFixer\Error\SourceExceptionFactory; -use PhpCsFixer\FileReader; -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\Future; -use PhpCsFixer\Linter\LinterInterface; -use PhpCsFixer\Linter\LintingException; -use PhpCsFixer\Linter\LintingResultInterface; -use PhpCsFixer\Preg; -use PhpCsFixer\Runner\Event\AnalysisStarted; -use PhpCsFixer\Runner\Event\FileProcessed; -use PhpCsFixer\Runner\Parallel\ParallelAction; -use PhpCsFixer\Runner\Parallel\ParallelConfig; -use PhpCsFixer\Runner\Parallel\ParallelConfigFactory; -use PhpCsFixer\Runner\Parallel\ParallelisationException; -use PhpCsFixer\Runner\Parallel\ProcessFactory; -use PhpCsFixer\Runner\Parallel\ProcessIdentifier; -use PhpCsFixer\Runner\Parallel\ProcessPool; -use PhpCsFixer\Runner\Parallel\WorkerException; -use PhpCsFixer\Tokenizer\Analyzer\FixerAnnotationAnalyzer; -use PhpCsFixer\Tokenizer\Tokens; -use React\EventLoop\StreamSelectLoop; -use React\Socket\ConnectionInterface; -use React\Socket\TcpServer; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\Filesystem\Exception\IOException; -use Symfony\Contracts\EventDispatcher\Event; - -/** - * @phpstan-type _RunResult array, diff: string}> - * - * @author Dariusz Rumiński - * @author Greg Korba - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - * - * @TODO v4: decide if marking Runner as internal or making it dependencies public - * - * @phpstan-ignore-next-line phpCsFixer.internalTypeInPublicApi - */ -final class Runner -{ - /** - * Buffer size used in the NDJSON decoder for communication between main process and workers. - * - * @see https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/8068 - */ - private const PARALLEL_BUFFER_SIZE = 16 * (1_024 * 1_024 /* 1MB */); - - private DifferInterface $differ; - - private DirectoryInterface $directory; - - private ?EventDispatcherInterface $eventDispatcher; - - private ErrorsManager $errorsManager; - - private CacheManagerInterface $cacheManager; - - private bool $isDryRun; - - private LinterInterface $linter; - - /** - * @var null|\Traversable - */ - private ?\Traversable $fileIterator = null; - - private int $fileCount; - - /** - * @var array key is process identifier, value is memory usage in bytes - */ - private array $workersMemoryUsageByProcess = []; - - /** - * @var list - */ - private array $fixers; - - /** - * @var array - */ - private array $fixersByName; - - private bool $stopOnViolation; - - private ParallelConfig $parallelConfig; - - private ?InputInterface $input; - - private ?string $configFile; - - private RuleCustomisationPolicyInterface $ruleCustomisationPolicy; - - /** - * @param null|\Traversable $fileIterator - * @param list $fixers - */ - public function __construct( - ?\Traversable $fileIterator, - array $fixers, - DifferInterface $differ, - ?EventDispatcherInterface $eventDispatcher, - ErrorsManager $errorsManager, - LinterInterface $linter, - bool $isDryRun, - CacheManagerInterface $cacheManager, - ?DirectoryInterface $directory = null, - bool $stopOnViolation = false, - // @TODO Make these arguments required in 4.0 - ?ParallelConfig $parallelConfig = null, - ?InputInterface $input = null, - ?string $configFile = null, - ?RuleCustomisationPolicyInterface $ruleCustomisationPolicy = null - ) { - // Required only for main process (calculating workers count) - $this->fileCount = null !== $fileIterator ? \count(iterator_to_array($fileIterator)) : 0; - - $this->fileIterator = $fileIterator; - $this->fixers = $fixers; - $this->fixersByName = array_reduce( - $fixers, - static function (array $carry, FixerInterface $fixer): array { - $carry[$fixer->getName()] = $fixer; - - return $carry; - }, - [], - ); - $this->differ = $differ; - $this->eventDispatcher = $eventDispatcher; - $this->errorsManager = $errorsManager; - $this->linter = $linter; - $this->isDryRun = $isDryRun; - $this->cacheManager = $cacheManager; - $this->directory = $directory ?? new Directory(''); - $this->stopOnViolation = $stopOnViolation; - $this->parallelConfig = $parallelConfig ?? ParallelConfigFactory::detect(); - $this->input = $input; - $this->configFile = $configFile; - $this->ruleCustomisationPolicy = $ruleCustomisationPolicy ?? new NullRuleCustomisationPolicy(); - } - - /** - * Total workers memory. 0 if not run in parallel mode. - */ - public function getWorkersMemoryUsage(): int - { - return array_sum($this->workersMemoryUsageByProcess); - } - - /** - * @param \Traversable $fileIterator - * - * @TODO v4: mark internal - * @TODO consider to drop this method and make iterator parameter obligatory in constructor, - * more in https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/7777/files#r1590447581 - */ - public function setFileIterator(iterable $fileIterator): void - { - $this->fileIterator = $fileIterator instanceof \Traversable ? $fileIterator : new \ArrayIterator($fileIterator); - - // Required only for main process (calculating workers count) - $this->fileCount = \count(iterator_to_array($fileIterator)); - } - - /** - * @return _RunResult - */ - public function fix(): array - { - if (0 === $this->fileCount) { - return []; - } - - $ruleCustomisers = $this->ruleCustomisationPolicy->getRuleCustomisers(); - $this->validateRulesNamesForExceptions( - array_keys($ruleCustomisers), - <<<'EOT' - Rule Customisation Policy contains customisers for rules that are not in the current set of enabled rules: - %s - - Please check your configuration to ensure that these rules are included, or update your Rule Customisation Policy if they have been replaced by other rules in the version of PHP CS Fixer you are using. - EOT, - ); - - // @TODO 4.0: Remove condition and its body, as no longer needed when param will be required in the constructor. - // This is a fallback only in case someone calls `new Runner()` in a custom repo and does not provide v4-ready params in v3-codebase. - if (null === $this->input) { - return $this->fixSequential(); - } - - if ( - 1 === $this->parallelConfig->getMaxProcesses() - || $this->fileCount <= $this->parallelConfig->getFilesPerProcess() - ) { - return $this->fixSequential(); - } - - return $this->fixParallel(); - } - - /** - * @param list $ruleExceptions - * @param non-empty-string $errorTemplate - */ - private function validateRulesNamesForExceptions(array $ruleExceptions, string $errorTemplate): void - { - if (true === filter_var(getenv('PHP_CS_FIXER_IGNORE_MISMATCHED_RULES_EXCEPTIONS'), \FILTER_VALIDATE_BOOLEAN)) { - return; - } - - if ([] === $ruleExceptions) { - return; - } - - $fixersByName = $this->fixersByName; - $usedRules = array_keys($fixersByName); - $missingRuleNames = array_diff($ruleExceptions, $usedRules); - - if ([] === $missingRuleNames) { - return; - } - - /** @TODO v3.999 check if rule is deprecated and show the replacement rules as well */ - $missingRulesDesc = implode("\n", array_map( - static function (string $name) use ($fixersByName): string { - $extra = ''; - if ('' === $name) { - $extra = '(no name provided)'; - } elseif ('@' === $name[0]) { - $extra = ' (can exclude only rules, not sets)'; - } elseif (!isset($fixersByName[$name])) { - $extra = ' (unknown rule)'; - } - - return '- '.$name.$extra; - }, - $missingRuleNames, - )); - - throw new \RuntimeException( - \sprintf($errorTemplate, $missingRulesDesc), - ); - } - - /** - * Heavily inspired by {@see https://github.com/phpstan/phpstan-src/blob/9ce425bca5337039fb52c0acf96a20a2b8ace490/src/Parallel/ParallelAnalyser.php}. - * - * @return _RunResult - */ - private function fixParallel(): array - { - $this->dispatchEvent(AnalysisStarted::NAME, new AnalysisStarted(AnalysisStarted::MODE_PARALLEL, $this->isDryRun)); - - $changed = []; - $streamSelectLoop = new StreamSelectLoop(); - $server = new TcpServer('127.0.0.1:0', $streamSelectLoop); - $serverPort = parse_url($server->getAddress() ?? '', \PHP_URL_PORT); - - if (!is_numeric($serverPort)) { - throw new ParallelisationException(\sprintf( - 'Unable to parse server port from "%s"', - $server->getAddress() ?? '', - )); - } - - $processPool = new ProcessPool( - $server, - static function () use ($streamSelectLoop): void { - $streamSelectLoop->stop(); - }, - ); - $maxFilesPerProcess = $this->parallelConfig->getFilesPerProcess(); - $fileIterator = $this->getFilteringFileIterator(); - $fileIterator->rewind(); - - $getFileChunk = static function () use ($fileIterator, $maxFilesPerProcess): array { - $files = []; - - while (\count($files) < $maxFilesPerProcess) { - $current = $fileIterator->current(); - - if (null === $current) { - break; - } - - $files[] = $current->getPathname(); - - $fileIterator->next(); - } - - return $files; - }; - - // [REACT] Handle worker's handshake (init connection) - $server->on('connection', static function (ConnectionInterface $connection) use ($processPool, $getFileChunk): void { - $decoder = new Decoder( - $connection, - true, - 512, - \JSON_INVALID_UTF8_IGNORE, - self::PARALLEL_BUFFER_SIZE, - ); - $encoder = new Encoder($connection, \JSON_INVALID_UTF8_IGNORE); - - // [REACT] Bind connection when worker's process requests "hello" action (enables 2-way communication) - $decoder->on('data', static function (array $data) use ($processPool, $getFileChunk, $decoder, $encoder): void { - \assert(isset($data['action'])); - - if (ParallelAction::WORKER_HELLO !== $data['action']) { - return; - } - - \assert(isset( - $data['identifier'], - )); - - $identifier = ProcessIdentifier::fromRaw($data['identifier']); - - // Avoid race condition where worker tries to establish connection, - // but runner already ended all processes because `stop-on-violation` mode was enabled. - try { - $process = $processPool->getProcess($identifier); - } catch (ParallelisationException $e) { - return; - } - - $process->bindConnection($decoder, $encoder); - $fileChunk = $getFileChunk(); - - if (0 === \count($fileChunk)) { - $process->request(['action' => ParallelAction::RUNNER_THANK_YOU]); - $processPool->endProcessIfKnown($identifier); - - return; - } - - $process->request(['action' => ParallelAction::RUNNER_REQUEST_ANALYSIS, 'files' => $fileChunk]); - }); - }); - - $processesToSpawn = min( - $this->parallelConfig->getMaxProcesses(), - max( - 1, - (int) ceil($this->fileCount / $this->parallelConfig->getFilesPerProcess()), - ), - ); - $processFactory = new ProcessFactory(); - - for ($i = 0; $i < $processesToSpawn; ++$i) { - $identifier = ProcessIdentifier::create(); - $process = $processFactory->create( - $streamSelectLoop, - $this->input, - new RunnerConfig( - $this->isDryRun, - $this->stopOnViolation, - $this->parallelConfig, - $this->configFile, - ), - $identifier, - $serverPort, - ); - $processPool->addProcess($identifier, $process); - $process->start( - // [REACT] Handle workers' responses (multiple actions possible) - function (array $workerResponse) use ($processPool, $process, $identifier, $getFileChunk, &$changed): void { - \assert(isset($workerResponse['action'])); - - // File analysis result (we want close-to-realtime progress with frequent cache savings) - if (ParallelAction::WORKER_RESULT === $workerResponse['action']) { - \assert(isset( - $workerResponse['errors'], - $workerResponse['file'], - // $workerResponse['fileHash'], // optional - // $workerResponse['fixInfo'], // optional - $workerResponse['memoryUsage'], - $workerResponse['status'], - )); - - // Dispatch an event for each file processed and dispatch its status (required for progress output) - $this->dispatchEvent(FileProcessed::NAME, new FileProcessed($workerResponse['status'])); - - if (isset($workerResponse['fileHash'])) { - $this->cacheManager->setFileHash($workerResponse['file'], $workerResponse['fileHash']); - } - - foreach ($workerResponse['errors'] as $error) { - $this->errorsManager->report(new Error( - $error['type'], - $error['filePath'], - null !== $error['source'] - ? SourceExceptionFactory::fromArray($error['source']) - : null, - $error['appliedFixers'], - $error['diff'], - )); - } - - // we collect memory on each file, as any violation may terminate processPool via stopOnViolation - $this->workersMemoryUsageByProcess[$identifier->toString()] = $workerResponse['memoryUsage']; - - // Pass-back information about applied changes (only if there are any) - if (isset($workerResponse['fixInfo'])) { - $relativePath = $this->directory->getRelativePathTo($workerResponse['file']); - $changed[$relativePath] = $workerResponse['fixInfo']; - - if ($this->stopOnViolation) { - $processPool->endAll(); - - return; - } - } - - return; - } - - if (ParallelAction::WORKER_GET_FILE_CHUNK === $workerResponse['action']) { - // no payload to assert on - - // Request another chunk of files, if still available - $fileChunk = $getFileChunk(); - - if (0 === \count($fileChunk)) { - $process->request(['action' => ParallelAction::RUNNER_THANK_YOU]); - $processPool->endProcessIfKnown($identifier); - - return; - } - - $process->request(['action' => ParallelAction::RUNNER_REQUEST_ANALYSIS, 'files' => $fileChunk]); - - return; - } - - if (ParallelAction::WORKER_ERROR_REPORT === $workerResponse['action']) { - \assert(isset( - $workerResponse['class'], - $workerResponse['message'], - $workerResponse['file'], - $workerResponse['line'], - $workerResponse['code'], - $workerResponse['trace'], - )); - - throw WorkerException::fromRaw($workerResponse); - } - - throw new ParallelisationException('Unsupported action: '.($workerResponse['action'] ?? 'n/a')); - }, - - // [REACT] Handle errors encountered during worker's execution - static function (\Throwable $error) use ($processPool): void { - $processPool->endAll(); - - throw new ParallelisationException($error->getMessage(), $error->getCode(), $error); - }, - - // [REACT] Handle worker's shutdown - static function ($exitCode, string $output) use ($processPool, $identifier): void { - $processPool->endProcessIfKnown($identifier); - - if (0 === $exitCode || null === $exitCode) { - return; - } - - $errorsReported = Preg::matchAll( - \sprintf('/^(?:%s)([^\n]+)+/m', WorkerCommand::ERROR_PREFIX), - $output, - $matches, - ); - - if ($errorsReported > 0) { - throw WorkerException::fromRaw( - json_decode($matches[1][0], true, 512, \JSON_THROW_ON_ERROR), - ); - } - }, - ); - } - - $streamSelectLoop->run(); - - return $changed; - } - - /** - * @return _RunResult - */ - private function fixSequential(): array - { - $this->dispatchEvent(AnalysisStarted::NAME, new AnalysisStarted(AnalysisStarted::MODE_SEQUENTIAL, $this->isDryRun)); - - $changed = []; - $collection = $this->getLintingFileIterator(); - - foreach ($collection as $file) { - $fixInfo = $this->fixFile($file, $collection->currentLintingResult()); - - // we do not need Tokens to still caching just fixed file - so clear the cache - Tokens::clearCache(); - - if (null !== $fixInfo) { - $relativePath = $this->directory->getRelativePathTo($file->__toString()); - $changed[$relativePath] = $fixInfo; - - if ($this->stopOnViolation) { - break; - } - } - } - - return $changed; - } - - /** - * @return null|array{appliedFixers: list, diff: string} - */ - private function fixFile(\SplFileInfo $file, LintingResultInterface $lintingResult): ?array - { - $filePathname = $file->getPathname(); - - try { - $lintingResult->check(); - } catch (LintingException $e) { - $this->dispatchEvent( - FileProcessed::NAME, - new FileProcessed(FileProcessed::STATUS_INVALID), - ); - - $this->errorsManager->report(new Error(Error::TYPE_INVALID, $filePathname, $e)); - - return null; - } - - $old = FileReader::createSingleton()->read($file->getRealPath()); - - $tokens = Tokens::fromCode($old); - - if ( - Future::isFutureModeEnabled() // @TODO 4.0 drop this line - && !filter_var(getenv('PHP_CS_FIXER_NON_MONOLITHIC'), \FILTER_VALIDATE_BOOL) - && !$tokens->isMonolithicPhp() - ) { - $this->dispatchEvent( - FileProcessed::NAME, - new FileProcessed(FileProcessed::STATUS_NON_MONOLITHIC), - ); - - return null; - } - - $oldHash = $tokens->getCodeHash(); - $newHash = $oldHash; - $new = $old; - - $appliedFixers = []; - - $ruleCustomisers = $this->ruleCustomisationPolicy->getRuleCustomisers(); // were already validated - - try { - $fixerAnnotationAnalysis = (new FixerAnnotationAnalyzer())->find($tokens); - $rulesIgnoredByAnnotations = $fixerAnnotationAnalysis['php-cs-fixer-ignore'] ?? []; - } catch (\RuntimeException $e) { - throw new \RuntimeException( - \sprintf( - 'Error while analysing file "%s": %s', - $filePathname, - $e->getMessage(), - ), - $e->getCode(), - $e, - ); - } - - $this->validateRulesNamesForExceptions( - $rulesIgnoredByAnnotations, - <<fixers as $fixer) { - if (\in_array($fixer->getName(), $rulesIgnoredByAnnotations, true)) { - continue; - } - - $customiser = $ruleCustomisers[$fixer->getName()] ?? null; - if (null !== $customiser) { - $actualFixer = $customiser($file); - if (false === $actualFixer) { - continue; - } - if (true !== $actualFixer) { - if (\get_class($fixer) !== \get_class($actualFixer)) { - throw new \RuntimeException(\sprintf( - 'The fixer returned by the Rule Customisation Policy must be of the same class as the original fixer (expected `%s`, got `%s`).', - \get_class($fixer), - \get_class($actualFixer), - )); - } - $fixer = $actualFixer; - } - } - - // for custom fixers we don't know is it safe to run `->fix()` without checking `->supports()` and `->isCandidate()`, - // thus we need to check it and conditionally skip fixing - if ( - !$fixer instanceof AbstractFixer - && (!$fixer->supports($file) || !$fixer->isCandidate($tokens)) - ) { - continue; - } - - $fixer->fix($file, $tokens); - - if ($tokens->isChanged()) { - $tokens->clearEmptyTokens(); - $tokens->clearChanged(); - $appliedFixers[] = $fixer->getName(); - if (filter_var(getenv('PHP_CS_FIXER_DEBUG'), \FILTER_VALIDATE_BOOL)) { - try { - $this->linter->lintSource($tokens->generateCode())->check(); - } catch (LintingException $e) { - $this->dispatchEvent(FileProcessed::NAME, new FileProcessed(FileProcessed::STATUS_LINT)); - - $this->errorsManager->report(new Error(Error::TYPE_LINT, $filePathname, $e, [$fixer->getName()], $this->differ->diff($old, $tokens->generateCode(), $file))); - - return null; - } - } - } - } - } catch (\ParseError $e) { - $this->dispatchEvent(FileProcessed::NAME, new FileProcessed(FileProcessed::STATUS_LINT)); - - $this->errorsManager->report(new Error(Error::TYPE_LINT, $filePathname, $e)); - - return null; - } catch (\Throwable $e) { - $this->processException($filePathname, $e); - - return null; - } - - $fixInfo = null; - - if ([] !== $appliedFixers) { - $new = $tokens->generateCode(); - $newHash = $tokens->getCodeHash(); - } - - // We need to check if content was changed and then applied changes. - // But we can't simply check $appliedFixers, because one fixer may revert - // work of other and both of them will mark collection as changed. - // Therefore we need to check if code hashes changed. - if ($oldHash !== $newHash) { - $fixInfo = [ - 'appliedFixers' => $appliedFixers, - 'diff' => $this->differ->diff($old, $new, $file), - ]; - - try { - $this->linter->lintSource($new)->check(); - } catch (LintingException $e) { - $this->dispatchEvent(FileProcessed::NAME, new FileProcessed(FileProcessed::STATUS_LINT)); - - $this->errorsManager->report(new Error(Error::TYPE_LINT, $filePathname, $e, $fixInfo['appliedFixers'], $fixInfo['diff'])); - - return null; - } - - if (!$this->isDryRun) { - $fileRealPath = $file->getRealPath(); - - if (!file_exists($fileRealPath)) { - throw new IOException( - \sprintf('Failed to write file "%s" (no longer) exists.', $file->getPathname()), - 0, - null, - $file->getPathname(), - ); - } - - if (is_dir($fileRealPath)) { - throw new IOException( - \sprintf('Cannot write file "%s" as the location exists as directory.', $fileRealPath), - 0, - null, - $fileRealPath, - ); - } - - if (!is_writable($fileRealPath)) { - throw new IOException( - \sprintf('Cannot write to file "%s" as it is not writable.', $fileRealPath), - 0, - null, - $fileRealPath, - ); - } - - if (false === @file_put_contents($fileRealPath, $new)) { - $error = error_get_last(); - - throw new IOException( - \sprintf('Failed to write file "%s", "%s".', $fileRealPath, null !== $error ? $error['message'] : 'no reason available'), - 0, - null, - $fileRealPath, - ); - } - } - } - - $this->cacheManager->setFileHash($filePathname, $newHash); - - $this->dispatchEvent( - FileProcessed::NAME, - new FileProcessed(null !== $fixInfo ? FileProcessed::STATUS_FIXED : FileProcessed::STATUS_NO_CHANGES, $newHash), - ); - - return $fixInfo; - } - - /** - * Process an exception that occurred. - */ - private function processException(string $name, \Throwable $e): void - { - $this->dispatchEvent(FileProcessed::NAME, new FileProcessed(FileProcessed::STATUS_EXCEPTION)); - - $this->errorsManager->report(new Error(Error::TYPE_EXCEPTION, $name, $e)); - } - - private function dispatchEvent(string $name, Event $event): void - { - if (null === $this->eventDispatcher) { - return; - } - - $this->eventDispatcher->dispatch($event, $name); - } - - private function getLintingFileIterator(): LintingResultAwareFileIteratorInterface - { - $fileFilterIterator = $this->getFilteringFileIterator(); - - return $this->linter->isAsync() - ? new FileCachingLintingFileIterator($fileFilterIterator, $this->linter) - : new LintingFileIterator($fileFilterIterator, $this->linter); - } - - private function getFilteringFileIterator(): FileFilterIterator - { - if (null === $this->fileIterator) { - throw new \RuntimeException('File iterator is not configured. Pass paths during Runner initialisation or set them after with `setFileIterator()`.'); - } - - return new FileFilterIterator( - $this->fileIterator instanceof \IteratorAggregate - ? $this->fileIterator->getIterator() - : $this->fileIterator, - $this->eventDispatcher, - $this->cacheManager, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/RunnerConfig.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/RunnerConfig.php deleted file mode 100644 index 0983c8d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Runner/RunnerConfig.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Runner; - -use PhpCsFixer\Runner\Parallel\ParallelConfig; - -/** - * @author Greg Korba - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RunnerConfig -{ - private bool $isDryRun; - private bool $stopOnViolation; - private ParallelConfig $parallelConfig; - private ?string $configFile; - - public function __construct( - bool $isDryRun, - bool $stopOnViolation, - ParallelConfig $parallelConfig, - ?string $configFile = null - ) { - $this->isDryRun = $isDryRun; - $this->stopOnViolation = $stopOnViolation; - $this->parallelConfig = $parallelConfig; - $this->configFile = $configFile; - } - - public function isDryRun(): bool - { - return $this->isDryRun; - } - - public function shouldStopOnViolation(): bool - { - return $this->stopOnViolation; - } - - public function getParallelConfig(): ParallelConfig - { - return $this->parallelConfig; - } - - public function getConfigFile(): ?string - { - return $this->configFile; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/StdinFileInfo.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/StdinFileInfo.php deleted file mode 100644 index c3834ab..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/StdinFileInfo.php +++ /dev/null @@ -1,175 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @author Davi Koscianski Vidal - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class StdinFileInfo extends \SplFileInfo -{ - public function __construct() - { - parent::__construct(__FILE__); - } - - public function __toString(): string - { - return $this->getRealPath(); - } - - public function getRealPath(): string - { - // So file_get_contents & friends will work. - // Warning - this stream is not seekable, so `file_get_contents` will work only once! Consider using `FileReader`. - return 'php://stdin'; - } - - public function getATime(): int - { - return 0; - } - - public function getBasename($suffix = null): string - { - return $this->getFilename(); - } - - public function getCTime(): int - { - return 0; - } - - public function getExtension(): string - { - return '.php'; - } - - /** - * @param null|class-string<\SplFileInfo> $class - */ - public function getFileInfo($class = null): \SplFileInfo - { - throw new \BadMethodCallException(\sprintf('Method "%s" is not implemented.', __METHOD__)); - } - - public function getFilename(): string - { - /* - * Useful so fixers depending on PHP-only files still work. - * - * The idea to use STDIN is to parse PHP-only files, so we can - * assume that there will be always a PHP file out there. - */ - - return 'stdin.php'; - } - - public function getGroup(): int - { - return 0; - } - - public function getInode(): int - { - return 0; - } - - public function getLinkTarget(): string - { - return ''; - } - - public function getMTime(): int - { - return 0; - } - - public function getOwner(): int - { - return 0; - } - - public function getPath(): string - { - return ''; - } - - /** - * @param null|class-string<\SplFileInfo> $class - */ - public function getPathInfo($class = null): \SplFileInfo - { - throw new \BadMethodCallException(\sprintf('Method "%s" is not implemented.', __METHOD__)); - } - - public function getPathname(): string - { - return $this->getFilename(); - } - - public function getPerms(): int - { - return 0; - } - - public function getSize(): int - { - return 0; - } - - public function getType(): string - { - return 'file'; - } - - public function isDir(): bool - { - return false; - } - - public function isExecutable(): bool - { - return false; - } - - public function isFile(): bool - { - return true; - } - - public function isLink(): bool - { - return false; - } - - public function isReadable(): bool - { - return true; - } - - public function isWritable(): bool - { - return false; - } - - public function openFile($openMode = 'r', $useIncludePath = false, $context = null): \SplFileObject - { - throw new \BadMethodCallException(\sprintf('Method "%s" is not implemented.', __METHOD__)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php deleted file mode 100644 index d0c632b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php +++ /dev/null @@ -1,42 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer; - -use PhpCsFixer\Utils; - -/** - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractTransformer implements TransformerInterface -{ - public function getName(): string - { - $nameParts = explode('\\', static::class); - $name = substr(end($nameParts), 0, -\strlen('Transformer')); - - return Utils::camelCaseToUnderscore($name); - } - - public function getPriority(): int - { - return 0; - } - - abstract public function getCustomTokens(): array; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTypeTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTypeTransformer.php deleted file mode 100644 index 66907f9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTypeTransformer.php +++ /dev/null @@ -1,93 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer; - -/** - * @phpstan-import-type _PhpTokenPrototype from Token - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractTypeTransformer extends AbstractTransformer -{ - private const TYPE_END_TOKENS = [')', [\T_CALLABLE], [\T_NS_SEPARATOR], [\T_STATIC], [\T_STRING], [CT::T_ARRAY_TYPEHINT]]; - - private const TYPE_TOKENS = [ - '|', '&', '(', - ...self::TYPE_END_TOKENS, - [CT::T_TYPE_ALTERNATION], [CT::T_TYPE_INTERSECTION], // some siblings may already be transformed - [\T_WHITESPACE], [\T_COMMENT], [\T_DOC_COMMENT], // technically these can be inside of type tokens array - ]; - - abstract protected function replaceToken(Tokens $tokens, int $index): void; - - /** - * @param _PhpTokenPrototype $originalToken - */ - protected function doProcess(Tokens $tokens, int $index, $originalToken): void - { - if (!$tokens[$index]->equals($originalToken)) { - return; - } - - if (!$this->isPartOfType($tokens, $index)) { - return; - } - - $this->replaceToken($tokens, $index); - } - - private function isPartOfType(Tokens $tokens, int $index): bool - { - // return types and non-capturing catches - $typeColonIndex = $tokens->getTokenNotOfKindSibling($index, -1, self::TYPE_TOKENS); - if ($tokens[$typeColonIndex]->isGivenKind([\T_CATCH, CT::T_TYPE_COLON, \T_CONST])) { - return true; - } - - // for parameter there will be splat operator or variable after the type ("&" is ambiguous and can be reference or bitwise and) - $afterTypeIndex = $tokens->getTokenNotOfKindSibling($index, 1, self::TYPE_TOKENS); - - if ($tokens[$afterTypeIndex]->isGivenKind(\T_ELLIPSIS)) { - return true; - } - - if (!$tokens[$afterTypeIndex]->isGivenKind(\T_VARIABLE)) { - return false; - } - - $beforeVariableIndex = $tokens->getPrevMeaningfulToken($afterTypeIndex); - if ($tokens[$beforeVariableIndex]->equals('&')) { - $prevIndex = $tokens->getPrevTokenOfKind( - $index, - [ - '{', - '}', - ';', - [\T_CLOSE_TAG], - [\T_FN], - [\T_FUNCTION], - ], - ); - - return null !== $prevIndex && $tokens[$prevIndex]->isGivenKind([\T_FN, \T_FUNCTION]); - } - - return $tokens[$beforeVariableIndex]->equalsAny(self::TYPE_END_TOKENS); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AlternativeSyntaxAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AlternativeSyntaxAnalyzer.php deleted file mode 100644 index f72443c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AlternativeSyntaxAnalyzer.php +++ /dev/null @@ -1,123 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @TODO 4.0 remove this analyzer and move this logic into a transformer - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AlternativeSyntaxAnalyzer -{ - private const ALTERNATIVE_SYNTAX_BLOCK_EDGES = [ - \T_IF => [\T_ENDIF, \T_ELSE, \T_ELSEIF], - \T_ELSE => [\T_ENDIF], - \T_ELSEIF => [\T_ENDIF, \T_ELSE, \T_ELSEIF], - \T_FOR => [\T_ENDFOR], - \T_FOREACH => [\T_ENDFOREACH], - \T_WHILE => [\T_ENDWHILE], - \T_SWITCH => [\T_ENDSWITCH], - ]; - - public function belongsToAlternativeSyntax(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->equals(':')) { - return false; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prevIndex]->isGivenKind(\T_ELSE)) { - return true; - } - - if (!$tokens[$prevIndex]->equals(')')) { - return false; - } - - $openParenthesisIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $prevIndex); - $beforeOpenParenthesisIndex = $tokens->getPrevMeaningfulToken($openParenthesisIndex); - - return $tokens[$beforeOpenParenthesisIndex]->isGivenKind([ - \T_DECLARE, - \T_ELSEIF, - \T_FOR, - \T_FOREACH, - \T_IF, - \T_SWITCH, - \T_WHILE, - ]); - } - - public function findAlternativeSyntaxBlockEnd(Tokens $tokens, int $index): int - { - if (!isset($tokens[$index])) { - throw new \InvalidArgumentException("There is no token at index {$index}."); - } - - if (!$this->isStartOfAlternativeSyntaxBlock($tokens, $index)) { - throw new \InvalidArgumentException("Token at index {$index} is not the start of an alternative syntax block."); - } - - $startTokenKind = $tokens[$index]->getId(); - - if (!isset(self::ALTERNATIVE_SYNTAX_BLOCK_EDGES[$startTokenKind])) { - throw new \LogicException(\sprintf('Unknown startTokenKind: %s', $tokens[$index]->toJson())); - } - - $endTokenKinds = self::ALTERNATIVE_SYNTAX_BLOCK_EDGES[$startTokenKind]; - - $findKinds = [[$startTokenKind]]; - foreach ($endTokenKinds as $endTokenKind) { - $findKinds[] = [$endTokenKind]; - } - - while (true) { - $index = $tokens->getNextTokenOfKind($index, $findKinds); - - if ($tokens[$index]->isGivenKind($endTokenKinds)) { - return $index; - } - - if ($this->isStartOfAlternativeSyntaxBlock($tokens, $index)) { - $index = $this->findAlternativeSyntaxBlockEnd($tokens, $index); - } - } - } - - private function isStartOfAlternativeSyntaxBlock(Tokens $tokens, int $index): bool - { - $map = self::ALTERNATIVE_SYNTAX_BLOCK_EDGES; - $startTokenKind = $tokens[$index]->getId(); - - if (null === $startTokenKind || !isset($map[$startTokenKind])) { - return false; - } - - $index = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$index]->equals('(')) { - $index = $tokens->getNextMeaningfulToken( - $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index), - ); - } - - return $tokens[$index]->equals(':'); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php deleted file mode 100644 index 042a82d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php +++ /dev/null @@ -1,53 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -abstract class AbstractControlCaseStructuresAnalysis -{ - private int $index; - - private int $open; - - private int $close; - - public function __construct(int $index, int $open, int $close) - { - $this->index = $index; - $this->open = $open; - $this->close = $close; - } - - public function getIndex(): int - { - return $this->index; - } - - public function getOpenIndex(): int - { - return $this->open; - } - - public function getCloseIndex(): int - { - return $this->close; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php deleted file mode 100644 index fadcfb3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php +++ /dev/null @@ -1,83 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ArgumentAnalysis -{ - /** - * The name of the argument. - */ - private ?string $name; - - /** - * The index where the name is located in the supplied Tokens object. - */ - private ?int $nameIndex; - - /** - * The default value of the argument. - */ - private ?string $default; - - /** - * The type analysis of the argument. - */ - private ?TypeAnalysis $typeAnalysis; - - public function __construct(?string $name, ?int $nameIndex, ?string $default, ?TypeAnalysis $typeAnalysis = null) - { - $this->name = $name; - $this->nameIndex = $nameIndex; - $this->default = $default ?? null; - $this->typeAnalysis = $typeAnalysis ?? null; - } - - public function getDefault(): ?string - { - return $this->default; - } - - public function hasDefault(): bool - { - return null !== $this->default; - } - - public function getName(): ?string - { - return $this->name; - } - - public function getNameIndex(): ?int - { - return $this->nameIndex; - } - - public function getTypeAnalysis(): ?TypeAnalysis - { - return $this->typeAnalysis; - } - - public function hasTypeAnalysis(): bool - { - return null !== $this->typeAnalysis; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AttributeAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AttributeAnalysis.php deleted file mode 100644 index b14c1d3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AttributeAnalysis.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @internal - * - * @phpstan-type _AttributeItem array{start: int, end: int, name: string} - * @phpstan-type _AttributeItems non-empty-list<_AttributeItem> - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AttributeAnalysis -{ - private int $startIndex; - private int $endIndex; - private int $openingBracketIndex; - private int $closingBracketIndex; - - /** - * @var _AttributeItems - */ - private array $attributes; - - /** - * @param _AttributeItems $attributes - */ - public function __construct(int $startIndex, int $endIndex, int $openingBracketIndex, int $closingBracketIndex, array $attributes) - { - $this->startIndex = $startIndex; - $this->endIndex = $endIndex; - $this->openingBracketIndex = $openingBracketIndex; - $this->closingBracketIndex = $closingBracketIndex; - $this->attributes = $attributes; - } - - public function getStartIndex(): int - { - return $this->startIndex; - } - - public function getEndIndex(): int - { - return $this->endIndex; - } - - public function getOpeningBracketIndex(): int - { - return $this->openingBracketIndex; - } - - public function getClosingBracketIndex(): int - { - return $this->closingBracketIndex; - } - - /** - * @return _AttributeItems - */ - public function getAttributes(): array - { - return $this->attributes; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php deleted file mode 100644 index 11f6873..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php +++ /dev/null @@ -1,47 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @author Kuba Werłos - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CaseAnalysis -{ - private int $index; - - private int $colonIndex; - - public function __construct(int $index, int $colonIndex) - { - $this->index = $index; - $this->colonIndex = $colonIndex; - } - - public function getIndex(): int - { - return $this->index; - } - - public function getColonIndex(): int - { - return $this->colonIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php deleted file mode 100644 index 39b3ee5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @internal - * - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DataProviderAnalysis -{ - private string $name; - - private int $nameIndex; - - /** @var non-empty-list */ - private array $usageIndices; - - /** - * @param non-empty-list $usageIndices - */ - public function __construct(string $name, int $nameIndex, array $usageIndices) - { - if ([] === $usageIndices || !array_is_list($usageIndices)) { - throw new \InvalidArgumentException( - 'Parameter "usageIndices" should be a non-empty-list.', - ); - } - - $this->name = $name; - $this->nameIndex = $nameIndex; - $this->usageIndices = $usageIndices; - } - - public function getName(): string - { - return $this->name; - } - - public function getNameIndex(): int - { - return $this->nameIndex; - } - - /** - * @return non-empty-list - */ - public function getUsageIndices(): array - { - return $this->usageIndices; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php deleted file mode 100644 index 550dba9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php +++ /dev/null @@ -1,45 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DefaultAnalysis -{ - private int $index; - - private int $colonIndex; - - public function __construct(int $index, int $colonIndex) - { - $this->index = $index; - $this->colonIndex = $colonIndex; - } - - public function getIndex(): int - { - return $this->index; - } - - public function getColonIndex(): int - { - return $this->colonIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php deleted file mode 100644 index df68325..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php +++ /dev/null @@ -1,48 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class EnumAnalysis extends AbstractControlCaseStructuresAnalysis -{ - /** - * @var list - */ - private array $cases; - - /** - * @param list $cases - */ - public function __construct(int $index, int $open, int $close, array $cases) - { - parent::__construct($index, $open, $close); - - $this->cases = $cases; - } - - /** - * @return list - */ - public function getCases(): array - { - return $this->cases; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php deleted file mode 100644 index 3472ba3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php +++ /dev/null @@ -1,39 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class MatchAnalysis extends AbstractControlCaseStructuresAnalysis -{ - private ?DefaultAnalysis $defaultAnalysis; - - public function __construct(int $index, int $open, int $close, ?DefaultAnalysis $defaultAnalysis) - { - parent::__construct($index, $open, $close); - - $this->defaultAnalysis = $defaultAnalysis; - } - - public function getDefaultAnalysis(): ?DefaultAnalysis - { - return $this->defaultAnalysis; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php deleted file mode 100644 index 9336ce7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php +++ /dev/null @@ -1,103 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @TODO v4: previously was mareked as internal - yet it leaked to public interface of `DocBlock`, consider making it so again. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NamespaceAnalysis -{ - /** - * The fully qualified namespace name. - */ - private string $fullName; - - /** - * The short version of the namespace. - */ - private string $shortName; - - /** - * The start index of the namespace declaration in the analysed Tokens. - */ - private int $startIndex; - - /** - * The end index of the namespace declaration in the analysed Tokens. - */ - private int $endIndex; - - /** - * The start index of the scope of the namespace in the analysed Tokens. - */ - private int $scopeStartIndex; - - /** - * The end index of the scope of the namespace in the analysed Tokens. - */ - private int $scopeEndIndex; - - /** - * @internal - */ - public function __construct(string $fullName, string $shortName, int $startIndex, int $endIndex, int $scopeStartIndex, int $scopeEndIndex) - { - $this->fullName = $fullName; - $this->shortName = $shortName; - $this->startIndex = $startIndex; - $this->endIndex = $endIndex; - $this->scopeStartIndex = $scopeStartIndex; - $this->scopeEndIndex = $scopeEndIndex; - } - - public function getFullName(): string - { - return $this->fullName; - } - - public function getShortName(): string - { - return $this->shortName; - } - - public function getStartIndex(): int - { - return $this->startIndex; - } - - public function getEndIndex(): int - { - return $this->endIndex; - } - - public function getScopeStartIndex(): int - { - return $this->scopeStartIndex; - } - - public function getScopeEndIndex(): int - { - return $this->scopeEndIndex; - } - - public function isGlobalNamespace(): bool - { - return '' === $this->getFullName(); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php deleted file mode 100644 index 37d9cc7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php +++ /dev/null @@ -1,199 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @TODO v4: previously was mareked as internal - yet it leaked to public interface of `DocBlock`, consider making it so again. - * - * @phpstan-type _ImportType 'class'|'constant'|'function' - * - * @author VeeWee - * @author Greg Korba - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NamespaceUseAnalysis -{ - public const TYPE_CLASS = 1; // "classy" could be class, interface or trait - public const TYPE_FUNCTION = 2; - public const TYPE_CONSTANT = 3; - - /** - * The fully qualified use namespace. - * - * @var non-empty-string - */ - private string $fullName; - - /** - * The short version of use namespace or the alias name in case of aliased use statements. - * - * @var non-empty-string - */ - private string $shortName; - - /** - * Is the use statement part of multi-use (`use A, B, C;`, `use A\{B, C};`)? - */ - private bool $isInMulti; - - /** - * Is the use statement being aliased? - */ - private bool $isAliased; - - /** - * The start index of the namespace declaration in the analysed Tokens. - */ - private int $startIndex; - - /** - * The end index of the namespace declaration in the analysed Tokens. - */ - private int $endIndex; - - /** - * The start index of the single import in the multi-use statement. - */ - private ?int $chunkStartIndex; - - /** - * The end index of the single import in the multi-use statement. - */ - private ?int $chunkEndIndex; - - /** - * The type of import: class, function or constant. - * - * @var self::TYPE_* - */ - private int $type; - - /** - * @param self::TYPE_* $type - * @param non-empty-string $fullName - * @param non-empty-string $shortName - * - * @internal - */ - public function __construct( - int $type, - string $fullName, - string $shortName, - bool $isAliased, - bool $isInMulti, - int $startIndex, - int $endIndex, - ?int $chunkStartIndex = null, - ?int $chunkEndIndex = null - ) { - if (true === $isInMulti && (null === $chunkStartIndex || null === $chunkEndIndex)) { - throw new \LogicException('Chunk start and end index must be set when the import is part of a multi-use statement.'); - } - - $this->type = $type; - $this->fullName = $fullName; - $this->shortName = $shortName; - $this->isAliased = $isAliased; - $this->isInMulti = $isInMulti; - $this->startIndex = $startIndex; - $this->endIndex = $endIndex; - $this->chunkStartIndex = $chunkStartIndex; - $this->chunkEndIndex = $chunkEndIndex; - } - - /** - * @return non-empty-string - */ - public function getFullName(): string - { - return $this->fullName; - } - - /** - * @return non-empty-string - */ - public function getShortName(): string - { - return $this->shortName; - } - - public function isAliased(): bool - { - return $this->isAliased; - } - - public function isInMulti(): bool - { - return $this->isInMulti; - } - - public function getStartIndex(): int - { - return $this->startIndex; - } - - public function getEndIndex(): int - { - return $this->endIndex; - } - - public function getChunkStartIndex(): ?int - { - return $this->chunkStartIndex; - } - - public function getChunkEndIndex(): ?int - { - return $this->chunkEndIndex; - } - - /** - * @return self::TYPE_* - */ - public function getType(): int - { - return $this->type; - } - - /** - * @return _ImportType - */ - public function getHumanFriendlyType(): string - { - return [ - self::TYPE_CLASS => 'class', - self::TYPE_FUNCTION => 'function', - self::TYPE_CONSTANT => 'constant', - ][$this->type]; - } - - public function isClass(): bool - { - return self::TYPE_CLASS === $this->type; - } - - public function isFunction(): bool - { - return self::TYPE_FUNCTION === $this->type; - } - - public function isConstant(): bool - { - return self::TYPE_CONSTANT === $this->type; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/SwitchAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/SwitchAnalysis.php deleted file mode 100644 index d26cd8b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/SwitchAnalysis.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SwitchAnalysis extends AbstractControlCaseStructuresAnalysis -{ - /** - * @var list - */ - private array $cases; - - private ?DefaultAnalysis $defaultAnalysis; - - /** - * @param list $cases - */ - public function __construct(int $index, int $open, int $close, array $cases, ?DefaultAnalysis $defaultAnalysis) - { - parent::__construct($index, $open, $close); - - $this->cases = $cases; - $this->defaultAnalysis = $defaultAnalysis; - } - - /** - * @return list - */ - public function getCases(): array - { - return $this->cases; - } - - public function getDefaultAnalysis(): ?DefaultAnalysis - { - return $this->defaultAnalysis; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php deleted file mode 100644 index f2a8f10..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php +++ /dev/null @@ -1,118 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer\Analysis; - -/** - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TypeAnalysis -{ - /** - * This list contains soft and hard reserved types that can be used or will be used by PHP at some point. - * - * More info: - * - * @var non-empty-list - * - * @see https://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.types - * @see https://php.net/manual/en/reserved.other-reserved-words.php - */ - private const RESERVED_TYPES = [ - 'array', - 'bool', - 'callable', - 'false', - 'float', - 'int', - 'iterable', - 'list', - 'mixed', - 'never', - 'null', - 'object', - 'parent', - 'resource', - 'self', - 'static', - 'string', - 'true', - 'void', - ]; - - private string $name; - - private ?int $startIndex; - - private ?int $endIndex; - - private bool $nullable; - - /** - * @param ($startIndex is null ? null : int) $endIndex - */ - public function __construct(string $name, ?int $startIndex = null, ?int $endIndex = null) - { - if (str_starts_with($name, '?')) { - $this->name = substr($name, 1); - $this->nullable = true; - } elseif (\PHP_VERSION_ID >= 8_00_00) { - $this->name = $name; - $this->nullable = \in_array('null', array_map('trim', explode('|', strtolower($name))), true); - } else { - $this->name = $name; - $this->nullable = false; - } - - $this->startIndex = $startIndex; - $this->endIndex = $endIndex; - } - - public function getName(): string - { - return $this->name; - } - - public function getStartIndex(): int - { - if (null === $this->startIndex) { - throw new \RuntimeException('TypeAnalysis: no start index.'); - } - - return $this->startIndex; - } - - public function getEndIndex(): int - { - if (null === $this->endIndex) { - throw new \RuntimeException('TypeAnalysis: no end index.'); - } - - return $this->endIndex; - } - - public function isReservedType(): bool - { - return \in_array(strtolower($this->name), self::RESERVED_TYPES, true); - } - - public function isNullable(): bool - { - return $this->nullable; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php deleted file mode 100644 index ea700b0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php +++ /dev/null @@ -1,165 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Analyzer\Analysis\ArgumentAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Dariusz Rumiński - * @author Vladimir Reznichenko - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ArgumentsAnalyzer -{ - private const ARGUMENT_INFO_SKIP_TYPES = [\T_ELLIPSIS, \T_FINAL, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, FCT::T_READONLY, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET]; - - /** - * Count amount of parameters in a function/method reference. - */ - public function countArguments(Tokens $tokens, int $openParenthesis, int $closeParenthesis): int - { - return \count($this->getArguments($tokens, $openParenthesis, $closeParenthesis)); - } - - /** - * Returns start and end token indices of arguments. - * - * Returns an array with each key being the first token of an - * argument and the value the last. Including non-function tokens - * such as comments and white space tokens, but without the separation - * tokens like '(', ',' and ')'. - * - * @return array - */ - public function getArguments(Tokens $tokens, int $openParenthesis, int $closeParenthesis): array - { - $arguments = []; - $firstSensibleToken = $tokens->getNextMeaningfulToken($openParenthesis); - - if ($tokens[$firstSensibleToken]->equals(')')) { - return $arguments; - } - - $paramContentIndex = $openParenthesis + 1; - $argumentsStart = $paramContentIndex; - - for (; $paramContentIndex < $closeParenthesis; ++$paramContentIndex) { - $token = $tokens[$paramContentIndex]; - - // skip nested (), [], {} constructs - $blockDefinitionProbe = Tokens::detectBlockType($token); - - if (null !== $blockDefinitionProbe && true === $blockDefinitionProbe['isStart']) { - $paramContentIndex = $tokens->findBlockEnd($blockDefinitionProbe['type'], $paramContentIndex); - - continue; - } - - // if comma matched, increase arguments counter - if ($token->equals(',')) { - if ($tokens->getNextMeaningfulToken($paramContentIndex) === $closeParenthesis) { - break; // trailing ',' in function call (PHP 7.3) - } - - $arguments[$argumentsStart] = $paramContentIndex - 1; - $argumentsStart = $paramContentIndex + 1; - } - } - - $arguments[$argumentsStart] = $paramContentIndex - 1; - - return $arguments; - } - - public function getArgumentInfo(Tokens $tokens, int $argumentStart, int $argumentEnd): ArgumentAnalysis - { - $info = [ - 'default' => null, - 'name' => null, - 'name_index' => null, - 'type' => null, - 'type_index_start' => null, - 'type_index_end' => null, - ]; - - $sawName = false; - - for ($index = $argumentStart; $index <= $argumentEnd; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(FCT::T_ATTRIBUTE)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - - continue; - } - - if ($token->isGivenKind(CT::T_PROPERTY_HOOK_BRACE_OPEN)) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PROPERTY_HOOK, $index); - - continue; - } - - if ( - $token->isComment() - || $token->isWhitespace() - || $token->isGivenKind(self::ARGUMENT_INFO_SKIP_TYPES) - || $token->equals('&') - ) { - continue; - } - - if ($token->isGivenKind(\T_VARIABLE)) { - if ($sawName) { - continue; - } - $sawName = true; - $info['name_index'] = $index; - $info['name'] = $token->getContent(); - - continue; - } - - if ($token->equals('=')) { - continue; - } - - if ($sawName) { - $info['default'] .= $token->getContent(); - } else { - $info['type_index_start'] = ($info['type_index_start'] > 0) ? $info['type_index_start'] : $index; - $info['type_index_end'] = $index; - $info['type'] .= $token->getContent(); - } - } - - if (null === $info['name']) { - $info['type'] = null; - } - - return new ArgumentAnalysis( - $info['name'], - $info['name_index'], - $info['default'], - null !== $info['type'] ? new TypeAnalysis($info['type'], $info['type_index_start'], $info['type_index_end']) : null, - ); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AttributeAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AttributeAnalyzer.php deleted file mode 100644 index 7e7529b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AttributeAnalyzer.php +++ /dev/null @@ -1,210 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\AttributeAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @phpstan-import-type _AttributeItems from AttributeAnalysis - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AttributeAnalyzer -{ - private const TOKEN_KINDS_NOT_ALLOWED_IN_ATTRIBUTE = [ - ';', - '{', - [\T_ATTRIBUTE], - [\T_FUNCTION], - [\T_OPEN_TAG], - [\T_OPEN_TAG_WITH_ECHO], - [\T_PRIVATE], - [\T_PROTECTED], - [\T_PUBLIC], - [\T_RETURN], - [\T_VARIABLE], - [CT::T_ATTRIBUTE_CLOSE], - ]; - - /** - * Check if given index is an attribute declaration. - */ - public static function isAttribute(Tokens $tokens, int $index): bool - { - if ( - !$tokens[$index]->isGivenKind(\T_STRING) // checked token is not a string - || !$tokens->isAnyTokenKindsFound([FCT::T_ATTRIBUTE]) // no attributes in the tokens collection - ) { - return false; - } - - $attributeStartIndex = $tokens->getPrevTokenOfKind($index, self::TOKEN_KINDS_NOT_ALLOWED_IN_ATTRIBUTE); - if (!$tokens[$attributeStartIndex]->isGivenKind(\T_ATTRIBUTE)) { - return false; - } - - // now, between attribute start and the attribute candidate index cannot be more "(" than ")" - $count = 0; - for ($i = $attributeStartIndex + 1; $i < $index; ++$i) { - if ($tokens[$i]->equals('(')) { - ++$count; - } elseif ($tokens[$i]->equals(')')) { - --$count; - } - } - - return 0 === $count; - } - - /** - * Find all consecutive elements that start with #[ and end with ] and the attributes inside. - * - * @return non-empty-list - */ - public static function collect(Tokens $tokens, int $index): array - { - if (!$tokens[$index]->isGivenKind(\T_ATTRIBUTE)) { - throw new \InvalidArgumentException('Given index must point to an attribute.'); - } - - // Rewind to first attribute in group - while ($tokens[$prevIndex = $tokens->getPrevMeaningfulToken($index)]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $prevIndex); - } - - $elements = []; - - $openingIndex = $index; - do { - $elements[] = $element = self::collectOne($tokens, $openingIndex); - $openingIndex = $tokens->getNextMeaningfulToken($element->getEndIndex()); - } while ($tokens[$openingIndex]->isGivenKind(\T_ATTRIBUTE)); - - return $elements; - } - - /** - * Find one element that starts with #[ and ends with ] and the attributes inside. - */ - public static function collectOne(Tokens $tokens, int $index): AttributeAnalysis - { - if (!$tokens[$index]->isGivenKind(\T_ATTRIBUTE)) { - throw new \InvalidArgumentException('Given index must point to an attribute.'); - } - - $startIndex = $index; - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - // Include comments/PHPDoc if they are present - $startIndex = $tokens->getNextNonWhitespace($prevIndex); - } - - $closingIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - $endIndex = $tokens->getNextNonWhitespace($closingIndex); - - return new AttributeAnalysis( - $startIndex, - $endIndex - 1, - $index, - $closingIndex, - self::collectAttributes($tokens, $index, $closingIndex), - ); - } - - public static function determineAttributeFullyQualifiedName(Tokens $tokens, string $name, int $index): string - { - if ('\\' === $name[0]) { - return $name; - } - - if (!$tokens[$index]->isGivenKind([\T_STRING, \T_NS_SEPARATOR])) { - $index = $tokens->getNextTokenOfKind($index, [[\T_STRING], [\T_NS_SEPARATOR]]); - } - - [$namespaceAnalysis, $namespaceUseAnalyses] = NamespacesAnalyzer::collectNamespaceAnalysis($tokens, $index); - $namespace = $namespaceAnalysis->getFullName(); - $firstTokenOfName = $tokens[$index]->getContent(); - $namespaceUseAnalysis = $namespaceUseAnalyses[$firstTokenOfName] ?? false; - - if ($namespaceUseAnalysis instanceof NamespaceUseAnalysis) { - $namespace = $namespaceUseAnalysis->getFullName(); - - if ($name === $firstTokenOfName) { - return $namespace; - } - - $name = substr((string) strstr($name, '\\'), 1); - } - - return $namespace.'\\'.$name; - } - - /** - * @return _AttributeItems - */ - private static function collectAttributes(Tokens $tokens, int $index, int $closingIndex): array - { - $elements = []; - - do { - $attributeStartIndex = $index + 1; - - $nameStartIndex = $tokens->getNextTokenOfKind($index, [[\T_STRING], [\T_NS_SEPARATOR]]); - $index = $tokens->getNextTokenOfKind($attributeStartIndex, ['(', ',', [CT::T_ATTRIBUTE_CLOSE]]); - $attributeName = $tokens->generatePartialCode($nameStartIndex, $tokens->getPrevMeaningfulToken($index)); - - // Find closing parentheses, we need to do this in case there's a comma inside the parentheses - if ($tokens[$index]->equals('(')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $index = $tokens->getNextTokenOfKind($index, [',', [CT::T_ATTRIBUTE_CLOSE]]); - } - - $elements[] = [ - 'start' => $attributeStartIndex, - 'end' => $index - 1, - 'name' => $attributeName, - ]; - - $nextIndex = $index; - - // In case there's a comma right before T_ATTRIBUTE_CLOSE - if ($nextIndex < $closingIndex) { - $nextIndex = $tokens->getNextMeaningfulToken($index); - } - } while ($nextIndex < $closingIndex); - - // End last element at newline if it exists and there's no trailing comma - --$index; - while ($tokens[$index]->isWhitespace()) { - if (Preg::match('/\R/', $tokens[$index]->getContent())) { - $lastElementKey = array_key_last($elements); - $elements[$lastElementKey]['end'] = $index - 1; - - break; - } - --$index; - } - - return $elements; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php deleted file mode 100644 index 5399d19..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php +++ /dev/null @@ -1,61 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BlocksAnalyzer -{ - public function isBlock(Tokens $tokens, int $openIndex, int $closeIndex): bool - { - if (!$tokens->offsetExists($openIndex)) { - throw new \InvalidArgumentException(\sprintf('Tokex index %d for potential block opening does not exist.', $openIndex)); - } - - if (!$tokens->offsetExists($closeIndex)) { - throw new \InvalidArgumentException(\sprintf('Token index %d for potential block closure does not exist.', $closeIndex)); - } - - $blockType = $this->getBlockType($tokens[$openIndex]); - - if (null === $blockType) { - return false; - } - - return $closeIndex === $tokens->findBlockEnd($blockType, $openIndex); - } - - /** - * @return Tokens::BLOCK_TYPE_* - */ - private function getBlockType(Token $token): ?int - { - foreach (Tokens::getBlockEdgeDefinitions() as $blockType => $definition) { - if ($token->equals($definition['start'])) { - return $blockType; - } - } - - return null; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php deleted file mode 100644 index f0d39ef..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php +++ /dev/null @@ -1,89 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ClassyAnalyzer -{ - public function isClassyInvocation(Tokens $tokens, int $index): bool - { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_STRING)) { - throw new \LogicException(\sprintf('No T_STRING at given index %d, got "%s".', $index, $tokens[$index]->getName())); - } - - if ((new Analysis\TypeAnalysis($token->getContent()))->isReservedType()) { - return false; - } - - $next = $tokens->getNextMeaningfulToken($index); - $nextToken = $tokens[$next]; - - if ($nextToken->isGivenKind(\T_NS_SEPARATOR)) { - return false; - } - - if ($nextToken->isGivenKind([\T_DOUBLE_COLON, \T_ELLIPSIS, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, \T_VARIABLE])) { - return true; - } - - $prev = $tokens->getPrevMeaningfulToken($index); - - while ($tokens[$prev]->isGivenKind([CT::T_NAMESPACE_OPERATOR, \T_NS_SEPARATOR, \T_STRING])) { - $prev = $tokens->getPrevMeaningfulToken($prev); - } - - $prevToken = $tokens[$prev]; - - if ($prevToken->isGivenKind([\T_EXTENDS, \T_INSTANCEOF, \T_INSTEADOF, \T_IMPLEMENTS, \T_NEW, CT::T_NULLABLE_TYPE, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, CT::T_TYPE_COLON, CT::T_USE_TRAIT])) { - return true; - } - - if (\PHP_VERSION_ID >= 8_00_00 && $nextToken->equals(')') && $prevToken->equals('(') && $tokens[$tokens->getPrevMeaningfulToken($prev)]->isGivenKind(\T_CATCH)) { - return true; - } - - if (AttributeAnalyzer::isAttribute($tokens, $index)) { - return true; - } - - // `Foo & $bar` could be: - // - function reference parameter: function baz(Foo & $bar) {} - // - bit operator: $x = Foo & $bar; - if ($nextToken->equals('&') && $tokens[$tokens->getNextMeaningfulToken($next)]->isGivenKind(\T_VARIABLE)) { - $checkIndex = $tokens->getPrevTokenOfKind($prev + 1, [';', '{', '}', [\T_FUNCTION], [\T_OPEN_TAG], [\T_OPEN_TAG_WITH_ECHO]]); - - return $tokens[$checkIndex]->isGivenKind(\T_FUNCTION); - } - - if (!$prevToken->equals(',')) { - return false; - } - - do { - $prev = $tokens->getPrevMeaningfulToken($prev); - } while ($tokens[$prev]->equalsAny([',', [\T_NS_SEPARATOR], [\T_STRING], [CT::T_NAMESPACE_OPERATOR]])); - - return $tokens[$prev]->isGivenKind([\T_IMPLEMENTS, CT::T_USE_TRAIT]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php deleted file mode 100644 index 1103ae8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php +++ /dev/null @@ -1,365 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CommentsAnalyzer -{ - private const TYPE_HASH = 1; - private const TYPE_DOUBLE_SLASH = 2; - private const TYPE_SLASH_ASTERISK = 3; - private const SKIP_TYPES = [ - \T_PRIVATE, - \T_PROTECTED, - \T_PUBLIC, - \T_VAR, - \T_FUNCTION, - \T_FN, - \T_ABSTRACT, - \T_CONST, - \T_NAMESPACE, - \T_REQUIRE, - \T_REQUIRE_ONCE, - \T_INCLUDE, - \T_INCLUDE_ONCE, - \T_FINAL, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, - FCT::T_READONLY, - FCT::T_PUBLIC_SET, - FCT::T_PROTECTED_SET, - FCT::T_PRIVATE_SET, - ]; - - public function isHeaderComment(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->isGivenKind([\T_COMMENT, \T_DOC_COMMENT])) { - throw new \InvalidArgumentException('Given index must point to a comment.'); - } - - if (null === $tokens->getNextMeaningfulToken($index)) { - return false; - } - - $prevIndex = $tokens->getPrevNonWhitespace($index); - - if ($tokens[$prevIndex]->equals(';')) { - $braceCloseIndex = $tokens->getPrevMeaningfulToken($prevIndex); - if (!$tokens[$braceCloseIndex]->equals(')')) { - return false; - } - - $braceOpenIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $braceCloseIndex); - $declareIndex = $tokens->getPrevMeaningfulToken($braceOpenIndex); - if (!$tokens[$declareIndex]->isGivenKind(\T_DECLARE)) { - return false; - } - - $prevIndex = $tokens->getPrevNonWhitespace($declareIndex); - } - - return $tokens[$prevIndex]->isGivenKind(\T_OPEN_TAG); - } - - /** - * Check if comment at given index precedes structural element. - * - * @see https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md#3-definitions - */ - public function isBeforeStructuralElement(Tokens $tokens, int $index): bool - { - $token = $tokens[$index]; - - if (!$token->isGivenKind([\T_COMMENT, \T_DOC_COMMENT])) { - throw new \InvalidArgumentException('Given index must point to a comment.'); - } - - $nextIndex = $this->getNextTokenIndex($tokens, $index); - - if (null === $nextIndex || $tokens[$nextIndex]->equals('}')) { - return false; - } - - if ($this->isStructuralElement($tokens, $nextIndex)) { - return true; - } - - if ($this->isValidControl($tokens, $token, $nextIndex)) { - return true; - } - - if ($this->isValidVariable($tokens, $nextIndex)) { - return true; - } - - if ($this->isValidVariableAssignment($tokens, $token, $nextIndex)) { - return true; - } - - if ($tokens[$nextIndex]->isGivenKind(CT::T_USE_TRAIT)) { - return true; - } - - return false; - } - - /** - * Check if comment at given index precedes return statement. - */ - public function isBeforeReturn(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->isGivenKind([\T_COMMENT, \T_DOC_COMMENT])) { - throw new \InvalidArgumentException('Given index must point to a comment.'); - } - - $nextIndex = $this->getNextTokenIndex($tokens, $index); - - if (null === $nextIndex || $tokens[$nextIndex]->equals('}')) { - return false; - } - - return $tokens[$nextIndex]->isGivenKind(\T_RETURN); - } - - /** - * Return array of indices that are part of a comment started at given index. - * - * @param int $index T_COMMENT index - * - * @return non-empty-list - */ - public function getCommentBlockIndices(Tokens $tokens, int $index): array - { - if (!$tokens[$index]->isGivenKind(\T_COMMENT)) { - throw new \InvalidArgumentException('Given index must point to a comment.'); - } - - $commentType = $this->getCommentType($tokens[$index]->getContent()); - $indices = [$index]; - - if (self::TYPE_SLASH_ASTERISK === $commentType) { - return $indices; - } - - $count = \count($tokens); - ++$index; - - for (; $index < $count; ++$index) { - if ($tokens[$index]->isComment()) { - if ($commentType === $this->getCommentType($tokens[$index]->getContent())) { - $indices[] = $index; - - continue; - } - - break; - } - - if (!$tokens[$index]->isWhitespace() || $this->getLineBreakCount($tokens, $index, $index + 1) > 1) { - break; - } - } - - return $indices; - } - - /** - * @see https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md#3-definitions - */ - private function isStructuralElement(Tokens $tokens, int $index): bool - { - $token = $tokens[$index]; - - if ($token->isClassy() || $token->isGivenKind(self::SKIP_TYPES)) { - return true; - } - - if ($token->isGivenKind(\T_STRING)) { - $content = strtolower($token->getContent()); - - return 'get' === $content || 'set' === $content; - } - - if ($token->isGivenKind(\T_CASE)) { - $enumParent = $tokens->getPrevTokenOfKind($index, [[FCT::T_ENUM], [\T_SWITCH]]); - - return $tokens[$enumParent]->isGivenKind(FCT::T_ENUM); - } - - if ($token->isGivenKind(\T_STATIC)) { - return !$tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind(\T_DOUBLE_COLON); - } - - return false; - } - - /** - * Checks control structures (for, foreach, if, switch, while) for correct docblock usage. - * - * @param Token $docsToken docs Token - * @param int $controlIndex index of control structure Token - */ - private function isValidControl(Tokens $tokens, Token $docsToken, int $controlIndex): bool - { - if (!$tokens[$controlIndex]->isGivenKind([ - \T_FOR, - \T_FOREACH, - \T_IF, - \T_SWITCH, - \T_WHILE, - ])) { - return false; - } - - $openParenthesisIndex = $tokens->getNextMeaningfulToken($controlIndex); - $closeParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesisIndex); - $docsContent = $docsToken->getContent(); - - for ($index = $openParenthesisIndex + 1; $index < $closeParenthesisIndex; ++$index) { - $token = $tokens[$index]; - - if ( - $token->isGivenKind(\T_VARIABLE) - && str_contains($docsContent, $token->getContent()) - ) { - return true; - } - } - - return false; - } - - /** - * Checks variable assignments through `list()`, `print()` etc. calls for correct docblock usage. - * - * @param Token $docsToken docs Token - * @param int $languageConstructIndex index of variable Token - */ - private function isValidVariableAssignment(Tokens $tokens, Token $docsToken, int $languageConstructIndex): bool - { - if (!$tokens[$languageConstructIndex]->isGivenKind([ - \T_LIST, - \T_PRINT, - \T_ECHO, - CT::T_DESTRUCTURING_BRACKET_OPEN, - ])) { - return false; - } - - $endKind = $tokens[$languageConstructIndex]->isGivenKind(CT::T_DESTRUCTURING_BRACKET_OPEN) - ? [CT::T_DESTRUCTURING_BRACKET_CLOSE] - : ')'; - - $endIndex = $tokens->getNextTokenOfKind($languageConstructIndex, [$endKind]); - - $docsContent = $docsToken->getContent(); - - for ($index = $languageConstructIndex + 1; $index < $endIndex; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_VARIABLE) && str_contains($docsContent, $token->getContent())) { - return true; - } - } - - return false; - } - - /** - * Checks variable assignments for correct docblock usage. - * - * @param int $index index of variable Token - */ - private function isValidVariable(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->isGivenKind(\T_VARIABLE)) { - return false; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - - return $tokens[$nextIndex]->equalsAny([ - '=', - // arithmetic assignments - [\T_PLUS_EQUAL, '+='], - [\T_MINUS_EQUAL, '-='], - [\T_MUL_EQUAL, '*='], - [\T_DIV_EQUAL, '/='], - [\T_MOD_EQUAL, '%='], - [\T_POW_EQUAL, '**='], - // bitwise assignments - [\T_AND_EQUAL, '&='], - [\T_OR_EQUAL, '|='], - [\T_XOR_EQUAL, '^='], - [\T_SL_EQUAL, '<<='], - [\T_SR_EQUAL, '>>='], - // other assignments - [\T_COALESCE_EQUAL, '??='], - [\T_CONCAT_EQUAL, '.='], - ]); - } - - private function getCommentType(string $content): int - { - if (str_starts_with($content, '#')) { - return self::TYPE_HASH; - } - - if ('*' === $content[1]) { - return self::TYPE_SLASH_ASTERISK; - } - - return self::TYPE_DOUBLE_SLASH; - } - - private function getLineBreakCount(Tokens $tokens, int $whiteStart, int $whiteEnd): int - { - $lineCount = 0; - for ($i = $whiteStart; $i < $whiteEnd; ++$i) { - $lineCount += Preg::matchAll('/\R/u', $tokens[$i]->getContent()); - } - - return $lineCount; - } - - private function getNextTokenIndex(Tokens $tokens, int $startIndex): ?int - { - $nextIndex = $startIndex; - - do { - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - - while (null !== $nextIndex && $tokens[$nextIndex]->isGivenKind(FCT::T_ATTRIBUTE)) { - $nextIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $nextIndex); - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - } - } while (null !== $nextIndex && $tokens[$nextIndex]->equals('(')); - - return $nextIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php deleted file mode 100644 index b2bede9..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php +++ /dev/null @@ -1,318 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Analyzer\Analysis\AbstractControlCaseStructuresAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\CaseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\DefaultAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\EnumAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\MatchAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\SwitchAnalysis; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - * - * @TODO 4.0: mark @internal - */ -final class ControlCaseStructuresAnalyzer -{ - private const SUPPORTED_TYPES_WITH_CASE_OR_DEFAULT = [ - \T_SWITCH, - FCT::T_MATCH, - FCT::T_ENUM, - ]; - - /** - * @param list $types Token types of interest of which analyses must be returned - * - * @return iterable - */ - public static function findControlStructures(Tokens $tokens, array $types): iterable - { - if (\count($types) < 1) { - return; // quick skip - } - - foreach ($types as $type) { - if (!\in_array($type, self::SUPPORTED_TYPES_WITH_CASE_OR_DEFAULT, true)) { - throw new \InvalidArgumentException(\sprintf('Unexpected type "%d".', $type)); - } - } - - if (!$tokens->isAnyTokenKindsFound($types)) { - return; // quick skip - } - - $depth = -1; - - /** - * @var list, - * default: null|array{index: int, open: int}, - * alternative_syntax: bool, - * open?: int, - * end?: int, - * }> $stack - */ - $stack = []; - $isTypeOfInterest = false; - - foreach ($tokens as $index => $token) { - if ($token->isGivenKind(self::SUPPORTED_TYPES_WITH_CASE_OR_DEFAULT)) { - ++$depth; - - $stack[$depth] = [ - 'kind' => $token->getId(), - 'index' => $index, - 'brace_count' => 0, - 'cases' => [], - 'default' => null, - 'alternative_syntax' => false, - ]; - - $isTypeOfInterest = \in_array($stack[$depth]['kind'], $types, true); - - if ($token->isGivenKind(\T_SWITCH)) { - $index = $tokens->getNextMeaningfulToken($index); - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - $stack[$depth]['open'] = $tokens->getNextMeaningfulToken($index); - $stack[$depth]['alternative_syntax'] = $tokens[$stack[$depth]['open']]->equals(':'); - } elseif ($token->isGivenKind(FCT::T_MATCH)) { - $index = $tokens->getNextMeaningfulToken($index); - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - $stack[$depth]['open'] = $tokens->getNextMeaningfulToken($index); - } elseif ($token->isGivenKind(FCT::T_ENUM)) { - $stack[$depth]['open'] = $tokens->getNextTokenOfKind($index, ['{']); - } - - continue; - } - - if ($depth < 0) { - continue; - } - - \assert(isset($stack[$depth])); - - if ($token->equals('{')) { - ++$stack[$depth]['brace_count']; - - continue; - } - - if ($token->equals('}')) { - --$stack[$depth]['brace_count']; - - if (0 === $stack[$depth]['brace_count']) { - if ($stack[$depth]['alternative_syntax']) { - continue; - } - - if ($isTypeOfInterest) { - $stack[$depth]['end'] = $index; - - \assert(isset($stack[$depth]['open'])); - - yield $stack[$depth]['index'] => self::buildControlCaseStructureAnalysis($stack[$depth]); - } - - array_pop($stack); - --$depth; - - if ($depth < -1) { // @phpstan-ignore-line - throw new \RuntimeException('Analysis depth count failure.'); - } - - if (isset($stack[$depth]['kind'])) { - $isTypeOfInterest = \in_array($stack[$depth]['kind'], $types, true); - } - } - - continue; - } - - if ($tokens[$index]->isGivenKind(\T_ENDSWITCH)) { - if (!$stack[$depth]['alternative_syntax']) { - throw new \RuntimeException('Analysis syntax failure, unexpected "T_ENDSWITCH".'); - } - - if (\T_SWITCH !== $stack[$depth]['kind']) { - throw new \RuntimeException('Analysis type failure, unexpected "T_ENDSWITCH".'); - } - - if (0 !== $stack[$depth]['brace_count']) { - throw new \RuntimeException('Analysis count failure, unexpected "T_ENDSWITCH".'); - } - - $index = $tokens->getNextTokenOfKind($index, [';', [\T_CLOSE_TAG]]); - - if ($isTypeOfInterest) { - $stack[$depth]['end'] = $index; - - \assert(isset($stack[$depth]['open'])); - - yield $stack[$depth]['index'] => self::buildControlCaseStructureAnalysis($stack[$depth]); - } - - array_pop($stack); - --$depth; - - if ($depth < -1) { // @phpstan-ignore-line - throw new \RuntimeException('Analysis depth count failure ("T_ENDSWITCH").'); - } - - if (isset($stack[$depth]['kind'])) { - $isTypeOfInterest = \in_array($stack[$depth]['kind'], $types, true); - } - } - - if (!$isTypeOfInterest) { - continue; // don't bother to analyse stuff that caller is not interested in - } - - if ($token->isGivenKind(\T_CASE)) { - \assert(isset($stack[$depth]['kind'])); - - $stack[$depth]['cases'][] = ['index' => $index, 'open' => self::findCaseOpen($tokens, $stack[$depth]['kind'], $index)]; - } elseif ($token->isGivenKind(\T_DEFAULT)) { - \assert(isset($stack[$depth]['kind'])); - - if (null !== $stack[$depth]['default']) { - throw new \RuntimeException('Analysis multiple "default" found.'); - } - - $stack[$depth]['default'] = ['index' => $index, 'open' => self::findDefaultOpen($tokens, $stack[$depth]['kind'], $index)]; - } - } - } - - /** - * @param array{ - * kind: int, - * index: int, - * brace_count: int, - * cases: list, - * default: null|array{index: int, open: int}, - * alternative_syntax: bool, - * open: int, - * end: int, - * } $analysis - */ - private static function buildControlCaseStructureAnalysis(array $analysis): AbstractControlCaseStructuresAnalysis - { - $default = null === $analysis['default'] - ? null - : new DefaultAnalysis($analysis['default']['index'], $analysis['default']['open']); - - $cases = []; - - foreach ($analysis['cases'] as $case) { - $cases[$case['index']] = new CaseAnalysis($case['index'], $case['open']); - } - - sort($cases); - - if (\T_SWITCH === $analysis['kind']) { - return new SwitchAnalysis( - $analysis['index'], - $analysis['open'], - $analysis['end'], - $cases, - $default, - ); - } - - if (FCT::T_ENUM === $analysis['kind']) { - return new EnumAnalysis( - $analysis['index'], - $analysis['open'], - $analysis['end'], - $cases, - ); - } - - if (FCT::T_MATCH === $analysis['kind']) { - return new MatchAnalysis( - $analysis['index'], - $analysis['open'], - $analysis['end'], - $default, - ); - } - - throw new \InvalidArgumentException(\sprintf('Unexpected type "%d".', $analysis['kind'])); - } - - private static function findCaseOpen(Tokens $tokens, int $kind, int $index): int - { - if (\T_SWITCH === $kind) { - $ternariesCount = 0; - - --$index; - while (true) { - ++$index; - - if ($tokens[$index]->equalsAny(['(', '{'])) { // skip constructs - $type = Tokens::detectBlockType($tokens[$index]); - $index = $tokens->findBlockEnd($type['type'], $index); - - continue; - } - - if ($tokens[$index]->equals('?')) { - ++$ternariesCount; - - continue; - } - - if ($tokens[$index]->equalsAny([':', ';'])) { - if (0 === $ternariesCount) { - break; - } - - --$ternariesCount; - } - } - - return $index; - } - - if (FCT::T_ENUM === $kind) { - return $tokens->getNextTokenOfKind($index, ['=', ';']); - } - - throw new \InvalidArgumentException(\sprintf('Unexpected case for type "%d".', $kind)); - } - - private static function findDefaultOpen(Tokens $tokens, int $kind, int $index): int - { - if (\T_SWITCH === $kind) { - return $tokens->getNextTokenOfKind($index, [':', ';']); - } - - if (FCT::T_MATCH === $kind) { - return $tokens->getNextTokenOfKind($index, [[\T_DOUBLE_ARROW]]); - } - - throw new \InvalidArgumentException(\sprintf('Unexpected default for type "%d".', $kind)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php deleted file mode 100644 index 519f4c1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php +++ /dev/null @@ -1,173 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\DocBlock\TypeExpression; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\DataProviderAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @internal - * - * @phpstan-import-type _AttributeItem from \PhpCsFixer\Tokenizer\Analyzer\Analysis\AttributeAnalysis - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DataProviderAnalyzer -{ - private const REGEX_CLASS = '(?:\\\?+'.TypeExpression::REGEX_IDENTIFIER - .'(\\\\'.TypeExpression::REGEX_IDENTIFIER.')*+)'; - - /** - * @return list - */ - public function getDataProviders(Tokens $tokens, int $startIndex, int $endIndex): array - { - $fullyQualifiedNameAnalyzer = new FullyQualifiedNameAnalyzer($tokens); - - $methods = $this->getMethods($tokens, $startIndex, $endIndex); - - $dataProviders = []; - foreach ($methods as $methodIndex) { - [$attributeIndex, $docCommentIndex] = $this->getAttributeIndexAndDocCommentIndices($tokens, $methodIndex); - - if (null !== $attributeIndex) { - foreach (AttributeAnalyzer::collect($tokens, $attributeIndex) as $attributeAnalysis) { - foreach ($attributeAnalysis->getAttributes() as $attribute) { - $dataProviderNameIndex = $this->getDataProviderNameIndex($tokens, $fullyQualifiedNameAnalyzer, $attribute); - if (null === $dataProviderNameIndex) { - continue; - } - $dataProviders[substr($tokens[$dataProviderNameIndex]->getContent(), 1, -1)][] = [$dataProviderNameIndex, 0]; - } - } - } - - if (null !== $docCommentIndex) { - Preg::matchAll( - '/@dataProvider\h+(('.self::REGEX_CLASS.'::)?'.TypeExpression::REGEX_IDENTIFIER.')/', - $tokens[$docCommentIndex]->getContent(), - $matches, - \PREG_OFFSET_CAPTURE, - ); - - foreach ($matches[1] as $k => [$matchName]) { - \assert(isset($matches[0][$k])); - - $dataProviders[$matchName][] = [$docCommentIndex, $matches[0][$k][1]]; - } - } - } - - $dataProviderAnalyses = []; - foreach ($dataProviders as $dataProviderName => $dataProviderUsages) { - $lowercaseDataProviderName = strtolower($dataProviderName); - if (!\array_key_exists($lowercaseDataProviderName, $methods)) { - continue; - } - $dataProviderAnalyses[$methods[$lowercaseDataProviderName]] = new DataProviderAnalysis( - $tokens[$methods[$lowercaseDataProviderName]]->getContent(), - $methods[$lowercaseDataProviderName], - $dataProviderUsages, - ); - } - - ksort($dataProviderAnalyses); - - return array_values($dataProviderAnalyses); - } - - /** - * @return array - */ - private function getMethods(Tokens $tokens, int $startIndex, int $endIndex): array - { - $functions = []; - for ($index = $startIndex; $index < $endIndex; ++$index) { - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - continue; - } - - $functionNameIndex = $tokens->getNextNonWhitespace($index); - - if (!$tokens[$functionNameIndex]->isGivenKind(\T_STRING)) { - continue; - } - - $functions[strtolower($tokens[$functionNameIndex]->getContent())] = $functionNameIndex; - } - - return $functions; - } - - /** - * @return array{null|int, null|int} - */ - private function getAttributeIndexAndDocCommentIndices(Tokens $tokens, int $index): array - { - $attributeIndex = null; - $docCommentIndex = null; - while (!$tokens[$index]->equalsAny([';', '{', '}', [\T_OPEN_TAG]])) { - --$index; - - if ($tokens[$index]->isGivenKind(FCT::T_ATTRIBUTE)) { - $attributeIndex = $index; - } elseif ($tokens[$index]->isGivenKind(\T_DOC_COMMENT)) { - $docCommentIndex = $index; - } - } - - return [$attributeIndex, $docCommentIndex]; - } - - /** - * @param _AttributeItem $attribute - */ - private function getDataProviderNameIndex(Tokens $tokens, FullyQualifiedNameAnalyzer $fullyQualifiedNameAnalyzer, array $attribute): ?int - { - $fullyQualifiedName = $fullyQualifiedNameAnalyzer->getFullyQualifiedName( - $attribute['name'], - $tokens->getNextMeaningfulToken($attribute['start']), - NamespaceUseAnalysis::TYPE_CLASS, - ); - - // note: do not apply `DataProvider::class` here, as it would confuse `composer-dependency-analyser` to have PHPUnit as non-dev dependency - if ('PHPUnit\Framework\Attributes\DataProvider' !== $fullyQualifiedName) { - return null; - } - - $closeParenthesisIndex = $tokens->getPrevTokenOfKind($attribute['end'] + 1, [')', [\T_ATTRIBUTE]]); - if ($tokens[$closeParenthesisIndex]->isGivenKind(\T_ATTRIBUTE)) { - return null; - } - - $dataProviderNameIndex = $tokens->getPrevMeaningfulToken($closeParenthesisIndex); - if (!$tokens[$dataProviderNameIndex]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { - return null; - } - - $openParenthesisIndex = $tokens->getPrevMeaningfulToken($dataProviderNameIndex); - if (!$tokens[$openParenthesisIndex]->equals('(')) { - return null; - } - - return $dataProviderNameIndex; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FixerAnnotationAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FixerAnnotationAnalyzer.php deleted file mode 100644 index d9f5c37..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FixerAnnotationAnalyzer.php +++ /dev/null @@ -1,124 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Extracts @php-cs-fixer-* annotations from the given Tokens collection. - * - * Those annotations are controlling low-level PHP CS Fixer internal - * are looked for only at the top and at the bottom of the file. - * Any syntax of comment is allowed. - * - * @internal - * - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FixerAnnotationAnalyzer -{ - /** - * @return array> - */ - public function find(Tokens $tokens): array - { - $comments = []; - $annotations = []; - - $count = $tokens->count(); - $index = 0; - - for (0; $index < $count; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind([ - \T_OPEN_TAG, - \T_OPEN_TAG_WITH_ECHO, - \T_WHITESPACE, - ]) || $token->equals(';')) { - continue; - } - - if ($token->isGivenKind(\T_DECLARE)) { - $nextIndex = $tokens->getNextMeaningfulToken($index); - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextIndex); - - continue; - } - - if ($token->isComment()) { - $comments[] = $token->getContent(); - - continue; - } - - break; - } - - for ($indexBackwards = $count - 1; $indexBackwards > $index; --$indexBackwards) { - $token = $tokens[$indexBackwards]; - - if ($token->isGivenKind([ - \T_CLOSE_TAG, - \T_WHITESPACE, - ]) || $token->equals(';')) { - continue; - } - - if ($token->isComment()) { - $comments[] = $token->getContent(); - - continue; - } - - break; - } - - Preg::matchAll( - '/^\h*[*\/]+\h+@(php-cs-fixer-\w+\h+(?:@?[\w\/,])+)/m', - implode("\n", $comments), - $matches, - ); - - foreach ($matches[1] as $match) { - $matchParts = explode(' ', $match, 2); - \assert(2 === \count($matchParts)); - - $annotations[$matchParts[0]] ??= []; - array_push($annotations[$matchParts[0]], ...explode(',', $matchParts[1])); - } - - foreach ($annotations as $annotation => $vals) { - $duplicates = array_keys( - array_filter( - array_count_values($vals), - static fn (int $c): bool => $c > 1, - ), - ); - - if (0 !== \count($duplicates)) { - throw new \RuntimeException(\sprintf('Duplicated values found for annotation "@%s": "%s".', $annotation, implode('", "', $duplicates))); - } - - sort($vals); - $annotations[$annotation] = $vals; - } - - return $annotations; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FullyQualifiedNameAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FullyQualifiedNameAnalyzer.php deleted file mode 100644 index 530a1d8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FullyQualifiedNameAnalyzer.php +++ /dev/null @@ -1,105 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FullyQualifiedNameAnalyzer -{ - private Tokens $tokens; - - /** - * @var list - */ - private array $namespaceAnalyses = []; - - /** - * @var array> - */ - private array $namespaceUseAnalyses = []; - - public function __construct(Tokens $tokens) - { - $this->tokens = $tokens; - } - - /** - * @param NamespaceUseAnalysis::TYPE_* $importType - */ - public function getFullyQualifiedName(string $name, int $indexInNamespace, int $importType): string - { - return ltrim($this->getFullyQualifiedNameWithPossiblyLeadingSlash($name, $indexInNamespace, $importType), '\\'); - } - - /** - * @param NamespaceUseAnalysis::TYPE_* $importType - */ - private function getFullyQualifiedNameWithPossiblyLeadingSlash(string $name, int $indexInNamespace, int $importType): string - { - if ('\\' === $name[0]) { - return $name; - } - - $namespaceAnalysis = $this->getNamespaceAnalysis($indexInNamespace); - - $this->namespaceUseAnalyses[$namespaceAnalysis->getStartIndex()] ??= (new NamespaceUsesAnalyzer())->getDeclarationsInNamespace($this->tokens, $namespaceAnalysis); - \assert(isset($this->namespaceUseAnalyses[$namespaceAnalysis->getStartIndex()])); - - $declarations = []; - foreach ($this->namespaceUseAnalyses[$namespaceAnalysis->getStartIndex()] as $namespaceUseAnalysis) { - if ($namespaceUseAnalysis->getType() !== $importType) { - continue; - } - $declarations[strtolower($namespaceUseAnalysis->getShortName())] = $namespaceUseAnalysis->getFullName(); - } - - $lowercaseName = strtolower($name); - foreach ($declarations as $lowercaseShortName => $fullName) { - if ($lowercaseName === $lowercaseShortName) { - return $fullName; - } - - if (!str_starts_with($lowercaseName, $lowercaseShortName.'\\')) { - continue; - } - - return $fullName.substr($name, \strlen($lowercaseShortName)); - } - - return $namespaceAnalysis->getFullName().'\\'.$name; - } - - private function getNamespaceAnalysis(int $index): NamespaceAnalysis - { - foreach ($this->namespaceAnalyses as $namespace) { - if ($namespace->getScopeStartIndex() <= $index && $namespace->getScopeEndIndex() >= $index) { - return $namespace; - } - } - - $namespace = (new NamespacesAnalyzer())->getNamespaceAt($this->tokens, $index); - - $this->namespaceAnalyses[] = $namespace; - - return $namespace; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php deleted file mode 100644 index 54d7bd5..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php +++ /dev/null @@ -1,288 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Analyzer\Analysis\ArgumentAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FunctionsAnalyzer -{ - private const POSSIBLE_KINDS = [ - \T_DOUBLE_COLON, \T_FUNCTION, CT::T_NAMESPACE_OPERATOR, \T_NEW, CT::T_RETURN_REF, \T_STRING, \T_OBJECT_OPERATOR, FCT::T_NULLSAFE_OBJECT_OPERATOR, FCT::T_ATTRIBUTE]; - - /** - * @var array{tokens: string, imports: list, declarations: list} - */ - private array $functionsAnalysis = ['tokens' => '', 'imports' => [], 'declarations' => []]; - - public function isGlobalFunctionCall(Tokens $tokens, int $index): bool - { - return $this->isGlobalFunctionCallOrUsage($tokens, $index, true); - } - - public function isGlobalFunctionUsage(Tokens $tokens, int $index): bool - { - return $this->isGlobalFunctionCallOrUsage($tokens, $index, false); - } - - /** - * @return array - */ - public function getFunctionArguments(Tokens $tokens, int $functionIndex): array - { - $argumentsStart = $tokens->getNextTokenOfKind($functionIndex, ['(']); - $argumentsEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $argumentsStart); - $argumentAnalyzer = new ArgumentsAnalyzer(); - $arguments = []; - - foreach ($argumentAnalyzer->getArguments($tokens, $argumentsStart, $argumentsEnd) as $start => $end) { - $argumentInfo = $argumentAnalyzer->getArgumentInfo($tokens, $start, $end); - $arguments[$argumentInfo->getName()] = $argumentInfo; - } - - return $arguments; - } - - public function getFunctionReturnType(Tokens $tokens, int $methodIndex): ?TypeAnalysis - { - $argumentsStart = $tokens->getNextTokenOfKind($methodIndex, ['(']); - $argumentsEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $argumentsStart); - $typeColonIndex = $tokens->getNextMeaningfulToken($argumentsEnd); - - if (!$tokens[$typeColonIndex]->isGivenKind(CT::T_TYPE_COLON)) { - return null; - } - - $type = ''; - $typeStartIndex = $tokens->getNextMeaningfulToken($typeColonIndex); - $typeEndIndex = $typeStartIndex; - $functionBodyStart = $tokens->getNextTokenOfKind($typeColonIndex, ['{', ';', [\T_DOUBLE_ARROW]]); - - for ($i = $typeStartIndex; $i < $functionBodyStart; ++$i) { - if ($tokens[$i]->isWhitespace() || $tokens[$i]->isComment()) { - continue; - } - - $type .= $tokens[$i]->getContent(); - $typeEndIndex = $i; - } - - return new TypeAnalysis($type, $typeStartIndex, $typeEndIndex); - } - - public function isTheSameClassCall(Tokens $tokens, int $index): bool - { - if (!$tokens->offsetExists($index)) { - throw new \InvalidArgumentException(\sprintf('Token index %d does not exist.', $index)); - } - - $operatorIndex = $tokens->getPrevMeaningfulToken($index); - - if (null === $operatorIndex) { - return false; - } - - if (!$tokens[$operatorIndex]->isObjectOperator() && !$tokens[$operatorIndex]->isGivenKind(\T_DOUBLE_COLON)) { - return false; - } - - $referenceIndex = $tokens->getPrevMeaningfulToken($operatorIndex); - - if (null === $referenceIndex) { - return false; - } - - if (!$tokens[$referenceIndex]->equalsAny([[\T_VARIABLE, '$this'], [\T_STRING, 'self'], [\T_STATIC, 'static']], false)) { - return false; - } - - return $tokens[$tokens->getNextMeaningfulToken($index)]->equals('('); - } - - /** - * Important: risky because of the limited (file) scope of the tool. - */ - private function isGlobalFunctionCallOrUsage(Tokens $tokens, int $index, bool $callOnly): bool - { - if (!$tokens[$index]->isGivenKind(\T_STRING)) { - return false; - } - - $openParenthesisIndex = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$openParenthesisIndex]->equals('(')) { - return false; - } - - $previousIsNamespaceSeparator = false; - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $previousIsNamespaceSeparator = true; - $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - } - - if ($tokens[$prevIndex]->isGivenKind(self::POSSIBLE_KINDS)) { - return false; - } - - if ($callOnly && $tokens[$tokens->getNextMeaningfulToken($openParenthesisIndex)]->isGivenKind(CT::T_FIRST_CLASS_CALLABLE)) { - return false; - } - - if ($previousIsNamespaceSeparator) { - return true; - } - - $functionName = strtolower($tokens[$index]->getContent()); - - if ('set' === $functionName) { - if (!$tokens[$prevIndex]->equalsAny([[CT::T_PROPERTY_HOOK_BRACE_OPEN], ';', '}'])) { - return true; - } - $closeParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesisIndex); - $afterCloseParenthesisIndex = $tokens->getNextMeaningfulToken($closeParenthesisIndex); - if ($tokens[$afterCloseParenthesisIndex]->equalsAny(['{', [\T_DOUBLE_ARROW]])) { - return false; - } - } - - if ($tokens->isChanged() || $tokens->getCodeHash() !== $this->functionsAnalysis['tokens']) { - $this->buildFunctionsAnalysis($tokens); - } - - // figure out in which namespace we are - $scopeStartIndex = 0; - $scopeEndIndex = \count($tokens) - 1; - $inGlobalNamespace = false; - - foreach ($tokens->getNamespaceDeclarations() as $declaration) { - $scopeStartIndex = $declaration->getScopeStartIndex(); - $scopeEndIndex = $declaration->getScopeEndIndex(); - - if ($index >= $scopeStartIndex && $index <= $scopeEndIndex) { - $inGlobalNamespace = $declaration->isGlobalNamespace(); - - break; - } - } - - // check if the call is to a function declared in the same namespace as the call is done, - // if the call is already in the global namespace than declared functions are in the same - // global namespace and don't need checking - - if (!$inGlobalNamespace) { - foreach ($this->functionsAnalysis['declarations'] as $functionNameIndex) { - if ($functionNameIndex < $scopeStartIndex || $functionNameIndex > $scopeEndIndex) { - continue; - } - - if (strtolower($tokens[$functionNameIndex]->getContent()) === $functionName) { - return false; - } - } - } - - foreach ($this->functionsAnalysis['imports'] as $functionUse) { - if ($functionUse->getStartIndex() < $scopeStartIndex || $functionUse->getEndIndex() > $scopeEndIndex) { - continue; - } - - if ($functionName !== strtolower($functionUse->getShortName())) { - continue; - } - - // global import like `use function \str_repeat;` - return $functionUse->getShortName() === ltrim($functionUse->getFullName(), '\\'); - } - - if (AttributeAnalyzer::isAttribute($tokens, $index)) { - return false; - } - - return true; - } - - private function buildFunctionsAnalysis(Tokens $tokens): void - { - $this->functionsAnalysis = [ - 'tokens' => $tokens->getCodeHash(), - 'imports' => [], - 'declarations' => [], - ]; - - // find declarations - - if ($tokens->isTokenKindFound(\T_FUNCTION)) { - $end = \count($tokens); - - for ($i = 0; $i < $end; ++$i) { - // skip classy, we are looking for functions not methods - if ($tokens[$i]->isGivenKind(Token::getClassyTokenKinds())) { - $i = $tokens->getNextTokenOfKind($i, ['(', '{']); - - if ($tokens[$i]->equals('(')) { // anonymous class - $i = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $i); - $i = $tokens->getNextTokenOfKind($i, ['{']); - } - - $i = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $i); - - continue; - } - - if (!$tokens[$i]->isGivenKind(\T_FUNCTION)) { - continue; - } - - $i = $tokens->getNextMeaningfulToken($i); - - if ($tokens[$i]->isGivenKind(CT::T_RETURN_REF)) { - $i = $tokens->getNextMeaningfulToken($i); - } - - if (!$tokens[$i]->isGivenKind(\T_STRING)) { - continue; - } - - $this->functionsAnalysis['declarations'][] = $i; - } - } - - // find imported functions - - $namespaceUsesAnalyzer = new NamespaceUsesAnalyzer(); - - if ($tokens->isTokenKindFound(CT::T_FUNCTION_IMPORT)) { - $declarations = $namespaceUsesAnalyzer->getDeclarationsFromTokens($tokens); - - foreach ($declarations as $declaration) { - if ($declaration->isFunction()) { - $this->functionsAnalysis['imports'][] = $declaration; - } - } - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php deleted file mode 100644 index 70ed56a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php +++ /dev/null @@ -1,42 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class GotoLabelAnalyzer -{ - public function belongsToGoToLabel(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->equals(':')) { - return false; - } - - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$prevMeaningfulTokenIndex]->isGivenKind(\T_STRING)) { - return false; - } - - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($prevMeaningfulTokenIndex); - - return $tokens[$prevMeaningfulTokenIndex]->equalsAny([':', ';', '{', '}', [\T_OPEN_TAG]]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php deleted file mode 100644 index bdefa5b..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php +++ /dev/null @@ -1,219 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\Tokenizer\TokensAnalyzer; - -/** - * @author VeeWee - * @author Greg Korba - * - * @internal - * - * @TODO Drop `allowMultiUses` opt-in flag when all fixers are updated and can handle multi-use statements. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NamespaceUsesAnalyzer -{ - /** - * @return list - */ - public function getDeclarationsFromTokens(Tokens $tokens, bool $allowMultiUses = false): array - { - $tokenAnalyzer = new TokensAnalyzer($tokens); - $useIndices = $tokenAnalyzer->getImportUseIndexes(); - - return $this->getDeclarations($tokens, $useIndices, $allowMultiUses); - } - - /** - * @return list - */ - public function getDeclarationsInNamespace(Tokens $tokens, NamespaceAnalysis $namespace, bool $allowMultiUses = false): array - { - $namespaceUses = []; - - foreach ($this->getDeclarationsFromTokens($tokens, $allowMultiUses) as $namespaceUse) { - if ($namespaceUse->getStartIndex() >= $namespace->getScopeStartIndex() && $namespaceUse->getStartIndex() <= $namespace->getScopeEndIndex()) { - $namespaceUses[] = $namespaceUse; - } - } - - return $namespaceUses; - } - - /** - * @param list $useIndices - * - * @return list - */ - private function getDeclarations(Tokens $tokens, array $useIndices, bool $allowMultiUses = false): array - { - $uses = []; - - foreach ($useIndices as $index) { - $endIndex = $tokens->getNextTokenOfKind($index, [';', [\T_CLOSE_TAG]]); - - $declarations = $this->parseDeclarations($index, $endIndex, $tokens); - if (false === $allowMultiUses) { - $declarations = array_filter($declarations, static fn (NamespaceUseAnalysis $declaration) => !$declaration->isInMulti()); - } - - if ([] !== $declarations) { - $uses = array_merge($uses, $declarations); - } - } - - return $uses; - } - - /** - * @return list - */ - private function parseDeclarations(int $startIndex, int $endIndex, Tokens $tokens): array - { - $type = $this->determineImportType($tokens, $startIndex); - $potentialMulti = $tokens->getNextTokenOfKind($startIndex, [',', [CT::T_GROUP_IMPORT_BRACE_OPEN]]); - $multi = null !== $potentialMulti && $potentialMulti < $endIndex; - $index = $tokens->getNextTokenOfKind($startIndex, [[\T_STRING], [\T_NS_SEPARATOR]]); - $imports = []; - - while (null !== $index && $index <= $endIndex) { - $qualifiedName = $this->getNearestQualifiedName($tokens, $index); - $token = $tokens[$qualifiedName['afterIndex']]; - - if ($token->isGivenKind(CT::T_GROUP_IMPORT_BRACE_OPEN)) { - $groupStart = $groupIndex = $qualifiedName['afterIndex']; - $groupEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_GROUP_IMPORT_BRACE, $groupStart); - - while ($groupIndex < $groupEnd) { - $chunkStart = $tokens->getNextMeaningfulToken($groupIndex); - - // Finish parsing on trailing comma (no more chunks there) - if ($tokens[$chunkStart]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE)) { - break; - } - - $groupQualifiedName = $this->getNearestQualifiedName($tokens, $chunkStart); - \assert('' !== $groupQualifiedName['fullName']); - \assert('' !== $groupQualifiedName['shortName']); - $imports[] = new NamespaceUseAnalysis( - $type, - $qualifiedName['fullName'].$groupQualifiedName['fullName'], - $groupQualifiedName['shortName'], - $groupQualifiedName['aliased'], - true, - $startIndex, - $endIndex, - $chunkStart, - $tokens->getPrevMeaningfulToken($groupQualifiedName['afterIndex']), - ); - - $groupIndex = $groupQualifiedName['afterIndex']; - } - - $index = $groupIndex; - } elseif ($token->equalsAny([',', ';', [\T_CLOSE_TAG]])) { - $previousToken = $tokens->getPrevMeaningfulToken($qualifiedName['afterIndex']); - - if (!$tokens[$previousToken]->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE)) { - \assert('' !== $qualifiedName['fullName']); - \assert('' !== $qualifiedName['shortName']); - $imports[] = new NamespaceUseAnalysis( - $type, - $qualifiedName['fullName'], - $qualifiedName['shortName'], - $qualifiedName['aliased'], - $multi, - $startIndex, - $endIndex, - $multi ? $index : null, - $multi ? $previousToken : null, - ); - } - - $index = $qualifiedName['afterIndex']; - } - - $index = $tokens->getNextMeaningfulToken($index); - } - - return $imports; - } - - /** - * @return NamespaceUseAnalysis::TYPE_* - */ - private function determineImportType(Tokens $tokens, int $startIndex): int - { - $potentialType = $tokens[$tokens->getNextMeaningfulToken($startIndex)]; - - if ($potentialType->isGivenKind(CT::T_FUNCTION_IMPORT)) { - return NamespaceUseAnalysis::TYPE_FUNCTION; - } - - if ($potentialType->isGivenKind(CT::T_CONST_IMPORT)) { - return NamespaceUseAnalysis::TYPE_CONSTANT; - } - - return NamespaceUseAnalysis::TYPE_CLASS; - } - - /** - * @return array{fullName: string, shortName: string, aliased: bool, afterIndex: int} - */ - private function getNearestQualifiedName(Tokens $tokens, int $index): array - { - $fullName = $shortName = ''; - $aliased = false; - - while (null !== $index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_STRING)) { - $shortName = $token->getContent(); - if (!$aliased) { - $fullName .= $shortName; - } - } elseif ($token->isGivenKind(\T_NS_SEPARATOR)) { - $fullName .= $token->getContent(); - } elseif ($token->isGivenKind(\T_AS)) { - $aliased = true; - } elseif ($token->equalsAny([ - ',', - ';', - [CT::T_GROUP_IMPORT_BRACE_OPEN], - [CT::T_GROUP_IMPORT_BRACE_CLOSE], - [\T_CLOSE_TAG], - ])) { - break; - } - - $index = $tokens->getNextMeaningfulToken($index); - } - - return [ - 'fullName' => $fullName, - 'shortName' => $shortName, - 'aliased' => $aliased, - 'afterIndex' => $index, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php deleted file mode 100644 index 7247413..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php +++ /dev/null @@ -1,118 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NamespacesAnalyzer -{ - /** - * @return list - */ - public function getDeclarations(Tokens $tokens): array - { - $namespaces = []; - - for ($index = 1, $count = \count($tokens); $index < $count; ++$index) { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_NAMESPACE)) { - continue; - } - - $declarationEndIndex = $tokens->getNextTokenOfKind($index, [';', '{']); - $namespace = trim($tokens->generatePartialCode($index + 1, $declarationEndIndex - 1)); - $declarationParts = explode('\\', $namespace); - $shortName = end($declarationParts); - - if ($tokens[$declarationEndIndex]->equals('{')) { - $scopeEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $declarationEndIndex); - } else { - $scopeEndIndex = $tokens->getNextTokenOfKind($declarationEndIndex, [[\T_NAMESPACE]]); - if (null === $scopeEndIndex) { - $scopeEndIndex = \count($tokens); - } - --$scopeEndIndex; - } - - $namespaces[] = new NamespaceAnalysis( - $namespace, - $shortName, - $index, - $declarationEndIndex, - $index, - $scopeEndIndex, - ); - - // Continue the analysis after the end of this namespace to find the next one - $index = $scopeEndIndex; - } - - if (0 === \count($namespaces) && $tokens->isTokenKindFound(\T_OPEN_TAG)) { - $namespaces[] = new NamespaceAnalysis( - '', - '', - $openTagIndex = $tokens[0]->isGivenKind(\T_INLINE_HTML) ? 1 : 0, - $openTagIndex, - $openTagIndex, - \count($tokens) - 1, - ); - } - - return $namespaces; - } - - public function getNamespaceAt(Tokens $tokens, int $index): NamespaceAnalysis - { - if (!$tokens->offsetExists($index)) { - throw new \InvalidArgumentException(\sprintf('Token index %d does not exist.', $index)); - } - - foreach ($this->getDeclarations($tokens) as $namespace) { - if ($namespace->getScopeStartIndex() <= $index && $namespace->getScopeEndIndex() >= $index) { - return $namespace; - } - } - - throw new \LogicException(\sprintf('Unable to get the namespace at index %d.', $index)); - } - - /** - * @return array{NamespaceAnalysis, array} - */ - public static function collectNamespaceAnalysis(Tokens $tokens, int $startIndex): array - { - $namespaceAnalysis = (new self())->getNamespaceAt($tokens, $startIndex); - $namespaceUseAnalyses = (new NamespaceUsesAnalyzer())->getDeclarationsInNamespace($tokens, $namespaceAnalysis); - - $uses = []; - foreach ($namespaceUseAnalyses as $use) { - if (!$use->isClass()) { - continue; - } - - $uses[$use->getShortName()] = $use; - } - - return [$namespaceAnalysis, $uses]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/PhpUnitTestCaseAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/PhpUnitTestCaseAnalyzer.php deleted file mode 100644 index 3f0738c..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/PhpUnitTestCaseAnalyzer.php +++ /dev/null @@ -1,83 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class PhpUnitTestCaseAnalyzer -{ - /** - * Returns an indices of PHPUnit classes in reverse appearance order. - * Order is important - it's reverted, so if we inject tokens into collection, - * we do it for bottom of file first, and then to the top of the file, so we - * mitigate risk of not visiting whole collections (final indices). - * - * @return iterable array of [int start, int end] indices from later to earlier classes - */ - public function findPhpUnitClasses(Tokens $tokens): iterable - { - for ($index = $tokens->count() - 1; $index > 0; --$index) { - if (!$this->isPhpUnitClass($tokens, $index)) { - continue; - } - - $startIndex = $tokens->getNextTokenOfKind($index, ['{']); - \assert(\is_int($startIndex)); - - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $startIndex); - - yield [$startIndex, $endIndex]; - } - } - - private function isPhpUnitClass(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->isGivenKind(\T_CLASS)) { - return false; - } - - $extendsIndex = $tokens->getNextTokenOfKind($index, ['{', [\T_EXTENDS]]); - - if (!$tokens[$extendsIndex]->isGivenKind(\T_EXTENDS)) { - return false; - } - - if (Preg::match('/(?:Test|TestCase)$/', $tokens[$index]->getContent())) { - return true; - } - - while (null !== $index = $tokens->getNextMeaningfulToken($index)) { - if ($tokens[$index]->equals('{')) { - break; // end of class signature - } - - if (!$tokens[$index]->isGivenKind(\T_STRING)) { - continue; // not part of extends nor part of implements; so continue - } - - if (Preg::match('/(?:Test|TestCase)(?:Interface)?$/', $tokens[$index]->getContent())) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/RangeAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/RangeAnalyzer.php deleted file mode 100644 index e7642c3..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/RangeAnalyzer.php +++ /dev/null @@ -1,92 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class RangeAnalyzer -{ - private function __construct() - { - // cannot create instance of util. class - } - - /** - * Meaningful compare of tokens within ranges. - * - * @param array{start: int, end: int} $range1 - * @param array{start: int, end: int} $range2 - */ - public static function rangeEqualsRange(Tokens $tokens, array $range1, array $range2): bool - { - $leftStart = $range1['start']; - $leftEnd = $range1['end']; - - if ($tokens[$leftStart]->isGivenKind([\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT])) { - $leftStart = $tokens->getNextMeaningfulToken($leftStart); - } - - while ($tokens[$leftStart]->equals('(') && $tokens[$leftEnd]->equals(')')) { - $leftStart = $tokens->getNextMeaningfulToken($leftStart); - $leftEnd = $tokens->getPrevMeaningfulToken($leftEnd); - } - - $rightStart = $range2['start']; - $rightEnd = $range2['end']; - - if ($tokens[$rightStart]->isGivenKind([\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT])) { - $rightStart = $tokens->getNextMeaningfulToken($rightStart); - } - - while ($tokens[$rightStart]->equals('(') && $tokens[$rightEnd]->equals(')')) { - $rightStart = $tokens->getNextMeaningfulToken($rightStart); - $rightEnd = $tokens->getPrevMeaningfulToken($rightEnd); - } - - $arrayOpenTypes = ['[', [CT::T_ARRAY_INDEX_BRACE_OPEN]]; - $arrayCloseTypes = [']', [CT::T_ARRAY_INDEX_BRACE_CLOSE]]; - - while (true) { - $leftToken = $tokens[$leftStart]; - $rightToken = $tokens[$rightStart]; - - if ( - !$leftToken->equals($rightToken) - && !($leftToken->equalsAny($arrayOpenTypes) && $rightToken->equalsAny($arrayOpenTypes)) - && !($leftToken->equalsAny($arrayCloseTypes) && $rightToken->equalsAny($arrayCloseTypes)) - ) { - return false; - } - - $leftStart = $tokens->getNextMeaningfulToken($leftStart); - $rightStart = $tokens->getNextMeaningfulToken($rightStart); - - $reachedLeftEnd = null === $leftStart || $leftStart > $leftEnd; // reached end left or moved over - $reachedRightEnd = null === $rightStart || $rightStart > $rightEnd; // reached end right or moved over - - if (!$reachedLeftEnd && !$reachedRightEnd) { - continue; - } - - return $reachedLeftEnd && $reachedRightEnd; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ReferenceAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ReferenceAnalyzer.php deleted file mode 100644 index 7404bfd..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ReferenceAnalyzer.php +++ /dev/null @@ -1,51 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @author Kuba Werłos - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReferenceAnalyzer -{ - public function isReference(Tokens $tokens, int $index): bool - { - if ($tokens[$index]->isGivenKind(CT::T_RETURN_REF)) { - return true; - } - - if (!$tokens[$index]->equals('&')) { - return false; - } - - /** @var int $index */ - $index = $tokens->getPrevMeaningfulToken($index); - if ($tokens[$index]->equalsAny(['=', [\T_AS], [\T_CALLABLE], [\T_DOUBLE_ARROW], [CT::T_ARRAY_TYPEHINT]])) { - return true; - } - - if ($tokens[$index]->isGivenKind(\T_STRING)) { - $index = $tokens->getPrevMeaningfulToken($index); - } - - return $tokens[$index]->equalsAny(['(', ',', [\T_NS_SEPARATOR], [CT::T_NULLABLE_TYPE]]); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php deleted file mode 100644 index afa6df6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php +++ /dev/null @@ -1,73 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Analyzer\Analysis\SwitchAnalysis; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SwitchAnalyzer -{ - /** @var array> */ - private static array $cache = []; - - public static function belongsToSwitch(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->equals(':')) { - return false; - } - - $collectionHash = $tokens->getCollectionHash(); - - if (!\array_key_exists($collectionHash, self::$cache)) { - self::$cache[$collectionHash] = self::getColonIndicesForSwitch(clone $tokens); - } - - $arr = self::$cache[$collectionHash]; - - return \in_array($index, $arr, true); - } - - /** - * @return list - */ - private static function getColonIndicesForSwitch(Tokens $tokens): array - { - $colonIndices = []; - - /** @var SwitchAnalysis $analysis */ - foreach (ControlCaseStructuresAnalyzer::findControlStructures($tokens, [\T_SWITCH]) as $analysis) { - if ($tokens[$analysis->getOpenIndex()]->equals(':')) { - $colonIndices[] = $analysis->getOpenIndex(); - } - - foreach ($analysis->getCases() as $case) { - $colonIndices[] = $case->getColonIndex(); - } - - $defaultAnalysis = $analysis->getDefaultAnalysis(); - - if (null !== $defaultAnalysis) { - $colonIndices[] = $defaultAnalysis->getColonIndex(); - } - } - - return $colonIndices; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php deleted file mode 100644 index 55098a4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php +++ /dev/null @@ -1,54 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Analyzer; - -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class WhitespacesAnalyzer -{ - public static function detectIndent(Tokens $tokens, int $index): string - { - while (true) { - $whitespaceIndex = $tokens->getPrevTokenOfKind($index, [[\T_WHITESPACE]]); - - if (null === $whitespaceIndex) { - return ''; - } - - $whitespaceToken = $tokens[$whitespaceIndex]; - - if (str_contains($whitespaceToken->getContent(), "\n")) { - break; - } - - $prevToken = $tokens[$whitespaceIndex - 1]; - - if ($prevToken->isGivenKind([\T_OPEN_TAG, \T_COMMENT]) && "\n" === substr($prevToken->getContent(), -1)) { - break; - } - - $index = $whitespaceIndex; - } - - $explodedContent = explode("\n", $whitespaceToken->getContent()); - - return end($explodedContent); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php deleted file mode 100644 index 593e6b8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php +++ /dev/null @@ -1,173 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer; - -/** - * @author Dariusz Rumiński - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class CT -{ - /** @deprecated use T_ARRAY_INDEX_BRACE_CLOSE instead */ - public const T_ARRAY_INDEX_CURLY_BRACE_CLOSE = self::T_ARRAY_INDEX_BRACE_CLOSE; - public const T_ARRAY_INDEX_BRACE_CLOSE = 10_001; - - /** @deprecated use T_ARRAY_INDEX_BRACE_OPEN instead */ - public const T_ARRAY_INDEX_CURLY_BRACE_OPEN = self::T_ARRAY_INDEX_BRACE_OPEN; - public const T_ARRAY_INDEX_BRACE_OPEN = 10_002; - - /** @deprecated use T_ARRAY_BRACKET_CLOSE instead */ - public const T_ARRAY_SQUARE_BRACE_CLOSE = self::T_ARRAY_BRACKET_CLOSE; - public const T_ARRAY_BRACKET_CLOSE = 10_003; - - /** @deprecated use T_ARRAY_BRACKET_OPEN instead */ - public const T_ARRAY_SQUARE_BRACE_OPEN = self::T_ARRAY_BRACKET_OPEN; - public const T_ARRAY_BRACKET_OPEN = 10_004; - - public const T_ARRAY_TYPEHINT = 10_005; - - /** @deprecated use T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE instead */ - public const T_BRACE_CLASS_INSTANTIATION_CLOSE = self::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE; - public const T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE = 10_006; - - /** @deprecated use T_CLASS_INSTANTIATION_PARENTHESIS_OPEN instead */ - public const T_BRACE_CLASS_INSTANTIATION_OPEN = self::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN; - public const T_CLASS_INSTANTIATION_PARENTHESIS_OPEN = 10_007; - - public const T_CLASS_CONSTANT = 10_008; - - public const T_CONST_IMPORT = 10_009; - - public const T_CURLY_CLOSE = 10_010; // We explicitly use CURLY part in name to mimic built-in \T_CURLY_OPEN - - /** @deprecated use T_DESTRUCTURING_BRACKET_CLOSE instead */ - public const T_DESTRUCTURING_SQUARE_BRACE_CLOSE = self::T_DESTRUCTURING_BRACKET_CLOSE; - public const T_DESTRUCTURING_BRACKET_CLOSE = 10_011; - - /** @deprecated use T_DESTRUCTURING_BRACKET_OPEN instead */ - public const T_DESTRUCTURING_SQUARE_BRACE_OPEN = self::T_DESTRUCTURING_BRACKET_OPEN; - public const T_DESTRUCTURING_BRACKET_OPEN = 10_012; - - public const T_DOLLAR_CLOSE_CURLY_BRACES = 10_013; // We explicitly use CURLY part in name to mimic built-in \T_DOLLAR_OPEN_CURLY_BRACES - - public const T_DYNAMIC_PROP_BRACE_CLOSE = 10_014; - - public const T_DYNAMIC_PROP_BRACE_OPEN = 10_015; - - public const T_DYNAMIC_VAR_BRACE_CLOSE = 10_016; - - public const T_DYNAMIC_VAR_BRACE_OPEN = 10_017; - - public const T_FUNCTION_IMPORT = 10_018; - - public const T_GROUP_IMPORT_BRACE_CLOSE = 10_019; - - public const T_GROUP_IMPORT_BRACE_OPEN = 10_020; - - public const T_NAMESPACE_OPERATOR = 10_021; - - public const T_NULLABLE_TYPE = 10_022; - - public const T_RETURN_REF = 10_023; - - public const T_TYPE_ALTERNATION = 10_024; - - public const T_TYPE_COLON = 10_025; - - public const T_USE_LAMBDA = 10_026; - - public const T_USE_TRAIT = 10_027; - - public const T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC = 10_028; - - public const T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED = 10_029; - - public const T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE = 10_030; - - public const T_ATTRIBUTE_CLOSE = 10_031; // We explicitly skip BRACKET part in name to mimic built-in \T_ATTRIBUTE - - public const T_NAMED_ARGUMENT_NAME = 10_032; - - public const T_NAMED_ARGUMENT_COLON = 10_033; - - public const T_FIRST_CLASS_CALLABLE = 10_034; - - public const T_TYPE_INTERSECTION = 10_035; - - public const T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN = 10_036; - - public const T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE = 10_037; - - /** @deprecated use T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_OPEN instead */ - public const T_DYNAMIC_CLASS_CONSTANT_FETCH_CURLY_BRACE_OPEN = self::T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_OPEN; - public const T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_OPEN = 10_038; - - /** @deprecated use T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_CLOSE instead */ - public const T_DYNAMIC_CLASS_CONSTANT_FETCH_CURLY_BRACE_CLOSE = self::T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_CLOSE; - public const T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_CLOSE = 10_039; - - public const T_PROPERTY_HOOK_BRACE_OPEN = 10_040; - public const T_PROPERTY_HOOK_BRACE_CLOSE = 10_041; - - private function __construct() {} - - /** - * Get name for custom token. - * - * @param int $value custom token value - * - * @return non-empty-string - */ - public static function getName(int $value): string - { - if (!self::has($value)) { - throw new \InvalidArgumentException(\sprintf('No custom token was found for "%s".', $value)); - } - - $tokens = self::getMapById(); - - \assert(isset($tokens[$value])); - - return 'CT::'.$tokens[$value]; - } - - /** - * Check if given custom token exists. - * - * @param int $value custom token value - */ - public static function has(int $value): bool - { - $tokens = self::getMapById(); - - return isset($tokens[$value]); - } - - /** - * @return array - */ - private static function getMapById(): array - { - static $constants; - - if (null === $constants) { - $reflection = new \ReflectionClass(self::class); - $constants = array_flip($reflection->getConstants()); - } - - return $constants; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/FCT.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/FCT.php deleted file mode 100644 index b6f7cd8..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/FCT.php +++ /dev/null @@ -1,57 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer; - -/** - * Forward Compatibility Tokens. - * - * Class containing tokens that are not present in the lowest supported PHP version, - * so the code can always use the class constant, instead of checking if the constant is defined - * - * @TODO PHP 8.0+, when mentioned PHP version is required, remove the related consts - * @TODO PHP 8.1+, when mentioned PHP version is required, remove the related consts - * @TODO PHP 8.4+, when mentioned PHP version is required, remove the related consts - * @TODO PHP 8.5+, when mentioned PHP version is required, remove the related consts - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FCT -{ - // PHP 8.0+ - public const T_ATTRIBUTE = \PHP_VERSION_ID >= 8_00_00 ? \T_ATTRIBUTE : -801; - public const T_MATCH = \PHP_VERSION_ID >= 8_00_00 ? \T_MATCH : -802; - public const T_NULLSAFE_OBJECT_OPERATOR = \PHP_VERSION_ID >= 8_00_00 ? \T_NULLSAFE_OBJECT_OPERATOR : -803; - public const T_NAME_FULLY_QUALIFIED = \PHP_VERSION_ID >= 8_00_00 ? \T_NAME_FULLY_QUALIFIED : -804; - public const T_NAME_QUALIFIED = \PHP_VERSION_ID >= 8_00_00 ? \T_NAME_QUALIFIED : -805; - public const T_NAME_RELATIVE = \PHP_VERSION_ID >= 8_00_00 ? \T_NAME_RELATIVE : -806; - - // PHP 8.1+ - public const T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG = \PHP_VERSION_ID >= 8_01_00 ? \T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG : -811; - public const T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG = \PHP_VERSION_ID >= 8_01_00 ? \T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG : -812; - public const T_ENUM = \PHP_VERSION_ID >= 8_01_00 ? \T_ENUM : -813; - public const T_READONLY = \PHP_VERSION_ID >= 8_01_00 ? \T_READONLY : -814; - - // PHP 8.4+ - public const T_PRIVATE_SET = \PHP_VERSION_ID >= 8_04_00 ? \T_PRIVATE_SET : -841; - public const T_PROTECTED_SET = \PHP_VERSION_ID >= 8_04_00 ? \T_PROTECTED_SET : -842; - public const T_PUBLIC_SET = \PHP_VERSION_ID >= 8_04_00 ? \T_PUBLIC_SET : -843; - public const T_PROPERTY_C = \PHP_VERSION_ID >= 8_04_00 ? \T_PROPERTY_C : -844; - - // PHP 8.5+ - public const T_PIPE = \PHP_VERSION_ID >= 8_05_00 ? \T_PIPE : -851; - public const T_VOID_CAST = \PHP_VERSION_ID >= 8_05_00 ? \T_VOID_CAST : -852; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php deleted file mode 100644 index 6fa28f4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php +++ /dev/null @@ -1,111 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Processor; - -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; -use PhpCsFixer\WhitespacesFixerConfig; - -/** - * @author Greg Korba - * - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ImportProcessor -{ - private WhitespacesFixerConfig $whitespacesConfig; - - public function __construct(WhitespacesFixerConfig $whitespacesConfig) - { - $this->whitespacesConfig = $whitespacesConfig; - } - - /** - * @param array{ - * const?: array, - * class?: array, - * function?: array - * } $imports - */ - public function insertImports(Tokens $tokens, array $imports, int $atIndex): void - { - $lineEnding = $this->whitespacesConfig->getLineEnding(); - - $prevIndex = $tokens->getPrevMeaningfulToken($atIndex); - if (null !== $prevIndex && $tokens[$prevIndex]->isGivenKind(\T_OPEN_TAG_WITH_ECHO)) { - $tokens->insertAt($prevIndex, Tokens::fromCode("")); - $atIndex = $prevIndex + 1; - } - - if (!$tokens[$atIndex]->isWhitespace() || !str_contains($tokens[$atIndex]->getContent(), "\n")) { - $tokens->insertAt($atIndex, new Token([\T_WHITESPACE, $lineEnding])); - } - - foreach ($imports as $type => $typeImports) { - sort($typeImports); - - $items = []; - - foreach ($typeImports as $name) { - $items = array_merge($items, [ - new Token([\T_WHITESPACE, $lineEnding]), - new Token([\T_USE, 'use']), - new Token([\T_WHITESPACE, ' ']), - ]); - - if ('const' === $type) { - $items[] = new Token([CT::T_CONST_IMPORT, 'const']); - $items[] = new Token([\T_WHITESPACE, ' ']); - } elseif ('function' === $type) { - $items[] = new Token([CT::T_FUNCTION_IMPORT, 'function']); - $items[] = new Token([\T_WHITESPACE, ' ']); - } - - $items = array_merge($items, self::tokenizeName($name)); - $items[] = new Token(';'); - } - - $tokens->insertAt($atIndex, $items); - } - } - - /** - * @param non-empty-string $name - * - * @return list - */ - public static function tokenizeName(string $name): array - { - $parts = explode('\\', $name); - $newTokens = []; - - if ('' === $parts[0]) { - $newTokens[] = new Token([\T_NS_SEPARATOR, '\\']); - array_shift($parts); - } - - foreach ($parts as $part) { - $newTokens[] = new Token([\T_STRING, $part]); - $newTokens[] = new Token([\T_NS_SEPARATOR, '\\']); - } - - array_pop($newTokens); - - return $newTokens; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php deleted file mode 100644 index ebfba79..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php +++ /dev/null @@ -1,528 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer; - -use PhpCsFixer\Future; - -/** - * Representation of single token. - * As a token prototype you should understand a single element generated by token_get_all. - * Also, this class exposes PHPStan types. (hint: string in those types shall ideally not be empty - yet we are not there yet). - * - * @phpstan-type _PhpTokenKind int|string - * @phpstan-type _PhpTokenArray array{0: int, 1: string, 2?: int} - * @phpstan-type _PhpTokenArrayPartial array{0: int, 1?: string, 2?: int} - * @phpstan-type _PhpTokenPrototype _PhpTokenArray|string - * @phpstan-type _PhpTokenPrototypePartial _PhpTokenArrayPartial|string - * - * @author Dariusz Rumiński - * - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Token -{ - /** - * Content of token prototype. - */ - private string $content; - - /** - * ID of token prototype, if available. - */ - private ?int $id; - - /** - * If token prototype is an array. - */ - private bool $isArray; - - /** - * @param _PhpTokenPrototype $token token prototype - */ - public function __construct($token) - { - if (\is_array($token)) { - if (!\is_int($token[0])) { - throw new \InvalidArgumentException(\sprintf( - 'Id must be an int, got "%s".', - get_debug_type($token[0]), - )); - } - - if (!\is_string($token[1])) { - throw new \InvalidArgumentException(\sprintf( - 'Content must be a string, got "%s".', - get_debug_type($token[1]), - )); - } - - \assert(!isset($token[2]) || \is_int($token[2])); // only assertion as we do not use the value anywhere - - if ('' === $token[1]) { - throw new \InvalidArgumentException('Cannot set empty content for id-based Token.'); - } - - $this->isArray = true; - $this->id = $token[0]; - $this->content = $token[1]; - } elseif (\is_string($token)) { - $this->isArray = false; - $this->id = null; - $this->content = $token; - } else { - throw new \InvalidArgumentException(\sprintf('Cannot recognize input value as valid Token prototype, got "%s".', get_debug_type($token))); - } - } - - /** - * @return non-empty-list - */ - public static function getCastTokenKinds(): array - { - return [\T_ARRAY_CAST, \T_BOOL_CAST, \T_DOUBLE_CAST, \T_INT_CAST, \T_OBJECT_CAST, \T_STRING_CAST, \T_UNSET_CAST, FCT::T_VOID_CAST]; - } - - /** - * Get classy tokens kinds: T_ENUM, T_CLASS, T_INTERFACE and T_TRAIT. - * - * @return non-empty-list - */ - public static function getClassyTokenKinds(): array - { - return [\T_CLASS, \T_TRAIT, \T_INTERFACE, FCT::T_ENUM]; - } - - /** - * Get object operator tokens kinds: T_OBJECT_OPERATOR and (if available) T_NULLSAFE_OBJECT_OPERATOR. - * - * @return non-empty-list - */ - public static function getObjectOperatorKinds(): array - { - return [\T_OBJECT_OPERATOR, FCT::T_NULLSAFE_OBJECT_OPERATOR]; - } - - /** - * Check if token is equals to given one. - * - * If tokens are arrays, then only keys defined in parameter token are checked. - * - * @param _PhpTokenPrototypePartial|Token $other token or it's prototype - * @param bool $caseSensitive perform a case sensitive comparison - */ - public function equals($other, bool $caseSensitive = true): bool - { - if ('&' === $other) { - return '&' === $this->content && (null === $this->id || $this->isGivenKind([FCT::T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG, FCT::T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG])); - } - if (null === $this->id && '&' === $this->content) { - return $other instanceof self && '&' === $other->content && (null === $other->id || $other->isGivenKind([FCT::T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG, FCT::T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG])); - } - - if ($other instanceof self) { - // Inlined getPrototype() on this very hot path. - // We access the private properties of $other directly to save function call overhead. - // This is only possible because $other is of the same class as `self`. - if (!$other->isArray) { - $otherPrototype = $other->content; - } else { - $otherPrototype = [ - $other->id, - $other->content, - ]; - } - } else { - $otherPrototype = $other; - } - - if ($this->isArray !== \is_array($otherPrototype)) { - return false; - } - - if (!$this->isArray) { - return $this->content === $otherPrototype; - } - - if ($this->id !== $otherPrototype[0]) { - return false; - } - - if (isset($otherPrototype[1])) { - if ($caseSensitive) { - if ($this->content !== $otherPrototype[1]) { - return false; - } - } elseif (0 !== strcasecmp($this->content, $otherPrototype[1])) { - return false; - } - } - - \assert(!isset($otherPrototype[2]) || \is_int($otherPrototype[2])); // only assertion as we do not use the value anywhere - - // detect unknown keys - unset($otherPrototype[0], $otherPrototype[1]); - - return [] === $otherPrototype; - } - - /** - * Check if token is equals to one of given. - * - * @param list<_PhpTokenPrototypePartial|Token> $others array of tokens or token prototypes - * @param bool $caseSensitive perform a case sensitive comparison - */ - public function equalsAny(array $others, bool $caseSensitive = true): bool - { - foreach ($others as $other) { - if ($this->equals($other, $caseSensitive)) { - return true; - } - } - - return false; - } - - /** - * A helper method used to find out whether a certain input token has to be case-sensitively matched. - * - * @param array|bool $caseSensitive global case sensitiveness or an array of booleans, whose keys should match - * the ones used in $sequence. If any is missing, the default case-sensitive - * comparison is used - * @param int $key the key of the token that has to be looked up - * - * @deprecated - */ - public static function isKeyCaseSensitive($caseSensitive, int $key): bool - { - Future::triggerDeprecation(new \InvalidArgumentException(\sprintf( - 'Method "%s" is deprecated and will be removed in the next major version.', - __METHOD__, - ))); - - if (\is_array($caseSensitive)) { - return $caseSensitive[$key] ?? true; - } - - return $caseSensitive; - } - - /** - * @return array{int, non-empty-string}|string - */ - public function getPrototype() - { - if (!$this->isArray) { - return $this->content; - } - - \assert('' !== $this->content); - - return [ - $this->id, - $this->content, - ]; - } - - /** - * Get token's content. - * - * It shall be used only for getting the content of token, not for checking it against excepted value. - */ - public function getContent(): string - { - return $this->content; - } - - /** - * Get token's id. - * - * It shall be used only for getting the internal id of token, not for checking it against excepted value. - */ - public function getId(): ?int - { - return $this->id; - } - - /** - * Get token's name. - * - * It shall be used only for getting the name of token, not for checking it against excepted value. - * - * @return null|non-empty-string token name - */ - public function getName(): ?string - { - if (null === $this->id) { - return null; - } - - return self::getNameForId($this->id); - } - - /** - * Get token's name. - * - * It shall be used only for getting the name of token, not for checking it against excepted value. - * - * @return null|non-empty-string token name - */ - public static function getNameForId(int $id): ?string - { - if (CT::has($id)) { - return CT::getName($id); - } - - $name = token_name($id); - - return 'UNKNOWN' === $name ? null : $name; - } - - /** - * Generate array containing all keywords that exists in PHP version in use. - * - * @return non-empty-list - */ - public static function getKeywords(): array - { - static $keywords = null; - - if (null === $keywords) { - $keywords = self::getTokenKindsForNames(['T_ABSTRACT', 'T_ARRAY', 'T_AS', 'T_BREAK', 'T_CALLABLE', 'T_CASE', - 'T_CATCH', 'T_CLASS', 'T_CLONE', 'T_CONST', 'T_CONTINUE', 'T_DECLARE', 'T_DEFAULT', 'T_DO', - 'T_ECHO', 'T_ELSE', 'T_ELSEIF', 'T_EMPTY', 'T_ENDDECLARE', 'T_ENDFOR', 'T_ENDFOREACH', - 'T_ENDIF', 'T_ENDSWITCH', 'T_ENDWHILE', 'T_EVAL', 'T_EXIT', 'T_EXTENDS', 'T_FINAL', - 'T_FINALLY', 'T_FN', 'T_FOR', 'T_FOREACH', 'T_FUNCTION', 'T_GLOBAL', 'T_GOTO', 'T_HALT_COMPILER', - 'T_IF', 'T_IMPLEMENTS', 'T_INCLUDE', 'T_INCLUDE_ONCE', 'T_INSTANCEOF', 'T_INSTEADOF', - 'T_INTERFACE', 'T_ISSET', 'T_LIST', 'T_LOGICAL_AND', 'T_LOGICAL_OR', 'T_LOGICAL_XOR', - 'T_NAMESPACE', 'T_NEW', 'T_PRINT', 'T_PRIVATE', 'T_PROTECTED', 'T_PUBLIC', 'T_REQUIRE', - 'T_REQUIRE_ONCE', 'T_RETURN', 'T_STATIC', 'T_SWITCH', 'T_THROW', 'T_TRAIT', 'T_TRY', - 'T_UNSET', 'T_USE', 'T_VAR', 'T_WHILE', 'T_YIELD', 'T_YIELD_FROM', - ]) + [ - CT::T_ARRAY_TYPEHINT => CT::T_ARRAY_TYPEHINT, - CT::T_CLASS_CONSTANT => CT::T_CLASS_CONSTANT, - CT::T_CONST_IMPORT => CT::T_CONST_IMPORT, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE => CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED => CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC => CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, - CT::T_FUNCTION_IMPORT => CT::T_FUNCTION_IMPORT, - CT::T_NAMESPACE_OPERATOR => CT::T_NAMESPACE_OPERATOR, - CT::T_USE_LAMBDA => CT::T_USE_LAMBDA, - CT::T_USE_TRAIT => CT::T_USE_TRAIT, - FCT::T_ENUM => FCT::T_ENUM, - FCT::T_MATCH => FCT::T_MATCH, - FCT::T_PRIVATE_SET => FCT::T_PRIVATE_SET, - FCT::T_PROTECTED_SET => FCT::T_PROTECTED_SET, - FCT::T_PUBLIC_SET => FCT::T_PUBLIC_SET, - FCT::T_READONLY => FCT::T_READONLY, - ]; - } - - return $keywords; - } - - /** - * Generate array containing all predefined constants that exists in PHP version in use. - * - * @return non-empty-array - * - * @see https://php.net/manual/en/language.constants.predefined.php - */ - public static function getMagicConstants(): array - { - static $magicConstants = null; - - if (null === $magicConstants) { - $magicConstants = self::getTokenKindsForNames(['T_CLASS_C', 'T_DIR', 'T_FILE', 'T_FUNC_C', 'T_LINE', 'T_METHOD_C', 'T_NS_C', 'T_TRAIT_C']); - } - - return $magicConstants; - } - - /** - * Check if token prototype is an array. - * - * @return bool is array - * - * @phpstan-assert-if-true !=null $this->getId() - * @phpstan-assert-if-true !='' $this->getContent() - */ - public function isArray(): bool - { - return $this->isArray; - } - - /** - * Check if token is one of type cast tokens. - * - * @phpstan-assert-if-true !='' $this->getContent() - */ - public function isCast(): bool - { - return $this->isGivenKind(self::getCastTokenKinds()); - } - - /** - * Check if token is one of classy tokens: T_CLASS, T_INTERFACE, T_TRAIT or T_ENUM. - * - * @phpstan-assert-if-true !='' $this->getContent() - */ - public function isClassy(): bool - { - return $this->isGivenKind(self::getClassyTokenKinds()); - } - - /** - * Check if token is one of comment tokens: T_COMMENT or T_DOC_COMMENT. - * - * @phpstan-assert-if-true !='' $this->getContent() - */ - public function isComment(): bool - { - return $this->isGivenKind([\T_COMMENT, \T_DOC_COMMENT]); - } - - /** - * Check if token is one of object operator tokens: T_OBJECT_OPERATOR or T_NULLSAFE_OBJECT_OPERATOR. - * - * @phpstan-assert-if-true !='' $this->getContent() - */ - public function isObjectOperator(): bool - { - return $this->isGivenKind(self::getObjectOperatorKinds()); - } - - /** - * Check if token is one of given kind. - * - * @param int|list $possibleKind kind or array of kinds - * - * @phpstan-assert-if-true !=null $this->getId() - * @phpstan-assert-if-true !='' $this->getContent() - */ - public function isGivenKind($possibleKind): bool - { - return $this->isArray && (\is_array($possibleKind) ? \in_array($this->id, $possibleKind, true) : $this->id === $possibleKind); - } - - /** - * Check if token is a keyword. - * - * @phpstan-assert-if-true !='' $this->getContent() - */ - public function isKeyword(): bool - { - $keywords = self::getKeywords(); - - return $this->isArray && isset($keywords[$this->id]); - } - - /** - * Check if token is a native PHP constant: true, false or null. - * - * @phpstan-assert-if-true !='' $this->getContent() - */ - public function isNativeConstant(): bool - { - return $this->isArray && \in_array(strtolower($this->content), ['true', 'false', 'null'], true); - } - - /** - * Returns if the token is of a Magic constants type. - * - * @phpstan-assert-if-true !='' $this->getContent() - * - * @see https://php.net/manual/en/language.constants.predefined.php - */ - public function isMagicConstant(): bool - { - $magicConstants = self::getMagicConstants(); - - return $this->isArray && isset($magicConstants[$this->id]); - } - - /** - * Check if token is whitespace. - * - * @param null|string $whitespaces whitespace characters, default is " \t\n\r\0\x0B" - */ - public function isWhitespace(?string $whitespaces = " \t\n\r\0\x0B"): bool - { - if (null === $whitespaces) { - $whitespaces = " \t\n\r\0\x0B"; - } - - if ($this->isArray && !$this->isGivenKind(\T_WHITESPACE)) { - return false; - } - - return '' === trim($this->content, $whitespaces); - } - - /** - * @return array{ - * id: null|int, - * name: null|non-empty-string, - * content: string, - * isArray: bool, - * changed: bool, - * } - */ - public function toArray(): array - { - return [ - 'id' => $this->id, - 'name' => $this->getName(), - 'content' => $this->content, - 'isArray' => $this->isArray, - 'changed' => false, // @TODO v4: remove index - ]; - } - - /** - * @return non-empty-string - */ - public function toJson(): string - { - try { - return json_encode($this->toArray(), \JSON_THROW_ON_ERROR | \JSON_PRETTY_PRINT | \JSON_NUMERIC_CHECK); - } catch (\JsonException $e) { - return json_encode( - [ - 'errorDescription' => 'Cannot encode Tokens to JSON.', - 'rawErrorMessage' => $e->getMessage(), - ], - \JSON_THROW_ON_ERROR | \JSON_PRETTY_PRINT | \JSON_NUMERIC_CHECK, - ); - } - } - - /** - * @param non-empty-list $tokenNames - * - * @return non-empty-array - */ - private static function getTokenKindsForNames(array $tokenNames): array - { - $keywords = []; - foreach ($tokenNames as $keywordName) { - $keyword = \constant($keywordName); - $keywords[$keyword] = $keyword; - } - - return $keywords; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php deleted file mode 100644 index 0d18a41..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php +++ /dev/null @@ -1,1657 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer; - -use PhpCsFixer\Console\Application; -use PhpCsFixer\Future; -use PhpCsFixer\Hasher; -use PhpCsFixer\Preg; -use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis; -use PhpCsFixer\Tokenizer\Analyzer\NamespacesAnalyzer; - -/** - * Collection of code tokens. - * - * Its role is to provide the ability to manage collection and navigate through it. - * - * As a token prototype you should understand a single element generated by token_get_all. - * - * @extends \SplFixedArray - * - * `SplFixedArray` uses `T|null` in return types because value can be null if an offset is unset or if the size does not match the number of elements. - * But our class takes care of it and always ensures correct size and indexes, so that these methods never return `null` instead of `Token`. - * - * @method Token offsetGet($offset) - * @method \Iterator getIterator() - * @method array toArray() - * - * @phpstan-import-type _PhpTokenKind from Token - * @phpstan-import-type _PhpTokenArray from Token - * @phpstan-import-type _PhpTokenArrayPartial from Token - * @phpstan-import-type _PhpTokenPrototype from Token - * @phpstan-import-type _PhpTokenPrototypePartial from Token - * - * @author Dariusz Rumiński - * - * @final - * - * @TODO 4.0: mark as final - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -class Tokens extends \SplFixedArray -{ - /** @deprecated use BLOCK_TYPE_PARENTHESIS instead */ - public const BLOCK_TYPE_PARENTHESIS_BRACE = self::BLOCK_TYPE_PARENTHESIS; // @phpstan-ignore shipmonk.deadConstant - public const BLOCK_TYPE_PARENTHESIS = 1; - - /** @deprecated use BLOCK_TYPE_BRACE instead */ - public const BLOCK_TYPE_CURLY_BRACE = self::BLOCK_TYPE_BRACE; // @phpstan-ignore shipmonk.deadConstant - public const BLOCK_TYPE_BRACE = 2; - - /** @deprecated use BLOCK_TYPE_INDEX_BRACKET instead */ - public const BLOCK_TYPE_INDEX_SQUARE_BRACE = self::BLOCK_TYPE_INDEX_BRACKET; // @phpstan-ignore shipmonk.deadConstant - public const BLOCK_TYPE_INDEX_BRACKET = 3; - - /** @deprecated use BLOCK_TYPE_ARRAY_BRACKET instead */ - public const BLOCK_TYPE_ARRAY_SQUARE_BRACE = self::BLOCK_TYPE_ARRAY_BRACKET; // @phpstan-ignore shipmonk.deadConstant - public const BLOCK_TYPE_ARRAY_BRACKET = 4; - - public const BLOCK_TYPE_DYNAMIC_PROP_BRACE = 5; - - public const BLOCK_TYPE_DYNAMIC_VAR_BRACE = 6; - - /** @deprecated use BLOCK_TYPE_INDEX_BRACE instead */ - public const BLOCK_TYPE_ARRAY_INDEX_CURLY_BRACE = self::BLOCK_TYPE_INDEX_BRACE; // @phpstan-ignore shipmonk.deadConstant - public const BLOCK_TYPE_INDEX_BRACE = 7; - - public const BLOCK_TYPE_GROUP_IMPORT_BRACE = 8; - - /** @deprecated use BLOCK_TYPE_DESTRUCTURING_BRACKET instead */ - public const BLOCK_TYPE_DESTRUCTURING_SQUARE_BRACE = self::BLOCK_TYPE_DESTRUCTURING_BRACKET; // @phpstan-ignore shipmonk.deadConstant - public const BLOCK_TYPE_DESTRUCTURING_BRACKET = 9; - - /** @deprecated use BLOCK_TYPE_CLASS_INSTANTIATION_PARENTHESIS instead */ - public const BLOCK_TYPE_BRACE_CLASS_INSTANTIATION = self::BLOCK_TYPE_CLASS_INSTANTIATION_PARENTHESIS; // @phpstan-ignore shipmonk.deadConstant - public const BLOCK_TYPE_CLASS_INSTANTIATION_PARENTHESIS = 10; - - public const BLOCK_TYPE_ATTRIBUTE = 11; - - public const BLOCK_TYPE_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS = 12; - - /** @deprecated use BLOCK_TYPE_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE instead */ - public const BLOCK_TYPE_DYNAMIC_CLASS_CONSTANT_FETCH_CURLY_BRACE = self::BLOCK_TYPE_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE; // @phpstan-ignore shipmonk.deadConstant - public const BLOCK_TYPE_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE = 13; - - public const BLOCK_TYPE_COMPLEX_STRING_VARIABLE = 14; - - public const BLOCK_TYPE_PROPERTY_HOOK = 15; - - /** - * Static class cache. - * - * @var array - */ - private static array $cache = []; - - /** - * Cache of block starts. Any change in collection will invalidate it. - * - * @var array - */ - private array $blockStartCache = []; - - /** - * Cache of block ends. Any change in collection will invalidate it. - * - * @var array - */ - private array $blockEndCache = []; - - /** - * An hash of the code string. - * - * @var ?non-empty-string - */ - private ?string $codeHash = null; - - /** - * An hash of the collection items. - * - * @var ?non-empty-string - */ - private ?string $collectionHash = null; - - /** - * Flag is collection was changed. - * - * It doesn't know about change of collection's items. To check it run `isChanged` method. - */ - private bool $changed = false; - - /** - * Set of found token kinds. - * - * When the token kind is present in this set it means that given token kind - * was ever seen inside the collection (but may not be part of it any longer). - * The key is token kind and the value is the number of occurrences. - * - * @var array<_PhpTokenKind, int<0, max>> - */ - private array $foundTokenKinds = []; - - /** - * @var null|list - */ - private ?array $namespaceDeclarations = null; - - /** - * Clone tokens collection. - */ - public function __clone() - { - foreach ($this as $key => $val) { - $this[$key] = clone $val; - } - } - - /** - * Clear cache - one position or all of them. - * - * @param null|non-empty-string $key position to clear, when null clear all - */ - public static function clearCache(?string $key = null): void - { - if (null === $key) { - self::$cache = []; - - return; - } - - unset(self::$cache[$key]); - } - - /** - * Detect type of block. - * - * @return null|array{type: self::BLOCK_TYPE_*, isStart: bool} - */ - public static function detectBlockType(Token $token): ?array - { - static $blockEdgeKinds = null; - - if (null === $blockEdgeKinds) { - $blockEdgeKinds = []; - foreach (self::getBlockEdgeDefinitions() as $type => $definition) { - $blockEdgeKinds[ - \is_string($definition['start']) ? $definition['start'] : $definition['start'][0] - ] = ['type' => $type, 'isStart' => true]; - $blockEdgeKinds[ - \is_string($definition['end']) ? $definition['end'] : $definition['end'][0] - ] = ['type' => $type, 'isStart' => false]; - } - } - - // inlined extractTokenKind() call on the hot path - $tokenKind = $token->isArray() ? $token->getId() : $token->getContent(); - - return $blockEdgeKinds[$tokenKind] ?? null; - } - - /** - * Create token collection from array. - * - * @param array $array the array to import - * @param ?bool $saveIndices save the numeric indices used in the original array, default is yes - */ - public static function fromArray($array, $saveIndices = null): self - { - $tokens = new self(\count($array)); - - if (false !== $saveIndices && !array_is_list($array)) { - Future::triggerDeprecation(new \InvalidArgumentException(\sprintf( - 'Parameter "array" should be a list. This will be enforced in version %d.0.', - Application::getMajorVersion() + 1, - ))); - - foreach ($array as $key => $val) { - $tokens[$key] = $val; - } - } else { - $index = 0; - foreach ($array as $val) { - $tokens[$index++] = $val; - } - } - - $tokens->clearChanged(); - $tokens->generateCode(); // ensure code hash is calculated, so it's registered in cache - - return $tokens; - } - - /** - * Create token collection directly from code. - * - * @param string $code PHP code - */ - public static function fromCode(string $code): self - { - $codeHash = self::calculateHash($code); - - if (self::hasCache($codeHash)) { - $tokens = self::getCache($codeHash); - - if ($codeHash === $tokens->codeHash) { - $tokens->clearEmptyTokens(); - $tokens->clearChanged(); - - return $tokens; - } - } - - $tokens = new self(); - $tokens->setCode($code); - $tokens->clearChanged(); - - return $tokens; - } - - /** - * @return array - */ - public static function getBlockEdgeDefinitions(): array - { - // @FRS TODO sprawdzic spojnosc na koniec - return [ - self::BLOCK_TYPE_BRACE => [ - 'start' => '{', - 'end' => '}', - ], - self::BLOCK_TYPE_PARENTHESIS => [ - 'start' => '(', - 'end' => ')', - ], - self::BLOCK_TYPE_INDEX_BRACKET => [ - 'start' => '[', - 'end' => ']', - ], - self::BLOCK_TYPE_ARRAY_BRACKET => [ - 'start' => [CT::T_ARRAY_BRACKET_OPEN, '['], - 'end' => [CT::T_ARRAY_BRACKET_CLOSE, ']'], - ], - self::BLOCK_TYPE_DYNAMIC_PROP_BRACE => [ - 'start' => [CT::T_DYNAMIC_PROP_BRACE_OPEN, '{'], - 'end' => [CT::T_DYNAMIC_PROP_BRACE_CLOSE, '}'], - ], - self::BLOCK_TYPE_DYNAMIC_VAR_BRACE => [ - 'start' => [CT::T_DYNAMIC_VAR_BRACE_OPEN, '{'], - 'end' => [CT::T_DYNAMIC_VAR_BRACE_CLOSE, '}'], - ], - self::BLOCK_TYPE_INDEX_BRACE => [ - 'start' => [CT::T_ARRAY_INDEX_BRACE_OPEN, '{'], - 'end' => [CT::T_ARRAY_INDEX_BRACE_CLOSE, '}'], - ], - self::BLOCK_TYPE_GROUP_IMPORT_BRACE => [ - 'start' => [CT::T_GROUP_IMPORT_BRACE_OPEN, '{'], - 'end' => [CT::T_GROUP_IMPORT_BRACE_CLOSE, '}'], - ], - self::BLOCK_TYPE_DESTRUCTURING_BRACKET => [ - 'start' => [CT::T_DESTRUCTURING_BRACKET_OPEN, '['], - 'end' => [CT::T_DESTRUCTURING_BRACKET_CLOSE, ']'], - ], - self::BLOCK_TYPE_CLASS_INSTANTIATION_PARENTHESIS => [ - 'start' => [CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN, '('], - 'end' => [CT::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE, ')'], - ], - self::BLOCK_TYPE_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS => [ - 'start' => [CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, '('], - 'end' => [CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE, ')'], - ], - self::BLOCK_TYPE_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE => [ - 'start' => [CT::T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_OPEN, '{'], - 'end' => [CT::T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_CLOSE, '}'], - ], - self::BLOCK_TYPE_COMPLEX_STRING_VARIABLE => [ - 'start' => [\T_DOLLAR_OPEN_CURLY_BRACES, '${'], - 'end' => [CT::T_DOLLAR_CLOSE_CURLY_BRACES, '}'], - ], - self::BLOCK_TYPE_PROPERTY_HOOK => [ - 'start' => [CT::T_PROPERTY_HOOK_BRACE_OPEN, '{'], - 'end' => [CT::T_PROPERTY_HOOK_BRACE_CLOSE, '}'], - ], - self::BLOCK_TYPE_ATTRIBUTE => [ - 'start' => [FCT::T_ATTRIBUTE, '#['], - 'end' => [CT::T_ATTRIBUTE_CLOSE, ']'], - ], - ]; - } - - /** - * Set new size of collection. - * - * @param int $size - */ - #[\ReturnTypeWillChange] - public function setSize($size): bool - { - throw new \RuntimeException('Changing tokens collection size explicitly is not allowed.'); - } - - /** - * Unset collection item. - * - * @param int $index - */ - public function offsetUnset($index): void - { - if (\count($this) - 1 !== $index) { - Future::triggerDeprecation(new \InvalidArgumentException(\sprintf( - 'Tokens should be a list - only the last index can be unset. This will be enforced in version %d.0.', - Application::getMajorVersion() + 1, - ))); - } - - if (isset($this[$index])) { - if (isset($this->blockStartCache[$index])) { - unset($this->blockEndCache[$this->blockStartCache[$index]], $this->blockStartCache[$index]); - } - if (isset($this->blockEndCache[$index])) { - unset($this->blockStartCache[$this->blockEndCache[$index]], $this->blockEndCache[$index]); - } - - $this->unregisterFoundToken($this[$index]); - - $this->changed = true; - $this->collectionHash = null; - self::clearCache($this->codeHash); - $this->codeHash = null; - $this->namespaceDeclarations = null; - } - - parent::offsetUnset($index); - } - - /** - * Set collection item. - * - * Warning! `$newval` must not be typehinted to be compatible with `ArrayAccess::offsetSet` method. - * - * @param int $index - * @param Token $newval - */ - public function offsetSet($index, $newval): void - { - if (0 > $index || \count($this) <= $index) { - Future::triggerDeprecation(new \InvalidArgumentException(\sprintf( - 'Tokens should be a list - index must be within the existing range. This will be enforced in version %d.0.', - Application::getMajorVersion() + 1, - ))); - } - - if (!$newval instanceof Token) { - Future::triggerDeprecation(new \InvalidArgumentException(\sprintf( - 'Tokens should be a list of Token instances - newval must be a Token. This will be enforced in version %d.0.', - Application::getMajorVersion() + 1, - ))); - } - - if (isset($this[$index])) { - if (isset($this->blockStartCache[$index])) { - unset($this->blockEndCache[$this->blockStartCache[$index]], $this->blockStartCache[$index]); - } - if (isset($this->blockEndCache[$index])) { - unset($this->blockStartCache[$this->blockEndCache[$index]], $this->blockEndCache[$index]); - } - } - - if (!isset($this[$index]) || !$this[$index]->equals($newval)) { - if (isset($this[$index])) { - $this->unregisterFoundToken($this[$index]); - } - - $this->changed = true; - $this->collectionHash = null; - self::clearCache($this->codeHash); - $this->codeHash = null; - $this->namespaceDeclarations = null; - - $this->registerFoundToken($newval); - } - - parent::offsetSet($index, $newval); - } - - /** - * Clear internal flag if collection was changed and flag for all collection's items. - */ - public function clearChanged(): void - { - $this->changed = false; - } - - /** - * Clear empty tokens. - * - * Empty tokens can occur e.g. after calling clear on item of collection. - */ - public function clearEmptyTokens(): void - { - // no empty token found, therefore there is no need to override collection - if (!$this->isTokenKindFound('')) { - return; - } - - $limit = \count($this); - - for ($index = 0; $index < $limit; ++$index) { - if ($this->isEmptyAt($index)) { - break; - } - } - - for ($count = $index; $index < $limit; ++$index) { - if (!$this->isEmptyAt($index)) { - // use directly for speed, skip the register of token kinds found etc. - $buffer = $this[$count]; - parent::offsetSet($count, $this[$index]); - parent::offsetSet($index, $buffer); - - if (isset($this->blockStartCache[$index])) { - $otherEndIndex = $this->blockStartCache[$index]; - unset($this->blockStartCache[$index]); - $this->blockStartCache[$count] = $otherEndIndex; - $this->blockEndCache[$otherEndIndex] = $count; - } - - if (isset($this->blockEndCache[$index])) { - $otherEndIndex = $this->blockEndCache[$index]; - unset($this->blockEndCache[$index]); - $this->blockStartCache[$otherEndIndex] = $count; - $this->blockEndCache[$count] = $otherEndIndex; - } - - ++$count; - } - } - - // we are moving the tokens, we need to clear the index-based Cache - $this->namespaceDeclarations = null; - $this->foundTokenKinds[''] = 0; - - $this->collectionHash = null; - - $this->updateSizeByTrimmingTrailingEmptyTokens(); - } - - /** - * Ensure that on given index is a whitespace with given kind. - * - * If there is a whitespace then it's content will be modified. - * If not - the new Token will be added. - * - * @param int $index index - * @param int $indexOffset index offset for Token insertion - * @param string $whitespace whitespace to set - * - * @return bool if new Token was added - */ - public function ensureWhitespaceAtIndex(int $index, int $indexOffset, string $whitespace): bool - { - $removeLastCommentLine = static function (self $tokens, int $index, int $indexOffset, string $whitespace): string { - $token = $tokens[$index]; - - if (1 === $indexOffset && $token->isGivenKind(\T_OPEN_TAG)) { - if (str_starts_with($whitespace, "\r\n")) { - $tokens[$index] = new Token([\T_OPEN_TAG, rtrim($token->getContent())."\r\n"]); - - return \strlen($whitespace) > 2 // @TODO: can be removed on PHP 8; https://php.net/manual/en/function.substr.php - ? substr($whitespace, 2) - : ''; - } - - $tokens[$index] = new Token([\T_OPEN_TAG, rtrim($token->getContent()).$whitespace[0]]); - - return \strlen($whitespace) > 1 // @TODO: can be removed on PHP 8; https://php.net/manual/en/function.substr.php - ? substr($whitespace, 1) - : ''; - } - - return $whitespace; - }; - - if ($this[$index]->isWhitespace()) { - $whitespace = $removeLastCommentLine($this, $index - 1, $indexOffset, $whitespace); - - if ('' === $whitespace) { - $this->clearAt($index); - } else { - $this[$index] = new Token([\T_WHITESPACE, $whitespace]); - } - - return false; - } - - $whitespace = $removeLastCommentLine($this, $index, $indexOffset, $whitespace); - - if ('' === $whitespace) { - return false; - } - - $this->insertAt( - $index + $indexOffset, - [new Token([\T_WHITESPACE, $whitespace])], - ); - - return true; - } - - /** - * @param self::BLOCK_TYPE_* $type type of block - * @param int $searchIndex index of opening brace - * - * @return int<0, max> index of closing brace - */ - public function findBlockEnd(int $type, int $searchIndex): int - { - return $this->findOppositeBlockEdge($type, $searchIndex, true); - } - - /** - * @param self::BLOCK_TYPE_* $type type of block - * @param int $searchIndex index of closing brace - * - * @return int<0, max> index of opening brace - */ - public function findBlockStart(int $type, int $searchIndex): int - { - return $this->findOppositeBlockEdge($type, $searchIndex, false); - } - - /** - * @param int|non-empty-list $possibleKind kind or array of kinds - * @param int $start optional offset - * @param null|int $end optional limit - * - * @return ($possibleKind is int ? array, Token> : array, Token>>) - */ - public function findGivenKind($possibleKind, int $start = 0, ?int $end = null): array - { - if (null === $end) { - $end = \count($this); - } - - $elements = []; - $possibleKinds = (array) $possibleKind; - - foreach ($possibleKinds as $kind) { - $elements[$kind] = []; - } - - $possibleKinds = array_values(array_filter($possibleKinds, fn ($kind): bool => $this->isTokenKindFound($kind))); - - if (\count($possibleKinds) > 0) { - for ($i = $start; $i < $end; ++$i) { - $token = $this[$i]; - if ($token->isGivenKind($possibleKinds)) { - $elements[$token->getId()][$i] = $token; - } - } - } - - return \is_array($possibleKind) ? $elements : $elements[$possibleKind]; - } - - public function generateCode(): string - { - $code = $this->generatePartialCode(0, \count($this) - 1); - if (null === $this->codeHash) { - $this->changeCodeHash(self::calculateHash($code)); // ensure code hash is calculated, so it's registered in cache - } - - return $code; - } - - /** - * Generate code from tokens between given indices. - * - * @param int $start start index - * @param int $end end index - */ - public function generatePartialCode(int $start, int $end): string - { - $code = ''; - - for ($i = $start; $i <= $end; ++$i) { - $code .= $this[$i]->getContent(); - } - - return $code; - } - - /** - * Get hash of code. - */ - public function getCodeHash(): string - { - if (null === $this->codeHash) { - $code = $this->generatePartialCode(0, \count($this) - 1); - $this->changeCodeHash(self::calculateHash($code)); // ensure code hash is calculated, so it's registered in cache - } - - return $this->codeHash; - } - - /** - * @return non-empty-string - * - * @internal - */ - public function getCollectionHash(): string - { - if (null === $this->collectionHash) { - $this->collectionHash = self::calculateHash( - $this->getCodeHash() - .'#' - .\count($this) - .'#' - .implode( - '', - array_map(static fn (?Token $token): ?int => null !== $token ? $token->getId() : null, $this->toArray()), - ), - ); - } - - return $this->collectionHash; - } - - /** - * Get index for closest next token which is non whitespace. - * - * This method is shorthand for getNonWhitespaceSibling method. - * - * @param int $index token index - * @param null|string $whitespaces whitespaces characters for Token::isWhitespace - */ - public function getNextNonWhitespace(int $index, ?string $whitespaces = null): ?int - { - return $this->getNonWhitespaceSibling($index, 1, $whitespaces); - } - - /** - * Get index for closest next token of given kind. - * - * This method is shorthand for getTokenOfKindSibling method. - * - * @param int $index token index - * @param list<_PhpTokenPrototypePartial|Token> $tokens possible tokens - * @param bool $caseSensitive perform a case sensitive comparison - */ - public function getNextTokenOfKind(int $index, array $tokens = [], bool $caseSensitive = true): ?int - { - return $this->getTokenOfKindSibling($index, 1, $tokens, $caseSensitive); - } - - /** - * Get index for closest sibling token which is non whitespace. - * - * @param int $index token index - * @param -1|1 $direction - * @param null|string $whitespaces whitespaces characters for Token::isWhitespace - */ - public function getNonWhitespaceSibling(int $index, int $direction, ?string $whitespaces = null): ?int - { - while (true) { - $index += $direction; - if (!$this->offsetExists($index)) { - return null; - } - - if (!$this[$index]->isWhitespace($whitespaces)) { - return $index; - } - } - } - - /** - * Get index for closest previous token which is non whitespace. - * - * This method is shorthand for getNonWhitespaceSibling method. - * - * @param int $index token index - * @param null|string $whitespaces whitespaces characters for Token::isWhitespace - */ - public function getPrevNonWhitespace(int $index, ?string $whitespaces = null): ?int - { - return $this->getNonWhitespaceSibling($index, -1, $whitespaces); - } - - /** - * Get index for closest previous token of given kind. - * This method is shorthand for getTokenOfKindSibling method. - * - * @param int $index token index - * @param list<_PhpTokenPrototypePartial|Token> $tokens possible tokens - * @param bool $caseSensitive perform a case sensitive comparison - */ - public function getPrevTokenOfKind(int $index, array $tokens = [], bool $caseSensitive = true): ?int - { - return $this->getTokenOfKindSibling($index, -1, $tokens, $caseSensitive); - } - - /** - * Get index for closest sibling token of given kind. - * - * @param int $index token index - * @param -1|1 $direction - * @param list<_PhpTokenPrototypePartial|Token> $tokens possible tokens - * @param bool $caseSensitive perform a case sensitive comparison - */ - public function getTokenOfKindSibling(int $index, int $direction, array $tokens = [], bool $caseSensitive = true): ?int - { - $tokens = array_values( - array_filter( - $tokens, - fn ($token): bool => $this->isTokenKindFound($this->extractTokenKind($token)), - ), - ); - - if (0 === \count($tokens)) { - return null; - } - - while (true) { - $index += $direction; - if (!$this->offsetExists($index)) { - return null; - } - - if ($this[$index]->equalsAny($tokens, $caseSensitive)) { - return $index; - } - } - } - - /** - * Get index for closest sibling token not of given kind. - * - * @param int $index token index - * @param -1|1 $direction - * @param list<_PhpTokenPrototypePartial|Token> $tokens possible tokens - */ - public function getTokenNotOfKindSibling(int $index, int $direction, array $tokens = []): ?int - { - return $this->getTokenNotOfKind( - $index, - $direction, - fn (int $a): bool => $this[$a]->equalsAny($tokens), - ); - } - - /** - * Get index for closest sibling token not of given kind. - * - * @param int $index token index - * @param -1|1 $direction - * @param list $kinds possible tokens kinds - */ - public function getTokenNotOfKindsSibling(int $index, int $direction, array $kinds = []): ?int - { - return $this->getTokenNotOfKind( - $index, - $direction, - fn (int $index): bool => $this[$index]->isGivenKind($kinds), - ); - } - - /** - * Get index for closest sibling token that is not a whitespace, comment or attribute. - * - * @param int $index token index - * @param -1|1 $direction - */ - public function getMeaningfulTokenSibling(int $index, int $direction): ?int - { - return $this->getTokenNotOfKindsSibling( - $index, - $direction, - [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT], - ); - } - - /** - * Get index for closest sibling token which is not empty. - * - * @param int $index token index - * @param -1|1 $direction - */ - public function getNonEmptySibling(int $index, int $direction): ?int - { - while (true) { - $index += $direction; - if (!$this->offsetExists($index)) { - return null; - } - - if (!$this->isEmptyAt($index)) { - return $index; - } - } - } - - /** - * Get index for closest next token that is not a whitespace or comment. - * - * @param int $index token index - */ - public function getNextMeaningfulToken(int $index): ?int - { - return $this->getMeaningfulTokenSibling($index, 1); - } - - /** - * Get index for closest previous token that is not a whitespace or comment. - * - * @param int $index token index - */ - public function getPrevMeaningfulToken(int $index): ?int - { - return $this->getMeaningfulTokenSibling($index, -1); - } - - /** - * Find a sequence of meaningful tokens and returns the array of their locations. - * - * @param non-empty-list<_PhpTokenPrototypePartial|Token> $sequence an array of token (kinds) - * @param int $start start index, defaulting to the start of the file - * @param null|int $end end index, defaulting to the end of the file - * @param array|bool $caseSensitive global case sensitiveness or a list of booleans, whose keys should match - * the ones used in $sequence. If any is missing, the default case-sensitive - * comparison is used - * - * @return null|non-empty-array, Token> an array containing the tokens matching the sequence elements, indexed by their position - */ - public function findSequence(array $sequence, int $start = 0, ?int $end = null, $caseSensitive = true): ?array - { - $sequenceCount = \count($sequence); - if (0 === $sequenceCount) { - throw new \InvalidArgumentException('Invalid sequence.'); - } - - // $end defaults to the end of the collection - $end = null === $end ? \count($this) - 1 : min($end, \count($this) - 1); - - if ($start + $sequenceCount - 1 > $end) { - return null; - } - - $nonMeaningFullKind = [\T_COMMENT, \T_DOC_COMMENT, \T_WHITESPACE]; - - // make sure the sequence content is "meaningful" - foreach ($sequence as $key => $token) { - // if not a Token instance already, we convert it to verify the meaningfulness - if (!$token instanceof Token) { - if (\is_array($token) && !isset($token[1])) { - // fake some content as it is required by the Token constructor, - // although optional for search purposes - $token[1] = 'DUMMY'; - } - - $token = new Token($token); - } - - if ($token->isGivenKind($nonMeaningFullKind)) { - throw new \InvalidArgumentException(\sprintf('Non-meaningful token at position: "%s".', $key)); - } - - if ('' === $token->getContent()) { - throw new \InvalidArgumentException(\sprintf('Non-meaningful (empty) token at position: "%s".', $key)); - } - } - - foreach ($sequence as $token) { - if (!$this->isTokenKindFound($this->extractTokenKind($token))) { - return null; - } - } - - // remove the first token from the sequence, so we can freely iterate through the sequence after a match to - // the first one is found - $firstKey = array_key_first($sequence); - $firstCs = self::isKeyCaseSensitive($caseSensitive, $firstKey); - $firstToken = $sequence[$firstKey]; - unset($sequence[$firstKey]); - - // begin searching for the first token in the sequence (start included) - $index = $start - 1; - while ($index <= $end) { - $index = $this->getNextTokenOfKind($index, [$firstToken], $firstCs); - - // ensure we found a match and didn't get past the end index - if (null === $index || $index > $end) { - return null; - } - - // initialise the result array with the current index - $result = [$index => $this[$index]]; - - // advance cursor to the current position - $currIdx = $index; - - // iterate through the remaining tokens in the sequence - foreach ($sequence as $key => $token) { - $currIdx = $this->getNextMeaningfulToken($currIdx); - - // ensure we didn't go too far - if (null === $currIdx || $currIdx > $end) { - return null; - } - - if (!$this[$currIdx]->equals($token, self::isKeyCaseSensitive($caseSensitive, $key))) { - // not a match, restart the outer loop - continue 2; - } - - // append index to the result array - $result[$currIdx] = $this[$currIdx]; - } - - // do we have a complete match? - // hint: $result is bigger than $sequence since the first token has been removed from the latter - if (\count($sequence) < \count($result)) { - return $result; - } - } - - return null; - } - - /** - * Insert instances of Token inside collection. - * - * @param int $index start inserting index - * @param list|Token|Tokens $items instances of Token to insert - */ - public function insertAt(int $index, $items): void - { - $this->insertSlices([$index => $items]); - } - - /** - * Insert a slices or individual Tokens into multiple places in a single run. - * - * This approach is kind-of an experiment - it's proven to improve performance a lot for big files that needs plenty of new tickets to be inserted, - * like edge case example of 3.7h vs 4s (https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/3996#issuecomment-455617637), - * yet at same time changing a logic of fixers in not-always easy way. - * - * To be discussed: - * - should we always aim to use this method? - * - should we deprecate `insertAt` method ? - * - * The `$slices` parameter is an assoc array, in which: - * - index: starting point for inserting of individual slice, with indices being relatives to original array collection before any Token inserted - * - value under index: a slice of Tokens to be inserted - * - * @internal - * - * @param array|Token|Tokens> $slices - */ - public function insertSlices(array $slices): void - { - $itemsCount = 0; - - foreach ($slices as $slice) { - $itemsCount += \is_array($slice) || $slice instanceof self ? \count($slice) : 1; - } - - if (0 === $itemsCount) { - return; - } - - $this->changed = true; - $this->collectionHash = null; - self::clearCache($this->codeHash); - $this->codeHash = null; - $this->namespaceDeclarations = null; - $this->blockStartCache = []; - $this->blockEndCache = []; - - $oldSize = \count($this); - $this->updateSizeByIncreasingToNewSize($oldSize + $itemsCount); - - krsort($slices); - $farthestSliceIndex = array_key_first($slices); - - // We check only the farthest index, if it's within the size of collection, other indices will be valid too. - if (!\is_int($farthestSliceIndex) || $farthestSliceIndex > $oldSize) { - throw new \OutOfBoundsException(\sprintf('Cannot insert index "%s" outside of collection.', $farthestSliceIndex)); - } - - $previousSliceIndex = $oldSize; - - // since we only move already existing items around, we directly call into SplFixedArray::offset* methods. - // that way we get around additional overhead this class adds with overridden offset* methods. - foreach ($slices as $index => $slice) { - if (!\is_int($index) || $index < 0) { - throw new \OutOfBoundsException(\sprintf('Invalid index "%s".', $index)); - } - - $slice = \is_array($slice) || $slice instanceof self ? $slice : [$slice]; - $sliceCount = \count($slice); - - for ($i = $previousSliceIndex - 1; $i >= $index; --$i) { - parent::offsetSet($i + $itemsCount, $this[$i]); - } - - $previousSliceIndex = $index; - $itemsCount -= $sliceCount; - - foreach ($slice as $indexItem => $item) { - if ('' === $item->getContent()) { - throw new \InvalidArgumentException('Must not add empty token to collection.'); - } - - $this->registerFoundToken($item); - - parent::offsetSet($index + $itemsCount + $indexItem, $item); - } - } - } - - /** - * Check if collection was change: collection itself (like insert new tokens) or any of collection's elements. - */ - public function isChanged(): bool - { - return $this->changed; - } - - public function isEmptyAt(int $index): bool - { - $token = $this[$index]; - - return null === $token->getId() && '' === $token->getContent(); - } - - public function clearAt(int $index): void - { - $this[$index] = new Token(''); - } - - /** - * Override tokens at given range. - * - * @param int $indexStart start overriding index - * @param int $indexEnd end overriding index - * @param array|Tokens $items tokens to insert - */ - public function overrideRange(int $indexStart, int $indexEnd, iterable $items): void - { - $indexToChange = $indexEnd - $indexStart + 1; - $itemsCount = \count($items); - - // If we want to add more items than passed range contains we need to - // add placeholders for overhead items. - if ($itemsCount > $indexToChange) { - $placeholders = []; - - while ($itemsCount > $indexToChange) { - $placeholders[] = new Token('__PLACEHOLDER__'); - ++$indexToChange; - } - - $this->insertAt($indexEnd + 1, $placeholders); - } - - // Override each items. - foreach ($items as $itemIndex => $item) { - $this[$indexStart + $itemIndex] = $item; - } - - // If we want to add fewer tokens than passed range contains then clear - // not needed tokens. - if ($itemsCount < $indexToChange) { - $this->clearRange($indexStart + $itemsCount, $indexEnd); - } - } - - /** - * @param null|string $whitespaces optional whitespaces characters for Token::isWhitespace - */ - public function removeLeadingWhitespace(int $index, ?string $whitespaces = null): void - { - $this->removeWhitespaceSafely($index, -1, $whitespaces); - } - - /** - * @param null|string $whitespaces optional whitespaces characters for Token::isWhitespace - */ - public function removeTrailingWhitespace(int $index, ?string $whitespaces = null): void - { - $this->removeWhitespaceSafely($index, 1, $whitespaces); - } - - /** - * Set code. Clear all current content and replace it by new Token items generated from code directly. - * - * @param string $code PHP code - */ - public function setCode(string $code): void - { - // No need to work when the code is the same. - // That is how we avoid a lot of work and setting changed flag. - if ($code === $this->generateCode()) { - return; - } - - $this->updateSizeToZero(); // clear memory - - $prevErrorHandler = set_error_handler(static function ($type, $msg, $file, $line, $context = []) use (&$prevErrorHandler) { - // Ignore deprecations triggered by token_get_all for tokenized code. - // It is not the responsibility of PHP CS Fixer to care about deprecations within the code being tokenized. - if (\E_DEPRECATED === $type) { - return true; - } - - return null !== $prevErrorHandler ? $prevErrorHandler($type, $msg, $file, $line, $context) : false; - }); - - try { - $tokens = token_get_all($code, \TOKEN_PARSE); - } finally { - restore_error_handler(); - } - - $this->updateSizeByIncreasingToNewSize(\count($tokens)); // pre-allocate collection size - - foreach ($tokens as $index => $token) { - $this[$index] = new Token($token); - } - - $this->applyTransformers(); - - if (\PHP_VERSION_ID < 8_00_00) { - $this->rewind(); - } - - $this->changed = true; - $this->collectionHash = null; - self::clearCache($this->codeHash); - $this->codeHash = null; - $this->namespaceDeclarations = null; - $this->blockStartCache = []; - $this->blockEndCache = []; - - $this->changeCodeHash(self::calculateHash($code)); // ensure code hash is calculated, so it's registered in cache - } - - public function toJson(): string - { - $output = new \SplFixedArray(\count($this)); - - foreach ($this as $index => $token) { - $output[$index] = $token->toArray(); - } - - if (\PHP_VERSION_ID < 8_00_00) { - $this->rewind(); - } - - return json_encode($output, \JSON_THROW_ON_ERROR | \JSON_PRETTY_PRINT | \JSON_NUMERIC_CHECK); - } - - /** - * Check if all token kinds given as argument are found. - * - * @param list<_PhpTokenKind> $tokenKinds - */ - public function isAllTokenKindsFound(array $tokenKinds): bool - { - foreach ($tokenKinds as $tokenKind) { - if (0 === ($this->foundTokenKinds[$tokenKind] ?? 0)) { - return false; - } - } - - return true; - } - - /** - * Check if any token kind given as argument is found. - * - * @param list<_PhpTokenKind> $tokenKinds - */ - public function isAnyTokenKindsFound(array $tokenKinds): bool - { - foreach ($tokenKinds as $tokenKind) { - if (0 !== ($this->foundTokenKinds[$tokenKind] ?? 0)) { - return true; - } - } - - return false; - } - - /** - * Check if token kind given as argument is found. - * - * @param _PhpTokenKind $tokenKind - */ - public function isTokenKindFound($tokenKind): bool - { - return 0 !== ($this->foundTokenKinds[$tokenKind] ?? 0); - } - - /** - * @param _PhpTokenKind $tokenKind - */ - public function countTokenKind($tokenKind): int - { - return $this->foundTokenKinds[$tokenKind] ?? 0; - } - - /** - * Clear tokens in the given range. - */ - public function clearRange(int $indexStart, int $indexEnd): void - { - for ($i = $indexStart; $i <= $indexEnd; ++$i) { - $this->clearAt($i); - } - } - - /** - * Checks for monolithic PHP code. - * - * Checks that the code is pure PHP code, in a single code block, starting - * with an open tag. - */ - public function isMonolithicPhp(): bool - { - if (1 !== ($this->countTokenKind(\T_OPEN_TAG) + $this->countTokenKind(\T_OPEN_TAG_WITH_ECHO))) { - return false; - } - - return 0 === $this->countTokenKind(\T_INLINE_HTML) - || (1 === $this->countTokenKind(\T_INLINE_HTML) && Preg::match('/^#!.+$/', $this[0]->getContent())); - } - - /** - * @param int $start start index - * @param int $end end index - */ - public function isPartialCodeMultiline(int $start, int $end): bool - { - for ($i = $start; $i <= $end; ++$i) { - if (str_contains($this[$i]->getContent(), "\n")) { - return true; - } - } - - return false; - } - - public function hasAlternativeSyntax(): bool - { - return $this->isAnyTokenKindsFound([ - \T_ENDDECLARE, - \T_ENDFOR, - \T_ENDFOREACH, - \T_ENDIF, - \T_ENDSWITCH, - \T_ENDWHILE, - ]); - } - - public function clearTokenAndMergeSurroundingWhitespace(int $index): void - { - $count = \count($this); - $this->clearAt($index); - - if ($index === $count - 1) { - return; - } - - $nextIndex = $this->getNonEmptySibling($index, 1); - - if (null === $nextIndex || !$this[$nextIndex]->isWhitespace()) { - return; - } - - $prevIndex = $this->getNonEmptySibling($index, -1); - - if ($this[$prevIndex]->isWhitespace()) { - $this[$prevIndex] = new Token([\T_WHITESPACE, $this[$prevIndex]->getContent().$this[$nextIndex]->getContent()]); - } elseif ($this->isEmptyAt($prevIndex + 1)) { - $this[$prevIndex + 1] = new Token([\T_WHITESPACE, $this[$nextIndex]->getContent()]); - } - - $this->clearAt($nextIndex); - } - - /** - * @internal This is performance-related workaround for lack of proper DI, may be removed at some point - * - * @return list - */ - public function getNamespaceDeclarations(): array - { - if (null === $this->namespaceDeclarations) { - $this->namespaceDeclarations = (new NamespacesAnalyzer())->getDeclarations($this); - } - - return $this->namespaceDeclarations; - } - - /** - * @internal - */ - protected function applyTransformers(): void - { - $transformers = Transformers::createSingleton(); - $transformers->transform($this); - } - - private function updateSizeByIncreasingToNewSize(int $size): void - { - $currentSize = \count($this); - if ($currentSize >= $size) { - throw new \LogicException(\sprintf('Cannot use called method to decrease collection size (%d -> %d).', $currentSize, $size)); - } - parent::setSize($size); - } - - private function updateSizeToZero(): void - { - $currentSize = \count($this); - if (0 === $currentSize) { - return; - } - - $this->changed = true; - $this->collectionHash = null; - self::clearCache($this->codeHash); - $this->codeHash = null; - $this->namespaceDeclarations = null; - $this->blockStartCache = []; - $this->blockEndCache = []; - - parent::setSize(0); - } - - private function updateSizeByTrimmingTrailingEmptyTokens(): void - { - $currentSize = \count($this); - - if (0 === $currentSize) { - return; - } - - $lastIndex = $currentSize - 1; - - while ($lastIndex >= 0 && $this->isEmptyAt($lastIndex)) { - --$lastIndex; - } - - parent::setSize($lastIndex + 1); - } - - /** - * @param -1|1 $direction - */ - private function removeWhitespaceSafely(int $index, int $direction, ?string $whitespaces = null): void - { - $whitespaceIndex = $this->getNonEmptySibling($index, $direction); - if (isset($this[$whitespaceIndex]) && $this[$whitespaceIndex]->isWhitespace()) { - $newContent = ''; - $tokenToCheck = $this[$whitespaceIndex]; - - // if the token candidate to remove is preceded by single line comment we do not consider the new line after this comment as part of T_WHITESPACE - if (isset($this[$whitespaceIndex - 1]) && $this[$whitespaceIndex - 1]->isComment() && !str_starts_with($this[$whitespaceIndex - 1]->getContent(), '/*')) { - [, $newContent, $whitespacesToCheck] = Preg::split('/^(\R)/', $this[$whitespaceIndex]->getContent(), -1, \PREG_SPLIT_DELIM_CAPTURE); - - if ('' === $whitespacesToCheck) { - return; - } - - $tokenToCheck = new Token([\T_WHITESPACE, $whitespacesToCheck]); - } - - if (!$tokenToCheck->isWhitespace($whitespaces)) { - return; - } - - if ('' === $newContent) { - $this->clearAt($whitespaceIndex); - } else { - $this[$whitespaceIndex] = new Token([\T_WHITESPACE, $newContent]); - } - } - } - - /** - * @param self::BLOCK_TYPE_* $type type of block - * @param int $searchIndex index of starting brace - * @param bool $findEnd if method should find block's end or start - * - * @return int<0, max> index of opposite brace - */ - private function findOppositeBlockEdge(int $type, int $searchIndex, bool $findEnd): int - { - $blockEdgeDefinitions = self::getBlockEdgeDefinitions(); - - if (!isset($blockEdgeDefinitions[$type])) { - throw new \InvalidArgumentException(\sprintf('Invalid param type: "%s".', $type)); - } - - if ($findEnd && isset($this->blockStartCache[$searchIndex])) { - \assert($this->blockStartCache[$searchIndex] >= 0); - - return $this->blockStartCache[$searchIndex]; - } - - if (!$findEnd && isset($this->blockEndCache[$searchIndex])) { - \assert($this->blockEndCache[$searchIndex] >= 0); - - return $this->blockEndCache[$searchIndex]; - } - - $startEdge = $blockEdgeDefinitions[$type]['start']; - $endEdge = $blockEdgeDefinitions[$type]['end']; - $startIndex = $searchIndex; - $endIndex = \count($this) - 1; - $indexOffset = 1; - - if (!$findEnd) { - [$startEdge, $endEdge] = [$endEdge, $startEdge]; - $indexOffset = -1; - $endIndex = 0; - } - - if (!$this[$startIndex]->equals($startEdge)) { - throw new \InvalidArgumentException(\sprintf('Invalid param $startIndex - not a proper block "%s".', $findEnd ? 'start' : 'end')); - } - - $blockLevel = 0; - - for ($index = $startIndex; $index !== $endIndex; $index += $indexOffset) { - $token = $this[$index]; - - if ($token->equals($startEdge)) { - ++$blockLevel; - - continue; - } - - if ($token->equals($endEdge)) { - --$blockLevel; - - if (0 === $blockLevel) { - break; - } - } - } - - if (!$this[$index]->equals($endEdge)) { - throw new \UnexpectedValueException(\sprintf('Missing block "%s".', $findEnd ? 'end' : 'start')); - } - - \assert($index >= 0 && $startIndex >= 0); - - if ($startIndex < $index) { - $this->blockStartCache[$startIndex] = $index; - $this->blockEndCache[$index] = $startIndex; - } else { - $this->blockStartCache[$index] = $startIndex; - $this->blockEndCache[$startIndex] = $index; - } - - return $index; - } - - /** - * @return non-empty-string - */ - private static function calculateHash(string $code): string - { - return Hasher::calculate($code); - } - - /** - * Get cache value for given key. - * - * @param non-empty-string $key item key - */ - private static function getCache(string $key): self - { - if (!self::hasCache($key)) { - throw new \OutOfBoundsException(\sprintf('Unknown cache key: "%s".', $key)); - } - - \assert(isset(self::$cache[$key])); - - return self::$cache[$key]; - } - - /** - * Check if given key exists in cache. - * - * @param non-empty-string $key item key - */ - private static function hasCache(string $key): bool - { - return isset(self::$cache[$key]); - } - - /** - * @param non-empty-string $key item key - * @param Tokens $value item value - */ - private static function setCache(string $key, self $value): void - { - self::$cache[$key] = $value; - } - - /** - * Change code hash. - * - * Remove old cache and set new one. - * - * @param non-empty-string $codeHash new code hash - */ - private function changeCodeHash(string $codeHash): void - { - if (null !== $this->codeHash) { - self::clearCache($this->codeHash); - } - - $this->codeHash = $codeHash; - self::setCache($this->codeHash, $this); - } - - /** - * Register token as found. - */ - private function registerFoundToken(Token $token): void - { - // inlined extractTokenKind() call on the hot path - $tokenKind = $token->isArray() ? $token->getId() : $token->getContent(); - - $this->foundTokenKinds[$tokenKind] ??= 0; - ++$this->foundTokenKinds[$tokenKind]; - } - - /** - * Unregister token as not found. - */ - private function unregisterFoundToken(Token $token): void - { - // inlined extractTokenKind() call on the hot path - $tokenKind = $token->isArray() ? $token->getId() : $token->getContent(); - - \assert(($this->foundTokenKinds[$tokenKind] ?? 0) > 0); - --$this->foundTokenKinds[$tokenKind]; - } - - /** - * @param _PhpTokenPrototypePartial|Token $token token prototype - * - * @return _PhpTokenKind - */ - private function extractTokenKind($token) - { - return $token instanceof Token - ? ($token->isArray() ? $token->getId() : $token->getContent()) - : (\is_array($token) ? $token[0] : $token); - } - - /** - * @param int $index token index - * @param -1|1 $direction - * @param callable(int): bool $filter - */ - private function getTokenNotOfKind(int $index, int $direction, callable $filter): ?int - { - while (true) { - $index += $direction; - if (!$this->offsetExists($index)) { - return null; - } - - if ($this->isEmptyAt($index) || $filter($index)) { - continue; - } - - return $index; - } - } - - /** - * A helper method used to find out whether a certain input token has to be case-sensitively matched. - * - * @param array|bool $caseSensitive global case sensitiveness or an array of booleans, whose keys should match - * the ones used in $sequence. If any is missing, the default case-sensitive - * comparison is used - * @param int $key the key of the token that has to be looked up - */ - private static function isKeyCaseSensitive($caseSensitive, int $key): bool - { - if (\is_array($caseSensitive)) { - return $caseSensitive[$key] ?? true; - } - - return $caseSensitive; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php deleted file mode 100644 index 3274c4a..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php +++ /dev/null @@ -1,890 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer; - -use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer; -use PhpCsFixer\Tokenizer\Analyzer\GotoLabelAnalyzer; - -/** - * Analyzer of Tokens collection. - * - * Its role is to provide the ability to analyse collection. - * - * @internal - * - * @phpstan-type _ClassyElementType 'case'|'const'|'method'|'property'|'promoted_property'|'trait_import' - * - * @author Dariusz Rumiński - * @author Gregor Harlan - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TokensAnalyzer -{ - /** - * Tokens collection instance. - */ - private Tokens $tokens; - - /** - * @readonly - */ - private GotoLabelAnalyzer $gotoLabelAnalyzer; - - public function __construct(Tokens $tokens) - { - $this->tokens = $tokens; - $this->gotoLabelAnalyzer = new GotoLabelAnalyzer(); - } - - /** - * Get indices of methods and properties in classy code (classes, interfaces and traits). - * - * @return array - */ - public function getClassyElements(): array - { - $elements = []; - - for ($index = 1, $count = \count($this->tokens) - 2; $index < $count; ++$index) { - if ($this->tokens[$index]->isClassy()) { - [$index, $newElements] = $this->findClassyElements($index, $index); - $elements += $newElements; - } - } - - ksort($elements); - - return $elements; - } - - /** - * Get indices of modifiers of a classy code (classes, interfaces and traits). - * - * @return array{ - * final: null|int, - * abstract: null|int, - * readonly: null|int - * } - */ - public function getClassyModifiers(int $index): array - { - if (!$this->tokens[$index]->isClassy()) { - throw new \InvalidArgumentException(\sprintf('Not an "classy" at given index %d.', $index)); - } - - $modifiers = ['final' => null, 'abstract' => null, 'readonly' => null]; - - while (true) { - $index = $this->tokens->getPrevMeaningfulToken($index); - - if ($this->tokens[$index]->isGivenKind(\T_FINAL)) { - $modifiers['final'] = $index; - } elseif ($this->tokens[$index]->isGivenKind(\T_ABSTRACT)) { - $modifiers['abstract'] = $index; - } elseif ($this->tokens[$index]->isGivenKind(FCT::T_READONLY)) { - $modifiers['readonly'] = $index; - } else { // no need to skip attributes as it is not possible on PHP8.2 - break; - } - } - - return $modifiers; - } - - /** - * Get indices of namespace uses. - * - * @param bool $perNamespace Return namespace uses per namespace - * - * @return ($perNamespace is true ? array> : list) - */ - public function getImportUseIndexes(bool $perNamespace = false): array - { - $tokens = $this->tokens; - - $uses = []; - $namespaceIndex = 0; - - for ($index = 0, $limit = $tokens->count(); $index < $limit; ++$index) { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_NAMESPACE)) { - $nextTokenIndex = $tokens->getNextTokenOfKind($index, [';', '{']); - $nextToken = $tokens[$nextTokenIndex]; - - if ($nextToken->equals('{')) { - $index = $nextTokenIndex; - } - - if ($perNamespace) { - ++$namespaceIndex; - } - - continue; - } - - if ($token->isGivenKind(\T_USE)) { - $uses[$namespaceIndex][] = $index; - } - } - - if (!$perNamespace && isset($uses[$namespaceIndex])) { - return $uses[$namespaceIndex]; - } - - return $uses; - } - - /** - * Check if there is an array at given index. - */ - public function isArray(int $index): bool - { - return $this->tokens[$index]->isGivenKind([\T_ARRAY, CT::T_ARRAY_BRACKET_OPEN]); - } - - /** - * Check if the array at index is multiline. - * - * This only checks the root-level of the array. - */ - public function isArrayMultiLine(int $index): bool - { - if (!$this->isArray($index)) { - throw new \InvalidArgumentException(\sprintf('Not an array at given index %d.', $index)); - } - - $tokens = $this->tokens; - - // Skip only when it's an array, for short arrays we need the brace for correct - // level counting - if ($tokens[$index]->isGivenKind(\T_ARRAY)) { - $index = $tokens->getNextMeaningfulToken($index); - } - - return $this->isBlockMultiline($tokens, $index); - } - - public function isBlockMultiline(Tokens $tokens, int $index): bool - { - $blockType = Tokens::detectBlockType($tokens[$index]); - - if (null === $blockType || !$blockType['isStart']) { - throw new \InvalidArgumentException(\sprintf('Not an block start at given index %d.', $index)); - } - - $endIndex = $tokens->findBlockEnd($blockType['type'], $index); - - for (++$index; $index < $endIndex; ++$index) { - $token = $tokens[$index]; - $blockType = Tokens::detectBlockType($token); - - if (null !== $blockType && $blockType['isStart']) { - $index = $tokens->findBlockEnd($blockType['type'], $index); - - continue; - } - - if ( - $token->isWhitespace() - && !$tokens[$index - 1]->isGivenKind(\T_END_HEREDOC) - && str_contains($token->getContent(), "\n") - ) { - return true; - } - } - - return false; - } - - /** - * @param int $index Index of the T_FUNCTION token - * - * @return array{visibility: null|T_PRIVATE|T_PROTECTED|T_PUBLIC, static: bool, abstract: bool, final: bool} - */ - public function getMethodAttributes(int $index): array - { - if (!$this->tokens[$index]->isGivenKind(\T_FUNCTION)) { - throw new \LogicException(\sprintf('No T_FUNCTION at given index %d, got "%s".', $index, $this->tokens[$index]->getName())); - } - - $attributes = [ - 'visibility' => null, - 'static' => false, - 'abstract' => false, - 'final' => false, - ]; - - for ($i = $index; $i >= 0; --$i) { - $i = $this->tokens->getPrevMeaningfulToken($i); - $token = $this->tokens[$i]; - - if ($token->isGivenKind(\T_STATIC)) { - $attributes['static'] = true; - - continue; - } - - if ($token->isGivenKind(\T_FINAL)) { - $attributes['final'] = true; - - continue; - } - - if ($token->isGivenKind(\T_ABSTRACT)) { - $attributes['abstract'] = true; - - continue; - } - - // visibility - - if ($token->isGivenKind(\T_PRIVATE)) { - $attributes['visibility'] = \T_PRIVATE; - - continue; - } - - if ($token->isGivenKind(\T_PROTECTED)) { - $attributes['visibility'] = \T_PROTECTED; - - continue; - } - - if ($token->isGivenKind(\T_PUBLIC)) { - $attributes['visibility'] = \T_PUBLIC; - - continue; - } - - // found a meaningful token that is not part of - // the function signature; stop looking - break; - } - - return $attributes; - } - - /** - * Check if there is an anonymous class under given index. - */ - public function isAnonymousClass(int $index): bool - { - if (!$this->tokens[$index]->isClassy()) { - throw new \LogicException(\sprintf('No classy token at given index %d.', $index)); - } - - if (!$this->tokens[$index]->isGivenKind(\T_CLASS)) { - return false; - } - - $index = $this->tokens->getPrevMeaningfulToken($index); - - if ($this->tokens[$index]->isGivenKind(FCT::T_READONLY)) { - $index = $this->tokens->getPrevMeaningfulToken($index); - } - - while ($this->tokens[$index]->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) { - $index = $this->tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - $index = $this->tokens->getPrevMeaningfulToken($index); - } - - return $this->tokens[$index]->isGivenKind(\T_NEW); - } - - /** - * Check if the function under given index is a lambda. - */ - public function isLambda(int $index): bool - { - if (!$this->tokens[$index]->isGivenKind([\T_FUNCTION, \T_FN])) { - throw new \LogicException(\sprintf('No T_FUNCTION or T_FN at given index %d, got "%s".', $index, $this->tokens[$index]->getName())); - } - - $startParenthesisIndex = $this->tokens->getNextMeaningfulToken($index); - $startParenthesisToken = $this->tokens[$startParenthesisIndex]; - - // skip & for `function & () {}` syntax - if ($startParenthesisToken->isGivenKind(CT::T_RETURN_REF)) { - $startParenthesisIndex = $this->tokens->getNextMeaningfulToken($startParenthesisIndex); - $startParenthesisToken = $this->tokens[$startParenthesisIndex]; - } - - return $startParenthesisToken->equals('('); - } - - public function getLastTokenIndexOfArrowFunction(int $index): int - { - if (!$this->tokens[$index]->isGivenKind(\T_FN)) { - throw new \InvalidArgumentException(\sprintf('Not an "arrow function" at given index %d.', $index)); - } - - $stopTokens = [')', ']', ',', ';', [\T_CLOSE_TAG]]; - $index = $this->tokens->getNextTokenOfKind($index, [[\T_DOUBLE_ARROW]]); - - while (true) { - $index = $this->tokens->getNextMeaningfulToken($index); - - if ($this->tokens[$index]->equalsAny($stopTokens)) { - break; - } - - $blockType = Tokens::detectBlockType($this->tokens[$index]); - - if (null === $blockType) { - continue; - } - - if ($blockType['isStart']) { - $index = $this->tokens->findBlockEnd($blockType['type'], $index); - - continue; - } - - break; - } - - return $this->tokens->getPrevMeaningfulToken($index); - } - - /** - * Check if the T_STRING under given index is a constant invocation. - */ - public function isConstantInvocation(int $index): bool - { - if (!$this->tokens[$index]->isGivenKind(\T_STRING)) { - throw new \LogicException(\sprintf('No T_STRING at given index %d, got "%s".', $index, $this->tokens[$index]->getName())); - } - - $nextIndex = $this->tokens->getNextMeaningfulToken($index); - - if ( - $this->tokens[$nextIndex]->equalsAny(['(', '{']) - || $this->tokens[$nextIndex]->isGivenKind([\T_DOUBLE_COLON, \T_ELLIPSIS, \T_NS_SEPARATOR, CT::T_RETURN_REF, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION, \T_VARIABLE]) - ) { - return false; - } - - // handle foreach( FOO as $_ ) {} - if ($this->tokens[$nextIndex]->isGivenKind(\T_AS)) { - $prevIndex = $this->tokens->getPrevMeaningfulToken($index); - - if (!$this->tokens[$prevIndex]->equals('(')) { - return false; - } - } - - $prevIndex = $this->tokens->getPrevMeaningfulToken($index); - - if ($this->tokens[$prevIndex]->isGivenKind(Token::getClassyTokenKinds())) { - return false; - } - - if ($this->tokens[$prevIndex]->isGivenKind([\T_AS, \T_CONST, \T_DOUBLE_COLON, \T_FUNCTION, \T_GOTO, CT::T_GROUP_IMPORT_BRACE_OPEN, CT::T_TYPE_COLON, CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION]) || $this->tokens[$prevIndex]->isObjectOperator()) { - return false; - } - - if ( - $this->tokens[$prevIndex]->isGivenKind(\T_CASE) - && $this->tokens->isAllTokenKindsFound([FCT::T_ENUM]) - ) { - $enumSwitchIndex = $this->tokens->getPrevTokenOfKind($index, [[\T_SWITCH], [\T_ENUM]]); - - if (!$this->tokens[$enumSwitchIndex]->isGivenKind(\T_SWITCH)) { - return false; - } - } - - while ($this->tokens[$prevIndex]->isGivenKind([CT::T_NAMESPACE_OPERATOR, \T_NS_SEPARATOR, \T_STRING, CT::T_ARRAY_TYPEHINT])) { - $prevIndex = $this->tokens->getPrevMeaningfulToken($prevIndex); - } - - if ($this->tokens[$prevIndex]->isGivenKind([CT::T_CONST_IMPORT, \T_EXTENDS, CT::T_FUNCTION_IMPORT, \T_IMPLEMENTS, \T_INSTANCEOF, \T_INSTEADOF, \T_NAMESPACE, \T_NEW, CT::T_NULLABLE_TYPE, CT::T_TYPE_COLON, \T_USE, CT::T_USE_TRAIT, CT::T_TYPE_INTERSECTION, CT::T_TYPE_ALTERNATION, \T_CONST, CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE])) { - return false; - } - - // `FOO & $bar` could be: - // - function reference parameter: function baz(Foo & $bar) {} - // - bit operator: $x = FOO & $bar; - if ($this->tokens[$nextIndex]->equals('&') && $this->tokens[$this->tokens->getNextMeaningfulToken($nextIndex)]->isGivenKind(\T_VARIABLE)) { - $checkIndex = $this->tokens->getPrevTokenOfKind($prevIndex, [';', '{', '}', [\T_FUNCTION], [\T_OPEN_TAG], [\T_OPEN_TAG_WITH_ECHO]]); - - if ($this->tokens[$checkIndex]->isGivenKind(\T_FUNCTION)) { - return false; - } - } - - // check for `extends`/`implements`/`use` list - if ($this->tokens[$prevIndex]->equals(',')) { - $checkIndex = $prevIndex; - - while ($this->tokens[$checkIndex]->equalsAny([',', [\T_AS], [CT::T_NAMESPACE_OPERATOR], [\T_NS_SEPARATOR], [\T_STRING]])) { - $checkIndex = $this->tokens->getPrevMeaningfulToken($checkIndex); - } - - if ($this->tokens[$checkIndex]->isGivenKind([\T_EXTENDS, CT::T_GROUP_IMPORT_BRACE_OPEN, \T_IMPLEMENTS, \T_USE, CT::T_USE_TRAIT])) { - return false; - } - } - - // check for array in double quoted string: `"..$foo[bar].."` - if ($this->tokens[$prevIndex]->equals('[') && $this->tokens[$nextIndex]->equals(']')) { - $checkToken = $this->tokens[$this->tokens->getNextMeaningfulToken($nextIndex)]; - - if ($checkToken->equals('"') || $checkToken->isGivenKind([\T_CURLY_OPEN, \T_DOLLAR_OPEN_CURLY_BRACES, \T_ENCAPSED_AND_WHITESPACE, \T_VARIABLE])) { - return false; - } - } - - // check for attribute: `#[Foo]` - if (AttributeAnalyzer::isAttribute($this->tokens, $index)) { - return false; - } - - // check for goto label - if ($this->tokens[$nextIndex]->equals(':')) { - if ($this->gotoLabelAnalyzer->belongsToGoToLabel($this->tokens, $nextIndex)) { - return false; - } - } - - // check for non-capturing catches - - while ($this->tokens[$prevIndex]->isGivenKind([CT::T_NAMESPACE_OPERATOR, \T_NS_SEPARATOR, \T_STRING, CT::T_TYPE_ALTERNATION])) { - $prevIndex = $this->tokens->getPrevMeaningfulToken($prevIndex); - } - - if ($this->tokens[$prevIndex]->equals('(')) { - $prevPrevIndex = $this->tokens->getPrevMeaningfulToken($prevIndex); - - if ($this->tokens[$prevPrevIndex]->isGivenKind(\T_CATCH)) { - return false; - } - } - - return true; - } - - /** - * Checks if there is a unary successor operator under given index. - */ - public function isUnarySuccessorOperator(int $index): bool - { - $tokens = $this->tokens; - $token = $tokens[$index]; - - if (!$token->isGivenKind([\T_INC, \T_DEC])) { - return false; - } - - $prevToken = $tokens[$tokens->getPrevMeaningfulToken($index)]; - - return $prevToken->equalsAny([ - ']', - [\T_STRING], - [\T_VARIABLE], - [CT::T_ARRAY_INDEX_BRACE_CLOSE], - [CT::T_DYNAMIC_PROP_BRACE_CLOSE], - [CT::T_DYNAMIC_VAR_BRACE_CLOSE], - ]); - } - - /** - * Checks if there is a unary predecessor operator under given index. - */ - public function isUnaryPredecessorOperator(int $index): bool - { - $tokens = $this->tokens; - $token = $tokens[$index]; - - // potential unary successor operator - if ($token->isGivenKind([\T_INC, \T_DEC])) { - return !$this->isUnarySuccessorOperator($index); - } - - // always unary predecessor operator - if ($token->equalsAny(['!', '~', '@', [\T_ELLIPSIS]])) { - return true; - } - - // potential binary operator - if (!$token->equalsAny(['+', '-', '&', [CT::T_RETURN_REF]])) { - return false; - } - - $prevToken = $tokens[$tokens->getPrevMeaningfulToken($index)]; - - if (!$prevToken->equalsAny([ - ']', - '}', - ')', - '"', - '`', - [CT::T_ARRAY_BRACKET_CLOSE], - [CT::T_ARRAY_INDEX_BRACE_CLOSE], - [CT::T_DYNAMIC_PROP_BRACE_CLOSE], - [CT::T_DYNAMIC_VAR_BRACE_CLOSE], - [\T_CLASS_C], - [\T_CONSTANT_ENCAPSED_STRING], - [\T_DEC], - [\T_DIR], - [\T_DNUMBER], - [\T_FILE], - [\T_FUNC_C], - [\T_INC], - [\T_LINE], - [\T_LNUMBER], - [\T_METHOD_C], - [\T_NS_C], - [\T_STRING], - [\T_TRAIT_C], - [\T_VARIABLE], - ])) { - return true; - } - - if (!$token->equals('&') || !$prevToken->isGivenKind(\T_STRING)) { - return false; - } - - $prevToken = $tokens[$tokens->getPrevTokenOfKind($index, [ - ';', - '{', - '}', - [\T_DOUBLE_ARROW], - [\T_FN], - [\T_FUNCTION], - [\T_OPEN_TAG], - [\T_OPEN_TAG_WITH_ECHO], - ])]; - - return $prevToken->isGivenKind([\T_FN, \T_FUNCTION]); - } - - /** - * Checks if there is a binary operator under given index. - */ - public function isBinaryOperator(int $index): bool - { - $tokens = $this->tokens; - $token = $tokens[$index]; - - if ($token->isGivenKind([\T_INLINE_HTML, \T_ENCAPSED_AND_WHITESPACE, CT::T_TYPE_INTERSECTION])) { - return false; - } - - // potential unary predecessor operator - if (\in_array($token->getContent(), ['+', '-', '&'], true)) { - return !$this->isUnaryPredecessorOperator($index); - } - - if ($token->isArray()) { - return \in_array($token->getId(), [ - \T_AND_EQUAL, // &= - \T_BOOLEAN_AND, // && - \T_BOOLEAN_OR, // || - \T_CONCAT_EQUAL, // .= - \T_DIV_EQUAL, // /= - \T_DOUBLE_ARROW, // => - \T_IS_EQUAL, // == - \T_IS_GREATER_OR_EQUAL, // >= - \T_IS_IDENTICAL, // === - \T_IS_NOT_EQUAL, // !=, <> - \T_IS_NOT_IDENTICAL, // !== - \T_IS_SMALLER_OR_EQUAL, // <= - \T_LOGICAL_AND, // and - \T_LOGICAL_OR, // or - \T_LOGICAL_XOR, // xor - \T_MINUS_EQUAL, // -= - \T_MOD_EQUAL, // %= - \T_MUL_EQUAL, // *= - \T_OR_EQUAL, // |= - \T_PLUS_EQUAL, // += - \T_POW, // ** - \T_POW_EQUAL, // **= - \T_SL, // << - \T_SL_EQUAL, // <<= - \T_SR, // >> - \T_SR_EQUAL, // >>= - \T_XOR_EQUAL, // ^= - \T_SPACESHIP, // <=> - \T_COALESCE, // ?? - \T_COALESCE_EQUAL, // ??= - ], true); - } - - if (\in_array($token->getContent(), ['=', '*', '/', '%', '<', '>', '|', '^', '.'], true)) { - return true; - } - - return false; - } - - /** - * Check if `T_WHILE` token at given index is `do { ... } while ();` syntax - * and not `while () { ...}`. - */ - public function isWhilePartOfDoWhile(int $index): bool - { - $tokens = $this->tokens; - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_WHILE)) { - throw new \LogicException(\sprintf('No T_WHILE at given index %d, got "%s".', $index, $token->getName())); - } - - $endIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$endIndex]->equals('}')) { - return false; - } - - $startIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $endIndex); - $beforeStartIndex = $tokens->getPrevMeaningfulToken($startIndex); - - return $tokens[$beforeStartIndex]->isGivenKind(\T_DO); - } - - /** - * @throws \LogicException when provided index does not point to token containing T_CASE - */ - public function isEnumCase(int $caseIndex): bool - { - $tokens = $this->tokens; - $token = $tokens[$caseIndex]; - - if (!$token->isGivenKind(\T_CASE)) { - throw new \LogicException(\sprintf( - 'No T_CASE given at index %d, got %s instead.', - $caseIndex, - $token->getName() ?? $token->getContent(), - )); - } - - if (!$tokens->isTokenKindFound(FCT::T_ENUM)) { - return false; - } - - $prevIndex = $caseIndex; - - // get the T_ENUM or T_SWITCH that is matching the T_CASE, detecting and skipping the {...} blocks in between, as they may have nested switch-case - while (true) { - $prevIndex = $tokens->getPrevTokenOfKind($prevIndex, ['}', [\T_ENUM], [\T_SWITCH]]); - \assert(null !== $prevIndex); - - if ($tokens[$prevIndex]->equals('}')) { - $prevIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $prevIndex); - } else { - break; - } - } - - return $tokens[$prevIndex]->isGivenKind(\T_ENUM); - } - - public function isSuperGlobal(int $index): bool - { - $token = $this->tokens[$index]; - - if (!$token->isGivenKind(\T_VARIABLE)) { - return false; - } - - return \in_array(strtoupper($token->getContent()), [ - '$_COOKIE', - '$_ENV', - '$_FILES', - '$_GET', - '$_POST', - '$_REQUEST', - '$_SERVER', - '$_SESSION', - '$GLOBALS', - ], true); - } - - /** - * Find classy elements. - * - * Searches in tokens from the classy (start) index till the end (index) of the classy. - * Returns an array; first value is the index until the method has analysed (int), second the found classy elements (array). - * - * @param int $classIndex classy index - * - * @return array{int, array} - */ - private function findClassyElements(int $classIndex, int $index): array - { - $elements = []; - $curlyBracesLevel = 0; - $bracesLevel = 0; - ++$index; // skip the classy index itself - - for ($count = \count($this->tokens); $index < $count; ++$index) { - $token = $this->tokens[$index]; - - if ($token->isGivenKind(\T_ENCAPSED_AND_WHITESPACE)) { - continue; - } - - if ($token->isGivenKind(\T_CLASS)) { // anonymous class in class - // check for nested anonymous classes inside the new call of an anonymous class, - // for example `new class(function (){new class(function (){new class(function (){}){};}){};}){};` etc. - // if class(XYZ) {} skip till `(` as XYZ might contain functions etc. - - $nestedClassIndex = $index; - $index = $this->tokens->getNextMeaningfulToken($index); - - if ($this->tokens[$index]->equals('(')) { - ++$index; // move after `(` - - for ($nestedBracesLevel = 1; $index < $count; ++$index) { - $token = $this->tokens[$index]; - - if ($token->equals('(')) { - ++$nestedBracesLevel; - - continue; - } - - if ($token->equals(')')) { - --$nestedBracesLevel; - - if (0 === $nestedBracesLevel) { - [$index, $newElements] = $this->findClassyElements($nestedClassIndex, $index); - $elements += $newElements; - - break; - } - - continue; - } - - if ($token->isGivenKind(\T_CLASS)) { // anonymous class in class - [$index, $newElements] = $this->findClassyElements($index, $index); - $elements += $newElements; - } - } - } else { - [$index, $newElements] = $this->findClassyElements($nestedClassIndex, $nestedClassIndex); - $elements += $newElements; - } - - continue; - } - - if ($token->equals('(')) { - ++$bracesLevel; - - continue; - } - - if ($token->equals(')')) { - --$bracesLevel; - - continue; - } - - if ($token->equals('{')) { - ++$curlyBracesLevel; - - continue; - } - - if ($token->equals('}')) { - --$curlyBracesLevel; - - if (0 === $curlyBracesLevel) { - break; - } - - continue; - } - - if (1 !== $curlyBracesLevel || !$token->isArray()) { - continue; - } - - if (0 === $bracesLevel && $token->isGivenKind(\T_VARIABLE)) { - $elements[$index] = [ - 'classIndex' => $classIndex, - 'token' => $token, - 'type' => 'property', - ]; - - continue; - } - - if ($token->isGivenKind(CT::T_PROPERTY_HOOK_BRACE_OPEN)) { - $index = $this->tokens->getNextTokenOfKind($index, [[CT::T_PROPERTY_HOOK_BRACE_CLOSE]]); - - continue; - } - - if ($token->isGivenKind(FCT::T_ATTRIBUTE)) { - $index = $this->tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $index); - - continue; - } - - if ($token->isGivenKind(\T_FUNCTION)) { - $functionNameIndex = $this->tokens->getNextMeaningfulToken($index); - if ($this->tokens[$functionNameIndex]->equals('(')) { - continue; - } - $elements[$index] = [ - 'classIndex' => $classIndex, - 'token' => $token, - 'type' => 'method', - ]; - if ('__construct' === $this->tokens[$functionNameIndex]->getContent()) { - $openParenthesis = $this->tokens->getNextMeaningfulToken($functionNameIndex); - $closeParenthesis = $this->tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesis); - foreach ($this->tokens->findGivenKind([CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, FCT::T_PRIVATE_SET, FCT::T_PROTECTED_SET, FCT::T_PUBLIC_SET, FCT::T_READONLY, \T_FINAL], $openParenthesis, $closeParenthesis) as $kindElements) { - foreach (array_keys($kindElements) as $promotedPropertyModifierIndex) { - /** @var int $promotedPropertyVariableIndex */ - $promotedPropertyVariableIndex = $this->tokens->getNextTokenOfKind($promotedPropertyModifierIndex, [[\T_VARIABLE]]); - $elements[$promotedPropertyVariableIndex] = [ - 'classIndex' => $classIndex, - 'token' => $this->tokens[$promotedPropertyVariableIndex], - 'type' => 'promoted_property', - ]; - } - } - } - } elseif ($token->isGivenKind(\T_CONST)) { - $elements[$index] = [ - 'classIndex' => $classIndex, - 'token' => $token, - 'type' => 'const', - ]; - } elseif ($token->isGivenKind(CT::T_USE_TRAIT)) { - $elements[$index] = [ - 'classIndex' => $classIndex, - 'token' => $token, - 'type' => 'trait_import', - ]; - } elseif ($token->isGivenKind(\T_CASE)) { - $elements[$index] = [ - 'classIndex' => $classIndex, - 'token' => $token, - 'type' => 'case', - ]; - } - } - - return [$index, $elements]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php deleted file mode 100644 index 37ee3ab..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php +++ /dev/null @@ -1,56 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform `array` typehint from T_ARRAY into CT::T_ARRAY_TYPEHINT. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ArrayTypehintTransformer extends AbstractTransformer -{ - public function getRequiredPhpVersionId(): int - { - return 5_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$token->isGivenKind(\T_ARRAY)) { - return; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - $nextToken = $tokens[$nextIndex]; - - if (!$nextToken->equals('(')) { - $tokens[$index] = new Token([CT::T_ARRAY_TYPEHINT, $token->getContent()]); - } - } - - public function getCustomTokens(): array - { - return [CT::T_ARRAY_TYPEHINT]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/AttributeTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/AttributeTransformer.php deleted file mode 100644 index acc0412..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/AttributeTransformer.php +++ /dev/null @@ -1,65 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transforms attribute related Tokens. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class AttributeTransformer extends AbstractTransformer -{ - public function getPriority(): int - { - // must run before all other transformers that might touch attributes - return 200; - } - - public function getRequiredPhpVersionId(): int - { - return 8_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$tokens[$index]->isGivenKind(\T_ATTRIBUTE)) { - return; - } - - do { - ++$index; - - if ($tokens[$index]->equals('(')) { - $index = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index) + 1; - } - } while (!$tokens[$index]->equals(']')); - - $tokens[$index] = new Token([CT::T_ATTRIBUTE_CLOSE, ']']); - } - - public function getCustomTokens(): array - { - return [ - CT::T_ATTRIBUTE_CLOSE, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php deleted file mode 100644 index 5f8f1be..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php +++ /dev/null @@ -1,82 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform braced class instantiation braces in `(new Foo())` into CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN - * and CT::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE. - * - * @author Sebastiaan Stok - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BraceClassInstantiationTransformer extends AbstractTransformer -{ - public function getPriority(): int - { - // must run after CurlyBraceTransformer and SquareBraceTransformer - return -2; - } - - public function getRequiredPhpVersionId(): int - { - return 5_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$tokens[$index]->equals('(') || !$tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind(\T_NEW)) { - return; - } - - if ($tokens[$tokens->getPrevMeaningfulToken($index)]->equalsAny([ - ')', - ']', - [CT::T_ARRAY_INDEX_BRACE_CLOSE], - [CT::T_ARRAY_BRACKET_CLOSE], - [CT::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE], - [\T_ARRAY], - [\T_CLASS], - [\T_ELSEIF], - [\T_FOR], - [\T_FOREACH], - [\T_IF], - [\T_STATIC], - [\T_STRING], - [\T_SWITCH], - [\T_VARIABLE], - [\T_WHILE], - ])) { - return; - } - - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - - $tokens[$index] = new Token([CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN, '(']); - $tokens[$closeIndex] = new Token([CT::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE, ')']); - } - - public function getCustomTokens(): array - { - return [CT::T_CLASS_INSTANTIATION_PARENTHESIS_OPEN, CT::T_CLASS_INSTANTIATION_PARENTHESIS_CLOSE]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceTransformer.php deleted file mode 100644 index 8b93b85..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceTransformer.php +++ /dev/null @@ -1,363 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform discriminate overloaded curly braces tokens. - * - * Performed transformations: - * - closing `}` for T_CURLY_OPEN into CT::T_CURLY_CLOSE, - * - closing `}` for T_DOLLAR_OPEN_CURLY_BRACES into CT::T_DOLLAR_CLOSE_CURLY_BRACES, - * - in `$foo->{$bar}` into CT::T_DYNAMIC_PROP_BRACE_OPEN and CT::T_DYNAMIC_PROP_BRACE_CLOSE, - * - in `${$foo}` into CT::T_DYNAMIC_VAR_BRACE_OPEN and CT::T_DYNAMIC_VAR_BRACE_CLOSE, - * - in `$array{$index}` into CT::T_ARRAY_INDEX_BRACE_OPEN and CT::T_ARRAY_INDEX_BRACE_CLOSE, - * - in `use some\a\{ClassA, ClassB, ClassC as C}` into CT::T_GROUP_IMPORT_BRACE_OPEN, CT::T_GROUP_IMPORT_BRACE_CLOSE, - * - in `class PropertyHooks { public string $bar _{_ set(string $value) { } _}_` into CT::T_PROPERTY_HOOK_BRACE_OPEN, CT::T_PROPERTY_HOOK_BRACE_CLOSE. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class BraceTransformer extends AbstractTransformer -{ - public function getRequiredPhpVersionId(): int - { - return 5_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - $this->transformIntoCurlyCloseBrace($tokens, $index); - $this->transformIntoDollarCloseBrace($tokens, $index); - $this->transformIntoDynamicPropBraces($tokens, $index); - $this->transformIntoDynamicVarBraces($tokens, $index); - $this->transformIntoPropertyHookBraces($tokens, $index); - $this->transformIntoCurlyIndexBraces($tokens, $index); - $this->transformIntoGroupUseBraces($tokens, $index); - $this->transformIntoDynamicClassConstantFetchBraces($tokens, $index); - } - - public function getCustomTokens(): array - { - return [ - CT::T_CURLY_CLOSE, - CT::T_DOLLAR_CLOSE_CURLY_BRACES, - CT::T_DYNAMIC_PROP_BRACE_OPEN, - CT::T_DYNAMIC_PROP_BRACE_CLOSE, - CT::T_DYNAMIC_VAR_BRACE_OPEN, - CT::T_DYNAMIC_VAR_BRACE_CLOSE, - CT::T_ARRAY_INDEX_BRACE_OPEN, - CT::T_ARRAY_INDEX_BRACE_CLOSE, - CT::T_GROUP_IMPORT_BRACE_OPEN, - CT::T_GROUP_IMPORT_BRACE_CLOSE, - CT::T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_OPEN, - CT::T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_CLOSE, - CT::T_PROPERTY_HOOK_BRACE_OPEN, - CT::T_PROPERTY_HOOK_BRACE_CLOSE, - ]; - } - - /** - * Transform closing `}` for T_CURLY_OPEN into CT::T_CURLY_CLOSE. - * - * This should be done at very beginning of curly braces transformations. - */ - private function transformIntoCurlyCloseBrace(Tokens $tokens, int $index): void - { - $token = $tokens[$index]; - - if (!$token->isGivenKind(\T_CURLY_OPEN)) { - return; - } - - $level = 1; - - do { - ++$index; - - if ($tokens[$index]->equals('{') || $tokens[$index]->isGivenKind(\T_CURLY_OPEN)) { // we count all kind of { - ++$level; - } elseif ($tokens[$index]->equals('}')) { // we count all kind of } - --$level; - } - } while (0 < $level); - - $tokens[$index] = new Token([CT::T_CURLY_CLOSE, '}']); - } - - private function transformIntoDollarCloseBrace(Tokens $tokens, int $index): void - { - $token = $tokens[$index]; - - if ($token->isGivenKind(\T_DOLLAR_OPEN_CURLY_BRACES)) { - $nextIndex = $tokens->getNextTokenOfKind($index, ['}']); - $tokens[$nextIndex] = new Token([CT::T_DOLLAR_CLOSE_CURLY_BRACES, '}']); - } - } - - private function transformIntoDynamicPropBraces(Tokens $tokens, int $index): void - { - $token = $tokens[$index]; - - if (!$token->isObjectOperator()) { - return; - } - - if (!$tokens[$index + 1]->equals('{')) { - return; - } - - $openIndex = $index + 1; - $closeIndex = $this->naivelyFindCurlyBlockEnd($tokens, $openIndex); - - $tokens[$openIndex] = new Token([CT::T_DYNAMIC_PROP_BRACE_OPEN, '{']); - $tokens[$closeIndex] = new Token([CT::T_DYNAMIC_PROP_BRACE_CLOSE, '}']); - } - - private function transformIntoDynamicVarBraces(Tokens $tokens, int $index): void - { - $token = $tokens[$index]; - - if (!$token->equals('$')) { - return; - } - - $openIndex = $tokens->getNextMeaningfulToken($index); - - if (null === $openIndex) { - return; - } - - $openToken = $tokens[$openIndex]; - - if (!$openToken->equals('{')) { - return; - } - - $closeIndex = $this->naivelyFindCurlyBlockEnd($tokens, $openIndex); - - $tokens[$openIndex] = new Token([CT::T_DYNAMIC_VAR_BRACE_OPEN, '{']); - $tokens[$closeIndex] = new Token([CT::T_DYNAMIC_VAR_BRACE_CLOSE, '}']); - } - - private function transformIntoPropertyHookBraces(Tokens $tokens, int $index): void - { - if (\PHP_VERSION_ID < 8_04_00) { - return; // @TODO: drop condition when PHP 8.4+ is required or majority of the users are using 8.4+ - } - - $token = $tokens[$index]; - - if (!$token->equals('{')) { - return; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - - // skip attributes - while ($tokens[$nextIndex]->isGivenKind(FCT::T_ATTRIBUTE)) { - $nextIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ATTRIBUTE, $nextIndex); - $nextIndex = $tokens->getNextMeaningfulToken($nextIndex); - } - - if (!$tokens[$nextIndex]->equalsAny([ - [\T_STRING, 'get'], - [\T_STRING, 'set'], - ], false)) { - return; - } - - $nextNextIndex = $tokens->getNextMeaningfulToken($nextIndex); - - if (!$tokens[$nextNextIndex]->equalsAny(['(', '{', ';', [\T_DOUBLE_ARROW]])) { - return; - } - - if ($tokens[$nextNextIndex]->equals('(')) { - $closeParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $nextNextIndex); - $afterCloseParenthesisIndex = $tokens->getNextMeaningfulToken($closeParenthesisIndex); - if (!$tokens[$afterCloseParenthesisIndex]->equalsAny(['{', [\T_DOUBLE_ARROW]])) { - return; - } - } - - $closeIndex = $this->naivelyFindCurlyBlockEnd($tokens, $index); - - $tokens[$index] = new Token([CT::T_PROPERTY_HOOK_BRACE_OPEN, '{']); - $tokens[$closeIndex] = new Token([CT::T_PROPERTY_HOOK_BRACE_CLOSE, '}']); - } - - private function transformIntoCurlyIndexBraces(Tokens $tokens, int $index): void - { - // Support for fetching array index with braces syntax (`$arr{$index}`) - // was deprecated in 7.4 and removed in 8.0. However, the PHP's behaviour - // differs between 8.0-8.3 (fatal error in runtime) and 8.4 (parse error). - // - // @TODO Do not replace `CT::T_ARRAY_INDEX_CURLY_BRACE_*` for 8.0-8.3, as further optimization - if (\PHP_VERSION_ID >= 8_04_00) { - return; - } - - $token = $tokens[$index]; - - if (!$token->equals('{')) { - return; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$prevIndex]->equalsAny([ - [\T_STRING], - [\T_VARIABLE], - [CT::T_ARRAY_INDEX_BRACE_CLOSE], - ']', - ')', - ])) { - return; - } - - if ( - $tokens[$prevIndex]->isGivenKind(\T_STRING) - && !$tokens[$tokens->getPrevMeaningfulToken($prevIndex)]->isObjectOperator() - ) { - return; - } - - if ( - $tokens[$prevIndex]->equals(')') - && !$tokens[$tokens->getPrevMeaningfulToken( - $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $prevIndex), - )]->isGivenKind(\T_ARRAY) - ) { - return; - } - - $closeIndex = $this->naivelyFindCurlyBlockEnd($tokens, $index); - - $tokens[$index] = new Token([CT::T_ARRAY_INDEX_BRACE_OPEN, '{']); - $tokens[$closeIndex] = new Token([CT::T_ARRAY_INDEX_BRACE_CLOSE, '}']); - } - - private function transformIntoGroupUseBraces(Tokens $tokens, int $index): void - { - $token = $tokens[$index]; - - if (!$token->equals('{')) { - return; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$prevIndex]->isGivenKind(\T_NS_SEPARATOR)) { - return; - } - - $closeIndex = $this->naivelyFindCurlyBlockEnd($tokens, $index); - - $tokens[$index] = new Token([CT::T_GROUP_IMPORT_BRACE_OPEN, '{']); - $tokens[$closeIndex] = new Token([CT::T_GROUP_IMPORT_BRACE_CLOSE, '}']); - } - - private function transformIntoDynamicClassConstantFetchBraces(Tokens $tokens, int $index): void - { - if (\PHP_VERSION_ID < 8_03_00) { - return; // @TODO: drop condition when PHP 8.3+ is required or majority of the users are using 8.3+ - } - - $token = $tokens[$index]; - - if (!$token->equals('{')) { - return; - } - - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($index); - - while (!$tokens[$prevMeaningfulTokenIndex]->isGivenKind(\T_DOUBLE_COLON)) { - if (!$tokens[$prevMeaningfulTokenIndex]->equals(')')) { - return; - } - - $prevMeaningfulTokenIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $prevMeaningfulTokenIndex); - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($prevMeaningfulTokenIndex); - - if (!$tokens[$prevMeaningfulTokenIndex]->equals('}')) { - return; - } - - $prevMeaningfulTokenIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_BRACE, $prevMeaningfulTokenIndex); - $prevMeaningfulTokenIndex = $tokens->getPrevMeaningfulToken($prevMeaningfulTokenIndex); - } - - $closeIndex = $this->naivelyFindCurlyBlockEnd($tokens, $index); - $nextMeaningfulTokenIndexAfterCloseIndex = $tokens->getNextMeaningfulToken($closeIndex); - - if (!$tokens[$nextMeaningfulTokenIndexAfterCloseIndex]->equalsAny([';', [\T_CLOSE_TAG], [\T_DOUBLE_COLON]])) { - return; - } - - $tokens[$index] = new Token([CT::T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_OPEN, '{']); - $tokens[$closeIndex] = new Token([CT::T_DYNAMIC_CLASS_CONSTANT_FETCH_BRACE_CLOSE, '}']); - } - - /** - * We do not want to rely on `$tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index)` here, - * as it relies on block types that are assuming that `}` tokens are already transformed to Custom Tokens that are allowing to distinguish different block types. - * As we are just about to transform `{` and `}` into Custom Tokens by this transformer, thus we need to compare those tokens manually by content without using `Tokens::findBlockEnd`. - */ - private function naivelyFindCurlyBlockEnd(Tokens $tokens, int $startIndex): int - { - if (!$tokens->offsetExists($startIndex)) { - throw new \OutOfBoundsException(\sprintf('Unavailable index: "%s".', $startIndex)); - } - - if ('{' !== $tokens[$startIndex]->getContent()) { - throw new \InvalidArgumentException(\sprintf('Wrong start index: "%s".', $startIndex)); - } - - $blockLevel = 1; - $endIndex = $tokens->count() - 1; - for ($index = $startIndex + 1; $index !== $endIndex; ++$index) { - $token = $tokens[$index]; - - if ('{' === $token->getContent()) { - ++$blockLevel; - - continue; - } - - if ('}' === $token->getContent()) { - --$blockLevel; - - if (0 === $blockLevel) { - if (!$token->equals('}')) { - throw new \UnexpectedValueException(\sprintf('Detected block end for index: "%s" was already transformed into other token type: "%s".', $startIndex, $token->getName())); - } - - return $index; - } - } - } - - throw new \UnexpectedValueException(\sprintf('Missing block end for index: "%s".', $startIndex)); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php deleted file mode 100644 index 91b33a2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php +++ /dev/null @@ -1,59 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform `class` class' constant from T_CLASS into CT::T_CLASS_CONSTANT. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ClassConstantTransformer extends AbstractTransformer -{ - public function getRequiredPhpVersionId(): int - { - return 5_05_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$token->equalsAny([ - [\T_CLASS, 'class'], - [\T_STRING, 'class'], - ], false)) { - return; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $prevToken = $tokens[$prevIndex]; - - if ($prevToken->isGivenKind(\T_DOUBLE_COLON)) { - $tokens[$index] = new Token([CT::T_CLASS_CONSTANT, $token->getContent()]); - } - } - - public function getCustomTokens(): array - { - return [CT::T_CLASS_CONSTANT]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php deleted file mode 100644 index 5c44bb1..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php +++ /dev/null @@ -1,73 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transforms for Constructor Property Promotion. - * - * Transform T_PUBLIC, T_PROTECTED and T_PRIVATE of Constructor Property Promotion into custom tokens. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ConstructorPromotionTransformer extends AbstractTransformer -{ - public function getRequiredPhpVersionId(): int - { - return 8_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$tokens[$index]->isGivenKind(\T_FUNCTION)) { - return; - } - - $functionNameIndex = $tokens->getNextMeaningfulToken($index); - - if (!$tokens[$functionNameIndex]->isGivenKind(\T_STRING) || '__construct' !== strtolower($tokens[$functionNameIndex]->getContent())) { - return; - } - - /** @var int $openParenthesisIndex */ - $openParenthesisIndex = $tokens->getNextMeaningfulToken($functionNameIndex); // we are @ '(' now - $closeParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $openParenthesisIndex); - - for ($argsIndex = $openParenthesisIndex; $argsIndex < $closeParenthesisIndex; ++$argsIndex) { - if ($tokens[$argsIndex]->isGivenKind(\T_PUBLIC)) { - $tokens[$argsIndex] = new Token([CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, $tokens[$argsIndex]->getContent()]); - } elseif ($tokens[$argsIndex]->isGivenKind(\T_PROTECTED)) { - $tokens[$argsIndex] = new Token([CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, $tokens[$argsIndex]->getContent()]); - } elseif ($tokens[$argsIndex]->isGivenKind(\T_PRIVATE)) { - $tokens[$argsIndex] = new Token([CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, $tokens[$argsIndex]->getContent()]); - } - } - } - - public function getCustomTokens(): array - { - return [ - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED, - CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php deleted file mode 100644 index 5e39121..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform DNF parentheses into CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN and CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE. - * - * @see https://wiki.php.net/rfc/dnf_types - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class DisjunctiveNormalFormTypeParenthesisTransformer extends AbstractTransformer -{ - public function getPriority(): int - { - // needs to run after TypeAlternationTransformer - return -16; - } - - public function getRequiredPhpVersionId(): int - { - return 8_02_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if ($token->equals('(') && $tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind(CT::T_TYPE_ALTERNATION)) { - $openIndex = $index; - $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - } elseif ($token->equals(')') && $tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind(CT::T_TYPE_ALTERNATION)) { - $openIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $index); - $closeIndex = $index; - } else { - return; - } - - $tokens[$openIndex] = new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, '(']); - $tokens[$closeIndex] = new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE, ')']); - } - - public function getCustomTokens(): array - { - return [ - CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, - CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php deleted file mode 100644 index 75cb857..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php +++ /dev/null @@ -1,51 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class FirstClassCallableTransformer extends AbstractTransformer -{ - public function getRequiredPhpVersionId(): int - { - return 8_01_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if ( - $token->isGivenKind(\T_ELLIPSIS) - && $tokens[$tokens->getPrevMeaningfulToken($index)]->equals('(') - && $tokens[$tokens->getNextMeaningfulToken($index)]->equals(')') - ) { - $tokens[$index] = new Token([CT::T_FIRST_CLASS_CALLABLE, '...']); - } - } - - public function getCustomTokens(): array - { - return [ - CT::T_FIRST_CLASS_CALLABLE, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php deleted file mode 100644 index 304d753..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform const/function import tokens. - * - * Performed transformations: - * - T_CONST into CT::T_CONST_IMPORT - * - T_FUNCTION into CT::T_FUNCTION_IMPORT - * - * @author Gregor Harlan - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ImportTransformer extends AbstractTransformer -{ - public function getPriority(): int - { - // Should run after CurlyBraceTransformer and ReturnRefTransformer - return -1; - } - - public function getRequiredPhpVersionId(): int - { - return 5_06_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$token->isGivenKind([\T_CONST, \T_FUNCTION])) { - return; - } - - $prevToken = $tokens[$tokens->getPrevMeaningfulToken($index)]; - - if (!$prevToken->isGivenKind(\T_USE)) { - $nextToken = $tokens[$tokens->getNextTokenOfKind($index, ['=', '(', [CT::T_RETURN_REF], [CT::T_GROUP_IMPORT_BRACE_CLOSE]])]; - - if (!$nextToken->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE)) { - return; - } - } - - $tokens[$index] = new Token([ - $token->isGivenKind(\T_FUNCTION) ? CT::T_FUNCTION_IMPORT : CT::T_CONST_IMPORT, - $token->getContent(), - ]); - } - - public function getCustomTokens(): array - { - return [CT::T_CONST_IMPORT, CT::T_FUNCTION_IMPORT]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php deleted file mode 100644 index 7eabdd7..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php +++ /dev/null @@ -1,72 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Processor\ImportProcessor; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform NAME_QUALIFIED, T_NAME_FULLY_QUALIFIED and T_NAME_RELATIVE into T_NAMESPACE T_NS_SEPARATOR T_STRING. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NameQualifiedTransformer extends AbstractTransformer -{ - public function getPriority(): int - { - return 1; // must run before NamespaceOperatorTransformer - } - - public function getRequiredPhpVersionId(): int - { - return 8_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if ($token->isGivenKind([FCT::T_NAME_QUALIFIED, FCT::T_NAME_FULLY_QUALIFIED])) { - $this->transformQualified($tokens, $token, $index); - } elseif ($token->isGivenKind(FCT::T_NAME_RELATIVE)) { - $this->transformRelative($tokens, $token, $index); - } - } - - public function getCustomTokens(): array - { - return []; - } - - private function transformQualified(Tokens $tokens, Token $token, int $index): void - { - \assert('' !== $token->getContent()); - $newTokens = ImportProcessor::tokenizeName($token->getContent()); - - $tokens->overrideRange($index, $index, $newTokens); - } - - private function transformRelative(Tokens $tokens, Token $token, int $index): void - { - \assert('' !== $token->getContent()); - $newTokens = ImportProcessor::tokenizeName($token->getContent()); - $newTokens[0] = new Token([\T_NAMESPACE, 'namespace']); - - $tokens->overrideRange($index, $index, $newTokens); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamedArgumentTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamedArgumentTransformer.php deleted file mode 100644 index 4078bf4..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamedArgumentTransformer.php +++ /dev/null @@ -1,75 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform named argument tokens. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NamedArgumentTransformer extends AbstractTransformer -{ - public function getPriority(): int - { - // needs to run after TypeColonTransformer - return -15; - } - - public function getRequiredPhpVersionId(): int - { - return 8_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$tokens[$index]->equals(':')) { - return; - } - - $stringIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$stringIndex]->isGivenKind(\T_STRING)) { - return; - } - - $preStringIndex = $tokens->getPrevMeaningfulToken($stringIndex); - - // if equals any [';', '{', '}', [T_OPEN_TAG]] than it is a goto label - // if equals ')' than likely it is a type colon, but sure not a name argument - // if equals '?' than it is part of ternary statement - - if (!$tokens[$preStringIndex]->equalsAny([',', '('])) { - return; - } - - $tokens[$stringIndex] = new Token([CT::T_NAMED_ARGUMENT_NAME, $tokens[$stringIndex]->getContent()]); - $tokens[$index] = new Token([CT::T_NAMED_ARGUMENT_COLON, ':']); - } - - public function getCustomTokens(): array - { - return [ - CT::T_NAMED_ARGUMENT_COLON, - CT::T_NAMED_ARGUMENT_NAME, - ]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php deleted file mode 100644 index 484312f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php +++ /dev/null @@ -1,55 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform `namespace` operator from T_NAMESPACE into CT::T_NAMESPACE_OPERATOR. - * - * @author Gregor Harlan - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NamespaceOperatorTransformer extends AbstractTransformer -{ - public function getRequiredPhpVersionId(): int - { - return 5_03_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$token->isGivenKind(\T_NAMESPACE)) { - return; - } - - $nextIndex = $tokens->getNextMeaningfulToken($index); - - if ($tokens[$nextIndex]->isGivenKind(\T_NS_SEPARATOR)) { - $tokens[$index] = new Token([CT::T_NAMESPACE_OPERATOR, $token->getContent()]); - } - } - - public function getCustomTokens(): array - { - return [CT::T_NAMESPACE_OPERATOR]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php deleted file mode 100644 index 47465d6..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php +++ /dev/null @@ -1,93 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform `?` operator into CT::T_NULLABLE_TYPE in `function foo(?Bar $b) {}`. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class NullableTypeTransformer extends AbstractTransformer -{ - private const TYPES = [ - '(', - ',', - [CT::T_TYPE_COLON], - [CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC], - [CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED], - [CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE], - [CT::T_ATTRIBUTE_CLOSE], - [\T_PRIVATE], - [\T_PROTECTED], - [\T_PUBLIC], - [\T_VAR], - [\T_STATIC], - [\T_CONST], - [\T_ABSTRACT], - [\T_FINAL], - [FCT::T_READONLY], - [FCT::T_PRIVATE_SET], - [FCT::T_PROTECTED_SET], - [FCT::T_PUBLIC_SET], - ]; - - public function getPriority(): int - { - // needs to run after TypeColonTransformer - return -20; - } - - public function getRequiredPhpVersionId(): int - { - return 7_01_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$token->equals('?')) { - return; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - - if (!$tokens[$prevIndex]->equalsAny(self::TYPES)) { - return; - } - - if ( - $tokens[$prevIndex]->isGivenKind(\T_STATIC) - && $tokens[$tokens->getPrevMeaningfulToken($prevIndex)]->isGivenKind(\T_INSTANCEOF) - ) { - return; - } - - $tokens[$index] = new Token([CT::T_NULLABLE_TYPE, '?']); - } - - public function getCustomTokens(): array - { - return [CT::T_NULLABLE_TYPE]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php deleted file mode 100644 index fc178a0..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php +++ /dev/null @@ -1,49 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform `&` operator into CT::T_RETURN_REF in `function & foo() {}`. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ReturnRefTransformer extends AbstractTransformer -{ - public function getRequiredPhpVersionId(): int - { - return 5_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if ($token->equals('&') && $tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind([\T_FUNCTION, \T_FN])) { - $tokens[$index] = new Token([CT::T_RETURN_REF, '&']); - } - } - - public function getCustomTokens(): array - { - return [CT::T_RETURN_REF]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php deleted file mode 100644 index 4d6b55d..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php +++ /dev/null @@ -1,185 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform discriminate overloaded square braces tokens. - * - * Performed transformations: - * - in `[1, 2, 3]` into CT::T_ARRAY_BRACKET_OPEN and CT::T_ARRAY_BRACKET_CLOSE, - * - in `[$a, &$b, [$c]] = array(1, 2, array(3))` into CT::T_DESTRUCTURING_BRACKET_OPEN and CT::T_DESTRUCTURING_BRACKET_CLOSE. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class SquareBraceTransformer extends AbstractTransformer -{ - public function getPriority(): int - { - // must run after CurlyBraceTransformer and AttributeTransformer - return -1; - } - - public function getRequiredPhpVersionId(): int - { - // Short array syntax was introduced in PHP 5.4, but the fixer is smart - // enough to handle it even before 5.4. - // Same for array destructing syntax sugar `[` introduced in PHP 7.1. - return 5_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if ($this->isArrayDestructing($tokens, $index)) { - $this->transformIntoDestructuringSquareBrace($tokens, $index); - - return; - } - - if ($this->isShortArray($tokens, $index)) { - $this->transformIntoArraySquareBrace($tokens, $index); - } - } - - public function getCustomTokens(): array - { - return [ - CT::T_ARRAY_BRACKET_OPEN, - CT::T_ARRAY_BRACKET_CLOSE, - CT::T_DESTRUCTURING_BRACKET_OPEN, - CT::T_DESTRUCTURING_BRACKET_CLOSE, - ]; - } - - private function transformIntoArraySquareBrace(Tokens $tokens, int $index): void - { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_INDEX_BRACKET, $index); - - $tokens[$index] = new Token([CT::T_ARRAY_BRACKET_OPEN, '[']); - $tokens[$endIndex] = new Token([CT::T_ARRAY_BRACKET_CLOSE, ']']); - } - - private function transformIntoDestructuringSquareBrace(Tokens $tokens, int $index): void - { - $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_INDEX_BRACKET, $index); - - $tokens[$index] = new Token([CT::T_DESTRUCTURING_BRACKET_OPEN, '[']); - $tokens[$endIndex] = new Token([CT::T_DESTRUCTURING_BRACKET_CLOSE, ']']); - - $previousMeaningfulIndex = $index; - $index = $tokens->getNextMeaningfulToken($index); - - while ($index < $endIndex) { - if ($tokens[$index]->equals('[') && $tokens[$previousMeaningfulIndex]->equalsAny([[CT::T_DESTRUCTURING_BRACKET_OPEN], ','])) { - $tokens[$tokens->findBlockEnd(Tokens::BLOCK_TYPE_INDEX_BRACKET, $index)] = new Token([CT::T_DESTRUCTURING_BRACKET_CLOSE, ']']); - $tokens[$index] = new Token([CT::T_DESTRUCTURING_BRACKET_OPEN, '[']); - } - - $previousMeaningfulIndex = $index; - $index = $tokens->getNextMeaningfulToken($index); - } - } - - /** - * Check if token under given index is short array opening. - */ - private function isShortArray(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->equals('[')) { - return false; - } - - $prevToken = $tokens[$tokens->getPrevMeaningfulToken($index)]; - if ($prevToken->equalsAny([ - ')', - ']', - '}', - '"', - [\T_CONSTANT_ENCAPSED_STRING], - [\T_STRING], - [\T_STRING_VARNAME], - [\T_VARIABLE], - [CT::T_ARRAY_BRACKET_CLOSE], - [CT::T_DYNAMIC_PROP_BRACE_CLOSE], - [CT::T_DYNAMIC_VAR_BRACE_CLOSE], - [CT::T_ARRAY_INDEX_BRACE_CLOSE], - ])) { - return false; - } - - $nextToken = $tokens[$tokens->getNextMeaningfulToken($index)]; - if ($nextToken->equals(']')) { - return true; - } - - return !$this->isArrayDestructing($tokens, $index); - } - - private function isArrayDestructing(Tokens $tokens, int $index): bool - { - if (!$tokens[$index]->equals('[')) { - return false; - } - - $prevIndex = $tokens->getPrevMeaningfulToken($index); - $prevToken = $tokens[$prevIndex]; - if ($prevToken->equalsAny([ - ')', - ']', - '"', - [\T_CONSTANT_ENCAPSED_STRING], - [\T_STRING], - [\T_STRING_VARNAME], - [\T_VARIABLE], - [CT::T_ARRAY_BRACKET_CLOSE], - [CT::T_DYNAMIC_PROP_BRACE_CLOSE], - [CT::T_DYNAMIC_VAR_BRACE_CLOSE], - [CT::T_ARRAY_INDEX_BRACE_CLOSE], - ])) { - return false; - } - - if ($prevToken->isGivenKind(\T_AS)) { - return true; - } - - if ($prevToken->isGivenKind(\T_DOUBLE_ARROW)) { - $variableIndex = $tokens->getPrevMeaningfulToken($prevIndex); - if (!$tokens[$variableIndex]->isGivenKind(\T_VARIABLE)) { - return false; - } - - $prevVariableIndex = $tokens->getPrevMeaningfulToken($variableIndex); - if ($tokens[$prevVariableIndex]->isGivenKind(\T_AS)) { - return true; - } - } - - $type = Tokens::detectBlockType($tokens[$index]); - $end = $tokens->findBlockEnd($type['type'], $index); - - $nextToken = $tokens[$tokens->getNextMeaningfulToken($end)]; - - return $nextToken->equals('='); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php deleted file mode 100644 index 9bfaf95..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php +++ /dev/null @@ -1,59 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTypeTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform `|` operator into CT::T_TYPE_ALTERNATION in `function foo(Type1 | Type2 $x) {` - * or `} catch (ExceptionType1 | ExceptionType2 $e) {`. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TypeAlternationTransformer extends AbstractTypeTransformer -{ - public function getPriority(): int - { - // needs to run after ArrayTypehintTransformer, TypeColonTransformer and AttributeTransformer - return -15; - } - - public function getRequiredPhpVersionId(): int - { - return 7_01_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - $this->doProcess($tokens, $index, '|'); - } - - public function getCustomTokens(): array - { - return [CT::T_TYPE_ALTERNATION]; - } - - protected function replaceToken(Tokens $tokens, int $index): void - { - $tokens[$index] = new Token([CT::T_TYPE_ALTERNATION, '|']); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php deleted file mode 100644 index 7b9f342..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php +++ /dev/null @@ -1,83 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform `:` operator into CT::T_TYPE_COLON in `function foo() : int {}`. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TypeColonTransformer extends AbstractTransformer -{ - public function getPriority(): int - { - // needs to run after ReturnRefTransformer and UseTransformer - // and before TypeAlternationTransformer - return -10; - } - - public function getRequiredPhpVersionId(): int - { - return 7_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$token->equals(':')) { - return; - } - - $endIndex = $tokens->getPrevMeaningfulToken($index); - - if ($tokens[$tokens->getPrevMeaningfulToken($endIndex)]->isGivenKind(FCT::T_ENUM)) { - $tokens[$index] = new Token([CT::T_TYPE_COLON, ':']); - - return; - } - - if (!$tokens[$endIndex]->equals(')')) { - return; - } - - $startIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS, $endIndex); - $prevIndex = $tokens->getPrevMeaningfulToken($startIndex); - $prevToken = $tokens[$prevIndex]; - - // if this could be a function name we need to take one more step - if ($prevToken->isGivenKind(\T_STRING)) { - $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); - $prevToken = $tokens[$prevIndex]; - } - - if ($prevToken->isGivenKind([\T_FUNCTION, CT::T_RETURN_REF, CT::T_USE_LAMBDA, \T_FN])) { - $tokens[$index] = new Token([CT::T_TYPE_COLON, ':']); - } - } - - public function getCustomTokens(): array - { - return [CT::T_TYPE_COLON]; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeIntersectionTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeIntersectionTransformer.php deleted file mode 100644 index 174736e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeIntersectionTransformer.php +++ /dev/null @@ -1,57 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTypeTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform `&` operator into CT::T_TYPE_INTERSECTION in `function foo(Type1 & Type2 $x) {` - * or `} catch (ExceptionType1 & ExceptionType2 $e) {`. - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class TypeIntersectionTransformer extends AbstractTypeTransformer -{ - public function getPriority(): int - { - // needs to run after ArrayTypehintTransformer, TypeColonTransformer and AttributeTransformer - return -15; - } - - public function getRequiredPhpVersionId(): int - { - return 8_01_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - $this->doProcess($tokens, $index, [\T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG, '&']); - } - - public function getCustomTokens(): array - { - return [CT::T_TYPE_INTERSECTION]; - } - - protected function replaceToken(Tokens $tokens, int $index): void - { - $tokens[$index] = new Token([CT::T_TYPE_INTERSECTION, '&']); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php deleted file mode 100644 index 5f69b88..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php +++ /dev/null @@ -1,101 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\CT; -use PhpCsFixer\Tokenizer\FCT; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Transform T_USE into: - * - CT::T_USE_TRAIT for imports, - * - CT::T_USE_LAMBDA for lambda variable uses. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class UseTransformer extends AbstractTransformer -{ - private const CLASS_TYPES = [\T_TRAIT, FCT::T_ENUM]; - - public function getPriority(): int - { - // Should run after CurlyBraceTransformer and before TypeColonTransformer - return -5; - } - - public function getRequiredPhpVersionId(): int - { - return 5_03_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if ($token->isGivenKind(\T_USE) && $this->isUseForLambda($tokens, $index)) { - $tokens[$index] = new Token([CT::T_USE_LAMBDA, $token->getContent()]); - - return; - } - - // Only search inside class/trait body for `T_USE` for traits. - // Cannot import traits inside interfaces or anywhere else - - if ($token->isGivenKind(\T_CLASS)) { - if ($tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind(\T_DOUBLE_COLON)) { - return; - } - } elseif (!$token->isGivenKind(self::CLASS_TYPES)) { - return; - } - - $index = $tokens->getNextTokenOfKind($index, ['{']); - $innerLimit = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_BRACE, $index); - - while ($index < $innerLimit) { - $token = $tokens[++$index]; - - if (!$token->isGivenKind(\T_USE)) { - continue; - } - - if ($this->isUseForLambda($tokens, $index)) { - $tokens[$index] = new Token([CT::T_USE_LAMBDA, $token->getContent()]); - } else { - $tokens[$index] = new Token([CT::T_USE_TRAIT, $token->getContent()]); - } - } - } - - public function getCustomTokens(): array - { - return [CT::T_USE_TRAIT, CT::T_USE_LAMBDA]; - } - - /** - * Check if token under given index is `use` statement for lambda function. - */ - private function isUseForLambda(Tokens $tokens, int $index): bool - { - $nextToken = $tokens[$tokens->getNextMeaningfulToken($index)]; - - // test `function () use ($foo) {}` case - return $nextToken->equals('('); - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php deleted file mode 100644 index b302464..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer\Transformer; - -use PhpCsFixer\Tokenizer\AbstractTransformer; -use PhpCsFixer\Tokenizer\Token; -use PhpCsFixer\Tokenizer\Tokens; - -/** - * Move trailing whitespaces from comments and docs into following T_WHITESPACE token. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class WhitespacyCommentTransformer extends AbstractTransformer -{ - public function getRequiredPhpVersionId(): int - { - return 5_00_00; - } - - public function process(Tokens $tokens, Token $token, int $index): void - { - if (!$token->isComment()) { - return; - } - - $content = $token->getContent(); - $trimmedContent = rtrim($content); - - // nothing trimmed, nothing to do - if ($content === $trimmedContent) { - return; - } - - $whitespaces = substr($content, \strlen($trimmedContent)); - - $tokens[$index] = new Token([$token->getId(), $trimmedContent]); - - if (isset($tokens[$index + 1]) && $tokens[$index + 1]->isWhitespace()) { - $tokens[$index + 1] = new Token([\T_WHITESPACE, $whitespaces.$tokens[$index + 1]->getContent()]); - } else { - $tokens->insertAt($index + 1, new Token([\T_WHITESPACE, $whitespaces])); - } - } - - public function getCustomTokens(): array - { - return []; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php deleted file mode 100644 index d6eb95f..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php +++ /dev/null @@ -1,70 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer; - -/** - * Interface for Transformer class. - * - * Transformer role is to register custom tokens and transform Tokens collection to use them. - * - * Custom token is a user defined token type and is used to separate different meaning of original token type. - * For example T_ARRAY is a token for both creating new array and typehinting a parameter. This two meaning should have two token types. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface TransformerInterface -{ - /** - * Get tokens created by Transformer. - * - * @return list - */ - public function getCustomTokens(): array; - - /** - * Return the name of the transformer. - * - * The name must be all lowercase and without any spaces. - * - * @return string The name of the fixer - */ - public function getName(): string; - - /** - * Returns the priority of the transformer. - * - * The default priority is 0 and higher priorities are executed first. - */ - public function getPriority(): int; - - /** - * Return minimal required PHP version id to transform the code. - * - * Custom Token kinds from Transformers are always registered, but sometimes - * there is no need to analyse the Tokens if for sure we cannot find examined - * token kind, e.g. transforming `T_FUNCTION` in ` - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer\Tokenizer; - -use Symfony\Component\Finder\Finder; - -/** - * Collection of Transformer classes. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Transformers -{ - /** - * The registered transformers. - * - * @var list - */ - private array $items = []; - - /** - * Register built in Transformers. - */ - private function __construct() - { - $this->registerBuiltInTransformers(); - - usort($this->items, static fn (TransformerInterface $a, TransformerInterface $b): int => $b->getPriority() <=> $a->getPriority()); - } - - public static function createSingleton(): self - { - static $instance = null; - - if (!$instance) { - $instance = new self(); - } - - return $instance; - } - - /** - * Transform given Tokens collection through all Transformer classes. - * - * @param Tokens $tokens Tokens collection - */ - public function transform(Tokens $tokens): void - { - foreach ($this->items as $transformer) { - foreach ($tokens as $index => $token) { - $transformer->process($tokens, $token, $index); - } - } - } - - /** - * @param TransformerInterface $transformer Transformer - */ - private function registerTransformer(TransformerInterface $transformer): void - { - if (\PHP_VERSION_ID >= $transformer->getRequiredPhpVersionId()) { - $this->items[] = $transformer; - } - } - - private function registerBuiltInTransformers(): void - { - static $registered = false; - - if ($registered) { - return; - } - - $registered = true; - - foreach ($this->findBuiltInTransformers() as $transformer) { - $this->registerTransformer($transformer); - } - } - - /** - * @return iterable - */ - private function findBuiltInTransformers(): iterable - { - foreach (Finder::create()->files()->in(__DIR__.'/Transformer') as $file) { - $relativeNamespace = $file->getRelativePath(); - $class = __NAMESPACE__.'\Transformer\\'.('' !== $relativeNamespace ? $relativeNamespace.'\\' : '').$file->getBasename('.php'); - - $instance = new $class(); - - \assert($instance instanceof TransformerInterface); - - yield $instance; - } - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ToolInfo.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ToolInfo.php deleted file mode 100644 index cae4258..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ToolInfo.php +++ /dev/null @@ -1,122 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Console\Application; - -/** - * Obtain information about using version of tool. - * - * @author Dariusz Rumiński - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class ToolInfo implements ToolInfoInterface -{ - public const COMPOSER_PACKAGE_NAME = 'friendsofphp/php-cs-fixer'; - - public const COMPOSER_LEGACY_PACKAGE_NAME = 'fabpot/php-cs-fixer'; - - /** - * @var null|array{name: string, version: string, dist: array{reference?: string}} - */ - private ?array $composerInstallationDetails = null; - - private ?bool $isInstalledByComposer = null; - - public function getComposerInstallationDetails(): array - { - if (!$this->isInstalledByComposer()) { - throw new \LogicException('Cannot get composer version for tool not installed by composer.'); - } - - if (null === $this->composerInstallationDetails) { - $composerInstalled = json_decode(file_get_contents($this->getComposerInstalledFile()), true, 512, \JSON_THROW_ON_ERROR); - - /** @var list $packages */ - $packages = $composerInstalled['packages'] ?? $composerInstalled; - - foreach ($packages as $package) { - if (\in_array($package['name'], [self::COMPOSER_PACKAGE_NAME, self::COMPOSER_LEGACY_PACKAGE_NAME], true)) { - $this->composerInstallationDetails = $package; - - break; - } - } - } - - return $this->composerInstallationDetails; - } - - public function getComposerVersion(): string - { - $package = $this->getComposerInstallationDetails(); - - $versionSuffix = ''; - - if (isset($package['dist']['reference'])) { - $versionSuffix = '#'.$package['dist']['reference']; - } - - return $package['version'].$versionSuffix; - } - - public function getVersion(): string - { - if ($this->isInstalledByComposer()) { - return Application::VERSION.':'.$this->getComposerVersion(); - } - - return Application::VERSION; - } - - public function isInstalledAsPhar(): bool - { - return str_starts_with(__DIR__, 'phar://'); - } - - public function isInstalledByComposer(): bool - { - if (null === $this->isInstalledByComposer) { - $this->isInstalledByComposer = !$this->isInstalledAsPhar() && file_exists($this->getComposerInstalledFile()); - } - - return $this->isInstalledByComposer; - } - - /** - * Determines if the tool is run inside our pre-built Docker image. - * The `/fixer/` path comes from our Dockerfile, tool is installed there and added to global PATH via symlinked binary. - */ - public function isRunInsideDocker(): bool - { - return str_starts_with(__FILE__, '/fixer/') && is_file('/.dockerenv'); - } - - public function getPharDownloadUri(string $version): string - { - return \sprintf( - 'https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases/download/%s/php-cs-fixer.phar', - $version, - ); - } - - private function getComposerInstalledFile(): string - { - return __DIR__.'/../../../composer/installed.json'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php deleted file mode 100644 index 9907f70..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php +++ /dev/null @@ -1,40 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface ToolInfoInterface -{ - /** - * @return array{name: string, version: string, dist: array{reference?: string}} - */ - public function getComposerInstallationDetails(): array; - - public function getComposerVersion(): string; - - public function getVersion(): string; - - public function isInstalledAsPhar(): bool; - - public function isInstalledByComposer(): bool; - - public function isRunInsideDocker(): bool; - - public function getPharDownloadUri(string $version): string; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/UnsupportedPhpVersionAllowedConfigInterface.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/UnsupportedPhpVersionAllowedConfigInterface.php deleted file mode 100644 index 9e02354..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/UnsupportedPhpVersionAllowedConfigInterface.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @TODO 4.0 Include in main ConfigInterface - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -interface UnsupportedPhpVersionAllowedConfigInterface extends ConfigInterface -{ - /** - * Returns true if execution should be allowed on unsupported PHP version whose syntax is not yet supported by the fixer. - */ - public function getUnsupportedPhpVersionAllowed(): bool; - - /** - * @return $this - */ - public function setUnsupportedPhpVersionAllowed(bool $isUnsupportedPhpVersionAllowed): ConfigInterface; -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Utils.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Utils.php deleted file mode 100644 index 58bdf61..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/Utils.php +++ /dev/null @@ -1,224 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -use PhpCsFixer\Fixer\FixerInterface; -use PhpCsFixer\Tokenizer\Token; - -/** - * @author Dariusz Rumiński - * @author Graham Campbell - * @author Odín del Río - * - * @internal - * - * @deprecated This is a God Class anti-pattern. Don't expand it. It is fine to use logic that is already here (that's why we don't trigger deprecation warnings), but over time logic should be moved to dedicated, single-responsibility classes. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class Utils -{ - private function __construct() - { - // cannot create instance - } - - /** - * Converts a camel cased string to a snake cased string. - */ - public static function camelCaseToUnderscore(string $string): string - { - return mb_strtolower( - Preg::replace( - '/(?isWhitespace()) { - throw new \InvalidArgumentException(\sprintf('The given token must be whitespace, got "%s".', $token->getName())); - } - - $str = strrchr( - str_replace(["\r\n", "\r"], "\n", $token->getContent()), - "\n", - ); - - if (false === $str) { - return ''; - } - - return ltrim($str, "\n"); - } - - /** - * Perform stable sorting using provided comparison function. - * - * Stability is ensured by using Schwartzian transform. - * - * @template T - * @template L of list - * @template R - * - * @param L $elements - * @param callable(T): R $getComparedValue a callable that takes a single element and returns the value to compare - * @param callable(R, R): int $compareValues a callable that compares two values - * - * @return L - */ - public static function stableSort(array $elements, callable $getComparedValue, callable $compareValues): array - { - $sortItems = []; - foreach ($elements as $index => $element) { - $sortItems[] = [$element, $index, $getComparedValue($element)]; - } - - usort($sortItems, static function ($a, $b) use ($compareValues): int { - $comparison = $compareValues($a[2], $b[2]); - - if (0 !== $comparison) { - return $comparison; - } - - return $a[1] <=> $b[1]; - }); - - return array_map(static fn (array $item) => $item[0], $sortItems); // @phpstan-ignore return.type (PHPStan cannot understand that the result will still be L template) - } - - /** - * Sort fixers by their priorities, and by their names if priorities are equal. That is ensuring always deterministic order of fixers. - * - * @template T of list - * - * @param T $fixers - * - * @return T - */ - public static function sortFixers(array $fixers): array - { - usort($fixers, static function (FixerInterface $a, FixerInterface $b): int { - $cmpByPriority = $b->getPriority() <=> $a->getPriority(); - - return 0 !== $cmpByPriority - ? $cmpByPriority - : $a->getName() <=> $b->getName(); - }); - - return $fixers; // @phpstan-ignore return.type (PHPStan cannot understand that the result will still be T template) - } - - /** - * Join names in natural language using specified wrapper (double quote by default). - * - * @param list $names - * - * @throws \InvalidArgumentException - */ - public static function naturalLanguageJoin(array $names, string $wrapper = '"', string $lastJoin = 'and'): string - { - if (0 === \count($names)) { - throw new \InvalidArgumentException('Array of names cannot be empty.'); - } - - if (\strlen($wrapper) > 1) { - throw new \InvalidArgumentException('Wrapper should be a single-char string or empty.'); - } - - $names = array_map(static fn (string $name): string => \sprintf('%2$s%1$s%2$s', $name, $wrapper), $names); - - $last = array_pop($names); - - if (\count($names) > 0) { - return implode(', ', $names).' '.$lastJoin.' '.$last; - } - - return $last; - } - - /** - * Join names in natural language wrapped in backticks, e.g. `a`, `b` and `c`. - * - * @param list $names - * - * @throws \InvalidArgumentException - */ - public static function naturalLanguageJoinWithBackticks(array $names, string $lastJoin = 'and'): string - { - return self::naturalLanguageJoin($names, '`', $lastJoin); - } - - public static function convertArrayTypeToList(string $type): string - { - $parts = explode('[]', $type); - $count = \count($parts) - 1; - - return str_repeat('list<', $count).$parts[0].str_repeat('>', $count); - } - - /** - * @param mixed $value - */ - public static function toString($value): string - { - return \is_array($value) - ? self::arrayToString($value) - : self::scalarToString($value); - } - - /** - * @param mixed $value - */ - private static function scalarToString($value): string - { - $str = var_export($value, true); - - return Preg::replace('/\bNULL\b/', 'null', $str); - } - - /** - * @param array $value - */ - private static function arrayToString(array $value): string - { - if (0 === \count($value)) { - return '[]'; - } - - $isHash = !array_is_list($value); - $str = '['; - - foreach ($value as $k => $v) { - if ($isHash) { - $str .= self::scalarToString($k).' => '; - } - - $str .= \is_array($v) - ? self::arrayToString($v).', ' - : self::scalarToString($v).', '; - } - - return substr($str, 0, -2).']'; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php deleted file mode 100644 index 8dd11b2..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php +++ /dev/null @@ -1,65 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class WhitespacesFixerConfig -{ - /** @var non-empty-string */ - private string $indent; - - /** @var non-empty-string */ - private string $lineEnding; - - /** - * @param non-empty-string $indent - * @param non-empty-string $lineEnding - */ - public function __construct(string $indent = ' ', string $lineEnding = "\n") - { - if (!\in_array($indent, [' ', ' ', "\t"], true)) { - throw new \InvalidArgumentException('Invalid "indent" param, expected tab or two or four spaces.'); - } - - if (!\in_array($lineEnding, ["\n", "\r\n"], true)) { - throw new \InvalidArgumentException('Invalid "lineEnding" param, expected "\n" or "\r\n".'); - } - - $this->indent = $indent; - $this->lineEnding = $lineEnding; - } - - /** - * @return non-empty-string - */ - public function getIndent(): string - { - return $this->indent; - } - - /** - * @return non-empty-string - */ - public function getLineEnding(): string - { - return $this->lineEnding; - } -} diff --git a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/WordMatcher.php b/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/WordMatcher.php deleted file mode 100644 index 0d44d5e..0000000 --- a/v3_ci4/vendor/friendsofphp/php-cs-fixer/src/WordMatcher.php +++ /dev/null @@ -1,57 +0,0 @@ - - * Dariusz Rumiński - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace PhpCsFixer; - -/** - * @author Dariusz Rumiński - * - * @readonly - * - * @internal - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise. - */ -final class WordMatcher -{ - /** - * @var list - */ - private array $candidates; - - /** - * @param list $candidates - */ - public function __construct(array $candidates) - { - $this->candidates = $candidates; - } - - public function match(string $needle): ?string - { - $word = null; - $distance = ceil(\strlen($needle) * 0.35); - - foreach ($this->candidates as $candidate) { - $candidateDistance = levenshtein($needle, $candidate); - - if ($candidateDistance < $distance) { - $word = $candidate; - $distance = $candidateDistance; - } - } - - return $word; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/LICENSE b/v3_ci4/vendor/kint-php/kint/LICENSE deleted file mode 100644 index 01718d4..0000000 --- a/v3_ci4/vendor/kint-php/kint/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/v3_ci4/vendor/kint-php/kint/README.md b/v3_ci4/vendor/kint-php/kint/README.md deleted file mode 100644 index 9781e35..0000000 --- a/v3_ci4/vendor/kint-php/kint/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# Kint - Advanced PHP dumper - -![Screenshot](https://kint-php.github.io/kint/images/intro.png) - -## What am I looking at? - -Kint is a dumper in the vein of **[var_dump()](https://www.php.net/function.var_dump)**, with keyboard controls, search, access path provision, and automatic data parsing. - -In other words, when you dump a JSON string Kint will let you unfold and search the JSON structure and even provide you the code you need to access specific fields. - -## Installation - -```bash -composer require kint-php/kint --dev -``` - -### Without composer - -[Download the file](https://raw.githubusercontent.com/kint-php/kint/master/build/kint.phar) and simply -```php -require 'kint.phar'; -``` - -## Usage - -```php -=7.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3", - "phpunit/phpunit": "^9", - "symfony/finder": ">=7", - "seld/phar-utils": "^1", - "vimeo/psalm": "^6" - }, - "autoload": { - "files": ["init.php"], - "psr-4": { - "Kint\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Kint\\Test\\": "tests/" - } - }, - "config": { - "platform": { - "php": "8.3" - } - }, - "scripts": { - "clean": [ - "rm -rf resources/compiled/", - "rm -rf build/" - ], - "format": [ - "@format:php", - "@format:js", - "@format:sass" - ], - "format:php": "php-cs-fixer fix", - "format:js": "npm run format:js", - "format:sass": "npm run format:sass", - "build": [ - "@build:sass", - "@build:js", - "@build:php" - ], - "build:sass": "npm run build:sass", - "build:js": "npm run build:js", - "build:php": "php ./build.php", - "analyze": [ - "@analyze:php", - "@analyze:js" - ], - "analyze:php": "psalm --no-cache", - "analyze:js": "npm run analyze:js" - }, - "suggest": { - "kint-php/kint-helpers": "Provides extra helper functions", - "kint-php/kint-twig": "Provides d() and s() functions in twig templates" - } -} diff --git a/v3_ci4/vendor/kint-php/kint/init.php b/v3_ci4/vendor/kint-php/kint/init.php deleted file mode 100644 index 9787a15..0000000 --- a/v3_ci4/vendor/kint-php/kint/init.php +++ /dev/null @@ -1,75 +0,0 @@ -= 0); -\define('KINT_PHP81', \version_compare(PHP_VERSION, '8.1') >= 0); -\define('KINT_PHP82', \version_compare(PHP_VERSION, '8.2') >= 0); -\define('KINT_PHP83', \version_compare(PHP_VERSION, '8.3') >= 0); -\define('KINT_PHP84', \version_compare(PHP_VERSION, '8.4') >= 0); -\define('KINT_PHP8412', \version_compare(PHP_VERSION, '8.4.12') >= 0); -\define('KINT_PHP85', \version_compare(PHP_VERSION, '8.5') >= 0); - -// Dynamic default settings -if (\strlen((string) \ini_get('xdebug.file_link_format')) > 0) { - /** @psalm-var non-empty-string ini_get('xdebug.file_link_format') */ - AbstractRenderer::$file_link_format = \ini_get('xdebug.file_link_format'); -} -if (isset($_SERVER['DOCUMENT_ROOT']) && false === \strpos($_SERVER['DOCUMENT_ROOT'], "\0")) { - Utils::$path_aliases = [ - $_SERVER['DOCUMENT_ROOT'] => '', - ]; - - // Suppressed for unreadable document roots (related to open_basedir) - if (false !== @\realpath($_SERVER['DOCUMENT_ROOT'])) { - /** @psalm-suppress InvalidPropertyAssignmentValue */ - Utils::$path_aliases[\realpath($_SERVER['DOCUMENT_ROOT'])] = ''; - } -} - -Utils::composerSkipFlags(); - -if ((!\defined('KINT_SKIP_FACADE') || !KINT_SKIP_FACADE) && !\class_exists('Kint')) { - \class_alias(Kint::class, 'Kint'); -} - -if (!\defined('KINT_SKIP_HELPERS') || !KINT_SKIP_HELPERS) { - require_once __DIR__.'/init_helpers.php'; -} diff --git a/v3_ci4/vendor/kint-php/kint/init_helpers.php b/v3_ci4/vendor/kint-php/kint/init_helpers.php deleted file mode 100644 index b4d5f4d..0000000 --- a/v3_ci4/vendor/kint-php/kint/init_helpers.php +++ /dev/null @@ -1,88 +0,0 @@ -");--ap-image: url("data:image/svg+xml;utf8,");--folder-image: url("data:image/svg+xml;utf8,");--search-image: url("data:image/svg+xml;utf8,");font-size:13px;overflow-x:auto;white-space:nowrap;background:var(--backdrop-color);direction:ltr;contain:content}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:var(--foldout-zindex);width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:var(--foldout-max-size);padding-right:calc(var(--spacing)*2);overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection{background:var(--border-color-hover);color:var(--text-color)}.kint-rich .kint-focused{box-shadow:0 0 3px 3px var(--variable-type-color-hover)}.kint-rich .kint-focused.kint-weak-focus{box-shadow:0 0 3px 1px color-mix(in srgb, var(--variable-type-color-hover) 50%, transparent)}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:var(--text-color);float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:calc(var(--spacing)*2) 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:var(--main-background);border:var(--border);color:var(--text-color);display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:var(--spacing)}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:var(--border-color-hover)}.kint-rich>dl dl{padding:0 0 0 calc(var(--spacing)*3)}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:var(--caret-image) no-repeat scroll 0 0/var(--nav-size) 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:var(--nav-size);width:var(--nav-size);margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed var(--border-color);contain:strict}.kint-rich dt.kint-parent.kint-show+dd{display:block;contain:content}.kint-rich var,.kint-rich var a{color:var(--variable-type-color);font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:var(--variable-type-color-hover)}.kint-rich dfn{font-style:normal;font-family:monospace;color:var(--variable-name-color)}.kint-rich pre{color:var(--text-color);margin:0 0 0 calc(var(--spacing)*3);padding:5px;overflow-y:hidden;border-top:0;border:var(--border);background:var(--main-background);display:block;word-break:normal}.kint-rich .kint-access-path-trigger,.kint-rich .kint-folder-trigger,.kint-rich .kint-search-trigger{background:color-mix(in srgb, var(--text-color) 80%, transparent);border-radius:3px;padding:2px;height:var(--nav-size);width:var(--nav-size);font-size:var(--nav-size);margin-left:5px;font-weight:bold;text-align:center;line-height:1;float:right !important;cursor:pointer;position:relative;overflow:hidden}.kint-rich .kint-access-path-trigger::before,.kint-rich .kint-folder-trigger::before,.kint-rich .kint-search-trigger::before{display:block;content:"";width:100%;height:100%;background:var(--main-background);mask:center/contain no-repeat alpha}.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-folder-trigger:hover,.kint-rich .kint-search-trigger:hover{background:var(--main-background)}.kint-rich .kint-access-path-trigger:hover::before,.kint-rich .kint-folder-trigger:hover::before,.kint-rich .kint-search-trigger:hover::before{background:var(--text-color)}.kint-rich .kint-access-path-trigger::before{mask-image:var(--ap-image)}.kint-rich .kint-folder-trigger::before{mask-image:var(--folder-image)}.kint-rich .kint-search-trigger::before{mask-image:var(--search-image)}.kint-rich input.kint-search{display:none;border:var(--border);border-top-width:0;border-bottom-width:0;padding:var(--spacing);float:right !important;margin:calc(var(--spacing)*-1) 0;color:var(--variable-name-color);background:var(--secondary-background);height:calc(var(--nav-size) + var(--spacing)*2);width:calc(var(--nav-size)*10);position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:var(--secondary-background);filter:saturate(0);opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:var(--main-background);filter:saturate(0)}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:var(--secondary-background);display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger{background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger::before{background:var(--text-color)}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:var(--text-color);text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:var(--variable-name-color);border-bottom:1px dotted var(--variable-name-color)}.kint-rich ul{list-style:none;padding-left:calc(var(--spacing)*3)}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed var(--border-color)}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 calc(var(--spacing)*3);padding-left:0;background:var(--main-background);border:var(--border);border-top:0}.kint-rich ul.kint-tabs>li{background:var(--secondary-background);border:var(--border);cursor:pointer;display:inline-block;height:calc(var(--spacing)*6);margin:calc(var(--spacing)/2);padding:0 calc(2px + var(--spacing)*2.5);vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich ul.kint-tabs>li.kint-active-tab{background:var(--main-background);border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:calc(var(--spacing)*5)}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none;contain:strict}.kint-rich ul.kint-tab-contents>li.kint-show{display:block;contain:content}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich dt>.kint-color-preview{width:var(--nav-size);height:var(--nav-size);display:inline-block;vertical-align:middle;margin-left:10px;border:var(--border);background-color:#ccc;background-image:url('data:image/svg+xml;utf8,');background-size:min(20px,100%)}.kint-rich dt>.kint-color-preview:hover{border-color:var(--border-color-hover)}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:calc(var(--spacing)/2)}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:var(--border);padding:calc(var(--spacing)/2);vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:var(--secondary-background);color:var(--variable-name-color)}.kint-rich table td{background:var(--main-background);white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 var(--border-color-hover) inset}.kint-rich table tr:hover var{color:var(--variable-type-color-hover)}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:1px solid var(--secondary-background)}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid var(--border-color-hover);padding-right:calc(var(--spacing)*2);margin-right:calc(var(--spacing)*2)}.kint-rich pre.kint-source>div.kint-highlight{background:var(--secondary-background)}.kint-rich .kint-microtime-js .kint-microtime-lap{text-shadow:-1px 0 var(--border-color-hover),0 1px var(--border-color-hover),1px 0 var(--border-color-hover),0 -1px var(--border-color-hover);color:var(--main-background);font-weight:bold}.kint-rich{--main-background: #070707;--secondary-background: #070707;--variable-type-color: #ff9900;--variable-type-color-hover: aqua;--border-color: #282828;--border-color-hover: #555555;--backdrop-color: rgba(0, 0, 0, 0.9);--text-color: #e2e1e1;--variable-name-color: #e2e1e1;--alternative-background: black;--highlight-color: #330033;--caret-image: url("data:image/svg+xml;utf8,")} diff --git a/v3_ci4/vendor/kint-php/kint/resources/compiled/aante-light.css b/v3_ci4/vendor/kint-php/kint/resources/compiled/aante-light.css deleted file mode 100644 index 621594d..0000000 --- a/v3_ci4/vendor/kint-php/kint/resources/compiled/aante-light.css +++ /dev/null @@ -1 +0,0 @@ -.kint-rich{--spacing: 4px;--nav-size: 15px;--backdrop-color: rgba(255, 255, 255, 0.9);--main-background: #e0eaef;--secondary-background: #c1d4df;--text-color: #1d1e1e;--variable-name-color: #1d1e1e;--variable-type-color: #0092db;--variable-type-color-hover: #5cb730;--border-color: #b6cedb;--border-color-hover: #0092db;--border: 1px solid var(--border-color);--foldout-max-size: calc(100vh - 100px);--foldout-zindex: 999999;--caret-image: url("data:image/svg+xml;utf8,");--ap-image: url("data:image/svg+xml;utf8,");--folder-image: url("data:image/svg+xml;utf8,");--search-image: url("data:image/svg+xml;utf8,");font-size:13px;overflow-x:auto;white-space:nowrap;background:var(--backdrop-color);direction:ltr;contain:content}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:var(--foldout-zindex);width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:var(--foldout-max-size);padding-right:calc(var(--spacing)*2);overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection{background:var(--border-color-hover);color:var(--text-color)}.kint-rich .kint-focused{box-shadow:0 0 3px 3px var(--variable-type-color-hover)}.kint-rich .kint-focused.kint-weak-focus{box-shadow:0 0 3px 1px color-mix(in srgb, var(--variable-type-color-hover) 50%, transparent)}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:var(--text-color);float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:calc(var(--spacing)*2) 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:var(--main-background);border:var(--border);color:var(--text-color);display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:var(--spacing)}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:var(--border-color-hover)}.kint-rich>dl dl{padding:0 0 0 calc(var(--spacing)*3)}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:var(--caret-image) no-repeat scroll 0 0/var(--nav-size) 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:var(--nav-size);width:var(--nav-size);margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed var(--border-color);contain:strict}.kint-rich dt.kint-parent.kint-show+dd{display:block;contain:content}.kint-rich var,.kint-rich var a{color:var(--variable-type-color);font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:var(--variable-type-color-hover)}.kint-rich dfn{font-style:normal;font-family:monospace;color:var(--variable-name-color)}.kint-rich pre{color:var(--text-color);margin:0 0 0 calc(var(--spacing)*3);padding:5px;overflow-y:hidden;border-top:0;border:var(--border);background:var(--main-background);display:block;word-break:normal}.kint-rich .kint-access-path-trigger,.kint-rich .kint-folder-trigger,.kint-rich .kint-search-trigger{background:color-mix(in srgb, var(--text-color) 80%, transparent);border-radius:3px;padding:2px;height:var(--nav-size);width:var(--nav-size);font-size:var(--nav-size);margin-left:5px;font-weight:bold;text-align:center;line-height:1;float:right !important;cursor:pointer;position:relative;overflow:hidden}.kint-rich .kint-access-path-trigger::before,.kint-rich .kint-folder-trigger::before,.kint-rich .kint-search-trigger::before{display:block;content:"";width:100%;height:100%;background:var(--main-background);mask:center/contain no-repeat alpha}.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-folder-trigger:hover,.kint-rich .kint-search-trigger:hover{background:var(--main-background)}.kint-rich .kint-access-path-trigger:hover::before,.kint-rich .kint-folder-trigger:hover::before,.kint-rich .kint-search-trigger:hover::before{background:var(--text-color)}.kint-rich .kint-access-path-trigger::before{mask-image:var(--ap-image)}.kint-rich .kint-folder-trigger::before{mask-image:var(--folder-image)}.kint-rich .kint-search-trigger::before{mask-image:var(--search-image)}.kint-rich input.kint-search{display:none;border:var(--border);border-top-width:0;border-bottom-width:0;padding:var(--spacing);float:right !important;margin:calc(var(--spacing)*-1) 0;color:var(--variable-name-color);background:var(--secondary-background);height:calc(var(--nav-size) + var(--spacing)*2);width:calc(var(--nav-size)*10);position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:var(--secondary-background);filter:saturate(0);opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:var(--main-background);filter:saturate(0)}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:var(--secondary-background);display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger{background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger::before{background:var(--text-color)}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:var(--text-color);text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:var(--variable-name-color);border-bottom:1px dotted var(--variable-name-color)}.kint-rich ul{list-style:none;padding-left:calc(var(--spacing)*3)}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed var(--border-color)}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 calc(var(--spacing)*3);padding-left:0;background:var(--main-background);border:var(--border);border-top:0}.kint-rich ul.kint-tabs>li{background:var(--secondary-background);border:var(--border);cursor:pointer;display:inline-block;height:calc(var(--spacing)*6);margin:calc(var(--spacing)/2);padding:0 calc(2px + var(--spacing)*2.5);vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich ul.kint-tabs>li.kint-active-tab{background:var(--main-background);border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:calc(var(--spacing)*5)}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none;contain:strict}.kint-rich ul.kint-tab-contents>li.kint-show{display:block;contain:content}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich dt>.kint-color-preview{width:var(--nav-size);height:var(--nav-size);display:inline-block;vertical-align:middle;margin-left:10px;border:var(--border);background-color:#ccc;background-image:url('data:image/svg+xml;utf8,');background-size:min(20px,100%)}.kint-rich dt>.kint-color-preview:hover{border-color:var(--border-color-hover)}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:calc(var(--spacing)/2)}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:var(--border);padding:calc(var(--spacing)/2);vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:var(--secondary-background);color:var(--variable-name-color)}.kint-rich table td{background:var(--main-background);white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 var(--border-color-hover) inset}.kint-rich table tr:hover var{color:var(--variable-type-color-hover)}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:1px solid var(--secondary-background)}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid var(--border-color-hover);padding-right:calc(var(--spacing)*2);margin-right:calc(var(--spacing)*2)}.kint-rich pre.kint-source>div.kint-highlight{background:var(--secondary-background)}.kint-rich .kint-microtime-js .kint-microtime-lap{text-shadow:-1px 0 var(--border-color-hover),0 1px var(--border-color-hover),1px 0 var(--border-color-hover),0 -1px var(--border-color-hover);color:var(--main-background);font-weight:bold}.kint-rich{--main-background: #f8f8f8;--secondary-background: #f8f8f8;--variable-type-color: #06f;--variable-type-color-hover: #f00;--border-color: #d7d7d7;--border-color-hover: #aaa;--alternative-background: #fff;--highlight-color: #cfc;--caret-image: url("data:image/svg+xml;utf8,")}.kint-rich .kint-focused{box-shadow:0 0 3px 2px var(--variable-type-color-hover)}.kint-rich dt{font-weight:normal}.kint-rich dt.kint-parent{margin-top:4px}.kint-rich dl dl{margin-top:4px;padding-left:25px;border-left:none}.kint-rich>dl>dt{background:var(--secondary-background)}.kint-rich ul{margin:0;padding-left:0}.kint-rich ul:not(.kint-tabs)>li{border-left:0}.kint-rich ul.kint-tabs{background:var(--secondary-background);border:var(--border);border-width:0 1px 1px 1px;padding:4px 0 0 12px;margin-left:-1px;margin-top:-1px}.kint-rich ul.kint-tabs li,.kint-rich ul.kint-tabs li+li{margin:0 0 0 4px}.kint-rich ul.kint-tabs li{border-bottom-width:0;height:calc(var(--spacing)*6 + 1px)}.kint-rich ul.kint-tabs li:first-child{margin-left:0}.kint-rich ul.kint-tabs li.kint-active-tab{border-top:var(--border);background:var(--alternative-background);font-weight:bold;padding-top:0;border-bottom:1px solid var(--alternative-background) !important;margin-bottom:-1px}.kint-rich ul.kint-tabs li.kint-active-tab:hover{border-bottom:1px solid var(--alternative-background)}.kint-rich ul>li>pre{border:var(--border)}.kint-rich dt:hover+dd>ul{border-color:var(--border-color-hover)}.kint-rich pre{background:var(--alternative-background);margin-top:4px;margin-left:25px}.kint-rich .kint-source{margin-left:-1px}.kint-rich .kint-source .kint-highlight{background:var(--highlight-color)}.kint-rich .kint-parent.kint-show>.kint-search{border-bottom-width:1px}.kint-rich table td{background:var(--alternative-background)}.kint-rich table td>dl{padding:0;margin:0}.kint-rich table td>dl>dt.kint-parent{margin:0}.kint-rich table td:first-child,.kint-rich table td,.kint-rich table th{padding:2px 4px}.kint-rich table dd,.kint-rich table dt{background:var(--alternative-background)}.kint-rich table tr:hover>td{box-shadow:none;background:var(--highlight-color)} diff --git a/v3_ci4/vendor/kint-php/kint/resources/compiled/main.js b/v3_ci4/vendor/kint-php/kint/resources/compiled/main.js deleted file mode 100644 index c88e6b9..0000000 --- a/v3_ci4/vendor/kint-php/kint/resources/compiled/main.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(()=>{function m(n){if(!(n instanceof Element))throw new Error("Invalid argument to dedupeElement()");let t=n.ownerDocument,e=E(n);for(let s of t.querySelectorAll(e))n!==s&&s.parentNode.removeChild(s)}function d(n){return n instanceof Element?n.ownerDocument.contains(n):!1}function E(n){if(!(n instanceof Element))throw new Error("Invalid argument to buildClassSelector()");return[n.nodeName,...n.classList].join(".")}function f(n){if(!(n instanceof Element))throw new Error("Invalid argument to selectText()");let t=n.ownerDocument,e=t.getSelection(),s=t.createRange();s.selectNodeContents(n),e.removeAllRanges(),e.addRange(s)}function I(n,t){let e;return function(...s){clearTimeout(e),e=setTimeout(function(){n(...s)},t)}}function x(n){if(!(n instanceof Element))throw new Error("Invalid argument to offsetTop()");return n.offsetTop+(n.offsetParent?x(n.offsetParent):0)}var u=class n{static#e=new Set;static toggleSearchBox(t,e){let s=t.querySelector(".kint-search"),i=t.parentNode;if(s)if(s.classList.toggle("kint-show",e)){if(s.focus(),s.select(),!n.#e.has(s)){let r=i.querySelectorAll("dl").length,o=200;r>1e4&&(o=700),s.addEventListener("keyup",I(n.#t.bind(null,s),o)),n.#e.add(s)}n.#t(s)}else i.classList.remove("kint-search-root")}static#t(t){let e=t.closest(".kint-parent")?.parentNode;if(e)if(t.classList.contains("kint-show")&&t.value.length){let s=e.dataset.lastSearch;if(e.classList.add("kint-search-root"),s!==t.value){e.dataset.lastSearch=t.value,e.classList.remove("kint-search-match");for(let i of e.querySelectorAll(".kint-search-match"))i.classList.remove("kint-search-match");n.#s(e,t.value.toUpperCase())}}else e.classList.remove("kint-search-root")}static#s(t,e){let s=t.cloneNode(!0);for(let c of s.querySelectorAll(".access-path"))c.remove();if(!s.textContent.toUpperCase().includes(e))return;t.classList.add("kint-search-match");let i=t.firstElementChild;for(;i&&i.tagName!=="DT";)i=i.nextElementSibling;if(!i)return;let r=a.getChildContainer(i);if(!r)return;let o,l;for(let c of r.children)c.tagName==="DL"?n.#s(c,e):c.tagName==="UL"&&(c.classList.contains("kint-tabs")?o=c.children:c.classList.contains("kint-tab-contents")&&(l=c.children));if(!(!o||o.length!==l?.length))for(let c=o.length;c--;){let k=!1,F=!1;o[c].textContent.toUpperCase().includes(e)&&(k=!0);let O=l[c].cloneNode(!0);for(let v of O.querySelectorAll(".access-path"))v.remove();if(O.textContent.toUpperCase().includes(e)&&(k=!0,F=!0),k&&o[c].classList.add("kint-search-match"),F)for(let v of l[c].children)v.tagName==="DL"&&n.#s(v,e)}}};var g=class{static sort(t,e){let s=t.dataset.kintTableSort,i=parseInt(s)===e?-1:1,r=t.tBodies[0];[...r.rows].sort(function(o,l){o=o.cells[e].textContent.trim().toLocaleLowerCase(),l=l.cells[e].textContent.trim().toLocaleLowerCase();let c=0;return!isNaN(o)&&!isNaN(l)?(o=parseFloat(o),l=parseFloat(l),c=o-l):isNaN(o)&&!isNaN(l)?c=1:isNaN(l)&&!isNaN(o)?c=-1:c=(""+o).localeCompare(""+l),c*i}).forEach(o=>r.appendChild(o)),i<0?t.dataset.kintTableSort=null:t.dataset.kintTableSort=e}};var a=class n{#e;#t;#s;constructor(t){if(!(t instanceof h))throw new Error("Invalid argument to Rich.constructor()");this.#e=t,this.#e.runOnInit(this.#i.bind(this));let e=new q(this,t);new b(this,t.window,e)}#i(){let t=this.#e.window.document;if(d(this.#t)||(this.#t=t.querySelector("style.kint-rich-style")),this.#t&&m(this.#t),t.querySelector(".kint-rich.kint-file")){this.setupFolder(t);let e=this.#s.querySelector("dd.kint-foldout"),s=Array.from(t.querySelectorAll(".kint-rich.kint-file"));for(let i of s)i.parentNode!==e&&e.appendChild(i);this.#s.classList.add("kint-show")}}addToFolder(t){let e=t.closest(".kint-rich");if(!e)throw new Error("Bad addToFolder");let s=this.#e.window.document;if(this.setupFolder(s),this.folder.contains(t))throw new Error("Bad addToFolder");let i=this.#s.querySelector("dd.kint-foldout"),r=t.closest(".kint-parent, .kint-rich"),o=Array.from(e.querySelectorAll(".kint-folder-trigger"));if(e===r||e.querySelectorAll(".kint-rich > dl").length===1){for(let l of o)l.remove();e.classList.add("kint-file"),i.insertBefore(e,i.firstChild)}else{let l=s.createElement("div");l.classList.add("kint-rich"),l.classList.add("kint-file"),l.appendChild(r.closest(".kint-rich > dl"));let c=e.lastElementChild;c.matches(".kint-rich > footer")&&l.appendChild(c.cloneNode(!0));for(let k of o)k.remove();i.insertBefore(l,i.firstChild)}n.toggle(this.#s.querySelector(".kint-parent"),!0)}setupFolder(t){if(this.#s)d(this.#s)||(this.#s=t.querySelector(".kint-rich.kint-folder"));else{let e=t.createElement("template");e.innerHTML='
Kint
',this.#s=e.content.firstChild,t.body.appendChild(this.#s)}}get folder(){return d(this.#s)||(this.#s=this.#e.window.document.querySelector(".kint-rich.kint-folder")),this.#s&&m(this.#s),this.#s}isFolderOpen(){let t=this.#s?.querySelector("dd.kint-foldout");if(t)return t.previousSibling.classList.contains("kint-show")}static getChildContainer(t){let e=t.nextElementSibling;for(;e&&!e.matches("dd");)e=e.nextElementSibling;return e}static toggle(t,e){let s=n.getChildContainer(t);s&&(e=t.classList.toggle("kint-show",e),n.#n(s,e))}static switchTab(t){t.parentNode.getElementsByClassName("kint-active-tab")[0].classList.remove("kint-active-tab"),t.classList.add("kint-active-tab");let e=t,s=0;for(;e=e.previousElementSibling;)s++;let i=t.parentNode.nextSibling.children;for(let r=i.length;r--;)r===s?(i[r].classList.add("kint-show"),n.#n(i[r],!0)):i[r].classList.remove("kint-show")}static toggleChildren(t,e){let s=n.getChildContainer(t);if(!s)return;e===void 0&&(e=t.classList.contains("kint-show"));let i=Array.from(s.getElementsByClassName("kint-parent"));for(let r of i)r.classList.toggle("kint-show",e)}static toggleAccessPath(t,e){let s=t.querySelector(".access-path");s?.classList.toggle("kint-show",e)&&f(s)}static#n(t,e){if(t.children.length===2&&t.lastElementChild.matches("ul.kint-tab-contents"))for(let s of t.lastElementChild.children)s.matches("li.kint-show")&&(t=s);if(t.children.length===1&&t.firstElementChild.matches("dl")){let s=t.firstElementChild.firstElementChild;s?.classList?.contains("kint-parent")&&n.toggle(s,e)}}},b=class{#e;#t;#s;#i=null;#n=null;#o=0;constructor(t,e,s){this.#e=t,this.#t=s,this.#s=e,this.#s.addEventListener("click",this.#a.bind(this),!0)}#r(){clearTimeout(this.#i),this.#i=setTimeout(this.#l.bind(this),250)}#l(){clearTimeout(this.#i),this.#i=null,this.#n=null,this.#o=0}#c(){let t=this.#n;if(!t.matches(".kint-parent > nav"))return;let e=t.parentNode;if(this.#o===1)a.toggleChildren(e),this.#t.onTreeChanged(),this.#r(),this.#o=2;else if(this.#o===2){this.#l();let s=e.classList.contains("kint-show"),i=this.#e.folder?.querySelector(".kint-parent"),r=Array.from(this.#s.document.getElementsByClassName("kint-parent"));for(let o of r)o!==i&&o.classList.toggle("kint-show",s);this.#t.onTreeChanged(),this.#t.scrollToFocus()}}#a(t){if(this.#o){this.#c();return}let e=t.target;if(!e.closest(".kint-rich"))return;if(e.tagName==="DFN"&&f(e),e.tagName==="TH"){t.ctrlKey||g.sort(e.closest("table"),e.cellIndex);return}if(e.tagName==="LI"&&e.parentNode.className==="kint-tabs"){if(e.className!=="kint-active-tab"){let i=e.closest("dl")?.querySelector(".kint-parent > nav")??e;a.switchTab(e),this.#t.onTreeChanged(),this.#t.setCursor(i)}return}let s=e.closest("dt");if(e.tagName==="NAV")e.parentNode.tagName==="FOOTER"?(this.#t.setCursor(e),e.parentNode.classList.toggle("kint-show")):s?.classList.contains("kint-parent")&&(a.toggle(s),this.#t.onTreeChanged(),this.#t.setCursor(e),this.#r(),this.#o=1,this.#n=e);else if(e.classList.contains("kint-access-path-trigger"))s&&a.toggleAccessPath(s);else if(e.classList.contains("kint-search-trigger"))s?.matches(".kint-rich > dl > dt.kint-parent")&&u.toggleSearchBox(s);else if(e.classList.contains("kint-folder-trigger")){if(s?.matches(".kint-rich > dl > dt.kint-parent"))this.#e.addToFolder(e),this.#t.onTreeChanged(),this.#t.setCursor(s.querySelector("nav")),this.#t.scrollToFocus();else if(e.parentNode.tagName==="FOOTER"){let i=e.closest(".kint-rich").querySelector(".kint-parent > nav, .kint-rich > footer > nav");this.#e.addToFolder(e),this.#t.onTreeChanged(),this.#t.setCursor(i),this.#t.scrollToFocus()}}else e.classList.contains("kint-search")||(e.tagName==="PRE"&&t.detail===3?f(e):e.closest(".kint-source")&&t.detail===3?f(e.closest(".kint-source")):e.classList.contains("access-path")?f(e):e.tagName!=="A"&&s?.classList.contains("kint-parent")&&(a.toggle(s),this.#t.onTreeChanged(),this.#t.setCursor(s.querySelector("nav"))))}},j=65,G=68,A=70,S=72,K=74,D=75,p=76,V=83,P=9,T=13,B=27,L=32,N=37,R=38,C=39,H=40,M=".kint-rich .kint-parent > nav, .kint-rich > footer > nav, .kint-rich .kint-tabs > li:not(.kint-active-tab)",q=class{#e=[];#t=0;#s=!1;#i;#n;constructor(t,e){this.#i=t,this.#n=e.window,this.#n.addEventListener("keydown",this.#c.bind(this),!0),e.runOnInit(this.onTreeChanged.bind(this))}scrollToFocus(){let t=this.#e[this.#t];if(!t)return;let e=this.#i.folder;if(t===e?.querySelector(".kint-parent > nav"))return;let s=x(t);if(this.#i.isFolderOpen()){let i=e.querySelector("dd.kint-foldout");i.scrollTo(0,s-i.clientHeight/2)}else this.#n.scrollTo(0,s-this.#n.innerHeight/2)}onTreeChanged(){let t=this.#e[this.#t];this.#e=[];let e=this.#i.folder,s=e?.querySelector(".kint-parent > nav"),i=this.#n.document;this.#i.isFolderOpen()&&(i=e,this.#e.push(s));let r=Array.from(i.querySelectorAll(M));for(let o of r)o.offsetParent!==null&&o!==s&&this.#e.push(o);if(s&&!this.#i.isFolderOpen()&&this.#e.push(s),this.#e.length===0){this.#s=!1,this.#r();return}t&&this.#e.indexOf(t)!==-1?this.#t=this.#e.indexOf(t):this.#r()}setCursor(t){if(this.#i.isFolderOpen()&&!this.#i.folder.contains(t)||!t.matches(M))return!1;let e=this.#e.indexOf(t);if(e===-1&&(this.onTreeChanged(),e=this.#e.indexOf(t)),e!==-1){if(e!==this.#t)return this.#t=e,this.#r(),!0;this.#e[e]?.classList.remove("kint-weak-focus")}else console.error("setCursor failed to find target in list",t),console.info("Please report this as a bug in Kint at https://github.com/kint-php/kint");return!1}#o(t){if(this.#e.length===0)return this.#t=0,null;for(this.#t+=t;this.#t<0;)this.#t+=this.#e.length;for(;this.#t>=this.#e.length;)this.#t-=this.#e.length;return this.#r(),this.#t}#r(){let t=this.#n.document.querySelector(".kint-focused");t&&(t.classList.remove("kint-focused"),t.classList.remove("kint-weak-focus")),this.#s&&this.#e[this.#t]?.classList.add("kint-focused")}#l(t){let e=t.closest(".kint-rich .kint-parent ~ dd")?.parentNode.querySelector(".kint-parent > nav");e&&(this.setCursor(e),this.scrollToFocus())}#c(t){if(t.keyCode===B&&t.target.matches(".kint-search")){t.target.blur(),this.#s&&this.#r();return}if(t.target!==this.#n.document.body||t.altKey||t.ctrlKey)return;if(t.keyCode===G){if(this.#s)this.#s=!1;else{if(this.#s=!0,this.onTreeChanged(),this.#e.length===0){this.#s=!1;return}this.scrollToFocus()}this.#r(),t.preventDefault();return}else if(t.keyCode===B){this.#s&&(this.#s=!1,this.#r(),t.preventDefault());return}else if(!this.#s)return;t.preventDefault(),d(this.#e[this.#t])||this.onTreeChanged();let e=this.#e[this.#t];if([P,R,D,H,K].includes(t.keyCode)){t.keyCode===P?this.#o(t.shiftKey?-1:1):t.keyCode===R||t.keyCode===D?this.#o(-1):(t.keyCode===H||t.keyCode===K)&&this.#o(1),this.scrollToFocus();return}if(e.tagName==="LI"&&[L,T,C,p,N,S].includes(t.keyCode)){t.keyCode===L||t.keyCode===T?(a.switchTab(e),this.onTreeChanged()):t.keyCode===C||t.keyCode===p?this.#o(1):(t.keyCode===N||t.keyCode===S)&&this.#o(-1),this.scrollToFocus();return}if(e.parentNode.tagName==="FOOTER"&&e.closest(".kint-rich")){if(t.keyCode===L||t.keyCode===T)e.parentNode.classList.toggle("kint-show");else if(t.keyCode===N||t.keyCode===S)if(e.parentNode.classList.contains("kint-show"))e.parentNode.classList.remove("kint-show");else{this.#l(e.closest(".kint-rich"));return}else if(t.keyCode===C||t.keyCode===p)e.parentNode.classList.add("kint-show");else if(t.keyCode===A&&!this.#i.isFolderOpen()&&e.matches(".kint-rich > footer > nav")){let i=e.closest(".kint-rich").querySelector(".kint-parent > nav, .kint-rich > footer > nav");this.#i.addToFolder(e),this.onTreeChanged(),this.setCursor(i),this.scrollToFocus()}return}let s=e.closest(".kint-parent");if(s){if(t.keyCode===j){a.toggleAccessPath(s);return}if(t.keyCode===A){!this.#i.isFolderOpen()&&s.matches(".kint-rich:not(.kint-folder) > dl > .kint-parent")&&(this.#i.addToFolder(e),this.onTreeChanged(),this.setCursor(e),this.scrollToFocus());return}if(t.keyCode===V){let i=s.closest(".kint-rich > dl")?.querySelector(".kint-search")?.closest(".kint-parent");if(i){e.classList.add("kint-weak-focus"),u.toggleSearchBox(i,!0);return}}if(t.keyCode===L||t.keyCode===T){a.toggle(s),this.onTreeChanged();return}if([C,p,N,S].includes(t.keyCode)){let i=s.classList.contains("kint-show");if(t.keyCode===C||t.keyCode===p){i&&a.toggleChildren(s,!0),a.toggle(s,!0),this.onTreeChanged();return}else if(i){a.toggleChildren(s,!1),a.toggle(s,!1),this.onTreeChanged();return}else{this.#l(s);return}}}}};var y=class{#e;#t;constructor(t){if(!(t instanceof h))throw new Error("Invalid argument to Plain.constructor()");this.#e=t.window,t.runOnInit(this.#s.bind(this))}#s(){d(this.#t)||(this.#t=this.#e.document.querySelector("style.kint-plain-style")),this.#t&&m(this.#t)}};var w=class{#e;constructor(t){if(!(t instanceof h))throw new Error("Invalid argument to Microtime.constructor()");this.#e=t.window,t.runOnInit(this.#t.bind(this))}#t(){let t={},e=this.#e.document.querySelectorAll("[data-kint-microtime-group]");for(let s of e){let i=s.querySelector(".kint-microtime-lap");if(!i)continue;let r=s.dataset.kintMicrotimeGroup,o=parseFloat(i.textContent),l=parseFloat(s.querySelector(".kint-microtime-avg").textContent);t[r]??={min:o,max:o,avg:l},t[r].min>o&&(t[r].min=o),t[r].maxo.avg){let l=(r-o.avg)/(o.max-o.avg);i.style.background="hsl("+(40-40*l)+", 100%, 65%)"}else{let l=0;o.avg!==o.min&&(l=(o.avg-r)/(o.avg-o.min)),i.style.background="hsl("+(40+80*l)+", 100%, 65%)"}}}};var U=Symbol(),h=class n{static#e=null;#t;#s=[];#i=new Set;static init(t){return n.#e??=new n(t,U),n.#e.#n(),n.#e.runOnLoad(n.#r),n.#e}get window(){return this.#t}constructor(t,e){if(U!==e)throw new Error("Kint constructor is private. Use Kint.init()");if(!(t instanceof Window))throw new Error("Invalid argument to Kint.init()");this.#t=t,this.runOnInit(this.#o.bind(this)),new y(this),new a(this),new w(this)}runOnLoad(t){if(this.#t.document.readyState==="complete")try{t()}catch{}else this.#t.addEventListener("load",t)}runOnInit(t){this.#s.push(t)}#n(){this.#t.document.currentScript&&(this.#i.add(E(window.document.currentScript)),window.document.currentScript.remove())}#o(){for(let t of this.#i.keys())for(let e of this.#t.document.querySelectorAll(t))e.remove()}static#r(){for(let t of n.#e.#s)t()}};window.Kint||(window.Kint=h);window.Kint.init(window);})(); diff --git a/v3_ci4/vendor/kint-php/kint/resources/compiled/original.css b/v3_ci4/vendor/kint-php/kint/resources/compiled/original.css deleted file mode 100644 index 765e563..0000000 --- a/v3_ci4/vendor/kint-php/kint/resources/compiled/original.css +++ /dev/null @@ -1 +0,0 @@ -.kint-rich{--spacing: 4px;--nav-size: 15px;--backdrop-color: rgba(255, 255, 255, 0.9);--main-background: #e0eaef;--secondary-background: #c1d4df;--text-color: #1d1e1e;--variable-name-color: #1d1e1e;--variable-type-color: #0092db;--variable-type-color-hover: #5cb730;--border-color: #b6cedb;--border-color-hover: #0092db;--border: 1px solid var(--border-color);--foldout-max-size: calc(100vh - 100px);--foldout-zindex: 999999;--caret-image: url("data:image/svg+xml;utf8,");--ap-image: url("data:image/svg+xml;utf8,");--folder-image: url("data:image/svg+xml;utf8,");--search-image: url("data:image/svg+xml;utf8,");font-size:13px;overflow-x:auto;white-space:nowrap;background:var(--backdrop-color);direction:ltr;contain:content}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:var(--foldout-zindex);width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:var(--foldout-max-size);padding-right:calc(var(--spacing)*2);overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection{background:var(--border-color-hover);color:var(--text-color)}.kint-rich .kint-focused{box-shadow:0 0 3px 3px var(--variable-type-color-hover)}.kint-rich .kint-focused.kint-weak-focus{box-shadow:0 0 3px 1px color-mix(in srgb, var(--variable-type-color-hover) 50%, transparent)}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:var(--text-color);float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:calc(var(--spacing)*2) 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:var(--main-background);border:var(--border);color:var(--text-color);display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:var(--spacing)}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:var(--border-color-hover)}.kint-rich>dl dl{padding:0 0 0 calc(var(--spacing)*3)}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:var(--caret-image) no-repeat scroll 0 0/var(--nav-size) 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:var(--nav-size);width:var(--nav-size);margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed var(--border-color);contain:strict}.kint-rich dt.kint-parent.kint-show+dd{display:block;contain:content}.kint-rich var,.kint-rich var a{color:var(--variable-type-color);font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:var(--variable-type-color-hover)}.kint-rich dfn{font-style:normal;font-family:monospace;color:var(--variable-name-color)}.kint-rich pre{color:var(--text-color);margin:0 0 0 calc(var(--spacing)*3);padding:5px;overflow-y:hidden;border-top:0;border:var(--border);background:var(--main-background);display:block;word-break:normal}.kint-rich .kint-access-path-trigger,.kint-rich .kint-folder-trigger,.kint-rich .kint-search-trigger{background:color-mix(in srgb, var(--text-color) 80%, transparent);border-radius:3px;padding:2px;height:var(--nav-size);width:var(--nav-size);font-size:var(--nav-size);margin-left:5px;font-weight:bold;text-align:center;line-height:1;float:right !important;cursor:pointer;position:relative;overflow:hidden}.kint-rich .kint-access-path-trigger::before,.kint-rich .kint-folder-trigger::before,.kint-rich .kint-search-trigger::before{display:block;content:"";width:100%;height:100%;background:var(--main-background);mask:center/contain no-repeat alpha}.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-folder-trigger:hover,.kint-rich .kint-search-trigger:hover{background:var(--main-background)}.kint-rich .kint-access-path-trigger:hover::before,.kint-rich .kint-folder-trigger:hover::before,.kint-rich .kint-search-trigger:hover::before{background:var(--text-color)}.kint-rich .kint-access-path-trigger::before{mask-image:var(--ap-image)}.kint-rich .kint-folder-trigger::before{mask-image:var(--folder-image)}.kint-rich .kint-search-trigger::before{mask-image:var(--search-image)}.kint-rich input.kint-search{display:none;border:var(--border);border-top-width:0;border-bottom-width:0;padding:var(--spacing);float:right !important;margin:calc(var(--spacing)*-1) 0;color:var(--variable-name-color);background:var(--secondary-background);height:calc(var(--nav-size) + var(--spacing)*2);width:calc(var(--nav-size)*10);position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:var(--secondary-background);filter:saturate(0);opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:var(--main-background);filter:saturate(0)}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:var(--secondary-background);display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger{background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger::before{background:var(--text-color)}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:var(--text-color);text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:var(--variable-name-color);border-bottom:1px dotted var(--variable-name-color)}.kint-rich ul{list-style:none;padding-left:calc(var(--spacing)*3)}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed var(--border-color)}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 calc(var(--spacing)*3);padding-left:0;background:var(--main-background);border:var(--border);border-top:0}.kint-rich ul.kint-tabs>li{background:var(--secondary-background);border:var(--border);cursor:pointer;display:inline-block;height:calc(var(--spacing)*6);margin:calc(var(--spacing)/2);padding:0 calc(2px + var(--spacing)*2.5);vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich ul.kint-tabs>li.kint-active-tab{background:var(--main-background);border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:calc(var(--spacing)*5)}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none;contain:strict}.kint-rich ul.kint-tab-contents>li.kint-show{display:block;contain:content}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich dt>.kint-color-preview{width:var(--nav-size);height:var(--nav-size);display:inline-block;vertical-align:middle;margin-left:10px;border:var(--border);background-color:#ccc;background-image:url('data:image/svg+xml;utf8,');background-size:min(20px,100%)}.kint-rich dt>.kint-color-preview:hover{border-color:var(--border-color-hover)}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:calc(var(--spacing)/2)}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:var(--border);padding:calc(var(--spacing)/2);vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:var(--secondary-background);color:var(--variable-name-color)}.kint-rich table td{background:var(--main-background);white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 var(--border-color-hover) inset}.kint-rich table tr:hover var{color:var(--variable-type-color-hover)}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:1px solid var(--secondary-background)}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid var(--border-color-hover);padding-right:calc(var(--spacing)*2);margin-right:calc(var(--spacing)*2)}.kint-rich pre.kint-source>div.kint-highlight{background:var(--secondary-background)}.kint-rich .kint-microtime-js .kint-microtime-lap{text-shadow:-1px 0 var(--border-color-hover),0 1px var(--border-color-hover),1px 0 var(--border-color-hover),0 -1px var(--border-color-hover);color:var(--main-background);font-weight:bold}.kint-rich{--gradient-start: #e3ecf0;--gradient-end: #c0d4df;--tabs-gradient-start: #9dbed0;--tabs-gradient-end: #b2ccda}.kint-rich>dl>dt{background:linear-gradient(to bottom, var(--gradient-start) 0%, var(--gradient-end) 100%)}.kint-rich>dl>dd>ul.kint-tabs li{background:var(--main-background)}.kint-rich>dl>dd>ul.kint-tabs li.kint-active-tab{background:var(--secondary-background)}.kint-rich ul.kint-tabs{background:linear-gradient(to bottom, var(--tabs-gradient-start) 0%, var(--tabs-gradient-end) 100%)} diff --git a/v3_ci4/vendor/kint-php/kint/resources/compiled/plain.css b/v3_ci4/vendor/kint-php/kint/resources/compiled/plain.css deleted file mode 100644 index 0dd9b2d..0000000 --- a/v3_ci4/vendor/kint-php/kint/resources/compiled/plain.css +++ /dev/null @@ -1 +0,0 @@ -.kint-plain{background:hsla(0,0%,100%,.9);white-space:pre;display:block;font-family:monospace;color:#222;line-height:normal}.kint-plain i{color:#d00;font-style:normal}.kint-plain u{color:#030;text-decoration:none;font-weight:bold}.kint-plain .kint-microtime-js .kint-microtime-lap{text-shadow:1px 0 #d00,0 1px #d00,-1px 0 #d00,0 -1px #d00;color:#fff;font-weight:bold} diff --git a/v3_ci4/vendor/kint-php/kint/resources/compiled/solarized-dark.css b/v3_ci4/vendor/kint-php/kint/resources/compiled/solarized-dark.css deleted file mode 100644 index 87b7206..0000000 --- a/v3_ci4/vendor/kint-php/kint/resources/compiled/solarized-dark.css +++ /dev/null @@ -1 +0,0 @@ -.kint-rich{--spacing: 4px;--nav-size: 15px;--backdrop-color: rgba(255, 255, 255, 0.9);--main-background: #e0eaef;--secondary-background: #c1d4df;--text-color: #1d1e1e;--variable-name-color: #1d1e1e;--variable-type-color: #0092db;--variable-type-color-hover: #5cb730;--border-color: #b6cedb;--border-color-hover: #0092db;--border: 1px solid var(--border-color);--foldout-max-size: calc(100vh - 100px);--foldout-zindex: 999999;--caret-image: url("data:image/svg+xml;utf8,");--ap-image: url("data:image/svg+xml;utf8,");--folder-image: url("data:image/svg+xml;utf8,");--search-image: url("data:image/svg+xml;utf8,");font-size:13px;overflow-x:auto;white-space:nowrap;background:var(--backdrop-color);direction:ltr;contain:content}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:var(--foldout-zindex);width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:var(--foldout-max-size);padding-right:calc(var(--spacing)*2);overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection{background:var(--border-color-hover);color:var(--text-color)}.kint-rich .kint-focused{box-shadow:0 0 3px 3px var(--variable-type-color-hover)}.kint-rich .kint-focused.kint-weak-focus{box-shadow:0 0 3px 1px color-mix(in srgb, var(--variable-type-color-hover) 50%, transparent)}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:var(--text-color);float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:calc(var(--spacing)*2) 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:var(--main-background);border:var(--border);color:var(--text-color);display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:var(--spacing)}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:var(--border-color-hover)}.kint-rich>dl dl{padding:0 0 0 calc(var(--spacing)*3)}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:var(--caret-image) no-repeat scroll 0 0/var(--nav-size) 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:var(--nav-size);width:var(--nav-size);margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed var(--border-color);contain:strict}.kint-rich dt.kint-parent.kint-show+dd{display:block;contain:content}.kint-rich var,.kint-rich var a{color:var(--variable-type-color);font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:var(--variable-type-color-hover)}.kint-rich dfn{font-style:normal;font-family:monospace;color:var(--variable-name-color)}.kint-rich pre{color:var(--text-color);margin:0 0 0 calc(var(--spacing)*3);padding:5px;overflow-y:hidden;border-top:0;border:var(--border);background:var(--main-background);display:block;word-break:normal}.kint-rich .kint-access-path-trigger,.kint-rich .kint-folder-trigger,.kint-rich .kint-search-trigger{background:color-mix(in srgb, var(--text-color) 80%, transparent);border-radius:3px;padding:2px;height:var(--nav-size);width:var(--nav-size);font-size:var(--nav-size);margin-left:5px;font-weight:bold;text-align:center;line-height:1;float:right !important;cursor:pointer;position:relative;overflow:hidden}.kint-rich .kint-access-path-trigger::before,.kint-rich .kint-folder-trigger::before,.kint-rich .kint-search-trigger::before{display:block;content:"";width:100%;height:100%;background:var(--main-background);mask:center/contain no-repeat alpha}.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-folder-trigger:hover,.kint-rich .kint-search-trigger:hover{background:var(--main-background)}.kint-rich .kint-access-path-trigger:hover::before,.kint-rich .kint-folder-trigger:hover::before,.kint-rich .kint-search-trigger:hover::before{background:var(--text-color)}.kint-rich .kint-access-path-trigger::before{mask-image:var(--ap-image)}.kint-rich .kint-folder-trigger::before{mask-image:var(--folder-image)}.kint-rich .kint-search-trigger::before{mask-image:var(--search-image)}.kint-rich input.kint-search{display:none;border:var(--border);border-top-width:0;border-bottom-width:0;padding:var(--spacing);float:right !important;margin:calc(var(--spacing)*-1) 0;color:var(--variable-name-color);background:var(--secondary-background);height:calc(var(--nav-size) + var(--spacing)*2);width:calc(var(--nav-size)*10);position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:var(--secondary-background);filter:saturate(0);opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:var(--main-background);filter:saturate(0)}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:var(--secondary-background);display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger{background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger::before{background:var(--text-color)}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:var(--text-color);text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:var(--variable-name-color);border-bottom:1px dotted var(--variable-name-color)}.kint-rich ul{list-style:none;padding-left:calc(var(--spacing)*3)}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed var(--border-color)}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 calc(var(--spacing)*3);padding-left:0;background:var(--main-background);border:var(--border);border-top:0}.kint-rich ul.kint-tabs>li{background:var(--secondary-background);border:var(--border);cursor:pointer;display:inline-block;height:calc(var(--spacing)*6);margin:calc(var(--spacing)/2);padding:0 calc(2px + var(--spacing)*2.5);vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich ul.kint-tabs>li.kint-active-tab{background:var(--main-background);border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:calc(var(--spacing)*5)}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none;contain:strict}.kint-rich ul.kint-tab-contents>li.kint-show{display:block;contain:content}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich dt>.kint-color-preview{width:var(--nav-size);height:var(--nav-size);display:inline-block;vertical-align:middle;margin-left:10px;border:var(--border);background-color:#ccc;background-image:url('data:image/svg+xml;utf8,');background-size:min(20px,100%)}.kint-rich dt>.kint-color-preview:hover{border-color:var(--border-color-hover)}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:calc(var(--spacing)/2)}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:var(--border);padding:calc(var(--spacing)/2);vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:var(--secondary-background);color:var(--variable-name-color)}.kint-rich table td{background:var(--main-background);white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 var(--border-color-hover) inset}.kint-rich table tr:hover var{color:var(--variable-type-color-hover)}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:1px solid var(--secondary-background)}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid var(--border-color-hover);padding-right:calc(var(--spacing)*2);margin-right:calc(var(--spacing)*2)}.kint-rich pre.kint-source>div.kint-highlight{background:var(--secondary-background)}.kint-rich .kint-microtime-js .kint-microtime-lap{text-shadow:-1px 0 var(--border-color-hover),0 1px var(--border-color-hover),1px 0 var(--border-color-hover),0 -1px var(--border-color-hover);color:var(--main-background);font-weight:bold}.kint-rich{--spacing: 5px;--main-background: #002b36;--secondary-background: #073642;--backdrop-color: var(--secondary-background);--text-color: #839496;--variable-name-color: #93a1a1;--variable-type-color: #268bd2;--variable-type-color-hover: #2aa198;--border-color: #586e75;--border-color-hover: #268bd2;--caret-image: url("data:image/svg+xml;utf8,")}.kint-rich .kint-focused{box-shadow:0 0 3px 2px #859900 inset;border-radius:7px}.kint-rich>dl>dt,.kint-rich ul.kint-tabs{box-shadow:4px 0 2px -3px var(--variable-type-color) inset}.kint-rich ul.kint-tabs li.kint-active-tab{padding-top:7px;height:34px}.kint-rich footer li{color:#ddd} diff --git a/v3_ci4/vendor/kint-php/kint/resources/compiled/solarized.css b/v3_ci4/vendor/kint-php/kint/resources/compiled/solarized.css deleted file mode 100644 index 1c469b5..0000000 --- a/v3_ci4/vendor/kint-php/kint/resources/compiled/solarized.css +++ /dev/null @@ -1 +0,0 @@ -.kint-rich{--spacing: 4px;--nav-size: 15px;--backdrop-color: rgba(255, 255, 255, 0.9);--main-background: #e0eaef;--secondary-background: #c1d4df;--text-color: #1d1e1e;--variable-name-color: #1d1e1e;--variable-type-color: #0092db;--variable-type-color-hover: #5cb730;--border-color: #b6cedb;--border-color-hover: #0092db;--border: 1px solid var(--border-color);--foldout-max-size: calc(100vh - 100px);--foldout-zindex: 999999;--caret-image: url("data:image/svg+xml;utf8,");--ap-image: url("data:image/svg+xml;utf8,");--folder-image: url("data:image/svg+xml;utf8,");--search-image: url("data:image/svg+xml;utf8,");font-size:13px;overflow-x:auto;white-space:nowrap;background:var(--backdrop-color);direction:ltr;contain:content}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:var(--foldout-zindex);width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:var(--foldout-max-size);padding-right:calc(var(--spacing)*2);overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection{background:var(--border-color-hover);color:var(--text-color)}.kint-rich .kint-focused{box-shadow:0 0 3px 3px var(--variable-type-color-hover)}.kint-rich .kint-focused.kint-weak-focus{box-shadow:0 0 3px 1px color-mix(in srgb, var(--variable-type-color-hover) 50%, transparent)}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:var(--text-color);float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:calc(var(--spacing)*2) 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:var(--main-background);border:var(--border);color:var(--text-color);display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:var(--spacing)}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:var(--border-color-hover)}.kint-rich>dl dl{padding:0 0 0 calc(var(--spacing)*3)}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:var(--caret-image) no-repeat scroll 0 0/var(--nav-size) 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:var(--nav-size);width:var(--nav-size);margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed var(--border-color);contain:strict}.kint-rich dt.kint-parent.kint-show+dd{display:block;contain:content}.kint-rich var,.kint-rich var a{color:var(--variable-type-color);font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:var(--variable-type-color-hover)}.kint-rich dfn{font-style:normal;font-family:monospace;color:var(--variable-name-color)}.kint-rich pre{color:var(--text-color);margin:0 0 0 calc(var(--spacing)*3);padding:5px;overflow-y:hidden;border-top:0;border:var(--border);background:var(--main-background);display:block;word-break:normal}.kint-rich .kint-access-path-trigger,.kint-rich .kint-folder-trigger,.kint-rich .kint-search-trigger{background:color-mix(in srgb, var(--text-color) 80%, transparent);border-radius:3px;padding:2px;height:var(--nav-size);width:var(--nav-size);font-size:var(--nav-size);margin-left:5px;font-weight:bold;text-align:center;line-height:1;float:right !important;cursor:pointer;position:relative;overflow:hidden}.kint-rich .kint-access-path-trigger::before,.kint-rich .kint-folder-trigger::before,.kint-rich .kint-search-trigger::before{display:block;content:"";width:100%;height:100%;background:var(--main-background);mask:center/contain no-repeat alpha}.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-folder-trigger:hover,.kint-rich .kint-search-trigger:hover{background:var(--main-background)}.kint-rich .kint-access-path-trigger:hover::before,.kint-rich .kint-folder-trigger:hover::before,.kint-rich .kint-search-trigger:hover::before{background:var(--text-color)}.kint-rich .kint-access-path-trigger::before{mask-image:var(--ap-image)}.kint-rich .kint-folder-trigger::before{mask-image:var(--folder-image)}.kint-rich .kint-search-trigger::before{mask-image:var(--search-image)}.kint-rich input.kint-search{display:none;border:var(--border);border-top-width:0;border-bottom-width:0;padding:var(--spacing);float:right !important;margin:calc(var(--spacing)*-1) 0;color:var(--variable-name-color);background:var(--secondary-background);height:calc(var(--nav-size) + var(--spacing)*2);width:calc(var(--nav-size)*10);position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:var(--secondary-background);filter:saturate(0);opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:var(--main-background);filter:saturate(0)}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:var(--secondary-background);display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger{background:rgba(0,0,0,0)}.kint-rich footer>.kint-folder-trigger::before{background:var(--text-color)}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:var(--text-color);text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:var(--variable-name-color);border-bottom:1px dotted var(--variable-name-color)}.kint-rich ul{list-style:none;padding-left:calc(var(--spacing)*3)}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed var(--border-color)}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 calc(var(--spacing)*3);padding-left:0;background:var(--main-background);border:var(--border);border-top:0}.kint-rich ul.kint-tabs>li{background:var(--secondary-background);border:var(--border);cursor:pointer;display:inline-block;height:calc(var(--spacing)*6);margin:calc(var(--spacing)/2);padding:0 calc(2px + var(--spacing)*2.5);vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich ul.kint-tabs>li.kint-active-tab{background:var(--main-background);border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:calc(var(--spacing)*5)}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none;contain:strict}.kint-rich ul.kint-tab-contents>li.kint-show{display:block;contain:content}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:var(--border-color-hover);color:var(--variable-type-color-hover)}.kint-rich dt>.kint-color-preview{width:var(--nav-size);height:var(--nav-size);display:inline-block;vertical-align:middle;margin-left:10px;border:var(--border);background-color:#ccc;background-image:url('data:image/svg+xml;utf8,');background-size:min(20px,100%)}.kint-rich dt>.kint-color-preview:hover{border-color:var(--border-color-hover)}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:calc(var(--spacing)/2)}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:var(--border);padding:calc(var(--spacing)/2);vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:var(--secondary-background);color:var(--variable-name-color)}.kint-rich table td{background:var(--main-background);white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 var(--border-color-hover) inset}.kint-rich table tr:hover var{color:var(--variable-type-color-hover)}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:1px solid var(--secondary-background)}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid var(--border-color-hover);padding-right:calc(var(--spacing)*2);margin-right:calc(var(--spacing)*2)}.kint-rich pre.kint-source>div.kint-highlight{background:var(--secondary-background)}.kint-rich .kint-microtime-js .kint-microtime-lap{text-shadow:-1px 0 var(--border-color-hover),0 1px var(--border-color-hover),1px 0 var(--border-color-hover),0 -1px var(--border-color-hover);color:var(--main-background);font-weight:bold}.kint-rich{--spacing: 5px;--main-background: #fdf6e3;--secondary-background: #eee8d5;--text-color: #657b83;--variable-name-color: #586e75;--variable-type-color: #268bd2;--variable-type-color-hover: #2aa198;--border-color: #93a1a1;--border-color-hover: #268bd2;--caret-image: url("data:image/svg+xml;utf8,")}.kint-rich .kint-focused{box-shadow:0 0 3px 2px #859900 inset;border-radius:7px}.kint-rich>dl>dt,.kint-rich ul.kint-tabs{box-shadow:4px 0 2px -3px var(--variable-type-color) inset}.kint-rich ul.kint-tabs li.kint-active-tab{padding-top:7px;height:34px} diff --git a/v3_ci4/vendor/kint-php/kint/src/CallFinder.php b/v3_ci4/vendor/kint-php/kint/src/CallFinder.php deleted file mode 100644 index cc34123..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/CallFinder.php +++ /dev/null @@ -1,706 +0,0 @@ - true, - T_COMMENT => true, - T_DOC_COMMENT => true, - T_INLINE_HTML => true, - T_OPEN_TAG => true, - T_OPEN_TAG_WITH_ECHO => true, - T_WHITESPACE => true, - ]; - - /** - * Things we need to do specially for operator tokens: - * - Refuse to strip spaces around them - * - Wrap the access path in parentheses if there - * are any of these in the final short parameter. - */ - private static array $operator = [ - T_AND_EQUAL => true, - T_BOOLEAN_AND => true, - T_BOOLEAN_OR => true, - T_ARRAY_CAST => true, - T_BOOL_CAST => true, - T_CLONE => true, - T_CONCAT_EQUAL => true, - T_DEC => true, - T_DIV_EQUAL => true, - T_DOUBLE_CAST => true, - T_FUNCTION => true, - T_INC => true, - T_INCLUDE => true, - T_INCLUDE_ONCE => true, - T_INSTANCEOF => true, - T_INT_CAST => true, - T_IS_EQUAL => true, - T_IS_GREATER_OR_EQUAL => true, - T_IS_IDENTICAL => true, - T_IS_NOT_EQUAL => true, - T_IS_NOT_IDENTICAL => true, - T_IS_SMALLER_OR_EQUAL => true, - T_LOGICAL_AND => true, - T_LOGICAL_OR => true, - T_LOGICAL_XOR => true, - T_MINUS_EQUAL => true, - T_MOD_EQUAL => true, - T_MUL_EQUAL => true, - T_OBJECT_CAST => true, - T_OR_EQUAL => true, - T_PLUS_EQUAL => true, - T_REQUIRE => true, - T_REQUIRE_ONCE => true, - T_SL => true, - T_SL_EQUAL => true, - T_SR => true, - T_SR_EQUAL => true, - T_STRING_CAST => true, - T_UNSET_CAST => true, - T_XOR_EQUAL => true, - T_POW => true, - T_POW_EQUAL => true, - T_SPACESHIP => true, - T_DOUBLE_ARROW => true, - T_FN => true, - T_COALESCE_EQUAL => true, - '!' => true, - '%' => true, - '&' => true, - '*' => true, - '+' => true, - '-' => true, - '.' => true, - '/' => true, - ':' => true, - '<' => true, - '=' => true, - '>' => true, - '?' => true, - '^' => true, - '|' => true, - '~' => true, - ]; - - private static array $preserve_spaces = [ - T_CLASS => true, - T_NEW => true, - ]; - - private static array $strip = [ - '(' => true, - ')' => true, - '[' => true, - ']' => true, - '{' => true, - '}' => true, - T_OBJECT_OPERATOR => true, - T_DOUBLE_COLON => true, - T_NS_SEPARATOR => true, - ]; - - private static array $classcalls = [ - T_DOUBLE_COLON => true, - T_OBJECT_OPERATOR => true, - ]; - - private static array $namespace = [ - T_STRING => true, - ]; - - /** - * @psalm-param callable-string|(callable-array&list{class-string, non-empty-string}) $function - * - * @return array List of matching calls on the relevant line - * - * @psalm-return list, modifiers: list}> - */ - public static function getFunctionCalls(string $source, int $line, $function): array - { - static $up = [ - '(' => true, - '[' => true, - '{' => true, - T_CURLY_OPEN => true, - T_DOLLAR_OPEN_CURLY_BRACES => true, - ]; - static $down = [ - ')' => true, - ']' => true, - '}' => true, - ]; - static $modifiers = [ - '!' => true, - '@' => true, - '~' => true, - '+' => true, - '-' => true, - ]; - static $identifier = [ - T_DOUBLE_COLON => true, - T_STRING => true, - T_NS_SEPARATOR => true, - ]; - - if (KINT_PHP80) { - $up[T_ATTRIBUTE] = true; - self::$operator[T_MATCH] = true; - self::$strip[T_NULLSAFE_OBJECT_OPERATOR] = true; - self::$classcalls[T_NULLSAFE_OBJECT_OPERATOR] = true; - self::$namespace[T_NAME_FULLY_QUALIFIED] = true; - self::$namespace[T_NAME_QUALIFIED] = true; - self::$namespace[T_NAME_RELATIVE] = true; - $identifier[T_NAME_FULLY_QUALIFIED] = true; - $identifier[T_NAME_QUALIFIED] = true; - $identifier[T_NAME_RELATIVE] = true; - } - - if (!KINT_PHP84) { - self::$operator[T_NEW] = true; // @codeCoverageIgnore - } - - if (KINT_PHP85) { - /** @psalm-suppress UndefinedConstant */ - self::$operator[T_PIPE] = true; - } - - /** @psalm-var list */ - $tokens = \token_get_all($source); - $function_calls = []; - - // Performance optimization preventing backwards loops - /** @psalm-var array */ - $prev_tokens = [null, null, null]; - - if (\is_array($function)) { - $class = \explode('\\', $function[0]); - $class = \strtolower(\end($class)); - $function = \strtolower($function[1]); - } else { - $class = null; - $function = \strtolower($function); - } - - // Loop through tokens - foreach ($tokens as $index => $token) { - if (!\is_array($token)) { - continue; - } - - if ($token[2] > $line) { - break; - } - - // Store the last real tokens for later - if (isset(self::$ignore[$token[0]])) { - continue; - } - - $prev_tokens = [$prev_tokens[1], $prev_tokens[2], $token]; - - // The logic for 7.3 through 8.1 is far more complicated. - // This should speed things up without making a lot more work for us - if (KINT_PHP82 && $line !== $token[2]) { - continue; - } - - // Check if it's the right type to be the function we're looking for - if (!isset(self::$namespace[$token[0]])) { - continue; - } - - $ns = \explode('\\', \strtolower($token[1])); - - if (\end($ns) !== $function) { - continue; - } - - // Check if it's a function call - $nextReal = self::realTokenIndex($tokens, $index); - if ('(' !== ($tokens[$nextReal] ?? null)) { - continue; - } - - // Check if it matches the signature - if (null === $class) { - if (null !== $prev_tokens[1] && isset(self::$classcalls[$prev_tokens[1][0]])) { - continue; - } - } else { - if (null === $prev_tokens[1] || T_DOUBLE_COLON !== $prev_tokens[1][0]) { - continue; - } - - if (null === $prev_tokens[0] || !isset(self::$namespace[$prev_tokens[0][0]])) { - continue; - } - - // All self::$namespace tokens are T_ constants - /** - * @psalm-var PhpTokenArray $prev_tokens[0] - * Psalm bug #746 (wontfix) - */ - $ns = \explode('\\', \strtolower($prev_tokens[0][1])); - - if (\end($ns) !== $class) { - continue; - } - } - - $last_line = $token[2]; - $depth = 1; // The depth respective to the function call - $offset = $nextReal + 1; // The start of the function call - $instring = false; // Whether we're in a string or not - $realtokens = false; // Whether the current scope contains anything meaningful or not - $paramrealtokens = false; // Whether the current parameter contains anything meaningful - $params = []; // All our collected parameters - $shortparam = []; // The short version of the parameter - $param_start = $offset; // The distance to the start of the parameter - $quote = null; // Buffer to store quote type for shortparam - $in_ternary = false; - - // Loop through the following tokens until the function call ends - while (isset($tokens[$offset])) { - $token = $tokens[$offset]; - - if (\is_array($token)) { - $last_line = $token[2]; - } - - if (!isset(self::$ignore[$token[0]]) && !isset($down[$token[0]])) { - $paramrealtokens = $realtokens = true; - } - - // If it's a token that makes us to up a level, increase the depth - if (isset($up[$token[0]])) { - if (1 === $depth) { - $shortparam[] = $token; - $realtokens = false; - } - - ++$depth; - } elseif (isset($down[$token[0]])) { - --$depth; - - // If this brings us down to the parameter level, and we've had - // real tokens since going up, fill the $shortparam with an ellipsis - if (1 === $depth) { - if ($realtokens) { - $shortparam[] = '...'; - } - $shortparam[] = $token; - } - } elseif ('"' === $token || 'b"' === $token) { - // Strings use the same symbol for up and down, but we can - // only ever be inside one string, so just use a bool for that - if ($instring) { - --$depth; - if (1 === $depth) { - $shortparam[] = '...'; - } - } else { - ++$depth; - } - - $instring = !$instring; - - $shortparam[] = $token; - } elseif (T_START_HEREDOC === $token[0]) { - if (1 === $depth) { - $quote = \ltrim($token[1], " \t<")[0]; - if ("'" !== $quote) { - $quote = '"'; - } - $shortparam[] = [T_START_HEREDOC, $quote]; - $instring = true; - } - - ++$depth; - } elseif (T_END_HEREDOC === $token[0]) { - --$depth; - - if (1 === $depth) { - if ($realtokens) { - $shortparam[] = '...'; - } - $shortparam[] = [T_END_HEREDOC, $quote]; - } - } elseif (1 === $depth) { - if (',' === $token[0]) { - $params[] = [ - 'full' => \array_slice($tokens, $param_start, $offset - $param_start), - 'short' => $shortparam, - ]; - $shortparam = []; - $paramrealtokens = false; - $in_ternary = false; - $param_start = $offset + 1; - } elseif (T_CONSTANT_ENCAPSED_STRING === $token[0]) { - $quote = $token[1][0]; - if ('b' === $quote) { - $quote = $token[1][1]; - if (\strlen($token[1]) > 3) { - $token[1] = 'b'.$quote.'...'.$quote; - } - } else { - if (\strlen($token[1]) > 2) { - $token[1] = $quote.'...'.$quote; - } - } - $shortparam[] = $token; - } else { - // We can't tell the order of named parameters or if they're splatting - // without parsing the called function and that's too much work for this - // edge case so we'll just skip parameters altogether. - if ('?' === $token) { - $in_ternary = true; - } elseif (!$in_ternary && ':' === $token) { - $params = []; - break; - } - $shortparam[] = $token; - } - } - - // Depth has dropped to 0 (So we've hit the closing paren) - if ($depth <= 0) { - if ($paramrealtokens) { - $params[] = [ - 'full' => \array_slice($tokens, $param_start, $offset - $param_start), - 'short' => $shortparam, - ]; - } - - break; - } - - ++$offset; - } - - // If we're not passed (or at) the line at the end - // of the function call, we're too early so skip it - // Only applies to < 8.2 since we check line explicitly above that - if (!KINT_PHP82 && $last_line < $line) { - continue; // @codeCoverageIgnore - } - - $formatted_parameters = []; - - // Format the final output parameters - foreach ($params as $param) { - $name = self::tokensFormatted($param['short']); - $path = self::tokensToString(self::tokensTrim($param['full'])); - $expression = false; - $literal = false; - $new_without_parens = false; - - foreach ($name as $name_index => $token) { - if (KINT_PHP85 && T_CLONE === $token[0]) { - $nextReal = self::realTokenIndex($name, $name_index + 1); - - if (null !== $nextReal && '(' === $name[$nextReal]) { - continue; - } - } - - if (self::tokenIsOperator($token)) { - $expression = true; - break; - } - } - - if (!$expression && T_START_HEREDOC === $name[0][0]) { - $expression = true; - $literal = true; - } - - // As of 8.4 new is only an expression when parentheses are - // omitted. In that case we can cheat and add them ourselves. - // - // > PHP interprets the first expression after new as a class name - // per https://wiki.php.net/rfc/new_without_parentheses - if (KINT_PHP84 && !$expression && T_NEW === $name[0][0]) { - $had_name_token = false; - $new_without_parens = true; - - foreach ($name as $token) { - if (T_NEW === $token[0]) { - continue; - } - - if (isset(self::$ignore[$token[0]])) { - continue; - } - - if (T_CLASS === $token[0]) { - $new_without_parens = false; - break; - } - - if ('(' === $token && $had_name_token) { - $new_without_parens = false; - break; - } - - $had_name_token = true; - } - } - - if (!$expression && 1 === \count($name)) { - switch ($name[0][0]) { - case T_CONSTANT_ENCAPSED_STRING: - case T_LNUMBER: - case T_DNUMBER: - $literal = true; - break; - case T_STRING: - switch (\strtolower($name[0][1])) { - case 'null': - case 'true': - case 'false': - $literal = true; - } - } - - $name = self::tokensToString($name); - } else { - $name = self::tokensToString($name); - - if (!$expression) { - switch (\strtolower($name)) { - case 'array()': - case '[]': - $literal = true; - break; - } - } - } - - $formatted_parameters[] = [ - 'name' => $name, - 'path' => $path, - 'expression' => $expression, - 'literal' => $literal, - 'new_without_parens' => $new_without_parens, - ]; - } - - // Skip first-class callables - if (KINT_PHP81 && 1 === \count($formatted_parameters) && '...' === \reset($formatted_parameters)['path']) { - continue; - } - - // Get the modifiers - --$index; - - while (isset($tokens[$index])) { - if (!isset(self::$ignore[$tokens[$index][0]]) && !isset($identifier[$tokens[$index][0]])) { - break; - } - - --$index; - } - - $mods = []; - - while (isset($tokens[$index])) { - if (isset(self::$ignore[$tokens[$index][0]])) { - --$index; - continue; - } - - if (isset($modifiers[$tokens[$index][0]])) { - $mods[] = $tokens[$index]; - --$index; - continue; - } - - break; - } - - $function_calls[] = [ - 'parameters' => $formatted_parameters, - 'modifiers' => $mods, - ]; - } - - return $function_calls; - } - - private static function realTokenIndex(array $tokens, int $index): ?int - { - ++$index; - - while (isset($tokens[$index])) { - if (!isset(self::$ignore[$tokens[$index][0]])) { - return $index; - } - - ++$index; - } - - return null; - } - - /** - * We need a separate method to check if tokens are operators because we - * occasionally add "..." to short parameter versions. If we simply check - * for `$token[0]` then "..." will incorrectly match the "." operator. - * - * @psalm-param PhpToken $token The token to check - */ - private static function tokenIsOperator($token): bool - { - return '...' !== $token && isset(self::$operator[$token[0]]); - } - - /** - * @psalm-param PhpToken $token The token to check - */ - private static function tokenPreserveWhitespace($token): bool - { - return self::tokenIsOperator($token) || isset(self::$preserve_spaces[$token[0]]); - } - - private static function tokensToString(array $tokens): string - { - $out = ''; - - foreach ($tokens as $token) { - if (\is_string($token)) { - $out .= $token; - } else { - $out .= $token[1]; - } - } - - return $out; - } - - private static function tokensTrim(array $tokens): array - { - foreach ($tokens as $index => $token) { - if (isset(self::$ignore[$token[0]])) { - unset($tokens[$index]); - } else { - break; - } - } - - $tokens = \array_reverse($tokens); - - foreach ($tokens as $index => $token) { - if (isset(self::$ignore[$token[0]])) { - unset($tokens[$index]); - } else { - break; - } - } - - return \array_reverse($tokens); - } - - /** @psalm-return list */ - private static function tokensFormatted(array $tokens): array - { - $tokens = self::tokensTrim($tokens); - - $space = false; - $attribute = false; - // Keep space between "strip" symbols for different behavior for matches or closures - // Normally we want to strip spaces between strip tokens: $x{...}[...] - // However with closures and matches we don't: function (...) {...} - $ignorestrip = false; - $output = []; - $last = null; - - if (T_FUNCTION === $tokens[0][0] || - T_FN === $tokens[0][0] || - (KINT_PHP80 && T_MATCH === $tokens[0][0]) - ) { - $ignorestrip = true; - } - - foreach ($tokens as $index => $token) { - if (isset(self::$ignore[$token[0]])) { - if ($space) { - continue; - } - - $next = self::realTokenIndex($tokens, $index); - if (null === $next) { - // This should be impossible, since we always call tokensTrim first - break; // @codeCoverageIgnore - } - $next = $tokens[$next]; - - /** - * @psalm-var PhpToken $last - * Since we call tokensTrim we know we can't be here without a $last - */ - if ($attribute && ']' === $last[0]) { - $attribute = false; - } elseif (!$ignorestrip && isset(self::$strip[$last[0]]) && !self::tokenPreserveWhitespace($next)) { - continue; - } - - if (!$ignorestrip && isset(self::$strip[$next[0]]) && !self::tokenPreserveWhitespace($last)) { - continue; - } - - $token[1] = ' '; - $space = true; - } else { - if (KINT_PHP80 && null !== $last && T_ATTRIBUTE === $last[0]) { - $attribute = true; - } - - $space = false; - $last = $token; - } - - $output[] = $token; - } - - return $output; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/FacadeInterface.php b/v3_ci4/vendor/kint-php/kint/src/FacadeInterface.php deleted file mode 100644 index d61f1bd..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/FacadeInterface.php +++ /dev/null @@ -1,49 +0,0 @@ -, - * modifiers: array, - * callee: ?callable, - * caller: ?callable, - * trace: TraceFrame[], - * } - * - * @psalm-api - */ -class Kint implements FacadeInterface -{ - public const MODE_RICH = 'r'; - public const MODE_TEXT = 't'; - public const MODE_CLI = 'c'; - public const MODE_PLAIN = 'p'; - - /** - * @var mixed Kint mode - * - * false: Disabled - * true: Enabled, default mode selection - * other: Manual mode selection - * - * @psalm-var KintMode - */ - public static $enabled_mode = true; - - /** - * Default mode. - * - * @psalm-var KintMode - */ - public static $mode_default = self::MODE_RICH; - - /** - * Default mode in CLI with cli_detection on. - * - * @psalm-var KintMode - */ - public static $mode_default_cli = self::MODE_CLI; - - /** - * @var bool enable detection when Kint is command line. - * - * Formats output with whitespace only; does not HTML-escape it - */ - public static bool $cli_detection = true; - - /** - * @var bool Return output instead of echoing - */ - public static bool $return = false; - - /** - * @var int depth limit for array/object traversal. 0 for no limit - */ - public static int $depth_limit = 7; - - /** - * @var bool expand all trees by default for rich view - */ - public static bool $expanded = false; - - /** - * @var bool whether to display where kint was called from - */ - public static bool $display_called_from = true; - - /** - * @var array Kint aliases. Add debug functions in Kint wrappers here to fix modifiers and backtraces - */ - public static array $aliases = [ - [self::class, 'dump'], - [self::class, 'trace'], - [self::class, 'dumpAll'], - ]; - - /** - * @psalm-var array> - * - * Array of modes to renderer class names - */ - public static array $renderers = [ - self::MODE_RICH => Renderer\RichRenderer::class, - self::MODE_PLAIN => Renderer\PlainRenderer::class, - self::MODE_TEXT => TextRenderer::class, - self::MODE_CLI => Renderer\CliRenderer::class, - ]; - - /** - * @psalm-var array> - */ - public static array $plugins = [ - \Kint\Parser\ArrayLimitPlugin::class, - \Kint\Parser\ArrayObjectPlugin::class, - \Kint\Parser\Base64Plugin::class, - \Kint\Parser\BinaryPlugin::class, - \Kint\Parser\BlacklistPlugin::class, - \Kint\Parser\ClassHooksPlugin::class, - \Kint\Parser\ClassMethodsPlugin::class, - \Kint\Parser\ClassStaticsPlugin::class, - \Kint\Parser\ClassStringsPlugin::class, - \Kint\Parser\ClosurePlugin::class, - \Kint\Parser\ColorPlugin::class, - \Kint\Parser\DateTimePlugin::class, - \Kint\Parser\DomPlugin::class, - \Kint\Parser\EnumPlugin::class, - \Kint\Parser\FsPathPlugin::class, - \Kint\Parser\HtmlPlugin::class, - \Kint\Parser\IteratorPlugin::class, - \Kint\Parser\JsonPlugin::class, - \Kint\Parser\MicrotimePlugin::class, - \Kint\Parser\MysqliPlugin::class, - // \Kint\Parser\SerializePlugin::class, - \Kint\Parser\SimpleXMLElementPlugin::class, - \Kint\Parser\SplFileInfoPlugin::class, - \Kint\Parser\StreamPlugin::class, - \Kint\Parser\TablePlugin::class, - \Kint\Parser\ThrowablePlugin::class, - \Kint\Parser\TimestampPlugin::class, - \Kint\Parser\ToStringPlugin::class, - \Kint\Parser\TracePlugin::class, - \Kint\Parser\XmlPlugin::class, - ]; - - protected Parser $parser; - protected RendererInterface $renderer; - - public function __construct(Parser $p, RendererInterface $r) - { - $this->parser = $p; - $this->renderer = $r; - } - - public function setParser(Parser $p): void - { - $this->parser = $p; - } - - public function getParser(): Parser - { - return $this->parser; - } - - public function setRenderer(RendererInterface $r): void - { - $this->renderer = $r; - } - - public function getRenderer(): RendererInterface - { - return $this->renderer; - } - - public function setStatesFromStatics(array $statics): void - { - $this->renderer->setStatics($statics); - - $this->parser->setDepthLimit($statics['depth_limit'] ?? 0); - $this->parser->clearPlugins(); - - if (!isset($statics['plugins'])) { - return; - } - - $plugins = []; - - foreach ($statics['plugins'] as $plugin) { - if ($plugin instanceof PluginInterface) { - $plugins[] = $plugin; - } elseif (\is_string($plugin) && \is_a($plugin, ConstructablePluginInterface::class, true)) { - $plugins[] = new $plugin($this->parser); - } - } - - $plugins = $this->renderer->filterParserPlugins($plugins); - - foreach ($plugins as $plugin) { - try { - $this->parser->addPlugin($plugin); - } catch (InvalidArgumentException $e) { - \trigger_error( - 'Plugin '.Utils::errorSanitizeString(\get_class($plugin)).' could not be added to a Kint parser: '.Utils::errorSanitizeString($e->getMessage()), - E_USER_WARNING - ); - } - } - } - - public function setStatesFromCallInfo(array $info): void - { - $this->renderer->setCallInfo($info); - - if (isset($info['modifiers']) && \is_array($info['modifiers']) && \in_array('+', $info['modifiers'], true)) { - $this->parser->setDepthLimit(0); - } - - $this->parser->setCallerClass($info['caller']['class'] ?? null); - } - - public function dumpAll(array $vars, array $base): string - { - if (\array_keys($vars) !== \array_keys($base)) { - throw new InvalidArgumentException('Kint::dumpAll requires arrays of identical size and keys as arguments'); - } - - if ([] === $vars) { - return $this->dumpNothing(); - } - - $output = $this->renderer->preRender(); - - foreach ($vars as $key => $_) { - if (!$base[$key] instanceof ContextInterface) { - throw new InvalidArgumentException('Kint::dumpAll requires all elements of the second argument to be ContextInterface instances'); - } - $output .= $this->dumpVar($vars[$key], $base[$key]); - } - - $output .= $this->renderer->postRender(); - - return $output; - } - - protected function dumpNothing(): string - { - $output = $this->renderer->preRender(); - $output .= $this->renderer->render(new UninitializedValue(new BaseContext('No argument'))); - $output .= $this->renderer->postRender(); - - return $output; - } - - /** - * Dumps and renders a var. - * - * @param mixed &$var Data to dump - */ - protected function dumpVar(&$var, ContextInterface $c): string - { - return $this->renderer->render( - $this->parser->parse($var, $c) - ); - } - - /** - * Gets all static settings at once. - * - * @return array Current static settings - */ - public static function getStatics(): array - { - return [ - 'aliases' => static::$aliases, - 'cli_detection' => static::$cli_detection, - 'depth_limit' => static::$depth_limit, - 'display_called_from' => static::$display_called_from, - 'enabled_mode' => static::$enabled_mode, - 'expanded' => static::$expanded, - 'mode_default' => static::$mode_default, - 'mode_default_cli' => static::$mode_default_cli, - 'plugins' => static::$plugins, - 'renderers' => static::$renderers, - 'return' => static::$return, - ]; - } - - /** - * Creates a Kint instance based on static settings. - * - * @param array $statics array of statics as returned by getStatics - */ - public static function createFromStatics(array $statics): ?FacadeInterface - { - $mode = false; - - if (isset($statics['enabled_mode'])) { - $mode = $statics['enabled_mode']; - - if (true === $mode && isset($statics['mode_default'])) { - $mode = $statics['mode_default']; - - if (PHP_SAPI === 'cli' && !empty($statics['cli_detection']) && isset($statics['mode_default_cli'])) { - $mode = $statics['mode_default_cli']; - } - } - } - - if (false === $mode) { - return null; - } - - $renderer = null; - if (isset($statics['renderers'][$mode])) { - if ($statics['renderers'][$mode] instanceof RendererInterface) { - $renderer = $statics['renderers'][$mode]; - } - - if (\is_a($statics['renderers'][$mode], ConstructableRendererInterface::class, true)) { - $renderer = new $statics['renderers'][$mode](); - } - } - - $renderer ??= new TextRenderer(); - - return new static(new Parser(), $renderer); - } - - /** - * Creates base contexts given parameter info. - * - * @psalm-param list $params - * - * @return BaseContext[] Base contexts for the arguments - */ - public static function getBasesFromParamInfo(array $params, int $argc): array - { - $bases = []; - - for ($i = 0; $i < $argc; ++$i) { - $param = $params[$i] ?? null; - - if (!empty($param['literal'])) { - $name = 'literal'; - } else { - $name = $param['name'] ?? '$'.$i; - } - - if (isset($param['path'])) { - $access_path = $param['path']; - - if ($param['expression']) { - $access_path = '('.$access_path.')'; - } elseif ($param['new_without_parens']) { - $access_path .= '()'; - } - } else { - $access_path = '$'.$i; - } - - $base = new BaseContext($name); - $base->access_path = $access_path; - $bases[] = $base; - } - - return $bases; - } - - /** - * Gets call info from the backtrace, alias, and argument count. - * - * Aliases must be normalized beforehand (Utils::normalizeAliases) - * - * @param array $aliases Call aliases as found in Kint::$aliases - * @param array[] $trace Backtrace - * @param array $args Arguments - * - * @psalm-param list $trace - * - * @return KintCallInfo Call info - */ - public static function getCallInfo(array $aliases, array $trace, array $args): array - { - $found = false; - $callee = null; - $caller = null; - $miniTrace = []; - - foreach ($trace as $frame) { - if (Utils::traceFrameIsListed($frame, $aliases)) { - $found = true; - $miniTrace = []; - } - - if (!Utils::traceFrameIsListed($frame, ['spl_autoload_call'])) { - $miniTrace[] = $frame; - } - } - - if ($found) { - $callee = \reset($miniTrace) ?: null; - $caller = \next($miniTrace) ?: null; - } - - foreach ($miniTrace as $index => $frame) { - if ((0 === $index && $callee === $frame) || isset($frame['file'], $frame['line'])) { - unset($frame['object'], $frame['args']); - $miniTrace[$index] = $frame; - } else { - unset($miniTrace[$index]); - } - } - - $miniTrace = \array_values($miniTrace); - - $call = static::getSingleCall($callee ?: [], $args); - - $ret = [ - 'params' => null, - 'modifiers' => [], - 'callee' => $callee, - 'caller' => $caller, - 'trace' => $miniTrace, - ]; - - if (null !== $call) { - $ret['params'] = $call['parameters']; - $ret['modifiers'] = $call['modifiers']; - } - - return $ret; - } - - /** - * Dumps a backtrace. - * - * Functionally equivalent to Kint::dump(1) or Kint::dump(debug_backtrace(true)) - * - * @return int|string - */ - public static function trace() - { - if (false === static::$enabled_mode) { - return 0; - } - - static::$aliases = Utils::normalizeAliases(static::$aliases); - - $call_info = static::getCallInfo(static::$aliases, \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), []); - - $statics = static::getStatics(); - - if (\in_array('~', $call_info['modifiers'], true)) { - $statics['enabled_mode'] = static::MODE_TEXT; - } - - $kintstance = static::createFromStatics($statics); - if (!$kintstance) { - return 0; - } - - if (\in_array('-', $call_info['modifiers'], true)) { - while (\ob_get_level()) { - \ob_end_clean(); - } - } - - $kintstance->setStatesFromStatics($statics); - $kintstance->setStatesFromCallInfo($call_info); - - $trimmed_trace = []; - $trace = \debug_backtrace(); - - foreach ($trace as $frame) { - if (Utils::traceFrameIsListed($frame, static::$aliases)) { - $trimmed_trace = []; - } - - $trimmed_trace[] = $frame; - } - - \array_shift($trimmed_trace); - - $base = new BaseContext('Kint\\Kint::trace()'); - $base->access_path = 'debug_backtrace()'; - $output = $kintstance->dumpAll([$trimmed_trace], [$base]); - - if (static::$return || \in_array('@', $call_info['modifiers'], true)) { - return $output; - } - - echo $output; - - if (\in_array('-', $call_info['modifiers'], true)) { - \flush(); // @codeCoverageIgnore - } - - return 0; - } - - /** - * Dumps some data. - * - * Functionally equivalent to Kint::dump(1) or Kint::dump(debug_backtrace()) - * - * @psalm-param mixed ...$args - * - * @return int|string - */ - public static function dump(...$args) - { - if (false === static::$enabled_mode) { - return 0; - } - - static::$aliases = Utils::normalizeAliases(static::$aliases); - - $call_info = static::getCallInfo(static::$aliases, \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), $args); - - $statics = static::getStatics(); - - if (\in_array('~', $call_info['modifiers'], true)) { - $statics['enabled_mode'] = static::MODE_TEXT; - } - - $kintstance = static::createFromStatics($statics); - if (!$kintstance) { - return 0; - } - - if (\in_array('-', $call_info['modifiers'], true)) { - while (\ob_get_level()) { - \ob_end_clean(); - } - } - - $kintstance->setStatesFromStatics($statics); - $kintstance->setStatesFromCallInfo($call_info); - - $bases = static::getBasesFromParamInfo($call_info['params'] ?? [], \count($args)); - $output = $kintstance->dumpAll(\array_values($args), $bases); - - if (static::$return || \in_array('@', $call_info['modifiers'], true)) { - return $output; - } - - echo $output; - - if (\in_array('-', $call_info['modifiers'], true)) { - \flush(); // @codeCoverageIgnore - } - - return 0; - } - - /** - * Returns specific function call info from a stack trace frame, or null if no match could be found. - * - * @param array $frame The stack trace frame in question - * @param array $args The arguments - * - * @return ?array params and modifiers, or null if a specific call could not be determined - */ - protected static function getSingleCall(array $frame, array $args): ?array - { - if ( - !isset($frame['file'], $frame['line'], $frame['function']) || - !\is_readable($frame['file']) || - false === ($source = \file_get_contents($frame['file'])) - ) { - return null; - } - - if (empty($frame['class'])) { - $callfunc = $frame['function']; - } else { - $callfunc = [$frame['class'], $frame['function']]; - } - - $calls = CallFinder::getFunctionCalls($source, $frame['line'], $callfunc); - - $argc = \count($args); - - $return = null; - - foreach ($calls as $call) { - $is_unpack = false; - - // Handle argument unpacking as a last resort - foreach ($call['parameters'] as $i => &$param) { - if (0 === \strpos($param['name'], '...')) { - $is_unpack = true; - - // If we're on the last param - if ($i < $argc && $i === \count($call['parameters']) - 1) { - unset($call['parameters'][$i]); - - if (Utils::isAssoc($args)) { - // Associated unpacked arrays can be accessed by key - $keys = \array_slice(\array_keys($args), $i); - - foreach ($keys as $key) { - $call['parameters'][] = [ - 'name' => ((string) \substr($param['name'], 3)).'['.\var_export($key, true).']', - 'path' => ((string) \substr($param['path'], 3)).'['.\var_export($key, true).']', - 'expression' => false, - 'literal' => false, - 'new_without_parens' => false, - ]; - } - } else { - // Numeric unpacked arrays have their order blown away like a pass - // through array_values so we can't access them directly at all - for ($j = 0; $j + $i < $argc; ++$j) { - $call['parameters'][] = [ - 'name' => 'array_values('.((string) \substr($param['name'], 3)).')['.$j.']', - 'path' => 'array_values('.((string) \substr($param['path'], 3)).')['.$j.']', - 'expression' => false, - 'literal' => false, - 'new_without_parens' => false, - ]; - } - } - - $call['parameters'] = \array_values($call['parameters']); - } else { - $call['parameters'] = \array_slice($call['parameters'], 0, $i); - } - - break; - } - - if ($i >= $argc) { - continue 2; - } - } - - if ($is_unpack || \count($call['parameters']) === $argc) { - if (null === $return) { - $return = $call; - } else { - // If we have multiple calls on the same line with the same amount of arguments, - // we can't be sure which it is so just return null and let them figure it out - return null; - } - } - } - - return $return; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/AbstractPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/AbstractPlugin.php deleted file mode 100644 index 6ab031d..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/AbstractPlugin.php +++ /dev/null @@ -1,48 +0,0 @@ -parser = $parser; - } - - public function setParser(Parser $p): void - { - $this->parser = $p; - } - - protected function getParser(): Parser - { - return $this->parser; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ArrayLimitPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ArrayLimitPlugin.php deleted file mode 100644 index bd54f5f..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ArrayLimitPlugin.php +++ /dev/null @@ -1,169 +0,0 @@ -= self::$trigger) { - throw new InvalidArgumentException('ArrayLimitPlugin::$limit can not be lower than ArrayLimitPlugin::$trigger'); - } - - parent::__construct($p); - } - - public function getTypes(): array - { - return ['array']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_BEGIN; - } - - public function parseBegin(&$var, ContextInterface $c): ?AbstractValue - { - $parser = $this->getParser(); - $pdepth = $parser->getDepthLimit(); - - if (!$pdepth) { - return null; - } - - $cdepth = $c->getDepth(); - - if ($cdepth >= $pdepth - 1) { - return null; - } - - if (\count($var) < self::$trigger) { - return null; - } - - if (self::$numeric_only && Utils::isAssoc($var)) { - return null; - } - - $slice = \array_slice($var, 0, self::$limit, true); - $array = $parser->parse($slice, $c); - - if (!$array instanceof ArrayValue) { - return null; - } - - $base = new BaseContext($c->getName()); - $base->depth = $pdepth - 1; - $base->access_path = $c->getAccessPath(); - - $slice = \array_slice($var, self::$limit, null, true); - $slice = $parser->parse($slice, $base); - - if (!$slice instanceof ArrayValue) { - return null; - } - - foreach ($slice->getContents() as $child) { - $this->replaceDepthLimit($child, $cdepth + 1); - } - - $out = new ArrayValue($c, \count($var), \array_merge($array->getContents(), $slice->getContents())); - $out->flags = $array->flags; - - // Explicitly copy over profile plugin - $arrayp = $array->getRepresentation('profiling'); - $slicep = $slice->getRepresentation('profiling'); - if ($arrayp instanceof ProfileRepresentation && $slicep instanceof ProfileRepresentation) { - $out->addRepresentation(new ProfileRepresentation($arrayp->complexity + $slicep->complexity)); - } - - // Add contents. Check is in case some bad plugin empties both $slice and $array - if ($contents = $out->getContents()) { - $out->addRepresentation(new ContainerRepresentation('Contents', $contents, null, true)); - } - - return $out; - } - - protected function replaceDepthLimit(AbstractValue $v, int $depth): void - { - $c = $v->getContext(); - - if ($c instanceof BaseContext) { - $c->depth = $depth; - } - - $pdepth = $this->getParser()->getDepthLimit(); - - if (($v->flags & AbstractValue::FLAG_DEPTH_LIMIT) && $pdepth && $depth < $pdepth) { - $v->flags = $v->flags & ~AbstractValue::FLAG_DEPTH_LIMIT | AbstractValue::FLAG_ARRAY_LIMIT; - } - - $reps = $v->getRepresentations(); - - foreach ($reps as $rep) { - if ($rep instanceof ContainerRepresentation) { - foreach ($rep->getContents() as $child) { - $this->replaceDepthLimit($child, $depth + 1); - } - } elseif ($rep instanceof ValueRepresentation) { - $this->replaceDepthLimit($rep->getValue(), $depth + 1); - } - } - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ArrayObjectPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ArrayObjectPlugin.php deleted file mode 100644 index 605d695..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ArrayObjectPlugin.php +++ /dev/null @@ -1,68 +0,0 @@ -getFlags(); - - if (ArrayObject::STD_PROP_LIST === $flags) { - return null; - } - - $parser = $this->getParser(); - - $var->setFlags(ArrayObject::STD_PROP_LIST); - - $v = $parser->parse($var, $c); - - $var->setFlags($flags); - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/Base64Plugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/Base64Plugin.php deleted file mode 100644 index 9cc6eee..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/Base64Plugin.php +++ /dev/null @@ -1,103 +0,0 @@ -getContext(); - - $base = new BaseContext('base64_decode('.$c->getName().')'); - $base->depth = $c->getDepth() + 1; - - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = 'base64_decode('.$ap.')'; - } - - $data = $this->getParser()->parse($data, $base); - $data->flags |= AbstractValue::FLAG_GENERATED; - - if (!$data instanceof StringValue || false === $data->getEncoding()) { - return $v; - } - - $r = new ValueRepresentation('Base64', $data); - - if (\strlen($var) > self::$min_length_soft) { - $v->addRepresentation($r, 0); - } else { - $v->addRepresentation($r); - } - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/BinaryPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/BinaryPlugin.php deleted file mode 100644 index 0ee1f63..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/BinaryPlugin.php +++ /dev/null @@ -1,54 +0,0 @@ -getEncoding()) { - $v->addRepresentation(new BinaryRepresentation($v->getValue(), true), 0); - } - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/BlacklistPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/BlacklistPlugin.php deleted file mode 100644 index 2fa4fed..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/BlacklistPlugin.php +++ /dev/null @@ -1,96 +0,0 @@ -blacklistValue($var, $c); - } - } - - if ($c->getDepth() <= 0) { - return null; - } - - foreach (self::$shallow_blacklist as $class) { - if ($var instanceof $class) { - return $this->blacklistValue($var, $c); - } - } - - return null; - } - - /** - * @param object &$var - */ - protected function blacklistValue(&$var, ContextInterface $c): InstanceValue - { - $object = new InstanceValue($c, \get_class($var), \spl_object_hash($var), \spl_object_id($var)); - $object->flags |= AbstractValue::FLAG_BLACKLIST; - - return $object; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ClassHooksPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ClassHooksPlugin.php deleted file mode 100644 index 1d658bf..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ClassHooksPlugin.php +++ /dev/null @@ -1,122 +0,0 @@ -> */ - private array $cache = []; - /** @psalm-var array> */ - private array $cache_verbose = []; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - if (!KINT_PHP84) { - return Parser::TRIGGER_NONE; // @codeCoverageIgnore - } - - return Parser::TRIGGER_SUCCESS; - } - - public function parseComplete(&$var, AbstractValue $v, int $trigger): AbstractValue - { - if (!$v instanceof InstanceValue) { - return $v; - } - - $props = $v->getRepresentation('properties'); - - if (!$props instanceof ContainerRepresentation) { - return $v; - } - - foreach ($props->getContents() as $prop) { - $c = $prop->getContext(); - - if (!$c instanceof PropertyContext || PropertyContext::HOOK_NONE === $c->hooks) { - continue; - } - - $cname = $c->getName(); - $cowner = $c->owner_class; - - if (!isset($this->cache_verbose[$cowner][$cname])) { - $ref = new ReflectionProperty($cowner, $cname); - $hooks = $ref->getHooks(); - - foreach ($hooks as $hook) { - if (!self::$verbose && false === $hook->getDocComment()) { - continue; - } - - $m = new MethodValue( - new MethodContext($hook), - new DeclaredCallableBag($hook) - ); - - $this->cache_verbose[$cowner][$cname][] = $m; - - if (false !== $hook->getDocComment()) { - $this->cache[$cowner][$cname][] = $m; - } - } - - $this->cache[$cowner][$cname] ??= []; - - if (self::$verbose) { - $this->cache_verbose[$cowner][$cname] ??= []; - } - } - - $cache = self::$verbose ? $this->cache_verbose : $this->cache; - $cache = $cache[$cowner][$cname] ?? []; - - if (\count($cache)) { - $prop->addRepresentation(new ContainerRepresentation('Hooks', $cache, 'propertyhooks')); - } - } - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ClassMethodsPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ClassMethodsPlugin.php deleted file mode 100644 index e06df2b..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ClassMethodsPlugin.php +++ /dev/null @@ -1,225 +0,0 @@ - */ - private array $instance_cache = []; - - /** @psalm-var array */ - private array $static_cache = []; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - /** - * @psalm-template T of AbstractValue - * - * @psalm-param mixed $var - * @psalm-param T $v - * - * @psalm-return T - */ - public function parseComplete(&$var, AbstractValue $v, int $trigger): AbstractValue - { - if (!$v instanceof InstanceValue) { - return $v; - } - - $class = $v->getClassName(); - $scope = $this->getParser()->getCallerClass(); - - if ($contents = $this->getCachedMethods($class)) { - if (self::$show_access_path) { - if (null !== $v->getContext()->getAccessPath()) { - // If we have an access path we can generate them for the children - foreach ($contents as $key => $val) { - if ($val->getContext()->isAccessible($scope)) { - $val = clone $val; - $val->getContext()->setAccessPathFromParent($v); - $contents[$key] = $val; - } - } - } elseif (self::$show_constructor_path && isset($contents['__construct'])) { - // __construct is the only exception: The only non-static method - // that can be called without access to the parent instance. - // Technically I guess it really is a static method but so long - // as PHP continues to refer to it as a normal one so will we. - $val = $contents['__construct']; - if ($val->getContext()->isAccessible($scope)) { - $val = clone $val; - $val->getContext()->setAccessPathFromParent($v); - $contents['__construct'] = $val; - } - } - } - - $v->addRepresentation(new ContainerRepresentation('Methods', $contents)); - } - - if ($contents = $this->getCachedStaticMethods($class)) { - $v->addRepresentation(new ContainerRepresentation('Static methods', $contents)); - } - - return $v; - } - - /** - * @psalm-param class-string $class - * - * @psalm-return MethodValue[] - */ - private function getCachedMethods(string $class): array - { - if (!isset($this->instance_cache[$class])) { - $methods = []; - - $r = new ReflectionClass($class); - - $parent_methods = []; - if ($parent = \get_parent_class($class)) { - $parent_methods = $this->getCachedMethods($parent); - } - - foreach ($r->getMethods() as $mr) { - if ($mr->isStatic()) { - continue; - } - - $canon_name = \strtolower($mr->name); - if ($mr->isPrivate() && '__construct' !== $canon_name) { - $canon_name = \strtolower($mr->getDeclaringClass()->name).'::'.$canon_name; - } - - if ($mr->getDeclaringClass()->name === $class) { - $method = new MethodValue(new MethodContext($mr), new DeclaredCallableBag($mr)); - $methods[$canon_name] = $method; - unset($parent_methods[$canon_name]); - } elseif (isset($parent_methods[$canon_name])) { - $method = $parent_methods[$canon_name]; - unset($parent_methods[$canon_name]); - - if (!$method->getContext()->inherited) { - $method = clone $method; - $method->getContext()->inherited = true; - } - - $methods[$canon_name] = $method; - } elseif ($mr->getDeclaringClass()->isInterface()) { - $c = new MethodContext($mr); - $c->inherited = true; - $methods[$canon_name] = new MethodValue($c, new DeclaredCallableBag($mr)); - } - } - - foreach ($parent_methods as $name => $method) { - if (!$method->getContext()->inherited) { - $method = clone $method; - $method->getContext()->inherited = true; - } - - if ('__construct' === $name) { - $methods['__construct'] = $method; - } else { - $methods[] = $method; - } - } - - $this->instance_cache[$class] = $methods; - } - - return $this->instance_cache[$class]; - } - - /** - * @psalm-param class-string $class - * - * @psalm-return MethodValue[] - */ - private function getCachedStaticMethods(string $class): array - { - if (!isset($this->static_cache[$class])) { - $methods = []; - - $r = new ReflectionClass($class); - - $parent_methods = []; - if ($parent = \get_parent_class($class)) { - $parent_methods = $this->getCachedStaticMethods($parent); - } - - foreach ($r->getMethods(ReflectionMethod::IS_STATIC) as $mr) { - $canon_name = \strtolower($mr->getDeclaringClass()->name.'::'.$mr->name); - - if ($mr->getDeclaringClass()->name === $class) { - $method = new MethodValue(new MethodContext($mr), new DeclaredCallableBag($mr)); - $methods[$canon_name] = $method; - } elseif (isset($parent_methods[$canon_name])) { - $methods[$canon_name] = $parent_methods[$canon_name]; - } elseif ($mr->getDeclaringClass()->isInterface()) { - $c = new MethodContext($mr); - $c->inherited = true; - $methods[$canon_name] = new MethodValue($c, new DeclaredCallableBag($mr)); - } - - unset($parent_methods[$canon_name]); - } - - $this->static_cache[$class] = $methods + $parent_methods; - } - - return $this->static_cache[$class]; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ClassStaticsPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ClassStaticsPlugin.php deleted file mode 100644 index 0b5e616..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ClassStaticsPlugin.php +++ /dev/null @@ -1,232 +0,0 @@ ->> */ - private array $cache = []; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - /** - * @psalm-template T of AbstractValue - * - * @psalm-param mixed $var - * @psalm-param T $v - * - * @psalm-return T - */ - public function parseComplete(&$var, AbstractValue $v, int $trigger): AbstractValue - { - if (!$v instanceof InstanceValue) { - return $v; - } - - $deep = 0 === $this->getParser()->getDepthLimit(); - - $r = new ReflectionClass($v->getClassName()); - - if ($statics = $this->getStatics($r, $v->getContext()->getDepth() + 1)) { - $v->addRepresentation(new ContainerRepresentation('Static properties', \array_values($statics), 'statics')); - } - - if ($consts = $this->getCachedConstants($r, $deep)) { - $v->addRepresentation(new ContainerRepresentation('Class constants', \array_values($consts), 'constants')); - } - - return $v; - } - - /** @psalm-return array */ - private function getStatics(ReflectionClass $r, int $depth): array - { - $cdepth = $depth ?: 1; - $class = $r->getName(); - $parent = $r->getParentClass(); - - $parent_statics = $parent ? $this->getStatics($parent, $depth) : []; - $statics = []; - - foreach ($r->getProperties(ReflectionProperty::IS_STATIC) as $pr) { - $canon_name = \strtolower($pr->getDeclaringClass()->name.'::'.$pr->name); - - if ($pr->getDeclaringClass()->name === $class) { - $statics[$canon_name] = $this->buildStaticValue($pr, $cdepth); - } elseif (isset($parent_statics[$canon_name])) { - $statics[$canon_name] = $parent_statics[$canon_name]; - unset($parent_statics[$canon_name]); - } else { - // This should never happen since abstract static properties can't exist - $statics[$canon_name] = $this->buildStaticValue($pr, $cdepth); // @codeCoverageIgnore - } - } - - foreach ($parent_statics as $canon_name => $value) { - $statics[$canon_name] = $value; - } - - return $statics; - } - - private function buildStaticValue(ReflectionProperty $pr, int $depth): AbstractValue - { - $context = new StaticPropertyContext( - $pr->name, - $pr->getDeclaringClass()->name, - ClassDeclaredContext::ACCESS_PUBLIC - ); - $context->depth = $depth; - $context->final = KINT_PHP84 && $pr->isFinal(); - - if ($pr->isProtected()) { - $context->access = ClassDeclaredContext::ACCESS_PROTECTED; - } elseif ($pr->isPrivate()) { - $context->access = ClassDeclaredContext::ACCESS_PRIVATE; - } - - $parser = $this->getParser(); - - if ($context->isAccessible($parser->getCallerClass())) { - $context->access_path = '\\'.$context->owner_class.'::$'.$context->name; - } - - if (KINT_PHP81 === false) { - $pr->setAccessible(true); - } - - /** - * @psalm-suppress TooFewArguments - * Appears to have been fixed in master. - */ - if (!$pr->isInitialized()) { - $context->access_path = null; - - return new UninitializedValue($context); - } - - $val = $pr->getValue(); - - $out = $this->getParser()->parse($val, $context); - $context->access_path = null; - - return $out; - } - - /** @psalm-return array */ - private function getCachedConstants(ReflectionClass $r, bool $deep): array - { - $parser = $this->getParser(); - $cdepth = $parser->getDepthLimit() ?: 1; - $deepkey = (int) $deep; - $class = $r->getName(); - - // Separate cache for dumping with/without depth limit - // This means we can do immediate depth limit on normal dumps - if (!isset($this->cache[$class][$deepkey])) { - $consts = []; - - $parent_consts = []; - if ($parent = $r->getParentClass()) { - $parent_consts = $this->getCachedConstants($parent, $deep); - } - foreach ($r->getConstants() as $name => $val) { - $cr = new ReflectionClassConstant($class, $name); - - // Skip enum constants - if ($cr->class === $class && \is_a($class, UnitEnum::class, true)) { - continue; - } - - $canon_name = \strtolower($cr->getDeclaringClass()->name.'::'.$name); - - if ($cr->getDeclaringClass()->name === $class) { - $context = $this->buildConstContext($cr); - $context->depth = $cdepth; - - $consts[$canon_name] = $parser->parse($val, $context); - $context->access_path = null; - } elseif (isset($parent_consts[$canon_name])) { - $consts[$canon_name] = $parent_consts[$canon_name]; - } else { - $context = $this->buildConstContext($cr); - $context->depth = $cdepth; - - $consts[$canon_name] = $parser->parse($val, $context); - $context->access_path = null; - } - - unset($parent_consts[$canon_name]); - } - - $this->cache[$class][$deepkey] = $consts + $parent_consts; - } - - return $this->cache[$class][$deepkey]; - } - - private function buildConstContext(ReflectionClassConstant $cr): ClassConstContext - { - $context = new ClassConstContext( - $cr->name, - $cr->getDeclaringClass()->name, - ClassDeclaredContext::ACCESS_PUBLIC - ); - $context->final = KINT_PHP81 && $cr->isFinal(); - - if ($cr->isProtected()) { - $context->access = ClassDeclaredContext::ACCESS_PROTECTED; - } elseif ($cr->isPrivate()) { - $context->access = ClassDeclaredContext::ACCESS_PRIVATE; - } else { - $context->access_path = '\\'.$context->owner_class.'::'.$context->name; - } - - return $context; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ClassStringsPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ClassStringsPlugin.php deleted file mode 100644 index 82927a6..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ClassStringsPlugin.php +++ /dev/null @@ -1,102 +0,0 @@ -methods_plugin = new ClassMethodsPlugin($parser); - $this->statics_plugin = new ClassStaticsPlugin($parser); - } - - public function setParser(Parser $p): void - { - parent::setParser($p); - - $this->methods_plugin->setParser($p); - $this->statics_plugin->setParser($p); - } - - public function getTypes(): array - { - return ['string']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parseComplete(&$var, AbstractValue $v, int $trigger): AbstractValue - { - $c = $v->getContext(); - - if ($c->getDepth() > 0) { - return $v; - } - - if (!\class_exists($var, true)) { - return $v; - } - - if (\in_array($var, self::$blacklist, true)) { - return $v; - } - - $r = new ReflectionClass($var); - - $fakeC = new BaseContext($c->getName()); - $fakeC->access_path = null; - $fakeV = new InstanceValue($fakeC, $r->getName(), 'badhash', -1); - $fakeVar = null; - - $fakeV = $this->methods_plugin->parseComplete($fakeVar, $fakeV, Parser::TRIGGER_SUCCESS); - $fakeV = $this->statics_plugin->parseComplete($fakeVar, $fakeV, Parser::TRIGGER_SUCCESS); - - foreach (['methods', 'static_methods', 'statics', 'constants'] as $rep) { - if ($rep = $fakeV->getRepresentation($rep)) { - $v->addRepresentation($rep); - } - } - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ClosurePlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ClosurePlugin.php deleted file mode 100644 index 62db525..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ClosurePlugin.php +++ /dev/null @@ -1,93 +0,0 @@ -getContext(); - - $object = new ClosureValue($c, $var); - $object->flags = $v->flags; - $object->appendRepresentations($v->getRepresentations()); - - $object->removeRepresentation('properties'); - - $closure = new ReflectionFunction($var); - - $statics = []; - - if ($v = $closure->getClosureThis()) { - $statics = ['this' => $v]; - } - - $statics = $statics + $closure->getStaticVariables(); - - $cdepth = $c->getDepth(); - - if (\count($statics)) { - $statics_parsed = []; - - $parser = $this->getParser(); - - foreach ($statics as $name => $_) { - $base = new BaseContext('$'.$name); - $base->depth = $cdepth + 1; - $base->reference = null !== ReflectionReference::fromArrayElement($statics, $name); - $statics_parsed[$name] = $parser->parse($statics[$name], $base); - } - - $object->addRepresentation(new ContainerRepresentation('Uses', $statics_parsed), 0); - } - - return $object; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ColorPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ColorPlugin.php deleted file mode 100644 index ffdedd7..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ColorPlugin.php +++ /dev/null @@ -1,78 +0,0 @@ - 32) { - return $v; - } - - if (!$v instanceof StringValue) { - return $v; - } - - $trimmed = \strtolower(\trim($var)); - - if (!isset(ColorRepresentation::$color_map[$trimmed]) && !\preg_match('/^(?:(?:rgb|hsl)a?[^\\)]{6,}\\)|#[0-9a-f]{3,8})$/', $trimmed)) { - return $v; - } - - try { - $rep = new ColorRepresentation($var); - } catch (InvalidArgumentException $e) { - return $v; - } - - $out = new ColorValue($v->getContext(), $v->getValue(), $v->getEncoding()); - $out->flags = $v->flags; - $out->appendRepresentations($v->getRepresentations()); - $out->removeRepresentation('contents'); - $out->addRepresentation($rep, 0); - - return $out; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ConstructablePluginInterface.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ConstructablePluginInterface.php deleted file mode 100644 index 880b57e..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ConstructablePluginInterface.php +++ /dev/null @@ -1,33 +0,0 @@ -getContext(), $var); - } catch (Error $e) { - // Only happens if someone makes a DateTimeInterface with a private __clone - return $v; - } - - $dtv->setChildren($v->getChildren()); - $dtv->flags = $v->flags; - $dtv->appendRepresentations($v->getRepresentations()); - - return $dtv; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/DomPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/DomPlugin.php deleted file mode 100644 index 7de5eb8..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/DomPlugin.php +++ /dev/null @@ -1,555 +0,0 @@ - Property names to readable status - */ - public const NODE_PROPS = [ - 'nodeType' => true, - 'nodeName' => true, - 'baseURI' => true, - 'isConnected' => true, - 'ownerDocument' => true, - 'parentNode' => true, - 'parentElement' => true, - 'childNodes' => true, - 'firstChild' => true, - 'lastChild' => true, - 'previousSibling' => true, - 'nextSibling' => true, - 'nodeValue' => true, - 'textContent' => false, - ]; - - /** - * @psalm-var non-empty-array Property names to readable status - */ - public const ELEMENT_PROPS = [ - 'namespaceURI' => true, - 'prefix' => true, - 'localName' => true, - 'tagName' => true, - 'id' => false, - 'className' => false, - 'classList' => true, - 'attributes' => true, - 'firstElementChild' => true, - 'lastElementChild' => true, - 'childElementCount' => true, - 'previousElementSibling' => true, - 'nextElementSibling' => true, - 'innerHTML' => false, - 'outerHTML' => true, - 'substitutedNodeValue' => false, - 'children' => true, - ]; - - /** - * @psalm-var non-empty-array Property names to readable status - */ - public const DOMNODE_PROPS = [ - 'nodeName' => true, - 'nodeValue' => false, - 'nodeType' => true, - 'parentNode' => true, - 'parentElement' => true, - 'childNodes' => true, - 'firstChild' => true, - 'lastChild' => true, - 'previousSibling' => true, - 'nextSibling' => true, - 'attributes' => true, - 'isConnected' => true, - 'ownerDocument' => true, - 'namespaceURI' => true, - 'prefix' => false, - 'localName' => true, - 'baseURI' => true, - 'textContent' => false, - ]; - - /** - * @psalm-var non-empty-array Property names to readable status - */ - public const DOMELEMENT_PROPS = [ - 'tagName' => true, - 'className' => false, - 'id' => false, - 'schemaTypeInfo' => true, - 'firstElementChild' => true, - 'lastElementChild' => true, - 'childElementCount' => true, - 'previousElementSibling' => true, - 'nextElementSibling' => true, - ]; - - public const DOM_VERSIONS = [ - 'parentElement' => KINT_PHP83, - 'isConnected' => KINT_PHP83, - 'className' => KINT_PHP83, - 'id' => KINT_PHP83, - 'firstElementChild' => KINT_PHP80, - 'lastElementChild' => KINT_PHP80, - 'childElementCount' => KINT_PHP80, - 'previousElementSibling' => KINT_PHP80, - 'nextElementSibling' => KINT_PHP80, - ]; - - /** - * List of properties to skip parsing. - * - * The properties of a Dom\Node can do a *lot* of damage to debuggers. The - * Dom\Node contains not one, not two, but 13 different ways to recurse into itself: - * * parentNode - * * firstChild - * * lastChild - * * previousSibling - * * nextSibling - * * parentElement - * * firstElementChild - * * lastElementChild - * * previousElementSibling - * * nextElementSibling - * * childNodes - * * attributes - * * ownerDocument - * - * All of this combined: the tiny SVGs used as the caret in Kint were already - * enough to make parsing and rendering take over a second, and send memory - * usage over 128 megs, back in the old DOM API. So we blacklist every field - * we don't strictly need and hope that that's good enough. - * - * In retrospect -- this is probably why print_r does the same - * - * @psalm-var array - */ - public static array $blacklist = [ - 'parentNode' => true, - 'firstChild' => true, - 'lastChild' => true, - 'previousSibling' => true, - 'nextSibling' => true, - 'firstElementChild' => true, - 'lastElementChild' => true, - 'parentElement' => true, - 'previousElementSibling' => true, - 'nextElementSibling' => true, - 'ownerDocument' => true, - ]; - - /** - * Show all properties and methods. - */ - public static bool $verbose = false; - - /** @psalm-var array> cache of properties for getKnownProperties */ - protected static array $property_cache = []; - - protected ClassMethodsPlugin $methods_plugin; - protected ClassStaticsPlugin $statics_plugin; - - public function __construct(Parser $parser) - { - parent::__construct($parser); - - $this->methods_plugin = new ClassMethodsPlugin($parser); - $this->statics_plugin = new ClassStaticsPlugin($parser); - } - - public function setParser(Parser $p): void - { - parent::setParser($p); - - $this->methods_plugin->setParser($p); - $this->statics_plugin->setParser($p); - } - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_BEGIN; - } - - public function parseBegin(&$var, ContextInterface $c): ?AbstractValue - { - // Attributes and chardata (Which is parent of comments and text - // nodes) don't need children or attributes of their own - if ($var instanceof Attr || $var instanceof CharacterData || $var instanceof DOMAttr || $var instanceof DOMCharacterData) { - return $this->parseText($var, $c); - } - - if ($var instanceof NamedNodeMap || $var instanceof NodeList || $var instanceof DOMNamedNodeMap || $var instanceof DOMNodeList) { - return $this->parseList($var, $c); - } - - if ($var instanceof Node || $var instanceof DOMNode) { - return $this->parseNode($var, $c); - } - - return null; - } - - /** @psalm-param Node|DOMNode $var */ - private function parseProperty(object $var, string $prop, ContextInterface $c): AbstractValue - { - // Suppress deprecation message - if (@!isset($var->{$prop})) { - return new FixedWidthValue($c, null); - } - - $parser = $this->getParser(); - // Suppress deprecation message - @$value = $var->{$prop}; - - if (\is_scalar($value)) { - return $parser->parse($value, $c); - } - - if (isset(self::$blacklist[$prop])) { - $b = new InstanceValue($c, \get_class($value), \spl_object_hash($value), \spl_object_id($value)); - $b->flags |= AbstractValue::FLAG_GENERATED | AbstractValue::FLAG_BLACKLIST; - - return $b; - } - - // Everything we can handle in parseBegin - if ($value instanceof Attr || $value instanceof CharacterData || $value instanceof DOMAttr || $value instanceof DOMCharacterData || $value instanceof NamedNodeMap || $value instanceof NodeList || $value instanceof DOMNamedNodeMap || $value instanceof DOMNodeList || $value instanceof Node || $value instanceof DOMNode) { - $out = $this->parseBegin($value, $c); - } - - if (!isset($out)) { - // Shouldn't ever happen - $out = $parser->parse($value, $c); // @codeCoverageIgnore - } - - $out->flags |= AbstractValue::FLAG_GENERATED; - - return $out; - } - - /** @psalm-param Attr|CharacterData|DOMAttr|DOMCharacterData $var */ - private function parseText(object $var, ContextInterface $c): AbstractValue - { - if ($c instanceof BaseContext && null !== $c->access_path) { - $c->access_path .= '->nodeValue'; - } - - return $this->parseProperty($var, 'nodeValue', $c); - } - - /** @psalm-param NamedNodeMap|NodeList|DOMNamedNodeMap|DOMNodeList $var */ - private function parseList(object $var, ContextInterface $c): InstanceValue - { - if ($var instanceof NodeList || $var instanceof DOMNodeList) { - $v = new DomNodeListValue($c, $var); - } else { - $v = new InstanceValue($c, \get_class($var), \spl_object_hash($var), \spl_object_id($var)); - } - - $parser = $this->getParser(); - $pdepth = $parser->getDepthLimit(); - - // Depth limit - // Use empty iterator representation since we need it to point out depth limits - if (($var instanceof NodeList || $var instanceof DOMNodeList) && $pdepth && $c->getDepth() >= $pdepth) { - $v->flags |= AbstractValue::FLAG_DEPTH_LIMIT; - - return $v; - } - - if (self::$verbose) { - $v = $this->methods_plugin->parseComplete($var, $v, Parser::TRIGGER_SUCCESS); - $v = $this->statics_plugin->parseComplete($var, $v, Parser::TRIGGER_SUCCESS); - } - - if (0 === $var->length) { - $v->setChildren([]); - - return $v; - } - - $cdepth = $c->getDepth(); - $ap = $c->getAccessPath(); - $contents = []; - - foreach ($var as $key => $item) { - $base_obj = new BaseContext($item->nodeName); - $base_obj->depth = $cdepth + 1; - - if ($var instanceof NamedNodeMap || $var instanceof DOMNamedNodeMap) { - if (null !== $ap) { - $base_obj->access_path = $ap.'['.\var_export($item->nodeName, true).']'; - } - } else { // NodeList - if (null !== $ap) { - $base_obj->access_path = $ap.'['.\var_export($key, true).']'; - } - } - - if ($item instanceof HTMLElement) { - $base_obj->name = $item->localName; - } - - $item = $parser->parse($item, $base_obj); - $item->flags |= AbstractValue::FLAG_GENERATED; - - $contents[] = $item; - } - - $v->setChildren($contents); - - if ($contents) { - $v->addRepresentation(new ContainerRepresentation('Iterator', $contents), 0); - } - - return $v; - } - - /** @psalm-param Node|DOMNode $var */ - private function parseNode(object $var, ContextInterface $c): DomNodeValue - { - $class = \get_class($var); - $pdepth = $this->getParser()->getDepthLimit(); - - if ($pdepth && $c->getDepth() >= $pdepth) { - $v = new DomNodeValue($c, $var); - $v->flags |= AbstractValue::FLAG_DEPTH_LIMIT; - - return $v; - } - - if (($var instanceof DocumentType || $var instanceof DOMDocumentType) && $c instanceof BaseContext && $c->name === $var->nodeName) { - $c->name = '!DOCTYPE '.$c->name; - } - - $cdepth = $c->getDepth(); - $ap = $c->getAccessPath(); - - $properties = []; - $children = []; - $attributes = []; - - foreach (self::getKnownProperties($var) as $prop => $readonly) { - $prop_c = new PropertyContext($prop, $class, ClassDeclaredContext::ACCESS_PUBLIC); - $prop_c->depth = $cdepth + 1; - $prop_c->readonly = KINT_PHP81 && $readonly; - - if (null !== $ap) { - $prop_c->access_path = $ap.'->'.$prop; - } - - $properties[] = $prop_obj = $this->parseProperty($var, $prop, $prop_c); - - if ('childNodes' === $prop) { - if (!$prop_obj instanceof DomNodeListValue) { - throw new LogicException('childNodes property parsed incorrectly'); // @codeCoverageIgnore - } - $children = self::getChildren($prop_obj); - } elseif ('attributes' === $prop) { - $attributes = $prop_obj->getRepresentation('iterator'); - $attributes = $attributes instanceof ContainerRepresentation ? $attributes->getContents() : []; - } elseif ('classList' === $prop) { - if ($iter = $prop_obj->getRepresentation('iterator')) { - $prop_obj->removeRepresentation($iter); - $prop_obj->addRepresentation($iter, 0); - } - } - } - - $v = new DomNodeValue($c, $var); - // If we're in text mode, we can see children through the childNodes property - $v->setChildren($properties); - - if ($children) { - $v->addRepresentation(new ContainerRepresentation('Children', $children, null, true)); - } - - if ($attributes) { - $v->addRepresentation(new ContainerRepresentation('Attributes', $attributes)); - } - - if (self::$verbose) { - $v->addRepresentation(new ContainerRepresentation('Properties', $properties)); - - $v = $this->methods_plugin->parseComplete($var, $v, Parser::TRIGGER_SUCCESS); - $v = $this->statics_plugin->parseComplete($var, $v, Parser::TRIGGER_SUCCESS); - } - - return $v; - } - - /** - * @psalm-param Node|DOMNode $var - * - * @psalm-return non-empty-array - */ - public static function getKnownProperties(object $var): array - { - if (KINT_PHP81) { - $r = new ReflectionClass($var); - $classname = $r->getName(); - - if (!isset(self::$property_cache[$classname])) { - self::$property_cache[$classname] = []; - - foreach ($r->getProperties() as $prop) { - if ($prop->isStatic()) { - continue; - } - - $declaring = $prop->getDeclaringClass()->getName(); - $name = $prop->name; - - if (\in_array($declaring, [Node::class, Element::class], true)) { - $readonly = self::NODE_PROPS[$name] ?? self::ELEMENT_PROPS[$name]; - } elseif (\in_array($declaring, [DOMNode::class, DOMElement::class], true)) { - $readonly = self::DOMNODE_PROPS[$name] ?? self::DOMELEMENT_PROPS[$name]; - } else { - continue; - } - - self::$property_cache[$classname][$prop->name] = $readonly; - } - - if ($var instanceof Document) { - self::$property_cache[$classname]['textContent'] = true; - } - - if ($var instanceof Attr || $var instanceof CharacterData) { - self::$property_cache[$classname]['nodeValue'] = false; - } - } - - $known_properties = self::$property_cache[$classname]; - } else { - $known_properties = self::DOMNODE_PROPS; - if ($var instanceof DOMElement) { - $known_properties += self::DOMELEMENT_PROPS; - } - - foreach (self::DOM_VERSIONS as $key => $val) { - if (false === $val) { - unset($known_properties[$key]); // @codeCoverageIgnore - } - } - } - - /** @psalm-var non-empty-array $known_properties */ - if (!self::$verbose) { - $known_properties = \array_intersect_key($known_properties, [ - 'nodeValue' => null, - 'childNodes' => null, - 'attributes' => null, - ]); - } - - return $known_properties; - } - - /** @psalm-return list */ - private static function getChildren(DomNodeListValue $property): array - { - if (0 === $property->getLength()) { - return []; - } - - if ($property->flags & AbstractValue::FLAG_DEPTH_LIMIT) { - return [$property]; - } - - $list_items = $property->getChildren(); - - if (null === $list_items) { - // This is here for psalm but all DomNodeListValue should - // either be depth_limit or have array children - return []; // @codeCoverageIgnore - } - - $children = []; - - foreach ($list_items as $node) { - // Remove text nodes if theyre empty - if ($node instanceof StringValue && '#text' === $node->getContext()->getName()) { - /** - * @psalm-suppress InvalidArgument - * Psalm bug #11055 - */ - if (\ctype_space($node->getValue()) || '' === $node->getValue()) { - continue; - } - } - - $children[] = $node; - } - - return $children; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/EnumPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/EnumPlugin.php deleted file mode 100644 index e1fe85b..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/EnumPlugin.php +++ /dev/null @@ -1,84 +0,0 @@ -getContext(); - $class = \get_class($var); - - if (!isset($this->cache[$class])) { - $contents = []; - - foreach ($var->cases() as $case) { - $base = new BaseContext($case->name); - $base->access_path = '\\'.$class.'::'.$case->name; - $base->depth = $c->getDepth() + 1; - $contents[] = new EnumValue($base, $case); - } - - /** @psalm-var non-empty-array $contents */ - $this->cache[$class] = new ContainerRepresentation('Enum values', $contents, 'enum'); - } - - $object = new EnumValue($c, $var); - $object->flags = $v->flags; - $object->appendRepresentations($v->getRepresentations()); - $object->addRepresentation($this->cache[$class], 0); - - return $object; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/FsPathPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/FsPathPlugin.php deleted file mode 100644 index 3b17d0e..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/FsPathPlugin.php +++ /dev/null @@ -1,80 +0,0 @@ - 2048) { - return $v; - } - - if (!\preg_match('/[\\/\\'.DIRECTORY_SEPARATOR.']/', $var)) { - return $v; - } - - if (\preg_match('/[?<>"*|]/', $var)) { - return $v; - } - - try { - if (!@\file_exists($var)) { - return $v; - } - } catch (TypeError $e) {// @codeCoverageIgnore - // Only possible in PHP 7 - return $v; // @codeCoverageIgnore - } - - if (\in_array($var, self::$blacklist, true)) { - return $v; - } - - $v->addRepresentation(new SplFileInfoRepresentation(new SplFileInfo($var)), 0); - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/HtmlPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/HtmlPlugin.php deleted file mode 100644 index bc1a4f2..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/HtmlPlugin.php +++ /dev/null @@ -1,86 +0,0 @@ -' !== \strtolower((string) \substr($var, 0, 15))) { - return $v; - } - - try { - $html = HTMLDocument::createFromString($var, LIBXML_NOERROR); - } catch (DOMException $e) { // @codeCoverageIgnore - return $v; // @codeCoverageIgnore - } - - $c = $v->getContext(); - - $base = new BaseContext('childNodes'); - $base->depth = $c->getDepth(); - - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = '\\Dom\\HTMLDocument::createFromString('.$ap.')->childNodes'; - } - - $out = $this->getParser()->parse($html->childNodes, $base); - $iter = $out->getRepresentation('iterator'); - - if ($out->flags & AbstractValue::FLAG_DEPTH_LIMIT) { - $out->flags |= AbstractValue::FLAG_GENERATED; - $v->addRepresentation(new ValueRepresentation('HTML', $out), 0); - } elseif ($iter instanceof ContainerRepresentation) { - $v->addRepresentation(new ContainerRepresentation('HTML', $iter->getContents()), 0); - } - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/IteratorPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/IteratorPlugin.php deleted file mode 100644 index fc31d78..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/IteratorPlugin.php +++ /dev/null @@ -1,142 +0,0 @@ -getRepresentation('iterator')) { - return $v; - } - - $c = $v->getContext(); - - foreach (self::$blacklist as $class) { - if ($var instanceof $class) { - $base = new BaseContext($class.' Iterator Contents'); - $base->depth = $c->getDepth() + 1; - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = 'iterator_to_array('.$ap.', false)'; - } - - $b = new UninitializedValue($base); - $b->flags |= AbstractValue::FLAG_BLACKLIST; - - $v->addRepresentation(new ValueRepresentation('Iterator', $b)); - - return $v; - } - } - - try { - $data = \iterator_to_array($var, false); - } catch (Throwable $t) { - return $v; - } - - if (!\count($data)) { - return $v; - } - - $base = new BaseContext('Iterator Contents'); - $base->depth = $c->getDepth(); - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = 'iterator_to_array('.$ap.', false)'; - } - - $iter_val = $this->getParser()->parse($data, $base); - - // Since we didn't get TRIGGER_DEPTH_LIMIT and set the iterator to the - // same depth we can assume at least 1 level deep will exist - if ($iter_val instanceof ArrayValue && $iterator_items = $iter_val->getContents()) { - $r = new ContainerRepresentation('Iterator', $iterator_items); - $iterator_items = \array_values($iterator_items); - } else { - $r = new ValueRepresentation('Iterator', $iter_val); - $iterator_items = [$iter_val]; - } - - if ((bool) $v->getChildren()) { - $v->addRepresentation($r); - } else { - $v->setChildren($iterator_items); - $v->addRepresentation($r, 0); - } - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/JsonPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/JsonPlugin.php deleted file mode 100644 index cefdb11..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/JsonPlugin.php +++ /dev/null @@ -1,86 +0,0 @@ -getContext(); - - $base = new BaseContext('JSON Decode'); - $base->depth = $c->getDepth(); - - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = 'json_decode('.$ap.', true)'; - } - - $json = $this->getParser()->parse($json, $base); - - if ($json instanceof ArrayValue && (~$json->flags & AbstractValue::FLAG_DEPTH_LIMIT) && $contents = $json->getContents()) { - foreach ($contents as $value) { - $value->flags |= AbstractValue::FLAG_GENERATED; - } - $v->addRepresentation(new ContainerRepresentation('Json', $contents), 0); - } else { - $json->flags |= AbstractValue::FLAG_GENERATED; - $v->addRepresentation(new ValueRepresentation('Json', $json), 0); - } - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/MicrotimePlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/MicrotimePlugin.php deleted file mode 100644 index 4ebabae..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/MicrotimePlugin.php +++ /dev/null @@ -1,125 +0,0 @@ -getContext(); - - if ($c->getDepth() > 0) { - return $v; - } - - if (\is_string($var)) { - if ('microtime()' !== $c->getName() || !\preg_match('/^0\\.[0-9]{8} [0-9]{10}$/', $var)) { - return $v; - } - - $usec = (int) \substr($var, 2, 6); - $sec = (int) \substr($var, 11, 10); - } else { - if ('microtime(...)' !== $c->getName()) { - return $v; - } - - $sec = (int) \floor($var); - $usec = $var - $sec; - $usec = (int) \floor($usec * 1000000); - } - - $time = $sec + ($usec / 1000000); - - if (null !== self::$last) { - $last_time = self::$last[0] + (self::$last[1] / 1000000); - $lap = $time - $last_time; - ++self::$times; - } else { - $lap = null; - self::$start = $time; - } - - self::$last = [$sec, $usec]; - - if (null !== $lap) { - $total = $time - self::$start; - $r = new MicrotimeRepresentation($sec, $usec, self::getGroup(), $lap, $total, self::$times); - } else { - $r = new MicrotimeRepresentation($sec, $usec, self::getGroup()); - } - - $out = new MicrotimeValue($v); - $out->removeRepresentation('contents'); - $out->addRepresentation($r); - - return $out; - } - - /** @psalm-api */ - public static function clean(): void - { - self::$last = null; - self::$start = null; - self::$times = 0; - self::newGroup(); - } - - private static function getGroup(): string - { - if (null === self::$group) { - return self::newGroup(); - } - - return self::$group; - } - - private static function newGroup(): string - { - return self::$group = \bin2hex(\random_bytes(4)); - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/MysqliPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/MysqliPlugin.php deleted file mode 100644 index 51195bf..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/MysqliPlugin.php +++ /dev/null @@ -1,176 +0,0 @@ - true, - 'connect_errno' => true, - 'connect_error' => true, - ]; - - // These are readable on empty mysqli objects, but not on failed connections - public const EMPTY_READABLE = [ - 'client_info' => true, - 'errno' => true, - 'error' => true, - ]; - - // These are only readable on connected mysqli objects - public const CONNECTED_READABLE = [ - 'affected_rows' => true, - 'error_list' => true, - 'field_count' => true, - 'host_info' => true, - 'info' => true, - 'insert_id' => true, - 'server_info' => true, - 'server_version' => true, - 'sqlstate' => true, - 'protocol_version' => true, - 'thread_id' => true, - 'warning_count' => true, - ]; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_COMPLETE; - } - - /** - * Before 8.1: Properties were nulls when cast to array - * After 8.1: Properties are readonly and uninitialized when cast to array (Aka missing). - */ - public function parseComplete(&$var, AbstractValue $v, int $trigger): AbstractValue - { - if (!$var instanceof mysqli || !$v instanceof InstanceValue) { - return $v; - } - - $props = $v->getRepresentation('properties'); - - if (!$props instanceof ContainerRepresentation) { - return $v; - } - - /** - * @psalm-var ?string $var->sqlstate - * @psalm-var ?string $var->client_info - * Psalm bug #4502 - */ - try { - $connected = \is_string(@$var->sqlstate); - } catch (Throwable $t) { - $connected = false; - } - - try { - $empty = !$connected && \is_string(@$var->client_info); - } catch (Throwable $t) { // @codeCoverageIgnore - // Only possible in PHP 8.0. Before 8.0 there's no exception, - // after 8.1 there are no failed connection objects - $empty = false; // @codeCoverageIgnore - } - - $parser = $this->getParser(); - - $new_contents = []; - - foreach ($props->getContents() as $key => $obj) { - $new_contents[$key] = $obj; - - $c = $obj->getContext(); - - if (!$c instanceof PropertyContext) { - continue; - } - - if (isset(self::CONNECTED_READABLE[$c->getName()])) { - $c->readonly = KINT_PHP81; - if (!$connected) { - // No failed connections after PHP 8.1 - continue; // @codeCoverageIgnore - } - } elseif (isset(self::EMPTY_READABLE[$c->getName()])) { - $c->readonly = KINT_PHP81; - // No failed connections after PHP 8.1 - if (!$connected && !$empty) { // @codeCoverageIgnore - continue; // @codeCoverageIgnore - } - } elseif (!isset(self::ALWAYS_READABLE[$c->getName()])) { - continue; // @codeCoverageIgnore - } - - $c->readonly = KINT_PHP81; - - // Only handle unparsed properties - if ((KINT_PHP81 ? 'uninitialized' : 'null') !== $obj->getType()) { - continue; - } - - $param = $var->{$c->getName()}; - - // If it really was a null - if (!KINT_PHP81 && null === $param) { - continue; // @codeCoverageIgnore - } - - $new_contents[$key] = $parser->parse($param, $c); - } - - $new_contents = \array_values($new_contents); - - $v->setChildren($new_contents); - - if ($new_contents) { - $v->replaceRepresentation(new ContainerRepresentation('Properties', $new_contents)); - } - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/Parser.php b/v3_ci4/vendor/kint-php/kint/src/Parser/Parser.php deleted file mode 100644 index 5b28157..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/Parser.php +++ /dev/null @@ -1,610 +0,0 @@ - - */ -class Parser -{ - /** - * Plugin triggers. - * - * These are constants indicating trigger points for plugins - * - * BEGIN: Before normal parsing - * SUCCESS: After successful parsing - * RECURSION: After parsing cancelled by recursion - * DEPTH_LIMIT: After parsing cancelled by depth limit - * COMPLETE: SUCCESS | RECURSION | DEPTH_LIMIT - * - * While a plugin's getTriggers may return any of these only one should - * be given to the plugin when PluginInterface::parse is called - */ - public const TRIGGER_NONE = 0; - public const TRIGGER_BEGIN = 1 << 0; - public const TRIGGER_SUCCESS = 1 << 1; - public const TRIGGER_RECURSION = 1 << 2; - public const TRIGGER_DEPTH_LIMIT = 1 << 3; - public const TRIGGER_COMPLETE = self::TRIGGER_SUCCESS | self::TRIGGER_RECURSION | self::TRIGGER_DEPTH_LIMIT; - - /** @psalm-var ?class-string */ - protected ?string $caller_class; - protected int $depth_limit = 0; - protected array $array_ref_stack = []; - protected array $object_hashes = []; - protected array $plugins = []; - - /** - * @param int $depth_limit Maximum depth to parse data - * @param ?string $caller Caller class name - * - * @psalm-param ?class-string $caller - */ - public function __construct(int $depth_limit = 0, ?string $caller = null) - { - $this->depth_limit = $depth_limit; - $this->caller_class = $caller; - } - - /** - * Set the caller class. - * - * @psalm-param ?class-string $caller - */ - public function setCallerClass(?string $caller = null): void - { - $this->noRecurseCall(); - - $this->caller_class = $caller; - } - - /** @psalm-return ?class-string */ - public function getCallerClass(): ?string - { - return $this->caller_class; - } - - /** - * Set the depth limit. - * - * @param int $depth_limit Maximum depth to parse data, 0 for none - */ - public function setDepthLimit(int $depth_limit = 0): void - { - $this->noRecurseCall(); - - $this->depth_limit = $depth_limit; - } - - public function getDepthLimit(): int - { - return $this->depth_limit; - } - - /** - * Parses a variable into a Kint object structure. - * - * @param mixed &$var The input variable - */ - public function parse(&$var, ContextInterface $c): AbstractValue - { - $type = \strtolower(\gettype($var)); - - if ($v = $this->applyPluginsBegin($var, $c, $type)) { - return $v; - } - - switch ($type) { - case 'array': - return $this->parseArray($var, $c); - case 'boolean': - case 'double': - case 'integer': - case 'null': - return $this->parseFixedWidth($var, $c); - case 'object': - return $this->parseObject($var, $c); - case 'resource': - return $this->parseResource($var, $c); - case 'string': - return $this->parseString($var, $c); - case 'resource (closed)': - return $this->parseResourceClosed($var, $c); - - case 'unknown type': // @codeCoverageIgnore - default: - // These should never happen. Unknown is resource (closed) from old - // PHP versions and there shouldn't be any other types. - return $this->parseUnknown($var, $c); // @codeCoverageIgnore - } - } - - public function addPlugin(PluginInterface $p): void - { - try { - $this->noRecurseCall(); - } catch (DomainException $e) { // @codeCoverageIgnore - \trigger_error('Calling Kint\\Parser::addPlugin from inside a parse is deprecated', E_USER_DEPRECATED); // @codeCoverageIgnore - } - - if (!$types = $p->getTypes()) { - return; - } - - if (!$triggers = $p->getTriggers()) { - return; - } - - if ($triggers & self::TRIGGER_BEGIN && !$p instanceof PluginBeginInterface) { - throw new InvalidArgumentException('Parsers triggered on begin must implement PluginBeginInterface'); - } - - if ($triggers & self::TRIGGER_COMPLETE && !$p instanceof PluginCompleteInterface) { - throw new InvalidArgumentException('Parsers triggered on completion must implement PluginCompleteInterface'); - } - - $p->setParser($this); - - foreach ($types as $type) { - $this->plugins[$type] ??= [ - self::TRIGGER_BEGIN => [], - self::TRIGGER_SUCCESS => [], - self::TRIGGER_RECURSION => [], - self::TRIGGER_DEPTH_LIMIT => [], - ]; - - foreach ($this->plugins[$type] as $trigger => &$pool) { - if ($triggers & $trigger) { - $pool[] = $p; - } - } - } - } - - public function clearPlugins(): void - { - try { - $this->noRecurseCall(); - } catch (DomainException $e) { // @codeCoverageIgnore - \trigger_error('Calling Kint\\Parser::clearPlugins from inside a parse is deprecated', E_USER_DEPRECATED); // @codeCoverageIgnore - } - - $this->plugins = []; - } - - protected function noRecurseCall(): void - { - $bt = \debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS); - - \reset($bt); - /** @psalm-var array{class: class-string, function: string, ...} $caller_frame */ - $caller_frame = \next($bt); - - foreach ($bt as $frame) { - if (isset($frame['object']) && $frame['object'] === $this && 'parse' === $frame['function']) { - throw new DomainException($caller_frame['class'].'::'.$caller_frame['function'].' cannot be called from inside a parse'); - } - } - } - - /** - * @psalm-param null|bool|float|int &$var - */ - private function parseFixedWidth(&$var, ContextInterface $c): AbstractValue - { - $v = new FixedWidthValue($c, $var); - - return $this->applyPluginsComplete($var, $v, self::TRIGGER_SUCCESS); - } - - private function parseString(string &$var, ContextInterface $c): AbstractValue - { - $string = new StringValue($c, $var, Utils::detectEncoding($var)); - - if (false !== $string->getEncoding() && \strlen($var)) { - $string->addRepresentation(new StringRepresentation('Contents', $var, null, true)); - } - - return $this->applyPluginsComplete($var, $string, self::TRIGGER_SUCCESS); - } - - private function parseArray(array &$var, ContextInterface $c): AbstractValue - { - $size = \count($var); - $contents = []; - $parentRef = ReflectionReference::fromArrayElement([&$var], 0)->getId(); - - if (isset($this->array_ref_stack[$parentRef])) { - $array = new ArrayValue($c, $size, $contents); - $array->flags |= AbstractValue::FLAG_RECURSION; - - return $this->applyPluginsComplete($var, $array, self::TRIGGER_RECURSION); - } - - try { - $this->array_ref_stack[$parentRef] = true; - - $cdepth = $c->getDepth(); - $ap = $c->getAccessPath(); - - if ($size > 0 && $this->depth_limit && $cdepth >= $this->depth_limit) { - $array = new ArrayValue($c, $size, $contents); - $array->flags |= AbstractValue::FLAG_DEPTH_LIMIT; - - return $this->applyPluginsComplete($var, $array, self::TRIGGER_DEPTH_LIMIT); - } - - foreach ($var as $key => $_) { - $child = new ArrayContext($key); - $child->depth = $cdepth + 1; - $child->reference = null !== ReflectionReference::fromArrayElement($var, $key); - - if (null !== $ap) { - $child->access_path = $ap.'['.\var_export($key, true).']'; - } - - $contents[$key] = $this->parse($var[$key], $child); - } - - $array = new ArrayValue($c, $size, $contents); - - if ($contents) { - $array->addRepresentation(new ContainerRepresentation('Contents', $contents, null, true)); - } - - return $this->applyPluginsComplete($var, $array, self::TRIGGER_SUCCESS); - } finally { - unset($this->array_ref_stack[$parentRef]); - } - } - - /** - * @psalm-return ReflectionProperty[] - */ - private function getPropsOrdered(ReflectionClass $r): array - { - if ($parent = $r->getParentClass()) { - $props = self::getPropsOrdered($parent); - } else { - $props = []; - } - - foreach ($r->getProperties() as $prop) { - if ($prop->isStatic()) { - continue; - } - - if ($prop->isPrivate()) { - $props[] = $prop; - } else { - $props[$prop->name] = $prop; - } - } - - return $props; - } - - /** - * @codeCoverageIgnore - * - * @psalm-return ReflectionProperty[] - */ - private function getPropsOrderedOld(ReflectionClass $r): array - { - $props = []; - - foreach ($r->getProperties() as $prop) { - if ($prop->isStatic()) { - continue; - } - - $props[] = $prop; - } - - while ($r = $r->getParentClass()) { - foreach ($r->getProperties(ReflectionProperty::IS_PRIVATE) as $prop) { - if ($prop->isStatic()) { - continue; - } - - $props[] = $prop; - } - } - - return $props; - } - - private function parseObject(object &$var, ContextInterface $c): AbstractValue - { - $hash = \spl_object_hash($var); - $classname = \get_class($var); - - if (isset($this->object_hashes[$hash])) { - $object = new InstanceValue($c, $classname, $hash, \spl_object_id($var)); - $object->flags |= AbstractValue::FLAG_RECURSION; - - return $this->applyPluginsComplete($var, $object, self::TRIGGER_RECURSION); - } - - try { - $this->object_hashes[$hash] = true; - - $cdepth = $c->getDepth(); - $ap = $c->getAccessPath(); - - if ($this->depth_limit && $cdepth >= $this->depth_limit) { - $object = new InstanceValue($c, $classname, $hash, \spl_object_id($var)); - $object->flags |= AbstractValue::FLAG_DEPTH_LIMIT; - - return $this->applyPluginsComplete($var, $object, self::TRIGGER_DEPTH_LIMIT); - } - - if (KINT_PHP81) { - $props = $this->getPropsOrdered(new ReflectionObject($var)); - } else { - $props = $this->getPropsOrderedOld(new ReflectionObject($var)); // @codeCoverageIgnore - } - - $values = (array) $var; - $properties = []; - - foreach ($props as $rprop) { - if (KINT_PHP81 === false) { - $rprop->setAccessible(true); - } - - $name = $rprop->getName(); - - // Casting object to array: - // private properties show in the form "\0$owner_class_name\0$property_name"; - // protected properties show in the form "\0*\0$property_name"; - // public properties show in the form "$property_name"; - // http://www.php.net/manual/en/language.types.array.php#language.types.array.casting - $key = $name; - if ($rprop->isProtected()) { - $key = "\0*\0".$name; - } elseif ($rprop->isPrivate()) { - $key = "\0".$rprop->getDeclaringClass()->getName()."\0".$name; - } - $initialized = \array_key_exists($key, $values); - if ($key === (string) (int) $key) { - $key = (int) $key; - } - - if ($rprop->isDefault()) { - $child = new PropertyContext( - $name, - $rprop->getDeclaringClass()->getName(), - ClassDeclaredContext::ACCESS_PUBLIC - ); - - $child->readonly = KINT_PHP81 && $rprop->isReadOnly(); - - if ($rprop->isProtected()) { - $child->access = ClassDeclaredContext::ACCESS_PROTECTED; - } elseif ($rprop->isPrivate()) { - $child->access = ClassDeclaredContext::ACCESS_PRIVATE; - } - - if (KINT_PHP84) { - if ($rprop->isProtectedSet()) { - $child->access_set = ClassDeclaredContext::ACCESS_PROTECTED; - } elseif ($rprop->isPrivateSet()) { - $child->access_set = ClassDeclaredContext::ACCESS_PRIVATE; - } - - $hooks = $rprop->getHooks(); - if (isset($hooks['get'])) { - $child->hooks |= PropertyContext::HOOK_GET; - if ($hooks['get']->returnsReference()) { - $child->hooks |= PropertyContext::HOOK_GET_REF; - } - } - if (isset($hooks['set'])) { - $child->hooks |= PropertyContext::HOOK_SET; - - $child->hook_set_type = (string) $rprop->getSettableType(); - if ($child->hook_set_type !== (string) $rprop->getType()) { - $child->hooks |= PropertyContext::HOOK_SET_TYPE; - } elseif ('' === $child->hook_set_type) { - $child->hook_set_type = null; - } - } - } - - if (KINT_PHP8412) { - $proto_prop = $rprop; - while (($parent_class = $proto_prop->getDeclaringClass()->getParentClass()) && - $parent_class->hasProperty($name) && - ($parent_prop = $parent_class->getProperty($name)) && - !$parent_prop->isPrivate()) { - $proto_prop = $parent_prop; - } - - $proto_class = $proto_prop->getDeclaringClass()->getName(); - if ($proto_class !== $child->owner_class) { - $child->proto_class = $proto_prop->getDeclaringClass()->getName(); - } - } - } else { - $child = new ClassOwnedContext($name, $rprop->getDeclaringClass()->getName()); - } - - $child->reference = $initialized && null !== ReflectionReference::fromArrayElement($values, $key); - $child->depth = $cdepth + 1; - - if (null !== $ap && $child->isAccessible($this->caller_class)) { - /** @psalm-var string $child->name */ - if (Utils::isValidPhpName($child->name)) { - $child->access_path = $ap.'->'.$child->name; - } else { - $child->access_path = $ap.'->{'.\var_export($child->name, true).'}'; - } - } - - if (KINT_PHP84 && $rprop->isVirtual()) { - $properties[] = new VirtualValue($child); - } elseif (!$initialized) { - $properties[] = new UninitializedValue($child); - } else { - $properties[] = $this->parse($values[$key], $child); - } - } - - $object = new InstanceValue($c, $classname, $hash, \spl_object_id($var)); - if ($props) { - $object->setChildren($properties); - } - - if ($properties) { - $object->addRepresentation(new ContainerRepresentation('Properties', $properties)); - } - - return $this->applyPluginsComplete($var, $object, self::TRIGGER_SUCCESS); - } finally { - unset($this->object_hashes[$hash]); - } - } - - /** - * @psalm-param resource $var - */ - private function parseResource(&$var, ContextInterface $c): AbstractValue - { - $resource = new ResourceValue($c, \get_resource_type($var)); - - $resource = $this->applyPluginsComplete($var, $resource, self::TRIGGER_SUCCESS); - - return $resource; - } - - /** - * @psalm-param mixed $var - */ - private function parseResourceClosed(&$var, ContextInterface $c): AbstractValue - { - $v = new ClosedResourceValue($c); - - $v = $this->applyPluginsComplete($var, $v, self::TRIGGER_SUCCESS); - - return $v; - } - - /** - * Catch-all for any unexpectedgettype. - * - * This should never happen. - * - * @codeCoverageIgnore - * - * @psalm-param mixed $var - */ - private function parseUnknown(&$var, ContextInterface $c): AbstractValue - { - $v = new UnknownValue($c); - - $v = $this->applyPluginsComplete($var, $v, self::TRIGGER_SUCCESS); - - return $v; - } - - /** - * Applies plugins for a yet-unparsed value. - * - * @param mixed &$var The input variable - */ - private function applyPluginsBegin(&$var, ContextInterface $c, string $type): ?AbstractValue - { - $plugins = $this->plugins[$type][self::TRIGGER_BEGIN] ?? []; - - foreach ($plugins as $plugin) { - try { - if ($v = $plugin->parseBegin($var, $c)) { - return $v; - } - } catch (Throwable $e) { - \trigger_error( - Utils::errorSanitizeString(\get_class($e)).' was thrown in '.$e->getFile().' on line '.$e->getLine().' while executing '.Utils::errorSanitizeString(\get_class($plugin)).'->parseBegin. Error message: '.Utils::errorSanitizeString($e->getMessage()), - E_USER_WARNING - ); - } - } - - return null; - } - - /** - * Applies plugins for a parsed AbstractValue. - * - * @param mixed &$var The input variable - */ - private function applyPluginsComplete(&$var, AbstractValue $v, int $trigger): AbstractValue - { - $plugins = $this->plugins[$v->getType()][$trigger] ?? []; - - foreach ($plugins as $plugin) { - try { - $v = $plugin->parseComplete($var, $v, $trigger); - } catch (Throwable $e) { - \trigger_error( - Utils::errorSanitizeString(\get_class($e)).' was thrown in '.$e->getFile().' on line '.$e->getLine().' while executing '.Utils::errorSanitizeString(\get_class($plugin)).'->parseComplete. Error message: '.Utils::errorSanitizeString($e->getMessage()), - E_USER_WARNING - ); - } - } - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/PluginBeginInterface.php b/v3_ci4/vendor/kint-php/kint/src/Parser/PluginBeginInterface.php deleted file mode 100644 index 25d72f4..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/PluginBeginInterface.php +++ /dev/null @@ -1,39 +0,0 @@ -getDepth()) { - $this->instance_counts = []; - $this->instance_complexity = []; - $this->instance_count_stack = []; - $this->class_complexity = []; - $this->class_count_stack = []; - } - - if (\is_object($var)) { - $hash = \spl_object_hash($var); - $this->instance_counts[$hash] ??= 0; - $this->instance_complexity[$hash] ??= 0; - $this->instance_count_stack[$hash] ??= 0; - - if (0 === $this->instance_count_stack[$hash]) { - /** - * @psalm-suppress PossiblyFalseIterator - * Psalm bug #11392 - */ - foreach (\class_parents($var) as $class) { - $this->class_count_stack[$class] ??= 0; - ++$this->class_count_stack[$class]; - } - - /** - * @psalm-suppress PossiblyFalseIterator - * Psalm bug #11392 - */ - foreach (\class_implements($var) as $iface) { - $this->class_count_stack[$iface] ??= 0; - ++$this->class_count_stack[$iface]; - } - } - - ++$this->instance_count_stack[$hash]; - } - - return null; - } - - public function parseComplete(&$var, AbstractValue $v, int $trigger): AbstractValue - { - if ($v instanceof InstanceValue) { - --$this->instance_count_stack[$v->getSplObjectHash()]; - - if (0 === $this->instance_count_stack[$v->getSplObjectHash()]) { - /** - * @psalm-suppress PossiblyFalseIterator - * Psalm bug #11392 - */ - foreach (\class_parents($var) as $class) { - --$this->class_count_stack[$class]; - } - - /** - * @psalm-suppress PossiblyFalseIterator - * Psalm bug #11392 - */ - foreach (\class_implements($var) as $iface) { - --$this->class_count_stack[$iface]; - } - } - } - - // Don't check subs if we're in recursion or array limit - if (~$trigger & Parser::TRIGGER_SUCCESS) { - return $v; - } - - $sub_complexity = 1; - - foreach ($v->getRepresentations() as $rep) { - if ($rep instanceof ContainerRepresentation) { - foreach ($rep->getContents() as $value) { - $profile = $value->getRepresentation('profiling'); - $sub_complexity += $profile instanceof ProfileRepresentation ? $profile->complexity : 1; - } - } else { - ++$sub_complexity; - } - } - - if ($v instanceof InstanceValue) { - ++$this->instance_counts[$v->getSplObjectHash()]; - if (0 === $this->instance_count_stack[$v->getSplObjectHash()]) { - $this->instance_complexity[$v->getSplObjectHash()] += $sub_complexity; - - $this->class_complexity[$v->getClassName()] ??= 0; - $this->class_complexity[$v->getClassName()] += $sub_complexity; - - /** - * @psalm-suppress PossiblyFalseIterator - * Psalm bug #11392 - */ - foreach (\class_parents($var) as $class) { - $this->class_complexity[$class] ??= 0; - if (0 === $this->class_count_stack[$class]) { - $this->class_complexity[$class] += $sub_complexity; - } - } - - /** - * @psalm-suppress PossiblyFalseIterator - * Psalm bug #11392 - */ - foreach (\class_implements($var) as $iface) { - $this->class_complexity[$iface] ??= 0; - if (0 === $this->class_count_stack[$iface]) { - $this->class_complexity[$iface] += $sub_complexity; - } - } - } - } - - if (0 === $v->getContext()->getDepth()) { - $contents = []; - - \arsort($this->class_complexity); - - foreach ($this->class_complexity as $name => $complexity) { - $contents[] = new FixedWidthValue(new BaseContext($name), $complexity); - } - - if ($contents) { - $v->addRepresentation(new ContainerRepresentation('Class complexity', $contents), 0); - } - } - - $rep = new ProfileRepresentation($sub_complexity); - /** @psalm-suppress UnsupportedReferenceUsage */ - if ($v instanceof InstanceValue) { - $rep->instance_counts = &$this->instance_counts[$v->getSplObjectHash()]; - $rep->instance_complexity = &$this->instance_complexity[$v->getSplObjectHash()]; - } - - $v->addRepresentation($rep, 0); - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ProxyPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ProxyPlugin.php deleted file mode 100644 index e0db1b9..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ProxyPlugin.php +++ /dev/null @@ -1,92 +0,0 @@ -types = $types; - $this->triggers = $triggers; - $this->callback = $callback; - } - - public function setParser(Parser $p): void - { - $this->parser = $p; - } - - public function getTypes(): array - { - return $this->types; - } - - public function getTriggers(): int - { - return $this->triggers; - } - - public function parseBegin(&$var, ContextInterface $c): ?AbstractValue - { - return \call_user_func_array($this->callback, [ - &$var, - $c, - Parser::TRIGGER_BEGIN, - $this->parser, - ]); - } - - public function parseComplete(&$var, AbstractValue $v, int $trigger): AbstractValue - { - return \call_user_func_array($this->callback, [ - &$var, - $v, - $trigger, - $this->parser, - ]); - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/SerializePlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/SerializePlugin.php deleted file mode 100644 index a23aaae..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/SerializePlugin.php +++ /dev/null @@ -1,111 +0,0 @@ - Unserialization can result in code being loaded and executed due to - * > object instantiation and autoloading, and a malicious user may be able - * > to exploit this. - * - * The natural way to stop that from happening is to just refuse to unserialize - * stuff by default. Which is what we're doing for anything that's not scalar. - */ - public static bool $safe_mode = true; - - /** - * @psalm-var bool|class-string[] - */ - public static $allowed_classes = false; - - public function getTypes(): array - { - return ['string']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parseComplete(&$var, AbstractValue $v, int $trigger): AbstractValue - { - $trimmed = \rtrim($var); - - if ('N;' !== $trimmed && !\preg_match('/^(?:[COabis]:\\d+[:;]|d:\\d+(?:\\.\\d+);)/', $trimmed)) { - return $v; - } - - $options = ['allowed_classes' => self::$allowed_classes]; - - $c = $v->getContext(); - - $base = new BaseContext('unserialize('.$c->getName().')'); - $base->depth = $c->getDepth() + 1; - - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = 'unserialize('.$ap; - if (true === self::$allowed_classes) { - $base->access_path .= ')'; - } else { - $base->access_path .= ', '.\var_export($options, true).')'; - } - } - - if (self::$safe_mode && \in_array($trimmed[0], ['C', 'O', 'a'], true)) { - $data = new UninitializedValue($base); - $data->flags |= AbstractValue::FLAG_BLACKLIST; - } else { - // Suppress warnings on unserializeable variable - $data = @\unserialize($trimmed, $options); - - if (false === $data && 'b:0;' !== \substr($trimmed, 0, 4)) { - return $v; - } - - $data = $this->getParser()->parse($data, $base); - } - - $data->flags |= AbstractValue::FLAG_GENERATED; - - $v->addRepresentation(new ValueRepresentation('Serialized', $data), 0); - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/SimpleXMLElementPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/SimpleXMLElementPlugin.php deleted file mode 100644 index 65b1671..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/SimpleXMLElementPlugin.php +++ /dev/null @@ -1,299 +0,0 @@ -methods_plugin = new ClassMethodsPlugin($parser); - } - - public function setParser(Parser $p): void - { - parent::setParser($p); - - $this->methods_plugin->setParser($p); - } - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - // SimpleXMLElement is a weirdo. No recursion (Or rather everything is - // recursion) and depth limit will have to be handled manually anyway. - return Parser::TRIGGER_BEGIN; - } - - public function parseBegin(&$var, ContextInterface $c): ?AbstractValue - { - if (!$var instanceof SimpleXMLElement) { - return null; - } - - return $this->parseElement($var, $c); - } - - protected function parseElement(SimpleXMLElement &$var, ContextInterface $c): SimpleXMLElementValue - { - $parser = $this->getParser(); - $pdepth = $parser->getDepthLimit(); - $cdepth = $c->getDepth(); - - $depthlimit = $pdepth && $cdepth >= $pdepth; - $has_children = self::hasChildElements($var); - - if ($depthlimit && $has_children) { - $x = new SimpleXMLElementValue($c, $var, [], null); - $x->flags |= AbstractValue::FLAG_DEPTH_LIMIT; - - return $x; - } - - $children = $this->getChildren($c, $var); - $attributes = $this->getAttributes($c, $var); - $toString = (string) $var; - $string_body = !$has_children && \strlen($toString); - - $x = new SimpleXMLElementValue($c, $var, $children, \strlen($toString) ? $toString : null); - - if (self::$verbose) { - $x = $this->methods_plugin->parseComplete($var, $x, Parser::TRIGGER_SUCCESS); - } - - if ($attributes) { - $x->addRepresentation(new ContainerRepresentation('Attributes', $attributes), 0); - } - - if ($string_body) { - $base = new BaseContext('(string) '.$c->getName()); - $base->depth = $cdepth + 1; - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = '(string) '.$ap; - } - - $toString = $parser->parse($toString, $base); - - $x->addRepresentation(new ValueRepresentation('toString', $toString, null, true), 0); - } - - if ($children) { - $x->addRepresentation(new ContainerRepresentation('Children', $children), 0); - } - - return $x; - } - - /** @psalm-return list */ - protected function getAttributes(ContextInterface $c, SimpleXMLElement $var): array - { - $parser = $this->getParser(); - $namespaces = \array_merge(['' => null], $var->getDocNamespaces()); - - $cdepth = $c->getDepth(); - $ap = $c->getAccessPath(); - - $contents = []; - - foreach ($namespaces as $nsAlias => $_) { - if ((bool) $nsAttribs = $var->attributes($nsAlias, true)) { - foreach ($nsAttribs as $name => $attrib) { - $obj = new ArrayContext($name); - $obj->depth = $cdepth + 1; - - if (null !== $ap) { - $obj->access_path = '(string) '.$ap; - if ('' !== $nsAlias) { - $obj->access_path .= '->attributes('.\var_export($nsAlias, true).', true)'; - } - $obj->access_path .= '['.\var_export($name, true).']'; - } - - if ('' !== $nsAlias) { - $obj->name = $nsAlias.':'.$obj->name; - } - - $string = (string) $attrib; - $attribute = $parser->parse($string, $obj); - - $contents[] = $attribute; - } - } - } - - return $contents; - } - - /** - * Alright kids, let's learn about SimpleXMLElement::children! - * children can take a namespace url or alias and provide a list of - * child nodes. This is great since just accessing the members through - * properties doesn't work on SimpleXMLElement when they have a - * namespace at all! - * - * Unfortunately SimpleXML decided to go the retarded route of - * categorizing elements by their tag name rather than by their local - * name (to put it in Dom terms) so if you have something like this: - * - * - * - * - * - * - * - * * children(null) will get the first 2 results - * * children('', true) will get the first 2 results - * * children('http://localhost/') will get the last 2 results - * * children('localhost', true) will get the last result - * - * So let's just give up and stick to aliases because fuck that mess! - * - * @psalm-return list - */ - protected function getChildren(ContextInterface $c, SimpleXMLElement $var): array - { - $namespaces = \array_merge(['' => null], $var->getDocNamespaces()); - - $cdepth = $c->getDepth(); - $ap = $c->getAccessPath(); - - $contents = []; - - foreach ($namespaces as $nsAlias => $_) { - $nsChildren = $var->children($nsAlias, true); - if (!(bool) $nsChildren) { - continue; - } - - $nsap = []; - - foreach ($nsChildren as $name => $child) { - $base = new ClassOwnedContext((string) $name, SimpleXMLElement::class); - $base->depth = $cdepth + 1; - - if ('' !== $nsAlias) { - $base->name = $nsAlias.':'.$name; - } - - if (null !== $ap) { - if ('' === $nsAlias) { - $base->access_path = $ap.'->'; - } else { - $base->access_path = $ap.'->children('.\var_export($nsAlias, true).', true)->'; - } - - if (Utils::isValidPhpName((string) $name)) { - $base->access_path .= (string) $name; - } else { - $base->access_path .= '{'.\var_export((string) $name, true).'}'; - } - - if (isset($nsap[$base->access_path])) { - ++$nsap[$base->access_path]; - $base->access_path .= '['.$nsap[$base->access_path].']'; - } else { - $nsap[$base->access_path] = 0; - } - } - - $v = $this->parseElement($child, $base); - $v->flags |= AbstractValue::FLAG_GENERATED; - $contents[] = $v; - } - } - - return $contents; - } - - /** - * More SimpleXMLElement bullshit. - * - * If we want to know if the element contains text we can cast to string. - * Except if it contains text mixed with elements simplexml for some stupid - * reason decides to concatenate the text from between those elements - * rather than all the text in the hierarchy... - * - * So we have NO way of getting text nodes between elements, but we can - * still tell if we have elements right? If we have elements we assume it's - * not a string and call it a day! - * - * Well if you cast the element to an array attributes will be on it so - * you'd have to remove that key, and if it's a string it'll also have the - * 0 index used for the string contents too... - * - * Wait, can we use the 0 index to tell if it's a string? Nope! CDATA - * doesn't show up AT ALL when casting to anything but string, and we'll - * still get those concatenated strings of mostly whitespace if we just do - * (string) and check the length. - * - * Luckily, I found the only way to do this reliably is through children(). - * We still have to loop through all the namespaces and see if there's a - * match but then we have the problem of the attributes showing up again... - * - * Or at least that's what var_dump says. And when we cast the result to - * bool it's true too... But if we cast it to array then it's suddenly empty! - * - * Long story short the function below is the only way to reliably check if - * a SimpleXMLElement has children - */ - protected static function hasChildElements(SimpleXMLElement $var): bool - { - $namespaces = \array_merge(['' => null], $var->getDocNamespaces()); - - foreach ($namespaces as $nsAlias => $_) { - if ((array) $var->children($nsAlias, true)) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/SplFileInfoPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/SplFileInfoPlugin.php deleted file mode 100644 index c5eea6c..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/SplFileInfoPlugin.php +++ /dev/null @@ -1,68 +0,0 @@ -getContext(), $var); - $out->setChildren($v->getChildren()); - $out->flags = $v->flags; - $out->addRepresentation(new SplFileInfoRepresentation(clone $var)); - $out->appendRepresentations($v->getRepresentations()); - - return $out; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/StreamPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/StreamPlugin.php deleted file mode 100644 index fdbc257..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/StreamPlugin.php +++ /dev/null @@ -1,88 +0,0 @@ -getContext(); - - $parser = $this->getParser(); - $parsed_meta = []; - foreach ($meta as $key => $val) { - $base = new ArrayContext($key); - $base->depth = $c->getDepth() + 1; - - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = 'stream_get_meta_data('.$ap.')['.\var_export($key, true).']'; - } - - $val = $parser->parse($val, $base); - $val->flags |= AbstractValue::FLAG_GENERATED; - $parsed_meta[] = $val; - } - - $stream = new StreamValue($c, $parsed_meta, $meta['uri'] ?? null); - $stream->flags = $v->flags; - $stream->appendRepresentations($v->getRepresentations()); - - return $stream; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/TablePlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/TablePlugin.php deleted file mode 100644 index 8bbda7f..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/TablePlugin.php +++ /dev/null @@ -1,103 +0,0 @@ - self::$max_width) { - return $v; - } - - $keys = \array_keys($elem); - } elseif (\array_keys($elem) !== $keys) { - return $v; - } - } - - $children = $v->getContents(); - - if (!$children) { - return $v; - } - - // Ensure none of the child arrays are recursion or depth limit. We - // don't care if their children are since they are the table cells - foreach ($children as $childarray) { - if (!$childarray instanceof ArrayValue || empty($childarray->getContents())) { - return $v; - } - } - - $v->addRepresentation(new TableRepresentation($children), 0); - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ThrowablePlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ThrowablePlugin.php deleted file mode 100644 index c314faf..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ThrowablePlugin.php +++ /dev/null @@ -1,67 +0,0 @@ -getContext(), $var); - $throw->setChildren($v->getChildren()); - $throw->flags = $v->flags; - $throw->appendRepresentations($v->getRepresentations()); - - try { - $throw->addRepresentation(new SourceRepresentation($var->getFile(), $var->getLine(), null, true), 0); - } catch (RuntimeException $e) { - } - - return $throw; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/TimestampPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/TimestampPlugin.php deleted file mode 100644 index da3506f..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/TimestampPlugin.php +++ /dev/null @@ -1,89 +0,0 @@ - 10) { - return $v; - } - - if (!$v instanceof StringValue && !$v instanceof FixedWidthValue) { - return $v; - } - - if (!$dt = DateTimeImmutable::createFromFormat('U', (string) $var)) { - return $v; - } - - $v->removeRepresentation('contents'); - $v->addRepresentation(new StringRepresentation('Timestamp', $dt->format('c'), null, true)); - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/ToStringPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/ToStringPlugin.php deleted file mode 100644 index 6fa7bd4..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/ToStringPlugin.php +++ /dev/null @@ -1,88 +0,0 @@ -hasMethod('__toString')) { - return $v; - } - - foreach (self::$blacklist as $class) { - if ($var instanceof $class) { - return $v; - } - } - - try { - $string = (string) $var; - } catch (Throwable $t) { - return $v; - } - - $c = $v->getContext(); - - $base = new BaseContext($c->getName()); - $base->depth = $c->getDepth() + 1; - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = '(string) '.$ap; - } - - $string = $this->getParser()->parse($string, $base); - - $v->addRepresentation(new ValueRepresentation('toString', $string)); - - return $v; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/TracePlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/TracePlugin.php deleted file mode 100644 index d01ebd9..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/TracePlugin.php +++ /dev/null @@ -1,156 +0,0 @@ -getParser()->getDepthLimit(); - $c = $v->getContext(); - - // We need at least 2 levels in order to get $trace[n]['args'] - if ($pdepth && $c->getDepth() + 2 >= $pdepth) { - return $v; - } - - $contents = $v->getContents(); - - self::$blacklist = Utils::normalizeAliases(self::$blacklist); - $path_blacklist = self::normalizePaths(self::$path_blacklist); - - $frames = []; - - foreach ($contents as $frame) { - if (!$frame instanceof ArrayValue || !$frame->getContext() instanceof ArrayContext) { - continue; - } - - $index = $frame->getContext()->getName(); - - if (!isset($trace[$index]['file']) || Utils::traceFrameIsListed($trace[$index], self::$blacklist)) { - continue; - } - - if (false !== ($realfile = \realpath($trace[$index]['file']))) { - foreach ($path_blacklist as $path) { - if (0 === \strpos($realfile, $path)) { - continue 2; - } - } - } - - $frame = new TraceFrameValue($frame, $trace[$index]); - - if (null !== ($file = $frame->getFile()) && null !== ($line = $frame->getLine())) { - try { - $frame->addRepresentation(new SourceRepresentation($file, $line)); - } catch (RuntimeException $e) { - } - } - - if ($args = $frame->getArgs()) { - $frame->addRepresentation(new ContainerRepresentation('Arguments', $args)); - } - - if ($obj = $frame->getObject()) { - $frame->addRepresentation( - new ValueRepresentation( - 'Callee object ['.$obj->getClassName().']', - $obj, - 'callee_object' - ) - ); - } - - $frames[$index] = $frame; - } - - $traceobj = new TraceValue($c, \count($frames), $frames); - - if ($frames) { - $traceobj->addRepresentation(new ContainerRepresentation('Contents', $frames, null, true)); - } - - return $traceobj; - } - - protected static function normalizePaths(array $paths): array - { - $normalized = []; - - foreach ($paths as $path) { - $realpath = \realpath($path); - if (false !== $realpath && \is_dir($realpath)) { - $realpath .= DIRECTORY_SEPARATOR; - } - - $normalized[] = $realpath; - } - - return $normalized; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Parser/XmlPlugin.php b/v3_ci4/vendor/kint-php/kint/src/Parser/XmlPlugin.php deleted file mode 100644 index 64275a2..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Parser/XmlPlugin.php +++ /dev/null @@ -1,179 +0,0 @@ -getContext(); - - $out = \call_user_func([$this, 'xmlTo'.self::$parse_method], $var, $c); - - if (null === $out) { - return $v; - } - - $out->flags |= AbstractValue::FLAG_GENERATED; - - $v->addRepresentation(new ValueRepresentation('XML', $out), 0); - - return $v; - } - - /** @psalm-suppress PossiblyUnusedMethod */ - protected function xmlToSimpleXML(string $var, ContextInterface $c): ?AbstractValue - { - $errors = \libxml_use_internal_errors(true); - try { - $xml = \simplexml_load_string($var); - if (!(bool) $xml) { - throw new InvalidArgumentException('Bad XML parse in XmlPlugin::xmlToSimpleXML'); - } - } catch (Throwable $t) { - return null; - } finally { - \libxml_use_internal_errors($errors); - \libxml_clear_errors(); - } - - $base = new BaseContext($xml->getName()); - $base->depth = $c->getDepth() + 1; - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = 'simplexml_load_string('.$ap.')'; - } - - return $this->getParser()->parse($xml, $base); - } - - /** - * Get the DOMDocument info. - * - * If it errors loading then we wouldn't have gotten this far in the first place. - * - * @psalm-suppress PossiblyUnusedMethod - * - * @psalm-param non-empty-string $var - */ - protected function xmlToDOMDocument(string $var, ContextInterface $c): ?AbstractValue - { - try { - $xml = new DOMDocument(); - $check = $xml->loadXML($var, LIBXML_NOWARNING | LIBXML_NOERROR); - - if (false === $check) { - throw new InvalidArgumentException('Bad XML parse in XmlPlugin::xmlToDOMDocument'); - } - } catch (Throwable $t) { - return null; - } - - $xml = $xml->firstChild; - - /** - * @psalm-var DOMNode $xml - * Psalm bug #11120 - */ - $base = new BaseContext($xml->nodeName); - $base->depth = $c->getDepth() + 1; - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = '(function($s){$x = new \\DomDocument(); $x->loadXML($s); return $x;})('.$ap.')->firstChild'; - } - - return $this->getParser()->parse($xml, $base); - } - - /** @psalm-suppress PossiblyUnusedMethod */ - protected function xmlToXMLDocument(string $var, ContextInterface $c): ?AbstractValue - { - if (!KINT_PHP84) { - return null; // @codeCoverageIgnore - } - - try { - $xml = XMLDocument::createFromString($var, LIBXML_NOWARNING | LIBXML_NOERROR); - } catch (DOMException $e) { - return null; - } - - $xml = $xml->firstChild; - - /** - * @psalm-var Node $xml - * Psalm bug #11120 - */ - $base = new BaseContext($xml->nodeName); - $base->depth = $c->getDepth() + 1; - if (null !== ($ap = $c->getAccessPath())) { - $base->access_path = '\\Dom\\XMLDocument::createFromString('.$ap.')->firstChild'; - } - - return $this->getParser()->parse($xml, $base); - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Renderer/AbstractRenderer.php b/v3_ci4/vendor/kint-php/kint/src/Renderer/AbstractRenderer.php deleted file mode 100644 index fb4597c..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Renderer/AbstractRenderer.php +++ /dev/null @@ -1,87 +0,0 @@ -render_spl_ids; - } - - public function setCallInfo(array $info): void - { - $this->callee = $info['callee'] ?? null; - $this->trace = $info['trace'] ?? []; - } - - public function setStatics(array $statics): void - { - $this->show_trace = !empty($statics['display_called_from']); - } - - public function filterParserPlugins(array $plugins): array - { - return $plugins; - } - - public function preRender(): string - { - return ''; - } - - public function postRender(): string - { - return ''; - } - - public static function getFileLink(string $file, int $line): ?string - { - if (null === self::$file_link_format) { - return null; - } - - return \str_replace(['%f', '%l'], [$file, $line], self::$file_link_format); - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Renderer/AssetRendererTrait.php b/v3_ci4/vendor/kint-php/kint/src/Renderer/AssetRendererTrait.php deleted file mode 100644 index fb66f2d..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Renderer/AssetRendererTrait.php +++ /dev/null @@ -1,70 +0,0 @@ -} */ - private static array $assetCache = []; - - /** @psalm-api */ - public static function renderJs(): string - { - if (!isset(self::$assetCache['js'])) { - self::$assetCache['js'] = \file_get_contents(KINT_DIR.'/resources/compiled/main.js'); - } - - return self::$assetCache['js']; - } - - /** @psalm-api */ - public static function renderCss(): ?string - { - if (!isset(self::$theme)) { - return null; - } - - if (!isset(self::$assetCache['css'][self::$theme])) { - if (\file_exists(KINT_DIR.'/resources/compiled/'.self::$theme)) { - self::$assetCache['css'][self::$theme] = \file_get_contents(KINT_DIR.'/resources/compiled/'.self::$theme); - } elseif (\file_exists(self::$theme)) { - self::$assetCache['css'][self::$theme] = \file_get_contents(self::$theme); - } else { - self::$assetCache['css'][self::$theme] = false; - } - } - - if (false === self::$assetCache['css'][self::$theme]) { - return null; - } - - return self::$assetCache['css'][self::$theme]; - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Renderer/CliRenderer.php b/v3_ci4/vendor/kint-php/kint/src/Renderer/CliRenderer.php deleted file mode 100644 index 6efdbe8..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Renderer/CliRenderer.php +++ /dev/null @@ -1,183 +0,0 @@ -windows_output = true; - } else { - $stream = self::$windows_stream; - - if (!$stream && \defined('STDOUT')) { - $stream = STDOUT; - } - - if (!$stream) { - $this->windows_output = true; - } else { - $this->windows_output = !\sapi_windows_vt100_support($stream); - } - } - } - - if (null === self::$terminal_width) { - if (self::$detect_width) { - try { - $tput = KINT_WIN ? \exec('tput cols 2>nul') : \exec('tput cols 2>/dev/null'); - if ((bool) $tput) { - /** - * @psalm-suppress InvalidCast - * Psalm bug #11080 - */ - self::$terminal_width = (int) $tput; - } - } catch (Throwable $t) { - self::$terminal_width = self::$default_width; - } - } - - if (!isset(self::$terminal_width) || self::$terminal_width < self::$min_terminal_width) { - self::$terminal_width = self::$default_width; - } - } - - $this->colors = $this->windows_output ? false : self::$cli_colors; - - $this->header_width = self::$terminal_width; - } - - public function colorValue(string $string): string - { - if (!$this->colors) { - return $string; - } - - return "\x1b[32m".\str_replace("\n", "\x1b[0m\n\x1b[32m", $string)."\x1b[0m"; - } - - public function colorType(string $string): string - { - if (!$this->colors) { - return $string; - } - - return "\x1b[35;1m".\str_replace("\n", "\x1b[0m\n\x1b[35;1m", $string)."\x1b[0m"; - } - - public function colorTitle(string $string): string - { - if (!$this->colors) { - return $string; - } - - return "\x1b[36m".\str_replace("\n", "\x1b[0m\n\x1b[36m", $string)."\x1b[0m"; - } - - public function renderTitle(AbstractValue $v): string - { - if ($this->windows_output) { - return $this->utf8ToWindows(parent::renderTitle($v)); - } - - return parent::renderTitle($v); - } - - public function preRender(): string - { - return PHP_EOL; - } - - public function postRender(): string - { - if ($this->windows_output) { - return $this->utf8ToWindows(parent::postRender()); - } - - return parent::postRender(); - } - - public function escape(string $string, $encoding = false): string - { - return \str_replace("\x1b", '\\x1b', $string); - } - - protected function utf8ToWindows(string $string): string - { - return \str_replace( - ['┌', '═', '┐', '│', '└', '─', '┘'], - [' ', '=', ' ', '|', ' ', '-', ' '], - $string - ); - } -} diff --git a/v3_ci4/vendor/kint-php/kint/src/Renderer/ConstructableRendererInterface.php b/v3_ci4/vendor/kint-php/kint/src/Renderer/ConstructableRendererInterface.php deleted file mode 100644 index 686f37a..0000000 --- a/v3_ci4/vendor/kint-php/kint/src/Renderer/ConstructableRendererInterface.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - [self::class, 'renderJs'], - ], - 'style' => [ - [self::class, 'renderCss'], - ], - 'raw' => [], - ]; - - /** - * Output htmlentities instead of utf8. - */ - public static bool $disable_utf8 = false; - - public static bool $needs_pre_render = true; - - public static bool $always_pre_render = false; - - protected bool $force_pre_render = false; - - public function __construct() - { - parent::__construct(); - self::$theme ??= 'plain.css'; - $this->setForcePreRender(self::$always_pre_render); - } - - public function setCallInfo(array $info): void - { - parent::setCallInfo($info); - - if (\in_array('@', $info['modifiers'], true)) { - $this->setForcePreRender(true); - } - } - - public function setStatics(array $statics): void - { - parent::setStatics($statics); - - if (!empty($statics['return'])) { - $this->setForcePreRender(true); - } - } - - public function setForcePreRender(bool $force_pre_render): void - { - $this->force_pre_render = $force_pre_render; - } - - public function getForcePreRender(): bool - { - return $this->force_pre_render; - } - - public function shouldPreRender(): bool - { - return $this->getForcePreRender() || self::$needs_pre_render; - } - - public function colorValue(string $string): string - { - return ''.$string.''; - } - - public function colorType(string $string): string - { - return ''.$string.''; - } - - public function colorTitle(string $string): string - { - return ''.$string.''; - } - - public function renderTitle(AbstractValue $v): string - { - if (self::$disable_utf8) { - return $this->utf8ToHtmlentity(parent::renderTitle($v)); - } - - return parent::renderTitle($v); - } - - public function preRender(): string - { - $output = ''; - - if ($this->shouldPreRender()) { - foreach (self::$pre_render_sources as $type => $values) { - $contents = ''; - foreach ($values as $v) { - $contents .= \call_user_func($v, $this); - } - - if (!\strlen($contents)) { - continue; - } - - switch ($type) { - case 'script': - $output .= ''; - break; - case 'style': - $output .= ' - - -EOT; - - /** - * @var string - */ - private const CLASS_HEADER = <<<'EOT' - -

%s

-
    - -EOT; - - /** - * @var string - */ - private const CLASS_FOOTER = <<<'EOT' -
-EOT; - - /** - * @var string - */ - private const PAGE_FOOTER = <<<'EOT' - - - -EOT; - - /** - * @param array $tests - */ - public function render(array $tests): string - { - $buffer = self::PAGE_HEADER; - - foreach ($tests as $prettifiedClassName => $_tests) { - $buffer .= sprintf( - self::CLASS_HEADER, - $prettifiedClassName, - ); - - foreach ($this->reduce($_tests) as $prettifiedMethodName => $outcome) { - $buffer .= sprintf( - "
  • %s
  • \n", - $outcome, - $prettifiedMethodName, - ); - } - - $buffer .= self::CLASS_FOOTER; - } - - return $buffer . self::PAGE_FOOTER; - } - - /** - * @return array - */ - private function reduce(TestResultCollection $tests): array - { - $result = []; - - foreach ($tests as $test) { - $prettifiedMethodName = $test->test()->testDox()->prettifiedMethodName(); - - if (!isset($result[$prettifiedMethodName])) { - $result[$prettifiedMethodName] = $test->status()->isSuccess() ? 'success' : 'defect'; - - continue; - } - - if ($test->status()->isSuccess()) { - continue; - } - - $result[$prettifiedMethodName] = 'defect'; - } - - return $result; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php deleted file mode 100644 index 4c20c7a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php +++ /dev/null @@ -1,308 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use function array_key_exists; -use function array_keys; -use function array_map; -use function array_pop; -use function array_values; -use function assert; -use function class_exists; -use function explode; -use function gettype; -use function implode; -use function is_bool; -use function is_float; -use function is_int; -use function is_object; -use function is_scalar; -use function method_exists; -use function preg_quote; -use function preg_replace; -use function rtrim; -use function sprintf; -use function str_contains; -use function str_ends_with; -use function str_replace; -use function str_starts_with; -use function strlen; -use function strtolower; -use function strtoupper; -use function substr; -use function trim; -use PHPUnit\Framework\TestCase; -use PHPUnit\Metadata\Parser\Registry as MetadataRegistry; -use PHPUnit\Metadata\TestDox; -use PHPUnit\Util\Color; -use PHPUnit\Util\Exporter; -use ReflectionEnum; -use ReflectionMethod; -use ReflectionObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NamePrettifier -{ - /** - * @var array - */ - private array $strings = []; - - /** - * @param class-string $className - */ - public function prettifyTestClassName(string $className): string - { - if (class_exists($className)) { - $classLevelTestDox = MetadataRegistry::parser()->forClass($className)->isTestDox(); - - if ($classLevelTestDox->isNotEmpty()) { - $classLevelTestDox = $classLevelTestDox->asArray()[0]; - - assert($classLevelTestDox instanceof TestDox); - - return $classLevelTestDox->text(); - } - } - - $parts = explode('\\', $className); - $className = array_pop($parts); - - if (str_ends_with($className, 'Test')) { - $className = substr($className, 0, strlen($className) - strlen('Test')); - } - - if (str_starts_with($className, 'Tests')) { - $className = substr($className, strlen('Tests')); - } elseif (str_starts_with($className, 'Test')) { - $className = substr($className, strlen('Test')); - } - - if (empty($className)) { - $className = 'UnnamedTests'; - } - - if (!empty($parts)) { - $parts[] = $className; - $fullyQualifiedName = implode('\\', $parts); - } else { - $fullyQualifiedName = $className; - } - - $result = preg_replace('/(?<=[[:lower:]])(?=[[:upper:]])/u', ' ', $className); - - if ($fullyQualifiedName !== $className) { - return $result . ' (' . $fullyQualifiedName . ')'; - } - - return $result; - } - - // NOTE: this method is on a hot path and very performance sensitive. change with care. - public function prettifyTestMethodName(string $name): string - { - if ($name === '') { - return ''; - } - - $string = rtrim($name, '0123456789'); - - if (array_key_exists($string, $this->strings)) { - $name = $string; - } elseif ($string === $name) { - $this->strings[$string] = 1; - } - - if (str_starts_with($name, 'test_')) { - $name = substr($name, 5); - } elseif (str_starts_with($name, 'test')) { - $name = substr($name, 4); - } - - if ($name === '') { - return ''; - } - - $name[0] = strtoupper($name[0]); - - $noUnderscore = str_replace('_', ' ', $name); - - if ($noUnderscore !== $name) { - return trim($noUnderscore); - } - - $wasNumeric = false; - - $buffer = ''; - - $len = strlen($name); - - for ($i = 0; $i < $len; $i++) { - if ($i > 0 && $name[$i] >= 'A' && $name[$i] <= 'Z') { - $buffer .= ' ' . strtolower($name[$i]); - } else { - $isNumeric = $name[$i] >= '0' && $name[$i] <= '9'; - - if (!$wasNumeric && $isNumeric) { - $buffer .= ' '; - $wasNumeric = true; - } - - if ($wasNumeric && !$isNumeric) { - $wasNumeric = false; - } - - $buffer .= $name[$i]; - } - } - - return trim($buffer); - } - - public function prettifyTestCase(TestCase $test, bool $colorize): string - { - $annotationWithPlaceholders = false; - $methodLevelTestDox = MetadataRegistry::parser()->forMethod($test::class, $test->name())->isTestDox()->isMethodLevel(); - - if ($methodLevelTestDox->isNotEmpty()) { - $methodLevelTestDox = $methodLevelTestDox->asArray()[0]; - - assert($methodLevelTestDox instanceof TestDox); - - $result = $methodLevelTestDox->text(); - - if (str_contains($result, '$')) { - $annotation = $result; - $providedData = $this->mapTestMethodParameterNamesToProvidedDataValues($test, $colorize); - - $variables = array_map( - static fn (string $variable): string => sprintf( - '/%s(?=\b)/', - preg_quote($variable, '/'), - ), - array_keys($providedData), - ); - - $result = preg_replace($variables, $providedData, $annotation); - - $annotationWithPlaceholders = true; - } - } else { - $result = $this->prettifyTestMethodName($test->name()); - } - - if (!$annotationWithPlaceholders && $test->usesDataProvider()) { - $result .= $this->prettifyDataSet($test, $colorize); - } - - return $result; - } - - public function prettifyDataSet(TestCase $test, bool $colorize): string - { - if (!$colorize) { - return $test->dataSetAsString(); - } - - if (is_int($test->dataName())) { - return Color::dim(' with data set ') . Color::colorize('fg-cyan', (string) $test->dataName()); - } - - return Color::dim(' with ') . Color::colorize('fg-cyan', Color::visualizeWhitespace($test->dataName())); - } - - /** - * @return array - */ - private function mapTestMethodParameterNamesToProvidedDataValues(TestCase $test, bool $colorize): array - { - assert(method_exists($test, $test->name())); - - /** @noinspection PhpUnhandledExceptionInspection */ - $reflector = new ReflectionMethod($test::class, $test->name()); - - $providedData = []; - $providedDataValues = array_values($test->providedData()); - $i = 0; - - $providedData['$_dataName'] = $test->dataName(); - - foreach ($reflector->getParameters() as $parameter) { - if (!array_key_exists($i, $providedDataValues) && $parameter->isDefaultValueAvailable()) { - $providedDataValues[$i] = $parameter->getDefaultValue(); - } - - $value = $providedDataValues[$i++] ?? null; - - if (is_object($value)) { - $value = $this->objectToString($value); - } - - if (!is_scalar($value)) { - $value = gettype($value); - - if ($value === 'NULL') { - $value = 'null'; - } - } - - if (is_bool($value) || is_int($value) || is_float($value)) { - $value = Exporter::export($value); - } - - if ($value === '') { - if ($colorize) { - $value = Color::colorize('dim,underlined', 'empty'); - } else { - $value = "''"; - } - } - - $providedData['$' . $parameter->getName()] = str_replace('$', '\\$', $value); - } - - if ($colorize) { - $providedData = array_map( - static fn ($value) => Color::colorize('fg-cyan', Color::visualizeWhitespace((string) $value, true)), - $providedData, - ); - } - - return $providedData; - } - - /** - * @return non-empty-string - */ - private function objectToString(object $value): string - { - $reflector = new ReflectionObject($value); - - if ($reflector->isEnum()) { - $enumReflector = new ReflectionEnum($value); - - if ($enumReflector->isBacked()) { - return (string) $value->value; - } - - return $value->name; - } - - if ($reflector->hasMethod('__toString')) { - return $value->__toString(); - } - - return $value::class; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php deleted file mode 100644 index db591ca..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php +++ /dev/null @@ -1,79 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use function sprintf; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class PlainTextRenderer -{ - /** - * @param array $tests - */ - public function render(array $tests): string - { - $buffer = ''; - - foreach ($tests as $prettifiedClassName => $_tests) { - $buffer .= $prettifiedClassName . "\n"; - - foreach ($this->reduce($_tests) as $prettifiedMethodName => $outcome) { - $buffer .= sprintf( - ' [%s] %s' . "\n", - $outcome, - $prettifiedMethodName, - ); - } - - $buffer .= "\n"; - } - - return $buffer; - } - - /** - * @return array - */ - private function reduce(TestResultCollection $tests): array - { - $result = []; - - foreach ($tests as $test) { - $prettifiedMethodName = $test->test()->testDox()->prettifiedMethodName(); - - $success = true; - - if ($test->status()->isError() || - $test->status()->isFailure() || - $test->status()->isIncomplete() || - $test->status()->isSkipped()) { - $success = false; - } - - if (!isset($result[$prettifiedMethodName])) { - $result[$prettifiedMethodName] = $success ? 'x' : ' '; - - continue; - } - - if ($success) { - continue; - } - - $result[$prettifiedMethodName] = ' '; - } - - return $result; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php deleted file mode 100644 index 41fc465..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class Subscriber -{ - private TestResultCollector $collector; - - public function __construct(TestResultCollector $collector) - { - $this->collector = $collector; - } - - protected function collector(): TestResultCollector - { - return $this->collector; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php deleted file mode 100644 index 150a486..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\ConsideredRiskySubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestConsideredRiskySubscriber extends Subscriber implements ConsideredRiskySubscriber -{ - public function notify(ConsideredRisky $event): void - { - $this->collector()->testConsideredRisky($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index b210ffa..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - public function notify(Errored $event): void - { - $this->collector()->testErrored($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index b776227..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - public function notify(Failed $event): void - { - $this->collector()->testFailed($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index 14ddea3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - /** - * @throws InvalidArgumentException - */ - public function notify(Finished $event): void - { - $this->collector()->testFinished($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index 7e21545..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - public function notify(MarkedIncomplete $event): void - { - $this->collector()->testMarkedIncomplete($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php deleted file mode 100644 index 1eb1a57..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Passed; -use PHPUnit\Event\Test\PassedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestPassedSubscriber extends Subscriber implements PassedSubscriber -{ - public function notify(Passed $event): void - { - $this->collector()->testPassed($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index cdaddb0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->collector()->testPrepared($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index 76d7e3b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - public function notify(Skipped $event): void - { - $this->collector()->testSkipped($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php deleted file mode 100644 index 8e08029..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\DeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - public function notify(DeprecationTriggered $event): void - { - $this->collector()->testTriggeredDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php deleted file mode 100644 index 18eff3a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\NoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredNoticeSubscriber extends Subscriber implements NoticeTriggeredSubscriber -{ - public function notify(NoticeTriggered $event): void - { - $this->collector()->testTriggeredNotice($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php deleted file mode 100644 index 082bb3c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpDeprecationSubscriber extends Subscriber implements PhpDeprecationTriggeredSubscriber -{ - public function notify(PhpDeprecationTriggered $event): void - { - $this->collector()->testTriggeredPhpDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php deleted file mode 100644 index b743b64..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpNoticeSubscriber extends Subscriber implements PhpNoticeTriggeredSubscriber -{ - public function notify(PhpNoticeTriggered $event): void - { - $this->collector()->testTriggeredPhpNotice($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php deleted file mode 100644 index 4e9c6ac..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpWarningSubscriber extends Subscriber implements PhpWarningTriggeredSubscriber -{ - public function notify(PhpWarningTriggered $event): void - { - $this->collector()->testTriggeredPhpWarning($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php deleted file mode 100644 index 4423ff9..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpunitDeprecationSubscriber extends Subscriber implements PhpunitDeprecationTriggeredSubscriber -{ - public function notify(PhpunitDeprecationTriggered $event): void - { - $this->collector()->testTriggeredPhpunitDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php deleted file mode 100644 index e4e90f1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpunitErrorSubscriber extends Subscriber implements PhpunitErrorTriggeredSubscriber -{ - public function notify(PhpunitErrorTriggered $event): void - { - $this->collector()->testTriggeredPhpunitError($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php deleted file mode 100644 index 72cb8af..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpunitWarningSubscriber extends Subscriber implements PhpunitWarningTriggeredSubscriber -{ - public function notify(PhpunitWarningTriggered $event): void - { - $this->collector()->testTriggeredPhpunitWarning($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php deleted file mode 100644 index d44f400..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\Test\WarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - public function notify(WarningTriggered $event): void - { - $this->collector()->testTriggeredWarning($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php deleted file mode 100644 index 2648a0d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Framework\TestStatus\TestStatus; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestResult -{ - private TestMethod $test; - private TestStatus $status; - private ?Throwable $throwable; - - public function __construct(TestMethod $test, TestStatus $status, ?Throwable $throwable) - { - $this->test = $test; - $this->status = $status; - $this->throwable = $throwable; - } - - public function test(): TestMethod - { - return $this->test; - } - - public function status(): TestStatus - { - return $this->status; - } - - /** - * @phpstan-assert-if-true !null $this->throwable - */ - public function hasThrowable(): bool - { - return $this->throwable !== null; - } - - public function throwable(): ?Throwable - { - return $this->throwable; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php deleted file mode 100644 index f27171f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use IteratorAggregate; - -/** - * @template-implements IteratorAggregate - * - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestResultCollection implements IteratorAggregate -{ - /** - * @var list - */ - private array $testResults; - - /** - * @param list $testResults - */ - public static function fromArray(array $testResults): self - { - return new self(...$testResults); - } - - private function __construct(TestResult ...$testResults) - { - $this->testResults = $testResults; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->testResults; - } - - public function getIterator(): TestResultCollectionIterator - { - return new TestResultCollectionIterator($this); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php deleted file mode 100644 index 94a4759..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use function count; -use Iterator; - -/** - * @template-implements Iterator - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestResultCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $testResults; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(TestResultCollection $testResults) - { - $this->testResults = $testResults->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->testResults); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): TestResult - { - return $this->testResults[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php b/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php deleted file mode 100644 index 629a816..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php +++ /dev/null @@ -1,390 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Logging\TestDox; - -use function array_keys; -use function array_merge; -use function assert; -use function is_subclass_of; -use function ksort; -use function uksort; -use function usort; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\Passed; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\Logging\TestDox\TestResult as TestDoxTestMethod; -use PHPUnit\TestRunner\IssueFilter; -use ReflectionMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestResultCollector -{ - private readonly IssueFilter $issueFilter; - - /** - * @var array> - */ - private array $tests = []; - private ?TestStatus $status = null; - private ?Throwable $throwable = null; - private bool $prepared = false; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Facade $facade, IssueFilter $issueFilter) - { - $this->issueFilter = $issueFilter; - - $this->registerSubscribers($facade); - } - - /** - * @return array - */ - public function testMethodsGroupedByClass(): array - { - $result = []; - - foreach ($this->tests as $prettifiedClassName => $tests) { - $testsByDeclaringClass = []; - - foreach ($tests as $test) { - $declaringClassName = (new ReflectionMethod($test->test()->className(), $test->test()->methodName()))->getDeclaringClass()->getName(); - - if (!isset($testsByDeclaringClass[$declaringClassName])) { - $testsByDeclaringClass[$declaringClassName] = []; - } - - $testsByDeclaringClass[$declaringClassName][] = $test; - } - - foreach (array_keys($testsByDeclaringClass) as $declaringClassName) { - usort( - $testsByDeclaringClass[$declaringClassName], - static function (TestDoxTestMethod $a, TestDoxTestMethod $b): int - { - return $a->test()->line() <=> $b->test()->line(); - }, - ); - } - - uksort( - $testsByDeclaringClass, - /** - * @param class-string $a - * @param class-string $b - */ - static function (string $a, string $b): int - { - if (is_subclass_of($b, $a)) { - return -1; - } - - if (is_subclass_of($a, $b)) { - return 1; - } - - return 0; - }, - ); - - $tests = []; - - foreach ($testsByDeclaringClass as $_tests) { - $tests = array_merge($tests, $_tests); - } - - $result[$prettifiedClassName] = TestResultCollection::fromArray($tests); - } - - ksort($result); - - return $result; - } - - public function testPrepared(Prepared $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->status = TestStatus::unknown(); - $this->throwable = null; - $this->prepared = true; - } - - public function testErrored(Errored $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->status = TestStatus::error($event->throwable()->message()); - $this->throwable = $event->throwable(); - - if (!$this->prepared) { - $test = $event->test(); - - assert($test instanceof TestMethod); - - $this->process($test); - } - } - - public function testFailed(Failed $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->status = TestStatus::failure($event->throwable()->message()); - $this->throwable = $event->throwable(); - } - - public function testPassed(Passed $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::success()); - } - - public function testSkipped(Skipped $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::skipped($event->message())); - } - - public function testMarkedIncomplete(MarkedIncomplete $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::incomplete($event->throwable()->message())); - - $this->throwable = $event->throwable(); - } - - public function testConsideredRisky(ConsideredRisky $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::risky()); - } - - public function testTriggeredDeprecation(DeprecationTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event, true)) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredNotice(NoticeTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event, true)) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - $this->updateTestStatus(TestStatus::notice()); - } - - public function testTriggeredWarning(WarningTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event, true)) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredPhpDeprecation(PhpDeprecationTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event, true)) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredPhpNotice(PhpNoticeTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event, true)) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - $this->updateTestStatus(TestStatus::notice()); - } - - public function testTriggeredPhpWarning(PhpWarningTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event, true)) { - return; - } - - if ($event->ignoredByBaseline()) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredPhpunitDeprecation(PhpunitDeprecationTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredPhpunitError(PhpunitErrorTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::error()); - } - - public function testTriggeredPhpunitWarning(PhpunitWarningTriggered $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - /** - * @throws InvalidArgumentException - */ - public function testFinished(Finished $event): void - { - if (!$event->test()->isTestMethod()) { - return; - } - - $test = $event->test(); - - assert($test instanceof TestMethod); - - $this->process($test); - - $this->status = null; - $this->throwable = null; - $this->prepared = false; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(Facade $facade): void - { - $facade->registerSubscribers( - new TestConsideredRiskySubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestFinishedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestPassedSubscriber($this), - new TestPreparedSubscriber($this), - new TestSkippedSubscriber($this), - new TestTriggeredDeprecationSubscriber($this), - new TestTriggeredNoticeSubscriber($this), - new TestTriggeredPhpDeprecationSubscriber($this), - new TestTriggeredPhpNoticeSubscriber($this), - new TestTriggeredPhpunitDeprecationSubscriber($this), - new TestTriggeredPhpunitErrorSubscriber($this), - new TestTriggeredPhpunitWarningSubscriber($this), - new TestTriggeredPhpWarningSubscriber($this), - new TestTriggeredWarningSubscriber($this), - ); - } - - private function updateTestStatus(TestStatus $status): void - { - if ($this->status !== null && - $this->status->isMoreImportantThan($status)) { - return; - } - - $this->status = $status; - } - - private function process(TestMethod $test): void - { - if (!isset($this->tests[$test->testDox()->prettifiedClassName()])) { - $this->tests[$test->testDox()->prettifiedClassName()] = []; - } - - $this->tests[$test->testDox()->prettifiedClassName()][] = new TestDoxTestMethod( - $test, - $this->status, - $this->throwable, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/After.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/After.php deleted file mode 100644 index 1f5b3f3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/After.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class After extends Metadata -{ - private int $priority; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, int $priority) - { - parent::__construct($level); - - $this->priority = $priority; - } - - public function isAfter(): true - { - return true; - } - - public function priority(): int - { - return $this->priority; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/AfterClass.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/AfterClass.php deleted file mode 100644 index 92fe3e8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/AfterClass.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class AfterClass extends Metadata -{ - private int $priority; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, int $priority) - { - parent::__construct($level); - - $this->priority = $priority; - } - - public function isAfterClass(): true - { - return true; - } - - public function priority(): int - { - return $this->priority; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php deleted file mode 100644 index ef2f243..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php +++ /dev/null @@ -1,315 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use function assert; -use function class_exists; -use function count; -use function interface_exists; -use function sprintf; -use function str_starts_with; -use function trait_exists; -use PHPUnit\Framework\CodeCoverageException; -use PHPUnit\Framework\InvalidCoversTargetException; -use PHPUnit\Metadata\Covers; -use PHPUnit\Metadata\CoversClass; -use PHPUnit\Metadata\CoversDefaultClass; -use PHPUnit\Metadata\CoversFunction; -use PHPUnit\Metadata\CoversMethod; -use PHPUnit\Metadata\CoversTrait; -use PHPUnit\Metadata\Parser\Registry; -use PHPUnit\Metadata\Uses; -use PHPUnit\Metadata\UsesClass; -use PHPUnit\Metadata\UsesDefaultClass; -use PHPUnit\Metadata\UsesFunction; -use PHPUnit\Metadata\UsesMethod; -use PHPUnit\Metadata\UsesTrait; -use ReflectionClass; -use SebastianBergmann\CodeUnit\CodeUnitCollection; -use SebastianBergmann\CodeUnit\Exception as CodeUnitException; -use SebastianBergmann\CodeUnit\InvalidCodeUnitException; -use SebastianBergmann\CodeUnit\Mapper; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CodeCoverage -{ - /** - * @var array> - */ - private array $withParents = []; - - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @throws CodeCoverageException - * - * @return array>|false - */ - public function linesToBeCovered(string $className, string $methodName): array|false - { - if (!$this->shouldCodeCoverageBeCollectedFor($className, $methodName)) { - return false; - } - - $metadataForClass = Registry::parser()->forClass($className); - $classShortcut = null; - - if ($metadataForClass->isCoversDefaultClass()->isNotEmpty()) { - if (count($metadataForClass->isCoversDefaultClass()) > 1) { - throw new CodeCoverageException( - sprintf( - 'More than one @coversDefaultClass annotation for class or interface "%s"', - $className, - ), - ); - } - - $metadata = $metadataForClass->isCoversDefaultClass()->asArray()[0]; - - assert($metadata instanceof CoversDefaultClass); - - $classShortcut = $metadata->className(); - } - - $codeUnits = CodeUnitCollection::fromList(); - $mapper = new Mapper; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if (!$metadata->isCoversClass() && !$metadata->isCoversTrait() && !$metadata->isCoversMethod() && !$metadata->isCoversFunction() && !$metadata->isCovers()) { - continue; - } - - /** @phpstan-ignore booleanOr.alwaysTrue */ - assert($metadata instanceof CoversClass || $metadata instanceof CoversTrait || $metadata instanceof CoversMethod || $metadata instanceof CoversFunction || $metadata instanceof Covers); - - if ($metadata->isCoversClass() || $metadata->isCoversTrait() || $metadata->isCoversMethod() || $metadata->isCoversFunction()) { - $codeUnits = $codeUnits->mergeWith($this->mapToCodeUnits($metadata)); - } elseif ($metadata->isCovers()) { - assert($metadata instanceof Covers); - - $target = $metadata->target(); - - if (interface_exists($target)) { - throw new InvalidCoversTargetException( - sprintf( - 'Trying to @cover interface "%s".', - $target, - ), - ); - } - - if ($classShortcut !== null && str_starts_with($target, '::')) { - $target = $classShortcut . $target; - } - - try { - $codeUnits = $codeUnits->mergeWith($mapper->stringToCodeUnits($target)); - } catch (InvalidCodeUnitException $e) { - throw new InvalidCoversTargetException( - sprintf( - '"@covers %s" is invalid', - $target, - ), - $e->getCode(), - $e, - ); - } - } - } - - return $mapper->codeUnitsToSourceLines($codeUnits); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @throws CodeCoverageException - * - * @return array> - */ - public function linesToBeUsed(string $className, string $methodName): array - { - $metadataForClass = Registry::parser()->forClass($className); - $classShortcut = null; - - if ($metadataForClass->isUsesDefaultClass()->isNotEmpty()) { - if (count($metadataForClass->isUsesDefaultClass()) > 1) { - throw new CodeCoverageException( - sprintf( - 'More than one @usesDefaultClass annotation for class or interface "%s"', - $className, - ), - ); - } - - $metadata = $metadataForClass->isUsesDefaultClass()->asArray()[0]; - - assert($metadata instanceof UsesDefaultClass); - - $classShortcut = $metadata->className(); - } - - $codeUnits = CodeUnitCollection::fromList(); - $mapper = new Mapper; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if (!$metadata->isUsesClass() && !$metadata->isUsesTrait() && !$metadata->isUsesMethod() && !$metadata->isUsesFunction() && !$metadata->isUses()) { - continue; - } - - /** @phpstan-ignore booleanOr.alwaysTrue */ - assert($metadata instanceof UsesClass || $metadata instanceof UsesTrait || $metadata instanceof UsesMethod || $metadata instanceof UsesFunction || $metadata instanceof Uses); - - if ($metadata->isUsesClass() || $metadata->isUsesTrait() || $metadata->isUsesMethod() || $metadata->isUsesFunction()) { - $codeUnits = $codeUnits->mergeWith($this->mapToCodeUnits($metadata)); - } elseif ($metadata->isUses()) { - assert($metadata instanceof Uses); - - $target = $metadata->target(); - - if ($classShortcut !== null && str_starts_with($target, '::')) { - $target = $classShortcut . $target; - } - - try { - $codeUnits = $codeUnits->mergeWith($mapper->stringToCodeUnits($target)); - } catch (InvalidCodeUnitException $e) { - throw new InvalidCoversTargetException( - sprintf( - '"@uses %s" is invalid', - $target, - ), - $e->getCode(), - $e, - ); - } - } - } - - return $mapper->codeUnitsToSourceLines($codeUnits); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function shouldCodeCoverageBeCollectedFor(string $className, string $methodName): bool - { - $metadataForClass = Registry::parser()->forClass($className); - $metadataForMethod = Registry::parser()->forMethod($className, $methodName); - - if ($metadataForMethod->isCoversNothing()->isNotEmpty()) { - return false; - } - - if ($metadataForMethod->isCovers()->isNotEmpty() || - $metadataForMethod->isCoversClass()->isNotEmpty() || - $metadataForMethod->isCoversFunction()->isNotEmpty()) { - return true; - } - - if ($metadataForClass->isCoversNothing()->isNotEmpty()) { - return false; - } - - return true; - } - - /** - * @throws InvalidCoversTargetException - */ - private function mapToCodeUnits(CoversClass|CoversFunction|CoversMethod|CoversTrait|UsesClass|UsesFunction|UsesMethod|UsesTrait $metadata): CodeUnitCollection - { - $mapper = new Mapper; - $names = $this->names($metadata); - - try { - if (count($names) === 1) { - return $mapper->stringToCodeUnits($names[0]); - } - - $codeUnits = CodeUnitCollection::fromList(); - - foreach ($names as $name) { - $codeUnits = $codeUnits->mergeWith( - $mapper->stringToCodeUnits($name), - ); - } - - return $codeUnits; - } catch (CodeUnitException $e) { - throw new InvalidCoversTargetException( - sprintf( - '%s is not a valid target for code coverage', - $metadata->asStringForCodeUnitMapper(), - ), - $e->getCode(), - $e, - ); - } - } - - /** - * @throws InvalidCoversTargetException - * - * @return non-empty-list - */ - private function names(CoversClass|CoversFunction|CoversMethod|CoversTrait|UsesClass|UsesFunction|UsesMethod|UsesTrait $metadata): array - { - $name = $metadata->asStringForCodeUnitMapper(); - $names = [$name]; - - if ($metadata->isCoversClass() || $metadata->isUsesClass()) { - if (isset($this->withParents[$name])) { - return $this->withParents[$name]; - } - - if (interface_exists($name)) { - throw new InvalidCoversTargetException( - sprintf( - 'Interface "%s" is not a valid target for code coverage', - $name, - ), - ); - } - - if (!(class_exists($name) || trait_exists($name))) { - throw new InvalidCoversTargetException( - sprintf( - '"%s" is not a valid target for code coverage', - $name, - ), - ); - } - - assert(class_exists($names[0]) || trait_exists($names[0])); - - $reflector = new ReflectionClass($name); - - while ($reflector = $reflector->getParentClass()) { - if (!$reflector->isUserDefined()) { - break; - } - - $names[] = $reflector->getName(); - } - - $this->withParents[$name] = $names; - } - - return $names; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php deleted file mode 100644 index b496b6c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php +++ /dev/null @@ -1,301 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use const JSON_ERROR_NONE; -use const PREG_OFFSET_CAPTURE; -use function array_key_exists; -use function assert; -use function explode; -use function get_debug_type; -use function is_array; -use function is_int; -use function is_string; -use function json_decode; -use function json_last_error; -use function json_last_error_msg; -use function preg_match; -use function preg_replace; -use function rtrim; -use function sprintf; -use function str_replace; -use function strlen; -use function substr; -use function trim; -use PHPUnit\Event; -use PHPUnit\Framework\InvalidDataProviderException; -use PHPUnit\Metadata\DataProvider as DataProviderMetadata; -use PHPUnit\Metadata\MetadataCollection; -use PHPUnit\Metadata\Parser\Registry as MetadataRegistry; -use PHPUnit\Metadata\TestWith; -use PHPUnit\Util\Test; -use ReflectionClass; -use ReflectionMethod; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class DataProvider -{ - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @throws InvalidDataProviderException - * - * @return ?array> - */ - public function providedData(string $className, string $methodName): ?array - { - $metadataCollection = MetadataRegistry::parser()->forMethod($className, $methodName); - $dataProvider = $metadataCollection->isDataProvider(); - $testWith = $metadataCollection->isTestWith(); - - if ($dataProvider->isEmpty() && $testWith->isEmpty()) { - return $this->dataProvidedByTestWithAnnotation($className, $methodName); - } - - if ($dataProvider->isNotEmpty()) { - $data = $this->dataProvidedByMethods($className, $methodName, $dataProvider); - } else { - $data = $this->dataProvidedByMetadata($testWith); - } - - if ($data === []) { - throw new InvalidDataProviderException( - 'Empty data set provided by data provider', - ); - } - - foreach ($data as $key => $value) { - if (!is_array($value)) { - throw new InvalidDataProviderException( - sprintf( - 'Data set %s is invalid, expected array but got %s', - is_int($key) ? '#' . $key : '"' . $key . '"', - get_debug_type($value), - ), - ); - } - } - - return $data; - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @throws InvalidDataProviderException - * - * @return array> - */ - private function dataProvidedByMethods(string $className, string $methodName, MetadataCollection $dataProvider): array - { - $testMethod = new Event\Code\ClassMethod($className, $methodName); - $methodsCalled = []; - $result = []; - - foreach ($dataProvider as $_dataProvider) { - assert($_dataProvider instanceof DataProviderMetadata); - - $dataProviderMethod = new Event\Code\ClassMethod($_dataProvider->className(), $_dataProvider->methodName()); - - Event\Facade::emitter()->dataProviderMethodCalled( - $testMethod, - $dataProviderMethod, - ); - - $methodsCalled[] = $dataProviderMethod; - - try { - $class = new ReflectionClass($_dataProvider->className()); - $method = $class->getMethod($_dataProvider->methodName()); - - if (Test::isTestMethod($method)) { - Event\Facade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Method %s::%s() used by test method %s::%s() is also a test method', - $_dataProvider->className(), - $_dataProvider->methodName(), - $className, - $methodName, - ), - ); - } - - if (!$method->isPublic()) { - throw new InvalidDataProviderException( - sprintf( - 'Data Provider method %s::%s() is not public', - $_dataProvider->className(), - $_dataProvider->methodName(), - ), - ); - } - - if (!$method->isStatic()) { - throw new InvalidDataProviderException( - sprintf( - 'Data Provider method %s::%s() is not static', - $_dataProvider->className(), - $_dataProvider->methodName(), - ), - ); - } - - if ($method->getNumberOfParameters() > 0) { - throw new InvalidDataProviderException( - sprintf( - 'Data Provider method %s::%s() expects an argument', - $_dataProvider->className(), - $_dataProvider->methodName(), - ), - ); - } - - $className = $_dataProvider->className(); - $methodName = $_dataProvider->methodName(); - $data = $className::$methodName(); - - foreach ($data as $key => $value) { - if (is_int($key)) { - $result[] = $value; - } elseif (is_string($key)) { - if (array_key_exists($key, $result)) { - throw new InvalidDataProviderException( - sprintf( - 'The key "%s" has already been defined by a previous data provider', - $key, - ), - ); - } - - $result[$key] = $value; - } else { - throw new InvalidDataProviderException( - sprintf( - 'The key must be an integer or a string, %s given', - get_debug_type($key), - ), - ); - } - } - } catch (Throwable $e) { - Event\Facade::emitter()->dataProviderMethodFinished( - $testMethod, - ...$methodsCalled, - ); - - throw new InvalidDataProviderException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } - - Event\Facade::emitter()->dataProviderMethodFinished( - $testMethod, - ...$methodsCalled, - ); - - return $result; - } - - /** - * @return array> - */ - private function dataProvidedByMetadata(MetadataCollection $testWith): array - { - $result = []; - - foreach ($testWith as $_testWith) { - assert($_testWith instanceof TestWith); - - if ($_testWith->hasName()) { - $key = $_testWith->name(); - - if (array_key_exists($key, $result)) { - throw new InvalidDataProviderException( - sprintf( - 'The key "%s" has already been defined by a previous TestWith attribute', - $key, - ), - ); - } - - $result[$key] = $_testWith->data(); - } else { - $result[] = $_testWith->data(); - } - } - - return $result; - } - - /** - * @param class-string $className - * - * @throws InvalidDataProviderException - * - * @return ?array> - */ - private function dataProvidedByTestWithAnnotation(string $className, string $methodName): ?array - { - $docComment = (new ReflectionMethod($className, $methodName))->getDocComment(); - - if ($docComment === false) { - return null; - } - - $docComment = str_replace("\r\n", "\n", $docComment); - $docComment = preg_replace('/\n\s*\*\s?/', "\n", $docComment); - $docComment = substr($docComment, 0, -1); - $docComment = rtrim($docComment, "\n"); - - if (!preg_match('/@testWith\s+/', $docComment, $matches, PREG_OFFSET_CAPTURE)) { - return null; - } - - $offset = strlen($matches[0][0]) + (int) $matches[0][1]; - $annotationContent = substr($docComment, $offset); - $data = []; - - foreach (explode("\n", $annotationContent) as $candidateRow) { - $candidateRow = trim($candidateRow); - - if ($candidateRow === '' || $candidateRow[0] !== '[') { - break; - } - - $dataSet = json_decode($candidateRow, true); - - if (json_last_error() !== JSON_ERROR_NONE) { - throw new InvalidDataProviderException( - 'The data set for the @testWith annotation cannot be parsed: ' . json_last_error_msg(), - ); - } - - $data[] = $dataSet; - } - - if (!$data) { - throw new InvalidDataProviderException( - 'The data set for the @testWith annotation cannot be parsed.', - ); - } - - return $data; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/Dependencies.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/Dependencies.php deleted file mode 100644 index 840708f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/Dependencies.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use function assert; -use PHPUnit\Framework\ExecutionOrderDependency; -use PHPUnit\Metadata\DependsOnClass; -use PHPUnit\Metadata\DependsOnMethod; -use PHPUnit\Metadata\Parser\Registry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Dependencies -{ - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @return list - */ - public static function dependencies(string $className, string $methodName): array - { - $dependencies = []; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName)->isDepends() as $metadata) { - if ($metadata->isDependsOnClass()) { - assert($metadata instanceof DependsOnClass); - - $dependencies[] = ExecutionOrderDependency::forClass($metadata); - - continue; - } - - assert($metadata instanceof DependsOnMethod); - - if (empty($metadata->methodName())) { - $dependencies[] = ExecutionOrderDependency::invalid(); - - continue; - } - - $dependencies[] = ExecutionOrderDependency::forMethod($metadata); - } - - return $dependencies; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/Groups.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/Groups.php deleted file mode 100644 index e5615ab..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/Groups.php +++ /dev/null @@ -1,140 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use function array_flip; -use function array_key_exists; -use function array_unique; -use function assert; -use function ltrim; -use function strtolower; -use function trim; -use PHPUnit\Framework\TestSize\TestSize; -use PHPUnit\Metadata\Covers; -use PHPUnit\Metadata\CoversClass; -use PHPUnit\Metadata\CoversFunction; -use PHPUnit\Metadata\Group; -use PHPUnit\Metadata\Parser\Registry; -use PHPUnit\Metadata\RequiresPhpExtension; -use PHPUnit\Metadata\Uses; -use PHPUnit\Metadata\UsesClass; -use PHPUnit\Metadata\UsesFunction; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Groups -{ - /** - * @var array> - */ - private static array $groupCache = []; - - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @return list - */ - public function groups(string $className, string $methodName, bool $includeVirtual = true): array - { - $key = $className . '::' . $methodName . '::' . $includeVirtual; - - if (array_key_exists($key, self::$groupCache)) { - return self::$groupCache[$key]; - } - - $groups = []; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName)->isGroup() as $group) { - assert($group instanceof Group); - - $groups[] = $group->groupName(); - } - - if (!$includeVirtual) { - return self::$groupCache[$key] = array_unique($groups); - } - - foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if ($metadata->isCoversClass() || $metadata->isCoversFunction()) { - /** @phpstan-ignore booleanOr.alwaysTrue */ - assert($metadata instanceof CoversClass || $metadata instanceof CoversFunction); - - $groups[] = '__phpunit_covers_' . $this->canonicalizeName(ltrim($metadata->asStringForCodeUnitMapper(), ':')); - - continue; - } - - if ($metadata->isCovers()) { - assert($metadata instanceof Covers); - - $groups[] = '__phpunit_covers_' . $this->canonicalizeName($metadata->target()); - - continue; - } - - if ($metadata->isUsesClass() || $metadata->isUsesFunction()) { - /** @phpstan-ignore booleanOr.alwaysTrue */ - assert($metadata instanceof UsesClass || $metadata instanceof UsesFunction); - - $groups[] = '__phpunit_uses_' . $this->canonicalizeName(ltrim($metadata->asStringForCodeUnitMapper(), ':')); - - continue; - } - - if ($metadata->isUses()) { - assert($metadata instanceof Uses); - - $groups[] = '__phpunit_uses_' . $this->canonicalizeName($metadata->target()); - } - - if ($metadata->isRequiresPhpExtension()) { - assert($metadata instanceof RequiresPhpExtension); - - $groups[] = '__phpunit_requires_php_extension' . $this->canonicalizeName($metadata->extension()); - } - } - - self::$groupCache[$key] = array_unique($groups); - - return self::$groupCache[$key]; - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function size(string $className, string $methodName): TestSize - { - $groups = array_flip($this->groups($className, $methodName)); - - if (isset($groups['large'])) { - return TestSize::large(); - } - - if (isset($groups['medium'])) { - return TestSize::medium(); - } - - if (isset($groups['small'])) { - return TestSize::small(); - } - - return TestSize::unknown(); - } - - private function canonicalizeName(string $name): string - { - return strtolower(trim($name, '\\')); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php deleted file mode 100644 index 3f93b5f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php +++ /dev/null @@ -1,137 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use function assert; -use function class_exists; -use PHPUnit\Framework\TestCase; -use PHPUnit\Metadata\After; -use PHPUnit\Metadata\AfterClass; -use PHPUnit\Metadata\Before; -use PHPUnit\Metadata\BeforeClass; -use PHPUnit\Metadata\Parser\Registry; -use PHPUnit\Metadata\PostCondition; -use PHPUnit\Metadata\PreCondition; -use PHPUnit\Runner\HookMethod; -use PHPUnit\Runner\HookMethodCollection; -use PHPUnit\Util\Reflection; -use ReflectionClass; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class HookMethods -{ - /** - * @var array - */ - private static array $hookMethods = []; - - /** - * @param class-string $className - * - * @return array{beforeClass: HookMethodCollection, before: HookMethodCollection, preCondition: HookMethodCollection, postCondition: HookMethodCollection, after: HookMethodCollection, afterClass: HookMethodCollection} - */ - public function hookMethods(string $className): array - { - if (!class_exists($className)) { - return self::emptyHookMethodsArray(); - } - - if (isset(self::$hookMethods[$className])) { - return self::$hookMethods[$className]; - } - - self::$hookMethods[$className] = self::emptyHookMethodsArray(); - - foreach (Reflection::methodsDeclaredDirectlyInTestClass(new ReflectionClass($className)) as $method) { - $methodName = $method->getName(); - - assert(!empty($methodName)); - - $metadata = Registry::parser()->forMethod($className, $methodName); - - if ($method->isStatic()) { - if ($metadata->isBeforeClass()->isNotEmpty()) { - $beforeClass = $metadata->isBeforeClass()->asArray()[0]; - assert($beforeClass instanceof BeforeClass); - - self::$hookMethods[$className]['beforeClass']->add( - new HookMethod($methodName, $beforeClass->priority()), - ); - } - - if ($metadata->isAfterClass()->isNotEmpty()) { - $afterClass = $metadata->isAfterClass()->asArray()[0]; - assert($afterClass instanceof AfterClass); - - self::$hookMethods[$className]['afterClass']->add( - new HookMethod($methodName, $afterClass->priority()), - ); - } - } - - if ($metadata->isBefore()->isNotEmpty()) { - $before = $metadata->isBefore()->asArray()[0]; - assert($before instanceof Before); - - self::$hookMethods[$className]['before']->add( - new HookMethod($methodName, $before->priority()), - ); - } - - if ($metadata->isPreCondition()->isNotEmpty()) { - $preCondition = $metadata->isPreCondition()->asArray()[0]; - assert($preCondition instanceof PreCondition); - - self::$hookMethods[$className]['preCondition']->add( - new HookMethod($methodName, $preCondition->priority()), - ); - } - - if ($metadata->isPostCondition()->isNotEmpty()) { - $postCondition = $metadata->isPostCondition()->asArray()[0]; - assert($postCondition instanceof PostCondition); - - self::$hookMethods[$className]['postCondition']->add( - new HookMethod($methodName, $postCondition->priority()), - ); - } - - if ($metadata->isAfter()->isNotEmpty()) { - $after = $metadata->isAfter()->asArray()[0]; - assert($after instanceof After); - - self::$hookMethods[$className]['after']->add( - new HookMethod($methodName, $after->priority()), - ); - } - } - - return self::$hookMethods[$className]; - } - - /** - * @return array{beforeClass: HookMethodCollection, before: HookMethodCollection, preCondition: HookMethodCollection, postCondition: HookMethodCollection, after: HookMethodCollection, afterClass: HookMethodCollection} - */ - private function emptyHookMethodsArray(): array - { - return [ - 'beforeClass' => HookMethodCollection::defaultBeforeClass(), - 'before' => HookMethodCollection::defaultBefore(), - 'preCondition' => HookMethodCollection::defaultPreCondition(), - 'postCondition' => HookMethodCollection::defaultPostCondition(), - 'after' => HookMethodCollection::defaultAfter(), - 'afterClass' => HookMethodCollection::defaultAfterClass(), - ]; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php deleted file mode 100644 index b647863..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php +++ /dev/null @@ -1,186 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Api; - -use const PHP_OS; -use const PHP_OS_FAMILY; -use const PHP_VERSION; -use function addcslashes; -use function array_column; -use function assert; -use function extension_loaded; -use function function_exists; -use function in_array; -use function ini_get; -use function method_exists; -use function phpversion; -use function preg_match; -use function sprintf; -use PHPUnit\Metadata\Parser\Registry; -use PHPUnit\Metadata\RequiresFunction; -use PHPUnit\Metadata\RequiresMethod; -use PHPUnit\Metadata\RequiresOperatingSystem; -use PHPUnit\Metadata\RequiresOperatingSystemFamily; -use PHPUnit\Metadata\RequiresPhp; -use PHPUnit\Metadata\RequiresPhpExtension; -use PHPUnit\Metadata\RequiresPhpunit; -use PHPUnit\Metadata\RequiresPhpunitExtension; -use PHPUnit\Metadata\RequiresSetting; -use PHPUnit\Runner\Version; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Requirements -{ - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @return list - */ - public function requirementsNotSatisfiedFor(string $className, string $methodName): array - { - $notSatisfied = []; - - foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if ($metadata->isRequiresPhp()) { - assert($metadata instanceof RequiresPhp); - - if (!$metadata->versionRequirement()->isSatisfiedBy(PHP_VERSION)) { - $notSatisfied[] = sprintf( - 'PHP %s is required.', - $metadata->versionRequirement()->asString(), - ); - } - } - - if ($metadata->isRequiresPhpExtension()) { - assert($metadata instanceof RequiresPhpExtension); - - if (!extension_loaded($metadata->extension()) || - ($metadata->hasVersionRequirement() && - !$metadata->versionRequirement()->isSatisfiedBy(phpversion($metadata->extension())))) { - $notSatisfied[] = sprintf( - 'PHP extension %s%s is required.', - $metadata->extension(), - $metadata->hasVersionRequirement() ? (' ' . $metadata->versionRequirement()->asString()) : '', - ); - } - } - - if ($metadata->isRequiresPhpunit()) { - assert($metadata instanceof RequiresPhpunit); - - if (!$metadata->versionRequirement()->isSatisfiedBy(Version::id())) { - $notSatisfied[] = sprintf( - 'PHPUnit %s is required.', - $metadata->versionRequirement()->asString(), - ); - } - } - - if ($metadata->isRequiresPhpunitExtension()) { - assert($metadata instanceof RequiresPhpunitExtension); - - $configuration = ConfigurationRegistry::get(); - - $extensionBootstrappers = array_column($configuration->extensionBootstrappers(), 'className'); - - if ($configuration->noExtensions() || !in_array($metadata->extensionClass(), $extensionBootstrappers, true)) { - $notSatisfied[] = sprintf( - 'PHPUnit extension "%s" is required.', - $metadata->extensionClass(), - ); - } - } - - if ($metadata->isRequiresOperatingSystemFamily()) { - assert($metadata instanceof RequiresOperatingSystemFamily); - - if ($metadata->operatingSystemFamily() !== PHP_OS_FAMILY) { - $notSatisfied[] = sprintf( - 'Operating system %s is required.', - $metadata->operatingSystemFamily(), - ); - } - } - - if ($metadata->isRequiresOperatingSystem()) { - assert($metadata instanceof RequiresOperatingSystem); - - $pattern = sprintf( - '/%s/i', - addcslashes($metadata->operatingSystem(), '/'), - ); - - if (!preg_match($pattern, PHP_OS)) { - $notSatisfied[] = sprintf( - 'Operating system %s is required.', - $metadata->operatingSystem(), - ); - } - } - - if ($metadata->isRequiresFunction()) { - assert($metadata instanceof RequiresFunction); - - if (!function_exists($metadata->functionName())) { - $notSatisfied[] = sprintf( - 'Function %s() is required.', - $metadata->functionName(), - ); - } - } - - if ($metadata->isRequiresMethod()) { - assert($metadata instanceof RequiresMethod); - - if (!method_exists($metadata->className(), $metadata->methodName())) { - $notSatisfied[] = sprintf( - 'Method %s::%s() is required.', - $metadata->className(), - $metadata->methodName(), - ); - } - } - - if ($metadata->isRequiresSetting()) { - assert($metadata instanceof RequiresSetting); - - if (ini_get($metadata->setting()) !== $metadata->value()) { - $notSatisfied[] = sprintf( - 'Setting "%s" is required to be "%s".', - $metadata->setting(), - $metadata->value(), - ); - } - } - } - - return $notSatisfied; - } - - public function requiresXdebug(string $className, string $methodName): bool - { - foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) { - if ($metadata->isRequiresPhpExtension()) { - if ($metadata->extension() === 'xdebug') { - return true; - } - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/BackupGlobals.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/BackupGlobals.php deleted file mode 100644 index 2a340e6..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/BackupGlobals.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class BackupGlobals extends Metadata -{ - private bool $enabled; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, bool $enabled) - { - parent::__construct($level); - - $this->enabled = $enabled; - } - - public function isBackupGlobals(): true - { - return true; - } - - public function enabled(): bool - { - return $this->enabled; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/BackupStaticProperties.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/BackupStaticProperties.php deleted file mode 100644 index 32f1644..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/BackupStaticProperties.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class BackupStaticProperties extends Metadata -{ - private bool $enabled; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, bool $enabled) - { - parent::__construct($level); - - $this->enabled = $enabled; - } - - public function isBackupStaticProperties(): true - { - return true; - } - - public function enabled(): bool - { - return $this->enabled; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Before.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Before.php deleted file mode 100644 index 6e9c4ba..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Before.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Before extends Metadata -{ - private int $priority; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, int $priority) - { - parent::__construct($level); - - $this->priority = $priority; - } - - public function isBefore(): true - { - return true; - } - - public function priority(): int - { - return $this->priority; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/BeforeClass.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/BeforeClass.php deleted file mode 100644 index b514564..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/BeforeClass.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class BeforeClass extends Metadata -{ - private int $priority; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, int $priority) - { - parent::__construct($level); - - $this->priority = $priority; - } - - public function isBeforeClass(): true - { - return true; - } - - public function priority(): int - { - return $this->priority; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Covers.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Covers.php deleted file mode 100644 index d9714be..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Covers.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Covers extends Metadata -{ - /** - * @var non-empty-string - */ - private string $target; - - /** - * @param 0|1 $level - * @param non-empty-string $target - */ - protected function __construct(int $level, string $target) - { - parent::__construct($level); - - $this->target = $target; - } - - public function isCovers(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function target(): string - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversClass.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversClass.php deleted file mode 100644 index cf379cd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversClass.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoversClass extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @param 0|1 $level - * @param class-string $className - */ - protected function __construct(int $level, string $className) - { - parent::__construct($level); - - $this->className = $className; - } - - public function isCoversClass(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @return class-string - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function asStringForCodeUnitMapper(): string - { - return $this->className; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversDefaultClass.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversDefaultClass.php deleted file mode 100644 index 84d0c7c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversDefaultClass.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoversDefaultClass extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @param 0|1 $level - * @param class-string $className - */ - protected function __construct(int $level, string $className) - { - parent::__construct($level); - - $this->className = $className; - } - - public function isCoversDefaultClass(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversFunction.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversFunction.php deleted file mode 100644 index f6dbb0d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversFunction.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoversFunction extends Metadata -{ - /** - * @var non-empty-string - */ - private string $functionName; - - /** - * @param 0|1 $level - * @param non-empty-string $functionName - */ - protected function __construct(int $level, string $functionName) - { - parent::__construct($level); - - $this->functionName = $functionName; - } - - public function isCoversFunction(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function functionName(): string - { - return $this->functionName; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function asStringForCodeUnitMapper(): string - { - return '::' . $this->functionName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversMethod.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversMethod.php deleted file mode 100644 index 7534863..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversMethod.php +++ /dev/null @@ -1,72 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoversMethod extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @var non-empty-string - */ - private string $methodName; - - /** - * @param 0|1 $level - * @param class-string $className - * @param non-empty-string $methodName - */ - protected function __construct(int $level, string $className, string $methodName) - { - parent::__construct($level); - - $this->className = $className; - $this->methodName = $methodName; - } - - public function isCoversMethod(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @return non-empty-string - */ - public function methodName(): string - { - return $this->methodName; - } - - /** - * @return non-empty-string - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function asStringForCodeUnitMapper(): string - { - return $this->className . '::' . $this->methodName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversNothing.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversNothing.php deleted file mode 100644 index c81e727..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversNothing.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoversNothing extends Metadata -{ - public function isCoversNothing(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversTrait.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversTrait.php deleted file mode 100644 index 68fafa1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/CoversTrait.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoversTrait extends Metadata -{ - /** - * @var trait-string - */ - private string $traitName; - - /** - * @param 0|1 $level - * @param trait-string $traitName - */ - protected function __construct(int $level, string $traitName) - { - parent::__construct($level); - - $this->traitName = $traitName; - } - - public function isCoversTrait(): true - { - return true; - } - - /** - * @return trait-string - */ - public function traitName(): string - { - return $this->traitName; - } - - /** - * @return trait-string - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function asStringForCodeUnitMapper(): string - { - return $this->traitName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DataProvider.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DataProvider.php deleted file mode 100644 index 58aab52..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DataProvider.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class DataProvider extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @var non-empty-string - */ - private string $methodName; - - /** - * @param 0|1 $level - * @param class-string $className - * @param non-empty-string $methodName - */ - protected function __construct(int $level, string $className, string $methodName) - { - parent::__construct($level); - - $this->className = $className; - $this->methodName = $methodName; - } - - public function isDataProvider(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @return non-empty-string - */ - public function methodName(): string - { - return $this->methodName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DependsOnClass.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DependsOnClass.php deleted file mode 100644 index ba02c4d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DependsOnClass.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class DependsOnClass extends Metadata -{ - /** - * @var class-string - */ - private string $className; - private bool $deepClone; - private bool $shallowClone; - - /** - * @param 0|1 $level - * @param class-string $className - */ - protected function __construct(int $level, string $className, bool $deepClone, bool $shallowClone) - { - parent::__construct($level); - - $this->className = $className; - $this->deepClone = $deepClone; - $this->shallowClone = $shallowClone; - } - - public function isDependsOnClass(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } - - public function deepClone(): bool - { - return $this->deepClone; - } - - public function shallowClone(): bool - { - return $this->shallowClone; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DependsOnMethod.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DependsOnMethod.php deleted file mode 100644 index 433d263..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DependsOnMethod.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class DependsOnMethod extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @var non-empty-string - */ - private string $methodName; - private bool $deepClone; - private bool $shallowClone; - - /** - * @param 0|1 $level - * @param class-string $className - * @param non-empty-string $methodName - */ - protected function __construct(int $level, string $className, string $methodName, bool $deepClone, bool $shallowClone) - { - parent::__construct($level); - - $this->className = $className; - $this->methodName = $methodName; - $this->deepClone = $deepClone; - $this->shallowClone = $shallowClone; - } - - public function isDependsOnMethod(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @return non-empty-string - */ - public function methodName(): string - { - return $this->methodName; - } - - public function deepClone(): bool - { - return $this->deepClone; - } - - public function shallowClone(): bool - { - return $this->shallowClone; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DisableReturnValueGenerationForTestDoubles.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DisableReturnValueGenerationForTestDoubles.php deleted file mode 100644 index 59cf34e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DisableReturnValueGenerationForTestDoubles.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class DisableReturnValueGenerationForTestDoubles extends Metadata -{ - public function isDisableReturnValueGenerationForTestDoubles(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DoesNotPerformAssertions.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DoesNotPerformAssertions.php deleted file mode 100644 index e2925c8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/DoesNotPerformAssertions.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class DoesNotPerformAssertions extends Metadata -{ - public function isDoesNotPerformAssertions(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php deleted file mode 100644 index bd02bac..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use function sprintf; -use PHPUnit\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class AnnotationsAreNotSupportedForInternalClassesException extends RuntimeException implements Exception -{ - /** - * @param class-string $className - */ - public function __construct(string $className) - { - parent::__construct( - sprintf( - 'Annotations can only be parsed for user-defined classes, trying to parse annotations for class "%s"', - $className, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/Exception.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/Exception.php deleted file mode 100644 index 5d562f1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/Exception.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends \PHPUnit\Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/InvalidAttributeException.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/InvalidAttributeException.php deleted file mode 100644 index 9158de3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/InvalidAttributeException.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use const PHP_EOL; -use function sprintf; -use PHPUnit\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidAttributeException extends RuntimeException implements Exception -{ - /** - * @param non-empty-string $attributeName - * @param non-empty-string $target - * @param non-empty-string $file - * @param positive-int $line - * @param non-empty-string $message - */ - public function __construct(string $attributeName, string $target, string $file, int $line, string $message) - { - parent::__construct( - sprintf( - 'Invalid attribute %s for %s in %s:%d%s%s', - $attributeName, - $target, - $file, - $line, - PHP_EOL, - $message, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php deleted file mode 100644 index 359f723..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidVersionRequirementException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php deleted file mode 100644 index 299652c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/NoVersionRequirementException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class NoVersionRequirementException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php deleted file mode 100644 index 04e0d22..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Exception/ReflectionException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use PHPUnit\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ReflectionException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php deleted file mode 100644 index 65a606e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ExcludeGlobalVariableFromBackup extends Metadata -{ - /** - * @var non-empty-string - */ - private string $globalVariableName; - - /** - * @param 0|1 $level - * @param non-empty-string $globalVariableName - */ - protected function __construct(int $level, string $globalVariableName) - { - parent::__construct($level); - - $this->globalVariableName = $globalVariableName; - } - - public function isExcludeGlobalVariableFromBackup(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function globalVariableName(): string - { - return $this->globalVariableName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php deleted file mode 100644 index ff170da..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ExcludeStaticPropertyFromBackup extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @var non-empty-string - */ - private string $propertyName; - - /** - * @param 0|1 $level - * @param class-string $className - * @param non-empty-string $propertyName - */ - protected function __construct(int $level, string $className, string $propertyName) - { - parent::__construct($level); - - $this->className = $className; - $this->propertyName = $propertyName; - } - - public function isExcludeStaticPropertyFromBackup(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @return non-empty-string - */ - public function propertyName(): string - { - return $this->propertyName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Group.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Group.php deleted file mode 100644 index da269f3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Group.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Group extends Metadata -{ - /** - * @var non-empty-string - */ - private string $groupName; - - /** - * @param 0|1 $level - * @param non-empty-string $groupName - */ - protected function __construct(int $level, string $groupName) - { - parent::__construct($level); - - $this->groupName = $groupName; - } - - public function isGroup(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function groupName(): string - { - return $this->groupName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/IgnoreDeprecations.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/IgnoreDeprecations.php deleted file mode 100644 index e1f85a8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/IgnoreDeprecations.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class IgnoreDeprecations extends Metadata -{ - public function isIgnoreDeprecations(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/IgnorePhpunitDeprecations.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/IgnorePhpunitDeprecations.php deleted file mode 100644 index 5abcfa4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/IgnorePhpunitDeprecations.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class IgnorePhpunitDeprecations extends Metadata -{ - public function isIgnorePhpunitDeprecations(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Metadata.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Metadata.php deleted file mode 100644 index c181006..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Metadata.php +++ /dev/null @@ -1,919 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use PHPUnit\Metadata\Version\Requirement; -use PHPUnit\Runner\Extension\Extension; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class Metadata -{ - private const CLASS_LEVEL = 0; - private const METHOD_LEVEL = 1; - - /** - * @var 0|1 - */ - private int $level; - - public static function after(int $priority): After - { - return new After(self::METHOD_LEVEL, $priority); - } - - public static function afterClass(int $priority): AfterClass - { - return new AfterClass(self::METHOD_LEVEL, $priority); - } - - public static function backupGlobalsOnClass(bool $enabled): BackupGlobals - { - return new BackupGlobals(self::CLASS_LEVEL, $enabled); - } - - public static function backupGlobalsOnMethod(bool $enabled): BackupGlobals - { - return new BackupGlobals(self::METHOD_LEVEL, $enabled); - } - - public static function backupStaticPropertiesOnClass(bool $enabled): BackupStaticProperties - { - return new BackupStaticProperties(self::CLASS_LEVEL, $enabled); - } - - public static function backupStaticPropertiesOnMethod(bool $enabled): BackupStaticProperties - { - return new BackupStaticProperties(self::METHOD_LEVEL, $enabled); - } - - public static function before(int $priority): Before - { - return new Before(self::METHOD_LEVEL, $priority); - } - - public static function beforeClass(int $priority): BeforeClass - { - return new BeforeClass(self::METHOD_LEVEL, $priority); - } - - /** - * @param class-string $className - */ - public static function coversClass(string $className): CoversClass - { - return new CoversClass(self::CLASS_LEVEL, $className); - } - - /** - * @param trait-string $traitName - */ - public static function coversTrait(string $traitName): CoversTrait - { - return new CoversTrait(self::CLASS_LEVEL, $traitName); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public static function coversMethod(string $className, string $methodName): CoversMethod - { - return new CoversMethod(self::CLASS_LEVEL, $className, $methodName); - } - - /** - * @param non-empty-string $functionName - */ - public static function coversFunction(string $functionName): CoversFunction - { - return new CoversFunction(self::CLASS_LEVEL, $functionName); - } - - /** - * @param non-empty-string $target - */ - public static function coversOnClass(string $target): Covers - { - return new Covers(self::CLASS_LEVEL, $target); - } - - /** - * @param non-empty-string $target - */ - public static function coversOnMethod(string $target): Covers - { - return new Covers(self::METHOD_LEVEL, $target); - } - - /** - * @param class-string $className - */ - public static function coversDefaultClass(string $className): CoversDefaultClass - { - return new CoversDefaultClass(self::CLASS_LEVEL, $className); - } - - public static function coversNothingOnClass(): CoversNothing - { - return new CoversNothing(self::CLASS_LEVEL); - } - - public static function coversNothingOnMethod(): CoversNothing - { - return new CoversNothing(self::METHOD_LEVEL); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public static function dataProvider(string $className, string $methodName): DataProvider - { - return new DataProvider(self::METHOD_LEVEL, $className, $methodName); - } - - /** - * @param class-string $className - */ - public static function dependsOnClass(string $className, bool $deepClone, bool $shallowClone): DependsOnClass - { - return new DependsOnClass(self::METHOD_LEVEL, $className, $deepClone, $shallowClone); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public static function dependsOnMethod(string $className, string $methodName, bool $deepClone, bool $shallowClone): DependsOnMethod - { - return new DependsOnMethod(self::METHOD_LEVEL, $className, $methodName, $deepClone, $shallowClone); - } - - public static function disableReturnValueGenerationForTestDoubles(): DisableReturnValueGenerationForTestDoubles - { - return new DisableReturnValueGenerationForTestDoubles(self::CLASS_LEVEL); - } - - public static function doesNotPerformAssertionsOnClass(): DoesNotPerformAssertions - { - return new DoesNotPerformAssertions(self::CLASS_LEVEL); - } - - public static function doesNotPerformAssertionsOnMethod(): DoesNotPerformAssertions - { - return new DoesNotPerformAssertions(self::METHOD_LEVEL); - } - - /** - * @param non-empty-string $globalVariableName - */ - public static function excludeGlobalVariableFromBackupOnClass(string $globalVariableName): ExcludeGlobalVariableFromBackup - { - return new ExcludeGlobalVariableFromBackup(self::CLASS_LEVEL, $globalVariableName); - } - - /** - * @param non-empty-string $globalVariableName - */ - public static function excludeGlobalVariableFromBackupOnMethod(string $globalVariableName): ExcludeGlobalVariableFromBackup - { - return new ExcludeGlobalVariableFromBackup(self::METHOD_LEVEL, $globalVariableName); - } - - /** - * @param class-string $className - * @param non-empty-string $propertyName - */ - public static function excludeStaticPropertyFromBackupOnClass(string $className, string $propertyName): ExcludeStaticPropertyFromBackup - { - return new ExcludeStaticPropertyFromBackup(self::CLASS_LEVEL, $className, $propertyName); - } - - /** - * @param class-string $className - * @param non-empty-string $propertyName - */ - public static function excludeStaticPropertyFromBackupOnMethod(string $className, string $propertyName): ExcludeStaticPropertyFromBackup - { - return new ExcludeStaticPropertyFromBackup(self::METHOD_LEVEL, $className, $propertyName); - } - - /** - * @param non-empty-string $groupName - */ - public static function groupOnClass(string $groupName): Group - { - return new Group(self::CLASS_LEVEL, $groupName); - } - - /** - * @param non-empty-string $groupName - */ - public static function groupOnMethod(string $groupName): Group - { - return new Group(self::METHOD_LEVEL, $groupName); - } - - public static function ignoreDeprecationsOnClass(): IgnoreDeprecations - { - return new IgnoreDeprecations(self::CLASS_LEVEL); - } - - public static function ignoreDeprecationsOnMethod(): IgnoreDeprecations - { - return new IgnoreDeprecations(self::METHOD_LEVEL); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public static function ignorePhpunitDeprecationsOnClass(): IgnorePhpunitDeprecations - { - return new IgnorePhpunitDeprecations(self::CLASS_LEVEL); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public static function ignorePhpunitDeprecationsOnMethod(): IgnorePhpunitDeprecations - { - return new IgnorePhpunitDeprecations(self::METHOD_LEVEL); - } - - public static function postCondition(int $priority): PostCondition - { - return new PostCondition(self::METHOD_LEVEL, $priority); - } - - public static function preCondition(int $priority): PreCondition - { - return new PreCondition(self::METHOD_LEVEL, $priority); - } - - public static function preserveGlobalStateOnClass(bool $enabled): PreserveGlobalState - { - return new PreserveGlobalState(self::CLASS_LEVEL, $enabled); - } - - public static function preserveGlobalStateOnMethod(bool $enabled): PreserveGlobalState - { - return new PreserveGlobalState(self::METHOD_LEVEL, $enabled); - } - - /** - * @param non-empty-string $functionName - */ - public static function requiresFunctionOnClass(string $functionName): RequiresFunction - { - return new RequiresFunction(self::CLASS_LEVEL, $functionName); - } - - /** - * @param non-empty-string $functionName - */ - public static function requiresFunctionOnMethod(string $functionName): RequiresFunction - { - return new RequiresFunction(self::METHOD_LEVEL, $functionName); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public static function requiresMethodOnClass(string $className, string $methodName): RequiresMethod - { - return new RequiresMethod(self::CLASS_LEVEL, $className, $methodName); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public static function requiresMethodOnMethod(string $className, string $methodName): RequiresMethod - { - return new RequiresMethod(self::METHOD_LEVEL, $className, $methodName); - } - - /** - * @param non-empty-string $operatingSystem - */ - public static function requiresOperatingSystemOnClass(string $operatingSystem): RequiresOperatingSystem - { - return new RequiresOperatingSystem(self::CLASS_LEVEL, $operatingSystem); - } - - /** - * @param non-empty-string $operatingSystem - */ - public static function requiresOperatingSystemOnMethod(string $operatingSystem): RequiresOperatingSystem - { - return new RequiresOperatingSystem(self::METHOD_LEVEL, $operatingSystem); - } - - /** - * @param non-empty-string $operatingSystemFamily - */ - public static function requiresOperatingSystemFamilyOnClass(string $operatingSystemFamily): RequiresOperatingSystemFamily - { - return new RequiresOperatingSystemFamily(self::CLASS_LEVEL, $operatingSystemFamily); - } - - /** - * @param non-empty-string $operatingSystemFamily - */ - public static function requiresOperatingSystemFamilyOnMethod(string $operatingSystemFamily): RequiresOperatingSystemFamily - { - return new RequiresOperatingSystemFamily(self::METHOD_LEVEL, $operatingSystemFamily); - } - - public static function requiresPhpOnClass(Requirement $versionRequirement): RequiresPhp - { - return new RequiresPhp(self::CLASS_LEVEL, $versionRequirement); - } - - public static function requiresPhpOnMethod(Requirement $versionRequirement): RequiresPhp - { - return new RequiresPhp(self::METHOD_LEVEL, $versionRequirement); - } - - /** - * @param non-empty-string $extension - */ - public static function requiresPhpExtensionOnClass(string $extension, ?Requirement $versionRequirement): RequiresPhpExtension - { - return new RequiresPhpExtension(self::CLASS_LEVEL, $extension, $versionRequirement); - } - - /** - * @param non-empty-string $extension - */ - public static function requiresPhpExtensionOnMethod(string $extension, ?Requirement $versionRequirement): RequiresPhpExtension - { - return new RequiresPhpExtension(self::METHOD_LEVEL, $extension, $versionRequirement); - } - - public static function requiresPhpunitOnClass(Requirement $versionRequirement): RequiresPhpunit - { - return new RequiresPhpunit(self::CLASS_LEVEL, $versionRequirement); - } - - public static function requiresPhpunitOnMethod(Requirement $versionRequirement): RequiresPhpunit - { - return new RequiresPhpunit(self::METHOD_LEVEL, $versionRequirement); - } - - /** - * @param class-string $extensionClass - */ - public static function requiresPhpunitExtensionOnClass(string $extensionClass): RequiresPhpunitExtension - { - return new RequiresPhpunitExtension(self::CLASS_LEVEL, $extensionClass); - } - - /** - * @param class-string $extensionClass - */ - public static function requiresPhpunitExtensionOnMethod(string $extensionClass): RequiresPhpunitExtension - { - return new RequiresPhpunitExtension(self::METHOD_LEVEL, $extensionClass); - } - - /** - * @param non-empty-string $setting - * @param non-empty-string $value - */ - public static function requiresSettingOnClass(string $setting, string $value): RequiresSetting - { - return new RequiresSetting(self::CLASS_LEVEL, $setting, $value); - } - - /** - * @param non-empty-string $setting - * @param non-empty-string $value - */ - public static function requiresSettingOnMethod(string $setting, string $value): RequiresSetting - { - return new RequiresSetting(self::METHOD_LEVEL, $setting, $value); - } - - public static function runClassInSeparateProcess(): RunClassInSeparateProcess - { - return new RunClassInSeparateProcess(self::CLASS_LEVEL); - } - - public static function runTestsInSeparateProcesses(): RunTestsInSeparateProcesses - { - return new RunTestsInSeparateProcesses(self::CLASS_LEVEL); - } - - public static function runInSeparateProcess(): RunInSeparateProcess - { - return new RunInSeparateProcess(self::METHOD_LEVEL); - } - - public static function test(): Test - { - return new Test(self::METHOD_LEVEL); - } - - /** - * @param non-empty-string $text - */ - public static function testDoxOnClass(string $text): TestDox - { - return new TestDox(self::CLASS_LEVEL, $text); - } - - /** - * @param non-empty-string $text - */ - public static function testDoxOnMethod(string $text): TestDox - { - return new TestDox(self::METHOD_LEVEL, $text); - } - - /** - * @param ?non-empty-string $name - */ - public static function testWith(mixed $data, ?string $name = null): TestWith - { - return new TestWith(self::METHOD_LEVEL, $data, $name); - } - - /** - * @param class-string $className - */ - public static function usesClass(string $className): UsesClass - { - return new UsesClass(self::CLASS_LEVEL, $className); - } - - /** - * @param trait-string $traitName - */ - public static function usesTrait(string $traitName): UsesTrait - { - return new UsesTrait(self::CLASS_LEVEL, $traitName); - } - - /** - * @param non-empty-string $functionName - */ - public static function usesFunction(string $functionName): UsesFunction - { - return new UsesFunction(self::CLASS_LEVEL, $functionName); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public static function usesMethod(string $className, string $methodName): UsesMethod - { - return new UsesMethod(self::CLASS_LEVEL, $className, $methodName); - } - - /** - * @param non-empty-string $target - */ - public static function usesOnClass(string $target): Uses - { - return new Uses(self::CLASS_LEVEL, $target); - } - - /** - * @param non-empty-string $target - */ - public static function usesOnMethod(string $target): Uses - { - return new Uses(self::METHOD_LEVEL, $target); - } - - /** - * @param class-string $className - */ - public static function usesDefaultClass(string $className): UsesDefaultClass - { - return new UsesDefaultClass(self::CLASS_LEVEL, $className); - } - - public static function withoutErrorHandler(): WithoutErrorHandler - { - return new WithoutErrorHandler(self::METHOD_LEVEL); - } - - /** - * @param 0|1 $level - */ - protected function __construct(int $level) - { - $this->level = $level; - } - - public function isClassLevel(): bool - { - return $this->level === self::CLASS_LEVEL; - } - - public function isMethodLevel(): bool - { - return $this->level === self::METHOD_LEVEL; - } - - /** - * @phpstan-assert-if-true After $this - */ - public function isAfter(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true AfterClass $this - */ - public function isAfterClass(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true BackupGlobals $this - */ - public function isBackupGlobals(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true BackupStaticProperties $this - */ - public function isBackupStaticProperties(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true BeforeClass $this - */ - public function isBeforeClass(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true Before $this - */ - public function isBefore(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true Covers $this - */ - public function isCovers(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true CoversClass $this - */ - public function isCoversClass(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true CoversDefaultClass $this - */ - public function isCoversDefaultClass(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true CoversTrait $this - */ - public function isCoversTrait(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true CoversFunction $this - */ - public function isCoversFunction(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true CoversMethod $this - */ - public function isCoversMethod(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true CoversNothing $this - */ - public function isCoversNothing(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true DataProvider $this - */ - public function isDataProvider(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true DependsOnClass $this - */ - public function isDependsOnClass(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true DependsOnMethod $this - */ - public function isDependsOnMethod(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true DisableReturnValueGenerationForTestDoubles $this - */ - public function isDisableReturnValueGenerationForTestDoubles(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true DoesNotPerformAssertions $this - */ - public function isDoesNotPerformAssertions(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true ExcludeGlobalVariableFromBackup $this - */ - public function isExcludeGlobalVariableFromBackup(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true ExcludeStaticPropertyFromBackup $this - */ - public function isExcludeStaticPropertyFromBackup(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true Group $this - */ - public function isGroup(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true IgnoreDeprecations $this - */ - public function isIgnoreDeprecations(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true IgnorePhpunitDeprecations $this - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function isIgnorePhpunitDeprecations(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RunClassInSeparateProcess $this - */ - public function isRunClassInSeparateProcess(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RunInSeparateProcess $this - */ - public function isRunInSeparateProcess(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RunTestsInSeparateProcesses $this - */ - public function isRunTestsInSeparateProcesses(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true Test $this - */ - public function isTest(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true PreCondition $this - */ - public function isPreCondition(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true PostCondition $this - */ - public function isPostCondition(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true PreserveGlobalState $this - */ - public function isPreserveGlobalState(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RequiresMethod $this - */ - public function isRequiresMethod(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RequiresFunction $this - */ - public function isRequiresFunction(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RequiresOperatingSystem $this - */ - public function isRequiresOperatingSystem(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RequiresOperatingSystemFamily $this - */ - public function isRequiresOperatingSystemFamily(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RequiresPhp $this - */ - public function isRequiresPhp(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RequiresPhpExtension $this - */ - public function isRequiresPhpExtension(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RequiresPhpunit $this - */ - public function isRequiresPhpunit(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RequiresPhpunitExtension $this - */ - public function isRequiresPhpunitExtension(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true RequiresSetting $this - */ - public function isRequiresSetting(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true TestDox $this - */ - public function isTestDox(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true TestWith $this - */ - public function isTestWith(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true Uses $this - */ - public function isUses(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true UsesClass $this - */ - public function isUsesClass(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true UsesDefaultClass $this - */ - public function isUsesDefaultClass(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true UsesTrait $this - */ - public function isUsesTrait(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true UsesFunction $this - */ - public function isUsesFunction(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true UsesMethod $this - */ - public function isUsesMethod(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true WithoutErrorHandler $this - */ - public function isWithoutErrorHandler(): bool - { - return false; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/MetadataCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/MetadataCollection.php deleted file mode 100644 index 44cce5a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/MetadataCollection.php +++ /dev/null @@ -1,595 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use function array_filter; -use function array_merge; -use function count; -use Countable; -use IteratorAggregate; - -/** - * @template-implements IteratorAggregate - * - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class MetadataCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $metadata; - - /** - * @param list $metadata - */ - public static function fromArray(array $metadata): self - { - return new self(...$metadata); - } - - private function __construct(Metadata ...$metadata) - { - $this->metadata = $metadata; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->metadata; - } - - public function count(): int - { - return count($this->metadata); - } - - public function isEmpty(): bool - { - return $this->count() === 0; - } - - public function isNotEmpty(): bool - { - return $this->count() > 0; - } - - public function getIterator(): MetadataCollectionIterator - { - return new MetadataCollectionIterator($this); - } - - public function mergeWith(self $other): self - { - return new self( - ...array_merge( - $this->asArray(), - $other->asArray(), - ), - ); - } - - public function isClassLevel(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isClassLevel(), - ), - ); - } - - public function isMethodLevel(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isMethodLevel(), - ), - ); - } - - public function isAfter(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isAfter(), - ), - ); - } - - public function isAfterClass(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isAfterClass(), - ), - ); - } - - public function isBackupGlobals(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isBackupGlobals(), - ), - ); - } - - public function isBackupStaticProperties(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isBackupStaticProperties(), - ), - ); - } - - public function isBeforeClass(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isBeforeClass(), - ), - ); - } - - public function isBefore(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isBefore(), - ), - ); - } - - public function isCovers(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCovers(), - ), - ); - } - - public function isCoversClass(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversClass(), - ), - ); - } - - public function isCoversDefaultClass(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversDefaultClass(), - ), - ); - } - - public function isCoversTrait(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversTrait(), - ), - ); - } - - public function isCoversFunction(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversFunction(), - ), - ); - } - - public function isCoversMethod(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversMethod(), - ), - ); - } - - public function isExcludeGlobalVariableFromBackup(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isExcludeGlobalVariableFromBackup(), - ), - ); - } - - public function isExcludeStaticPropertyFromBackup(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isExcludeStaticPropertyFromBackup(), - ), - ); - } - - public function isCoversNothing(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversNothing(), - ), - ); - } - - public function isDataProvider(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDataProvider(), - ), - ); - } - - public function isDepends(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDependsOnClass() || $metadata->isDependsOnMethod(), - ), - ); - } - - public function isDependsOnClass(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDependsOnClass(), - ), - ); - } - - public function isDependsOnMethod(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDependsOnMethod(), - ), - ); - } - - public function isDisableReturnValueGenerationForTestDoubles(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDisableReturnValueGenerationForTestDoubles(), - ), - ); - } - - public function isDoesNotPerformAssertions(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDoesNotPerformAssertions(), - ), - ); - } - - public function isGroup(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isGroup(), - ), - ); - } - - public function isIgnoreDeprecations(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isIgnoreDeprecations(), - ), - ); - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function isIgnorePhpunitDeprecations(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isIgnorePhpunitDeprecations(), - ), - ); - } - - public function isRunClassInSeparateProcess(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRunClassInSeparateProcess(), - ), - ); - } - - public function isRunInSeparateProcess(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRunInSeparateProcess(), - ), - ); - } - - public function isRunTestsInSeparateProcesses(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRunTestsInSeparateProcesses(), - ), - ); - } - - public function isTest(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isTest(), - ), - ); - } - - public function isPreCondition(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isPreCondition(), - ), - ); - } - - public function isPostCondition(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isPostCondition(), - ), - ); - } - - public function isPreserveGlobalState(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isPreserveGlobalState(), - ), - ); - } - - public function isRequiresMethod(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresMethod(), - ), - ); - } - - public function isRequiresFunction(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresFunction(), - ), - ); - } - - public function isRequiresOperatingSystem(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresOperatingSystem(), - ), - ); - } - - public function isRequiresOperatingSystemFamily(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresOperatingSystemFamily(), - ), - ); - } - - public function isRequiresPhp(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresPhp(), - ), - ); - } - - public function isRequiresPhpExtension(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresPhpExtension(), - ), - ); - } - - public function isRequiresPhpunit(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresPhpunit(), - ), - ); - } - - public function isRequiresPhpunitExtension(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresPhpunitExtension(), - ), - ); - } - - public function isRequiresSetting(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresSetting(), - ), - ); - } - - public function isTestDox(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isTestDox(), - ), - ); - } - - public function isTestWith(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isTestWith(), - ), - ); - } - - public function isUses(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUses(), - ), - ); - } - - public function isUsesClass(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUsesClass(), - ), - ); - } - - public function isUsesDefaultClass(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUsesDefaultClass(), - ), - ); - } - - public function isUsesTrait(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUsesTrait(), - ), - ); - } - - public function isUsesFunction(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUsesFunction(), - ), - ); - } - - public function isUsesMethod(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUsesMethod(), - ), - ); - } - - public function isWithoutErrorHandler(): self - { - return new self( - ...array_filter( - $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isWithoutErrorHandler(), - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php deleted file mode 100644 index 8043fe6..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/MetadataCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use function count; -use Iterator; - -/** - * @template-implements Iterator - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class MetadataCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $metadata; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(MetadataCollection $metadata) - { - $this->metadata = $metadata->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->metadata); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): Metadata - { - return $this->metadata[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php deleted file mode 100644 index c4421c9..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php +++ /dev/null @@ -1,277 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Annotation\Parser; - -use function array_filter; -use function array_map; -use function array_merge; -use function array_values; -use function count; -use function preg_match; -use function preg_match_all; -use function preg_replace; -use function preg_split; -use function realpath; -use function substr; -use function trim; -use PharIo\Version\Exception as PharIoVersionException; -use PharIo\Version\VersionConstraintParser; -use PHPUnit\Metadata\AnnotationsAreNotSupportedForInternalClassesException; -use PHPUnit\Metadata\InvalidVersionRequirementException; -use ReflectionClass; -use ReflectionFunctionAbstract; -use ReflectionMethod; - -/** - * This is an abstraction around a PHPUnit-specific docBlock, - * allowing us to ask meaningful questions about a specific - * reflection symbol. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DocBlock -{ - private const REGEX_REQUIRES_VERSION = '/@requires\s+(?PPHP(?:Unit)?)\s+(?P[<>=!]{0,2})\s*(?P[\d\.-]+(dev|(RC|alpha|beta)[\d\.])?)[ \t]*\r?$/m'; - private const REGEX_REQUIRES_VERSION_CONSTRAINT = '/@requires\s+(?PPHP(?:Unit)?)\s+(?P[\d\t \-.|~^]+)[ \t]*\r?$/m'; - private const REGEX_REQUIRES_OS = '/@requires\s+(?POS(?:FAMILY)?)\s+(?P.+?)[ \t]*\r?$/m'; - private const REGEX_REQUIRES_SETTING = '/@requires\s+(?Psetting)\s+(?P([^ ]+?))\s*(?P[\w\.-]+[\w\.]?)?[ \t]*\r?$/m'; - private const REGEX_REQUIRES = '/@requires\s+(?Pfunction|extension)\s+(?P([^\s<>=!]+))\s*(?P[<>=!]{0,2})\s*(?P[\d\.-]+[\d\.]?)?[ \t]*\r?$/m'; - private readonly string $docComment; - - /** - * @var array> pre-parsed annotations indexed by name and occurrence index - */ - private readonly array $symbolAnnotations; - - /** - * @psalm-var null|(array{ - * __OFFSET: array&array{__FILE: string}, - * setting?: array, - * extension_versions?: array - * }&array< - * string, - * string|array{version: string, operator: string}|array{constraint: string}|array - * >) - * - * @phpstan-ignore missingType.iterableValue - */ - private ?array $parsedRequirements = null; - private readonly int $startLine; - private readonly string $fileName; - - /** - * @throws AnnotationsAreNotSupportedForInternalClassesException - * - * @phpstan-ignore missingType.generics - */ - public static function ofClass(ReflectionClass $class): self - { - if ($class->isInternal()) { - throw new AnnotationsAreNotSupportedForInternalClassesException($class->getName()); - } - - return new self( - (string) $class->getDocComment(), - self::extractAnnotationsFromReflector($class), - $class->getStartLine(), - $class->getFileName(), - ); - } - - /** - * @throws AnnotationsAreNotSupportedForInternalClassesException - */ - public static function ofMethod(ReflectionMethod $method): self - { - if ($method->getDeclaringClass()->isInternal()) { - throw new AnnotationsAreNotSupportedForInternalClassesException($method->getDeclaringClass()->getName()); - } - - return new self( - (string) $method->getDocComment(), - self::extractAnnotationsFromReflector($method), - $method->getStartLine(), - $method->getFileName(), - ); - } - - /** - * Note: we do not preserve an instance of the reflection object, since it cannot be safely (de-)serialized. - * - * @param array> $symbolAnnotations - */ - private function __construct(string $docComment, array $symbolAnnotations, int $startLine, string $fileName) - { - $this->docComment = $docComment; - $this->symbolAnnotations = $symbolAnnotations; - $this->startLine = $startLine; - $this->fileName = $fileName; - } - - /** - * @psalm-return array{ - * __OFFSET: array&array{__FILE: string}, - * setting?: array, - * extension_versions?: array - * }&array< - * string, - * string|array{version: string, operator: string}|array{constraint: string}|array - * > - * - * @phpstan-ignore missingType.iterableValue - */ - public function requirements(): array - { - if ($this->parsedRequirements !== null) { - return $this->parsedRequirements; - } - - $offset = $this->startLine; - $requires = []; - $recordedSettings = []; - $extensionVersions = []; - $recordedOffsets = [ - '__FILE' => realpath($this->fileName), - ]; - - // Trim docblock markers, split it into lines and rewind offset to start of docblock - $lines = preg_replace(['#^/\*{2}#', '#\*/$#'], '', preg_split('/\r\n|\r|\n/', $this->docComment)); - $offset -= count($lines); - - foreach ($lines as $line) { - if (preg_match(self::REGEX_REQUIRES_OS, $line, $matches)) { - $requires[$matches['name']] = $matches['value']; - $recordedOffsets[$matches['name']] = $offset; - } - - if (preg_match(self::REGEX_REQUIRES_VERSION, $line, $matches)) { - $requires[$matches['name']] = [ - 'version' => $matches['version'], - 'operator' => $matches['operator'], - ]; - - $recordedOffsets[$matches['name']] = $offset; - } - - if (preg_match(self::REGEX_REQUIRES_VERSION_CONSTRAINT, $line, $matches)) { - if (!empty($requires[$matches['name']])) { - $offset++; - - continue; - } - - try { - $versionConstraintParser = new VersionConstraintParser; - - $requires[$matches['name'] . '_constraint'] = [ - 'constraint' => $versionConstraintParser->parse(trim($matches['constraint'])), - ]; - - $recordedOffsets[$matches['name'] . '_constraint'] = $offset; - } catch (PharIoVersionException $e) { - throw new InvalidVersionRequirementException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } - - if (preg_match(self::REGEX_REQUIRES_SETTING, $line, $matches)) { - $recordedSettings[$matches['setting']] = $matches['value']; - $recordedOffsets['__SETTING_' . $matches['setting']] = $offset; - } - - if (preg_match(self::REGEX_REQUIRES, $line, $matches)) { - $name = $matches['name'] . 's'; - - if (!isset($requires[$name])) { - $requires[$name] = []; - } - - $requires[$name][] = $matches['value']; - $recordedOffsets[$matches['name'] . '_' . $matches['value']] = $offset; - - if ($name === 'extensions' && !empty($matches['version'])) { - $extensionVersions[$matches['value']] = [ - 'version' => $matches['version'], - 'operator' => $matches['operator'], - ]; - } - } - - $offset++; - } - - return $this->parsedRequirements = array_merge( - $requires, - ['__OFFSET' => $recordedOffsets], - array_filter( - [ - 'setting' => $recordedSettings, - 'extension_versions' => $extensionVersions, - ], - ), - ); - } - - /** - * @return array> - */ - public function symbolAnnotations(): array - { - return $this->symbolAnnotations; - } - - /** - * @return array> - */ - private static function parseDocBlock(string $docBlock): array - { - // Strip away the docblock header and footer to ease parsing of one line annotations - $docBlock = substr($docBlock, 3, -2); - $annotations = []; - - if (preg_match_all('/@(?P[A-Za-z_-]+)(?:[ \t]+(?P.*?))?[ \t]*\r?$/m', $docBlock, $matches)) { - $numMatches = count($matches[0]); - - for ($i = 0; $i < $numMatches; $i++) { - $annotations[$matches['name'][$i]][] = $matches['value'][$i]; - } - } - - return $annotations; - } - - /** - * @phpstan-ignore missingType.iterableValue, missingType.generics - */ - private static function extractAnnotationsFromReflector(ReflectionClass|ReflectionFunctionAbstract $reflector): array - { - $annotations = []; - - if ($reflector instanceof ReflectionClass) { - $annotations = array_merge( - $annotations, - ...array_map( - static fn (ReflectionClass $trait): array => self::parseDocBlock((string) $trait->getDocComment()), - array_values($reflector->getTraits()), - ), - ); - } - - return array_merge( - $annotations, - self::parseDocBlock((string) $reflector->getDocComment()), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php deleted file mode 100644 index eb8a1b5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Annotation\Parser; - -use function array_key_exists; -use PHPUnit\Metadata\AnnotationsAreNotSupportedForInternalClassesException; -use PHPUnit\Metadata\ReflectionException; -use ReflectionClass; -use ReflectionMethod; - -/** - * Reflection information, and therefore DocBlock information, is static within - * a single PHP process. It is therefore okay to use a Singleton registry here. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Registry -{ - private static ?Registry $instance = null; - - /** - * @var array indexed by class name - */ - private array $classDocBlocks = []; - - /** - * @var array> indexed by class name and method name - */ - private array $methodDocBlocks = []; - - public static function getInstance(): self - { - return self::$instance ?? self::$instance = new self; - } - - /** - * @param class-string $class - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws ReflectionException - */ - public function forClassName(string $class): DocBlock - { - if (array_key_exists($class, $this->classDocBlocks)) { - return $this->classDocBlocks[$class]; - } - - try { - $reflection = new ReflectionClass($class); - - // @codeCoverageIgnoreStart - /** @phpstan-ignore catch.neverThrown */ - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - - return $this->classDocBlocks[$class] = DocBlock::ofClass($reflection); - } - - /** - * @param class-string $classInHierarchy - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws ReflectionException - */ - public function forMethod(string $classInHierarchy, string $method): DocBlock - { - if (isset($this->methodDocBlocks[$classInHierarchy][$method])) { - return $this->methodDocBlocks[$classInHierarchy][$method]; - } - - try { - $reflection = new ReflectionMethod($classInHierarchy, $method); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - - return $this->methodDocBlocks[$classInHierarchy][$method] = DocBlock::ofMethod($reflection); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php deleted file mode 100644 index 6917230..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php +++ /dev/null @@ -1,605 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use function array_merge; -use function assert; -use function class_exists; -use function count; -use function explode; -use function method_exists; -use function preg_replace; -use function rtrim; -use function sprintf; -use function str_contains; -use function str_starts_with; -use function strlen; -use function substr; -use function trim; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Metadata\Annotation\Parser\Registry as AnnotationRegistry; -use PHPUnit\Metadata\AnnotationsAreNotSupportedForInternalClassesException; -use PHPUnit\Metadata\InvalidVersionRequirementException; -use PHPUnit\Metadata\Metadata; -use PHPUnit\Metadata\MetadataCollection; -use PHPUnit\Metadata\ReflectionException; -use PHPUnit\Metadata\Version\ComparisonRequirement; -use PHPUnit\Metadata\Version\ConstraintRequirement; -use PHPUnit\Util\InvalidVersionOperatorException; -use PHPUnit\Util\VersionComparisonOperator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class AnnotationParser implements Parser -{ - /** - * @var array - */ - private static array $deprecationEmittedForClass = []; - - /** - * @var array - */ - private static array $deprecationEmittedForMethod = []; - - /** - * @param class-string $className - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws InvalidVersionOperatorException - * @throws ReflectionException - */ - public function forClass(string $className): MetadataCollection - { - assert(class_exists($className)); - - $result = []; - - foreach (AnnotationRegistry::getInstance()->forClassName($className)->symbolAnnotations() as $annotation => $values) { - switch ($annotation) { - case 'backupGlobals': - $result[] = Metadata::backupGlobalsOnClass($this->stringToBool($values[0])); - - break; - - case 'backupStaticAttributes': - case 'backupStaticProperties': - $result[] = Metadata::backupStaticPropertiesOnClass($this->stringToBool($values[0])); - - break; - - case 'covers': - foreach ($values as $value) { - $value = $this->cleanUpCoversOrUsesTarget($value); - - $result[] = Metadata::coversOnClass($value); - } - - break; - - case 'coversDefaultClass': - foreach ($values as $value) { - $result[] = Metadata::coversDefaultClass($value); - } - - break; - - case 'coversNothing': - $result[] = Metadata::coversNothingOnClass(); - - break; - - case 'doesNotPerformAssertions': - $result[] = Metadata::doesNotPerformAssertionsOnClass(); - - break; - - case 'group': - case 'ticket': - foreach ($values as $value) { - $result[] = Metadata::groupOnClass($value); - } - - break; - - case 'large': - $result[] = Metadata::groupOnClass('large'); - - break; - - case 'medium': - $result[] = Metadata::groupOnClass('medium'); - - break; - - case 'preserveGlobalState': - $result[] = Metadata::preserveGlobalStateOnClass($this->stringToBool($values[0])); - - break; - - case 'runClassInSeparateProcess': - $result[] = Metadata::runClassInSeparateProcess(); - - break; - - case 'runTestsInSeparateProcesses': - $result[] = Metadata::runTestsInSeparateProcesses(); - - break; - - case 'small': - $result[] = Metadata::groupOnClass('small'); - - break; - - case 'testdox': - $result[] = Metadata::testDoxOnClass($values[0]); - - break; - - case 'uses': - foreach ($values as $value) { - $value = $this->cleanUpCoversOrUsesTarget($value); - - $result[] = Metadata::usesOnClass($value); - } - - break; - - case 'usesDefaultClass': - foreach ($values as $value) { - $result[] = Metadata::usesDefaultClass($value); - } - - break; - } - } - - try { - $result = array_merge( - $result, - $this->parseRequirements( - AnnotationRegistry::getInstance()->forClassName($className)->requirements(), - 'class', - ), - ); - } catch (InvalidVersionRequirementException $e) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Class %s is annotated using an invalid version requirement: %s', - $className, - $e->getMessage(), - ), - ); - } - - if (!empty($result) && - !isset(self::$deprecationEmittedForClass[$className]) && - !str_starts_with($className, 'PHPUnit\TestFixture')) { - self::$deprecationEmittedForClass[$className] = true; - - EventFacade::emitter()->testRunnerTriggeredPhpunitDeprecation( - sprintf( - 'Metadata found in doc-comment for class %s. Metadata in doc-comments is deprecated and will no longer be supported in PHPUnit 12. Update your test code to use attributes instead.', - $className, - ), - ); - } - - return MetadataCollection::fromArray($result); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws InvalidVersionOperatorException - * @throws ReflectionException - */ - public function forMethod(string $className, string $methodName): MetadataCollection - { - assert(class_exists($className)); - assert(method_exists($className, $methodName)); - - $result = []; - - foreach (AnnotationRegistry::getInstance()->forMethod($className, $methodName)->symbolAnnotations() as $annotation => $values) { - switch ($annotation) { - case 'after': - $result[] = Metadata::after(0); - - break; - - case 'afterClass': - $result[] = Metadata::afterClass(0); - - break; - - case 'backupGlobals': - $result[] = Metadata::backupGlobalsOnMethod($this->stringToBool($values[0])); - - break; - - case 'backupStaticAttributes': - case 'backupStaticProperties': - $result[] = Metadata::backupStaticPropertiesOnMethod($this->stringToBool($values[0])); - - break; - - case 'before': - $result[] = Metadata::before(0); - - break; - - case 'beforeClass': - $result[] = Metadata::beforeClass(0); - - break; - - case 'covers': - foreach ($values as $value) { - $value = $this->cleanUpCoversOrUsesTarget($value); - - $result[] = Metadata::coversOnMethod($value); - } - - break; - - case 'coversNothing': - $result[] = Metadata::coversNothingOnMethod(); - - break; - - case 'dataProvider': - foreach ($values as $value) { - $value = rtrim($value, " ()\n\r\t\v\x00"); - - if (str_contains($value, '::')) { - $result[] = Metadata::dataProvider(...explode('::', $value)); - - continue; - } - - $result[] = Metadata::dataProvider($className, $value); - } - - break; - - case 'depends': - foreach ($values as $value) { - $deepClone = false; - $shallowClone = false; - - if (str_starts_with($value, 'clone ')) { - $deepClone = true; - $value = substr($value, strlen('clone ')); - } elseif (str_starts_with($value, '!clone ')) { - $value = substr($value, strlen('!clone ')); - } elseif (str_starts_with($value, 'shallowClone ')) { - $shallowClone = true; - $value = substr($value, strlen('shallowClone ')); - } elseif (str_starts_with($value, '!shallowClone ')) { - $value = substr($value, strlen('!shallowClone ')); - } - - if (str_contains($value, '::')) { - [$_className, $_methodName] = explode('::', $value); - - assert($_className !== ''); - assert($_methodName !== ''); - - if ($_methodName === 'class') { - $result[] = Metadata::dependsOnClass($_className, $deepClone, $shallowClone); - - continue; - } - - $result[] = Metadata::dependsOnMethod($_className, $_methodName, $deepClone, $shallowClone); - - continue; - } - - $result[] = Metadata::dependsOnMethod($className, $value, $deepClone, $shallowClone); - } - - break; - - case 'doesNotPerformAssertions': - $result[] = Metadata::doesNotPerformAssertionsOnMethod(); - - break; - - case 'excludeGlobalVariableFromBackup': - foreach ($values as $value) { - $result[] = Metadata::excludeGlobalVariableFromBackupOnMethod($value); - } - - break; - - case 'excludeStaticPropertyFromBackup': - foreach ($values as $value) { - $tmp = explode(' ', $value); - - if (count($tmp) !== 2) { - continue; - } - - $result[] = Metadata::excludeStaticPropertyFromBackupOnMethod( - trim($tmp[0]), - trim($tmp[1]), - ); - } - - break; - - case 'group': - case 'ticket': - foreach ($values as $value) { - $result[] = Metadata::groupOnMethod($value); - } - - break; - - case 'large': - $result[] = Metadata::groupOnMethod('large'); - - break; - - case 'medium': - $result[] = Metadata::groupOnMethod('medium'); - - break; - - case 'postCondition': - $result[] = Metadata::postCondition(0); - - break; - - case 'preCondition': - $result[] = Metadata::preCondition(0); - - break; - - case 'preserveGlobalState': - $result[] = Metadata::preserveGlobalStateOnMethod($this->stringToBool($values[0])); - - break; - - case 'runInSeparateProcess': - $result[] = Metadata::runInSeparateProcess(); - - break; - - case 'small': - $result[] = Metadata::groupOnMethod('small'); - - break; - - case 'test': - $result[] = Metadata::test(); - - break; - - case 'testdox': - $result[] = Metadata::testDoxOnMethod($values[0]); - - break; - - case 'uses': - foreach ($values as $value) { - $value = $this->cleanUpCoversOrUsesTarget($value); - - $result[] = Metadata::usesOnMethod($value); - } - - break; - } - } - - try { - $result = array_merge( - $result, - $this->parseRequirements( - AnnotationRegistry::getInstance()->forMethod($className, $methodName)->requirements(), - 'method', - ), - ); - } catch (InvalidVersionRequirementException $e) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Method %s::%s is annotated using an invalid version requirement: %s', - $className, - $methodName, - $e->getMessage(), - ), - ); - } - - if (!empty($result) && - !isset(self::$deprecationEmittedForMethod[$className . '::' . $methodName]) && - !str_starts_with($className, 'PHPUnit\TestFixture')) { - self::$deprecationEmittedForMethod[$className . '::' . $methodName] = true; - - EventFacade::emitter()->testRunnerTriggeredPhpunitDeprecation( - sprintf( - 'Metadata found in doc-comment for method %s::%s(). Metadata in doc-comments is deprecated and will no longer be supported in PHPUnit 12. Update your test code to use attributes instead.', - $className, - $methodName, - ), - ); - } - - return MetadataCollection::fromArray($result); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @throws AnnotationsAreNotSupportedForInternalClassesException - * @throws InvalidVersionOperatorException - * @throws ReflectionException - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection - { - return $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName), - ); - } - - private function stringToBool(string $value): bool - { - if ($value === 'enabled') { - return true; - } - - return false; - } - - private function cleanUpCoversOrUsesTarget(string $value): string - { - $value = preg_replace('/[\s()]+$/', '', $value); - - return explode(' ', $value, 2)[0]; - } - - /** - * @throws InvalidVersionOperatorException - * - * @return list - * - * @phpstan-ignore missingType.iterableValue - */ - private function parseRequirements(array $requirements, string $level): array - { - $result = []; - - if (!empty($requirements['PHP'])) { - $versionRequirement = new ComparisonRequirement( - $requirements['PHP']['version'], - new VersionComparisonOperator(empty($requirements['PHP']['operator']) ? '>=' : $requirements['PHP']['operator']), - ); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpOnClass($versionRequirement); - } else { - $result[] = Metadata::requiresPhpOnMethod($versionRequirement); - } - } elseif (!empty($requirements['PHP_constraint'])) { - $versionRequirement = new ConstraintRequirement($requirements['PHP_constraint']['constraint']); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpOnClass($versionRequirement); - } else { - $result[] = Metadata::requiresPhpOnMethod($versionRequirement); - } - } - - if (!empty($requirements['extensions'])) { - foreach ($requirements['extensions'] as $extension) { - if (isset($requirements['extension_versions'][$extension])) { - continue; - } - - if ($level === 'class') { - $result[] = Metadata::requiresPhpExtensionOnClass($extension, null); - } else { - $result[] = Metadata::requiresPhpExtensionOnMethod($extension, null); - } - } - } - - if (!empty($requirements['extension_versions'])) { - foreach ($requirements['extension_versions'] as $extension => $version) { - $versionRequirement = new ComparisonRequirement( - $version['version'], - new VersionComparisonOperator(empty($version['operator']) ? '>=' : $version['operator']), - ); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpExtensionOnClass($extension, $versionRequirement); - } else { - $result[] = Metadata::requiresPhpExtensionOnMethod($extension, $versionRequirement); - } - } - } - - if (!empty($requirements['PHPUnit'])) { - $versionRequirement = new ComparisonRequirement( - $requirements['PHPUnit']['version'], - new VersionComparisonOperator(empty($requirements['PHPUnit']['operator']) ? '>=' : $requirements['PHPUnit']['operator']), - ); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpunitOnClass($versionRequirement); - } else { - $result[] = Metadata::requiresPhpunitOnMethod($versionRequirement); - } - } elseif (!empty($requirements['PHPUnit_constraint'])) { - $versionRequirement = new ConstraintRequirement($requirements['PHPUnit_constraint']['constraint']); - - if ($level === 'class') { - $result[] = Metadata::requiresPhpunitOnClass($versionRequirement); - } else { - $result[] = Metadata::requiresPhpunitOnMethod($versionRequirement); - } - } - - if (!empty($requirements['OSFAMILY'])) { - if ($level === 'class') { - $result[] = Metadata::requiresOperatingSystemFamilyOnClass($requirements['OSFAMILY']); - } else { - $result[] = Metadata::requiresOperatingSystemFamilyOnMethod($requirements['OSFAMILY']); - } - } - - if (!empty($requirements['OS'])) { - if ($level === 'class') { - $result[] = Metadata::requiresOperatingSystemOnClass($requirements['OS']); - } else { - $result[] = Metadata::requiresOperatingSystemOnMethod($requirements['OS']); - } - } - - if (!empty($requirements['functions'])) { - foreach ($requirements['functions'] as $function) { - $pieces = explode('::', $function); - - if (count($pieces) === 2) { - if ($level === 'class') { - $result[] = Metadata::requiresMethodOnClass($pieces[0], $pieces[1]); - } else { - $result[] = Metadata::requiresMethodOnMethod($pieces[0], $pieces[1]); - } - } elseif ($level === 'class') { - $result[] = Metadata::requiresFunctionOnClass($function); - } else { - $result[] = Metadata::requiresFunctionOnMethod($function); - } - } - } - - if (!empty($requirements['setting'])) { - foreach ($requirements['setting'] as $setting => $value) { - if ($level === 'class') { - $result[] = Metadata::requiresSettingOnClass($setting, $value); - } else { - $result[] = Metadata::requiresSettingOnMethod($setting, $value); - } - } - } - - return $result; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php deleted file mode 100644 index be34635..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php +++ /dev/null @@ -1,802 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use const JSON_THROW_ON_ERROR; -use function assert; -use function class_exists; -use function json_decode; -use function method_exists; -use function sprintf; -use function str_starts_with; -use function strtolower; -use function trim; -use Error; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Framework\Attributes\After; -use PHPUnit\Framework\Attributes\AfterClass; -use PHPUnit\Framework\Attributes\BackupGlobals; -use PHPUnit\Framework\Attributes\BackupStaticProperties; -use PHPUnit\Framework\Attributes\Before; -use PHPUnit\Framework\Attributes\BeforeClass; -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\CoversFunction; -use PHPUnit\Framework\Attributes\CoversMethod; -use PHPUnit\Framework\Attributes\CoversNothing; -use PHPUnit\Framework\Attributes\CoversTrait; -use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\DataProviderExternal; -use PHPUnit\Framework\Attributes\Depends; -use PHPUnit\Framework\Attributes\DependsExternal; -use PHPUnit\Framework\Attributes\DependsExternalUsingDeepClone; -use PHPUnit\Framework\Attributes\DependsExternalUsingShallowClone; -use PHPUnit\Framework\Attributes\DependsOnClass; -use PHPUnit\Framework\Attributes\DependsOnClassUsingDeepClone; -use PHPUnit\Framework\Attributes\DependsOnClassUsingShallowClone; -use PHPUnit\Framework\Attributes\DependsUsingDeepClone; -use PHPUnit\Framework\Attributes\DependsUsingShallowClone; -use PHPUnit\Framework\Attributes\DisableReturnValueGenerationForTestDoubles; -use PHPUnit\Framework\Attributes\DoesNotPerformAssertions; -use PHPUnit\Framework\Attributes\ExcludeGlobalVariableFromBackup; -use PHPUnit\Framework\Attributes\ExcludeStaticPropertyFromBackup; -use PHPUnit\Framework\Attributes\Group; -use PHPUnit\Framework\Attributes\IgnoreDeprecations; -use PHPUnit\Framework\Attributes\IgnorePhpunitDeprecations; -use PHPUnit\Framework\Attributes\Large; -use PHPUnit\Framework\Attributes\Medium; -use PHPUnit\Framework\Attributes\PostCondition; -use PHPUnit\Framework\Attributes\PreCondition; -use PHPUnit\Framework\Attributes\PreserveGlobalState; -use PHPUnit\Framework\Attributes\RequiresFunction; -use PHPUnit\Framework\Attributes\RequiresMethod; -use PHPUnit\Framework\Attributes\RequiresOperatingSystem; -use PHPUnit\Framework\Attributes\RequiresOperatingSystemFamily; -use PHPUnit\Framework\Attributes\RequiresPhp; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use PHPUnit\Framework\Attributes\RequiresPhpunit; -use PHPUnit\Framework\Attributes\RequiresPhpunitExtension; -use PHPUnit\Framework\Attributes\RequiresSetting; -use PHPUnit\Framework\Attributes\RunClassInSeparateProcess; -use PHPUnit\Framework\Attributes\RunInSeparateProcess; -use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; -use PHPUnit\Framework\Attributes\Small; -use PHPUnit\Framework\Attributes\Test; -use PHPUnit\Framework\Attributes\TestDox; -use PHPUnit\Framework\Attributes\TestWith; -use PHPUnit\Framework\Attributes\TestWithJson; -use PHPUnit\Framework\Attributes\Ticket; -use PHPUnit\Framework\Attributes\UsesClass; -use PHPUnit\Framework\Attributes\UsesFunction; -use PHPUnit\Framework\Attributes\UsesMethod; -use PHPUnit\Framework\Attributes\UsesTrait; -use PHPUnit\Framework\Attributes\WithoutErrorHandler; -use PHPUnit\Metadata\InvalidAttributeException; -use PHPUnit\Metadata\Metadata; -use PHPUnit\Metadata\MetadataCollection; -use PHPUnit\Metadata\Version\Requirement; -use ReflectionClass; -use ReflectionMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class AttributeParser implements Parser -{ - /** - * @param class-string $className - */ - public function forClass(string $className): MetadataCollection - { - assert(class_exists($className)); - - $reflector = new ReflectionClass($className); - $result = []; - - foreach ($reflector->getAttributes() as $attribute) { - if (!str_starts_with($attribute->getName(), 'PHPUnit\\Framework\\Attributes\\')) { - continue; - } - - if (!class_exists($attribute->getName())) { - continue; - } - - try { - $attributeInstance = $attribute->newInstance(); - } catch (Error $e) { - throw new InvalidAttributeException( - $attribute->getName(), - 'class ' . $className, - $reflector->getFileName(), - $reflector->getStartLine(), - $e->getMessage(), - ); - } - - switch ($attribute->getName()) { - case BackupGlobals::class: - assert($attributeInstance instanceof BackupGlobals); - - $result[] = Metadata::backupGlobalsOnClass($attributeInstance->enabled()); - - break; - - case BackupStaticProperties::class: - assert($attributeInstance instanceof BackupStaticProperties); - - $result[] = Metadata::backupStaticPropertiesOnClass($attributeInstance->enabled()); - - break; - - case CoversClass::class: - assert($attributeInstance instanceof CoversClass); - - $result[] = Metadata::coversClass($attributeInstance->className()); - - break; - - case CoversTrait::class: - assert($attributeInstance instanceof CoversTrait); - - $result[] = Metadata::coversTrait($attributeInstance->traitName()); - - break; - - case CoversFunction::class: - assert($attributeInstance instanceof CoversFunction); - - $result[] = Metadata::coversFunction($attributeInstance->functionName()); - - break; - - case CoversMethod::class: - assert($attributeInstance instanceof CoversMethod); - - $result[] = Metadata::coversMethod( - $attributeInstance->className(), - $attributeInstance->methodName(), - ); - - break; - - case CoversNothing::class: - $result[] = Metadata::coversNothingOnClass(); - - break; - - case DisableReturnValueGenerationForTestDoubles::class: - $result[] = Metadata::disableReturnValueGenerationForTestDoubles(); - - break; - - case DoesNotPerformAssertions::class: - $result[] = Metadata::doesNotPerformAssertionsOnClass(); - - break; - - case ExcludeGlobalVariableFromBackup::class: - assert($attributeInstance instanceof ExcludeGlobalVariableFromBackup); - - $result[] = Metadata::excludeGlobalVariableFromBackupOnClass($attributeInstance->globalVariableName()); - - break; - - case ExcludeStaticPropertyFromBackup::class: - assert($attributeInstance instanceof ExcludeStaticPropertyFromBackup); - - $result[] = Metadata::excludeStaticPropertyFromBackupOnClass( - $attributeInstance->className(), - $attributeInstance->propertyName(), - ); - - break; - - case Group::class: - assert($attributeInstance instanceof Group); - - if (!$this->isSizeGroup($attributeInstance->name(), $className)) { - $result[] = Metadata::groupOnClass($attributeInstance->name()); - } - - break; - - case Large::class: - $result[] = Metadata::groupOnClass('large'); - - break; - - case Medium::class: - $result[] = Metadata::groupOnClass('medium'); - - break; - - case IgnoreDeprecations::class: - assert($attributeInstance instanceof IgnoreDeprecations); - - $result[] = Metadata::ignoreDeprecationsOnClass(); - - break; - - case IgnorePhpunitDeprecations::class: - assert($attributeInstance instanceof IgnorePhpunitDeprecations); - - $result[] = Metadata::ignorePhpunitDeprecationsOnClass(); - - break; - - case PreserveGlobalState::class: - assert($attributeInstance instanceof PreserveGlobalState); - - $result[] = Metadata::preserveGlobalStateOnClass($attributeInstance->enabled()); - - break; - - case RequiresMethod::class: - assert($attributeInstance instanceof RequiresMethod); - - $result[] = Metadata::requiresMethodOnClass( - $attributeInstance->className(), - $attributeInstance->methodName(), - ); - - break; - - case RequiresFunction::class: - assert($attributeInstance instanceof RequiresFunction); - - $result[] = Metadata::requiresFunctionOnClass($attributeInstance->functionName()); - - break; - - case RequiresOperatingSystem::class: - assert($attributeInstance instanceof RequiresOperatingSystem); - - $result[] = Metadata::requiresOperatingSystemOnClass($attributeInstance->regularExpression()); - - break; - - case RequiresOperatingSystemFamily::class: - assert($attributeInstance instanceof RequiresOperatingSystemFamily); - - $result[] = Metadata::requiresOperatingSystemFamilyOnClass($attributeInstance->operatingSystemFamily()); - - break; - - case RequiresPhp::class: - assert($attributeInstance instanceof RequiresPhp); - - $result[] = Metadata::requiresPhpOnClass( - Requirement::from( - $attributeInstance->versionRequirement(), - ), - ); - - break; - - case RequiresPhpExtension::class: - assert($attributeInstance instanceof RequiresPhpExtension); - - $versionConstraint = null; - $versionRequirement = $attributeInstance->versionRequirement(); - - if ($versionRequirement !== null) { - $versionConstraint = Requirement::from($versionRequirement); - } - - $result[] = Metadata::requiresPhpExtensionOnClass( - $attributeInstance->extension(), - $versionConstraint, - ); - - break; - - case RequiresPhpunit::class: - assert($attributeInstance instanceof RequiresPhpunit); - - $result[] = Metadata::requiresPhpunitOnClass( - Requirement::from( - $attributeInstance->versionRequirement(), - ), - ); - - break; - - case RequiresPhpunitExtension::class: - assert($attributeInstance instanceof RequiresPhpunitExtension); - - $result[] = Metadata::requiresPhpunitExtensionOnClass( - $attributeInstance->extensionClass(), - ); - - break; - - case RequiresSetting::class: - assert($attributeInstance instanceof RequiresSetting); - - $result[] = Metadata::requiresSettingOnClass( - $attributeInstance->setting(), - $attributeInstance->value(), - ); - - break; - - case RunClassInSeparateProcess::class: - $result[] = Metadata::runClassInSeparateProcess(); - - break; - - case RunTestsInSeparateProcesses::class: - $result[] = Metadata::runTestsInSeparateProcesses(); - - break; - - case Small::class: - $result[] = Metadata::groupOnClass('small'); - - break; - - case TestDox::class: - assert($attributeInstance instanceof TestDox); - - $result[] = Metadata::testDoxOnClass($attributeInstance->text()); - - break; - - case Ticket::class: - assert($attributeInstance instanceof Ticket); - - $result[] = Metadata::groupOnClass($attributeInstance->text()); - - break; - - case UsesClass::class: - assert($attributeInstance instanceof UsesClass); - - $result[] = Metadata::usesClass($attributeInstance->className()); - - break; - - case UsesTrait::class: - assert($attributeInstance instanceof UsesTrait); - - $result[] = Metadata::usesTrait($attributeInstance->traitName()); - - break; - - case UsesFunction::class: - assert($attributeInstance instanceof UsesFunction); - - $result[] = Metadata::usesFunction($attributeInstance->functionName()); - - break; - - case UsesMethod::class: - assert($attributeInstance instanceof UsesMethod); - - $result[] = Metadata::usesMethod( - $attributeInstance->className(), - $attributeInstance->methodName(), - ); - - break; - } - } - - return MetadataCollection::fromArray($result); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function forMethod(string $className, string $methodName): MetadataCollection - { - assert(class_exists($className)); - assert(method_exists($className, $methodName)); - - $reflector = new ReflectionMethod($className, $methodName); - $result = []; - - foreach ($reflector->getAttributes() as $attribute) { - if (!str_starts_with($attribute->getName(), 'PHPUnit\\Framework\\Attributes\\')) { - continue; - } - - if (!class_exists($attribute->getName())) { - continue; - } - - try { - $attributeInstance = $attribute->newInstance(); - } catch (Error $e) { - throw new InvalidAttributeException( - $attribute->getName(), - 'method ' . $className . '::' . $methodName . '()', - $reflector->getFileName(), - $reflector->getStartLine(), - $e->getMessage(), - ); - } - - switch ($attribute->getName()) { - case After::class: - assert($attributeInstance instanceof After); - - $result[] = Metadata::after($attributeInstance->priority()); - - break; - - case AfterClass::class: - assert($attributeInstance instanceof AfterClass); - - $result[] = Metadata::afterClass($attributeInstance->priority()); - - break; - - case BackupGlobals::class: - assert($attributeInstance instanceof BackupGlobals); - - $result[] = Metadata::backupGlobalsOnMethod($attributeInstance->enabled()); - - break; - - case BackupStaticProperties::class: - assert($attributeInstance instanceof BackupStaticProperties); - - $result[] = Metadata::backupStaticPropertiesOnMethod($attributeInstance->enabled()); - - break; - - case Before::class: - assert($attributeInstance instanceof Before); - - $result[] = Metadata::before($attributeInstance->priority()); - - break; - - case BeforeClass::class: - assert($attributeInstance instanceof BeforeClass); - - $result[] = Metadata::beforeClass($attributeInstance->priority()); - - break; - - case CoversNothing::class: - $result[] = Metadata::coversNothingOnMethod(); - - break; - - case DataProvider::class: - assert($attributeInstance instanceof DataProvider); - - $result[] = Metadata::dataProvider($className, $attributeInstance->methodName()); - - break; - - case DataProviderExternal::class: - assert($attributeInstance instanceof DataProviderExternal); - - $result[] = Metadata::dataProvider($attributeInstance->className(), $attributeInstance->methodName()); - - break; - - case Depends::class: - assert($attributeInstance instanceof Depends); - - $result[] = Metadata::dependsOnMethod($className, $attributeInstance->methodName(), false, false); - - break; - - case DependsUsingDeepClone::class: - assert($attributeInstance instanceof DependsUsingDeepClone); - - $result[] = Metadata::dependsOnMethod($className, $attributeInstance->methodName(), true, false); - - break; - - case DependsUsingShallowClone::class: - assert($attributeInstance instanceof DependsUsingShallowClone); - - $result[] = Metadata::dependsOnMethod($className, $attributeInstance->methodName(), false, true); - - break; - - case DependsExternal::class: - assert($attributeInstance instanceof DependsExternal); - - $result[] = Metadata::dependsOnMethod($attributeInstance->className(), $attributeInstance->methodName(), false, false); - - break; - - case DependsExternalUsingDeepClone::class: - assert($attributeInstance instanceof DependsExternalUsingDeepClone); - - $result[] = Metadata::dependsOnMethod($attributeInstance->className(), $attributeInstance->methodName(), true, false); - - break; - - case DependsExternalUsingShallowClone::class: - assert($attributeInstance instanceof DependsExternalUsingShallowClone); - - $result[] = Metadata::dependsOnMethod($attributeInstance->className(), $attributeInstance->methodName(), false, true); - - break; - - case DependsOnClass::class: - assert($attributeInstance instanceof DependsOnClass); - - $result[] = Metadata::dependsOnClass($attributeInstance->className(), false, false); - - break; - - case DependsOnClassUsingDeepClone::class: - assert($attributeInstance instanceof DependsOnClassUsingDeepClone); - - $result[] = Metadata::dependsOnClass($attributeInstance->className(), true, false); - - break; - - case DependsOnClassUsingShallowClone::class: - assert($attributeInstance instanceof DependsOnClassUsingShallowClone); - - $result[] = Metadata::dependsOnClass($attributeInstance->className(), false, true); - - break; - - case DoesNotPerformAssertions::class: - assert($attributeInstance instanceof DoesNotPerformAssertions); - - $result[] = Metadata::doesNotPerformAssertionsOnMethod(); - - break; - - case ExcludeGlobalVariableFromBackup::class: - assert($attributeInstance instanceof ExcludeGlobalVariableFromBackup); - - $result[] = Metadata::excludeGlobalVariableFromBackupOnMethod($attributeInstance->globalVariableName()); - - break; - - case ExcludeStaticPropertyFromBackup::class: - assert($attributeInstance instanceof ExcludeStaticPropertyFromBackup); - - $result[] = Metadata::excludeStaticPropertyFromBackupOnMethod( - $attributeInstance->className(), - $attributeInstance->propertyName(), - ); - - break; - - case Group::class: - assert($attributeInstance instanceof Group); - - if (!$this->isSizeGroup($attributeInstance->name(), $className, $methodName)) { - $result[] = Metadata::groupOnMethod($attributeInstance->name()); - } - - break; - - case IgnoreDeprecations::class: - assert($attributeInstance instanceof IgnoreDeprecations); - - $result[] = Metadata::ignoreDeprecationsOnMethod(); - - break; - - case IgnorePhpunitDeprecations::class: - assert($attributeInstance instanceof IgnorePhpunitDeprecations); - - $result[] = Metadata::ignorePhpunitDeprecationsOnMethod(); - - break; - - case PostCondition::class: - assert($attributeInstance instanceof PostCondition); - - $result[] = Metadata::postCondition($attributeInstance->priority()); - - break; - - case PreCondition::class: - assert($attributeInstance instanceof PreCondition); - - $result[] = Metadata::preCondition($attributeInstance->priority()); - - break; - - case PreserveGlobalState::class: - assert($attributeInstance instanceof PreserveGlobalState); - - $result[] = Metadata::preserveGlobalStateOnMethod($attributeInstance->enabled()); - - break; - - case RequiresMethod::class: - assert($attributeInstance instanceof RequiresMethod); - - $result[] = Metadata::requiresMethodOnMethod( - $attributeInstance->className(), - $attributeInstance->methodName(), - ); - - break; - - case RequiresFunction::class: - assert($attributeInstance instanceof RequiresFunction); - - $result[] = Metadata::requiresFunctionOnMethod($attributeInstance->functionName()); - - break; - - case RequiresOperatingSystem::class: - assert($attributeInstance instanceof RequiresOperatingSystem); - - $result[] = Metadata::requiresOperatingSystemOnMethod($attributeInstance->regularExpression()); - - break; - - case RequiresOperatingSystemFamily::class: - assert($attributeInstance instanceof RequiresOperatingSystemFamily); - - $result[] = Metadata::requiresOperatingSystemFamilyOnMethod($attributeInstance->operatingSystemFamily()); - - break; - - case RequiresPhp::class: - assert($attributeInstance instanceof RequiresPhp); - - $result[] = Metadata::requiresPhpOnMethod( - Requirement::from( - $attributeInstance->versionRequirement(), - ), - ); - - break; - - case RequiresPhpExtension::class: - assert($attributeInstance instanceof RequiresPhpExtension); - - $versionConstraint = null; - $versionRequirement = $attributeInstance->versionRequirement(); - - if ($versionRequirement !== null) { - $versionConstraint = Requirement::from($versionRequirement); - } - - $result[] = Metadata::requiresPhpExtensionOnMethod( - $attributeInstance->extension(), - $versionConstraint, - ); - - break; - - case RequiresPhpunit::class: - assert($attributeInstance instanceof RequiresPhpunit); - - $result[] = Metadata::requiresPhpunitOnMethod( - Requirement::from( - $attributeInstance->versionRequirement(), - ), - ); - - break; - - case RequiresPhpunitExtension::class: - assert($attributeInstance instanceof RequiresPhpunitExtension); - - $result[] = Metadata::requiresPhpunitExtensionOnMethod( - $attributeInstance->extensionClass(), - ); - - break; - - case RequiresSetting::class: - assert($attributeInstance instanceof RequiresSetting); - - $result[] = Metadata::requiresSettingOnMethod( - $attributeInstance->setting(), - $attributeInstance->value(), - ); - - break; - - case RunInSeparateProcess::class: - $result[] = Metadata::runInSeparateProcess(); - - break; - - case Test::class: - $result[] = Metadata::test(); - - break; - - case TestDox::class: - assert($attributeInstance instanceof TestDox); - - $result[] = Metadata::testDoxOnMethod($attributeInstance->text()); - - break; - - case TestWith::class: - assert($attributeInstance instanceof TestWith); - - $result[] = Metadata::testWith($attributeInstance->data(), $attributeInstance->name()); - - break; - - case TestWithJson::class: - assert($attributeInstance instanceof TestWithJson); - - $result[] = Metadata::testWith( - json_decode($attributeInstance->json(), true, 512, JSON_THROW_ON_ERROR), - $attributeInstance->name(), - ); - - break; - - case Ticket::class: - assert($attributeInstance instanceof Ticket); - - $result[] = Metadata::groupOnMethod($attributeInstance->text()); - - break; - - case WithoutErrorHandler::class: - assert($attributeInstance instanceof WithoutErrorHandler); - - $result[] = Metadata::withoutErrorHandler(); - - break; - } - } - - return MetadataCollection::fromArray($result); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection - { - return $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName), - ); - } - - /** - * @param non-empty-string $groupName - * @param class-string $testClassName - * @param ?non-empty-string $testMethodName - */ - private function isSizeGroup(string $groupName, string $testClassName, ?string $testMethodName = null): bool - { - $_groupName = strtolower(trim($groupName)); - - if ($_groupName !== 'small' && $_groupName !== 'medium' && $_groupName !== 'large') { - return false; - } - - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Group name "%s" is not allowed for %s %s%s%s', - $_groupName, - $testMethodName !== null ? 'method' : 'class', - $testClassName, - $testMethodName !== null ? '::' : '', - $testMethodName !== null ? $testMethodName : '', - ), - ); - - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php deleted file mode 100644 index 7c274c1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use function assert; -use function class_exists; -use function method_exists; -use PHPUnit\Metadata\MetadataCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CachingParser implements Parser -{ - private readonly Parser $reader; - - /** - * @var array - */ - private array $classCache = []; - - /** - * @var array - */ - private array $methodCache = []; - - /** - * @var array - */ - private array $classAndMethodCache = []; - - public function __construct(Parser $reader) - { - $this->reader = $reader; - } - - /** - * @param class-string $className - */ - public function forClass(string $className): MetadataCollection - { - assert(class_exists($className)); - - if (isset($this->classCache[$className])) { - return $this->classCache[$className]; - } - - $this->classCache[$className] = $this->reader->forClass($className); - - return $this->classCache[$className]; - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function forMethod(string $className, string $methodName): MetadataCollection - { - assert(class_exists($className)); - assert(method_exists($className, $methodName)); - - $key = $className . '::' . $methodName; - - if (isset($this->methodCache[$key])) { - return $this->methodCache[$key]; - } - - $this->methodCache[$key] = $this->reader->forMethod($className, $methodName); - - return $this->methodCache[$key]; - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection - { - $key = $className . '::' . $methodName; - - if (isset($this->classAndMethodCache[$key])) { - return $this->classAndMethodCache[$key]; - } - - $this->classAndMethodCache[$key] = $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName), - ); - - return $this->classAndMethodCache[$key]; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Parser.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Parser.php deleted file mode 100644 index 3159653..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Parser.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use PHPUnit\Metadata\MetadataCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Parser -{ - /** - * @param class-string $className - */ - public function forClass(string $className): MetadataCollection; - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function forMethod(string $className, string $methodName): MetadataCollection; - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php deleted file mode 100644 index e19e0b0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -use function assert; -use function class_exists; -use function method_exists; -use PHPUnit\Metadata\MetadataCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ParserChain implements Parser -{ - private Parser $attributeReader; - private Parser $annotationReader; - - public function __construct(Parser $attributeReader, Parser $annotationReader) - { - $this->attributeReader = $attributeReader; - $this->annotationReader = $annotationReader; - } - - /** - * @param class-string $className - */ - public function forClass(string $className): MetadataCollection - { - assert(class_exists($className)); - - $metadata = $this->attributeReader->forClass($className); - - if (!$metadata->isEmpty()) { - return $metadata; - } - - return $this->annotationReader->forClass($className); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function forMethod(string $className, string $methodName): MetadataCollection - { - assert(class_exists($className)); - assert(method_exists($className, $methodName)); - - $metadata = $this->attributeReader->forMethod($className, $methodName); - - if (!$metadata->isEmpty()) { - return $metadata; - } - - return $this->annotationReader->forMethod($className, $methodName); - } - - /** - * @param class-string $className - * @param non-empty-string $methodName - */ - public function forClassAndMethod(string $className, string $methodName): MetadataCollection - { - return $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php deleted file mode 100644 index a68ab01..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Parser; - -/** - * Attribute and annotation information is static within a single PHP process. - * It is therefore okay to use a Singleton registry here. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Registry -{ - private static ?Parser $instance = null; - - public static function parser(): Parser - { - return self::$instance ?? self::$instance = self::build(); - } - - private static function build(): Parser - { - return new CachingParser( - new ParserChain( - new AttributeParser, - new AnnotationParser, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/PostCondition.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/PostCondition.php deleted file mode 100644 index 47972c8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/PostCondition.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class PostCondition extends Metadata -{ - private int $priority; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, int $priority) - { - parent::__construct($level); - - $this->priority = $priority; - } - - public function isPostCondition(): true - { - return true; - } - - public function priority(): int - { - return $this->priority; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/PreCondition.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/PreCondition.php deleted file mode 100644 index 5d17f8f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/PreCondition.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class PreCondition extends Metadata -{ - private int $priority; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, int $priority) - { - parent::__construct($level); - - $this->priority = $priority; - } - - public function isPreCondition(): true - { - return true; - } - - public function priority(): int - { - return $this->priority; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/PreserveGlobalState.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/PreserveGlobalState.php deleted file mode 100644 index 2d23410..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/PreserveGlobalState.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class PreserveGlobalState extends Metadata -{ - private bool $enabled; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, bool $enabled) - { - parent::__construct($level); - - $this->enabled = $enabled; - } - - public function isPreserveGlobalState(): true - { - return true; - } - - public function enabled(): bool - { - return $this->enabled; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresFunction.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresFunction.php deleted file mode 100644 index 55fa4a9..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresFunction.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RequiresFunction extends Metadata -{ - /** - * @var non-empty-string - */ - private string $functionName; - - /** - * @param 0|1 $level - * @param non-empty-string $functionName - */ - protected function __construct(int $level, string $functionName) - { - parent::__construct($level); - - $this->functionName = $functionName; - } - - public function isRequiresFunction(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function functionName(): string - { - return $this->functionName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresMethod.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresMethod.php deleted file mode 100644 index 5ed7a0a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresMethod.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RequiresMethod extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @var non-empty-string - */ - private string $methodName; - - /** - * @param 0|1 $level - * @param class-string $className - * @param non-empty-string $methodName - */ - protected function __construct(int $level, string $className, string $methodName) - { - parent::__construct($level); - - $this->className = $className; - $this->methodName = $methodName; - } - - public function isRequiresMethod(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @return non-empty-string - */ - public function methodName(): string - { - return $this->methodName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php deleted file mode 100644 index 8be79f6..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresOperatingSystem.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RequiresOperatingSystem extends Metadata -{ - /** - * @var non-empty-string - */ - private string $operatingSystem; - - /** - * @param 0|1 $level - * @param non-empty-string $operatingSystem - */ - protected function __construct(int $level, string $operatingSystem) - { - parent::__construct($level); - - $this->operatingSystem = $operatingSystem; - } - - public function isRequiresOperatingSystem(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function operatingSystem(): string - { - return $this->operatingSystem; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresOperatingSystemFamily.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresOperatingSystemFamily.php deleted file mode 100644 index ca57905..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresOperatingSystemFamily.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RequiresOperatingSystemFamily extends Metadata -{ - /** - * @var non-empty-string - */ - private string $operatingSystemFamily; - - /** - * @param 0|1 $level - * @param non-empty-string $operatingSystemFamily - */ - protected function __construct(int $level, string $operatingSystemFamily) - { - parent::__construct($level); - - $this->operatingSystemFamily = $operatingSystemFamily; - } - - public function isRequiresOperatingSystemFamily(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function operatingSystemFamily(): string - { - return $this->operatingSystemFamily; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhp.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhp.php deleted file mode 100644 index 792ca7d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhp.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use PHPUnit\Metadata\Version\Requirement; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RequiresPhp extends Metadata -{ - private Requirement $versionRequirement; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, Requirement $versionRequirement) - { - parent::__construct($level); - - $this->versionRequirement = $versionRequirement; - } - - public function isRequiresPhp(): true - { - return true; - } - - public function versionRequirement(): Requirement - { - return $this->versionRequirement; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhpExtension.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhpExtension.php deleted file mode 100644 index fe021c1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhpExtension.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use PHPUnit\Metadata\Version\Requirement; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RequiresPhpExtension extends Metadata -{ - /** - * @var non-empty-string - */ - private string $extension; - private ?Requirement $versionRequirement; - - /** - * @param 0|1 $level - * @param non-empty-string $extension - */ - protected function __construct(int $level, string $extension, ?Requirement $versionRequirement) - { - parent::__construct($level); - - $this->extension = $extension; - $this->versionRequirement = $versionRequirement; - } - - public function isRequiresPhpExtension(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function extension(): string - { - return $this->extension; - } - - /** - * @phpstan-assert-if-true !null $this->versionRequirement - */ - public function hasVersionRequirement(): bool - { - return $this->versionRequirement !== null; - } - - /** - * @throws NoVersionRequirementException - */ - public function versionRequirement(): Requirement - { - if ($this->versionRequirement === null) { - throw new NoVersionRequirementException; - } - - return $this->versionRequirement; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhpunit.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhpunit.php deleted file mode 100644 index 1fd9646..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhpunit.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use PHPUnit\Metadata\Version\Requirement; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RequiresPhpunit extends Metadata -{ - private Requirement $versionRequirement; - - /** - * @param 0|1 $level - */ - protected function __construct(int $level, Requirement $versionRequirement) - { - parent::__construct($level); - - $this->versionRequirement = $versionRequirement; - } - - public function isRequiresPhpunit(): true - { - return true; - } - - public function versionRequirement(): Requirement - { - return $this->versionRequirement; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhpunitExtension.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhpunitExtension.php deleted file mode 100644 index e0de9a5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresPhpunitExtension.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -use PHPUnit\Runner\Extension\Extension; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RequiresPhpunitExtension extends Metadata -{ - /** - * @var class-string - */ - private string $extensionClass; - - /** - * @param class-string $extensionClass - */ - protected function __construct(int $level, string $extensionClass) - { - parent::__construct($level); - - $this->extensionClass = $extensionClass; - } - - public function isRequiresPhpunitExtension(): true - { - return true; - } - - /** - * @return class-string - */ - public function extensionClass(): string - { - return $this->extensionClass; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresSetting.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresSetting.php deleted file mode 100644 index 2ba9444..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RequiresSetting.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RequiresSetting extends Metadata -{ - /** - * @var non-empty-string - */ - private string $setting; - - /** - * @var non-empty-string - */ - private string $value; - - /** - * @param 0|1 $level - * @param non-empty-string $setting - * @param non-empty-string $value - */ - protected function __construct(int $level, string $setting, string $value) - { - parent::__construct($level); - - $this->setting = $setting; - $this->value = $value; - } - - public function isRequiresSetting(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function setting(): string - { - return $this->setting; - } - - /** - * @return non-empty-string - */ - public function value(): string - { - return $this->value; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RunClassInSeparateProcess.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RunClassInSeparateProcess.php deleted file mode 100644 index 6f7927c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RunClassInSeparateProcess.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RunClassInSeparateProcess extends Metadata -{ - public function isRunClassInSeparateProcess(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RunInSeparateProcess.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RunInSeparateProcess.php deleted file mode 100644 index dc75521..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RunInSeparateProcess.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RunInSeparateProcess extends Metadata -{ - public function isRunInSeparateProcess(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RunTestsInSeparateProcesses.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RunTestsInSeparateProcesses.php deleted file mode 100644 index 3a544a7..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/RunTestsInSeparateProcesses.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RunTestsInSeparateProcesses extends Metadata -{ - public function isRunTestsInSeparateProcesses(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Test.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Test.php deleted file mode 100644 index 0400761..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Test.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Test extends Metadata -{ - public function isTest(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/TestDox.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/TestDox.php deleted file mode 100644 index 8b6a6db..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/TestDox.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestDox extends Metadata -{ - /** - * @var non-empty-string - */ - private string $text; - - /** - * @param 0|1 $level - * @param non-empty-string $text - */ - protected function __construct(int $level, string $text) - { - parent::__construct($level); - - $this->text = $text; - } - - public function isTestDox(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function text(): string - { - return $this->text; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/TestWith.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/TestWith.php deleted file mode 100644 index 0c21c10..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/TestWith.php +++ /dev/null @@ -1,63 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestWith extends Metadata -{ - private mixed $data; - - /** - * @var ?non-empty-string - */ - private ?string $name; - - /** - * @param 0|1 $level - * @param ?non-empty-string $name - */ - protected function __construct(int $level, mixed $data, ?string $name = null) - { - parent::__construct($level); - - $this->data = $data; - $this->name = $name; - } - - public function isTestWith(): true - { - return true; - } - - public function data(): mixed - { - return $this->data; - } - - /** - * @phpstan-assert-if-true !null $this->name - */ - public function hasName(): bool - { - return $this->name !== null; - } - - /** - * @return ?non-empty-string - */ - public function name(): ?string - { - return $this->name; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Uses.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Uses.php deleted file mode 100644 index af68897..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Uses.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Uses extends Metadata -{ - /** - * @var non-empty-string - */ - private string $target; - - /** - * @param 0|1 $level - * @param non-empty-string $target - */ - protected function __construct(int $level, string $target) - { - parent::__construct($level); - - $this->target = $target; - } - - public function isUses(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function target(): string - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesClass.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesClass.php deleted file mode 100644 index 592999b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesClass.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class UsesClass extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @param 0|1 $level - * @param class-string $className - */ - protected function __construct(int $level, string $className) - { - parent::__construct($level); - - $this->className = $className; - } - - public function isUsesClass(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @return class-string - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function asStringForCodeUnitMapper(): string - { - return $this->className; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesDefaultClass.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesDefaultClass.php deleted file mode 100644 index 9a58d4c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesDefaultClass.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class UsesDefaultClass extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @param 0|1 $level - * @param class-string $className - */ - protected function __construct(int $level, string $className) - { - parent::__construct($level); - - $this->className = $className; - } - - public function isUsesDefaultClass(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesFunction.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesFunction.php deleted file mode 100644 index df2ddff..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesFunction.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class UsesFunction extends Metadata -{ - /** - * @var non-empty-string - */ - private string $functionName; - - /** - * @param 0|1 $level - * @param non-empty-string $functionName - */ - protected function __construct(int $level, string $functionName) - { - parent::__construct($level); - - $this->functionName = $functionName; - } - - public function isUsesFunction(): true - { - return true; - } - - /** - * @return non-empty-string - */ - public function functionName(): string - { - return $this->functionName; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function asStringForCodeUnitMapper(): string - { - return '::' . $this->functionName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesMethod.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesMethod.php deleted file mode 100644 index 382b4e2..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesMethod.php +++ /dev/null @@ -1,72 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class UsesMethod extends Metadata -{ - /** - * @var class-string - */ - private string $className; - - /** - * @var non-empty-string - */ - private string $methodName; - - /** - * @param 0|1 $level - * @param class-string $className - * @param non-empty-string $methodName - */ - protected function __construct(int $level, string $className, string $methodName) - { - parent::__construct($level); - - $this->className = $className; - $this->methodName = $methodName; - } - - public function isUsesMethod(): true - { - return true; - } - - /** - * @return class-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @return non-empty-string - */ - public function methodName(): string - { - return $this->methodName; - } - - /** - * @return non-empty-string - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function asStringForCodeUnitMapper(): string - { - return $this->className . '::' . $this->methodName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesTrait.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesTrait.php deleted file mode 100644 index 47f45cd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/UsesTrait.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class UsesTrait extends Metadata -{ - /** - * @var trait-string - */ - private string $traitName; - - /** - * @param 0|1 $level - * @param trait-string $traitName - */ - protected function __construct(int $level, string $traitName) - { - parent::__construct($level); - - $this->traitName = $traitName; - } - - public function isUsesTrait(): true - { - return true; - } - - /** - * @return trait-string - */ - public function traitName(): string - { - return $this->traitName; - } - - /** - * @return trait-string - * - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function asStringForCodeUnitMapper(): string - { - return $this->traitName; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php deleted file mode 100644 index b3b6a1f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Version; - -use function version_compare; -use PHPUnit\Util\VersionComparisonOperator; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ComparisonRequirement extends Requirement -{ - private string $version; - private VersionComparisonOperator $operator; - - public function __construct(string $version, VersionComparisonOperator $operator) - { - $this->version = $version; - $this->operator = $operator; - } - - public function isSatisfiedBy(string $version): bool - { - return version_compare($version, $this->version, $this->operator->asString()); - } - - public function asString(): string - { - return $this->operator->asString() . ' ' . $this->version; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php deleted file mode 100644 index 1075445..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Version; - -use function preg_replace; -use PharIo\Version\Version; -use PharIo\Version\VersionConstraint; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ConstraintRequirement extends Requirement -{ - private VersionConstraint $constraint; - - public function __construct(VersionConstraint $constraint) - { - $this->constraint = $constraint; - } - - public function isSatisfiedBy(string $version): bool - { - return $this->constraint->complies( - new Version($this->sanitize($version)), - ); - } - - public function asString(): string - { - return $this->constraint->asString(); - } - - private function sanitize(string $version): string - { - return preg_replace( - '/^(\d+\.\d+(?:.\d+)?).*$/', - '$1', - $version, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Version/Requirement.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Version/Requirement.php deleted file mode 100644 index 391ccde..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/Version/Requirement.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata\Version; - -use function preg_match; -use PharIo\Version\UnsupportedVersionConstraintException; -use PharIo\Version\VersionConstraintParser; -use PHPUnit\Metadata\InvalidVersionRequirementException; -use PHPUnit\Util\InvalidVersionOperatorException; -use PHPUnit\Util\VersionComparisonOperator; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class Requirement -{ - private const VERSION_COMPARISON = '/(?P[<>=!]{0,2})\s*(?P[\d\.-]+(dev|(RC|alpha|beta)[\d\.])?)[ \t]*\r?$/m'; - - /** - * @throws InvalidVersionOperatorException - * @throws InvalidVersionRequirementException - */ - public static function from(string $versionRequirement): self - { - try { - return new ConstraintRequirement( - (new VersionConstraintParser)->parse( - $versionRequirement, - ), - ); - } catch (UnsupportedVersionConstraintException) { - if (preg_match(self::VERSION_COMPARISON, $versionRequirement, $matches)) { - return new ComparisonRequirement( - $matches['version'], - new VersionComparisonOperator( - !empty($matches['operator']) ? $matches['operator'] : '>=', - ), - ); - } - } - - throw new InvalidVersionRequirementException; - } - - abstract public function isSatisfiedBy(string $version): bool; - - abstract public function asString(): string; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/WithoutErrorHandler.php b/v3_ci4/vendor/phpunit/phpunit/src/Metadata/WithoutErrorHandler.php deleted file mode 100644 index a8bf001..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Metadata/WithoutErrorHandler.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Metadata; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class WithoutErrorHandler extends Metadata -{ - public function isWithoutErrorHandler(): true - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Baseline.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Baseline.php deleted file mode 100644 index 733fca5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Baseline.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Baseline -{ - public const VERSION = 1; - - /** - * @var array>> - */ - private array $issues = []; - - public function add(Issue $issue): void - { - if (!isset($this->issues[$issue->file()])) { - $this->issues[$issue->file()] = []; - } - - if (!isset($this->issues[$issue->file()][$issue->line()])) { - $this->issues[$issue->file()][$issue->line()] = []; - } - - $this->issues[$issue->file()][$issue->line()][] = $issue; - } - - public function has(Issue $issue): bool - { - if (!isset($this->issues[$issue->file()][$issue->line()])) { - return false; - } - - foreach ($this->issues[$issue->file()][$issue->line()] as $_issue) { - if ($_issue->equals($issue)) { - return true; - } - } - - return false; - } - - /** - * @return array>> - */ - public function groupedByFileAndLine(): array - { - return $this->issues; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php deleted file mode 100644 index c559013..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Runner\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CannotLoadBaselineException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/CannotWriteBaselineException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/CannotWriteBaselineException.php deleted file mode 100644 index 914a2c3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/CannotWriteBaselineException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Runner\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CannotWriteBaselineException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php deleted file mode 100644 index 20c6ca0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use function sprintf; -use PHPUnit\Runner\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class FileDoesNotHaveLineException extends RuntimeException implements Exception -{ - public function __construct(string $file, int $line) - { - parent::__construct( - sprintf( - 'File "%s" does not have line %d', - $file, - $line, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Generator.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Generator.php deleted file mode 100644 index 4595a28..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Generator.php +++ /dev/null @@ -1,120 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Runner\FileDoesNotExistException; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\SourceFilter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Generator -{ - private Baseline $baseline; - private Source $source; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Facade $facade, Source $source) - { - $facade->registerSubscribers( - new TestTriggeredDeprecationSubscriber($this), - new TestTriggeredNoticeSubscriber($this), - new TestTriggeredPhpDeprecationSubscriber($this), - new TestTriggeredPhpNoticeSubscriber($this), - new TestTriggeredPhpWarningSubscriber($this), - new TestTriggeredWarningSubscriber($this), - ); - - $this->baseline = new Baseline; - $this->source = $source; - } - - public function baseline(): Baseline - { - return $this->baseline; - } - - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function testTriggeredIssue(DeprecationTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpWarningTriggered|WarningTriggered $event): void - { - if ($event->wasSuppressed() && !$this->isSuppressionIgnored($event)) { - return; - } - - if ($this->restrict($event) && !SourceFilter::instance()->includes($event->file())) { - return; - } - - $this->baseline->add( - Issue::from( - $event->file(), - $event->line(), - null, - $event->message(), - ), - ); - } - - private function restrict(DeprecationTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpWarningTriggered|WarningTriggered $event): bool - { - if ($event instanceof WarningTriggered || $event instanceof PhpWarningTriggered) { - return $this->source->restrictWarnings(); - } - - if ($event instanceof NoticeTriggered || $event instanceof PhpNoticeTriggered) { - return $this->source->restrictNotices(); - } - - return $this->source->restrictDeprecations(); - } - - private function isSuppressionIgnored(DeprecationTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpWarningTriggered|WarningTriggered $event): bool - { - if ($event instanceof WarningTriggered) { - return $this->source->ignoreSuppressionOfWarnings(); - } - - if ($event instanceof PhpWarningTriggered) { - return $this->source->ignoreSuppressionOfPhpWarnings(); - } - - if ($event instanceof PhpNoticeTriggered) { - return $this->source->ignoreSuppressionOfPhpNotices(); - } - - if ($event instanceof NoticeTriggered) { - return $this->source->ignoreSuppressionOfNotices(); - } - - if ($event instanceof PhpDeprecationTriggered) { - return $this->source->ignoreSuppressionOfPhpDeprecations(); - } - - return $this->source->ignoreSuppressionOfDeprecations(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Issue.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Issue.php deleted file mode 100644 index 869ea26..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Issue.php +++ /dev/null @@ -1,147 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use const FILE_IGNORE_NEW_LINES; -use function assert; -use function file; -use function is_file; -use function sha1; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Issue -{ - /** - * @var non-empty-string - */ - private string $file; - - /** - * @var positive-int - */ - private int $line; - - /** - * @var non-empty-string - */ - private string $hash; - - /** - * @var non-empty-string - */ - private string $description; - - /** - * @param non-empty-string $file - * @param positive-int $line - * @param ?non-empty-string $hash - * @param non-empty-string $description - * - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public static function from(string $file, int $line, ?string $hash, string $description): self - { - if ($hash === null) { - $hash = self::calculateHash($file, $line); - } - - return new self($file, $line, $hash, $description); - } - - /** - * @param non-empty-string $file - * @param positive-int $line - * @param non-empty-string $hash - * @param non-empty-string $description - */ - private function __construct(string $file, int $line, string $hash, string $description) - { - $this->file = $file; - $this->line = $line; - $this->hash = $hash; - $this->description = $description; - } - - /** - * @return non-empty-string - */ - public function file(): string - { - return $this->file; - } - - /** - * @return positive-int - */ - public function line(): int - { - return $this->line; - } - - /** - * @return non-empty-string - */ - public function hash(): string - { - return $this->hash; - } - - /** - * @return non-empty-string - */ - public function description(): string - { - return $this->description; - } - - public function equals(self $other): bool - { - return $this->file() === $other->file() && - $this->line() === $other->line() && - $this->hash() === $other->hash() && - $this->description() === $other->description(); - } - - /** - * @param non-empty-string $file - * @param positive-int $line - * - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - * - * @return non-empty-string - */ - private static function calculateHash(string $file, int $line): string - { - $lines = @file($file, FILE_IGNORE_NEW_LINES); - - if ($lines === false && !is_file($file)) { - throw new FileDoesNotExistException($file); - } - - $key = $line - 1; - - if (!isset($lines[$key])) { - throw new FileDoesNotHaveLineException($file, $line); - } - - $hash = sha1($lines[$key]); - - assert($hash !== ''); - - return $hash; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Reader.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Reader.php deleted file mode 100644 index aeb640a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Reader.php +++ /dev/null @@ -1,103 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use const DIRECTORY_SEPARATOR; -use function assert; -use function dirname; -use function is_file; -use function realpath; -use function sprintf; -use function str_replace; -use function trim; -use DOMElement; -use DOMXPath; -use PHPUnit\Util\Xml\Loader as XmlLoader; -use PHPUnit\Util\Xml\XmlException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Reader -{ - /** - * @param non-empty-string $baselineFile - * - * @throws CannotLoadBaselineException - */ - public function read(string $baselineFile): Baseline - { - if (!is_file($baselineFile)) { - throw new CannotLoadBaselineException( - sprintf( - 'Cannot read baseline %s, file does not exist', - $baselineFile, - ), - ); - } - - try { - $document = (new XmlLoader)->loadFile($baselineFile); - } catch (XmlException $e) { - throw new CannotLoadBaselineException( - sprintf( - 'Cannot read baseline %s: %s', - $baselineFile, - trim($e->getMessage()), - ), - ); - } - - $version = (int) $document->documentElement->getAttribute('version'); - - if ($version !== Baseline::VERSION) { - throw new CannotLoadBaselineException( - sprintf( - 'Cannot read baseline %s, version %d is not supported', - $baselineFile, - $version, - ), - ); - } - - $baseline = new Baseline; - $baselineDirectory = dirname(realpath($baselineFile)); - $xpath = new DOMXPath($document); - - foreach ($xpath->query('file') as $fileElement) { - assert($fileElement instanceof DOMElement); - - $file = $baselineDirectory . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $fileElement->getAttribute('path')); - - foreach ($xpath->query('line', $fileElement) as $lineElement) { - assert($lineElement instanceof DOMElement); - - $line = (int) $lineElement->getAttribute('number'); - $hash = $lineElement->getAttribute('hash'); - - foreach ($xpath->query('issue', $lineElement) as $issueElement) { - assert($issueElement instanceof DOMElement); - - $description = $issueElement->textContent; - - assert($line > 0); - assert(!empty($hash)); - assert(!empty($description)); - - $baseline->add(Issue::from($file, $line, $hash, $description)); - } - } - } - - return $baseline; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php deleted file mode 100644 index a05e6bb..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php +++ /dev/null @@ -1,105 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use function array_fill; -use function array_merge; -use function array_slice; -use function assert; -use function count; -use function explode; -use function implode; -use function str_replace; -use function strpos; -use function substr; -use function trim; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @see Copied from https://github.com/phpstan/phpstan-src/blob/1.10.33/src/File/ParentDirectoryRelativePathHelper.php - */ -final readonly class RelativePathCalculator -{ - /** - * @var non-empty-string - */ - private string $baselineDirectory; - - /** - * @param non-empty-string $baselineDirectory - */ - public function __construct(string $baselineDirectory) - { - $this->baselineDirectory = $baselineDirectory; - } - - /** - * @param non-empty-string $filename - * - * @return non-empty-string - */ - public function calculate(string $filename): string - { - $result = implode('/', $this->parts($filename)); - - assert($result !== ''); - - return $result; - } - - /** - * @param non-empty-string $filename - * - * @return list - */ - public function parts(string $filename): array - { - $schemePosition = strpos($filename, '://'); - - if ($schemePosition !== false) { - $filename = substr($filename, $schemePosition + 3); - - assert($filename !== ''); - } - - $parentParts = explode('/', trim(str_replace('\\', '/', $this->baselineDirectory), '/')); - $parentPartsCount = count($parentParts); - $filenameParts = explode('/', trim(str_replace('\\', '/', $filename), '/')); - $filenamePartsCount = count($filenameParts); - - $i = 0; - - for (; $i < $filenamePartsCount; $i++) { - if ($parentPartsCount < $i + 1) { - break; - } - - $parentPath = implode('/', array_slice($parentParts, 0, $i + 1)); - $filenamePath = implode('/', array_slice($filenameParts, 0, $i + 1)); - - if ($parentPath !== $filenamePath) { - break; - } - } - - if ($i === 0) { - return [$filename]; - } - - $dotsCount = $parentPartsCount - $i; - - assert($dotsCount >= 0); - - return array_merge(array_fill(0, $dotsCount, '..'), array_slice($filenameParts, $i)); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php deleted file mode 100644 index 59ca634..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class Subscriber -{ - private Generator $generator; - - public function __construct(Generator $generator) - { - $this->generator = $generator; - } - - protected function generator(): Generator - { - return $this->generator; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php deleted file mode 100644 index 72e2611..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\DeprecationTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(DeprecationTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php deleted file mode 100644 index 288d0ef..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\NoticeTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredNoticeSubscriber extends Subscriber implements NoticeTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(NoticeTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php deleted file mode 100644 index f72095a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpDeprecationSubscriber extends Subscriber implements PhpDeprecationTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(PhpDeprecationTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php deleted file mode 100644 index 9707a46..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpNoticeSubscriber extends Subscriber implements PhpNoticeTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(PhpNoticeTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php deleted file mode 100644 index 22af95d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpWarningSubscriber extends Subscriber implements PhpWarningTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(PhpWarningTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php deleted file mode 100644 index fd5e0db..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\Test\WarningTriggeredSubscriber; -use PHPUnit\Runner\FileDoesNotExistException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - /** - * @throws FileDoesNotExistException - * @throws FileDoesNotHaveLineException - */ - public function notify(WarningTriggered $event): void - { - $this->generator()->testTriggeredIssue($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Writer.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Writer.php deleted file mode 100644 index c687f31..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Baseline/Writer.php +++ /dev/null @@ -1,78 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Baseline; - -use function assert; -use function dirname; -use function file_put_contents; -use function is_dir; -use function realpath; -use function sprintf; -use XMLWriter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Writer -{ - /** - * @param non-empty-string $baselineFile - * - * @throws CannotWriteBaselineException - */ - public function write(string $baselineFile, Baseline $baseline): void - { - $normalizedBaselineFile = realpath(dirname($baselineFile)); - - if ($normalizedBaselineFile === false || !is_dir($normalizedBaselineFile)) { - throw new CannotWriteBaselineException(sprintf('Cannot write baseline to "%s".', $baselineFile)); - } - - $pathCalculator = new RelativePathCalculator($normalizedBaselineFile); - - $writer = new XMLWriter; - - $writer->openMemory(); - $writer->setIndent(true); - $writer->startDocument(); - - $writer->startElement('files'); - $writer->writeAttribute('version', (string) Baseline::VERSION); - - foreach ($baseline->groupedByFileAndLine() as $file => $lines) { - assert(!empty($file)); - - $writer->startElement('file'); - $writer->writeAttribute('path', $pathCalculator->calculate($file)); - - foreach ($lines as $line => $issues) { - $writer->startElement('line'); - $writer->writeAttribute('number', (string) $line); - $writer->writeAttribute('hash', $issues[0]->hash()); - - foreach ($issues as $issue) { - $writer->startElement('issue'); - $writer->writeCdata($issue->description()); - $writer->endElement(); - } - - $writer->endElement(); - } - - $writer->endElement(); - } - - $writer->endElement(); - - file_put_contents($baselineFile, $writer->outputMemory()); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php deleted file mode 100644 index af714f3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php +++ /dev/null @@ -1,412 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function file_put_contents; -use function sprintf; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Framework\TestCase; -use PHPUnit\TextUI\Configuration\CodeCoverageFilterRegistry; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Output\Printer; -use SebastianBergmann\CodeCoverage\Driver\Driver; -use SebastianBergmann\CodeCoverage\Driver\Selector; -use SebastianBergmann\CodeCoverage\Exception as CodeCoverageException; -use SebastianBergmann\CodeCoverage\Filter; -use SebastianBergmann\CodeCoverage\Report\Clover as CloverReport; -use SebastianBergmann\CodeCoverage\Report\Cobertura as CoberturaReport; -use SebastianBergmann\CodeCoverage\Report\Crap4j as Crap4jReport; -use SebastianBergmann\CodeCoverage\Report\Html\Colors; -use SebastianBergmann\CodeCoverage\Report\Html\CustomCssFile; -use SebastianBergmann\CodeCoverage\Report\Html\Facade as HtmlReport; -use SebastianBergmann\CodeCoverage\Report\PHP as PhpReport; -use SebastianBergmann\CodeCoverage\Report\Text as TextReport; -use SebastianBergmann\CodeCoverage\Report\Thresholds; -use SebastianBergmann\CodeCoverage\Report\Xml\Facade as XmlReport; -use SebastianBergmann\CodeCoverage\Test\TestSize\TestSize; -use SebastianBergmann\CodeCoverage\Test\TestStatus\TestStatus; -use SebastianBergmann\Comparator\Comparator; -use SebastianBergmann\Timer\NoActiveTimerException; -use SebastianBergmann\Timer\Timer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ -final class CodeCoverage -{ - private static ?self $instance = null; - private ?\SebastianBergmann\CodeCoverage\CodeCoverage $codeCoverage = null; - - /** - * @phpstan-ignore property.internalClass - */ - private ?Driver $driver = null; - private bool $collecting = false; - private ?TestCase $test = null; - private ?Timer $timer = null; - - public static function instance(): self - { - if (self::$instance === null) { - self::$instance = new self; - } - - return self::$instance; - } - - public function init(Configuration $configuration, CodeCoverageFilterRegistry $codeCoverageFilterRegistry, bool $extensionRequiresCodeCoverageCollection): void - { - $codeCoverageFilterRegistry->init($configuration); - - if (!$configuration->hasCoverageReport() && !$extensionRequiresCodeCoverageCollection) { - return; - } - - $this->activate($codeCoverageFilterRegistry->get(), $configuration->pathCoverage()); - - if (!$this->isActive()) { - return; - } - - if ($configuration->hasCoverageCacheDirectory()) { - $this->codeCoverage()->cacheStaticAnalysis($configuration->coverageCacheDirectory()); - } - - $this->codeCoverage()->excludeSubclassesOfThisClassFromUnintentionallyCoveredCodeCheck(Comparator::class); - - if ($configuration->strictCoverage()) { - $this->codeCoverage()->enableCheckForUnintentionallyCoveredCode(); - } - - if ($configuration->ignoreDeprecatedCodeUnitsFromCodeCoverage()) { - $this->codeCoverage()->ignoreDeprecatedCode(); - } else { - $this->codeCoverage()->doNotIgnoreDeprecatedCode(); - } - - if ($configuration->disableCodeCoverageIgnore()) { - $this->codeCoverage()->disableAnnotationsForIgnoringCode(); - } else { - $this->codeCoverage()->enableAnnotationsForIgnoringCode(); - } - - if ($configuration->includeUncoveredFiles()) { - $this->codeCoverage()->includeUncoveredFiles(); - } else { - $this->codeCoverage()->excludeUncoveredFiles(); - } - - if ($codeCoverageFilterRegistry->get()->isEmpty()) { - if (!$codeCoverageFilterRegistry->configured()) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'No filter is configured, code coverage will not be processed', - ); - } else { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'Incorrect filter configuration, code coverage will not be processed', - ); - } - - $this->deactivate(); - } - } - - /** - * @phpstan-assert-if-true !null $this->codeCoverage - */ - public function isActive(): bool - { - return $this->codeCoverage !== null; - } - - public function codeCoverage(): \SebastianBergmann\CodeCoverage\CodeCoverage - { - return $this->codeCoverage; - } - - /** - * @return non-empty-string - */ - public function driverNameAndVersion(): string - { - return $this->driver->nameAndVersion(); - } - - public function start(TestCase $test): void - { - if ($this->collecting) { - return; - } - - $size = TestSize::unknown(); - - if ($test->size()->isSmall()) { - $size = TestSize::small(); - } elseif ($test->size()->isMedium()) { - $size = TestSize::medium(); - } elseif ($test->size()->isLarge()) { - $size = TestSize::large(); - } - - $this->test = $test; - - $this->codeCoverage->start( - $test->valueObjectForEvents()->id(), - $size, - ); - - $this->collecting = true; - } - - /** - * @param array>|false $linesToBeCovered - * @param array> $linesToBeUsed - */ - public function stop(bool $append, array|false $linesToBeCovered = [], array $linesToBeUsed = []): void - { - if (!$this->collecting) { - return; - } - - $status = TestStatus::unknown(); - - if ($this->test !== null) { - if ($this->test->status()->isSuccess()) { - $status = TestStatus::success(); - } else { - $status = TestStatus::failure(); - } - } - - /* @noinspection UnusedFunctionResultInspection */ - $this->codeCoverage->stop($append, $status, $linesToBeCovered, $linesToBeUsed); - - $this->test = null; - $this->collecting = false; - } - - public function deactivate(): void - { - $this->driver = null; - $this->codeCoverage = null; - $this->test = null; - } - - public function generateReports(Printer $printer, Configuration $configuration): void - { - if (!$this->isActive()) { - return; - } - - if ($configuration->hasCoveragePhp()) { - $this->codeCoverageGenerationStart($printer, 'PHP'); - - try { - $writer = new PhpReport; - $writer->process($this->codeCoverage(), $configuration->coveragePhp()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageClover()) { - $this->codeCoverageGenerationStart($printer, 'Clover XML'); - - try { - $writer = new CloverReport; - $writer->process($this->codeCoverage(), $configuration->coverageClover(), 'Clover Coverage'); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageCobertura()) { - $this->codeCoverageGenerationStart($printer, 'Cobertura XML'); - - try { - $writer = new CoberturaReport; - $writer->process($this->codeCoverage(), $configuration->coverageCobertura()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageCrap4j()) { - $this->codeCoverageGenerationStart($printer, 'Crap4J XML'); - - try { - $writer = new Crap4jReport($configuration->coverageCrap4jThreshold()); - $writer->process($this->codeCoverage(), $configuration->coverageCrap4j()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageHtml()) { - $this->codeCoverageGenerationStart($printer, 'HTML'); - - try { - $customCssFile = CustomCssFile::default(); - - if ($configuration->hasCoverageHtmlCustomCssFile()) { - $customCssFile = CustomCssFile::from($configuration->coverageHtmlCustomCssFile()); - } - - $writer = new HtmlReport( - sprintf( - ' and PHPUnit %s', - Version::id(), - ), - Colors::from( - $configuration->coverageHtmlColorSuccessLow(), - $configuration->coverageHtmlColorSuccessMedium(), - $configuration->coverageHtmlColorSuccessHigh(), - $configuration->coverageHtmlColorWarning(), - $configuration->coverageHtmlColorDanger(), - ), - Thresholds::from( - $configuration->coverageHtmlLowUpperBound(), - $configuration->coverageHtmlHighLowerBound(), - ), - $customCssFile, - ); - - $writer->process($this->codeCoverage(), $configuration->coverageHtml()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - - if ($configuration->hasCoverageText()) { - $processor = new TextReport( - Thresholds::default(), - $configuration->coverageTextShowUncoveredFiles(), - $configuration->coverageTextShowOnlySummary(), - ); - - $textReport = $processor->process($this->codeCoverage(), $configuration->colors()); - - if ($configuration->coverageText() === 'php://stdout') { - if (!$configuration->noOutput() && !$configuration->debug()) { - $printer->print($textReport); - } - } else { - file_put_contents($configuration->coverageText(), $textReport); - } - } - - if ($configuration->hasCoverageXml()) { - $this->codeCoverageGenerationStart($printer, 'PHPUnit XML'); - - try { - $writer = new XmlReport(Version::id()); - $writer->process($this->codeCoverage(), $configuration->coverageXml()); - - $this->codeCoverageGenerationSucceeded($printer); - - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($printer, $e); - } - } - } - - private function activate(Filter $filter, bool $pathCoverage): void - { - try { - if ($pathCoverage) { - $this->driver = (new Selector)->forLineAndPathCoverage($filter); - } else { - $this->driver = (new Selector)->forLineCoverage($filter); - } - - $this->codeCoverage = new \SebastianBergmann\CodeCoverage\CodeCoverage( - $this->driver, - $filter, - ); - } catch (CodeCoverageException $e) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - $e->getMessage(), - ); - } - } - - private function codeCoverageGenerationStart(Printer $printer, string $format): void - { - $printer->print( - sprintf( - "\nGenerating code coverage report in %s format ... ", - $format, - ), - ); - - $this->timer()->start(); - } - - /** - * @throws NoActiveTimerException - */ - private function codeCoverageGenerationSucceeded(Printer $printer): void - { - $printer->print( - sprintf( - "done [%s]\n", - $this->timer()->stop()->asString(), - ), - ); - } - - /** - * @throws NoActiveTimerException - */ - private function codeCoverageGenerationFailed(Printer $printer, CodeCoverageException $e): void - { - $printer->print( - sprintf( - "failed [%s]\n%s\n", - $this->timer()->stop()->asString(), - $e->getMessage(), - ), - ); - } - - private function timer(): Timer - { - if ($this->timer === null) { - $this->timer = new Timer; - } - - return $this->timer; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Collector.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Collector.php deleted file mode 100644 index f098efc..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Collector.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\DeprecationCollector; - -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\TestRunner\IssueFilter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Collector -{ - private readonly IssueFilter $issueFilter; - - /** - * @var list - */ - private array $deprecations = []; - - /** - * @var list - */ - private array $filteredDeprecations = []; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Facade $facade, IssueFilter $issueFilter) - { - $facade->registerSubscribers( - new TestPreparedSubscriber($this), - new TestTriggeredDeprecationSubscriber($this), - ); - - $this->issueFilter = $issueFilter; - } - - /** - * @return list - */ - public function deprecations(): array - { - return $this->deprecations; - } - - /** - * @return list - */ - public function filteredDeprecations(): array - { - return $this->filteredDeprecations; - } - - public function testPrepared(): void - { - $this->deprecations = []; - } - - public function testTriggeredDeprecation(DeprecationTriggered $event): void - { - $this->deprecations[] = $event->message(); - - if (!$this->issueFilter->shouldBeProcessed($event)) { - return; - } - - $this->filteredDeprecations[] = $event->message(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Facade.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Facade.php deleted file mode 100644 index c8039ff..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Facade.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\DeprecationCollector; - -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\TestRunner\IssueFilter; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Facade -{ - private static null|Collector|InIsolationCollector $collector = null; - private static bool $inIsolation = false; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function init(): void - { - self::collector(); - } - - public static function initForIsolation(): void - { - self::collector(); - - self::$inIsolation = true; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - * - * @return list - */ - public static function deprecations(): array - { - return self::collector()->deprecations(); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - * - * @return list - */ - public static function filteredDeprecations(): array - { - return self::collector()->filteredDeprecations(); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function collector(): Collector|InIsolationCollector - { - if (self::$collector !== null) { - return self::$collector; - } - - $issueFilter = new IssueFilter( - ConfigurationRegistry::get()->source(), - ); - - if (self::$inIsolation) { - self::$collector = new InIsolationCollector( - $issueFilter, - ); - - return self::$collector; - } - - self::$collector = new Collector( - EventFacade::instance(), - $issueFilter, - ); - - return self::$collector; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/InIsolationCollector.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/InIsolationCollector.php deleted file mode 100644 index 3128762..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/InIsolationCollector.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\DeprecationCollector; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\TestRunner\IssueFilter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InIsolationCollector -{ - private readonly IssueFilter $issueFilter; - - /** - * @var list - */ - private array $deprecations = []; - - /** - * @var list - */ - private array $filteredDeprecations = []; - - public function __construct(IssueFilter $issueFilter) - { - $this->issueFilter = $issueFilter; - } - - /** - * @return list - */ - public function deprecations(): array - { - return $this->deprecations; - } - - /** - * @return list - */ - public function filteredDeprecations(): array - { - return $this->filteredDeprecations; - } - - public function testTriggeredDeprecation(DeprecationTriggered $event): void - { - $this->deprecations[] = $event->message(); - - if (!$this->issueFilter->shouldBeProcessed($event)) { - return; - } - - $this->filteredDeprecations[] = $event->message(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/Subscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/Subscriber.php deleted file mode 100644 index 65af6ab..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\DeprecationCollector; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class Subscriber -{ - private readonly Collector|InIsolationCollector $collector; - - public function __construct(Collector|InIsolationCollector $collector) - { - $this->collector = $collector; - } - - protected function collector(): Collector|InIsolationCollector - { - return $this->collector; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestPreparedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index 0e78c31..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\DeprecationCollector; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->collector()->testPrepared(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestTriggeredDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestTriggeredDeprecationSubscriber.php deleted file mode 100644 index a01f1b6..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/DeprecationCollector/Subscriber/TestTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\DeprecationCollector; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\DeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - public function notify(DeprecationTriggered $event): void - { - $this->collector()->testTriggeredDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php deleted file mode 100644 index e5359b7..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php +++ /dev/null @@ -1,461 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use const DEBUG_BACKTRACE_IGNORE_ARGS; -use const E_COMPILE_ERROR; -use const E_COMPILE_WARNING; -use const E_CORE_ERROR; -use const E_CORE_WARNING; -use const E_DEPRECATED; -use const E_ERROR; -use const E_NOTICE; -use const E_PARSE; -use const E_RECOVERABLE_ERROR; -use const E_USER_DEPRECATED; -use const E_USER_ERROR; -use const E_USER_NOTICE; -use const E_USER_WARNING; -use const E_WARNING; -use function array_keys; -use function array_values; -use function assert; -use function debug_backtrace; -use function defined; -use function error_reporting; -use function restore_error_handler; -use function set_error_handler; -use function sprintf; -use PHPUnit\Event; -use PHPUnit\Event\Code\IssueTrigger\Code; -use PHPUnit\Event\Code\IssueTrigger\IssueTrigger; -use PHPUnit\Event\Code\NoTestCaseObjectOnCallStackException; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Runner\Baseline\Baseline; -use PHPUnit\Runner\Baseline\Issue; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; -use PHPUnit\TextUI\Configuration\SourceFilter; -use PHPUnit\Util\ExcludeList; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ErrorHandler -{ - private const UNHANDLEABLE_LEVELS = E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING; - private const INSUPPRESSIBLE_LEVELS = E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR; - private static ?self $instance = null; - private ?Baseline $baseline = null; - private ExcludeList $excludeList; - private bool $enabled = false; - private ?int $originalErrorReportingLevel = null; - private readonly bool $identifyIssueTrigger; - - /** - * @var ?array{functions: list, methods: list} - */ - private ?array $deprecationTriggers = null; - - public static function instance(): self - { - $source = ConfigurationRegistry::get()->source(); - - $identifyIssueTrigger = true; - - if (!$source->identifyIssueTrigger()) { - $identifyIssueTrigger = false; - } - - if (!$source->notEmpty()) { - $identifyIssueTrigger = false; - } - - return self::$instance ?? self::$instance = new self($identifyIssueTrigger); - } - - private function __construct(bool $identifyIssueTrigger) - { - $this->excludeList = new ExcludeList; - $this->identifyIssueTrigger = $identifyIssueTrigger; - } - - /** - * @throws NoTestCaseObjectOnCallStackException - */ - public function __invoke(int $errorNumber, string $errorString, string $errorFile, int $errorLine): false - { - $suppressed = (error_reporting() & ~self::INSUPPRESSIBLE_LEVELS) === 0; - - if ($suppressed && $this->excludeList->isExcluded($errorFile)) { - // @codeCoverageIgnoreStart - return false; - // @codeCoverageIgnoreEnd - } - - /** - * E_STRICT is deprecated since PHP 8.4. - * - * @see https://github.com/sebastianbergmann/phpunit/issues/5956 - */ - if (defined('E_STRICT') && $errorNumber === 2048) { - // @codeCoverageIgnoreStart - $errorNumber = E_NOTICE; - // @codeCoverageIgnoreEnd - } - - $test = Event\Code\TestMethodBuilder::fromCallStack(); - - $ignoredByBaseline = $this->ignoredByBaseline($errorFile, $errorLine, $errorString); - $ignoredByTest = $test->metadata()->isIgnoreDeprecations()->isNotEmpty(); - - switch ($errorNumber) { - case E_NOTICE: - Event\Facade::emitter()->testTriggeredPhpNotice( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - ); - - break; - - case E_USER_NOTICE: - Event\Facade::emitter()->testTriggeredNotice( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - ); - - break; - - case E_WARNING: - Event\Facade::emitter()->testTriggeredPhpWarning( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - ); - - break; - - case E_USER_WARNING: - Event\Facade::emitter()->testTriggeredWarning( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - ); - - break; - - case E_DEPRECATED: - Event\Facade::emitter()->testTriggeredPhpDeprecation( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - $ignoredByBaseline, - $ignoredByTest, - $this->trigger($test, false, $errorFile), - ); - - break; - - case E_USER_DEPRECATED: - $deprecationFrame = $this->guessDeprecationFrame(); - - Event\Facade::emitter()->testTriggeredDeprecation( - $test, - $errorString, - $deprecationFrame['file'] ?? $errorFile, - $deprecationFrame['line'] ?? $errorLine, - $suppressed, - $ignoredByBaseline, - $ignoredByTest, - $this->trigger($test, true), - $this->stackTrace(), - ); - - break; - - case E_USER_ERROR: - Event\Facade::emitter()->testTriggeredError( - $test, - $errorString, - $errorFile, - $errorLine, - $suppressed, - ); - - throw new ErrorException('E_USER_ERROR was triggered'); - - default: - return false; - } - - return false; - } - - public function enable(): void - { - assert(!$this->enabled); - - $oldErrorHandler = set_error_handler($this); - - if ($oldErrorHandler !== null) { - restore_error_handler(); - - return; - } - - $this->enabled = true; - $this->originalErrorReportingLevel = error_reporting(); - - error_reporting($this->originalErrorReportingLevel & self::UNHANDLEABLE_LEVELS); - } - - public function disable(): void - { - if (!$this->enabled) { - return; - } - - restore_error_handler(); - - error_reporting(error_reporting() | $this->originalErrorReportingLevel); - - $this->enabled = false; - $this->originalErrorReportingLevel = null; - } - - public function useBaseline(Baseline $baseline): void - { - $this->baseline = $baseline; - } - - /** - * @param array{functions: list, methods: list} $deprecationTriggers - */ - public function useDeprecationTriggers(array $deprecationTriggers): void - { - $this->deprecationTriggers = $deprecationTriggers; - } - - /** - * @param non-empty-string $file - * @param positive-int $line - * @param non-empty-string $description - */ - private function ignoredByBaseline(string $file, int $line, string $description): bool - { - if ($this->baseline === null) { - return false; - } - - return $this->baseline->has(Issue::from($file, $line, null, $description)); - } - - /** - * @param null|non-empty-string $errorFile - */ - private function trigger(TestMethod $test, bool $isUserland, ?string $errorFile = null): IssueTrigger - { - if (!$this->identifyIssueTrigger) { - return IssueTrigger::from(null, null); - } - - if (!$isUserland) { - assert($errorFile !== null); - - return IssueTrigger::from(Code::PHP, $this->categorizeFile($errorFile, $test)); - } - - $trace = $this->filteredStackTrace(); - - return $this->triggerForUserlandDeprecation($test, $trace); - } - - /** - * @param list $trace - */ - private function triggerForUserlandDeprecation(TestMethod $test, array $trace): IssueTrigger - { - $callee = null; - $caller = null; - - if (isset($trace[0]['file'])) { - $callee = $this->categorizeFile($trace[0]['file'], $test); - } - - if (isset($trace[1]['file'])) { - $caller = $this->categorizeFile($trace[1]['file'], $test); - } - - return IssueTrigger::from($callee, $caller); - } - - /** - * @param non-empty-string $file - */ - private function categorizeFile(string $file, TestMethod $test): Code - { - if ($file === $test->file()) { - return Code::Test; - } - - if (SourceFilter::instance()->includes($file)) { - return Code::FirstParty; - } - - if ($this->excludeList->isExcluded($file)) { - return Code::PHPUnit; - } - - return Code::ThirdParty; - } - - /** - * @return list - */ - private function filteredStackTrace(): array - { - $trace = $this->errorStackTrace(); - - if ($this->deprecationTriggers === null) { - return array_values($trace); - } - - foreach (array_keys($trace) as $frame) { - foreach ($this->deprecationTriggers['functions'] as $function) { - if ($this->frameIsFunction($trace[$frame], $function)) { - unset($trace[$frame]); - - continue 2; - } - } - - foreach ($this->deprecationTriggers['methods'] as $method) { - if ($this->frameIsMethod($trace[$frame], $method)) { - unset($trace[$frame]); - - continue 2; - } - } - } - - return array_values($trace); - } - - /** - * @return ?array{file: non-empty-string, line: positive-int} - */ - private function guessDeprecationFrame(): ?array - { - if ($this->deprecationTriggers === null) { - return null; - } - - $trace = $this->errorStackTrace(); - - foreach ($trace as $frame) { - foreach ($this->deprecationTriggers['functions'] as $function) { - if ($this->frameIsFunction($frame, $function)) { - return $frame; - } - } - - foreach ($this->deprecationTriggers['methods'] as $method) { - if ($this->frameIsMethod($frame, $method)) { - return $frame; - } - } - } - - return null; - } - - /** - * @return list - */ - private function errorStackTrace(): array - { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - - $i = 0; - - do { - unset($trace[$i]); - } while (self::class === ($trace[++$i]['class'] ?? null)); - - return array_values($trace); - } - - /** - * @param array{class? : class-string, function?: non-empty-string} $frame - * @param non-empty-string $function - */ - private function frameIsFunction(array $frame, string $function): bool - { - return !isset($frame['class']) && isset($frame['function']) && $frame['function'] === $function; - } - - /** - * @param array{class? : class-string, function?: non-empty-string} $frame - * @param array{className: class-string, methodName: non-empty-string} $method - */ - private function frameIsMethod(array $frame, array $method): bool - { - return isset($frame['class']) && - $frame['class'] === $method['className'] && - isset($frame['function']) && - $frame['function'] === $method['methodName']; - } - - /** - * @return non-empty-string - */ - private function stackTrace(): string - { - $buffer = ''; - - foreach ($this->errorStackTrace() as $frame) { - /** - * @see https://github.com/sebastianbergmann/phpunit/issues/6043 - */ - if (!isset($frame['file'])) { - continue; - } - - if ($this->excludeList->isExcluded($frame['file'])) { - continue; - } - - $buffer .= sprintf( - "%s:%s\n", - $frame['file'], - $frame['line'] ?? '?', - ); - } - - return $buffer; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php deleted file mode 100644 index 701cbb5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ClassCannotBeFoundException extends RuntimeException implements Exception -{ - public function __construct(string $className, string $file) - { - parent::__construct( - sprintf( - 'Class %s cannot be found in %s', - $className, - $file, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php deleted file mode 100644 index c9d5474..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ClassDoesNotExtendTestCaseException extends RuntimeException implements Exception -{ - public function __construct(string $className, string $file) - { - parent::__construct( - sprintf( - 'Class %s declared in %s does not extend PHPUnit\Framework\TestCase', - $className, - $file, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php deleted file mode 100644 index bf94758..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ClassIsAbstractException extends RuntimeException implements Exception -{ - public function __construct(string $className, string $file) - { - parent::__construct( - sprintf( - 'Class %s declared in %s is abstract', - $className, - $file, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/CodeCoverageFileExistsException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/CodeCoverageFileExistsException.php deleted file mode 100644 index 3ffde5b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/CodeCoverageFileExistsException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CodeCoverageFileExistsException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/DirectoryDoesNotExistException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/DirectoryDoesNotExistException.php deleted file mode 100644 index 626c422..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/DirectoryDoesNotExistException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DirectoryDoesNotExistException extends RuntimeException implements Exception -{ - public function __construct(string $directory) - { - parent::__construct( - sprintf( - 'Directory "%s" does not exist and could not be created', - $directory, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ErrorException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ErrorException.php deleted file mode 100644 index 954684e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ErrorException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use Error; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ErrorException extends Error implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/Exception.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/Exception.php deleted file mode 100644 index d2577c2..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/Exception.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends \PHPUnit\Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php deleted file mode 100644 index 5b84c78..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class FileDoesNotExistException extends RuntimeException implements Exception -{ - public function __construct(string $file) - { - parent::__construct( - sprintf( - 'File "%s" does not exist', - $file, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php deleted file mode 100644 index 016ec85..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidOrderException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php deleted file mode 100644 index d1f593b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidPhptFileException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php deleted file mode 100644 index 5d7a096..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ParameterDoesNotExistException extends RuntimeException implements Exception -{ - public function __construct(string $name) - { - parent::__construct( - sprintf( - 'Parameter "%s" does not exist', - $name, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php deleted file mode 100644 index 3397715..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PhptExternalFileCannotBeLoadedException extends RuntimeException implements Exception -{ - public function __construct(string $section, string $file) - { - parent::__construct( - sprintf( - 'Could not load --%s-- %s for PHPT file', - $section . '_EXTERNAL', - $file, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php deleted file mode 100644 index ca8647e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class UnsupportedPhptSectionException extends RuntimeException implements Exception -{ - public function __construct(string $section) - { - parent::__construct( - sprintf( - 'PHPUnit does not support PHPT %s sections', - $section, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/Extension.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/Extension.php deleted file mode 100644 index 35610bc..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/Extension.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Extension; - -use PHPUnit\TextUI\Configuration\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -interface Extension -{ - public function bootstrap(Configuration $configuration, Facade $facade, ParameterCollection $parameters): void; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php deleted file mode 100644 index b9c6c9f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Extension; - -use const PHP_EOL; -use function assert; -use function class_exists; -use function class_implements; -use function in_array; -use function sprintf; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\TextUI\Configuration\Configuration; -use ReflectionClass; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ExtensionBootstrapper -{ - private Configuration $configuration; - private Facade $facade; - - public function __construct(Configuration $configuration, Facade $facade) - { - $this->configuration = $configuration; - $this->facade = $facade; - } - - /** - * @param non-empty-string $className - * @param array $parameters - */ - public function bootstrap(string $className, array $parameters): void - { - if (!class_exists($className)) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot bootstrap extension because class %s does not exist', - $className, - ), - ); - - return; - } - - if (!in_array(Extension::class, class_implements($className), true)) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot bootstrap extension because class %s does not implement interface %s', - $className, - Extension::class, - ), - ); - - return; - } - - try { - $instance = (new ReflectionClass($className))->newInstance(); - - assert($instance instanceof Extension); - - $instance->bootstrap( - $this->configuration, - $this->facade, - ParameterCollection::fromArray($parameters), - ); - } catch (Throwable $t) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Bootstrapping of extension %s failed: %s%s%s', - $className, - $t->getMessage(), - PHP_EOL, - $t->getTraceAsString(), - ), - ); - - return; - } - - EventFacade::emitter()->testRunnerBootstrappedExtension( - $className, - $parameters, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/Facade.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/Facade.php deleted file mode 100644 index 910f4e5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/Facade.php +++ /dev/null @@ -1,93 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Extension; - -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\Subscriber; -use PHPUnit\Event\Tracer\Tracer; -use PHPUnit\Event\UnknownSubscriberTypeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class Facade -{ - private bool $replacesOutput = false; - private bool $replacesProgressOutput = false; - private bool $replacesResultOutput = false; - private bool $requiresCodeCoverageCollection = false; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function registerSubscribers(Subscriber ...$subscribers): void - { - EventFacade::instance()->registerSubscribers(...$subscribers); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function registerSubscriber(Subscriber $subscriber): void - { - EventFacade::instance()->registerSubscriber($subscriber); - } - - /** - * @throws EventFacadeIsSealedException - */ - public function registerTracer(Tracer $tracer): void - { - EventFacade::instance()->registerTracer($tracer); - } - - public function replaceOutput(): void - { - $this->replacesOutput = true; - } - - public function replacesOutput(): bool - { - return $this->replacesOutput; - } - - public function replaceProgressOutput(): void - { - $this->replacesProgressOutput = true; - } - - public function replacesProgressOutput(): bool - { - return $this->replacesOutput || $this->replacesProgressOutput; - } - - public function replaceResultOutput(): void - { - $this->replacesResultOutput = true; - } - - public function replacesResultOutput(): bool - { - return $this->replacesOutput || $this->replacesResultOutput; - } - - public function requireCodeCoverageCollection(): void - { - $this->requiresCodeCoverageCollection = true; - } - - public function requiresCodeCoverageCollection(): bool - { - return $this->requiresCodeCoverageCollection; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/ParameterCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/ParameterCollection.php deleted file mode 100644 index fef1c9b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/ParameterCollection.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Extension; - -use function array_key_exists; -use PHPUnit\Runner\ParameterDoesNotExistException; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ParameterCollection -{ - /** - * @var array - */ - private array $parameters; - - /** - * @param array $parameters - */ - public static function fromArray(array $parameters): self - { - return new self($parameters); - } - - /** - * @param array $parameters - */ - private function __construct(array $parameters) - { - $this->parameters = $parameters; - } - - public function has(string $name): bool - { - return array_key_exists($name, $this->parameters); - } - - /** - * @throws ParameterDoesNotExistException - */ - public function get(string $name): string - { - if (!$this->has($name)) { - throw new ParameterDoesNotExistException($name); - } - - return $this->parameters[$name]; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php deleted file mode 100644 index 7f3c4b4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php +++ /dev/null @@ -1,149 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Extension; - -use function count; -use function explode; -use function extension_loaded; -use function implode; -use function is_file; -use function sprintf; -use function str_contains; -use PharIo\Manifest\ApplicationName; -use PharIo\Manifest\Exception as ManifestException; -use PharIo\Manifest\ManifestLoader; -use PharIo\Version\Version as PharIoVersion; -use PHPUnit\Event; -use PHPUnit\Runner\Version; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class PharLoader -{ - /** - * @param non-empty-string $directory - * - * @return list - */ - public function loadPharExtensionsInDirectory(string $directory): array - { - $pharExtensionLoaded = extension_loaded('phar'); - $loadedExtensions = []; - - foreach ((new FileIteratorFacade)->getFilesAsArray($directory, '.phar') as $file) { - if (!$pharExtensionLoaded) { - Event\Facade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot load extension from %s because the PHAR extension is not available', - $file, - ), - ); - - continue; - } - - if (!is_file('phar://' . $file . '/manifest.xml')) { - Event\Facade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - '%s is not an extension for PHPUnit', - $file, - ), - ); - - continue; - } - - try { - $applicationName = new ApplicationName('phpunit/phpunit'); - $version = new PharIoVersion($this->phpunitVersion()); - $manifest = ManifestLoader::fromFile('phar://' . $file . '/manifest.xml'); - - if (!$manifest->isExtensionFor($applicationName)) { - Event\Facade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - '%s is not an extension for PHPUnit', - $file, - ), - ); - - continue; - } - - if (!$manifest->isExtensionFor($applicationName, $version)) { - Event\Facade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - '%s is not compatible with PHPUnit %s', - $file, - Version::series(), - ), - ); - - continue; - } - } catch (ManifestException $e) { - Event\Facade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot load extension from %s: %s', - $file, - $e->getMessage(), - ), - ); - - continue; - } - - try { - @require $file; - } catch (Throwable $t) { - Event\Facade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot load extension from %s: %s', - $file, - $t->getMessage(), - ), - ); - - continue; - } - - $loadedExtensions[] = $manifest->getName()->asString() . ' ' . $manifest->getVersion()->getVersionString(); - - Event\Facade::emitter()->testRunnerLoadedExtensionFromPhar( - $file, - $manifest->getName()->asString(), - $manifest->getVersion()->getVersionString(), - ); - } - - return $loadedExtensions; - } - - private function phpunitVersion(): string - { - $version = Version::id(); - - if (!str_contains($version, '-')) { - return $version; - } - - $parts = explode('.', explode('-', $version)[0]); - - if (count($parts) === 2) { - $parts[] = 0; - } - - return implode('.', $parts); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php deleted file mode 100644 index 45296b2..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function in_array; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExcludeGroupFilterIterator extends GroupFilterIterator -{ - /** - * @param non-empty-string $id - * @param list $groupTests - */ - protected function doAccept(string $id, array $groupTests): bool - { - return !in_array($id, $groupTests, true); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeNameFilterIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeNameFilterIterator.php deleted file mode 100644 index ff84593..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeNameFilterIterator.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ExcludeNameFilterIterator extends NameFilterIterator -{ - protected function doAccept(bool $result): bool - { - return !$result; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php deleted file mode 100644 index 0335e25..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php +++ /dev/null @@ -1,104 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function assert; -use FilterIterator; -use Iterator; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestSuite; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Factory -{ - /** - * @var list>>, argument: list|non-empty-string}> - */ - private array $filters = []; - - /** - * @param list $testIds - */ - public function addTestIdFilter(array $testIds): void - { - $this->filters[] = [ - 'className' => TestIdFilterIterator::class, - 'argument' => $testIds, - ]; - } - - /** - * @param list $groups - */ - public function addIncludeGroupFilter(array $groups): void - { - $this->filters[] = [ - 'className' => IncludeGroupFilterIterator::class, - 'argument' => $groups, - ]; - } - - /** - * @param list $groups - */ - public function addExcludeGroupFilter(array $groups): void - { - $this->filters[] = [ - 'className' => ExcludeGroupFilterIterator::class, - 'argument' => $groups, - ]; - } - - /** - * @param non-empty-string $name - */ - public function addIncludeNameFilter(string $name): void - { - $this->filters[] = [ - 'className' => IncludeNameFilterIterator::class, - 'argument' => $name, - ]; - } - - /** - * @param non-empty-string $name - */ - public function addExcludeNameFilter(string $name): void - { - $this->filters[] = [ - 'className' => ExcludeNameFilterIterator::class, - 'argument' => $name, - ]; - } - - /** - * @param Iterator $iterator - * - * @return FilterIterator> - */ - public function factory(Iterator $iterator, TestSuite $suite): FilterIterator - { - foreach ($this->filters as $filter) { - $iterator = new $filter['className']( - $iterator, - $filter['argument'], - $suite, - ); - } - - assert($iterator instanceof FilterIterator); - - return $iterator; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php deleted file mode 100644 index a4c2064..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function array_merge; -use function array_push; -use function in_array; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\PhptTestCase; -use RecursiveFilterIterator; -use RecursiveIterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class GroupFilterIterator extends RecursiveFilterIterator -{ - /** - * @var list - */ - private readonly array $groupTests; - - /** - * @param RecursiveIterator $iterator - * @param list $groups - */ - public function __construct(RecursiveIterator $iterator, array $groups, TestSuite $suite) - { - parent::__construct($iterator); - - $groupTests = []; - - foreach ($suite->groups() as $group => $tests) { - if (in_array($group, $groups, true)) { - $groupTests = array_merge($groupTests, $tests); - - array_push($groupTests, ...$groupTests); - } - } - - $this->groupTests = $groupTests; - } - - public function accept(): bool - { - $test = $this->getInnerIterator()->current(); - - if ($test instanceof TestSuite) { - return true; - } - - if ($test instanceof TestCase || $test instanceof PhptTestCase) { - return $this->doAccept($test->valueObjectForEvents()->id(), $this->groupTests); - } - - return true; - } - - /** - * @param non-empty-string $id - * @param list $groupTests - */ - abstract protected function doAccept(string $id, array $groupTests): bool; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php deleted file mode 100644 index afdaefd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function in_array; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class IncludeGroupFilterIterator extends GroupFilterIterator -{ - /** - * @param non-empty-string $id - * @param list $groupTests - */ - protected function doAccept(string $id, array $groupTests): bool - { - return in_array($id, $groupTests, true); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/IncludeNameFilterIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/IncludeNameFilterIterator.php deleted file mode 100644 index 9bca65e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/IncludeNameFilterIterator.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class IncludeNameFilterIterator extends NameFilterIterator -{ - protected function doAccept(bool $result): bool - { - return $result; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php deleted file mode 100644 index 902c4df..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php +++ /dev/null @@ -1,137 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function end; -use function preg_match; -use function sprintf; -use function str_replace; -use function substr; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\PhptTestCase; -use RecursiveFilterIterator; -use RecursiveIterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract class NameFilterIterator extends RecursiveFilterIterator -{ - /** - * @var non-empty-string - */ - private readonly string $regularExpression; - private readonly ?int $dataSetMinimum; - private readonly ?int $dataSetMaximum; - - /** - * @param RecursiveIterator $iterator - * @param non-empty-string $filter - */ - public function __construct(RecursiveIterator $iterator, string $filter) - { - parent::__construct($iterator); - - $preparedFilter = $this->prepareFilter($filter); - - $this->regularExpression = $preparedFilter['regularExpression']; - $this->dataSetMinimum = $preparedFilter['dataSetMinimum']; - $this->dataSetMaximum = $preparedFilter['dataSetMaximum']; - } - - public function accept(): bool - { - $test = $this->getInnerIterator()->current(); - - if ($test instanceof TestSuite) { - return true; - } - - if ($test instanceof PhptTestCase) { - return false; - } - - $name = $test::class . '::' . $test->nameWithDataSet(); - - $accepted = @preg_match($this->regularExpression, $name, $matches) === 1; - - if ($accepted && isset($this->dataSetMaximum)) { - $set = end($matches); - $accepted = $set >= $this->dataSetMinimum && $set <= $this->dataSetMaximum; - } - - return $this->doAccept($accepted); - } - - abstract protected function doAccept(bool $result): bool; - - /** - * @param non-empty-string $filter - * - * @return array{regularExpression: non-empty-string, dataSetMinimum: ?int, dataSetMaximum: ?int} - */ - private function prepareFilter(string $filter): array - { - $dataSetMinimum = null; - $dataSetMaximum = null; - - if (preg_match('/[a-zA-Z0-9]/', substr($filter, 0, 1)) === 1 || @preg_match($filter, '') === false) { - // Handles: - // * testAssertEqualsSucceeds#4 - // * testAssertEqualsSucceeds#4-8 - if (preg_match('/^(.*?)#(\d+)(?:-(\d+))?$/', $filter, $matches)) { - if (isset($matches[3]) && $matches[2] < $matches[3]) { - $filter = sprintf( - '%s.*with data set #(\d+)$', - $matches[1], - ); - - $dataSetMinimum = (int) $matches[2]; - $dataSetMaximum = (int) $matches[3]; - } else { - $filter = sprintf( - '%s.*with data set #%s$', - $matches[1], - $matches[2], - ); - } - } // Handles: - // * testDetermineJsonError@JSON_ERROR_NONE - // * testDetermineJsonError@JSON.* - elseif (preg_match('/^(.*?)@(.+)$/', $filter, $matches)) { - $filter = sprintf( - '%s.*with data set "%s"$', - $matches[1], - $matches[2], - ); - } - - // Escape delimiters in regular expression. Do NOT use preg_quote, - // to keep magic characters. - $filter = sprintf( - '/%s/i', - str_replace( - '/', - '\\/', - $filter, - ), - ); - } - - return [ - 'regularExpression' => $filter, - 'dataSetMinimum' => $dataSetMinimum, - 'dataSetMaximum' => $dataSetMaximum, - ]; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php deleted file mode 100644 index 256cb72..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\Filter; - -use function in_array; -use PHPUnit\Event\TestData\NoDataSetFromDataProviderException; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\PhptTestCase; -use RecursiveFilterIterator; -use RecursiveIterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestIdFilterIterator extends RecursiveFilterIterator -{ - /** - * @var non-empty-list - */ - private readonly array $testIds; - - /** - * @param RecursiveIterator $iterator - * @param non-empty-list $testIds - */ - public function __construct(RecursiveIterator $iterator, array $testIds) - { - parent::__construct($iterator); - - $this->testIds = $testIds; - } - - public function accept(): bool - { - $test = $this->getInnerIterator()->current(); - - if ($test instanceof TestSuite) { - return true; - } - - if (!$test instanceof TestCase && !$test instanceof PhptTestCase) { - return false; - } - - try { - return in_array($test->valueObjectForEvents()->id(), $this->testIds, true); - } catch (NoDataSetFromDataProviderException) { - return false; - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php deleted file mode 100644 index be46055..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php +++ /dev/null @@ -1,89 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -use function gc_collect_cycles; -use function gc_disable; -use function gc_enable; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\UnknownSubscriberTypeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class GarbageCollectionHandler -{ - private readonly Facade $facade; - private readonly int $threshold; - private int $tests = 0; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Facade $facade, int $threshold) - { - $this->facade = $facade; - $this->threshold = $threshold; - - $this->registerSubscribers(); - } - - public function executionStarted(): void - { - gc_disable(); - - $this->facade->emitter()->testRunnerDisabledGarbageCollection(); - - gc_collect_cycles(); - - $this->facade->emitter()->testRunnerTriggeredGarbageCollection(); - } - - public function executionFinished(): void - { - gc_collect_cycles(); - - $this->facade->emitter()->testRunnerTriggeredGarbageCollection(); - - gc_enable(); - - $this->facade->emitter()->testRunnerEnabledGarbageCollection(); - } - - public function testFinished(): void - { - $this->tests++; - - if ($this->tests === $this->threshold) { - gc_collect_cycles(); - - $this->facade->emitter()->testRunnerTriggeredGarbageCollection(); - - $this->tests = 0; - } - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(): void - { - $this->facade->registerSubscribers( - new ExecutionStartedSubscriber($this), - new ExecutionFinishedSubscriber($this), - new TestFinishedSubscriber($this), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php deleted file mode 100644 index 4ff8e11..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\TestRunner\ExecutionFinished; -use PHPUnit\Event\TestRunner\ExecutionFinishedSubscriber as TestRunnerExecutionFinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ExecutionFinishedSubscriber extends Subscriber implements TestRunnerExecutionFinishedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(ExecutionFinished $event): void - { - $this->handler()->executionFinished(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php deleted file mode 100644 index 1b99b8b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\TestRunner\ExecutionStartedSubscriber as TestRunnerExecutionStartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ExecutionStartedSubscriber extends Subscriber implements TestRunnerExecutionStartedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(ExecutionStarted $event): void - { - $this->handler()->executionStarted(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php deleted file mode 100644 index 3c9abce..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class Subscriber -{ - private GarbageCollectionHandler $handler; - - public function __construct(GarbageCollectionHandler $handler) - { - $this->handler = $handler; - } - - protected function handler(): GarbageCollectionHandler - { - return $this->handler; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index 4ffae38..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\GarbageCollection; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(Finished $event): void - { - $this->handler()->testFinished(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/HookMethod/HookMethod.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/HookMethod/HookMethod.php deleted file mode 100644 index 2442f75..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/HookMethod/HookMethod.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class HookMethod -{ - /** - * @var non-empty-string - */ - private string $methodName; - private int $priority; - - /** - * @param non-empty-string $methodName - */ - public function __construct(string $methodName, int $priority) - { - $this->methodName = $methodName; - $this->priority = $priority; - } - - /** - * @return non-empty-string - */ - public function methodName(): string - { - return $this->methodName; - } - - public function priority(): int - { - return $this->priority; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/HookMethod/HookMethodCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/HookMethod/HookMethodCollection.php deleted file mode 100644 index a3593fd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/HookMethod/HookMethodCollection.php +++ /dev/null @@ -1,90 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function array_map; -use function usort; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class HookMethodCollection -{ - private readonly bool $shouldPrepend; - - /** - * @var non-empty-list - */ - private array $hookMethods; - - public static function defaultBeforeClass(): self - { - return new self(new HookMethod('setUpBeforeClass', 0), true); - } - - public static function defaultBefore(): self - { - return new self(new HookMethod('setUp', 0), true); - } - - public static function defaultPreCondition(): self - { - return new self(new HookMethod('assertPreConditions', 0), true); - } - - public static function defaultPostCondition(): self - { - return new self(new HookMethod('assertPostConditions', 0), false); - } - - public static function defaultAfter(): self - { - return new self(new HookMethod('tearDown', 0), false); - } - - public static function defaultAfterClass(): self - { - return new self(new HookMethod('tearDownAfterClass', 0), false); - } - - private function __construct(HookMethod $default, bool $shouldPrepend) - { - $this->hookMethods = [$default]; - $this->shouldPrepend = $shouldPrepend; - } - - public function add(HookMethod $hookMethod): self - { - if ($this->shouldPrepend) { - $this->hookMethods = [$hookMethod, ...$this->hookMethods]; - } else { - $this->hookMethods[] = $hookMethod; - } - - return $this; - } - - /** - * @return list - */ - public function methodNamesSortedByPriority(): array - { - $hookMethods = $this->hookMethods; - - usort($hookMethods, static fn (HookMethod $a, HookMethod $b) => $b->priority() <=> $a->priority()); - - return array_map( - static fn (HookMethod $hookMethod) => $hookMethod->methodName(), - $hookMethods, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/IssueFilter.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/IssueFilter.php deleted file mode 100644 index b7a5366..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/IssueFilter.php +++ /dev/null @@ -1,116 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\SourceFilter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class IssueFilter -{ - private Source $source; - - public function __construct(Source $source) - { - $this->source = $source; - } - - public function shouldBeProcessed(DeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpWarningTriggered|WarningTriggered $event, bool $onlyTestMethods = false): bool - { - if ($onlyTestMethods && !$event->test()->isTestMethod()) { - return false; - } - - if ($event instanceof DeprecationTriggered || $event instanceof PhpDeprecationTriggered) { - if ($event->ignoredByTest()) { - return false; - } - - if ($this->source->ignoreSelfDeprecations() && $event->trigger()->isSelf()) { - return false; - } - - if ($this->source->ignoreDirectDeprecations() && $event->trigger()->isDirect()) { - return false; - } - - if ($this->source->ignoreIndirectDeprecations() && $event->trigger()->isIndirect()) { - return false; - } - - if (!$this->source->ignoreSuppressionOfDeprecations() && $event->wasSuppressed()) { - return false; - } - - if ($this->source->restrictDeprecations() && !SourceFilter::instance()->includes($event->file())) { - return false; - } - } - - if ($event instanceof NoticeTriggered) { - if (!$this->source->ignoreSuppressionOfNotices() && $event->wasSuppressed()) { - return false; - } - - if ($this->source->restrictNotices() && !SourceFilter::instance()->includes($event->file())) { - return false; - } - } - - if ($event instanceof PhpNoticeTriggered) { - if (!$this->source->ignoreSuppressionOfPhpNotices() && $event->wasSuppressed()) { - return false; - } - - if ($this->source->restrictNotices() && !SourceFilter::instance()->includes($event->file())) { - return false; - } - } - - if ($event instanceof WarningTriggered) { - if (!$this->source->ignoreSuppressionOfWarnings() && $event->wasSuppressed()) { - return false; - } - - if ($this->source->restrictWarnings() && !SourceFilter::instance()->includes($event->file())) { - return false; - } - } - - if ($event instanceof PhpWarningTriggered) { - if (!$this->source->ignoreSuppressionOfPhpWarnings() && $event->wasSuppressed()) { - return false; - } - - if ($this->source->restrictWarnings() && !SourceFilter::instance()->includes($event->file())) { - return false; - } - } - - if ($event instanceof ErrorTriggered) { - if (!$this->source->ignoreSuppressionOfErrors() && $event->wasSuppressed()) { - return false; - } - } - - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/PHPT/PhptTestCase.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/PHPT/PhptTestCase.php deleted file mode 100644 index 8764b46..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/PHPT/PhptTestCase.php +++ /dev/null @@ -1,1019 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use const DEBUG_BACKTRACE_IGNORE_ARGS; -use const DIRECTORY_SEPARATOR; -use function array_merge; -use function assert; -use function basename; -use function debug_backtrace; -use function defined; -use function dirname; -use function explode; -use function extension_loaded; -use function file; -use function file_exists; -use function file_get_contents; -use function file_put_contents; -use function is_array; -use function is_file; -use function is_readable; -use function is_string; -use function ltrim; -use function ob_get_clean; -use function ob_start; -use function preg_match; -use function preg_replace; -use function preg_split; -use function realpath; -use function rtrim; -use function sprintf; -use function str_contains; -use function str_replace; -use function str_starts_with; -use function strncasecmp; -use function substr; -use function trim; -use function unlink; -use function unserialize; -use function var_export; -use PHPUnit\Event\Code\Phpt; -use PHPUnit\Event\Code\ThrowableBuilder; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\NoPreviousThrowableException; -use PHPUnit\Framework\Assert; -use PHPUnit\Framework\AssertionFailedError; -use PHPUnit\Framework\ExecutionOrderDependency; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\IncompleteTestError; -use PHPUnit\Framework\PhptAssertionFailedError; -use PHPUnit\Framework\Reorderable; -use PHPUnit\Framework\SelfDescribing; -use PHPUnit\Framework\Test; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; -use PHPUnit\Util\PHP\Job; -use PHPUnit\Util\PHP\JobRunnerRegistry; -use SebastianBergmann\CodeCoverage\Data\RawCodeCoverageData; -use SebastianBergmann\CodeCoverage\InvalidArgumentException; -use SebastianBergmann\CodeCoverage\ReflectionException; -use SebastianBergmann\CodeCoverage\Test\TestSize\TestSize; -use SebastianBergmann\CodeCoverage\Test\TestStatus\TestStatus; -use SebastianBergmann\CodeCoverage\TestIdMissingException; -use SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException; -use SebastianBergmann\Template\Template; -use staabm\SideEffectsDetector\SideEffect; -use staabm\SideEffectsDetector\SideEffectsDetector; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PhptTestCase implements Reorderable, SelfDescribing, Test -{ - /** - * @var non-empty-string - */ - private readonly string $filename; - private string $output = ''; - - /** - * Constructs a test case with the given filename. - * - * @param non-empty-string $filename - */ - public function __construct(string $filename) - { - $this->filename = $filename; - - $this->ensureCoverageFileDoesNotExist(); - } - - /** - * Counts the number of test cases executed by run(TestResult result). - */ - public function count(): int - { - return 1; - } - - /** - * Runs a test and collects its result in a TestResult instance. - * - * @throws \PHPUnit\Framework\Exception - * @throws \SebastianBergmann\Template\InvalidArgumentException - * @throws Exception - * @throws InvalidArgumentException - * @throws NoPreviousThrowableException - * @throws ReflectionException - * @throws TestIdMissingException - * @throws UnintentionallyCoveredCodeException - * - * @noinspection RepetitiveMethodCallsInspection - */ - public function run(): void - { - $emitter = EventFacade::emitter(); - - $emitter->testPreparationStarted( - $this->valueObjectForEvents(), - ); - - try { - $sections = $this->parse(); - } catch (Exception $e) { - $emitter->testPrepared($this->valueObjectForEvents()); - $emitter->testErrored($this->valueObjectForEvents(), ThrowableBuilder::from($e)); - $emitter->testFinished($this->valueObjectForEvents(), 0); - - return; - } - - $code = $this->render($sections['FILE']); - $xfail = false; - $environmentVariables = []; - $phpSettings = $this->parseIniSection($this->settings(CodeCoverage::instance()->isActive())); - $input = null; - $arguments = []; - - $emitter->testPrepared($this->valueObjectForEvents()); - - if (isset($sections['INI'])) { - $phpSettings = $this->parseIniSection($sections['INI'], $phpSettings); - } - - if (isset($sections['ENV'])) { - $environmentVariables = $this->parseEnvSection($sections['ENV']); - } - - if ($this->shouldTestBeSkipped($sections, $phpSettings)) { - return; - } - - if (isset($sections['XFAIL'])) { - $xfail = trim($sections['XFAIL']); - } - - if (isset($sections['STDIN'])) { - $input = $sections['STDIN']; - } - - if (isset($sections['ARGS'])) { - $arguments = explode(' ', $sections['ARGS']); - } - - if (CodeCoverage::instance()->isActive()) { - $codeCoverageCacheDirectory = null; - - if (CodeCoverage::instance()->codeCoverage()->cachesStaticAnalysis()) { - $codeCoverageCacheDirectory = CodeCoverage::instance()->codeCoverage()->cacheDirectory(); - } - - $this->renderForCoverage( - $code, - CodeCoverage::instance()->codeCoverage()->collectsBranchAndPathCoverage(), - $codeCoverageCacheDirectory, - ); - } - - $jobResult = JobRunnerRegistry::run( - new Job( - $code, - $this->stringifyIni($phpSettings), - $environmentVariables, - $arguments, - $input, - true, - ), - ); - - Facade::emitter()->testRunnerFinishedChildProcess($jobResult->stdout(), $jobResult->stderr()); - - $this->output = $jobResult->stdout(); - - if (CodeCoverage::instance()->isActive()) { - $coverage = $this->cleanupForCoverage(); - - CodeCoverage::instance()->codeCoverage()->start($this->filename, TestSize::large()); - - CodeCoverage::instance()->codeCoverage()->append( - $coverage, - $this->filename, - true, - TestStatus::unknown(), - ); - } - - $passed = true; - - try { - $this->assertPhptExpectation($sections, $this->output); - } catch (AssertionFailedError $e) { - $failure = $e; - - if ($xfail !== false) { - $failure = new IncompleteTestError($xfail, 0, $e); - } elseif ($e instanceof ExpectationFailedException) { - $comparisonFailure = $e->getComparisonFailure(); - - if ($comparisonFailure) { - $diff = $comparisonFailure->getDiff(); - } else { - $diff = $e->getMessage(); - } - - $hint = $this->locationHintFromDiff($diff, $sections); - $trace = array_merge($hint, debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)); - $failure = new PhptAssertionFailedError( - $e->getMessage(), - 0, - (string) $trace[0]['file'], - (int) $trace[0]['line'], - $trace, - $comparisonFailure ? $diff : '', - ); - } - - if ($failure instanceof IncompleteTestError) { - $emitter->testMarkedAsIncomplete($this->valueObjectForEvents(), ThrowableBuilder::from($failure)); - } else { - $emitter->testFailed($this->valueObjectForEvents(), ThrowableBuilder::from($failure), null); - } - - $passed = false; - } catch (Throwable $t) { - $emitter->testErrored($this->valueObjectForEvents(), ThrowableBuilder::from($t)); - - $passed = false; - } - - if ($passed) { - $emitter->testPassed($this->valueObjectForEvents()); - } - - $this->runClean($sections, CodeCoverage::instance()->isActive()); - - $emitter->testFinished($this->valueObjectForEvents(), 1); - } - - /** - * Returns the name of the test case. - */ - public function getName(): string - { - return $this->toString(); - } - - /** - * Returns a string representation of the test case. - */ - public function toString(): string - { - return $this->filename; - } - - public function usesDataProvider(): false - { - return false; - } - - public function numberOfAssertionsPerformed(): int - { - return 1; - } - - public function output(): string - { - return $this->output; - } - - public function hasOutput(): bool - { - return !empty($this->output); - } - - public function sortId(): string - { - return $this->filename; - } - - /** - * @return list - */ - public function provides(): array - { - return []; - } - - /** - * @return list - */ - public function requires(): array - { - return []; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function valueObjectForEvents(): Phpt - { - return new Phpt($this->filename); - } - - /** - * @param array|string $content - * @param array|non-empty-string> $ini - * - * @return array|non-empty-string> - */ - private function parseIniSection(array|string $content, array $ini = []): array - { - if (is_string($content)) { - $content = explode("\n", trim($content)); - } - - foreach ($content as $setting) { - if (!str_contains($setting, '=')) { - continue; - } - - $setting = explode('=', $setting, 2); - $name = trim($setting[0]); - $value = trim($setting[1]); - - if ($name === 'extension' || $name === 'zend_extension') { - if (!isset($ini[$name])) { - $ini[$name] = []; - } - - $ini[$name][] = $value; - - continue; - } - - $ini[$name] = $value; - } - - return $ini; - } - - /** - * @return array - */ - private function parseEnvSection(string $content): array - { - $env = []; - - foreach (explode("\n", trim($content)) as $e) { - $e = explode('=', trim($e), 2); - - if ($e[0] !== '' && isset($e[1])) { - $env[$e[0]] = $e[1]; - } - } - - return $env; - } - - /** - * @param array $sections - * - * @throws Exception - * @throws ExpectationFailedException - */ - private function assertPhptExpectation(array $sections, string $output): void - { - $assertions = [ - 'EXPECT' => 'assertEquals', - 'EXPECTF' => 'assertStringMatchesFormat', - 'EXPECTREGEX' => 'assertMatchesRegularExpression', - ]; - - $actual = preg_replace('/\r\n/', "\n", trim($output)); - - foreach ($assertions as $sectionName => $sectionAssertion) { - if (isset($sections[$sectionName])) { - $sectionContent = preg_replace('/\r\n/', "\n", trim($sections[$sectionName])); - $expected = $sectionName === 'EXPECTREGEX' ? "/{$sectionContent}/" : $sectionContent; - - Assert::$sectionAssertion($expected, $actual); - - return; - } - } - - throw new InvalidPhptFileException; - } - - /** - * @param array $sections - * @param array|non-empty-string> $settings - */ - private function shouldTestBeSkipped(array $sections, array $settings): bool - { - if (!isset($sections['SKIPIF'])) { - return false; - } - - $skipIfCode = $this->render($sections['SKIPIF']); - - if ($this->shouldRunInSubprocess($sections, $skipIfCode)) { - $jobResult = JobRunnerRegistry::run( - new Job( - $skipIfCode, - $this->stringifyIni($settings), - ), - ); - $output = $jobResult->stdout(); - - Facade::emitter()->testRunnerFinishedChildProcess($output, $jobResult->stderr()); - } else { - $output = $this->runCodeInLocalSandbox($skipIfCode); - } - - if (!strncasecmp('skip', ltrim($output), 4)) { - $message = ''; - - if (preg_match('/^\s*skip\s*(.+)\s*/i', $output, $skipMatch)) { - $message = substr($skipMatch[1], 2); - } - - EventFacade::emitter()->testSkipped( - $this->valueObjectForEvents(), - $message, - ); - - EventFacade::emitter()->testFinished($this->valueObjectForEvents(), 0); - - return true; - } - - return false; - } - - /** - * @param array $sections - */ - private function shouldRunInSubprocess(array $sections, string $cleanCode): bool - { - if (isset($sections['INI'])) { - // to get per-test INI settings, we need a dedicated subprocess - return true; - } - - $detector = new SideEffectsDetector; - $sideEffects = $detector->getSideEffects($cleanCode); - - if ($sideEffects === []) { - return false; // no side-effects - } - - foreach ($sideEffects as $sideEffect) { - if ( - $sideEffect === SideEffect::STANDARD_OUTPUT || // stdout is fine, we will catch it using output-buffering - $sideEffect === SideEffect::INPUT_OUTPUT // IO is fine, as it doesn't pollute the main process - ) { - continue; - } - - return true; - } - - return false; - } - - private function runCodeInLocalSandbox(string $code): string - { - $code = preg_replace('/^<\?(?:php)?|\?>\s*+$/', '', $code); - $code = preg_replace('/declare\S?\([^)]+\)\S?;/', '', $code); - - // wrap in immediately invoked function to isolate local-side-effects of $code from our own process - $code = '(function() {' . $code . '})();'; - ob_start(); - @eval($code); - - return ob_get_clean(); - } - - /** - * @param array $sections - */ - private function runClean(array $sections, bool $collectCoverage): void - { - if (!isset($sections['CLEAN'])) { - return; - } - - $cleanCode = $this->render($sections['CLEAN']); - - if ($this->shouldRunInSubprocess($sections, $cleanCode)) { - $result = JobRunnerRegistry::run( - new Job( - $cleanCode, - $this->settings($collectCoverage), - ), - ); - - Facade::emitter()->testRunnerFinishedChildProcess($result->stdout(), $result->stderr()); - } else { - $this->runCodeInLocalSandbox($cleanCode); - } - } - - /** - * @throws Exception - * - * @return array - */ - private function parse(): array - { - $sections = []; - $section = ''; - - $unsupportedSections = [ - 'CGI', - 'COOKIE', - 'DEFLATE_POST', - 'EXPECTHEADERS', - 'EXTENSIONS', - 'GET', - 'GZIP_POST', - 'HEADERS', - 'PHPDBG', - 'POST', - 'POST_RAW', - 'PUT', - 'REDIRECTTEST', - 'REQUEST', - ]; - - $lineNr = 0; - - foreach (file($this->filename) as $line) { - $lineNr++; - - if (preg_match('/^--([_A-Z]+)--/', $line, $result)) { - $section = $result[1]; - $sections[$section] = ''; - $sections[$section . '_offset'] = $lineNr; - - continue; - } - - if (empty($section)) { - throw new InvalidPhptFileException; - } - - $sections[$section] .= $line; - } - - if (isset($sections['FILEEOF'])) { - $sections['FILE'] = rtrim($sections['FILEEOF'], "\r\n"); - unset($sections['FILEEOF']); - } - - $this->parseExternal($sections); - - if (!$this->validate($sections)) { - throw new InvalidPhptFileException; - } - - foreach ($unsupportedSections as $section) { - if (isset($sections[$section])) { - throw new UnsupportedPhptSectionException($section); - } - } - - return $sections; - } - - /** - * @param array $sections - * - * @throws Exception - */ - private function parseExternal(array &$sections): void - { - $allowSections = [ - 'FILE', - 'EXPECT', - 'EXPECTF', - 'EXPECTREGEX', - ]; - - $testDirectory = dirname($this->filename) . DIRECTORY_SEPARATOR; - - foreach ($allowSections as $section) { - if (isset($sections[$section . '_EXTERNAL'])) { - $externalFilename = trim($sections[$section . '_EXTERNAL']); - - if (!is_file($testDirectory . $externalFilename) || - !is_readable($testDirectory . $externalFilename)) { - throw new PhptExternalFileCannotBeLoadedException( - $section, - $testDirectory . $externalFilename, - ); - } - - $contents = file_get_contents($testDirectory . $externalFilename); - - assert($contents !== false && $contents !== ''); - - $sections[$section] = $contents; - } - } - } - - /** - * @param array $sections - */ - private function validate(array $sections): bool - { - $requiredSections = [ - 'FILE', - [ - 'EXPECT', - 'EXPECTF', - 'EXPECTREGEX', - ], - ]; - - foreach ($requiredSections as $section) { - if (is_array($section)) { - $foundSection = false; - - foreach ($section as $anySection) { - if (isset($sections[$anySection])) { - $foundSection = true; - - break; - } - } - - if (!$foundSection) { - return false; - } - - continue; - } - - if (!isset($sections[$section])) { - return false; - } - } - - return true; - } - - /** - * @param non-empty-string $code - * - * @return non-empty-string - */ - private function render(string $code): string - { - return str_replace( - [ - '__DIR__', - '__FILE__', - ], - [ - "'" . dirname($this->filename) . "'", - "'" . $this->filename . "'", - ], - $code, - ); - } - - /** - * @return array{coverage: non-empty-string, job: non-empty-string} - */ - private function coverageFiles(): array - { - $baseDir = dirname(realpath($this->filename)) . DIRECTORY_SEPARATOR; - $basename = basename($this->filename, 'phpt'); - - return [ - 'coverage' => $baseDir . $basename . 'coverage', - 'job' => $baseDir . $basename . 'php', - ]; - } - - /** - * @param non-empty-string $job - * - * @param-out non-empty-string $job - * - * @throws \SebastianBergmann\Template\InvalidArgumentException - */ - private function renderForCoverage(string &$job, bool $pathCoverage, ?string $codeCoverageCacheDirectory): void - { - $files = $this->coverageFiles(); - - $template = new Template( - __DIR__ . '/templates/phpt.tpl', - ); - - $composerAutoload = '\'\''; - - if (defined('PHPUNIT_COMPOSER_INSTALL')) { - $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, true); - } - - $phar = '\'\''; - - if (defined('__PHPUNIT_PHAR__')) { - $phar = var_export(__PHPUNIT_PHAR__, true); - } - - if ($codeCoverageCacheDirectory === null) { - $codeCoverageCacheDirectory = 'null'; - } else { - $codeCoverageCacheDirectory = "'" . $codeCoverageCacheDirectory . "'"; - } - - $bootstrap = ''; - - if (ConfigurationRegistry::get()->hasBootstrap()) { - $bootstrap = ConfigurationRegistry::get()->bootstrap(); - } - - $template->setVar( - [ - 'bootstrap' => $bootstrap, - 'composerAutoload' => $composerAutoload, - 'phar' => $phar, - 'job' => $files['job'], - 'coverageFile' => $files['coverage'], - 'driverMethod' => $pathCoverage ? 'forLineAndPathCoverage' : 'forLineCoverage', - 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory, - ], - ); - - file_put_contents($files['job'], $job); - - $rendered = $template->render(); - - assert($rendered !== ''); - - $job = $rendered; - } - - /** - * @phpstan-ignore return.internalClass - */ - private function cleanupForCoverage(): RawCodeCoverageData - { - /** - * @phpstan-ignore staticMethod.internalClass - */ - $coverage = RawCodeCoverageData::fromXdebugWithoutPathCoverage([]); - $files = $this->coverageFiles(); - - $buffer = false; - - if (is_file($files['coverage'])) { - $buffer = @file_get_contents($files['coverage']); - } - - if ($buffer !== false) { - $coverage = @unserialize( - $buffer, - [ - 'allowed_classes' => [ - /** @phpstan-ignore classConstant.internalClass */ - RawCodeCoverageData::class, - ], - ], - ); - - if ($coverage === false) { - /** - * @phpstan-ignore staticMethod.internalClass - */ - $coverage = RawCodeCoverageData::fromXdebugWithoutPathCoverage([]); - } - } - - foreach ($files as $file) { - @unlink($file); - } - - return $coverage; - } - - /** - * @param array|non-empty-string> $ini - * - * @return list - */ - private function stringifyIni(array $ini): array - { - $settings = []; - - foreach ($ini as $key => $value) { - if (is_array($value)) { - foreach ($value as $val) { - $settings[] = $key . '=' . $val; - } - - continue; - } - - $settings[] = $key . '=' . $value; - } - - return $settings; - } - - /** - * @param array $sections - * - * @return non-empty-list - */ - private function locationHintFromDiff(string $message, array $sections): array - { - $needle = ''; - $previousLine = ''; - $block = 'message'; - - foreach (preg_split('/\r\n|\r|\n/', $message) as $line) { - $line = trim($line); - - if ($block === 'message' && $line === '--- Expected') { - $block = 'expected'; - } - - if ($block === 'expected' && $line === '@@ @@') { - $block = 'diff'; - } - - if ($block === 'diff') { - if (str_starts_with($line, '+')) { - $needle = $this->cleanDiffLine($previousLine); - - break; - } - - if (str_starts_with($line, '-')) { - $needle = $this->cleanDiffLine($line); - - break; - } - } - - if (!empty($line)) { - $previousLine = $line; - } - } - - return $this->locationHint($needle, $sections); - } - - private function cleanDiffLine(string $line): string - { - if (preg_match('/^[\-+]([\'\"]?)(.*)\1$/', $line, $matches)) { - $line = $matches[2]; - } - - return $line; - } - - /** - * @param array $sections - * - * @return non-empty-list - */ - private function locationHint(string $needle, array $sections): array - { - $needle = trim($needle); - - if (empty($needle)) { - return [[ - 'file' => realpath($this->filename), - 'line' => 1, - ]]; - } - - $search = [ - // 'FILE', - 'EXPECT', - 'EXPECTF', - 'EXPECTREGEX', - ]; - - foreach ($search as $section) { - if (!isset($sections[$section])) { - continue; - } - - if (isset($sections[$section . '_EXTERNAL'])) { - $externalFile = trim($sections[$section . '_EXTERNAL']); - - return [ - [ - 'file' => realpath(dirname($this->filename) . DIRECTORY_SEPARATOR . $externalFile), - 'line' => 1, - ], - [ - 'file' => realpath($this->filename), - 'line' => ($sections[$section . '_EXTERNAL_offset'] ?? 0) + 1, - ], - ]; - } - - $sectionOffset = $sections[$section . '_offset'] ?? 0; - $offset = $sectionOffset + 1; - - foreach (preg_split('/\r\n|\r|\n/', $sections[$section]) as $line) { - if (str_contains($line, $needle)) { - return [ - [ - 'file' => realpath($this->filename), - 'line' => $offset, - ], - ]; - } - - $offset++; - } - } - - return [ - [ - 'file' => realpath($this->filename), - 'line' => 1, - ], - ]; - } - - /** - * @return list - */ - private function settings(bool $collectCoverage): array - { - $settings = [ - 'allow_url_fopen=1', - 'auto_append_file=', - 'auto_prepend_file=', - 'disable_functions=', - 'display_errors=1', - 'docref_ext=.html', - 'docref_root=', - 'error_append_string=', - 'error_prepend_string=', - 'error_reporting=-1', - 'html_errors=0', - 'log_errors=0', - 'open_basedir=', - 'output_buffering=Off', - 'output_handler=', - 'report_zend_debug=0', - ]; - - if (extension_loaded('pcov')) { - if ($collectCoverage) { - $settings[] = 'pcov.enabled=1'; - } else { - $settings[] = 'pcov.enabled=0'; - } - } - - if (extension_loaded('xdebug')) { - if ($collectCoverage) { - $settings[] = 'xdebug.mode=coverage'; - } - } - - return $settings; - } - - /** - * @throws CodeCoverageFileExistsException - */ - private function ensureCoverageFileDoesNotExist(): void - { - $files = $this->coverageFiles(); - - if (file_exists($files['coverage'])) { - throw new CodeCoverageFileExistsException( - sprintf( - 'File %s exists, PHPT test %s will not be executed', - $files['coverage'], - $this->filename, - ), - ); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/PHPT/templates/phpt.tpl b/v3_ci4/vendor/phpunit/phpunit/src/Runner/PHPT/templates/phpt.tpl deleted file mode 100644 index c425188..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/PHPT/templates/phpt.tpl +++ /dev/null @@ -1,56 +0,0 @@ -{driverMethod}($filter), - $filter - ); - - if ({codeCoverageCacheDirectory}) { - $coverage->cacheStaticAnalysis({codeCoverageCacheDirectory}); - } - - $coverage->start(__FILE__); -} - -register_shutdown_function( - function() use ($coverage) { - $output = null; - - if ($coverage) { - $output = $coverage->stop(); - } - - file_put_contents('{coverageFile}', serialize($output)); - } -); - -ob_end_clean(); - -require '{job}'; diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php deleted file mode 100644 index 9ec3597..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php +++ /dev/null @@ -1,166 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use const DIRECTORY_SEPARATOR; -use const LOCK_EX; -use function array_keys; -use function assert; -use function dirname; -use function file_get_contents; -use function file_put_contents; -use function is_array; -use function is_dir; -use function is_file; -use function json_decode; -use function json_encode; -use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\Runner\DirectoryDoesNotExistException; -use PHPUnit\Runner\Exception; -use PHPUnit\Util\Filesystem; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DefaultResultCache implements ResultCache -{ - /** - * @var int - */ - private const VERSION = 2; - - /** - * @var string - */ - private const DEFAULT_RESULT_CACHE_FILENAME = '.phpunit.result.cache'; - private readonly string $cacheFilename; - - /** - * @var array - */ - private array $defects = []; - - /** - * @var array - */ - private array $times = []; - - public function __construct(?string $filepath = null) - { - if ($filepath !== null && is_dir($filepath)) { - $filepath .= DIRECTORY_SEPARATOR . self::DEFAULT_RESULT_CACHE_FILENAME; - } - - $this->cacheFilename = $filepath ?? $_ENV['PHPUNIT_RESULT_CACHE'] ?? self::DEFAULT_RESULT_CACHE_FILENAME; - } - - public function setStatus(ResultCacheId $id, TestStatus $status): void - { - if ($status->isSuccess()) { - return; - } - - $this->defects[$id->asString()] = $status; - } - - public function status(ResultCacheId $id): TestStatus - { - return $this->defects[$id->asString()] ?? TestStatus::unknown(); - } - - public function setTime(ResultCacheId $id, float $time): void - { - $this->times[$id->asString()] = $time; - } - - public function time(ResultCacheId $id): float - { - return $this->times[$id->asString()] ?? 0.0; - } - - public function mergeWith(self $other): void - { - foreach ($other->defects as $id => $defect) { - $this->defects[$id] = $defect; - } - - foreach ($other->times as $id => $time) { - $this->times[$id] = $time; - } - } - - public function load(): void - { - if (!is_file($this->cacheFilename)) { - return; - } - - $contents = file_get_contents($this->cacheFilename); - - if ($contents === false) { - return; - } - - $data = json_decode( - $contents, - true, - ); - - if ($data === null) { - return; - } - - if (!isset($data['version'])) { - return; - } - - if ($data['version'] !== self::VERSION) { - return; - } - - assert(isset($data['defects']) && is_array($data['defects'])); - assert(isset($data['times']) && is_array($data['times'])); - - foreach (array_keys($data['defects']) as $test) { - $data['defects'][$test] = TestStatus::from($data['defects'][$test]); - } - - $this->defects = $data['defects']; - $this->times = $data['times']; - } - - /** - * @throws Exception - */ - public function persist(): void - { - if (!Filesystem::createDirectory(dirname($this->cacheFilename))) { - throw new DirectoryDoesNotExistException(dirname($this->cacheFilename)); - } - - $data = [ - 'version' => self::VERSION, - 'defects' => [], - 'times' => $this->times, - ]; - - foreach ($this->defects as $test => $status) { - $data['defects'][$test] = $status->asInt(); - } - - file_put_contents( - $this->cacheFilename, - json_encode($data), - LOCK_EX, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php deleted file mode 100644 index 46417d4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Framework\TestStatus\TestStatus; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class NullResultCache implements ResultCache -{ - public function setStatus(ResultCacheId $id, TestStatus $status): void - { - } - - public function status(ResultCacheId $id): TestStatus - { - return TestStatus::unknown(); - } - - public function setTime(ResultCacheId $id, float $time): void - { - } - - public function time(ResultCacheId $id): float - { - return 0; - } - - public function load(): void - { - } - - public function persist(): void - { - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php deleted file mode 100644 index 49b2df0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Framework\TestStatus\TestStatus; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface ResultCache -{ - public function setStatus(ResultCacheId $id, TestStatus $status): void; - - public function status(ResultCacheId $id): TestStatus; - - public function setTime(ResultCacheId $id, float $time): void; - - public function time(ResultCacheId $id): float; - - public function load(): void; - - public function persist(): void; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php deleted file mode 100644 index 82735c0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php +++ /dev/null @@ -1,157 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use function round; -use PHPUnit\Event\Event; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Telemetry\HRTime; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Framework\InvalidArgumentException; -use PHPUnit\Framework\TestStatus\TestStatus; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ResultCacheHandler -{ - private readonly ResultCache $cache; - private ?HRTime $time = null; - private int $testSuite = 0; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(ResultCache $cache, Facade $facade) - { - $this->cache = $cache; - - $this->registerSubscribers($facade); - } - - public function testSuiteStarted(): void - { - $this->testSuite++; - } - - public function testSuiteFinished(): void - { - $this->testSuite--; - - if ($this->testSuite === 0) { - $this->cache->persist(); - } - } - - public function testPrepared(Prepared $event): void - { - $this->time = $event->telemetryInfo()->time(); - } - - public function testMarkedIncomplete(MarkedIncomplete $event): void - { - $this->cache->setStatus( - ResultCacheId::fromTest($event->test()), - TestStatus::incomplete($event->throwable()->message()), - ); - } - - public function testConsideredRisky(ConsideredRisky $event): void - { - $this->cache->setStatus( - ResultCacheId::fromTest($event->test()), - TestStatus::risky($event->message()), - ); - } - - public function testErrored(Errored $event): void - { - $this->cache->setStatus( - ResultCacheId::fromTest($event->test()), - TestStatus::error($event->throwable()->message()), - ); - } - - public function testFailed(Failed $event): void - { - $this->cache->setStatus( - ResultCacheId::fromTest($event->test()), - TestStatus::failure($event->throwable()->message()), - ); - } - - /** - * @throws \PHPUnit\Event\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function testSkipped(Skipped $event): void - { - $this->cache->setStatus( - ResultCacheId::fromTest($event->test()), - TestStatus::skipped($event->message()), - ); - - $this->cache->setTime(ResultCacheId::fromTest($event->test()), $this->duration($event)); - } - - /** - * @throws \PHPUnit\Event\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function testFinished(Finished $event): void - { - $this->cache->setTime(ResultCacheId::fromTest($event->test()), $this->duration($event)); - - $this->time = null; - } - - /** - * @throws \PHPUnit\Event\InvalidArgumentException - * @throws InvalidArgumentException - */ - private function duration(Event $event): float - { - if ($this->time === null) { - return 0.0; - } - - return round($event->telemetryInfo()->time()->duration($this->time)->asFloat(), 3); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(Facade $facade): void - { - $facade->registerSubscribers( - new TestSuiteStartedSubscriber($this), - new TestSuiteFinishedSubscriber($this), - new TestPreparedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestConsideredRiskySubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestSkippedSubscriber($this), - new TestFinishedSubscriber($this), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheId.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheId.php deleted file mode 100644 index 35a84f2..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheId.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Code\Test; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Framework\Reorderable; -use PHPUnit\Framework\TestCase; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ResultCacheId -{ - public static function fromTest(Test $test): self - { - if ($test instanceof TestMethod) { - return new self($test->className() . '::' . $test->name()); - } - - return new self($test->id()); - } - - public static function fromReorderable(Reorderable $reorderable): self - { - return new self($reorderable->sortId()); - } - - /** - * For use in PHPUnit tests only! - * - * @param class-string $class - */ - public static function fromTestClassAndMethodName(string $class, string $methodName): self - { - return new self($class . '::' . $methodName); - } - - private function __construct( - private string $id, - ) { - } - - public function asString(): string - { - return $this->id; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php deleted file mode 100644 index d64dd9f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class Subscriber -{ - private ResultCacheHandler $handler; - - public function __construct(ResultCacheHandler $handler) - { - $this->handler = $handler; - } - - protected function handler(): ResultCacheHandler - { - return $this->handler; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php deleted file mode 100644 index b2d9340..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestConsideredRiskySubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\ConsideredRiskySubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestConsideredRiskySubscriber extends Subscriber implements ConsideredRiskySubscriber -{ - public function notify(ConsideredRisky $event): void - { - $this->handler()->testConsideredRisky($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index ff34e0d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - public function notify(Errored $event): void - { - $this->handler()->testErrored($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index 082fa51..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - public function notify(Failed $event): void - { - $this->handler()->testFailed($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index 65f75fc..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(Finished $event): void - { - $this->handler()->testFinished($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index d9c65cf..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - public function notify(MarkedIncomplete $event): void - { - $this->handler()->testMarkedIncomplete($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index a92b827..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->handler()->testPrepared($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index 0e493bd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\InvalidArgumentException; -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - /** - * @throws \PHPUnit\Framework\InvalidArgumentException - * @throws InvalidArgumentException - */ - public function notify(Skipped $event): void - { - $this->handler()->testSkipped($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php deleted file mode 100644 index 1ef0cc3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\TestSuite\Finished; -use PHPUnit\Event\TestSuite\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSuiteFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->handler()->testSuiteFinished(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php deleted file mode 100644 index cddedf5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/ResultCache/Subscriber/TestSuiteStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner\ResultCache; - -use PHPUnit\Event\TestSuite\Started; -use PHPUnit\Event\TestSuite\StartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSuiteStartedSubscriber extends Subscriber implements StartedSubscriber -{ - public function notify(Started $event): void - { - $this->handler()->testSuiteStarted(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php deleted file mode 100644 index fd35930..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php +++ /dev/null @@ -1,632 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use function array_values; -use function assert; -use function implode; -use function str_contains; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Test\AfterLastTestMethodErrored; -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\Skipped as TestSkipped; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\TestRunner\DeprecationTriggered as TestRunnerDeprecationTriggered; -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\TestRunner\WarningTriggered as TestRunnerWarningTriggered; -use PHPUnit\Event\TestSuite\Finished as TestSuiteFinished; -use PHPUnit\Event\TestSuite\Skipped as TestSuiteSkipped; -use PHPUnit\Event\TestSuite\Started as TestSuiteStarted; -use PHPUnit\Event\TestSuite\TestSuiteForTestClass; -use PHPUnit\Event\TestSuite\TestSuiteForTestMethodWithDataProvider; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\TestRunner\IssueFilter; -use PHPUnit\TestRunner\TestResult\Issues\Issue; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Collector -{ - private readonly IssueFilter $issueFilter; - private int $numberOfTests = 0; - private int $numberOfTestsRun = 0; - private int $numberOfAssertions = 0; - private bool $prepared = false; - - /** - * @var non-negative-int - */ - private int $numberOfIssuesIgnoredByBaseline = 0; - - /** - * @var list - */ - private array $testErroredEvents = []; - - /** - * @var list - */ - private array $testFailedEvents = []; - - /** - * @var list - */ - private array $testMarkedIncompleteEvents = []; - - /** - * @var list - */ - private array $testSuiteSkippedEvents = []; - - /** - * @var list - */ - private array $testSkippedEvents = []; - - /** - * @var array> - */ - private array $testConsideredRiskyEvents = []; - - /** - * @var array> - */ - private array $testTriggeredPhpunitDeprecationEvents = []; - - /** - * @var array> - */ - private array $testTriggeredPhpunitErrorEvents = []; - - /** - * @var array> - */ - private array $testTriggeredPhpunitWarningEvents = []; - - /** - * @var list - */ - private array $testRunnerTriggeredWarningEvents = []; - - /** - * @var list - */ - private array $testRunnerTriggeredDeprecationEvents = []; - - /** - * @var array - */ - private array $errors = []; - - /** - * @var array - */ - private array $deprecations = []; - - /** - * @var array - */ - private array $notices = []; - - /** - * @var array - */ - private array $warnings = []; - - /** - * @var array - */ - private array $phpDeprecations = []; - - /** - * @var array - */ - private array $phpNotices = []; - - /** - * @var array - */ - private array $phpWarnings = []; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Facade $facade, IssueFilter $issueFilter) - { - $facade->registerSubscribers( - new ExecutionStartedSubscriber($this), - new TestSuiteSkippedSubscriber($this), - new TestSuiteStartedSubscriber($this), - new TestSuiteFinishedSubscriber($this), - new TestPreparedSubscriber($this), - new TestFinishedSubscriber($this), - new BeforeTestClassMethodErroredSubscriber($this), - new AfterTestClassMethodErroredSubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestSkippedSubscriber($this), - new TestConsideredRiskySubscriber($this), - new TestTriggeredDeprecationSubscriber($this), - new TestTriggeredErrorSubscriber($this), - new TestTriggeredNoticeSubscriber($this), - new TestTriggeredPhpDeprecationSubscriber($this), - new TestTriggeredPhpNoticeSubscriber($this), - new TestTriggeredPhpunitDeprecationSubscriber($this), - new TestTriggeredPhpunitErrorSubscriber($this), - new TestTriggeredPhpunitWarningSubscriber($this), - new TestTriggeredPhpWarningSubscriber($this), - new TestTriggeredWarningSubscriber($this), - new TestRunnerTriggeredDeprecationSubscriber($this), - new TestRunnerTriggeredWarningSubscriber($this), - ); - - $this->issueFilter = $issueFilter; - } - - public function result(): TestResult - { - return new TestResult( - $this->numberOfTests, - $this->numberOfTestsRun, - $this->numberOfAssertions, - $this->testErroredEvents, - $this->testFailedEvents, - $this->testConsideredRiskyEvents, - $this->testSuiteSkippedEvents, - $this->testSkippedEvents, - $this->testMarkedIncompleteEvents, - $this->testTriggeredPhpunitDeprecationEvents, - $this->testTriggeredPhpunitErrorEvents, - $this->testTriggeredPhpunitWarningEvents, - $this->testRunnerTriggeredDeprecationEvents, - $this->testRunnerTriggeredWarningEvents, - array_values($this->errors), - array_values($this->deprecations), - array_values($this->notices), - array_values($this->warnings), - array_values($this->phpDeprecations), - array_values($this->phpNotices), - array_values($this->phpWarnings), - $this->numberOfIssuesIgnoredByBaseline, - ); - } - - public function executionStarted(ExecutionStarted $event): void - { - $this->numberOfTests = $event->testSuite()->count(); - } - - public function testSuiteSkipped(TestSuiteSkipped $event): void - { - $testSuite = $event->testSuite(); - - if (!$testSuite->isForTestClass()) { - return; - } - - $this->testSuiteSkippedEvents[] = $event; - - $this->numberOfTestsRun += $event->testSuite()->count(); - } - - public function testSuiteStarted(TestSuiteStarted $event): void - { - $testSuite = $event->testSuite(); - - if (!$testSuite->isForTestClass()) { - return; - } - } - - public function testSuiteFinished(TestSuiteFinished $event): void - { - $testSuite = $event->testSuite(); - - if ($testSuite->isWithName()) { - return; - } - - if ($testSuite->isForTestMethodWithDataProvider()) { - assert($testSuite instanceof TestSuiteForTestMethodWithDataProvider); - - $test = $testSuite->tests()->asArray()[0]; - - assert($test instanceof TestMethod); - - foreach ($this->testFailedEvents as $testFailedEvent) { - if ($testFailedEvent->test()->isTestMethod() && $testFailedEvent->test()->methodName() === $test->methodName()) { - return; - } - } - - PassedTests::instance()->testMethodPassed($test, null); - - return; - } - - assert($testSuite instanceof TestSuiteForTestClass); - - PassedTests::instance()->testClassPassed($testSuite->className()); - } - - public function testPrepared(): void - { - $this->prepared = true; - } - - public function testFinished(Finished $event): void - { - $this->numberOfAssertions += $event->numberOfAssertionsPerformed(); - - $this->numberOfTestsRun++; - - $this->prepared = false; - } - - public function beforeTestClassMethodErrored(BeforeFirstTestMethodErrored $event): void - { - $this->testErroredEvents[] = $event; - - $this->numberOfTestsRun++; - } - - public function afterTestClassMethodErrored(AfterLastTestMethodErrored $event): void - { - $this->testErroredEvents[] = $event; - } - - public function testErrored(Errored $event): void - { - $this->testErroredEvents[] = $event; - - /* - * @todo Eliminate this special case - */ - if (str_contains($event->asString(), 'Test was run in child process and ended unexpectedly')) { - return; - } - - if (!$this->prepared) { - $this->numberOfTestsRun++; - } - } - - public function testFailed(Failed $event): void - { - $this->testFailedEvents[] = $event; - } - - public function testMarkedIncomplete(MarkedIncomplete $event): void - { - $this->testMarkedIncompleteEvents[] = $event; - } - - public function testSkipped(TestSkipped $event): void - { - $this->testSkippedEvents[] = $event; - - if (!$this->prepared) { - $this->numberOfTestsRun++; - } - } - - public function testConsideredRisky(ConsideredRisky $event): void - { - if (!isset($this->testConsideredRiskyEvents[$event->test()->id()])) { - $this->testConsideredRiskyEvents[$event->test()->id()] = []; - } - - $this->testConsideredRiskyEvents[$event->test()->id()][] = $event; - } - - public function testTriggeredDeprecation(DeprecationTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event)) { - return; - } - - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - $id = $this->issueId($event); - - if (!isset($this->deprecations[$id])) { - $this->deprecations[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - $event->stackTrace(), - ); - - return; - } - - $this->deprecations[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpDeprecation(PhpDeprecationTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event)) { - return; - } - - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - $id = $this->issueId($event); - - if (!isset($this->phpDeprecations[$id])) { - $this->phpDeprecations[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->phpDeprecations[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpunitDeprecation(PhpunitDeprecationTriggered $event): void - { - if (!isset($this->testTriggeredPhpunitDeprecationEvents[$event->test()->id()])) { - $this->testTriggeredPhpunitDeprecationEvents[$event->test()->id()] = []; - } - - $this->testTriggeredPhpunitDeprecationEvents[$event->test()->id()][] = $event; - } - - public function testTriggeredError(ErrorTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event)) { - return; - } - - $id = $this->issueId($event); - - if (!isset($this->errors[$id])) { - $this->errors[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->errors[$id]->triggeredBy($event->test()); - } - - public function testTriggeredNotice(NoticeTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event)) { - return; - } - - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - $id = $this->issueId($event); - - if (!isset($this->notices[$id])) { - $this->notices[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->notices[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpNotice(PhpNoticeTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event)) { - return; - } - - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - $id = $this->issueId($event); - - if (!isset($this->phpNotices[$id])) { - $this->phpNotices[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->phpNotices[$id]->triggeredBy($event->test()); - } - - public function testTriggeredWarning(WarningTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event)) { - return; - } - - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - $id = $this->issueId($event); - - if (!isset($this->warnings[$id])) { - $this->warnings[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->warnings[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpWarning(PhpWarningTriggered $event): void - { - if (!$this->issueFilter->shouldBeProcessed($event)) { - return; - } - - if ($event->ignoredByBaseline()) { - $this->numberOfIssuesIgnoredByBaseline++; - - return; - } - - $id = $this->issueId($event); - - if (!isset($this->phpWarnings[$id])) { - $this->phpWarnings[$id] = Issue::from( - $event->file(), - $event->line(), - $event->message(), - $event->test(), - ); - - return; - } - - $this->phpWarnings[$id]->triggeredBy($event->test()); - } - - public function testTriggeredPhpunitError(PhpunitErrorTriggered $event): void - { - if (!isset($this->testTriggeredPhpunitErrorEvents[$event->test()->id()])) { - $this->testTriggeredPhpunitErrorEvents[$event->test()->id()] = []; - } - - $this->testTriggeredPhpunitErrorEvents[$event->test()->id()][] = $event; - } - - public function testTriggeredPhpunitWarning(PhpunitWarningTriggered $event): void - { - if (!isset($this->testTriggeredPhpunitWarningEvents[$event->test()->id()])) { - $this->testTriggeredPhpunitWarningEvents[$event->test()->id()] = []; - } - - $this->testTriggeredPhpunitWarningEvents[$event->test()->id()][] = $event; - } - - public function testRunnerTriggeredDeprecation(TestRunnerDeprecationTriggered $event): void - { - $this->testRunnerTriggeredDeprecationEvents[] = $event; - } - - public function testRunnerTriggeredWarning(TestRunnerWarningTriggered $event): void - { - $this->testRunnerTriggeredWarningEvents[] = $event; - } - - public function hasErroredTests(): bool - { - return !empty($this->testErroredEvents); - } - - public function hasFailedTests(): bool - { - return !empty($this->testFailedEvents); - } - - public function hasRiskyTests(): bool - { - return !empty($this->testConsideredRiskyEvents); - } - - public function hasSkippedTests(): bool - { - return !empty($this->testSkippedEvents); - } - - public function hasIncompleteTests(): bool - { - return !empty($this->testMarkedIncompleteEvents); - } - - public function hasDeprecations(): bool - { - return !empty($this->deprecations) || - !empty($this->phpDeprecations) || - !empty($this->testTriggeredPhpunitDeprecationEvents) || - !empty($this->testRunnerTriggeredDeprecationEvents); - } - - public function hasNotices(): bool - { - return !empty($this->notices) || - !empty($this->phpNotices); - } - - public function hasWarnings(): bool - { - return !empty($this->warnings) || - !empty($this->phpWarnings) || - !empty($this->testTriggeredPhpunitWarningEvents) || - !empty($this->testRunnerTriggeredWarningEvents); - } - - /** - * @return non-empty-string - */ - private function issueId(DeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpWarningTriggered|WarningTriggered $event): string - { - return implode(':', [$event->file(), $event->line(), $event->message()]); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php deleted file mode 100644 index f27b75e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php +++ /dev/null @@ -1,130 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use function str_contains; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Runner\DeprecationCollector\Facade as DeprecationCollectorFacade; -use PHPUnit\TestRunner\IssueFilter; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Facade -{ - private static ?Collector $collector = null; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function init(): void - { - self::collector(); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function result(): TestResult - { - return self::collector()->result(); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function shouldStop(): bool - { - $configuration = ConfigurationRegistry::get(); - $collector = self::collector(); - - if (($configuration->stopOnDefect() || $configuration->stopOnError()) && $collector->hasErroredTests()) { - return true; - } - - if (($configuration->stopOnDefect() || $configuration->stopOnFailure()) && $collector->hasFailedTests()) { - return true; - } - - if (($configuration->stopOnDefect() || $configuration->stopOnWarning()) && $collector->hasWarnings()) { - return true; - } - - if (($configuration->stopOnDefect() || $configuration->stopOnRisky()) && $collector->hasRiskyTests()) { - return true; - } - - if (self::stopOnDeprecation($configuration)) { - return true; - } - - if ($configuration->stopOnNotice() && $collector->hasNotices()) { - return true; - } - - if ($configuration->stopOnIncomplete() && $collector->hasIncompleteTests()) { - return true; - } - - if ($configuration->stopOnSkipped() && $collector->hasSkippedTests()) { - return true; - } - - return false; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private static function collector(): Collector - { - if (self::$collector === null) { - $configuration = ConfigurationRegistry::get(); - - self::$collector = new Collector( - EventFacade::instance(), - new IssueFilter($configuration->source()), - ); - } - - return self::$collector; - } - - private static function stopOnDeprecation(Configuration $configuration): bool - { - if (!$configuration->stopOnDeprecation()) { - return false; - } - - $deprecations = DeprecationCollectorFacade::filteredDeprecations(); - - if (!$configuration->hasSpecificDeprecationToStopOn()) { - return $deprecations !== []; - } - - foreach ($deprecations as $deprecation) { - if (str_contains($deprecation, $configuration->specificDeprecationToStopOn())) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Issue.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Issue.php deleted file mode 100644 index 12ade5c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Issue.php +++ /dev/null @@ -1,145 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult\Issues; - -use function array_keys; -use function count; -use PHPUnit\Event\Code\Test; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Issue -{ - /** - * @var non-empty-string - */ - private readonly string $file; - - /** - * @var positive-int - */ - private readonly int $line; - - /** - * @var non-empty-string - */ - private readonly string $description; - - /** - * @var non-empty-array - */ - private array $triggeringTests; - - /** - * @var ?non-empty-string - */ - private ?string $stackTrace; - - /** - * @param non-empty-string $file - * @param positive-int $line - * @param non-empty-string $description - */ - public static function from(string $file, int $line, string $description, Test $triggeringTest, ?string $stackTrace = null): self - { - return new self($file, $line, $description, $triggeringTest, $stackTrace); - } - - /** - * @param non-empty-string $file - * @param positive-int $line - * @param non-empty-string $description - */ - private function __construct(string $file, int $line, string $description, Test $triggeringTest, ?string $stackTrace) - { - $this->file = $file; - $this->line = $line; - $this->description = $description; - $this->stackTrace = $stackTrace; - - $this->triggeringTests = [ - $triggeringTest->id() => [ - 'test' => $triggeringTest, - 'count' => 1, - ], - ]; - } - - public function triggeredBy(Test $test): void - { - if (isset($this->triggeringTests[$test->id()])) { - $this->triggeringTests[$test->id()]['count']++; - - return; - } - - $this->triggeringTests[$test->id()] = [ - 'test' => $test, - 'count' => 1, - ]; - } - - /** - * @return non-empty-string - */ - public function file(): string - { - return $this->file; - } - - /** - * @return positive-int - */ - public function line(): int - { - return $this->line; - } - - /** - * @return non-empty-string - */ - public function description(): string - { - return $this->description; - } - - /** - * @return non-empty-array - */ - public function triggeringTests(): array - { - return $this->triggeringTests; - } - - /** - * @phpstan-assert-if-true !null $this->stackTrace - */ - public function hasStackTrace(): bool - { - return $this->stackTrace !== null; - } - - /** - * @return ?non-empty-string - */ - public function stackTrace(): ?string - { - return $this->stackTrace; - } - - public function triggeredInTest(): bool - { - return count($this->triggeringTests) === 1 && - $this->file === $this->triggeringTests[array_keys($this->triggeringTests)[0]]['test']->file(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php deleted file mode 100644 index 4fad1b5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php +++ /dev/null @@ -1,134 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use function array_merge; -use function assert; -use function explode; -use function in_array; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Framework\TestSize\Known; -use PHPUnit\Framework\TestSize\TestSize; -use PHPUnit\Metadata\Api\Groups; -use ReflectionMethod; -use ReflectionNamedType; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PassedTests -{ - private static ?self $instance = null; - - /** - * @var list - */ - private array $passedTestClasses = []; - - /** - * @var array - */ - private array $passedTestMethods = []; - - public static function instance(): self - { - if (self::$instance !== null) { - return self::$instance; - } - - self::$instance = new self; - - return self::$instance; - } - - /** - * @param class-string $className - */ - public function testClassPassed(string $className): void - { - $this->passedTestClasses[] = $className; - } - - public function testMethodPassed(TestMethod $test, mixed $returnValue): void - { - $size = (new Groups)->size( - $test->className(), - $test->methodName(), - ); - - $this->passedTestMethods[$test->className() . '::' . $test->methodName()] = [ - 'returnValue' => $returnValue, - 'size' => $size, - ]; - } - - public function import(self $other): void - { - $this->passedTestClasses = array_merge( - $this->passedTestClasses, - $other->passedTestClasses, - ); - - $this->passedTestMethods = array_merge( - $this->passedTestMethods, - $other->passedTestMethods, - ); - } - - /** - * @param class-string $className - */ - public function hasTestClassPassed(string $className): bool - { - return in_array($className, $this->passedTestClasses, true); - } - - public function hasTestMethodPassed(string $method): bool - { - return isset($this->passedTestMethods[$method]); - } - - public function isGreaterThan(string $method, TestSize $other): bool - { - if ($other->isUnknown()) { - return false; - } - - assert($other instanceof Known); - - $size = $this->passedTestMethods[$method]['size']; - - if ($size->isUnknown()) { - return false; - } - - assert($size instanceof Known); - - return $size->isGreaterThan($other); - } - - public function hasReturnValue(string $method): bool - { - $returnType = (new ReflectionMethod(...explode('::', $method)))->getReturnType(); - - return !$returnType instanceof ReflectionNamedType || !in_array($returnType->getName(), ['never', 'void'], true); - } - - public function returnValue(string $method): mixed - { - if (isset($this->passedTestMethods[$method])) { - return $this->passedTestMethods[$method]['returnValue']; - } - - return null; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/AfterTestClassMethodErroredSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/AfterTestClassMethodErroredSubscriber.php deleted file mode 100644 index eb94433..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/AfterTestClassMethodErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\AfterLastTestMethodErrored; -use PHPUnit\Event\Test\AfterLastTestMethodErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class AfterTestClassMethodErroredSubscriber extends Subscriber implements AfterLastTestMethodErroredSubscriber -{ - public function notify(AfterLastTestMethodErrored $event): void - { - $this->collector()->afterTestClassMethodErrored($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php deleted file mode 100644 index 1929125..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\BeforeFirstTestMethodErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class BeforeTestClassMethodErroredSubscriber extends Subscriber implements BeforeFirstTestMethodErroredSubscriber -{ - public function notify(BeforeFirstTestMethodErrored $event): void - { - $this->collector()->beforeTestClassMethodErrored($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php deleted file mode 100644 index b54ae9e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\TestRunner\ExecutionStartedSubscriber as TestRunnerExecutionStartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ExecutionStartedSubscriber extends Subscriber implements TestRunnerExecutionStartedSubscriber -{ - public function notify(ExecutionStarted $event): void - { - $this->collector()->executionStarted($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php deleted file mode 100644 index 36be494..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class Subscriber -{ - private Collector $collector; - - public function __construct(Collector $collector) - { - $this->collector = $collector; - } - - protected function collector(): Collector - { - return $this->collector; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php deleted file mode 100644 index 8584fdd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\ConsideredRiskySubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestConsideredRiskySubscriber extends Subscriber implements ConsideredRiskySubscriber -{ - public function notify(ConsideredRisky $event): void - { - $this->collector()->testConsideredRisky($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index a97c21a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - public function notify(Errored $event): void - { - $this->collector()->testErrored($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index 118b304..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - public function notify(Failed $event): void - { - $this->collector()->testFailed($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index 37fe67d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->collector()->testFinished($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index c9d13ab..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - public function notify(MarkedIncomplete $event): void - { - $this->collector()->testMarkedIncomplete($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index 6dd05ca..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->collector()->testPrepared(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php deleted file mode 100644 index 36b3ea0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestRunner\DeprecationTriggered; -use PHPUnit\Event\TestRunner\DeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestRunnerTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - public function notify(DeprecationTriggered $event): void - { - $this->collector()->testRunnerTriggeredDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php deleted file mode 100644 index cc01d5d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestRunnerTriggeredWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestRunner\WarningTriggered; -use PHPUnit\Event\TestRunner\WarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestRunnerTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - public function notify(WarningTriggered $event): void - { - $this->collector()->testRunnerTriggeredWarning($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index 152db85..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - public function notify(Skipped $event): void - { - $this->collector()->testSkipped($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php deleted file mode 100644 index e5f2aca..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestSuite\Finished; -use PHPUnit\Event\TestSuite\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSuiteFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->collector()->testSuiteFinished($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php deleted file mode 100644 index 0c7cd7a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteSkippedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestSuite\Skipped; -use PHPUnit\Event\TestSuite\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSuiteSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - public function notify(Skipped $event): void - { - $this->collector()->testSuiteSkipped($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php deleted file mode 100644 index d3cb3bf..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestSuiteStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\TestSuite\Started; -use PHPUnit\Event\TestSuite\StartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSuiteStartedSubscriber extends Subscriber implements StartedSubscriber -{ - public function notify(Started $event): void - { - $this->collector()->testSuiteStarted($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php deleted file mode 100644 index 81e93eb..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\DeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - public function notify(DeprecationTriggered $event): void - { - $this->collector()->testTriggeredDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php deleted file mode 100644 index 0aef461..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredErrorSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\ErrorTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredErrorSubscriber extends Subscriber implements ErrorTriggeredSubscriber -{ - public function notify(ErrorTriggered $event): void - { - $this->collector()->testTriggeredError($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php deleted file mode 100644 index 67b73c0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\NoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredNoticeSubscriber extends Subscriber implements NoticeTriggeredSubscriber -{ - public function notify(NoticeTriggered $event): void - { - $this->collector()->testTriggeredNotice($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php deleted file mode 100644 index 5cd17e3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpDeprecationSubscriber extends Subscriber implements PhpDeprecationTriggeredSubscriber -{ - public function notify(PhpDeprecationTriggered $event): void - { - $this->collector()->testTriggeredPhpDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php deleted file mode 100644 index 9af0d32..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpNoticeSubscriber extends Subscriber implements PhpNoticeTriggeredSubscriber -{ - public function notify(PhpNoticeTriggered $event): void - { - $this->collector()->testTriggeredPhpNotice($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php deleted file mode 100644 index 18eaf4f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpWarningSubscriber extends Subscriber implements PhpWarningTriggeredSubscriber -{ - public function notify(PhpWarningTriggered $event): void - { - $this->collector()->testTriggeredPhpWarning($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php deleted file mode 100644 index 3475f11..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpunitDeprecationSubscriber extends Subscriber implements PhpunitDeprecationTriggeredSubscriber -{ - public function notify(PhpunitDeprecationTriggered $event): void - { - $this->collector()->testTriggeredPhpunitDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php deleted file mode 100644 index 0ceba9c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpunitErrorSubscriber extends Subscriber implements PhpunitErrorTriggeredSubscriber -{ - public function notify(PhpunitErrorTriggered $event): void - { - $this->collector()->testTriggeredPhpunitError($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php deleted file mode 100644 index 376c4b6..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpunitWarningSubscriber extends Subscriber implements PhpunitWarningTriggeredSubscriber -{ - public function notify(PhpunitWarningTriggered $event): void - { - $this->collector()->testTriggeredPhpunitWarning($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php deleted file mode 100644 index d5fe3ed..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\Test\WarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - public function notify(WarningTriggered $event): void - { - $this->collector()->testTriggeredWarning($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/TestResult.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/TestResult.php deleted file mode 100644 index bfc460d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestResult/TestResult.php +++ /dev/null @@ -1,588 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TestRunner\TestResult; - -use function array_map; -use function array_sum; -use function count; -use PHPUnit\Event\Test\AfterLastTestMethodErrored; -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\Skipped as TestSkipped; -use PHPUnit\Event\TestRunner\DeprecationTriggered as TestRunnerDeprecationTriggered; -use PHPUnit\Event\TestRunner\WarningTriggered as TestRunnerWarningTriggered; -use PHPUnit\Event\TestSuite\Skipped as TestSuiteSkipped; -use PHPUnit\TestRunner\TestResult\Issues\Issue; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestResult -{ - private int $numberOfTests; - private int $numberOfTestsRun; - private int $numberOfAssertions; - - /** - * @var list - */ - private array $testErroredEvents; - - /** - * @var list - */ - private array $testFailedEvents; - - /** - * @var list - */ - private array $testMarkedIncompleteEvents; - - /** - * @var list - */ - private array $testSuiteSkippedEvents; - - /** - * @var list - */ - private array $testSkippedEvents; - - /** - * @var array> - */ - private array $testConsideredRiskyEvents; - - /** - * @var array> - */ - private array $testTriggeredPhpunitDeprecationEvents; - - /** - * @var array> - */ - private array $testTriggeredPhpunitErrorEvents; - - /** - * @var array> - */ - private array $testTriggeredPhpunitWarningEvents; - - /** - * @var list - */ - private array $testRunnerTriggeredDeprecationEvents; - - /** - * @var list - */ - private array $testRunnerTriggeredWarningEvents; - - /** - * @var list - */ - private array $errors; - - /** - * @var list - */ - private array $deprecations; - - /** - * @var list - */ - private array $notices; - - /** - * @var list - */ - private array $warnings; - - /** - * @var list - */ - private array $phpDeprecations; - - /** - * @var list - */ - private array $phpNotices; - - /** - * @var list - */ - private array $phpWarnings; - - /** - * @var non-negative-int - */ - private int $numberOfIssuesIgnoredByBaseline; - - /** - * @param list $testErroredEvents - * @param list $testFailedEvents - * @param array> $testConsideredRiskyEvents - * @param list $testSuiteSkippedEvents - * @param list $testSkippedEvents - * @param list $testMarkedIncompleteEvents - * @param array> $testTriggeredPhpunitDeprecationEvents - * @param array> $testTriggeredPhpunitErrorEvents - * @param array> $testTriggeredPhpunitWarningEvents - * @param list $testRunnerTriggeredDeprecationEvents - * @param list $testRunnerTriggeredWarningEvents - * @param list $errors - * @param list $deprecations - * @param list $notices - * @param list $warnings - * @param list $phpDeprecations - * @param list $phpNotices - * @param list $phpWarnings - * @param non-negative-int $numberOfIssuesIgnoredByBaseline - */ - public function __construct(int $numberOfTests, int $numberOfTestsRun, int $numberOfAssertions, array $testErroredEvents, array $testFailedEvents, array $testConsideredRiskyEvents, array $testSuiteSkippedEvents, array $testSkippedEvents, array $testMarkedIncompleteEvents, array $testTriggeredPhpunitDeprecationEvents, array $testTriggeredPhpunitErrorEvents, array $testTriggeredPhpunitWarningEvents, array $testRunnerTriggeredDeprecationEvents, array $testRunnerTriggeredWarningEvents, array $errors, array $deprecations, array $notices, array $warnings, array $phpDeprecations, array $phpNotices, array $phpWarnings, int $numberOfIssuesIgnoredByBaseline) - { - $this->numberOfTests = $numberOfTests; - $this->numberOfTestsRun = $numberOfTestsRun; - $this->numberOfAssertions = $numberOfAssertions; - $this->testErroredEvents = $testErroredEvents; - $this->testFailedEvents = $testFailedEvents; - $this->testConsideredRiskyEvents = $testConsideredRiskyEvents; - $this->testSuiteSkippedEvents = $testSuiteSkippedEvents; - $this->testSkippedEvents = $testSkippedEvents; - $this->testMarkedIncompleteEvents = $testMarkedIncompleteEvents; - $this->testTriggeredPhpunitDeprecationEvents = $testTriggeredPhpunitDeprecationEvents; - $this->testTriggeredPhpunitErrorEvents = $testTriggeredPhpunitErrorEvents; - $this->testTriggeredPhpunitWarningEvents = $testTriggeredPhpunitWarningEvents; - $this->testRunnerTriggeredDeprecationEvents = $testRunnerTriggeredDeprecationEvents; - $this->testRunnerTriggeredWarningEvents = $testRunnerTriggeredWarningEvents; - $this->errors = $errors; - $this->deprecations = $deprecations; - $this->notices = $notices; - $this->warnings = $warnings; - $this->phpDeprecations = $phpDeprecations; - $this->phpNotices = $phpNotices; - $this->phpWarnings = $phpWarnings; - $this->numberOfIssuesIgnoredByBaseline = $numberOfIssuesIgnoredByBaseline; - } - - public function numberOfTestsRun(): int - { - return $this->numberOfTestsRun; - } - - public function numberOfAssertions(): int - { - return $this->numberOfAssertions; - } - - /** - * @return list - */ - public function testErroredEvents(): array - { - return $this->testErroredEvents; - } - - public function numberOfTestErroredEvents(): int - { - return count($this->testErroredEvents); - } - - public function hasTestErroredEvents(): bool - { - return $this->numberOfTestErroredEvents() > 0; - } - - /** - * @return list - */ - public function testFailedEvents(): array - { - return $this->testFailedEvents; - } - - public function numberOfTestFailedEvents(): int - { - return count($this->testFailedEvents); - } - - public function hasTestFailedEvents(): bool - { - return $this->numberOfTestFailedEvents() > 0; - } - - /** - * @return array> - */ - public function testConsideredRiskyEvents(): array - { - return $this->testConsideredRiskyEvents; - } - - public function numberOfTestsWithTestConsideredRiskyEvents(): int - { - return count($this->testConsideredRiskyEvents); - } - - public function hasTestConsideredRiskyEvents(): bool - { - return $this->numberOfTestsWithTestConsideredRiskyEvents() > 0; - } - - /** - * @return list - */ - public function testSuiteSkippedEvents(): array - { - return $this->testSuiteSkippedEvents; - } - - public function numberOfTestSkippedByTestSuiteSkippedEvents(): int - { - return array_sum( - array_map( - static fn (TestSuiteSkipped $event): int => $event->testSuite()->count(), - $this->testSuiteSkippedEvents, - ), - ); - } - - public function hasTestSuiteSkippedEvents(): bool - { - return $this->numberOfTestSkippedByTestSuiteSkippedEvents() > 0; - } - - /** - * @return list - */ - public function testSkippedEvents(): array - { - return $this->testSkippedEvents; - } - - public function numberOfTestSkippedEvents(): int - { - return count($this->testSkippedEvents); - } - - public function hasTestSkippedEvents(): bool - { - return $this->numberOfTestSkippedEvents() > 0; - } - - /** - * @return list - */ - public function testMarkedIncompleteEvents(): array - { - return $this->testMarkedIncompleteEvents; - } - - public function numberOfTestMarkedIncompleteEvents(): int - { - return count($this->testMarkedIncompleteEvents); - } - - public function hasTestMarkedIncompleteEvents(): bool - { - return $this->numberOfTestMarkedIncompleteEvents() > 0; - } - - /** - * @return array> - */ - public function testTriggeredPhpunitDeprecationEvents(): array - { - return $this->testTriggeredPhpunitDeprecationEvents; - } - - public function numberOfTestsWithTestTriggeredPhpunitDeprecationEvents(): int - { - return count($this->testTriggeredPhpunitDeprecationEvents); - } - - public function hasTestTriggeredPhpunitDeprecationEvents(): bool - { - return $this->numberOfTestsWithTestTriggeredPhpunitDeprecationEvents() > 0; - } - - /** - * @return array> - */ - public function testTriggeredPhpunitErrorEvents(): array - { - return $this->testTriggeredPhpunitErrorEvents; - } - - public function numberOfTestsWithTestTriggeredPhpunitErrorEvents(): int - { - return count($this->testTriggeredPhpunitErrorEvents); - } - - public function hasTestTriggeredPhpunitErrorEvents(): bool - { - return $this->numberOfTestsWithTestTriggeredPhpunitErrorEvents() > 0; - } - - /** - * @return array> - */ - public function testTriggeredPhpunitWarningEvents(): array - { - return $this->testTriggeredPhpunitWarningEvents; - } - - public function numberOfTestsWithTestTriggeredPhpunitWarningEvents(): int - { - return count($this->testTriggeredPhpunitWarningEvents); - } - - public function hasTestTriggeredPhpunitWarningEvents(): bool - { - return $this->numberOfTestsWithTestTriggeredPhpunitWarningEvents() > 0; - } - - /** - * @return list - */ - public function testRunnerTriggeredDeprecationEvents(): array - { - return $this->testRunnerTriggeredDeprecationEvents; - } - - public function numberOfTestRunnerTriggeredDeprecationEvents(): int - { - return count($this->testRunnerTriggeredDeprecationEvents); - } - - public function hasTestRunnerTriggeredDeprecationEvents(): bool - { - return $this->numberOfTestRunnerTriggeredDeprecationEvents() > 0; - } - - /** - * @return list - */ - public function testRunnerTriggeredWarningEvents(): array - { - return $this->testRunnerTriggeredWarningEvents; - } - - public function numberOfTestRunnerTriggeredWarningEvents(): int - { - return count($this->testRunnerTriggeredWarningEvents); - } - - public function hasTestRunnerTriggeredWarningEvents(): bool - { - return $this->numberOfTestRunnerTriggeredWarningEvents() > 0; - } - - public function wasSuccessful(): bool - { - return !$this->hasTestErroredEvents() && - !$this->hasTestFailedEvents() && - !$this->hasTestTriggeredPhpunitErrorEvents(); - } - - public function hasIssues(): bool - { - return $this->hasTestsWithIssues() || - $this->hasTestRunnerTriggeredWarningEvents(); - } - - public function hasTestsWithIssues(): bool - { - return $this->hasRiskyTests() || - $this->hasIncompleteTests() || - $this->hasDeprecations() || - !empty($this->errors) || - $this->hasNotices() || - $this->hasWarnings() || - $this->hasPhpunitWarnings(); - } - - /** - * @return list - */ - public function errors(): array - { - return $this->errors; - } - - /** - * @return list - */ - public function deprecations(): array - { - return $this->deprecations; - } - - /** - * @return list - */ - public function notices(): array - { - return $this->notices; - } - - /** - * @return list - */ - public function warnings(): array - { - return $this->warnings; - } - - /** - * @return list - */ - public function phpDeprecations(): array - { - return $this->phpDeprecations; - } - - /** - * @return list - */ - public function phpNotices(): array - { - return $this->phpNotices; - } - - /** - * @return list - */ - public function phpWarnings(): array - { - return $this->phpWarnings; - } - - public function hasTests(): bool - { - return $this->numberOfTests > 0; - } - - public function hasErrors(): bool - { - return $this->numberOfErrors() > 0; - } - - public function numberOfErrors(): int - { - return $this->numberOfTestErroredEvents() + - count($this->errors) + - $this->numberOfTestsWithTestTriggeredPhpunitErrorEvents(); - } - - public function hasDeprecations(): bool - { - return $this->numberOfDeprecations() > 0; - } - - public function hasPhpOrUserDeprecations(): bool - { - return $this->numberOfPhpOrUserDeprecations() > 0; - } - - public function numberOfPhpOrUserDeprecations(): int - { - return count($this->deprecations) + - count($this->phpDeprecations); - } - - public function hasPhpunitDeprecations(): bool - { - return $this->numberOfPhpunitDeprecations() > 0; - } - - public function numberOfPhpunitDeprecations(): int - { - return count($this->testTriggeredPhpunitDeprecationEvents) + - count($this->testRunnerTriggeredDeprecationEvents); - } - - public function hasPhpunitWarnings(): bool - { - return $this->numberOfPhpunitWarnings() > 0; - } - - public function numberOfPhpunitWarnings(): int - { - return count($this->testTriggeredPhpunitWarningEvents) + - count($this->testRunnerTriggeredWarningEvents); - } - - public function numberOfDeprecations(): int - { - return count($this->deprecations) + - count($this->phpDeprecations) + - count($this->testTriggeredPhpunitDeprecationEvents) + - count($this->testRunnerTriggeredDeprecationEvents); - } - - public function hasNotices(): bool - { - return $this->numberOfNotices() > 0; - } - - public function numberOfNotices(): int - { - return count($this->notices) + - count($this->phpNotices); - } - - public function hasWarnings(): bool - { - return $this->numberOfWarnings() > 0; - } - - public function numberOfWarnings(): int - { - return count($this->warnings) + - count($this->phpWarnings); - } - - public function hasIncompleteTests(): bool - { - return !empty($this->testMarkedIncompleteEvents); - } - - public function hasRiskyTests(): bool - { - return !empty($this->testConsideredRiskyEvents); - } - - public function hasSkippedTests(): bool - { - return !empty($this->testSkippedEvents); - } - - public function hasIssuesIgnoredByBaseline(): bool - { - return $this->numberOfIssuesIgnoredByBaseline > 0; - } - - /** - * @return non-negative-int - */ - public function numberOfIssuesIgnoredByBaseline(): int - { - return $this->numberOfIssuesIgnoredByBaseline; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php deleted file mode 100644 index b6baf13..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php +++ /dev/null @@ -1,142 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function array_diff; -use function basename; -use function get_declared_classes; -use function realpath; -use function str_ends_with; -use function strpos; -use function strtolower; -use function substr; -use PHPUnit\Framework\TestCase; -use ReflectionClass; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteLoader -{ - /** - * @var list - */ - private static array $declaredClasses = []; - - /** - * @var array> - */ - private static array $fileToClassesMap = []; - - /** - * @throws Exception - * - * @return ReflectionClass - */ - public function load(string $suiteClassFile): ReflectionClass - { - $suiteClassFile = realpath($suiteClassFile); - $suiteClassName = $this->classNameFromFileName($suiteClassFile); - $loadedClasses = $this->loadSuiteClassFile($suiteClassFile); - - foreach ($loadedClasses as $className) { - /** @noinspection PhpUnhandledExceptionInspection */ - $class = new ReflectionClass($className); - - if ($class->isAnonymous()) { - continue; - } - - if ($class->getFileName() !== $suiteClassFile) { - continue; - } - - if (!$class->isSubclassOf(TestCase::class)) { - continue; - } - - if (!str_ends_with(strtolower($class->getShortName()), strtolower($suiteClassName))) { - continue; - } - - if (!$class->isAbstract()) { - return $class; - } - - $e = new ClassIsAbstractException($class->getName(), $suiteClassFile); - } - - if (isset($e)) { - throw $e; - } - - foreach ($loadedClasses as $className) { - if (str_ends_with(strtolower($className), strtolower($suiteClassName))) { - throw new ClassDoesNotExtendTestCaseException($className, $suiteClassFile); - } - } - - throw new ClassCannotBeFoundException($suiteClassName, $suiteClassFile); - } - - private function classNameFromFileName(string $suiteClassFile): string - { - $className = basename($suiteClassFile, '.php'); - $dotPos = strpos($className, '.'); - - if ($dotPos !== false) { - $className = substr($className, 0, $dotPos); - } - - return $className; - } - - /** - * @return array - */ - private function loadSuiteClassFile(string $suiteClassFile): array - { - if (isset(self::$fileToClassesMap[$suiteClassFile])) { - return self::$fileToClassesMap[$suiteClassFile]; - } - - if (empty(self::$declaredClasses)) { - self::$declaredClasses = get_declared_classes(); - } - - require_once $suiteClassFile; - - $loadedClasses = array_diff( - get_declared_classes(), - self::$declaredClasses, - ); - - foreach ($loadedClasses as $loadedClass) { - /** @noinspection PhpUnhandledExceptionInspection */ - $class = new ReflectionClass($loadedClass); - - if (!isset(self::$fileToClassesMap[$class->getFileName()])) { - self::$fileToClassesMap[$class->getFileName()] = []; - } - - self::$fileToClassesMap[$class->getFileName()][] = $class->getName(); - } - - self::$declaredClasses = get_declared_classes(); - - if (empty($loadedClasses)) { - return self::$declaredClasses; - } - - return $loadedClasses; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php deleted file mode 100644 index 4cbb0b1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php +++ /dev/null @@ -1,333 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function array_diff; -use function array_merge; -use function array_reverse; -use function array_splice; -use function assert; -use function count; -use function in_array; -use function max; -use function shuffle; -use function usort; -use PHPUnit\Framework\DataProviderTestSuite; -use PHPUnit\Framework\Reorderable; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\ResultCache\NullResultCache; -use PHPUnit\Runner\ResultCache\ResultCache; -use PHPUnit\Runner\ResultCache\ResultCacheId; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestSuiteSorter -{ - /** - * @var int - */ - public const ORDER_DEFAULT = 0; - - /** - * @var int - */ - public const ORDER_RANDOMIZED = 1; - - /** - * @var int - */ - public const ORDER_REVERSED = 2; - - /** - * @var int - */ - public const ORDER_DEFECTS_FIRST = 3; - - /** - * @var int - */ - public const ORDER_DURATION = 4; - - /** - * @var int - */ - public const ORDER_SIZE = 5; - - private const SIZE_SORT_WEIGHT = [ - 'small' => 1, - 'medium' => 2, - 'large' => 3, - 'unknown' => 4, - ]; - - /** - * @var array Associative array of (string => DEFECT_SORT_WEIGHT) elements - */ - private array $defectSortOrder = []; - private readonly ResultCache $cache; - - public function __construct(?ResultCache $cache = null) - { - $this->cache = $cache ?? new NullResultCache; - } - - /** - * @throws Exception - */ - public function reorderTestsInSuite(Test $suite, int $order, bool $resolveDependencies, int $orderDefects): void - { - $allowedOrders = [ - self::ORDER_DEFAULT, - self::ORDER_REVERSED, - self::ORDER_RANDOMIZED, - self::ORDER_DURATION, - self::ORDER_SIZE, - ]; - - if (!in_array($order, $allowedOrders, true)) { - // @codeCoverageIgnoreStart - throw new InvalidOrderException; - // @codeCoverageIgnoreEnd - } - - $allowedOrderDefects = [ - self::ORDER_DEFAULT, - self::ORDER_DEFECTS_FIRST, - ]; - - if (!in_array($orderDefects, $allowedOrderDefects, true)) { - // @codeCoverageIgnoreStart - throw new InvalidOrderException; - // @codeCoverageIgnoreEnd - } - - if ($suite instanceof TestSuite) { - foreach ($suite as $_suite) { - $this->reorderTestsInSuite($_suite, $order, $resolveDependencies, $orderDefects); - } - - if ($orderDefects === self::ORDER_DEFECTS_FIRST) { - $this->addSuiteToDefectSortOrder($suite); - } - - $this->sort($suite, $order, $resolveDependencies, $orderDefects); - } - } - - private function sort(TestSuite $suite, int $order, bool $resolveDependencies, int $orderDefects): void - { - if (empty($suite->tests())) { - return; - } - - if ($order === self::ORDER_REVERSED) { - $suite->setTests($this->reverse($suite->tests())); - } elseif ($order === self::ORDER_RANDOMIZED) { - $suite->setTests($this->randomize($suite->tests())); - } elseif ($order === self::ORDER_DURATION) { - $suite->setTests($this->sortByDuration($suite->tests())); - } elseif ($order === self::ORDER_SIZE) { - $suite->setTests($this->sortBySize($suite->tests())); - } - - if ($orderDefects === self::ORDER_DEFECTS_FIRST) { - $suite->setTests($this->sortDefectsFirst($suite->tests())); - } - - if ($resolveDependencies && !($suite instanceof DataProviderTestSuite)) { - $tests = $suite->tests(); - - /** @noinspection PhpParamsInspection */ - /** @phpstan-ignore argument.type */ - $suite->setTests($this->resolveDependencies($tests)); - } - } - - private function addSuiteToDefectSortOrder(TestSuite $suite): void - { - $max = 0; - - foreach ($suite->tests() as $test) { - if (!$test instanceof Reorderable) { - continue; - } - - $sortId = $test->sortId(); - - if (!isset($this->defectSortOrder[$sortId])) { - $this->defectSortOrder[$sortId] = $this->cache->status(ResultCacheId::fromReorderable($test))->asInt(); - $max = max($max, $this->defectSortOrder[$sortId]); - } - } - - $this->defectSortOrder[$suite->sortId()] = $max; - } - - /** - * @param list $tests - * - * @return list - */ - private function reverse(array $tests): array - { - return array_reverse($tests); - } - - /** - * @param list $tests - * - * @return list - */ - private function randomize(array $tests): array - { - shuffle($tests); - - return $tests; - } - - /** - * @param list $tests - * - * @return list - */ - private function sortDefectsFirst(array $tests): array - { - usort( - $tests, - fn ($left, $right) => $this->cmpDefectPriorityAndTime($left, $right), - ); - - return $tests; - } - - /** - * @param list $tests - * - * @return list - */ - private function sortByDuration(array $tests): array - { - usort( - $tests, - fn ($left, $right) => $this->cmpDuration($left, $right), - ); - - return $tests; - } - - /** - * @param list $tests - * - * @return list - */ - private function sortBySize(array $tests): array - { - usort( - $tests, - fn ($left, $right) => $this->cmpSize($left, $right), - ); - - return $tests; - } - - /** - * Comparator callback function to sort tests for "reach failure as fast as possible". - * - * 1. sort tests by defect weight defined in self::DEFECT_SORT_WEIGHT - * 2. when tests are equally defective, sort the fastest to the front - * 3. do not reorder successful tests - */ - private function cmpDefectPriorityAndTime(Test $a, Test $b): int - { - assert($a instanceof Reorderable); - assert($b instanceof Reorderable); - - $priorityA = $this->defectSortOrder[$a->sortId()] ?? 0; - $priorityB = $this->defectSortOrder[$b->sortId()] ?? 0; - - if ($priorityB <=> $priorityA) { - // Sort defect weight descending - return $priorityB <=> $priorityA; - } - - if ($priorityA || $priorityB) { - return $this->cmpDuration($a, $b); - } - - // do not change execution order - return 0; - } - - /** - * Compares test duration for sorting tests by duration ascending. - */ - private function cmpDuration(Test $a, Test $b): int - { - if (!($a instanceof Reorderable && $b instanceof Reorderable)) { - return 0; - } - - return $this->cache->time(ResultCacheId::fromReorderable($a)) <=> $this->cache->time(ResultCacheId::fromReorderable($b)); - } - - /** - * Compares test size for sorting tests small->medium->large->unknown. - */ - private function cmpSize(Test $a, Test $b): int - { - $sizeA = ($a instanceof TestCase || $a instanceof DataProviderTestSuite) - ? $a->size()->asString() - : 'unknown'; - $sizeB = ($b instanceof TestCase || $b instanceof DataProviderTestSuite) - ? $b->size()->asString() - : 'unknown'; - - return self::SIZE_SORT_WEIGHT[$sizeA] <=> self::SIZE_SORT_WEIGHT[$sizeB]; - } - - /** - * Reorder Tests within a TestCase in such a way as to resolve as many dependencies as possible. - * The algorithm will leave the tests in original running order when it can. - * For more details see the documentation for test dependencies. - * - * Short description of algorithm: - * 1. Pick the next Test from remaining tests to be checked for dependencies. - * 2. If the test has no dependencies: mark done, start again from the top - * 3. If the test has dependencies but none left to do: mark done, start again from the top - * 4. When we reach the end add any leftover tests to the end. These will be marked 'skipped' during execution. - * - * @param array $tests - * - * @return array - */ - private function resolveDependencies(array $tests): array - { - $newTestOrder = []; - $i = 0; - $provided = []; - - do { - if ([] === array_diff($tests[$i]->requires(), $provided)) { - $provided = array_merge($provided, $tests[$i]->provides()); - $newTestOrder = array_merge($newTestOrder, array_splice($tests, $i, 1)); - $i = 0; - } else { - $i++; - } - } while (!empty($tests) && ($i < count($tests))); - - return array_merge($newTestOrder, $tests); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Version.php b/v3_ci4/vendor/phpunit/phpunit/src/Runner/Version.php deleted file mode 100644 index 98bffb3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Runner/Version.php +++ /dev/null @@ -1,72 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Runner; - -use function array_slice; -use function dirname; -use function explode; -use function implode; -use function str_contains; -use SebastianBergmann\Version as VersionId; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class Version -{ - private static string $pharVersion = ''; - private static string $version = ''; - - /** - * @return non-empty-string - */ - public static function id(): string - { - if (self::$pharVersion !== '') { - return self::$pharVersion; - } - - if (self::$version === '') { - self::$version = (new VersionId('11.5.55', dirname(__DIR__, 2)))->asString(); - } - - return self::$version; - } - - /** - * @return non-empty-string - */ - public static function series(): string - { - if (str_contains(self::id(), '-')) { - $version = explode('-', self::id(), 2)[0]; - } else { - $version = self::id(); - } - - return implode('.', array_slice(explode('.', $version), 0, 2)); - } - - /** - * @return positive-int - */ - public static function majorVersionNumber(): int - { - return (int) explode('.', self::series())[0]; - } - - /** - * @return non-empty-string - */ - public static function getVersionString(): string - { - return 'PHPUnit ' . self::id() . ' by Sebastian Bergmann and contributors.'; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Application.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Application.php deleted file mode 100644 index 262f226..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Application.php +++ /dev/null @@ -1,859 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use const PHP_EOL; -use const PHP_VERSION; -use function assert; -use function class_exists; -use function explode; -use function function_exists; -use function is_file; -use function is_readable; -use function method_exists; -use function printf; -use function realpath; -use function sprintf; -use function str_contains; -use function trim; -use function unlink; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Logging\EventLogger; -use PHPUnit\Logging\JUnit\JunitXmlLogger; -use PHPUnit\Logging\TeamCity\TeamCityLogger; -use PHPUnit\Logging\TestDox\HtmlRenderer as TestDoxHtmlRenderer; -use PHPUnit\Logging\TestDox\PlainTextRenderer as TestDoxTextRenderer; -use PHPUnit\Logging\TestDox\TestResultCollector as TestDoxResultCollector; -use PHPUnit\Runner\Baseline\CannotLoadBaselineException; -use PHPUnit\Runner\Baseline\Generator as BaselineGenerator; -use PHPUnit\Runner\Baseline\Reader; -use PHPUnit\Runner\Baseline\Writer; -use PHPUnit\Runner\CodeCoverage; -use PHPUnit\Runner\DeprecationCollector\Facade as DeprecationCollector; -use PHPUnit\Runner\DirectoryDoesNotExistException; -use PHPUnit\Runner\ErrorHandler; -use PHPUnit\Runner\Extension\ExtensionBootstrapper; -use PHPUnit\Runner\Extension\Facade as ExtensionFacade; -use PHPUnit\Runner\Extension\PharLoader; -use PHPUnit\Runner\GarbageCollection\GarbageCollectionHandler; -use PHPUnit\Runner\PhptTestCase; -use PHPUnit\Runner\ResultCache\DefaultResultCache; -use PHPUnit\Runner\ResultCache\NullResultCache; -use PHPUnit\Runner\ResultCache\ResultCache; -use PHPUnit\Runner\ResultCache\ResultCacheHandler; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\Runner\Version; -use PHPUnit\TestRunner\IssueFilter; -use PHPUnit\TestRunner\TestResult\Facade as TestResultFacade; -use PHPUnit\TextUI\CliArguments\Builder; -use PHPUnit\TextUI\CliArguments\Configuration as CliConfiguration; -use PHPUnit\TextUI\CliArguments\Exception as ArgumentsException; -use PHPUnit\TextUI\CliArguments\XmlConfigurationFileFinder; -use PHPUnit\TextUI\Command\AtLeastVersionCommand; -use PHPUnit\TextUI\Command\CheckPhpConfigurationCommand; -use PHPUnit\TextUI\Command\GenerateConfigurationCommand; -use PHPUnit\TextUI\Command\ListGroupsCommand; -use PHPUnit\TextUI\Command\ListTestFilesCommand; -use PHPUnit\TextUI\Command\ListTestsAsTextCommand; -use PHPUnit\TextUI\Command\ListTestsAsXmlCommand; -use PHPUnit\TextUI\Command\ListTestSuitesCommand; -use PHPUnit\TextUI\Command\MigrateConfigurationCommand; -use PHPUnit\TextUI\Command\Result; -use PHPUnit\TextUI\Command\ShowHelpCommand; -use PHPUnit\TextUI\Command\ShowVersionCommand; -use PHPUnit\TextUI\Command\VersionCheckCommand; -use PHPUnit\TextUI\Command\WarmCodeCoverageCacheCommand; -use PHPUnit\TextUI\Configuration\CodeCoverageFilterRegistry; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\PhpHandler; -use PHPUnit\TextUI\Configuration\Registry; -use PHPUnit\TextUI\Configuration\TestSuiteBuilder; -use PHPUnit\TextUI\Output\DefaultPrinter; -use PHPUnit\TextUI\Output\Facade as OutputFacade; -use PHPUnit\TextUI\Output\Printer; -use PHPUnit\TextUI\XmlConfiguration\Configuration as XmlConfiguration; -use PHPUnit\TextUI\XmlConfiguration\DefaultConfiguration; -use PHPUnit\TextUI\XmlConfiguration\Loader; -use PHPUnit\Util\Http\PhpDownloader; -use SebastianBergmann\Timer\Timer; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Application -{ - /** - * @param list $argv - */ - public function run(array $argv): int - { - try { - EventFacade::emitter()->applicationStarted(); - - $cliConfiguration = $this->buildCliConfiguration($argv); - $pathToXmlConfigurationFile = (new XmlConfigurationFileFinder)->find($cliConfiguration); - - $this->executeCommandsThatOnlyRequireCliConfiguration($cliConfiguration, $pathToXmlConfigurationFile); - - $xmlConfiguration = $this->loadXmlConfiguration($pathToXmlConfigurationFile); - - $configuration = Registry::init( - $cliConfiguration, - $xmlConfiguration, - ); - - (new PhpHandler)->handle($configuration->php()); - - if ($configuration->hasBootstrap()) { - $this->loadBootstrapScript($configuration->bootstrap()); - } - - $this->executeCommandsThatDoNotRequireTheTestSuite($configuration, $cliConfiguration); - - $pharExtensions = null; - $extensionRequiresCodeCoverageCollection = false; - $extensionReplacesOutput = false; - $extensionReplacesProgressOutput = false; - $extensionReplacesResultOutput = false; - - if (!$configuration->noExtensions()) { - if ($configuration->hasPharExtensionDirectory()) { - $pharExtensions = (new PharLoader)->loadPharExtensionsInDirectory( - $configuration->pharExtensionDirectory(), - ); - } - - $bootstrappedExtensions = $this->bootstrapExtensions($configuration); - $extensionRequiresCodeCoverageCollection = $bootstrappedExtensions['requiresCodeCoverageCollection']; - $extensionReplacesOutput = $bootstrappedExtensions['replacesOutput']; - $extensionReplacesProgressOutput = $bootstrappedExtensions['replacesProgressOutput']; - $extensionReplacesResultOutput = $bootstrappedExtensions['replacesResultOutput']; - } - - $printer = OutputFacade::init( - $configuration, - $extensionReplacesProgressOutput, - $extensionReplacesResultOutput, - ); - - if ($configuration->debug()) { - EventFacade::instance()->registerTracer( - new EventLogger( - 'php://stdout', - false, - ), - ); - } - - TestResultFacade::init(); - DeprecationCollector::init(); - - $this->registerLogfileWriters($configuration); - - $testDoxResultCollector = $this->testDoxResultCollector($configuration); - - $resultCache = $this->initializeTestResultCache($configuration); - - if ($configuration->controlGarbageCollector()) { - new GarbageCollectionHandler( - EventFacade::instance(), - $configuration->numberOfTestsBeforeGarbageCollection(), - ); - } - - $baselineGenerator = $this->configureBaseline($configuration); - - EventFacade::instance()->seal(); - - $testSuite = $this->buildTestSuite($configuration); - - $this->executeCommandsThatRequireTheTestSuite($configuration, $cliConfiguration, $testSuite); - - if ($testSuite->isEmpty() && !$configuration->hasCliArguments() && $configuration->testSuite()->isEmpty()) { - $this->execute(new ShowHelpCommand(Result::FAILURE)); - } - - CodeCoverage::instance()->init( - $configuration, - CodeCoverageFilterRegistry::instance(), - $extensionRequiresCodeCoverageCollection, - ); - - if (!$configuration->debug() && !$extensionReplacesOutput) { - $this->writeRuntimeInformation($printer, $configuration); - $this->writePharExtensionInformation($printer, $pharExtensions); - $this->writeRandomSeedInformation($printer, $configuration); - - $printer->print(PHP_EOL); - } - - $this->configureDeprecationTriggers($configuration); - - $timer = new Timer; - $timer->start(); - - $runner = new TestRunner; - - $runner->run( - $configuration, - $resultCache, - $testSuite, - ); - - $duration = $timer->stop(); - - $testDoxResult = null; - - if (isset($testDoxResultCollector)) { - $testDoxResult = $testDoxResultCollector->testMethodsGroupedByClass(); - } - - if ($testDoxResult !== null && - $configuration->hasLogfileTestdoxHtml()) { - try { - OutputFacade::printerFor($configuration->logfileTestdoxHtml())->print( - (new TestDoxHtmlRenderer)->render($testDoxResult), - ); - } catch (DirectoryDoesNotExistException|InvalidSocketException $e) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot log test results in TestDox HTML format to "%s": %s', - $configuration->logfileTestdoxHtml(), - $e->getMessage(), - ), - ); - } - } - - if ($testDoxResult !== null && - $configuration->hasLogfileTestdoxText()) { - try { - OutputFacade::printerFor($configuration->logfileTestdoxText())->print( - (new TestDoxTextRenderer)->render($testDoxResult), - ); - } catch (DirectoryDoesNotExistException|InvalidSocketException $e) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot log test results in TestDox plain text format to "%s": %s', - $configuration->logfileTestdoxText(), - $e->getMessage(), - ), - ); - } - } - - $result = TestResultFacade::result(); - - if (!$extensionReplacesResultOutput && !$configuration->debug()) { - OutputFacade::printResult( - $result, - $testDoxResult, - $duration, - $configuration->hasSpecificDeprecationToStopOn(), - ); - } - - CodeCoverage::instance()->generateReports($printer, $configuration); - - if (isset($baselineGenerator)) { - (new Writer)->write( - $configuration->generateBaseline(), - $baselineGenerator->baseline(), - ); - - $printer->print( - sprintf( - PHP_EOL . 'Baseline written to %s.' . PHP_EOL, - realpath($configuration->generateBaseline()), - ), - ); - } - - $shellExitCode = (new ShellExitCodeCalculator)->calculate( - $configuration, - $result, - ); - - EventFacade::emitter()->applicationFinished($shellExitCode); - - return $shellExitCode; - // @codeCoverageIgnoreStart - } catch (Throwable $t) { - $this->exitWithCrashMessage($t); - } - // @codeCoverageIgnoreEnd - } - - private function execute(Command\Command $command, bool $requiresResultCollectedFromEvents = false): never - { - $errored = false; - - if ($requiresResultCollectedFromEvents) { - try { - TestResultFacade::init(); - EventFacade::instance()->seal(); - - $resultCollectedFromEvents = TestResultFacade::result(); - - $errored = $resultCollectedFromEvents->hasTestTriggeredPhpunitErrorEvents(); - } catch (EventFacadeIsSealedException|UnknownSubscriberTypeException) { - } - } - - print Version::getVersionString() . PHP_EOL . PHP_EOL; - - if (!$errored) { - $result = $command->execute(); - - print $result->output(); - - exit($result->shellExitCode()); - } - - assert(isset($resultCollectedFromEvents)); - - print 'There were errors:' . PHP_EOL; - - foreach ($resultCollectedFromEvents->testTriggeredPhpunitErrorEvents() as $events) { - foreach ($events as $event) { - print PHP_EOL . trim($event->message()) . PHP_EOL; - } - } - - exit(Result::EXCEPTION); - } - - private function loadBootstrapScript(string $filename): void - { - if (!is_readable($filename)) { - $this->exitWithErrorMessage( - sprintf( - 'Cannot open bootstrap script "%s"', - $filename, - ), - ); - } - - try { - include_once $filename; - } catch (Throwable $t) { - $message = sprintf( - 'Error in bootstrap script: %s:%s%s%s%s', - $t::class, - PHP_EOL, - $t->getMessage(), - PHP_EOL, - $t->getTraceAsString(), - ); - - while ($t = $t->getPrevious()) { - $message .= sprintf( - '%s%sPrevious error: %s:%s%s%s%s', - PHP_EOL, - PHP_EOL, - $t::class, - PHP_EOL, - $t->getMessage(), - PHP_EOL, - $t->getTraceAsString(), - ); - } - - $this->exitWithErrorMessage($message); - } - - EventFacade::emitter()->testRunnerBootstrapFinished($filename); - } - - /** - * @param list $argv - */ - private function buildCliConfiguration(array $argv): CliConfiguration - { - try { - $cliConfiguration = (new Builder)->fromParameters($argv); - } catch (ArgumentsException $e) { - $this->exitWithErrorMessage($e->getMessage()); - } - - return $cliConfiguration; - } - - private function loadXmlConfiguration(false|string $configurationFile): XmlConfiguration - { - if ($configurationFile === false) { - return DefaultConfiguration::create(); - } - - try { - return (new Loader)->load($configurationFile); - } catch (Throwable $e) { - $this->exitWithErrorMessage($e->getMessage()); - } - } - - private function buildTestSuite(Configuration $configuration): TestSuite - { - try { - return (new TestSuiteBuilder)->build($configuration); - } catch (Exception $e) { - $this->exitWithErrorMessage($e->getMessage()); - } - } - - /** - * @return array{requiresCodeCoverageCollection: bool, replacesOutput: bool, replacesProgressOutput: bool, replacesResultOutput: bool} - */ - private function bootstrapExtensions(Configuration $configuration): array - { - $facade = new ExtensionFacade; - - $extensionBootstrapper = new ExtensionBootstrapper( - $configuration, - $facade, - ); - - foreach ($configuration->extensionBootstrappers() as $bootstrapper) { - $extensionBootstrapper->bootstrap( - $bootstrapper['className'], - $bootstrapper['parameters'], - ); - } - - return [ - 'requiresCodeCoverageCollection' => $facade->requiresCodeCoverageCollection(), - 'replacesOutput' => $facade->replacesOutput(), - 'replacesProgressOutput' => $facade->replacesProgressOutput(), - 'replacesResultOutput' => $facade->replacesResultOutput(), - ]; - } - - private function executeCommandsThatOnlyRequireCliConfiguration(CliConfiguration $cliConfiguration, false|string $configurationFile): void - { - if ($cliConfiguration->generateConfiguration()) { - $this->execute(new GenerateConfigurationCommand); - } - - if ($cliConfiguration->migrateConfiguration()) { - if ($configurationFile === false) { - $this->exitWithErrorMessage('No configuration file found to migrate'); - } - - $this->execute(new MigrateConfigurationCommand(realpath($configurationFile))); - } - - if ($cliConfiguration->hasAtLeastVersion()) { - $this->execute(new AtLeastVersionCommand($cliConfiguration->atLeastVersion())); - } - - if ($cliConfiguration->version()) { - $this->execute(new ShowVersionCommand); - } - - if ($cliConfiguration->checkPhpConfiguration()) { - $this->execute(new CheckPhpConfigurationCommand); - } - - if ($cliConfiguration->checkVersion()) { - $this->execute(new VersionCheckCommand(new PhpDownloader, Version::majorVersionNumber(), Version::id())); - } - - if ($cliConfiguration->help()) { - $this->execute(new ShowHelpCommand(Result::SUCCESS)); - } - } - - private function executeCommandsThatDoNotRequireTheTestSuite(Configuration $configuration, CliConfiguration $cliConfiguration): void - { - if ($cliConfiguration->warmCoverageCache()) { - $this->execute(new WarmCodeCoverageCacheCommand($configuration, CodeCoverageFilterRegistry::instance())); - } - } - - private function executeCommandsThatRequireTheTestSuite(Configuration $configuration, CliConfiguration $cliConfiguration, TestSuite $testSuite): void - { - if ($cliConfiguration->listSuites()) { - $this->execute(new ListTestSuitesCommand($testSuite)); - } - - if ($cliConfiguration->listGroups()) { - $this->execute( - new ListGroupsCommand( - $this->filteredTests( - $configuration, - $testSuite, - ), - ), - true, - ); - } - - if ($cliConfiguration->listTests()) { - $this->execute( - new ListTestsAsTextCommand( - $this->filteredTests( - $configuration, - $testSuite, - ), - ), - true, - ); - } - - if ($cliConfiguration->hasListTestsXml()) { - $this->execute( - new ListTestsAsXmlCommand( - $this->filteredTests( - $configuration, - $testSuite, - ), - $cliConfiguration->listTestsXml(), - ), - true, - ); - } - - if ($cliConfiguration->listTestFiles()) { - $this->execute( - new ListTestFilesCommand( - $this->filteredTests( - $configuration, - $testSuite, - ), - ), - true, - ); - } - } - - private function writeRuntimeInformation(Printer $printer, Configuration $configuration): void - { - $printer->print(Version::getVersionString() . PHP_EOL . PHP_EOL); - - $runtime = 'PHP ' . PHP_VERSION; - - if (CodeCoverage::instance()->isActive()) { - $runtime .= ' with ' . CodeCoverage::instance()->driverNameAndVersion(); - } - - $this->writeMessage($printer, 'Runtime', $runtime); - - if ($configuration->hasConfigurationFile()) { - $this->writeMessage( - $printer, - 'Configuration', - $configuration->configurationFile(), - ); - } - } - - /** - * @param ?list $pharExtensions - */ - private function writePharExtensionInformation(Printer $printer, ?array $pharExtensions): void - { - if ($pharExtensions === null) { - return; - } - - foreach ($pharExtensions as $extension) { - $this->writeMessage( - $printer, - 'Extension', - $extension, - ); - } - } - - private function writeMessage(Printer $printer, string $type, string $message): void - { - $printer->print( - sprintf( - "%-15s%s\n", - $type . ':', - $message, - ), - ); - } - - private function writeRandomSeedInformation(Printer $printer, Configuration $configuration): void - { - if ($configuration->executionOrder() === TestSuiteSorter::ORDER_RANDOMIZED) { - $this->writeMessage( - $printer, - 'Random Seed', - (string) $configuration->randomOrderSeed(), - ); - } - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerLogfileWriters(Configuration $configuration): void - { - if ($configuration->hasLogEventsText()) { - if (is_file($configuration->logEventsText())) { - unlink($configuration->logEventsText()); - } - - EventFacade::instance()->registerTracer( - new EventLogger( - $configuration->logEventsText(), - false, - ), - ); - } - - if ($configuration->hasLogEventsVerboseText()) { - if (is_file($configuration->logEventsVerboseText())) { - unlink($configuration->logEventsVerboseText()); - } - - EventFacade::instance()->registerTracer( - new EventLogger( - $configuration->logEventsVerboseText(), - true, - ), - ); - } - - if ($configuration->hasLogfileJunit()) { - try { - new JunitXmlLogger( - OutputFacade::printerFor($configuration->logfileJunit()), - EventFacade::instance(), - ); - } catch (DirectoryDoesNotExistException|InvalidSocketException $e) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot log test results in JUnit XML format to "%s": %s', - $configuration->logfileJunit(), - $e->getMessage(), - ), - ); - } - } - - if ($configuration->hasLogfileTeamcity()) { - try { - new TeamCityLogger( - DefaultPrinter::from( - $configuration->logfileTeamcity(), - ), - EventFacade::instance(), - ); - } catch (DirectoryDoesNotExistException|InvalidSocketException $e) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot log test results in TeamCity format to "%s": %s', - $configuration->logfileTeamcity(), - $e->getMessage(), - ), - ); - } - } - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function testDoxResultCollector(Configuration $configuration): ?TestDoxResultCollector - { - if ($configuration->hasLogfileTestdoxHtml() || - $configuration->hasLogfileTestdoxText() || - $configuration->outputIsTestDox()) { - return new TestDoxResultCollector( - EventFacade::instance(), - new IssueFilter($configuration->source()), - ); - } - - return null; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function initializeTestResultCache(Configuration $configuration): ResultCache - { - if ($configuration->cacheResult()) { - $cache = new DefaultResultCache($configuration->testResultCacheFile()); - - new ResultCacheHandler($cache, EventFacade::instance()); - - return $cache; - } - - return new NullResultCache; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function configureBaseline(Configuration $configuration): ?BaselineGenerator - { - if ($configuration->hasGenerateBaseline()) { - return new BaselineGenerator( - EventFacade::instance(), - $configuration->source(), - ); - } - - if ($configuration->source()->useBaseline()) { - $baselineFile = $configuration->source()->baseline(); - $baseline = null; - - try { - $baseline = (new Reader)->read($baselineFile); - } catch (CannotLoadBaselineException $e) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning($e->getMessage()); - } - - if ($baseline !== null) { - ErrorHandler::instance()->useBaseline($baseline); - } - } - - return null; - } - - /** - * @codeCoverageIgnore - */ - private function exitWithCrashMessage(Throwable $t): never - { - $message = $t->getMessage(); - - if (empty(trim($message))) { - $message = '(no message)'; - } - - printf( - '%s%sAn error occurred inside PHPUnit.%s%sMessage: %s', - PHP_EOL, - PHP_EOL, - PHP_EOL, - PHP_EOL, - $message, - ); - - $first = true; - - if ($t->getPrevious()) { - $t = $t->getPrevious(); - } - - do { - printf( - '%s%s: %s:%d%s%s%s%s', - PHP_EOL, - $first ? 'Location' : 'Caused by', - $t->getFile(), - $t->getLine(), - PHP_EOL, - PHP_EOL, - $t->getTraceAsString(), - PHP_EOL, - ); - - $first = false; - } while ($t = $t->getPrevious()); - - exit(Result::CRASH); - } - - private function exitWithErrorMessage(string $message): never - { - print Version::getVersionString() . PHP_EOL . PHP_EOL . $message . PHP_EOL; - - exit(Result::EXCEPTION); - } - - /** - * @return list - */ - private function filteredTests(Configuration $configuration, TestSuite $suite): array - { - (new TestSuiteFilterProcessor)->process($configuration, $suite); - - return $suite->collect(); - } - - private function configureDeprecationTriggers(Configuration $configuration): void - { - $deprecationTriggers = [ - 'functions' => [], - 'methods' => [], - ]; - - foreach ($configuration->source()->deprecationTriggers()['functions'] as $function) { - if (!function_exists($function)) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Function %s cannot be configured as a deprecation trigger because it is not declared', - $function, - ), - ); - - continue; - } - - $deprecationTriggers['functions'][] = $function; - } - - foreach ($configuration->source()->deprecationTriggers()['methods'] as $method) { - if (!str_contains($method, '::')) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - '%s cannot be configured as a deprecation trigger because it is not in ClassName::methodName format', - $method, - ), - ); - - continue; - } - - [$className, $methodName] = explode('::', $method); - - if (!class_exists($className) || !method_exists($className, $methodName)) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Method %s::%s cannot be configured as a deprecation trigger because it is not declared', - $className, - $methodName, - ), - ); - - continue; - } - - $deprecationTriggers['methods'][] = [ - 'className' => $className, - 'methodName' => $methodName, - ]; - } - - if ($deprecationTriggers !== ['functions' => [], 'methods' => []]) { - ErrorHandler::instance()->useDeprecationTriggers($deprecationTriggers); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Command.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Command.php deleted file mode 100644 index faa9ebc..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Command.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Command -{ - public function execute(): Result; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php deleted file mode 100644 index 7bace86..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use function version_compare; -use PHPUnit\Runner\Version; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class AtLeastVersionCommand implements Command -{ - private string $version; - - public function __construct(string $version) - { - $this->version = $version; - } - - public function execute(): Result - { - if (version_compare(Version::id(), $this->version, '>=')) { - return Result::from(); - } - - return Result::from('', Result::FAILURE); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/CheckPhpConfigurationCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/CheckPhpConfigurationCommand.php deleted file mode 100644 index 7f684cc..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/CheckPhpConfigurationCommand.php +++ /dev/null @@ -1,166 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const E_ALL; -use const PHP_EOL; -use function extension_loaded; -use function in_array; -use function ini_get; -use function max; -use function sprintf; -use function strlen; -use PHPUnit\Runner\Version; -use PHPUnit\Util\Color; -use SebastianBergmann\Environment\Console; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CheckPhpConfigurationCommand implements Command -{ - private bool $colorize; - - public function __construct() - { - $this->colorize = (new Console)->hasColorSupport(); - } - - public function execute(): Result - { - $lines = []; - $shellExitCode = 0; - - foreach ($this->settings() as $name => $setting) { - foreach ($setting['requiredExtensions'] as $extension) { - if (!extension_loaded($extension)) { - // @codeCoverageIgnoreStart - continue 2; - // @codeCoverageIgnoreEnd - } - } - - $actualValue = ini_get($name); - - if (in_array($actualValue, $setting['expectedValues'], true)) { - $check = $this->ok(); - } else { - $check = $this->notOk($actualValue); - $shellExitCode = 1; - } - - $lines[] = [ - sprintf( - '%s = %s', - $name, - $setting['valueForConfiguration'], - ), - $check, - ]; - } - - $maxLength = 0; - - foreach ($lines as $line) { - $maxLength = max($maxLength, strlen($line[0])); - } - - $buffer = sprintf( - 'Checking whether PHP is configured according to https://docs.phpunit.de/en/%s/installation.html#configuring-php-for-development' . PHP_EOL . PHP_EOL, - Version::series(), - ); - - foreach ($lines as $line) { - $buffer .= sprintf( - '%-' . $maxLength . 's ... %s' . PHP_EOL, - $line[0], - $line[1], - ); - } - - return Result::from($buffer, $shellExitCode); - } - - /** - * @return non-empty-string - */ - private function ok(): string - { - if (!$this->colorize) { - return 'ok'; - } - - // @codeCoverageIgnoreStart - return Color::colorizeTextBox('fg-green, bold', 'ok'); - // @codeCoverageIgnoreEnd - } - - /** - * @return non-empty-string - */ - private function notOk(string $actualValue): string - { - $message = sprintf('not ok (%s)', $actualValue); - - if (!$this->colorize) { - return $message; - } - - // @codeCoverageIgnoreStart - return Color::colorizeTextBox('fg-red, bold', $message); - // @codeCoverageIgnoreEnd - } - - /** - * @return non-empty-array, valueForConfiguration: non-empty-string, requiredExtensions: list}> - */ - private function settings(): array - { - return [ - 'display_errors' => [ - 'expectedValues' => ['1'], - 'valueForConfiguration' => 'On', - 'requiredExtensions' => [], - ], - 'display_startup_errors' => [ - 'expectedValues' => ['1'], - 'valueForConfiguration' => 'On', - 'requiredExtensions' => [], - ], - 'error_reporting' => [ - 'expectedValues' => ['-1', (string) E_ALL], - 'valueForConfiguration' => '-1', - 'requiredExtensions' => [], - ], - 'xdebug.show_exception_trace' => [ - 'expectedValues' => ['0'], - 'valueForConfiguration' => '0', - 'requiredExtensions' => ['xdebug'], - ], - 'zend.assertions' => [ - 'expectedValues' => ['1'], - 'valueForConfiguration' => '1', - 'requiredExtensions' => [], - ], - 'assert.exception' => [ - 'expectedValues' => ['1'], - 'valueForConfiguration' => '1', - 'requiredExtensions' => [], - ], - 'memory_limit' => [ - 'expectedValues' => ['-1'], - 'valueForConfiguration' => '-1', - 'requiredExtensions' => [], - ], - ]; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php deleted file mode 100644 index cb1a9ac..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php +++ /dev/null @@ -1,122 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use const STDIN; -use function assert; -use function defined; -use function fgets; -use function file_put_contents; -use function getcwd; -use function is_file; -use function sprintf; -use function trim; -use PHPUnit\Runner\Version; -use PHPUnit\TextUI\XmlConfiguration\Generator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class GenerateConfigurationCommand implements Command -{ - public function execute(): Result - { - $directory = getcwd(); - - print 'Generating phpunit.xml in ' . $directory . PHP_EOL . PHP_EOL; - print 'Bootstrap script (relative to path shown above; default: vendor/autoload.php): '; - - $bootstrapScript = $this->read(); - - print 'Tests directory (relative to path shown above; default: tests): '; - - $testsDirectory = $this->read(); - - print 'Source directory (relative to path shown above; default: src): '; - - $src = $this->read(); - - print 'Cache directory (relative to path shown above; default: .phpunit.cache): '; - - $cacheDirectory = $this->read(); - - if ($bootstrapScript === '') { - $bootstrapScript = 'vendor/autoload.php'; - } - - if ($testsDirectory === '') { - $testsDirectory = 'tests'; - } - - if ($src === '') { - $src = 'src'; - } - - if ($cacheDirectory === '') { - $cacheDirectory = '.phpunit.cache'; - } - - if (defined('PHPUNIT_COMPOSER_INSTALL') && - is_file($directory . '/vendor/phpunit/phpunit/phpunit.xsd')) { - $schemaLocation = 'vendor/phpunit/phpunit/phpunit.xsd'; - } else { - $schemaLocation = sprintf( - 'https://schema.phpunit.de/%s/phpunit.xsd', - Version::series(), - ); - } - - $generator = new Generator; - - $result = @file_put_contents( - $directory . '/phpunit.xml', - $generator->generateDefaultConfiguration( - $schemaLocation, - $bootstrapScript, - $testsDirectory, - $src, - $cacheDirectory, - ), - ); - - if ($result !== false) { - return Result::from( - sprintf( - PHP_EOL . 'Generated phpunit.xml in %s.' . PHP_EOL . - 'Make sure to exclude the %s directory from version control.' . PHP_EOL, - $directory, - $cacheDirectory, - ), - ); - } - - // @codeCoverageIgnoreStart - return Result::from( - sprintf( - PHP_EOL . 'Could not write phpunit.xml in %s.' . PHP_EOL, - $directory, - ), - Result::EXCEPTION, - ); - // @codeCoverageIgnoreEnd - } - - private function read(): string - { - $buffer = fgets(STDIN); - - assert($buffer !== false); - - return trim($buffer); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php deleted file mode 100644 index 3cff3d1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function count; -use function ksort; -use function sprintf; -use function str_starts_with; -use PHPUnit\Framework\TestCase; -use PHPUnit\Runner\PhptTestCase; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ListGroupsCommand implements Command -{ - /** - * @var list - */ - private array $tests; - - /** - * @param list $tests - */ - public function __construct(array $tests) - { - $this->tests = $tests; - } - - public function execute(): Result - { - /** @var array $groups */ - $groups = []; - - foreach ($this->tests as $test) { - if ($test instanceof PhptTestCase) { - if (!isset($groups['default'])) { - $groups['default'] = 1; - } else { - $groups['default']++; - } - - continue; - } - - foreach ($test->groups() as $group) { - if (!isset($groups[$group])) { - $groups[$group] = 1; - } else { - $groups[$group]++; - } - } - } - - ksort($groups); - - $buffer = sprintf( - 'Available test group%s:' . PHP_EOL, - count($groups) > 1 ? 's' : '', - ); - - foreach ($groups as $group => $numberOfTests) { - if (str_starts_with((string) $group, '__phpunit_')) { - continue; - } - - $buffer .= sprintf( - ' - %s (%d test%s)' . PHP_EOL, - (string) $group, - $numberOfTests, - $numberOfTests > 1 ? 's' : '', - ); - } - - return Result::from($buffer); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestFilesCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestFilesCommand.php deleted file mode 100644 index 263d1d6..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestFilesCommand.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function array_unique; -use function assert; -use function sprintf; -use PHPUnit\Framework\TestCase; -use PHPUnit\Runner\PhptTestCase; -use ReflectionClass; -use ReflectionException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ListTestFilesCommand implements Command -{ - /** - * @var list - */ - private array $tests; - - /** - * @param list $tests - */ - public function __construct(array $tests) - { - $this->tests = $tests; - } - - /** - * @throws ReflectionException - */ - public function execute(): Result - { - $buffer = 'Available test files:' . PHP_EOL; - - $results = []; - - foreach ($this->tests as $test) { - if ($test instanceof TestCase) { - $name = (new ReflectionClass($test))->getFileName(); - - assert($name !== false); - - $results[] = $name; - - continue; - } - - $results[] = $test->getName(); - } - - foreach (array_unique($results) as $result) { - $buffer .= sprintf( - ' - %s' . PHP_EOL, - $result, - ); - } - - return Result::from($buffer); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php deleted file mode 100644 index fec7afc..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function assert; -use function count; -use function ksort; -use function sprintf; -use PHPUnit\Framework\TestSuite; -use PHPUnit\TextUI\Configuration\Registry; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ListTestSuitesCommand implements Command -{ - private TestSuite $testSuite; - - public function __construct(TestSuite $testSuite) - { - $this->testSuite = $testSuite; - } - - public function execute(): Result - { - /** @var array $suites */ - $suites = []; - - foreach ($this->testSuite->tests() as $test) { - assert($test instanceof TestSuite); - - $suites[$test->name()] = count($test->collect()); - } - - ksort($suites); - - $buffer = $this->warnAboutConflictingOptions(); - - $buffer .= sprintf( - 'Available test suite%s:' . PHP_EOL, - count($suites) > 1 ? 's' : '', - ); - - foreach ($suites as $suite => $numberOfTests) { - $buffer .= sprintf( - ' - %s (%d test%s)' . PHP_EOL, - $suite, - $numberOfTests, - $numberOfTests > 1 ? 's' : '', - ); - } - - return Result::from($buffer); - } - - private function warnAboutConflictingOptions(): string - { - $buffer = ''; - - $configuration = Registry::get(); - - if ($configuration->hasDefaultTestSuite()) { - $buffer .= 'The defaultTestSuite (XML) and --list-suites (CLI) options cannot be combined, only the default test suite is shown' . PHP_EOL; - } - - if ($configuration->includeTestSuite() !== '' && !$configuration->hasDefaultTestSuite()) { - $buffer .= 'The --testsuite and --list-suites options cannot be combined, --testsuite is ignored' . PHP_EOL; - } - - if ($configuration->hasFilter()) { - $buffer .= 'The --filter and --list-suites options cannot be combined, --filter is ignored' . PHP_EOL; - } - - if ($configuration->hasGroups()) { - $buffer .= 'The --group (CLI) and (XML) options cannot be combined with --list-suites, --group and are ignored' . PHP_EOL; - } - - if ($configuration->hasExcludeGroups()) { - $buffer .= 'The --exclude-group (CLI) and (XML) options cannot be combined with --list-suites, --exclude-group and are ignored' . PHP_EOL; - } - - if (!empty($buffer)) { - $buffer .= PHP_EOL; - } - - return $buffer; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php deleted file mode 100644 index 2242136..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function count; -use function sprintf; -use function str_replace; -use PHPUnit\Framework\TestCase; -use PHPUnit\Runner\PhptTestCase; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ListTestsAsTextCommand implements Command -{ - /** - * @var list - */ - private array $tests; - - /** - * @param list $tests - */ - public function __construct(array $tests) - { - $this->tests = $tests; - } - - public function execute(): Result - { - $buffer = sprintf( - 'Available test%s:' . PHP_EOL, - count($this->tests) > 1 ? 's' : '', - ); - - foreach ($this->tests as $test) { - if ($test instanceof TestCase) { - $name = sprintf( - '%s::%s', - $test::class, - str_replace(' with data set ', '', $test->nameWithDataSet()), - ); - } else { - $name = $test->getName(); - } - - $buffer .= sprintf( - ' - %s' . PHP_EOL, - $name, - ); - } - - return Result::from($buffer); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php deleted file mode 100644 index d9c624f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php +++ /dev/null @@ -1,140 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function assert; -use function file_put_contents; -use function ksort; -use function sprintf; -use PHPUnit\Framework\TestCase; -use PHPUnit\Runner\PhptTestCase; -use ReflectionClass; -use XMLWriter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ListTestsAsXmlCommand implements Command -{ - /** - * @var list - */ - private array $tests; - private string $filename; - - /** - * @param list $tests - */ - public function __construct(array $tests, string $filename) - { - $this->tests = $tests; - $this->filename = $filename; - } - - public function execute(): Result - { - $writer = new XMLWriter; - - $writer->openMemory(); - $writer->setIndent(true); - $writer->startDocument(); - - $writer->startElement('testSuite'); - $writer->writeAttribute('xmlns', 'https://xml.phpunit.de/testSuite'); - - $writer->startElement('tests'); - - $currentTestClass = null; - $groups = []; - - foreach ($this->tests as $test) { - if ($test instanceof TestCase) { - foreach ($test->groups() as $group) { - if (!isset($groups[$group])) { - $groups[$group] = []; - } - - $groups[$group][] = $test->valueObjectForEvents()->id(); - } - - if ($test::class !== $currentTestClass) { - if ($currentTestClass !== null) { - $writer->endElement(); - } - - $file = (new ReflectionClass($test))->getFileName(); - - assert($file !== false); - - $writer->startElement('testClass'); - $writer->writeAttribute('name', $test::class); - $writer->writeAttribute('file', $file); - - $currentTestClass = $test::class; - } - - $writer->startElement('testMethod'); - $writer->writeAttribute('id', $test->valueObjectForEvents()->id()); - $writer->writeAttribute('name', $test->valueObjectForEvents()->methodName()); - $writer->endElement(); - - continue; - } - - if ($currentTestClass !== null) { - $writer->endElement(); - - $currentTestClass = null; - } - - $writer->startElement('phpt'); - $writer->writeAttribute('file', $test->getName()); - $writer->endElement(); - } - - if ($currentTestClass !== null) { - $writer->endElement(); - } - - $writer->endElement(); - - ksort($groups); - - $writer->startElement('groups'); - - foreach ($groups as $groupName => $testIds) { - $writer->startElement('group'); - $writer->writeAttribute('name', (string) $groupName); - - foreach ($testIds as $testId) { - $writer->startElement('test'); - $writer->writeAttribute('id', $testId); - $writer->endElement(); - } - - $writer->endElement(); - } - - $writer->endElement(); - $writer->endElement(); - - file_put_contents($this->filename, $writer->outputMemory()); - - return Result::from( - sprintf( - 'Wrote list of tests that would have been run to %s' . PHP_EOL, - $this->filename, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php deleted file mode 100644 index 507ff90..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function copy; -use function file_put_contents; -use function sprintf; -use PHPUnit\TextUI\XmlConfiguration\Migrator; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class MigrateConfigurationCommand implements Command -{ - private string $filename; - - public function __construct(string $filename) - { - $this->filename = $filename; - } - - public function execute(): Result - { - try { - $migrated = (new Migrator)->migrate($this->filename); - - copy($this->filename, $this->filename . '.bak'); - - file_put_contents($this->filename, $migrated); - - return Result::from( - sprintf( - 'Created backup: %s.bak%sMigrated configuration: %s%s', - $this->filename, - PHP_EOL, - $this->filename, - PHP_EOL, - ), - ); - } catch (Throwable $t) { - return Result::from( - sprintf( - 'Migration of %s failed:%s%s%s', - $this->filename, - PHP_EOL, - $t->getMessage(), - PHP_EOL, - ), - Result::FAILURE, - ); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php deleted file mode 100644 index 1fd0481..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use PHPUnit\TextUI\Help; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ShowHelpCommand implements Command -{ - private int $shellExitCode; - - public function __construct(int $shellExitCode) - { - $this->shellExitCode = $shellExitCode; - } - - public function execute(): Result - { - return Result::from( - (new Help)->generate(), - $this->shellExitCode, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php deleted file mode 100644 index 4455a3d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowVersionCommand.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ShowVersionCommand implements Command -{ - public function execute(): Result - { - return Result::from(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php deleted file mode 100644 index 3e076eb..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function assert; -use function sprintf; -use function version_compare; -use PHPUnit\Util\Http\Downloader; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class VersionCheckCommand implements Command -{ - private Downloader $downloader; - private int $majorVersionNumber; - private string $versionId; - - public function __construct(Downloader $downloader, int $majorVersionNumber, string $versionId) - { - $this->downloader = $downloader; - $this->majorVersionNumber = $majorVersionNumber; - $this->versionId = $versionId; - } - - public function execute(): Result - { - $latestVersion = $this->downloader->download('https://phar.phpunit.de/latest-version-of/phpunit'); - - assert($latestVersion !== false); - - $latestCompatibleVersion = $this->downloader->download('https://phar.phpunit.de/latest-version-of/phpunit-' . $this->majorVersionNumber); - - $notLatest = version_compare($latestVersion, $this->versionId, '>'); - $notLatestCompatible = false; - - if ($latestCompatibleVersion !== false) { - $notLatestCompatible = version_compare($latestCompatibleVersion, $this->versionId, '>'); - } - - if (!$notLatest && !$notLatestCompatible) { - return Result::from( - 'You are using the latest version of PHPUnit.' . PHP_EOL, - ); - } - - $buffer = 'You are not using the latest version of PHPUnit.' . PHP_EOL; - - if ($notLatestCompatible) { - $buffer .= sprintf( - 'The latest version compatible with PHPUnit %s is PHPUnit %s.' . PHP_EOL, - $this->versionId, - $latestCompatibleVersion, - ); - } - - if ($notLatest) { - $buffer .= sprintf( - 'The latest version is PHPUnit %s.' . PHP_EOL, - $latestVersion, - ); - } - - return Result::from($buffer, Result::FAILURE); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php deleted file mode 100644 index c489ffd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -use const PHP_EOL; -use function printf; -use PHPUnit\TextUI\Configuration\CodeCoverageFilterRegistry; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\NoCoverageCacheDirectoryException; -use SebastianBergmann\CodeCoverage\StaticAnalysis\CacheWarmer; -use SebastianBergmann\Timer\NoActiveTimerException; -use SebastianBergmann\Timer\Timer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ -final readonly class WarmCodeCoverageCacheCommand implements Command -{ - private Configuration $configuration; - private CodeCoverageFilterRegistry $codeCoverageFilterRegistry; - - public function __construct(Configuration $configuration, CodeCoverageFilterRegistry $codeCoverageFilterRegistry) - { - $this->configuration = $configuration; - $this->codeCoverageFilterRegistry = $codeCoverageFilterRegistry; - } - - /** - * @throws NoActiveTimerException - * @throws NoCoverageCacheDirectoryException - */ - public function execute(): Result - { - if (!$this->configuration->hasCoverageCacheDirectory()) { - return Result::from( - 'Cache for static analysis has not been configured' . PHP_EOL, - Result::FAILURE, - ); - } - - $this->codeCoverageFilterRegistry->init($this->configuration, true); - - if (!$this->codeCoverageFilterRegistry->configured()) { - return Result::from( - 'Filter for code coverage has not been configured' . PHP_EOL, - Result::FAILURE, - ); - } - - $timer = new Timer; - $timer->start(); - - print 'Warming cache for static analysis ... '; - - (new CacheWarmer)->warmCache( - $this->configuration->coverageCacheDirectory(), - !$this->configuration->disableCodeCoverageIgnore(), - $this->configuration->ignoreDeprecatedCodeUnitsFromCodeCoverage(), - $this->codeCoverageFilterRegistry->get(), - ); - - printf( - '[%s]%s', - $timer->stop()->asString(), - PHP_EOL, - ); - - return Result::from(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Result.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Result.php deleted file mode 100644 index 9f53755..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Command/Result.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Command; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Result -{ - public const SUCCESS = 0; - public const FAILURE = 1; - public const EXCEPTION = 2; - public const CRASH = 255; - private string $output; - private int $shellExitCode; - - public static function from(string $output = '', int $shellExitCode = self::SUCCESS): self - { - return new self($output, $shellExitCode); - } - - private function __construct(string $output, int $shellExitCode) - { - $this->output = $output; - $this->shellExitCode = $shellExitCode; - } - - public function output(): string - { - return $this->output; - } - - public function shellExitCode(): int - { - return $this->shellExitCode; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Builder.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Builder.php deleted file mode 100644 index 6f9e81a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Builder.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use PHPUnit\TextUI\CliArguments\Builder as CliConfigurationBuilder; -use PHPUnit\TextUI\CliArguments\Exception as CliConfigurationException; -use PHPUnit\TextUI\CliArguments\XmlConfigurationFileFinder; -use PHPUnit\TextUI\XmlConfiguration\DefaultConfiguration; -use PHPUnit\TextUI\XmlConfiguration\Exception as XmlConfigurationException; -use PHPUnit\TextUI\XmlConfiguration\Loader; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ -final readonly class Builder -{ - /** - * @param list $argv - * - * @throws ConfigurationCannotBeBuiltException - */ - public function build(array $argv): Configuration - { - try { - $cliConfiguration = (new CliConfigurationBuilder)->fromParameters($argv); - $configurationFile = (new XmlConfigurationFileFinder)->find($cliConfiguration); - $xmlConfiguration = DefaultConfiguration::create(); - - if ($configurationFile !== false) { - $xmlConfiguration = (new Loader)->load($configurationFile); - } - - return Registry::init( - $cliConfiguration, - $xmlConfiguration, - ); - } catch (CliConfigurationException|XmlConfigurationException $e) { - throw new ConfigurationCannotBeBuiltException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php deleted file mode 100644 index 8d1c927..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php +++ /dev/null @@ -1,1364 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\CliArguments; - -use const DIRECTORY_SEPARATOR; -use function array_map; -use function array_merge; -use function assert; -use function basename; -use function explode; -use function getcwd; -use function is_file; -use function is_numeric; -use function sprintf; -use function str_contains; -use function strtolower; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\Util\Filesystem; -use SebastianBergmann\CliParser\Exception as CliParserException; -use SebastianBergmann\CliParser\Parser as CliParser; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Builder -{ - private const LONG_OPTIONS = [ - 'atleast-version=', - 'bootstrap=', - 'cache-result', - 'do-not-cache-result', - 'cache-directory=', - 'check-version', - 'check-php-configuration', - 'colors==', - 'columns=', - 'configuration=', - 'warm-coverage-cache', - 'coverage-filter=', - 'coverage-clover=', - 'coverage-cobertura=', - 'coverage-crap4j=', - 'coverage-html=', - 'coverage-php=', - 'coverage-text==', - 'only-summary-for-coverage-text', - 'show-uncovered-for-coverage-text', - 'coverage-xml=', - 'path-coverage', - 'disallow-test-output', - 'display-all-issues', - 'display-incomplete', - 'display-skipped', - 'display-deprecations', - 'display-phpunit-deprecations', - 'display-errors', - 'display-notices', - 'display-warnings', - 'default-time-limit=', - 'enforce-time-limit', - 'exclude-group=', - 'filter=', - 'exclude-filter=', - 'generate-baseline=', - 'use-baseline=', - 'ignore-baseline', - 'generate-configuration', - 'globals-backup', - 'group=', - 'covers=', - 'uses=', - 'requires-php-extension=', - 'help', - 'resolve-dependencies', - 'ignore-dependencies', - 'include-path=', - 'list-groups', - 'list-suites', - 'list-test-files', - 'list-tests', - 'list-tests-xml=', - 'log-junit=', - 'log-teamcity=', - 'migrate-configuration', - 'no-configuration', - 'no-coverage', - 'no-logging', - 'no-extensions', - 'no-output', - 'no-progress', - 'no-results', - 'order-by=', - 'process-isolation', - 'do-not-report-useless-tests', - 'dont-report-useless-tests', - 'random-order', - 'random-order-seed=', - 'reverse-order', - 'reverse-list', - 'static-backup', - 'stderr', - 'fail-on-all-issues', - 'fail-on-deprecation', - 'fail-on-phpunit-deprecation', - 'fail-on-phpunit-warning', - 'fail-on-empty-test-suite', - 'fail-on-incomplete', - 'fail-on-notice', - 'fail-on-risky', - 'fail-on-skipped', - 'fail-on-warning', - 'do-not-fail-on-deprecation', - 'do-not-fail-on-phpunit-deprecation', - 'do-not-fail-on-phpunit-warning', - 'do-not-fail-on-empty-test-suite', - 'do-not-fail-on-incomplete', - 'do-not-fail-on-notice', - 'do-not-fail-on-risky', - 'do-not-fail-on-skipped', - 'do-not-fail-on-warning', - 'stop-on-defect', - 'stop-on-deprecation==', - 'stop-on-error', - 'stop-on-failure', - 'stop-on-incomplete', - 'stop-on-notice', - 'stop-on-risky', - 'stop-on-skipped', - 'stop-on-warning', - 'strict-coverage', - 'disable-coverage-ignore', - 'strict-global-state', - 'teamcity', - 'testdox', - 'testdox-summary', - 'testdox-html=', - 'testdox-text=', - 'test-suffix=', - 'testsuite=', - 'exclude-testsuite=', - 'log-events-text=', - 'log-events-verbose-text=', - 'version', - 'debug', - 'extension=', - ]; - private const SHORT_OPTIONS = 'd:c:h'; - - /** - * @var array - */ - private array $processed = []; - - /** - * @param list $parameters - * - * @throws Exception - */ - public function fromParameters(array $parameters): Configuration - { - try { - $options = (new CliParser)->parse( - $parameters, - self::SHORT_OPTIONS, - self::LONG_OPTIONS, - ); - } catch (CliParserException $e) { - throw new Exception( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - $atLeastVersion = null; - $backupGlobals = null; - $backupStaticProperties = null; - $beStrictAboutChangesToGlobalState = null; - $bootstrap = null; - $cacheDirectory = null; - $cacheResult = null; - $checkPhpConfiguration = false; - $checkVersion = false; - $colors = null; - $columns = null; - $configuration = null; - $warmCoverageCache = false; - $coverageFilter = null; - $coverageClover = null; - $coverageCobertura = null; - $coverageCrap4J = null; - $coverageHtml = null; - $coveragePhp = null; - $coverageText = null; - $coverageTextShowUncoveredFiles = null; - $coverageTextShowOnlySummary = null; - $coverageXml = null; - $pathCoverage = null; - $defaultTimeLimit = null; - $disableCodeCoverageIgnore = null; - $disallowTestOutput = null; - $displayAllIssues = null; - $displayIncomplete = null; - $displaySkipped = null; - $displayDeprecations = null; - $displayPhpunitDeprecations = null; - $displayErrors = null; - $displayNotices = null; - $displayWarnings = null; - $enforceTimeLimit = null; - $excludeGroups = null; - $executionOrder = null; - $executionOrderDefects = null; - $failOnAllIssues = null; - $failOnDeprecation = null; - $failOnPhpunitDeprecation = null; - $failOnPhpunitWarning = null; - $failOnEmptyTestSuite = null; - $failOnIncomplete = null; - $failOnNotice = null; - $failOnRisky = null; - $failOnSkipped = null; - $failOnWarning = null; - $doNotFailOnDeprecation = null; - $doNotFailOnPhpunitDeprecation = null; - $doNotFailOnPhpunitWarning = null; - $doNotFailOnEmptyTestSuite = null; - $doNotFailOnIncomplete = null; - $doNotFailOnNotice = null; - $doNotFailOnRisky = null; - $doNotFailOnSkipped = null; - $doNotFailOnWarning = null; - $stopOnDefect = null; - $stopOnDeprecation = null; - $specificDeprecationToStopOn = null; - $stopOnError = null; - $stopOnFailure = null; - $stopOnIncomplete = null; - $stopOnNotice = null; - $stopOnRisky = null; - $stopOnSkipped = null; - $stopOnWarning = null; - $filter = null; - $excludeFilter = null; - $generateBaseline = null; - $useBaseline = null; - $ignoreBaseline = false; - $generateConfiguration = false; - $migrateConfiguration = false; - $groups = null; - $testsCovering = null; - $testsUsing = null; - $testsRequiringPhpExtension = null; - $help = false; - $includePath = null; - $iniSettings = []; - $junitLogfile = null; - $listGroups = false; - $listSuites = false; - $listTestFiles = false; - $listTests = false; - $listTestsXml = null; - $noCoverage = null; - $noExtensions = null; - $noOutput = null; - $noProgress = null; - $noResults = null; - $noLogging = null; - $processIsolation = null; - $randomOrderSeed = null; - $reportUselessTests = null; - $resolveDependencies = null; - $reverseList = null; - $stderr = null; - $strictCoverage = null; - $teamcityLogfile = null; - $testdoxHtmlFile = null; - $testdoxTextFile = null; - $testSuffixes = null; - $testSuite = null; - $excludeTestSuite = null; - $useDefaultConfiguration = true; - $version = false; - $logEventsText = null; - $logEventsVerboseText = null; - $printerTeamCity = null; - $printerTestDox = null; - $printerTestDoxSummary = null; - $debug = false; - $extensions = []; - - foreach ($options[0] as $option) { - $optionAllowedMultipleTimes = false; - - switch ($option[0]) { - case '--colors': - $colors = $option[1] ?: \PHPUnit\TextUI\Configuration\Configuration::COLOR_AUTO; - - break; - - case '--bootstrap': - $bootstrap = $option[1]; - - break; - - case '--cache-directory': - $cacheDirectory = $option[1]; - - break; - - case '--cache-result': - $cacheResult = true; - - break; - - case '--do-not-cache-result': - $cacheResult = false; - - break; - - case '--columns': - if (is_numeric($option[1])) { - $columns = (int) $option[1]; - } elseif ($option[1] === 'max') { - $columns = 'max'; - } - - break; - - case 'c': - case '--configuration': - $configuration = $option[1]; - - break; - - case '--warm-coverage-cache': - $warmCoverageCache = true; - - break; - - case '--coverage-clover': - $coverageClover = $option[1]; - - break; - - case '--coverage-cobertura': - $coverageCobertura = $option[1]; - - break; - - case '--coverage-crap4j': - $coverageCrap4J = $option[1]; - - break; - - case '--coverage-html': - $coverageHtml = $option[1]; - - break; - - case '--coverage-php': - $coveragePhp = $option[1]; - - break; - - case '--coverage-text': - if ($option[1] === null) { - $option[1] = 'php://stdout'; - } - - $coverageText = $option[1]; - - break; - - case '--only-summary-for-coverage-text': - $coverageTextShowOnlySummary = true; - - break; - - case '--show-uncovered-for-coverage-text': - $coverageTextShowUncoveredFiles = true; - - break; - - case '--coverage-xml': - $coverageXml = $option[1]; - - break; - - case '--path-coverage': - $pathCoverage = true; - - break; - - case 'd': - $tmp = explode('=', $option[1]); - - if (isset($tmp[0])) { - assert($tmp[0] !== ''); - - if (isset($tmp[1])) { - assert($tmp[1] !== ''); - - $iniSettings[$tmp[0]] = $tmp[1]; - } else { - $iniSettings[$tmp[0]] = '1'; - } - } - - $optionAllowedMultipleTimes = true; - - break; - - case 'h': - case '--help': - $help = true; - - break; - - case '--filter': - $filter = $option[1]; - - break; - - case '--exclude-filter': - $excludeFilter = $option[1]; - - break; - - case '--testsuite': - $testSuite = $option[1]; - - break; - - case '--exclude-testsuite': - $excludeTestSuite = $option[1]; - - break; - - case '--generate-baseline': - $generateBaseline = $option[1]; - - if (basename($generateBaseline) === $generateBaseline) { - $generateBaseline = getcwd() . DIRECTORY_SEPARATOR . $generateBaseline; - } - - break; - - case '--use-baseline': - $useBaseline = $option[1]; - - if (basename($useBaseline) === $useBaseline && !is_file($useBaseline)) { - $useBaseline = getcwd() . DIRECTORY_SEPARATOR . $useBaseline; - } - - break; - - case '--ignore-baseline': - $ignoreBaseline = true; - - break; - - case '--generate-configuration': - $generateConfiguration = true; - - break; - - case '--migrate-configuration': - $migrateConfiguration = true; - - break; - - case '--group': - if (str_contains($option[1], ',')) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'Using comma-separated values with --group is deprecated and will no longer work in PHPUnit 12. You can use --group multiple times instead.', - ); - } - - if ($groups === null) { - $groups = []; - } - - $groups = array_merge($groups, explode(',', $option[1])); - - $optionAllowedMultipleTimes = true; - - break; - - case '--exclude-group': - if (str_contains($option[1], ',')) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'Using comma-separated values with --exclude-group is deprecated and will no longer work in PHPUnit 12. You can use --exclude-group multiple times instead.', - ); - } - - if ($excludeGroups === null) { - $excludeGroups = []; - } - - $excludeGroups = array_merge($excludeGroups, explode(',', $option[1])); - - $optionAllowedMultipleTimes = true; - - break; - - case '--covers': - if (str_contains($option[1], ',')) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'Using comma-separated values with --covers is deprecated and will no longer work in PHPUnit 12. You can use --covers multiple times instead.', - ); - } - - if ($testsCovering === null) { - $testsCovering = []; - } - - $testsCovering = array_merge($testsCovering, array_map('strtolower', explode(',', $option[1]))); - - $optionAllowedMultipleTimes = true; - - break; - - case '--uses': - if (str_contains($option[1], ',')) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'Using comma-separated values with --uses is deprecated and will no longer work in PHPUnit 12. You can use --uses multiple times instead.', - ); - } - - if ($testsUsing === null) { - $testsUsing = []; - } - - $testsUsing = array_merge($testsUsing, array_map('strtolower', explode(',', $option[1]))); - - $optionAllowedMultipleTimes = true; - - break; - - case '--requires-php-extension': - if ($testsRequiringPhpExtension === null) { - $testsRequiringPhpExtension = []; - } - - $testsRequiringPhpExtension[] = strtolower($option[1]); - - $optionAllowedMultipleTimes = true; - - break; - - case '--test-suffix': - if (str_contains($option[1], ',')) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'Using comma-separated values with --test-suffix is deprecated and will no longer work in PHPUnit 12. You can use --test-suffix multiple times instead.', - ); - } - - if ($testSuffixes === null) { - $testSuffixes = []; - } - - $testSuffixes = array_merge($testSuffixes, explode(',', $option[1])); - - $optionAllowedMultipleTimes = true; - - break; - - case '--include-path': - $includePath = $option[1]; - - break; - - case '--list-groups': - $listGroups = true; - - break; - - case '--list-suites': - $listSuites = true; - - break; - - case '--list-test-files': - $listTestFiles = true; - - break; - - case '--list-tests': - $listTests = true; - - break; - - case '--list-tests-xml': - $listTestsXml = $option[1]; - - break; - - case '--log-junit': - $junitLogfile = $option[1]; - - break; - - case '--log-teamcity': - $teamcityLogfile = $option[1]; - - break; - - case '--order-by': - foreach (explode(',', $option[1]) as $order) { - switch ($order) { - case 'default': - $executionOrder = TestSuiteSorter::ORDER_DEFAULT; - $executionOrderDefects = TestSuiteSorter::ORDER_DEFAULT; - $resolveDependencies = true; - - break; - - case 'defects': - $executionOrderDefects = TestSuiteSorter::ORDER_DEFECTS_FIRST; - - break; - - case 'depends': - $resolveDependencies = true; - - break; - - case 'duration': - $executionOrder = TestSuiteSorter::ORDER_DURATION; - - break; - - case 'no-depends': - $resolveDependencies = false; - - break; - - case 'random': - $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED; - - break; - - case 'reverse': - $executionOrder = TestSuiteSorter::ORDER_REVERSED; - - break; - - case 'size': - $executionOrder = TestSuiteSorter::ORDER_SIZE; - - break; - - default: - throw new Exception( - sprintf( - 'unrecognized --order-by option: %s', - $order, - ), - ); - } - } - - break; - - case '--process-isolation': - $processIsolation = true; - - break; - - case '--stderr': - $stderr = true; - - break; - - case '--fail-on-all-issues': - $failOnAllIssues = true; - - break; - - case '--fail-on-deprecation': - $this->warnWhenOptionsConflict( - $doNotFailOnDeprecation, - '--fail-on-deprecation', - '--do-not-fail-on-deprecation', - ); - - $failOnDeprecation = true; - - break; - - case '--fail-on-phpunit-deprecation': - $this->warnWhenOptionsConflict( - $doNotFailOnPhpunitDeprecation, - '--fail-on-phpunit-deprecation', - '--do-not-fail-on-phpunit-deprecation', - ); - - $failOnPhpunitDeprecation = true; - - break; - - case '--fail-on-phpunit-warning': - $this->warnWhenOptionsConflict( - $doNotFailOnPhpunitWarning, - '--fail-on-phpunit-warning', - '--do-not-fail-on-phpunit-warning', - ); - - $failOnPhpunitWarning = true; - - break; - - case '--fail-on-empty-test-suite': - $this->warnWhenOptionsConflict( - $doNotFailOnEmptyTestSuite, - '--fail-on-empty-test-suite', - '--do-not-fail-on-empty-test-suite', - ); - - $failOnEmptyTestSuite = true; - - break; - - case '--fail-on-incomplete': - $this->warnWhenOptionsConflict( - $doNotFailOnIncomplete, - '--fail-on-incomplete', - '--do-not-fail-on-incomplete', - ); - - $failOnIncomplete = true; - - break; - - case '--fail-on-notice': - $this->warnWhenOptionsConflict( - $doNotFailOnNotice, - '--fail-on-notice', - '--do-not-fail-on-notice', - ); - - $failOnNotice = true; - - break; - - case '--fail-on-risky': - $this->warnWhenOptionsConflict( - $doNotFailOnRisky, - '--fail-on-risky', - '--do-not-fail-on-risky', - ); - - $failOnRisky = true; - - break; - - case '--fail-on-skipped': - $this->warnWhenOptionsConflict( - $doNotFailOnSkipped, - '--fail-on-skipped', - '--do-not-fail-on-skipped', - ); - - $failOnSkipped = true; - - break; - - case '--fail-on-warning': - $this->warnWhenOptionsConflict( - $doNotFailOnWarning, - '--fail-on-warning', - '--do-not-fail-on-warning', - ); - - $failOnWarning = true; - - break; - - case '--do-not-fail-on-deprecation': - $this->warnWhenOptionsConflict( - $failOnDeprecation, - '--do-not-fail-on-deprecation', - '--fail-on-deprecation', - ); - - $doNotFailOnDeprecation = true; - - break; - - case '--do-not-fail-on-phpunit-deprecation': - $this->warnWhenOptionsConflict( - $failOnPhpunitDeprecation, - '--do-not-fail-on-phpunit-deprecation', - '--fail-on-phpunit-deprecation', - ); - - $doNotFailOnPhpunitDeprecation = true; - - break; - - case '--do-not-fail-on-phpunit-warning': - $this->warnWhenOptionsConflict( - $failOnPhpunitWarning, - '--do-not-fail-on-phpunit-warning', - '--fail-on-phpunit-warning', - ); - - $doNotFailOnPhpunitWarning = true; - - break; - - case '--do-not-fail-on-empty-test-suite': - $this->warnWhenOptionsConflict( - $failOnEmptyTestSuite, - '--do-not-fail-on-empty-test-suite', - '--fail-on-empty-test-suite', - ); - - $doNotFailOnEmptyTestSuite = true; - - break; - - case '--do-not-fail-on-incomplete': - $this->warnWhenOptionsConflict( - $failOnIncomplete, - '--do-not-fail-on-incomplete', - '--fail-on-incomplete', - ); - - $doNotFailOnIncomplete = true; - - break; - - case '--do-not-fail-on-notice': - $this->warnWhenOptionsConflict( - $failOnNotice, - '--do-not-fail-on-notice', - '--fail-on-notice', - ); - - $doNotFailOnNotice = true; - - break; - - case '--do-not-fail-on-risky': - $this->warnWhenOptionsConflict( - $failOnRisky, - '--do-not-fail-on-risky', - '--fail-on-risky', - ); - - $doNotFailOnRisky = true; - - break; - - case '--do-not-fail-on-skipped': - $this->warnWhenOptionsConflict( - $failOnSkipped, - '--do-not-fail-on-skipped', - '--fail-on-skipped', - ); - - $doNotFailOnSkipped = true; - - break; - - case '--do-not-fail-on-warning': - $this->warnWhenOptionsConflict( - $failOnWarning, - '--do-not-fail-on-warning', - '--fail-on-warning', - ); - - $doNotFailOnWarning = true; - - break; - - case '--stop-on-defect': - $stopOnDefect = true; - - break; - - case '--stop-on-deprecation': - $stopOnDeprecation = true; - - if ($option[1] !== null) { - $specificDeprecationToStopOn = $option[1]; - } - - break; - - case '--stop-on-error': - $stopOnError = true; - - break; - - case '--stop-on-failure': - $stopOnFailure = true; - - break; - - case '--stop-on-incomplete': - $stopOnIncomplete = true; - - break; - - case '--stop-on-notice': - $stopOnNotice = true; - - break; - - case '--stop-on-risky': - $stopOnRisky = true; - - break; - - case '--stop-on-skipped': - $stopOnSkipped = true; - - break; - - case '--stop-on-warning': - $stopOnWarning = true; - - break; - - case '--teamcity': - $printerTeamCity = true; - - break; - - case '--testdox': - $printerTestDox = true; - - break; - - case '--testdox-summary': - $printerTestDoxSummary = true; - - break; - - case '--testdox-html': - $testdoxHtmlFile = $option[1]; - - break; - - case '--testdox-text': - $testdoxTextFile = $option[1]; - - break; - - case '--no-configuration': - $useDefaultConfiguration = false; - - break; - - case '--no-extensions': - $noExtensions = true; - - break; - - case '--no-coverage': - $noCoverage = true; - - break; - - case '--no-logging': - $noLogging = true; - - break; - - case '--no-output': - $noOutput = true; - - break; - - case '--no-progress': - $noProgress = true; - - break; - - case '--no-results': - $noResults = true; - - break; - - case '--globals-backup': - $backupGlobals = true; - - break; - - case '--static-backup': - $backupStaticProperties = true; - - break; - - case '--atleast-version': - $atLeastVersion = $option[1]; - - break; - - case '--version': - $version = true; - - break; - - case '--do-not-report-useless-tests': - case '--dont-report-useless-tests': - $reportUselessTests = false; - - break; - - case '--strict-coverage': - $strictCoverage = true; - - break; - - case '--disable-coverage-ignore': - $disableCodeCoverageIgnore = true; - - break; - - case '--strict-global-state': - $beStrictAboutChangesToGlobalState = true; - - break; - - case '--disallow-test-output': - $disallowTestOutput = true; - - break; - - case '--display-all-issues': - $displayAllIssues = true; - - break; - - case '--display-incomplete': - $displayIncomplete = true; - - break; - - case '--display-skipped': - $displaySkipped = true; - - break; - - case '--display-deprecations': - $displayDeprecations = true; - - break; - - case '--display-phpunit-deprecations': - $displayPhpunitDeprecations = true; - - break; - - case '--display-errors': - $displayErrors = true; - - break; - - case '--display-notices': - $displayNotices = true; - - break; - - case '--display-warnings': - $displayWarnings = true; - - break; - - case '--default-time-limit': - $defaultTimeLimit = (int) $option[1]; - - break; - - case '--enforce-time-limit': - $enforceTimeLimit = true; - - break; - - case '--reverse-list': - $reverseList = true; - - break; - - case '--check-php-configuration': - $checkPhpConfiguration = true; - - break; - - case '--check-version': - $checkVersion = true; - - break; - - case '--coverage-filter': - if ($coverageFilter === null) { - $coverageFilter = []; - } - - $coverageFilter[] = $option[1]; - - $optionAllowedMultipleTimes = true; - - break; - - case '--random-order': - $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED; - - break; - - case '--random-order-seed': - $randomOrderSeed = (int) $option[1]; - - break; - - case '--resolve-dependencies': - $resolveDependencies = true; - - break; - - case '--ignore-dependencies': - $resolveDependencies = false; - - break; - - case '--reverse-order': - $executionOrder = TestSuiteSorter::ORDER_REVERSED; - - break; - - case '--log-events-text': - $logEventsText = Filesystem::resolveStreamOrFile($option[1]); - - if ($logEventsText === false) { - throw new Exception( - sprintf( - 'The path "%s" specified for the --log-events-text option could not be resolved', - $option[1], - ), - ); - } - - break; - - case '--log-events-verbose-text': - $logEventsVerboseText = Filesystem::resolveStreamOrFile($option[1]); - - if ($logEventsVerboseText === false) { - throw new Exception( - sprintf( - 'The path "%s" specified for the --log-events-verbose-text option could not be resolved', - $option[1], - ), - ); - } - - break; - - case '--debug': - $debug = true; - - break; - - case '--extension': - $extensions[] = $option[1]; - - $optionAllowedMultipleTimes = true; - - break; - } - - if (!$optionAllowedMultipleTimes) { - $this->markProcessed($option[0]); - } - } - - if (empty($iniSettings)) { - $iniSettings = null; - } - - if (empty($coverageFilter)) { - $coverageFilter = null; - } - - if (empty($extensions)) { - $extensions = null; - } - - return new Configuration( - $options[1], - $atLeastVersion, - $backupGlobals, - $backupStaticProperties, - $beStrictAboutChangesToGlobalState, - $bootstrap, - $cacheDirectory, - $cacheResult, - $checkPhpConfiguration, - $checkVersion, - $colors, - $columns, - $configuration, - $coverageClover, - $coverageCobertura, - $coverageCrap4J, - $coverageHtml, - $coveragePhp, - $coverageText, - $coverageTextShowUncoveredFiles, - $coverageTextShowOnlySummary, - $coverageXml, - $pathCoverage, - $warmCoverageCache, - $defaultTimeLimit, - $disableCodeCoverageIgnore, - $disallowTestOutput, - $enforceTimeLimit, - $excludeGroups, - $executionOrder, - $executionOrderDefects, - $failOnAllIssues, - $failOnDeprecation, - $failOnPhpunitDeprecation, - $failOnPhpunitWarning, - $failOnEmptyTestSuite, - $failOnIncomplete, - $failOnNotice, - $failOnRisky, - $failOnSkipped, - $failOnWarning, - $doNotFailOnDeprecation, - $doNotFailOnPhpunitDeprecation, - $doNotFailOnPhpunitWarning, - $doNotFailOnEmptyTestSuite, - $doNotFailOnIncomplete, - $doNotFailOnNotice, - $doNotFailOnRisky, - $doNotFailOnSkipped, - $doNotFailOnWarning, - $stopOnDefect, - $stopOnDeprecation, - $specificDeprecationToStopOn, - $stopOnError, - $stopOnFailure, - $stopOnIncomplete, - $stopOnNotice, - $stopOnRisky, - $stopOnSkipped, - $stopOnWarning, - $filter, - $excludeFilter, - $generateBaseline, - $useBaseline, - $ignoreBaseline, - $generateConfiguration, - $migrateConfiguration, - $groups, - $testsCovering, - $testsUsing, - $testsRequiringPhpExtension, - $help, - $includePath, - $iniSettings, - $junitLogfile, - $listGroups, - $listSuites, - $listTestFiles, - $listTests, - $listTestsXml, - $noCoverage, - $noExtensions, - $noOutput, - $noProgress, - $noResults, - $noLogging, - $processIsolation, - $randomOrderSeed, - $reportUselessTests, - $resolveDependencies, - $reverseList, - $stderr, - $strictCoverage, - $teamcityLogfile, - $testdoxHtmlFile, - $testdoxTextFile, - $testSuffixes, - $testSuite, - $excludeTestSuite, - $useDefaultConfiguration, - $displayAllIssues, - $displayIncomplete, - $displaySkipped, - $displayDeprecations, - $displayPhpunitDeprecations, - $displayErrors, - $displayNotices, - $displayWarnings, - $version, - $coverageFilter, - $logEventsText, - $logEventsVerboseText, - $printerTeamCity, - $printerTestDox, - $printerTestDoxSummary, - $debug, - $extensions, - ); - } - - /** - * @param non-empty-string $option - */ - private function markProcessed(string $option): void - { - if (!isset($this->processed[$option])) { - $this->processed[$option] = 1; - - return; - } - - $this->processed[$option]++; - - if ($this->processed[$option] === 2) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Option %s cannot be used more than once', - $option, - ), - ); - } - } - - /** - * @param non-empty-string $option - */ - private function warnWhenOptionsConflict(?bool $current, string $option, string $opposite): void - { - if ($current === null) { - return; - } - - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Options %s and %s cannot be used together', - $option, - $opposite, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php deleted file mode 100644 index 31746eb..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php +++ /dev/null @@ -1,2446 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\CliArguments; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Configuration -{ - /** - * @var list - */ - private array $arguments; - private ?string $atLeastVersion; - private ?bool $backupGlobals; - private ?bool $backupStaticProperties; - private ?bool $beStrictAboutChangesToGlobalState; - private ?string $bootstrap; - private ?string $cacheDirectory; - private ?bool $cacheResult; - private bool $checkPhpConfiguration; - private bool $checkVersion; - private ?string $colors; - private null|int|string $columns; - private ?string $configurationFile; - - /** - * @var ?non-empty-list - */ - private ?array $coverageFilter; - private ?string $coverageClover; - private ?string $coverageCobertura; - private ?string $coverageCrap4J; - private ?string $coverageHtml; - private ?string $coveragePhp; - private ?string $coverageText; - private ?bool $coverageTextShowUncoveredFiles; - private ?bool $coverageTextShowOnlySummary; - private ?string $coverageXml; - private ?bool $pathCoverage; - private bool $warmCoverageCache; - private ?int $defaultTimeLimit; - private ?bool $disableCodeCoverageIgnore; - private ?bool $disallowTestOutput; - private ?bool $enforceTimeLimit; - - /** - * @var ?non-empty-list - */ - private ?array $excludeGroups; - private ?int $executionOrder; - private ?int $executionOrderDefects; - private ?bool $failOnAllIssues; - private ?bool $failOnDeprecation; - private ?bool $failOnPhpunitDeprecation; - private ?bool $failOnPhpunitWarning; - private ?bool $failOnEmptyTestSuite; - private ?bool $failOnIncomplete; - private ?bool $failOnNotice; - private ?bool $failOnRisky; - private ?bool $failOnSkipped; - private ?bool $failOnWarning; - private ?bool $doNotFailOnDeprecation; - private ?bool $doNotFailOnPhpunitDeprecation; - private ?bool $doNotFailOnPhpunitWarning; - private ?bool $doNotFailOnEmptyTestSuite; - private ?bool $doNotFailOnIncomplete; - private ?bool $doNotFailOnNotice; - private ?bool $doNotFailOnRisky; - private ?bool $doNotFailOnSkipped; - private ?bool $doNotFailOnWarning; - private ?bool $stopOnDefect; - private ?bool $stopOnDeprecation; - private ?string $specificDeprecationToStopOn; - private ?bool $stopOnError; - private ?bool $stopOnFailure; - private ?bool $stopOnIncomplete; - private ?bool $stopOnNotice; - private ?bool $stopOnRisky; - private ?bool $stopOnSkipped; - private ?bool $stopOnWarning; - private ?string $filter; - private ?string $excludeFilter; - private ?string $generateBaseline; - private ?string $useBaseline; - private bool $ignoreBaseline; - private bool $generateConfiguration; - private bool $migrateConfiguration; - - /** - * @var ?non-empty-list - */ - private ?array $groups; - - /** - * @var ?non-empty-list - */ - private ?array $testsCovering; - - /** - * @var ?non-empty-list - */ - private ?array $testsUsing; - - /** - * @var ?non-empty-list - */ - private ?array $testsRequiringPhpExtension; - private bool $help; - private ?string $includePath; - - /** - * @var ?non-empty-array - */ - private ?array $iniSettings; - private ?string $junitLogfile; - private bool $listGroups; - private bool $listSuites; - private bool $listTestFiles; - private bool $listTests; - private ?string $listTestsXml; - private ?bool $noCoverage; - private ?bool $noExtensions; - private ?bool $noOutput; - private ?bool $noProgress; - private ?bool $noResults; - private ?bool $noLogging; - private ?bool $processIsolation; - private ?int $randomOrderSeed; - private ?bool $reportUselessTests; - private ?bool $resolveDependencies; - private ?bool $reverseList; - private ?bool $stderr; - private ?bool $strictCoverage; - private ?string $teamcityLogfile; - private ?bool $teamCityPrinter; - private ?string $testdoxHtmlFile; - private ?string $testdoxTextFile; - private ?bool $testdoxPrinter; - private ?bool $testdoxPrinterSummary; - - /** - * @var ?non-empty-list - */ - private ?array $testSuffixes; - private ?string $testSuite; - private ?string $excludeTestSuite; - private bool $useDefaultConfiguration; - private ?bool $displayDetailsOnAllIssues; - private ?bool $displayDetailsOnIncompleteTests; - private ?bool $displayDetailsOnSkippedTests; - private ?bool $displayDetailsOnTestsThatTriggerDeprecations; - private ?bool $displayDetailsOnPhpunitDeprecations; - private ?bool $displayDetailsOnTestsThatTriggerErrors; - private ?bool $displayDetailsOnTestsThatTriggerNotices; - private ?bool $displayDetailsOnTestsThatTriggerWarnings; - private bool $version; - private ?string $logEventsText; - private ?string $logEventsVerboseText; - private bool $debug; - - /** - * @var ?non-empty-list - */ - private ?array $extensions; - - /** - * @param list $arguments - * @param ?non-empty-list $excludeGroups - * @param ?non-empty-list $groups - * @param ?non-empty-list $testsCovering - * @param ?non-empty-list $testsUsing - * @param ?non-empty-list $testsRequiringPhpExtension - * @param ?non-empty-array $iniSettings - * @param ?non-empty-list $testSuffixes - * @param ?non-empty-list $coverageFilter - * @param ?non-empty-list $extensions - */ - public function __construct(array $arguments, ?string $atLeastVersion, ?bool $backupGlobals, ?bool $backupStaticProperties, ?bool $beStrictAboutChangesToGlobalState, ?string $bootstrap, ?string $cacheDirectory, ?bool $cacheResult, bool $checkPhpConfiguration, bool $checkVersion, ?string $colors, null|int|string $columns, ?string $configurationFile, ?string $coverageClover, ?string $coverageCobertura, ?string $coverageCrap4J, ?string $coverageHtml, ?string $coveragePhp, ?string $coverageText, ?bool $coverageTextShowUncoveredFiles, ?bool $coverageTextShowOnlySummary, ?string $coverageXml, ?bool $pathCoverage, bool $warmCoverageCache, ?int $defaultTimeLimit, ?bool $disableCodeCoverageIgnore, ?bool $disallowTestOutput, ?bool $enforceTimeLimit, ?array $excludeGroups, ?int $executionOrder, ?int $executionOrderDefects, ?bool $failOnAllIssues, ?bool $failOnDeprecation, ?bool $failOnPhpunitDeprecation, ?bool $failOnPhpunitWarning, ?bool $failOnEmptyTestSuite, ?bool $failOnIncomplete, ?bool $failOnNotice, ?bool $failOnRisky, ?bool $failOnSkipped, ?bool $failOnWarning, ?bool $doNotFailOnDeprecation, ?bool $doNotFailOnPhpunitDeprecation, ?bool $doNotFailOnPhpunitWarning, ?bool $doNotFailOnEmptyTestSuite, ?bool $doNotFailOnIncomplete, ?bool $doNotFailOnNotice, ?bool $doNotFailOnRisky, ?bool $doNotFailOnSkipped, ?bool $doNotFailOnWarning, ?bool $stopOnDefect, ?bool $stopOnDeprecation, ?string $specificDeprecationToStopOn, ?bool $stopOnError, ?bool $stopOnFailure, ?bool $stopOnIncomplete, ?bool $stopOnNotice, ?bool $stopOnRisky, ?bool $stopOnSkipped, ?bool $stopOnWarning, ?string $filter, ?string $excludeFilter, ?string $generateBaseline, ?string $useBaseline, bool $ignoreBaseline, bool $generateConfiguration, bool $migrateConfiguration, ?array $groups, ?array $testsCovering, ?array $testsUsing, ?array $testsRequiringPhpExtension, bool $help, ?string $includePath, ?array $iniSettings, ?string $junitLogfile, bool $listGroups, bool $listSuites, bool $listTestFiles, bool $listTests, ?string $listTestsXml, ?bool $noCoverage, ?bool $noExtensions, ?bool $noOutput, ?bool $noProgress, ?bool $noResults, ?bool $noLogging, ?bool $processIsolation, ?int $randomOrderSeed, ?bool $reportUselessTests, ?bool $resolveDependencies, ?bool $reverseList, ?bool $stderr, ?bool $strictCoverage, ?string $teamcityLogfile, ?string $testdoxHtmlFile, ?string $testdoxTextFile, ?array $testSuffixes, ?string $testSuite, ?string $excludeTestSuite, bool $useDefaultConfiguration, ?bool $displayDetailsOnAllIssues, ?bool $displayDetailsOnIncompleteTests, ?bool $displayDetailsOnSkippedTests, ?bool $displayDetailsOnTestsThatTriggerDeprecations, ?bool $displayDetailsOnPhpunitDeprecations, ?bool $displayDetailsOnTestsThatTriggerErrors, ?bool $displayDetailsOnTestsThatTriggerNotices, ?bool $displayDetailsOnTestsThatTriggerWarnings, bool $version, ?array $coverageFilter, ?string $logEventsText, ?string $logEventsVerboseText, ?bool $printerTeamCity, ?bool $testdoxPrinter, ?bool $testdoxPrinterSummary, bool $debug, ?array $extensions) - { - $this->arguments = $arguments; - $this->atLeastVersion = $atLeastVersion; - $this->backupGlobals = $backupGlobals; - $this->backupStaticProperties = $backupStaticProperties; - $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; - $this->bootstrap = $bootstrap; - $this->cacheDirectory = $cacheDirectory; - $this->cacheResult = $cacheResult; - $this->checkPhpConfiguration = $checkPhpConfiguration; - $this->checkVersion = $checkVersion; - $this->colors = $colors; - $this->columns = $columns; - $this->configurationFile = $configurationFile; - $this->coverageFilter = $coverageFilter; - $this->coverageClover = $coverageClover; - $this->coverageCobertura = $coverageCobertura; - $this->coverageCrap4J = $coverageCrap4J; - $this->coverageHtml = $coverageHtml; - $this->coveragePhp = $coveragePhp; - $this->coverageText = $coverageText; - $this->coverageTextShowUncoveredFiles = $coverageTextShowUncoveredFiles; - $this->coverageTextShowOnlySummary = $coverageTextShowOnlySummary; - $this->coverageXml = $coverageXml; - $this->pathCoverage = $pathCoverage; - $this->warmCoverageCache = $warmCoverageCache; - $this->defaultTimeLimit = $defaultTimeLimit; - $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore; - $this->disallowTestOutput = $disallowTestOutput; - $this->enforceTimeLimit = $enforceTimeLimit; - $this->excludeGroups = $excludeGroups; - $this->executionOrder = $executionOrder; - $this->executionOrderDefects = $executionOrderDefects; - $this->failOnAllIssues = $failOnAllIssues; - $this->failOnDeprecation = $failOnDeprecation; - $this->failOnPhpunitDeprecation = $failOnPhpunitDeprecation; - $this->failOnPhpunitWarning = $failOnPhpunitWarning; - $this->failOnEmptyTestSuite = $failOnEmptyTestSuite; - $this->failOnIncomplete = $failOnIncomplete; - $this->failOnNotice = $failOnNotice; - $this->failOnRisky = $failOnRisky; - $this->failOnSkipped = $failOnSkipped; - $this->failOnWarning = $failOnWarning; - $this->doNotFailOnDeprecation = $doNotFailOnDeprecation; - $this->doNotFailOnPhpunitDeprecation = $doNotFailOnPhpunitDeprecation; - $this->doNotFailOnPhpunitWarning = $doNotFailOnPhpunitWarning; - $this->doNotFailOnEmptyTestSuite = $doNotFailOnEmptyTestSuite; - $this->doNotFailOnIncomplete = $doNotFailOnIncomplete; - $this->doNotFailOnNotice = $doNotFailOnNotice; - $this->doNotFailOnRisky = $doNotFailOnRisky; - $this->doNotFailOnSkipped = $doNotFailOnSkipped; - $this->doNotFailOnWarning = $doNotFailOnWarning; - $this->stopOnDefect = $stopOnDefect; - $this->stopOnDeprecation = $stopOnDeprecation; - $this->specificDeprecationToStopOn = $specificDeprecationToStopOn; - $this->stopOnError = $stopOnError; - $this->stopOnFailure = $stopOnFailure; - $this->stopOnIncomplete = $stopOnIncomplete; - $this->stopOnNotice = $stopOnNotice; - $this->stopOnRisky = $stopOnRisky; - $this->stopOnSkipped = $stopOnSkipped; - $this->stopOnWarning = $stopOnWarning; - $this->filter = $filter; - $this->excludeFilter = $excludeFilter; - $this->generateBaseline = $generateBaseline; - $this->useBaseline = $useBaseline; - $this->ignoreBaseline = $ignoreBaseline; - $this->generateConfiguration = $generateConfiguration; - $this->migrateConfiguration = $migrateConfiguration; - $this->groups = $groups; - $this->testsCovering = $testsCovering; - $this->testsUsing = $testsUsing; - $this->testsRequiringPhpExtension = $testsRequiringPhpExtension; - $this->help = $help; - $this->includePath = $includePath; - $this->iniSettings = $iniSettings; - $this->junitLogfile = $junitLogfile; - $this->listGroups = $listGroups; - $this->listSuites = $listSuites; - $this->listTestFiles = $listTestFiles; - $this->listTests = $listTests; - $this->listTestsXml = $listTestsXml; - $this->noCoverage = $noCoverage; - $this->noExtensions = $noExtensions; - $this->noOutput = $noOutput; - $this->noProgress = $noProgress; - $this->noResults = $noResults; - $this->noLogging = $noLogging; - $this->processIsolation = $processIsolation; - $this->randomOrderSeed = $randomOrderSeed; - $this->reportUselessTests = $reportUselessTests; - $this->resolveDependencies = $resolveDependencies; - $this->reverseList = $reverseList; - $this->stderr = $stderr; - $this->strictCoverage = $strictCoverage; - $this->teamcityLogfile = $teamcityLogfile; - $this->testdoxHtmlFile = $testdoxHtmlFile; - $this->testdoxTextFile = $testdoxTextFile; - $this->testSuffixes = $testSuffixes; - $this->testSuite = $testSuite; - $this->excludeTestSuite = $excludeTestSuite; - $this->useDefaultConfiguration = $useDefaultConfiguration; - $this->displayDetailsOnAllIssues = $displayDetailsOnAllIssues; - $this->displayDetailsOnIncompleteTests = $displayDetailsOnIncompleteTests; - $this->displayDetailsOnSkippedTests = $displayDetailsOnSkippedTests; - $this->displayDetailsOnTestsThatTriggerDeprecations = $displayDetailsOnTestsThatTriggerDeprecations; - $this->displayDetailsOnPhpunitDeprecations = $displayDetailsOnPhpunitDeprecations; - $this->displayDetailsOnTestsThatTriggerErrors = $displayDetailsOnTestsThatTriggerErrors; - $this->displayDetailsOnTestsThatTriggerNotices = $displayDetailsOnTestsThatTriggerNotices; - $this->displayDetailsOnTestsThatTriggerWarnings = $displayDetailsOnTestsThatTriggerWarnings; - $this->version = $version; - $this->logEventsText = $logEventsText; - $this->logEventsVerboseText = $logEventsVerboseText; - $this->teamCityPrinter = $printerTeamCity; - $this->testdoxPrinter = $testdoxPrinter; - $this->testdoxPrinterSummary = $testdoxPrinterSummary; - $this->debug = $debug; - $this->extensions = $extensions; - } - - /** - * @return list - */ - public function arguments(): array - { - return $this->arguments; - } - - /** - * @phpstan-assert-if-true !null $this->atLeastVersion - */ - public function hasAtLeastVersion(): bool - { - return $this->atLeastVersion !== null; - } - - /** - * @throws Exception - */ - public function atLeastVersion(): string - { - if (!$this->hasAtLeastVersion()) { - throw new Exception; - } - - return $this->atLeastVersion; - } - - /** - * @phpstan-assert-if-true !null $this->backupGlobals - */ - public function hasBackupGlobals(): bool - { - return $this->backupGlobals !== null; - } - - /** - * @throws Exception - */ - public function backupGlobals(): bool - { - if (!$this->hasBackupGlobals()) { - throw new Exception; - } - - return $this->backupGlobals; - } - - /** - * @phpstan-assert-if-true !null $this->backupStaticProperties - */ - public function hasBackupStaticProperties(): bool - { - return $this->backupStaticProperties !== null; - } - - /** - * @throws Exception - */ - public function backupStaticProperties(): bool - { - if (!$this->hasBackupStaticProperties()) { - throw new Exception; - } - - return $this->backupStaticProperties; - } - - /** - * @phpstan-assert-if-true !null $this->beStrictAboutChangesToGlobalState - */ - public function hasBeStrictAboutChangesToGlobalState(): bool - { - return $this->beStrictAboutChangesToGlobalState !== null; - } - - /** - * @throws Exception - */ - public function beStrictAboutChangesToGlobalState(): bool - { - if (!$this->hasBeStrictAboutChangesToGlobalState()) { - throw new Exception; - } - - return $this->beStrictAboutChangesToGlobalState; - } - - /** - * @phpstan-assert-if-true !null $this->bootstrap - */ - public function hasBootstrap(): bool - { - return $this->bootstrap !== null; - } - - /** - * @throws Exception - */ - public function bootstrap(): string - { - if (!$this->hasBootstrap()) { - throw new Exception; - } - - return $this->bootstrap; - } - - /** - * @phpstan-assert-if-true !null $this->cacheDirectory - */ - public function hasCacheDirectory(): bool - { - return $this->cacheDirectory !== null; - } - - /** - * @throws Exception - */ - public function cacheDirectory(): string - { - if (!$this->hasCacheDirectory()) { - throw new Exception; - } - - return $this->cacheDirectory; - } - - /** - * @phpstan-assert-if-true !null $this->cacheResult - */ - public function hasCacheResult(): bool - { - return $this->cacheResult !== null; - } - - /** - * @throws Exception - */ - public function cacheResult(): bool - { - if (!$this->hasCacheResult()) { - throw new Exception; - } - - return $this->cacheResult; - } - - public function checkPhpConfiguration(): bool - { - return $this->checkPhpConfiguration; - } - - public function checkVersion(): bool - { - return $this->checkVersion; - } - - /** - * @phpstan-assert-if-true !null $this->colors - */ - public function hasColors(): bool - { - return $this->colors !== null; - } - - /** - * @throws Exception - */ - public function colors(): string - { - if (!$this->hasColors()) { - throw new Exception; - } - - return $this->colors; - } - - /** - * @phpstan-assert-if-true !null $this->columns - */ - public function hasColumns(): bool - { - return $this->columns !== null; - } - - /** - * @throws Exception - */ - public function columns(): int|string - { - if (!$this->hasColumns()) { - throw new Exception; - } - - return $this->columns; - } - - /** - * @phpstan-assert-if-true !null $this->configurationFile - */ - public function hasConfigurationFile(): bool - { - return $this->configurationFile !== null; - } - - /** - * @throws Exception - */ - public function configurationFile(): string - { - if (!$this->hasConfigurationFile()) { - throw new Exception; - } - - return $this->configurationFile; - } - - /** - * @phpstan-assert-if-true !null $this->coverageFilter - */ - public function hasCoverageFilter(): bool - { - return $this->coverageFilter !== null; - } - - /** - * @throws Exception - * - * @return non-empty-list - */ - public function coverageFilter(): array - { - if (!$this->hasCoverageFilter()) { - throw new Exception; - } - - return $this->coverageFilter; - } - - /** - * @phpstan-assert-if-true !null $this->coverageClover - */ - public function hasCoverageClover(): bool - { - return $this->coverageClover !== null; - } - - /** - * @throws Exception - */ - public function coverageClover(): string - { - if (!$this->hasCoverageClover()) { - throw new Exception; - } - - return $this->coverageClover; - } - - /** - * @phpstan-assert-if-true !null $this->coverageCobertura - */ - public function hasCoverageCobertura(): bool - { - return $this->coverageCobertura !== null; - } - - /** - * @throws Exception - */ - public function coverageCobertura(): string - { - if (!$this->hasCoverageCobertura()) { - throw new Exception; - } - - return $this->coverageCobertura; - } - - /** - * @phpstan-assert-if-true !null $this->coverageCrap4J - */ - public function hasCoverageCrap4J(): bool - { - return $this->coverageCrap4J !== null; - } - - /** - * @throws Exception - */ - public function coverageCrap4J(): string - { - if (!$this->hasCoverageCrap4J()) { - throw new Exception; - } - - return $this->coverageCrap4J; - } - - /** - * @phpstan-assert-if-true !null $this->coverageHtml - */ - public function hasCoverageHtml(): bool - { - return $this->coverageHtml !== null; - } - - /** - * @throws Exception - */ - public function coverageHtml(): string - { - if (!$this->hasCoverageHtml()) { - throw new Exception; - } - - return $this->coverageHtml; - } - - /** - * @phpstan-assert-if-true !null $this->coveragePhp - */ - public function hasCoveragePhp(): bool - { - return $this->coveragePhp !== null; - } - - /** - * @throws Exception - */ - public function coveragePhp(): string - { - if (!$this->hasCoveragePhp()) { - throw new Exception; - } - - return $this->coveragePhp; - } - - /** - * @phpstan-assert-if-true !null $this->coverageText - */ - public function hasCoverageText(): bool - { - return $this->coverageText !== null; - } - - /** - * @throws Exception - */ - public function coverageText(): string - { - if (!$this->hasCoverageText()) { - throw new Exception; - } - - return $this->coverageText; - } - - /** - * @phpstan-assert-if-true !null $this->coverageTextShowUncoveredFiles - */ - public function hasCoverageTextShowUncoveredFiles(): bool - { - return $this->coverageTextShowUncoveredFiles !== null; - } - - /** - * @throws Exception - */ - public function coverageTextShowUncoveredFiles(): bool - { - if (!$this->hasCoverageTextShowUncoveredFiles()) { - throw new Exception; - } - - return $this->coverageTextShowUncoveredFiles; - } - - /** - * @phpstan-assert-if-true !null $this->coverageTextShowOnlySummary - */ - public function hasCoverageTextShowOnlySummary(): bool - { - return $this->coverageTextShowOnlySummary !== null; - } - - /** - * @throws Exception - */ - public function coverageTextShowOnlySummary(): bool - { - if (!$this->hasCoverageTextShowOnlySummary()) { - throw new Exception; - } - - return $this->coverageTextShowOnlySummary; - } - - /** - * @phpstan-assert-if-true !null $this->coverageXml - */ - public function hasCoverageXml(): bool - { - return $this->coverageXml !== null; - } - - /** - * @throws Exception - */ - public function coverageXml(): string - { - if (!$this->hasCoverageXml()) { - throw new Exception; - } - - return $this->coverageXml; - } - - /** - * @phpstan-assert-if-true !null $this->pathCoverage - */ - public function hasPathCoverage(): bool - { - return $this->pathCoverage !== null; - } - - /** - * @throws Exception - */ - public function pathCoverage(): bool - { - if (!$this->hasPathCoverage()) { - throw new Exception; - } - - return $this->pathCoverage; - } - - public function warmCoverageCache(): bool - { - return $this->warmCoverageCache; - } - - /** - * @phpstan-assert-if-true !null $this->defaultTimeLimit - */ - public function hasDefaultTimeLimit(): bool - { - return $this->defaultTimeLimit !== null; - } - - /** - * @throws Exception - */ - public function defaultTimeLimit(): int - { - if (!$this->hasDefaultTimeLimit()) { - throw new Exception; - } - - return $this->defaultTimeLimit; - } - - /** - * @phpstan-assert-if-true !null $this->disableCodeCoverageIgnore - */ - public function hasDisableCodeCoverageIgnore(): bool - { - return $this->disableCodeCoverageIgnore !== null; - } - - /** - * @throws Exception - */ - public function disableCodeCoverageIgnore(): bool - { - if (!$this->hasDisableCodeCoverageIgnore()) { - throw new Exception; - } - - return $this->disableCodeCoverageIgnore; - } - - /** - * @phpstan-assert-if-true !null $this->disallowTestOutput - */ - public function hasDisallowTestOutput(): bool - { - return $this->disallowTestOutput !== null; - } - - /** - * @throws Exception - */ - public function disallowTestOutput(): bool - { - if (!$this->hasDisallowTestOutput()) { - throw new Exception; - } - - return $this->disallowTestOutput; - } - - /** - * @phpstan-assert-if-true !null $this->enforceTimeLimit - */ - public function hasEnforceTimeLimit(): bool - { - return $this->enforceTimeLimit !== null; - } - - /** - * @throws Exception - */ - public function enforceTimeLimit(): bool - { - if (!$this->hasEnforceTimeLimit()) { - throw new Exception; - } - - return $this->enforceTimeLimit; - } - - /** - * @phpstan-assert-if-true !null $this->excludeGroups - */ - public function hasExcludeGroups(): bool - { - return $this->excludeGroups !== null; - } - - /** - * @throws Exception - * - * @return non-empty-list - */ - public function excludeGroups(): array - { - if (!$this->hasExcludeGroups()) { - throw new Exception; - } - - return $this->excludeGroups; - } - - /** - * @phpstan-assert-if-true !null $this->executionOrder - */ - public function hasExecutionOrder(): bool - { - return $this->executionOrder !== null; - } - - /** - * @throws Exception - */ - public function executionOrder(): int - { - if (!$this->hasExecutionOrder()) { - throw new Exception; - } - - return $this->executionOrder; - } - - /** - * @phpstan-assert-if-true !null $this->executionOrderDefects - */ - public function hasExecutionOrderDefects(): bool - { - return $this->executionOrderDefects !== null; - } - - /** - * @throws Exception - */ - public function executionOrderDefects(): int - { - if (!$this->hasExecutionOrderDefects()) { - throw new Exception; - } - - return $this->executionOrderDefects; - } - - /** - * @phpstan-assert-if-true !null $this->failOnAllIssues - */ - public function hasFailOnAllIssues(): bool - { - return $this->failOnAllIssues !== null; - } - - /** - * @throws Exception - */ - public function failOnAllIssues(): bool - { - if (!$this->hasFailOnAllIssues()) { - throw new Exception; - } - - return $this->failOnAllIssues; - } - - /** - * @phpstan-assert-if-true !null $this->failOnDeprecation - */ - public function hasFailOnDeprecation(): bool - { - return $this->failOnDeprecation !== null; - } - - /** - * @throws Exception - */ - public function failOnDeprecation(): bool - { - if (!$this->hasFailOnDeprecation()) { - throw new Exception; - } - - return $this->failOnDeprecation; - } - - /** - * @phpstan-assert-if-true !null $this->failOnPhpunitDeprecation - */ - public function hasFailOnPhpunitDeprecation(): bool - { - return $this->failOnPhpunitDeprecation !== null; - } - - /** - * @throws Exception - */ - public function failOnPhpunitDeprecation(): bool - { - if (!$this->hasFailOnPhpunitDeprecation()) { - throw new Exception; - } - - return $this->failOnPhpunitDeprecation; - } - - /** - * @phpstan-assert-if-true !null $this->failOnPhpunitWarning - */ - public function hasFailOnPhpunitWarning(): bool - { - return $this->failOnPhpunitWarning !== null; - } - - /** - * @throws Exception - */ - public function failOnPhpunitWarning(): bool - { - if (!$this->hasFailOnPhpunitWarning()) { - throw new Exception; - } - - return $this->failOnPhpunitWarning; - } - - /** - * @phpstan-assert-if-true !null $this->failOnEmptyTestSuite - */ - public function hasFailOnEmptyTestSuite(): bool - { - return $this->failOnEmptyTestSuite !== null; - } - - /** - * @throws Exception - */ - public function failOnEmptyTestSuite(): bool - { - if (!$this->hasFailOnEmptyTestSuite()) { - throw new Exception; - } - - return $this->failOnEmptyTestSuite; - } - - /** - * @phpstan-assert-if-true !null $this->failOnIncomplete - */ - public function hasFailOnIncomplete(): bool - { - return $this->failOnIncomplete !== null; - } - - /** - * @throws Exception - */ - public function failOnIncomplete(): bool - { - if (!$this->hasFailOnIncomplete()) { - throw new Exception; - } - - return $this->failOnIncomplete; - } - - /** - * @phpstan-assert-if-true !null $this->failOnNotice - */ - public function hasFailOnNotice(): bool - { - return $this->failOnNotice !== null; - } - - /** - * @throws Exception - */ - public function failOnNotice(): bool - { - if (!$this->hasFailOnNotice()) { - throw new Exception; - } - - return $this->failOnNotice; - } - - /** - * @phpstan-assert-if-true !null $this->failOnRisky - */ - public function hasFailOnRisky(): bool - { - return $this->failOnRisky !== null; - } - - /** - * @throws Exception - */ - public function failOnRisky(): bool - { - if (!$this->hasFailOnRisky()) { - throw new Exception; - } - - return $this->failOnRisky; - } - - /** - * @phpstan-assert-if-true !null $this->failOnSkipped - */ - public function hasFailOnSkipped(): bool - { - return $this->failOnSkipped !== null; - } - - /** - * @throws Exception - */ - public function failOnSkipped(): bool - { - if (!$this->hasFailOnSkipped()) { - throw new Exception; - } - - return $this->failOnSkipped; - } - - /** - * @phpstan-assert-if-true !null $this->failOnWarning - */ - public function hasFailOnWarning(): bool - { - return $this->failOnWarning !== null; - } - - /** - * @throws Exception - */ - public function failOnWarning(): bool - { - if (!$this->hasFailOnWarning()) { - throw new Exception; - } - - return $this->failOnWarning; - } - - /** - * @phpstan-assert-if-true !null $this->doNotFailOnDeprecation - */ - public function hasDoNotFailOnDeprecation(): bool - { - return $this->doNotFailOnDeprecation !== null; - } - - /** - * @throws Exception - */ - public function doNotFailOnDeprecation(): bool - { - if (!$this->hasDoNotFailOnDeprecation()) { - throw new Exception; - } - - return $this->doNotFailOnDeprecation; - } - - /** - * @phpstan-assert-if-true !null $this->doNotFailOnPhpunitDeprecation - */ - public function hasDoNotFailOnPhpunitDeprecation(): bool - { - return $this->doNotFailOnPhpunitDeprecation !== null; - } - - /** - * @throws Exception - */ - public function doNotFailOnPhpunitDeprecation(): bool - { - if (!$this->hasDoNotFailOnPhpunitDeprecation()) { - throw new Exception; - } - - return $this->doNotFailOnPhpunitDeprecation; - } - - /** - * @phpstan-assert-if-true !null $this->doNotFailOnPhpunitWarning - */ - public function hasDoNotFailOnPhpunitWarning(): bool - { - return $this->doNotFailOnPhpunitWarning !== null; - } - - /** - * @throws Exception - */ - public function doNotFailOnPhpunitWarning(): bool - { - if (!$this->hasDoNotFailOnPhpunitWarning()) { - throw new Exception; - } - - return $this->doNotFailOnPhpunitWarning; - } - - /** - * @phpstan-assert-if-true !null $this->doNotFailOnEmptyTestSuite - */ - public function hasDoNotFailOnEmptyTestSuite(): bool - { - return $this->doNotFailOnEmptyTestSuite !== null; - } - - /** - * @throws Exception - */ - public function doNotFailOnEmptyTestSuite(): bool - { - if (!$this->hasDoNotFailOnEmptyTestSuite()) { - throw new Exception; - } - - return $this->doNotFailOnEmptyTestSuite; - } - - /** - * @phpstan-assert-if-true !null $this->doNotFailOnIncomplete - */ - public function hasDoNotFailOnIncomplete(): bool - { - return $this->doNotFailOnIncomplete !== null; - } - - /** - * @throws Exception - */ - public function doNotFailOnIncomplete(): bool - { - if (!$this->hasDoNotFailOnIncomplete()) { - throw new Exception; - } - - return $this->doNotFailOnIncomplete; - } - - /** - * @phpstan-assert-if-true !null $this->doNotFailOnNotice - */ - public function hasDoNotFailOnNotice(): bool - { - return $this->doNotFailOnNotice !== null; - } - - /** - * @throws Exception - */ - public function doNotFailOnNotice(): bool - { - if (!$this->hasDoNotFailOnNotice()) { - throw new Exception; - } - - return $this->doNotFailOnNotice; - } - - /** - * @phpstan-assert-if-true !null $this->doNotFailOnRisky - */ - public function hasDoNotFailOnRisky(): bool - { - return $this->doNotFailOnRisky !== null; - } - - /** - * @throws Exception - */ - public function doNotFailOnRisky(): bool - { - if (!$this->hasDoNotFailOnRisky()) { - throw new Exception; - } - - return $this->doNotFailOnRisky; - } - - /** - * @phpstan-assert-if-true !null $this->doNotFailOnSkipped - */ - public function hasDoNotFailOnSkipped(): bool - { - return $this->doNotFailOnSkipped !== null; - } - - /** - * @throws Exception - */ - public function doNotFailOnSkipped(): bool - { - if (!$this->hasDoNotFailOnSkipped()) { - throw new Exception; - } - - return $this->doNotFailOnSkipped; - } - - /** - * @phpstan-assert-if-true !null $this->doNotFailOnWarning - */ - public function hasDoNotFailOnWarning(): bool - { - return $this->doNotFailOnWarning !== null; - } - - /** - * @throws Exception - */ - public function doNotFailOnWarning(): bool - { - if (!$this->hasDoNotFailOnWarning()) { - throw new Exception; - } - - return $this->doNotFailOnWarning; - } - - /** - * @phpstan-assert-if-true !null $this->stopOnDefect - */ - public function hasStopOnDefect(): bool - { - return $this->stopOnDefect !== null; - } - - /** - * @throws Exception - */ - public function stopOnDefect(): bool - { - if (!$this->hasStopOnDefect()) { - throw new Exception; - } - - return $this->stopOnDefect; - } - - /** - * @phpstan-assert-if-true !null $this->stopOnDeprecation - */ - public function hasStopOnDeprecation(): bool - { - return $this->stopOnDeprecation !== null; - } - - /** - * @throws Exception - */ - public function stopOnDeprecation(): bool - { - if (!$this->hasStopOnDeprecation()) { - throw new Exception; - } - - return $this->stopOnDeprecation; - } - - /** - * @phpstan-assert-if-true !null $this->specificDeprecationToStopOn - */ - public function hasSpecificDeprecationToStopOn(): bool - { - return $this->specificDeprecationToStopOn !== null; - } - - /** - * @throws Exception - */ - public function specificDeprecationToStopOn(): string - { - if (!$this->hasSpecificDeprecationToStopOn()) { - throw new Exception; - } - - return $this->specificDeprecationToStopOn; - } - - /** - * @phpstan-assert-if-true !null $this->stopOnError - */ - public function hasStopOnError(): bool - { - return $this->stopOnError !== null; - } - - /** - * @throws Exception - */ - public function stopOnError(): bool - { - if (!$this->hasStopOnError()) { - throw new Exception; - } - - return $this->stopOnError; - } - - /** - * @phpstan-assert-if-true !null $this->stopOnFailure - */ - public function hasStopOnFailure(): bool - { - return $this->stopOnFailure !== null; - } - - /** - * @throws Exception - */ - public function stopOnFailure(): bool - { - if (!$this->hasStopOnFailure()) { - throw new Exception; - } - - return $this->stopOnFailure; - } - - /** - * @phpstan-assert-if-true !null $this->stopOnIncomplete - */ - public function hasStopOnIncomplete(): bool - { - return $this->stopOnIncomplete !== null; - } - - /** - * @throws Exception - */ - public function stopOnIncomplete(): bool - { - if (!$this->hasStopOnIncomplete()) { - throw new Exception; - } - - return $this->stopOnIncomplete; - } - - /** - * @phpstan-assert-if-true !null $this->stopOnNotice - */ - public function hasStopOnNotice(): bool - { - return $this->stopOnNotice !== null; - } - - /** - * @throws Exception - */ - public function stopOnNotice(): bool - { - if (!$this->hasStopOnNotice()) { - throw new Exception; - } - - return $this->stopOnNotice; - } - - /** - * @phpstan-assert-if-true !null $this->stopOnRisky - */ - public function hasStopOnRisky(): bool - { - return $this->stopOnRisky !== null; - } - - /** - * @throws Exception - */ - public function stopOnRisky(): bool - { - if (!$this->hasStopOnRisky()) { - throw new Exception; - } - - return $this->stopOnRisky; - } - - /** - * @phpstan-assert-if-true !null $this->stopOnSkipped - */ - public function hasStopOnSkipped(): bool - { - return $this->stopOnSkipped !== null; - } - - /** - * @throws Exception - */ - public function stopOnSkipped(): bool - { - if (!$this->hasStopOnSkipped()) { - throw new Exception; - } - - return $this->stopOnSkipped; - } - - /** - * @phpstan-assert-if-true !null $this->stopOnWarning - */ - public function hasStopOnWarning(): bool - { - return $this->stopOnWarning !== null; - } - - /** - * @throws Exception - */ - public function stopOnWarning(): bool - { - if (!$this->hasStopOnWarning()) { - throw new Exception; - } - - return $this->stopOnWarning; - } - - /** - * @phpstan-assert-if-true !null $this->excludeFilter - */ - public function hasExcludeFilter(): bool - { - return $this->excludeFilter !== null; - } - - /** - * @throws Exception - */ - public function excludeFilter(): string - { - if (!$this->hasExcludeFilter()) { - throw new Exception; - } - - return $this->excludeFilter; - } - - /** - * @phpstan-assert-if-true !null $this->filter - */ - public function hasFilter(): bool - { - return $this->filter !== null; - } - - /** - * @throws Exception - */ - public function filter(): string - { - if (!$this->hasFilter()) { - throw new Exception; - } - - return $this->filter; - } - - /** - * @phpstan-assert-if-true !null $this->generateBaseline - */ - public function hasGenerateBaseline(): bool - { - return $this->generateBaseline !== null; - } - - /** - * @throws Exception - */ - public function generateBaseline(): string - { - if (!$this->hasGenerateBaseline()) { - throw new Exception; - } - - return $this->generateBaseline; - } - - /** - * @phpstan-assert-if-true !null $this->useBaseline - */ - public function hasUseBaseline(): bool - { - return $this->useBaseline !== null; - } - - /** - * @throws Exception - */ - public function useBaseline(): string - { - if (!$this->hasUseBaseline()) { - throw new Exception; - } - - return $this->useBaseline; - } - - public function ignoreBaseline(): bool - { - return $this->ignoreBaseline; - } - - public function generateConfiguration(): bool - { - return $this->generateConfiguration; - } - - public function migrateConfiguration(): bool - { - return $this->migrateConfiguration; - } - - /** - * @phpstan-assert-if-true !null $this->groups - */ - public function hasGroups(): bool - { - return $this->groups !== null; - } - - /** - * @throws Exception - * - * @return non-empty-list - */ - public function groups(): array - { - if (!$this->hasGroups()) { - throw new Exception; - } - - return $this->groups; - } - - /** - * @phpstan-assert-if-true !null $this->testsCovering - */ - public function hasTestsCovering(): bool - { - return $this->testsCovering !== null; - } - - /** - * @throws Exception - * - * @return non-empty-list - */ - public function testsCovering(): array - { - if (!$this->hasTestsCovering()) { - throw new Exception; - } - - return $this->testsCovering; - } - - /** - * @phpstan-assert-if-true !null $this->testsUsing - */ - public function hasTestsUsing(): bool - { - return $this->testsUsing !== null; - } - - /** - * @throws Exception - * - * @return non-empty-list - */ - public function testsUsing(): array - { - if (!$this->hasTestsUsing()) { - throw new Exception; - } - - return $this->testsUsing; - } - - /** - * @phpstan-assert-if-true !null $this->testsRequiringPhpExtension - */ - public function hasTestsRequiringPhpExtension(): bool - { - return $this->testsRequiringPhpExtension !== null; - } - - /** - * @throws Exception - * - * @return non-empty-list - */ - public function testsRequiringPhpExtension(): array - { - if (!$this->hasTestsRequiringPhpExtension()) { - throw new Exception; - } - - return $this->testsRequiringPhpExtension; - } - - public function help(): bool - { - return $this->help; - } - - /** - * @phpstan-assert-if-true !null $this->includePath - */ - public function hasIncludePath(): bool - { - return $this->includePath !== null; - } - - /** - * @throws Exception - */ - public function includePath(): string - { - if (!$this->hasIncludePath()) { - throw new Exception; - } - - return $this->includePath; - } - - /** - * @phpstan-assert-if-true !null $this->iniSettings - */ - public function hasIniSettings(): bool - { - return $this->iniSettings !== null; - } - - /** - * @throws Exception - * - * @return non-empty-array - */ - public function iniSettings(): array - { - if (!$this->hasIniSettings()) { - throw new Exception; - } - - return $this->iniSettings; - } - - /** - * @phpstan-assert-if-true !null $this->junitLogfile - */ - public function hasJunitLogfile(): bool - { - return $this->junitLogfile !== null; - } - - /** - * @throws Exception - */ - public function junitLogfile(): string - { - if (!$this->hasJunitLogfile()) { - throw new Exception; - } - - return $this->junitLogfile; - } - - public function listGroups(): bool - { - return $this->listGroups; - } - - public function listSuites(): bool - { - return $this->listSuites; - } - - public function listTestFiles(): bool - { - return $this->listTestFiles; - } - - public function listTests(): bool - { - return $this->listTests; - } - - /** - * @phpstan-assert-if-true !null $this->listTestsXml - */ - public function hasListTestsXml(): bool - { - return $this->listTestsXml !== null; - } - - /** - * @throws Exception - */ - public function listTestsXml(): string - { - if (!$this->hasListTestsXml()) { - throw new Exception; - } - - return $this->listTestsXml; - } - - /** - * @phpstan-assert-if-true !null $this->noCoverage - */ - public function hasNoCoverage(): bool - { - return $this->noCoverage !== null; - } - - /** - * @throws Exception - */ - public function noCoverage(): bool - { - if (!$this->hasNoCoverage()) { - throw new Exception; - } - - return $this->noCoverage; - } - - /** - * @phpstan-assert-if-true !null $this->noExtensions - */ - public function hasNoExtensions(): bool - { - return $this->noExtensions !== null; - } - - /** - * @throws Exception - */ - public function noExtensions(): bool - { - if (!$this->hasNoExtensions()) { - throw new Exception; - } - - return $this->noExtensions; - } - - /** - * @phpstan-assert-if-true !null $this->noOutput - */ - public function hasNoOutput(): bool - { - return $this->noOutput !== null; - } - - /** - * @throws Exception - */ - public function noOutput(): bool - { - if ($this->noOutput === null) { - throw new Exception; - } - - return $this->noOutput; - } - - /** - * @phpstan-assert-if-true !null $this->noProgress - */ - public function hasNoProgress(): bool - { - return $this->noProgress !== null; - } - - /** - * @throws Exception - */ - public function noProgress(): bool - { - if ($this->noProgress === null) { - throw new Exception; - } - - return $this->noProgress; - } - - /** - * @phpstan-assert-if-true !null $this->noResults - */ - public function hasNoResults(): bool - { - return $this->noResults !== null; - } - - /** - * @throws Exception - */ - public function noResults(): bool - { - if ($this->noResults === null) { - throw new Exception; - } - - return $this->noResults; - } - - /** - * @phpstan-assert-if-true !null $this->noLogging - */ - public function hasNoLogging(): bool - { - return $this->noLogging !== null; - } - - /** - * @throws Exception - */ - public function noLogging(): bool - { - if (!$this->hasNoLogging()) { - throw new Exception; - } - - return $this->noLogging; - } - - /** - * @phpstan-assert-if-true !null $this->processIsolation - */ - public function hasProcessIsolation(): bool - { - return $this->processIsolation !== null; - } - - /** - * @throws Exception - */ - public function processIsolation(): bool - { - if (!$this->hasProcessIsolation()) { - throw new Exception; - } - - return $this->processIsolation; - } - - /** - * @phpstan-assert-if-true !null $this->randomOrderSeed - */ - public function hasRandomOrderSeed(): bool - { - return $this->randomOrderSeed !== null; - } - - /** - * @throws Exception - */ - public function randomOrderSeed(): int - { - if (!$this->hasRandomOrderSeed()) { - throw new Exception; - } - - return $this->randomOrderSeed; - } - - /** - * @phpstan-assert-if-true !null $this->reportUselessTests - */ - public function hasReportUselessTests(): bool - { - return $this->reportUselessTests !== null; - } - - /** - * @throws Exception - */ - public function reportUselessTests(): bool - { - if (!$this->hasReportUselessTests()) { - throw new Exception; - } - - return $this->reportUselessTests; - } - - /** - * @phpstan-assert-if-true !null $this->resolveDependencies - */ - public function hasResolveDependencies(): bool - { - return $this->resolveDependencies !== null; - } - - /** - * @throws Exception - */ - public function resolveDependencies(): bool - { - if (!$this->hasResolveDependencies()) { - throw new Exception; - } - - return $this->resolveDependencies; - } - - /** - * @phpstan-assert-if-true !null $this->reverseList - */ - public function hasReverseList(): bool - { - return $this->reverseList !== null; - } - - /** - * @throws Exception - */ - public function reverseList(): bool - { - if (!$this->hasReverseList()) { - throw new Exception; - } - - return $this->reverseList; - } - - /** - * @phpstan-assert-if-true !null $this->stderr - */ - public function hasStderr(): bool - { - return $this->stderr !== null; - } - - /** - * @throws Exception - */ - public function stderr(): bool - { - if (!$this->hasStderr()) { - throw new Exception; - } - - return $this->stderr; - } - - /** - * @phpstan-assert-if-true !null $this->strictCoverage - */ - public function hasStrictCoverage(): bool - { - return $this->strictCoverage !== null; - } - - /** - * @throws Exception - */ - public function strictCoverage(): bool - { - if (!$this->hasStrictCoverage()) { - throw new Exception; - } - - return $this->strictCoverage; - } - - /** - * @phpstan-assert-if-true !null $this->teamcityLogfile - */ - public function hasTeamcityLogfile(): bool - { - return $this->teamcityLogfile !== null; - } - - /** - * @throws Exception - */ - public function teamcityLogfile(): string - { - if (!$this->hasTeamcityLogfile()) { - throw new Exception; - } - - return $this->teamcityLogfile; - } - - /** - * @phpstan-assert-if-true !null $this->teamCityPrinter - */ - public function hasTeamCityPrinter(): bool - { - return $this->teamCityPrinter !== null; - } - - /** - * @throws Exception - */ - public function teamCityPrinter(): bool - { - if (!$this->hasTeamCityPrinter()) { - throw new Exception; - } - - return $this->teamCityPrinter; - } - - /** - * @phpstan-assert-if-true !null $this->testdoxHtmlFile - */ - public function hasTestdoxHtmlFile(): bool - { - return $this->testdoxHtmlFile !== null; - } - - /** - * @throws Exception - */ - public function testdoxHtmlFile(): string - { - if (!$this->hasTestdoxHtmlFile()) { - throw new Exception; - } - - return $this->testdoxHtmlFile; - } - - /** - * @phpstan-assert-if-true !null $this->testdoxTextFile - */ - public function hasTestdoxTextFile(): bool - { - return $this->testdoxTextFile !== null; - } - - /** - * @throws Exception - */ - public function testdoxTextFile(): string - { - if (!$this->hasTestdoxTextFile()) { - throw new Exception; - } - - return $this->testdoxTextFile; - } - - /** - * @phpstan-assert-if-true !null $this->testdoxPrinter - */ - public function hasTestDoxPrinter(): bool - { - return $this->testdoxPrinter !== null; - } - - /** - * @throws Exception - */ - public function testdoxPrinter(): bool - { - if (!$this->hasTestDoxPrinter()) { - throw new Exception; - } - - return $this->testdoxPrinter; - } - - /** - * @phpstan-assert-if-true !null $this->testdoxPrinterSummary - */ - public function hasTestDoxPrinterSummary(): bool - { - return $this->testdoxPrinterSummary !== null; - } - - /** - * @throws Exception - */ - public function testdoxPrinterSummary(): bool - { - if (!$this->hasTestDoxPrinterSummary()) { - throw new Exception; - } - - return $this->testdoxPrinterSummary; - } - - /** - * @phpstan-assert-if-true !null $this->testSuffixes - */ - public function hasTestSuffixes(): bool - { - return $this->testSuffixes !== null; - } - - /** - * @throws Exception - * - * @return non-empty-list - */ - public function testSuffixes(): array - { - if (!$this->hasTestSuffixes()) { - throw new Exception; - } - - return $this->testSuffixes; - } - - /** - * @phpstan-assert-if-true !null $this->testSuite - */ - public function hasTestSuite(): bool - { - return $this->testSuite !== null; - } - - /** - * @throws Exception - */ - public function testSuite(): string - { - if (!$this->hasTestSuite()) { - throw new Exception; - } - - return $this->testSuite; - } - - /** - * @phpstan-assert-if-true !null $this->excludeTestSuite - */ - public function hasExcludedTestSuite(): bool - { - return $this->excludeTestSuite !== null; - } - - /** - * @throws Exception - */ - public function excludedTestSuite(): string - { - if (!$this->hasExcludedTestSuite()) { - throw new Exception; - } - - return $this->excludeTestSuite; - } - - public function useDefaultConfiguration(): bool - { - return $this->useDefaultConfiguration; - } - - /** - * @phpstan-assert-if-true !null $this->displayDetailsOnAllIssues - */ - public function hasDisplayDetailsOnAllIssues(): bool - { - return $this->displayDetailsOnAllIssues !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnAllIssues(): bool - { - if (!$this->hasDisplayDetailsOnAllIssues()) { - throw new Exception; - } - - return $this->displayDetailsOnAllIssues; - } - - /** - * @phpstan-assert-if-true !null $this->displayDetailsOnIncompleteTests - */ - public function hasDisplayDetailsOnIncompleteTests(): bool - { - return $this->displayDetailsOnIncompleteTests !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnIncompleteTests(): bool - { - if (!$this->hasDisplayDetailsOnIncompleteTests()) { - throw new Exception; - } - - return $this->displayDetailsOnIncompleteTests; - } - - /** - * @phpstan-assert-if-true !null $this->displayDetailsOnSkippedTests - */ - public function hasDisplayDetailsOnSkippedTests(): bool - { - return $this->displayDetailsOnSkippedTests !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnSkippedTests(): bool - { - if (!$this->hasDisplayDetailsOnSkippedTests()) { - throw new Exception; - } - - return $this->displayDetailsOnSkippedTests; - } - - /** - * @phpstan-assert-if-true !null $this->displayDetailsOnTestsThatTriggerDeprecations - */ - public function hasDisplayDetailsOnTestsThatTriggerDeprecations(): bool - { - return $this->displayDetailsOnTestsThatTriggerDeprecations !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnTestsThatTriggerDeprecations(): bool - { - if (!$this->hasDisplayDetailsOnTestsThatTriggerDeprecations()) { - throw new Exception; - } - - return $this->displayDetailsOnTestsThatTriggerDeprecations; - } - - /** - * @phpstan-assert-if-true !null $this->displayDetailsOnPhpunitDeprecations - */ - public function hasDisplayDetailsOnPhpunitDeprecations(): bool - { - return $this->displayDetailsOnPhpunitDeprecations !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnPhpunitDeprecations(): bool - { - if (!$this->hasDisplayDetailsOnPhpunitDeprecations()) { - throw new Exception; - } - - return $this->displayDetailsOnPhpunitDeprecations; - } - - /** - * @phpstan-assert-if-true !null $this->displayDetailsOnTestsThatTriggerErrors - */ - public function hasDisplayDetailsOnTestsThatTriggerErrors(): bool - { - return $this->displayDetailsOnTestsThatTriggerErrors !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnTestsThatTriggerErrors(): bool - { - if (!$this->hasDisplayDetailsOnTestsThatTriggerErrors()) { - throw new Exception; - } - - return $this->displayDetailsOnTestsThatTriggerErrors; - } - - /** - * @phpstan-assert-if-true !null $this->displayDetailsOnTestsThatTriggerNotices - */ - public function hasDisplayDetailsOnTestsThatTriggerNotices(): bool - { - return $this->displayDetailsOnTestsThatTriggerNotices !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnTestsThatTriggerNotices(): bool - { - if (!$this->hasDisplayDetailsOnTestsThatTriggerNotices()) { - throw new Exception; - } - - return $this->displayDetailsOnTestsThatTriggerNotices; - } - - /** - * @phpstan-assert-if-true !null $this->displayDetailsOnTestsThatTriggerWarnings - */ - public function hasDisplayDetailsOnTestsThatTriggerWarnings(): bool - { - return $this->displayDetailsOnTestsThatTriggerWarnings !== null; - } - - /** - * @throws Exception - */ - public function displayDetailsOnTestsThatTriggerWarnings(): bool - { - if (!$this->hasDisplayDetailsOnTestsThatTriggerWarnings()) { - throw new Exception; - } - - return $this->displayDetailsOnTestsThatTriggerWarnings; - } - - public function version(): bool - { - return $this->version; - } - - /** - * @phpstan-assert-if-true !null $this->logEventsText - */ - public function hasLogEventsText(): bool - { - return $this->logEventsText !== null; - } - - /** - * @throws Exception - */ - public function logEventsText(): string - { - if (!$this->hasLogEventsText()) { - throw new Exception; - } - - return $this->logEventsText; - } - - /** - * @phpstan-assert-if-true !null $this->logEventsVerboseText - */ - public function hasLogEventsVerboseText(): bool - { - return $this->logEventsVerboseText !== null; - } - - /** - * @throws Exception - */ - public function logEventsVerboseText(): string - { - if (!$this->hasLogEventsVerboseText()) { - throw new Exception; - } - - return $this->logEventsVerboseText; - } - - public function debug(): bool - { - return $this->debug; - } - - /** - * @phpstan-assert-if-true !null $this->extensions - */ - public function hasExtensions(): bool - { - return $this->extensions !== null; - } - - /** - * @throws Exception - * - * @return non-empty-list - */ - public function extensions(): array - { - if (!$this->hasExtensions()) { - throw new Exception; - } - - return $this->extensions; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php deleted file mode 100644 index 0d9a5a0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\CliArguments; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Exception extends RuntimeException implements \PHPUnit\Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php deleted file mode 100644 index 5357ef6..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\CliArguments; - -use function getcwd; -use function is_dir; -use function is_file; -use function realpath; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class XmlConfigurationFileFinder -{ - public function find(Configuration $configuration): false|string - { - $useDefaultConfiguration = $configuration->useDefaultConfiguration(); - - if ($configuration->hasConfigurationFile()) { - if (is_dir($configuration->configurationFile())) { - $candidate = $this->configurationFileInDirectory($configuration->configurationFile()); - - if ($candidate !== false) { - return $candidate; - } - - return false; - } - - return $configuration->configurationFile(); - } - - if ($useDefaultConfiguration) { - $directory = getcwd(); - - if ($directory !== false) { - $candidate = $this->configurationFileInDirectory($directory); - - if ($candidate !== false) { - return $candidate; - } - } - } - - return false; - } - - private function configurationFileInDirectory(string $directory): false|string - { - $candidates = [ - $directory . '/phpunit.xml', - $directory . '/phpunit.dist.xml', - $directory . '/phpunit.xml.dist', - ]; - - foreach ($candidates as $candidate) { - if (is_file($candidate)) { - return realpath($candidate); - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php deleted file mode 100644 index 7051d28..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/CodeCoverageFilterRegistry.php +++ /dev/null @@ -1,78 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function array_keys; -use function assert; -use SebastianBergmann\CodeCoverage\Filter; - -/** - * CLI options and XML configuration are static within a single PHPUnit process. - * It is therefore okay to use a Singleton registry here. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CodeCoverageFilterRegistry -{ - private static ?self $instance = null; - private ?Filter $filter = null; - private bool $configured = false; - - public static function instance(): self - { - if (self::$instance === null) { - self::$instance = new self; - } - - return self::$instance; - } - - /** - * @codeCoverageIgnore - */ - public function get(): Filter - { - assert($this->filter !== null); - - return $this->filter; - } - - /** - * @codeCoverageIgnore - */ - public function init(Configuration $configuration, bool $force = false): void - { - if (!$configuration->hasCoverageReport() && !$force) { - return; - } - - if ($this->configured && !$force) { - return; - } - - $this->filter = new Filter; - - if ($configuration->source()->notEmpty()) { - $this->filter->includeFiles(array_keys((new SourceMapper)->map($configuration->source()))); - - $this->configured = true; - } - } - - /** - * @codeCoverageIgnore - */ - public function configured(): bool - { - return $this->configured; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php deleted file mode 100644 index 7ff7366..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php +++ /dev/null @@ -1,1404 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Configuration -{ - public const COLOR_NEVER = 'never'; - public const COLOR_AUTO = 'auto'; - public const COLOR_ALWAYS = 'always'; - public const COLOR_DEFAULT = self::COLOR_NEVER; - - /** - * @var list - */ - private array $cliArguments; - private ?string $configurationFile; - private ?string $bootstrap; - private bool $cacheResult; - private ?string $cacheDirectory; - private ?string $coverageCacheDirectory; - private Source $source; - private bool $pathCoverage; - private ?string $coverageClover; - private ?string $coverageCobertura; - private ?string $coverageCrap4j; - private int $coverageCrap4jThreshold; - private ?string $coverageHtml; - private int $coverageHtmlLowUpperBound; - private int $coverageHtmlHighLowerBound; - private string $coverageHtmlColorSuccessLow; - private string $coverageHtmlColorSuccessMedium; - private string $coverageHtmlColorSuccessHigh; - private string $coverageHtmlColorWarning; - private string $coverageHtmlColorDanger; - private ?string $coverageHtmlCustomCssFile; - private ?string $coveragePhp; - private ?string $coverageText; - private bool $coverageTextShowUncoveredFiles; - private bool $coverageTextShowOnlySummary; - private ?string $coverageXml; - private string $testResultCacheFile; - private bool $ignoreDeprecatedCodeUnitsFromCodeCoverage; - private bool $disableCodeCoverageIgnore; - private bool $failOnAllIssues; - private bool $failOnDeprecation; - private bool $failOnPhpunitDeprecation; - private bool $failOnPhpunitWarning; - private bool $failOnEmptyTestSuite; - private bool $failOnIncomplete; - private bool $failOnNotice; - private bool $failOnRisky; - private bool $failOnSkipped; - private bool $failOnWarning; - private bool $doNotFailOnDeprecation; - private bool $doNotFailOnPhpunitDeprecation; - private bool $doNotFailOnPhpunitWarning; - private bool $doNotFailOnEmptyTestSuite; - private bool $doNotFailOnIncomplete; - private bool $doNotFailOnNotice; - private bool $doNotFailOnRisky; - private bool $doNotFailOnSkipped; - private bool $doNotFailOnWarning; - private bool $stopOnDefect; - private bool $stopOnDeprecation; - private ?string $specificDeprecationToStopOn; - private bool $stopOnError; - private bool $stopOnFailure; - private bool $stopOnIncomplete; - private bool $stopOnNotice; - private bool $stopOnRisky; - private bool $stopOnSkipped; - private bool $stopOnWarning; - private bool $outputToStandardErrorStream; - private int $columns; - private bool $noExtensions; - - /** - * @var ?non-empty-string - */ - private ?string $pharExtensionDirectory; - - /** - * @var list}> - */ - private array $extensionBootstrappers; - private bool $backupGlobals; - private bool $backupStaticProperties; - private bool $beStrictAboutChangesToGlobalState; - private bool $colors; - private bool $processIsolation; - private bool $enforceTimeLimit; - private int $defaultTimeLimit; - private int $timeoutForSmallTests; - private int $timeoutForMediumTests; - private int $timeoutForLargeTests; - private bool $reportUselessTests; - private bool $strictCoverage; - private bool $disallowTestOutput; - private bool $displayDetailsOnAllIssues; - private bool $displayDetailsOnIncompleteTests; - private bool $displayDetailsOnSkippedTests; - private bool $displayDetailsOnTestsThatTriggerDeprecations; - private bool $displayDetailsOnPhpunitDeprecations; - private bool $displayDetailsOnTestsThatTriggerErrors; - private bool $displayDetailsOnTestsThatTriggerNotices; - private bool $displayDetailsOnTestsThatTriggerWarnings; - private bool $reverseDefectList; - private bool $requireCoverageMetadata; - private bool $noProgress; - private bool $noResults; - private bool $noOutput; - private int $executionOrder; - private int $executionOrderDefects; - private bool $resolveDependencies; - private ?string $logfileTeamcity; - private ?string $logfileJunit; - private ?string $logfileTestdoxHtml; - private ?string $logfileTestdoxText; - private ?string $logEventsText; - private ?string $logEventsVerboseText; - - /** - * @var ?non-empty-list - */ - private ?array $testsCovering; - - /** - * @var ?non-empty-list - */ - private ?array $testsUsing; - - /** - * @var ?non-empty-list - */ - private ?array $testsRequiringPhpExtension; - private bool $teamCityOutput; - private bool $testDoxOutput; - private bool $testDoxOutputSummary; - private ?string $filter; - private ?string $excludeFilter; - - /** - * @var list - */ - private array $groups; - - /** - * @var list - */ - private array $excludeGroups; - private int $randomOrderSeed; - private bool $includeUncoveredFiles; - private TestSuiteCollection $testSuite; - private string $includeTestSuite; - private string $excludeTestSuite; - private ?string $defaultTestSuite; - - /** - * @var non-empty-list - */ - private array $testSuffixes; - private Php $php; - private bool $controlGarbageCollector; - private int $numberOfTestsBeforeGarbageCollection; - private ?string $generateBaseline; - private bool $debug; - - /** - * @var non-negative-int - */ - private int $shortenArraysForExportThreshold; - - /** - * @param list $cliArguments - * @param ?non-empty-string $pharExtensionDirectory - * @param list}> $extensionBootstrappers - * @param ?non-empty-list $testsCovering - * @param ?non-empty-list $testsUsing - * @param ?non-empty-list $testsRequiringPhpExtension - * @param list $groups - * @param list $excludeGroups - * @param non-empty-list $testSuffixes - * @param non-negative-int $shortenArraysForExportThreshold - */ - public function __construct(array $cliArguments, ?string $configurationFile, ?string $bootstrap, bool $cacheResult, ?string $cacheDirectory, ?string $coverageCacheDirectory, Source $source, string $testResultCacheFile, ?string $coverageClover, ?string $coverageCobertura, ?string $coverageCrap4j, int $coverageCrap4jThreshold, ?string $coverageHtml, int $coverageHtmlLowUpperBound, int $coverageHtmlHighLowerBound, string $coverageHtmlColorSuccessLow, string $coverageHtmlColorSuccessMedium, string $coverageHtmlColorSuccessHigh, string $coverageHtmlColorWarning, string $coverageHtmlColorDanger, ?string $coverageHtmlCustomCssFile, ?string $coveragePhp, ?string $coverageText, bool $coverageTextShowUncoveredFiles, bool $coverageTextShowOnlySummary, ?string $coverageXml, bool $pathCoverage, bool $ignoreDeprecatedCodeUnitsFromCodeCoverage, bool $disableCodeCoverageIgnore, bool $failOnAllIssues, bool $failOnDeprecation, bool $failOnPhpunitDeprecation, bool $failOnPhpunitWarning, bool $failOnEmptyTestSuite, bool $failOnIncomplete, bool $failOnNotice, bool $failOnRisky, bool $failOnSkipped, bool $failOnWarning, bool $doNotFailOnDeprecation, bool $doNotFailOnPhpunitDeprecation, bool $doNotFailOnPhpunitWarning, bool $doNotFailOnEmptyTestSuite, bool $doNotFailOnIncomplete, bool $doNotFailOnNotice, bool $doNotFailOnRisky, bool $doNotFailOnSkipped, bool $doNotFailOnWarning, bool $stopOnDefect, bool $stopOnDeprecation, ?string $specificDeprecationToStopOn, bool $stopOnError, bool $stopOnFailure, bool $stopOnIncomplete, bool $stopOnNotice, bool $stopOnRisky, bool $stopOnSkipped, bool $stopOnWarning, bool $outputToStandardErrorStream, int|string $columns, bool $noExtensions, ?string $pharExtensionDirectory, array $extensionBootstrappers, bool $backupGlobals, bool $backupStaticProperties, bool $beStrictAboutChangesToGlobalState, bool $colors, bool $processIsolation, bool $enforceTimeLimit, int $defaultTimeLimit, int $timeoutForSmallTests, int $timeoutForMediumTests, int $timeoutForLargeTests, bool $reportUselessTests, bool $strictCoverage, bool $disallowTestOutput, bool $displayDetailsOnAllIssues, bool $displayDetailsOnIncompleteTests, bool $displayDetailsOnSkippedTests, bool $displayDetailsOnTestsThatTriggerDeprecations, bool $displayDetailsOnPhpunitDeprecations, bool $displayDetailsOnTestsThatTriggerErrors, bool $displayDetailsOnTestsThatTriggerNotices, bool $displayDetailsOnTestsThatTriggerWarnings, bool $reverseDefectList, bool $requireCoverageMetadata, bool $noProgress, bool $noResults, bool $noOutput, int $executionOrder, int $executionOrderDefects, bool $resolveDependencies, ?string $logfileTeamcity, ?string $logfileJunit, ?string $logfileTestdoxHtml, ?string $logfileTestdoxText, ?string $logEventsText, ?string $logEventsVerboseText, bool $teamCityOutput, bool $testDoxOutput, bool $testDoxOutputSummary, ?array $testsCovering, ?array $testsUsing, ?array $testsRequiringPhpExtension, ?string $filter, ?string $excludeFilter, array $groups, array $excludeGroups, int $randomOrderSeed, bool $includeUncoveredFiles, TestSuiteCollection $testSuite, string $includeTestSuite, string $excludeTestSuite, ?string $defaultTestSuite, array $testSuffixes, Php $php, bool $controlGarbageCollector, int $numberOfTestsBeforeGarbageCollection, ?string $generateBaseline, bool $debug, int $shortenArraysForExportThreshold) - { - $this->cliArguments = $cliArguments; - $this->configurationFile = $configurationFile; - $this->bootstrap = $bootstrap; - $this->cacheResult = $cacheResult; - $this->cacheDirectory = $cacheDirectory; - $this->coverageCacheDirectory = $coverageCacheDirectory; - $this->source = $source; - $this->testResultCacheFile = $testResultCacheFile; - $this->coverageClover = $coverageClover; - $this->coverageCobertura = $coverageCobertura; - $this->coverageCrap4j = $coverageCrap4j; - $this->coverageCrap4jThreshold = $coverageCrap4jThreshold; - $this->coverageHtml = $coverageHtml; - $this->coverageHtmlLowUpperBound = $coverageHtmlLowUpperBound; - $this->coverageHtmlHighLowerBound = $coverageHtmlHighLowerBound; - $this->coverageHtmlColorSuccessLow = $coverageHtmlColorSuccessLow; - $this->coverageHtmlColorSuccessMedium = $coverageHtmlColorSuccessMedium; - $this->coverageHtmlColorSuccessHigh = $coverageHtmlColorSuccessHigh; - $this->coverageHtmlColorWarning = $coverageHtmlColorWarning; - $this->coverageHtmlColorDanger = $coverageHtmlColorDanger; - $this->coverageHtmlCustomCssFile = $coverageHtmlCustomCssFile; - $this->coveragePhp = $coveragePhp; - $this->coverageText = $coverageText; - $this->coverageTextShowUncoveredFiles = $coverageTextShowUncoveredFiles; - $this->coverageTextShowOnlySummary = $coverageTextShowOnlySummary; - $this->coverageXml = $coverageXml; - $this->pathCoverage = $pathCoverage; - $this->ignoreDeprecatedCodeUnitsFromCodeCoverage = $ignoreDeprecatedCodeUnitsFromCodeCoverage; - $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore; - $this->failOnAllIssues = $failOnAllIssues; - $this->failOnDeprecation = $failOnDeprecation; - $this->failOnPhpunitDeprecation = $failOnPhpunitDeprecation; - $this->failOnPhpunitWarning = $failOnPhpunitWarning; - $this->failOnEmptyTestSuite = $failOnEmptyTestSuite; - $this->failOnIncomplete = $failOnIncomplete; - $this->failOnNotice = $failOnNotice; - $this->failOnRisky = $failOnRisky; - $this->failOnSkipped = $failOnSkipped; - $this->failOnWarning = $failOnWarning; - $this->doNotFailOnDeprecation = $doNotFailOnDeprecation; - $this->doNotFailOnPhpunitDeprecation = $doNotFailOnPhpunitDeprecation; - $this->doNotFailOnPhpunitWarning = $doNotFailOnPhpunitWarning; - $this->doNotFailOnEmptyTestSuite = $doNotFailOnEmptyTestSuite; - $this->doNotFailOnIncomplete = $doNotFailOnIncomplete; - $this->doNotFailOnNotice = $doNotFailOnNotice; - $this->doNotFailOnRisky = $doNotFailOnRisky; - $this->doNotFailOnSkipped = $doNotFailOnSkipped; - $this->doNotFailOnWarning = $doNotFailOnWarning; - $this->stopOnDefect = $stopOnDefect; - $this->stopOnDeprecation = $stopOnDeprecation; - $this->specificDeprecationToStopOn = $specificDeprecationToStopOn; - $this->stopOnError = $stopOnError; - $this->stopOnFailure = $stopOnFailure; - $this->stopOnIncomplete = $stopOnIncomplete; - $this->stopOnNotice = $stopOnNotice; - $this->stopOnRisky = $stopOnRisky; - $this->stopOnSkipped = $stopOnSkipped; - $this->stopOnWarning = $stopOnWarning; - $this->outputToStandardErrorStream = $outputToStandardErrorStream; - $this->columns = $columns; - $this->noExtensions = $noExtensions; - $this->pharExtensionDirectory = $pharExtensionDirectory; - $this->extensionBootstrappers = $extensionBootstrappers; - $this->backupGlobals = $backupGlobals; - $this->backupStaticProperties = $backupStaticProperties; - $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; - $this->colors = $colors; - $this->processIsolation = $processIsolation; - $this->enforceTimeLimit = $enforceTimeLimit; - $this->defaultTimeLimit = $defaultTimeLimit; - $this->timeoutForSmallTests = $timeoutForSmallTests; - $this->timeoutForMediumTests = $timeoutForMediumTests; - $this->timeoutForLargeTests = $timeoutForLargeTests; - $this->reportUselessTests = $reportUselessTests; - $this->strictCoverage = $strictCoverage; - $this->disallowTestOutput = $disallowTestOutput; - $this->displayDetailsOnAllIssues = $displayDetailsOnAllIssues; - $this->displayDetailsOnIncompleteTests = $displayDetailsOnIncompleteTests; - $this->displayDetailsOnSkippedTests = $displayDetailsOnSkippedTests; - $this->displayDetailsOnTestsThatTriggerDeprecations = $displayDetailsOnTestsThatTriggerDeprecations; - $this->displayDetailsOnPhpunitDeprecations = $displayDetailsOnPhpunitDeprecations; - $this->displayDetailsOnTestsThatTriggerErrors = $displayDetailsOnTestsThatTriggerErrors; - $this->displayDetailsOnTestsThatTriggerNotices = $displayDetailsOnTestsThatTriggerNotices; - $this->displayDetailsOnTestsThatTriggerWarnings = $displayDetailsOnTestsThatTriggerWarnings; - $this->reverseDefectList = $reverseDefectList; - $this->requireCoverageMetadata = $requireCoverageMetadata; - $this->noProgress = $noProgress; - $this->noResults = $noResults; - $this->noOutput = $noOutput; - $this->executionOrder = $executionOrder; - $this->executionOrderDefects = $executionOrderDefects; - $this->resolveDependencies = $resolveDependencies; - $this->logfileTeamcity = $logfileTeamcity; - $this->logfileJunit = $logfileJunit; - $this->logfileTestdoxHtml = $logfileTestdoxHtml; - $this->logfileTestdoxText = $logfileTestdoxText; - $this->logEventsText = $logEventsText; - $this->logEventsVerboseText = $logEventsVerboseText; - $this->teamCityOutput = $teamCityOutput; - $this->testDoxOutput = $testDoxOutput; - $this->testDoxOutputSummary = $testDoxOutputSummary; - $this->testsCovering = $testsCovering; - $this->testsUsing = $testsUsing; - $this->testsRequiringPhpExtension = $testsRequiringPhpExtension; - $this->filter = $filter; - $this->excludeFilter = $excludeFilter; - $this->groups = $groups; - $this->excludeGroups = $excludeGroups; - $this->randomOrderSeed = $randomOrderSeed; - $this->includeUncoveredFiles = $includeUncoveredFiles; - $this->testSuite = $testSuite; - $this->includeTestSuite = $includeTestSuite; - $this->excludeTestSuite = $excludeTestSuite; - $this->defaultTestSuite = $defaultTestSuite; - $this->testSuffixes = $testSuffixes; - $this->php = $php; - $this->controlGarbageCollector = $controlGarbageCollector; - $this->numberOfTestsBeforeGarbageCollection = $numberOfTestsBeforeGarbageCollection; - $this->generateBaseline = $generateBaseline; - $this->debug = $debug; - $this->shortenArraysForExportThreshold = $shortenArraysForExportThreshold; - } - - /** - * @phpstan-assert-if-true !empty $this->cliArguments - */ - public function hasCliArguments(): bool - { - return !empty($this->cliArguments); - } - - /** - * @return list - */ - public function cliArguments(): array - { - return $this->cliArguments; - } - - /** - * @phpstan-assert-if-true !null $this->configurationFile - */ - public function hasConfigurationFile(): bool - { - return $this->configurationFile !== null; - } - - /** - * @throws NoConfigurationFileException - */ - public function configurationFile(): string - { - if (!$this->hasConfigurationFile()) { - throw new NoConfigurationFileException; - } - - return $this->configurationFile; - } - - /** - * @phpstan-assert-if-true !null $this->bootstrap - */ - public function hasBootstrap(): bool - { - return $this->bootstrap !== null; - } - - /** - * @throws NoBootstrapException - */ - public function bootstrap(): string - { - if (!$this->hasBootstrap()) { - throw new NoBootstrapException; - } - - return $this->bootstrap; - } - - public function cacheResult(): bool - { - return $this->cacheResult; - } - - /** - * @phpstan-assert-if-true !null $this->cacheDirectory - */ - public function hasCacheDirectory(): bool - { - return $this->cacheDirectory !== null; - } - - /** - * @throws NoCacheDirectoryException - */ - public function cacheDirectory(): string - { - if (!$this->hasCacheDirectory()) { - throw new NoCacheDirectoryException; - } - - return $this->cacheDirectory; - } - - /** - * @phpstan-assert-if-true !null $this->coverageCacheDirectory - */ - public function hasCoverageCacheDirectory(): bool - { - return $this->coverageCacheDirectory !== null; - } - - /** - * @throws NoCoverageCacheDirectoryException - */ - public function coverageCacheDirectory(): string - { - if (!$this->hasCoverageCacheDirectory()) { - throw new NoCoverageCacheDirectoryException; - } - - return $this->coverageCacheDirectory; - } - - public function source(): Source - { - return $this->source; - } - - public function testResultCacheFile(): string - { - return $this->testResultCacheFile; - } - - public function ignoreDeprecatedCodeUnitsFromCodeCoverage(): bool - { - return $this->ignoreDeprecatedCodeUnitsFromCodeCoverage; - } - - public function disableCodeCoverageIgnore(): bool - { - return $this->disableCodeCoverageIgnore; - } - - public function pathCoverage(): bool - { - return $this->pathCoverage; - } - - public function hasCoverageReport(): bool - { - return $this->hasCoverageClover() || - $this->hasCoverageCobertura() || - $this->hasCoverageCrap4j() || - $this->hasCoverageHtml() || - $this->hasCoveragePhp() || - $this->hasCoverageText() || - $this->hasCoverageXml(); - } - - /** - * @phpstan-assert-if-true !null $this->coverageClover - */ - public function hasCoverageClover(): bool - { - return $this->coverageClover !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageClover(): string - { - if (!$this->hasCoverageClover()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageClover; - } - - /** - * @phpstan-assert-if-true !null $this->coverageCobertura - */ - public function hasCoverageCobertura(): bool - { - return $this->coverageCobertura !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageCobertura(): string - { - if (!$this->hasCoverageCobertura()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageCobertura; - } - - /** - * @phpstan-assert-if-true !null $this->coverageCrap4j - */ - public function hasCoverageCrap4j(): bool - { - return $this->coverageCrap4j !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageCrap4j(): string - { - if (!$this->hasCoverageCrap4j()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageCrap4j; - } - - public function coverageCrap4jThreshold(): int - { - return $this->coverageCrap4jThreshold; - } - - /** - * @phpstan-assert-if-true !null $this->coverageHtml - */ - public function hasCoverageHtml(): bool - { - return $this->coverageHtml !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageHtml(): string - { - if (!$this->hasCoverageHtml()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageHtml; - } - - public function coverageHtmlLowUpperBound(): int - { - return $this->coverageHtmlLowUpperBound; - } - - public function coverageHtmlHighLowerBound(): int - { - return $this->coverageHtmlHighLowerBound; - } - - public function coverageHtmlColorSuccessLow(): string - { - return $this->coverageHtmlColorSuccessLow; - } - - public function coverageHtmlColorSuccessMedium(): string - { - return $this->coverageHtmlColorSuccessMedium; - } - - public function coverageHtmlColorSuccessHigh(): string - { - return $this->coverageHtmlColorSuccessHigh; - } - - public function coverageHtmlColorWarning(): string - { - return $this->coverageHtmlColorWarning; - } - - public function coverageHtmlColorDanger(): string - { - return $this->coverageHtmlColorDanger; - } - - /** - * @phpstan-assert-if-true !null $this->coverageHtmlCustomCssFile - */ - public function hasCoverageHtmlCustomCssFile(): bool - { - return $this->coverageHtmlCustomCssFile !== null; - } - - /** - * @throws NoCustomCssFileException - */ - public function coverageHtmlCustomCssFile(): string - { - if (!$this->hasCoverageHtmlCustomCssFile()) { - throw new NoCustomCssFileException; - } - - return $this->coverageHtmlCustomCssFile; - } - - /** - * @phpstan-assert-if-true !null $this->coveragePhp - */ - public function hasCoveragePhp(): bool - { - return $this->coveragePhp !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coveragePhp(): string - { - if (!$this->hasCoveragePhp()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coveragePhp; - } - - /** - * @phpstan-assert-if-true !null $this->coverageText - */ - public function hasCoverageText(): bool - { - return $this->coverageText !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageText(): string - { - if (!$this->hasCoverageText()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageText; - } - - public function coverageTextShowUncoveredFiles(): bool - { - return $this->coverageTextShowUncoveredFiles; - } - - public function coverageTextShowOnlySummary(): bool - { - return $this->coverageTextShowOnlySummary; - } - - /** - * @phpstan-assert-if-true !null $this->coverageXml - */ - public function hasCoverageXml(): bool - { - return $this->coverageXml !== null; - } - - /** - * @throws CodeCoverageReportNotConfiguredException - */ - public function coverageXml(): string - { - if (!$this->hasCoverageXml()) { - throw new CodeCoverageReportNotConfiguredException; - } - - return $this->coverageXml; - } - - public function failOnAllIssues(): bool - { - return $this->failOnAllIssues; - } - - public function failOnDeprecation(): bool - { - return $this->failOnDeprecation; - } - - public function failOnPhpunitDeprecation(): bool - { - return $this->failOnPhpunitDeprecation; - } - - public function failOnPhpunitWarning(): bool - { - return $this->failOnPhpunitWarning; - } - - public function failOnEmptyTestSuite(): bool - { - return $this->failOnEmptyTestSuite; - } - - public function failOnIncomplete(): bool - { - return $this->failOnIncomplete; - } - - public function failOnNotice(): bool - { - return $this->failOnNotice; - } - - public function failOnRisky(): bool - { - return $this->failOnRisky; - } - - public function failOnSkipped(): bool - { - return $this->failOnSkipped; - } - - public function failOnWarning(): bool - { - return $this->failOnWarning; - } - - public function doNotFailOnDeprecation(): bool - { - return $this->doNotFailOnDeprecation; - } - - public function doNotFailOnPhpunitDeprecation(): bool - { - return $this->doNotFailOnPhpunitDeprecation; - } - - public function doNotFailOnPhpunitWarning(): bool - { - return $this->doNotFailOnPhpunitWarning; - } - - public function doNotFailOnEmptyTestSuite(): bool - { - return $this->doNotFailOnEmptyTestSuite; - } - - public function doNotFailOnIncomplete(): bool - { - return $this->doNotFailOnIncomplete; - } - - public function doNotFailOnNotice(): bool - { - return $this->doNotFailOnNotice; - } - - public function doNotFailOnRisky(): bool - { - return $this->doNotFailOnRisky; - } - - public function doNotFailOnSkipped(): bool - { - return $this->doNotFailOnSkipped; - } - - public function doNotFailOnWarning(): bool - { - return $this->doNotFailOnWarning; - } - - public function stopOnDefect(): bool - { - return $this->stopOnDefect; - } - - public function stopOnDeprecation(): bool - { - return $this->stopOnDeprecation; - } - - /** - * @phpstan-assert-if-true !null $this->specificDeprecationToStopOn - */ - public function hasSpecificDeprecationToStopOn(): bool - { - return $this->specificDeprecationToStopOn !== null; - } - - /** - * @throws SpecificDeprecationToStopOnNotConfiguredException - */ - public function specificDeprecationToStopOn(): string - { - if (!$this->hasSpecificDeprecationToStopOn()) { - throw new SpecificDeprecationToStopOnNotConfiguredException; - } - - return $this->specificDeprecationToStopOn; - } - - public function stopOnError(): bool - { - return $this->stopOnError; - } - - public function stopOnFailure(): bool - { - return $this->stopOnFailure; - } - - public function stopOnIncomplete(): bool - { - return $this->stopOnIncomplete; - } - - public function stopOnNotice(): bool - { - return $this->stopOnNotice; - } - - public function stopOnRisky(): bool - { - return $this->stopOnRisky; - } - - public function stopOnSkipped(): bool - { - return $this->stopOnSkipped; - } - - public function stopOnWarning(): bool - { - return $this->stopOnWarning; - } - - public function outputToStandardErrorStream(): bool - { - return $this->outputToStandardErrorStream; - } - - public function columns(): int - { - return $this->columns; - } - - public function noExtensions(): bool - { - return $this->noExtensions; - } - - /** - * @phpstan-assert-if-true !null $this->pharExtensionDirectory - */ - public function hasPharExtensionDirectory(): bool - { - return $this->pharExtensionDirectory !== null; - } - - /** - * @throws NoPharExtensionDirectoryException - * - * @return non-empty-string - */ - public function pharExtensionDirectory(): string - { - if (!$this->hasPharExtensionDirectory()) { - throw new NoPharExtensionDirectoryException; - } - - return $this->pharExtensionDirectory; - } - - /** - * @return list}> - */ - public function extensionBootstrappers(): array - { - return $this->extensionBootstrappers; - } - - public function backupGlobals(): bool - { - return $this->backupGlobals; - } - - public function backupStaticProperties(): bool - { - return $this->backupStaticProperties; - } - - public function beStrictAboutChangesToGlobalState(): bool - { - return $this->beStrictAboutChangesToGlobalState; - } - - public function colors(): bool - { - return $this->colors; - } - - public function processIsolation(): bool - { - return $this->processIsolation; - } - - public function enforceTimeLimit(): bool - { - return $this->enforceTimeLimit; - } - - public function defaultTimeLimit(): int - { - return $this->defaultTimeLimit; - } - - public function timeoutForSmallTests(): int - { - return $this->timeoutForSmallTests; - } - - public function timeoutForMediumTests(): int - { - return $this->timeoutForMediumTests; - } - - public function timeoutForLargeTests(): int - { - return $this->timeoutForLargeTests; - } - - public function reportUselessTests(): bool - { - return $this->reportUselessTests; - } - - public function strictCoverage(): bool - { - return $this->strictCoverage; - } - - public function disallowTestOutput(): bool - { - return $this->disallowTestOutput; - } - - public function displayDetailsOnAllIssues(): bool - { - return $this->displayDetailsOnAllIssues; - } - - public function displayDetailsOnIncompleteTests(): bool - { - return $this->displayDetailsOnIncompleteTests; - } - - public function displayDetailsOnSkippedTests(): bool - { - return $this->displayDetailsOnSkippedTests; - } - - public function displayDetailsOnTestsThatTriggerDeprecations(): bool - { - return $this->displayDetailsOnTestsThatTriggerDeprecations; - } - - public function displayDetailsOnPhpunitDeprecations(): bool - { - return $this->displayDetailsOnPhpunitDeprecations; - } - - public function displayDetailsOnTestsThatTriggerErrors(): bool - { - return $this->displayDetailsOnTestsThatTriggerErrors; - } - - public function displayDetailsOnTestsThatTriggerNotices(): bool - { - return $this->displayDetailsOnTestsThatTriggerNotices; - } - - public function displayDetailsOnTestsThatTriggerWarnings(): bool - { - return $this->displayDetailsOnTestsThatTriggerWarnings; - } - - public function reverseDefectList(): bool - { - return $this->reverseDefectList; - } - - public function requireCoverageMetadata(): bool - { - return $this->requireCoverageMetadata; - } - - public function noProgress(): bool - { - return $this->noProgress; - } - - public function noResults(): bool - { - return $this->noResults; - } - - public function noOutput(): bool - { - return $this->noOutput; - } - - public function executionOrder(): int - { - return $this->executionOrder; - } - - public function executionOrderDefects(): int - { - return $this->executionOrderDefects; - } - - public function resolveDependencies(): bool - { - return $this->resolveDependencies; - } - - /** - * @phpstan-assert-if-true !null $this->logfileTeamcity - */ - public function hasLogfileTeamcity(): bool - { - return $this->logfileTeamcity !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logfileTeamcity(): string - { - if (!$this->hasLogfileTeamcity()) { - throw new LoggingNotConfiguredException; - } - - return $this->logfileTeamcity; - } - - /** - * @phpstan-assert-if-true !null $this->logfileJunit - */ - public function hasLogfileJunit(): bool - { - return $this->logfileJunit !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logfileJunit(): string - { - if (!$this->hasLogfileJunit()) { - throw new LoggingNotConfiguredException; - } - - return $this->logfileJunit; - } - - /** - * @phpstan-assert-if-true !null $this->logfileTestdoxHtml - */ - public function hasLogfileTestdoxHtml(): bool - { - return $this->logfileTestdoxHtml !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logfileTestdoxHtml(): string - { - if (!$this->hasLogfileTestdoxHtml()) { - throw new LoggingNotConfiguredException; - } - - return $this->logfileTestdoxHtml; - } - - /** - * @phpstan-assert-if-true !null $this->logfileTestdoxText - */ - public function hasLogfileTestdoxText(): bool - { - return $this->logfileTestdoxText !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logfileTestdoxText(): string - { - if (!$this->hasLogfileTestdoxText()) { - throw new LoggingNotConfiguredException; - } - - return $this->logfileTestdoxText; - } - - /** - * @phpstan-assert-if-true !null $this->logEventsText - */ - public function hasLogEventsText(): bool - { - return $this->logEventsText !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logEventsText(): string - { - if (!$this->hasLogEventsText()) { - throw new LoggingNotConfiguredException; - } - - return $this->logEventsText; - } - - /** - * @phpstan-assert-if-true !null $this->logEventsVerboseText - */ - public function hasLogEventsVerboseText(): bool - { - return $this->logEventsVerboseText !== null; - } - - /** - * @throws LoggingNotConfiguredException - */ - public function logEventsVerboseText(): string - { - if (!$this->hasLogEventsVerboseText()) { - throw new LoggingNotConfiguredException; - } - - return $this->logEventsVerboseText; - } - - public function outputIsTeamCity(): bool - { - return $this->teamCityOutput; - } - - public function outputIsTestDox(): bool - { - return $this->testDoxOutput; - } - - public function testDoxOutputWithSummary(): bool - { - return $this->testDoxOutputSummary; - } - - /** - * @phpstan-assert-if-true !empty $this->testsCovering - */ - public function hasTestsCovering(): bool - { - return !empty($this->testsCovering); - } - - /** - * @throws FilterNotConfiguredException - * - * @return list - */ - public function testsCovering(): array - { - if (!$this->hasTestsCovering()) { - throw new FilterNotConfiguredException; - } - - return $this->testsCovering; - } - - /** - * @phpstan-assert-if-true !empty $this->testsUsing - */ - public function hasTestsUsing(): bool - { - return !empty($this->testsUsing); - } - - /** - * @throws FilterNotConfiguredException - * - * @return list - */ - public function testsUsing(): array - { - if (!$this->hasTestsUsing()) { - throw new FilterNotConfiguredException; - } - - return $this->testsUsing; - } - - /** - * @phpstan-assert-if-true !empty $this->testsRequiringPhpExtension - */ - public function hasTestsRequiringPhpExtension(): bool - { - return !empty($this->testsRequiringPhpExtension); - } - - /** - * @throws FilterNotConfiguredException - * - * @return non-empty-list - */ - public function testsRequiringPhpExtension(): array - { - if (!$this->hasTestsRequiringPhpExtension()) { - throw new FilterNotConfiguredException; - } - - return $this->testsRequiringPhpExtension; - } - - /** - * @phpstan-assert-if-true !null $this->filter - */ - public function hasFilter(): bool - { - return $this->filter !== null; - } - - /** - * @throws FilterNotConfiguredException - */ - public function filter(): string - { - if (!$this->hasFilter()) { - throw new FilterNotConfiguredException; - } - - return $this->filter; - } - - /** - * @phpstan-assert-if-true !null $this->excludeFilter - */ - public function hasExcludeFilter(): bool - { - return $this->excludeFilter !== null; - } - - /** - * @throws FilterNotConfiguredException - */ - public function excludeFilter(): string - { - if (!$this->hasExcludeFilter()) { - throw new FilterNotConfiguredException; - } - - return $this->excludeFilter; - } - - /** - * @phpstan-assert-if-true !empty $this->groups - */ - public function hasGroups(): bool - { - return !empty($this->groups); - } - - /** - * @throws FilterNotConfiguredException - * - * @return non-empty-list - */ - public function groups(): array - { - if (!$this->hasGroups()) { - throw new FilterNotConfiguredException; - } - - return $this->groups; - } - - /** - * @phpstan-assert-if-true !empty $this->excludeGroups - */ - public function hasExcludeGroups(): bool - { - return !empty($this->excludeGroups); - } - - /** - * @throws FilterNotConfiguredException - * - * @return non-empty-list - */ - public function excludeGroups(): array - { - if (!$this->hasExcludeGroups()) { - throw new FilterNotConfiguredException; - } - - return $this->excludeGroups; - } - - public function randomOrderSeed(): int - { - return $this->randomOrderSeed; - } - - public function includeUncoveredFiles(): bool - { - return $this->includeUncoveredFiles; - } - - public function testSuite(): TestSuiteCollection - { - return $this->testSuite; - } - - public function includeTestSuite(): string - { - return $this->includeTestSuite; - } - - public function excludeTestSuite(): string - { - return $this->excludeTestSuite; - } - - /** - * @phpstan-assert-if-true !null $this->defaultTestSuite - */ - public function hasDefaultTestSuite(): bool - { - return $this->defaultTestSuite !== null; - } - - /** - * @throws NoDefaultTestSuiteException - */ - public function defaultTestSuite(): string - { - if (!$this->hasDefaultTestSuite()) { - throw new NoDefaultTestSuiteException; - } - - return $this->defaultTestSuite; - } - - /** - * @return non-empty-list - */ - public function testSuffixes(): array - { - return $this->testSuffixes; - } - - public function php(): Php - { - return $this->php; - } - - public function controlGarbageCollector(): bool - { - return $this->controlGarbageCollector; - } - - public function numberOfTestsBeforeGarbageCollection(): int - { - return $this->numberOfTestsBeforeGarbageCollection; - } - - /** - * @phpstan-assert-if-true !null $this->generateBaseline - */ - public function hasGenerateBaseline(): bool - { - return $this->generateBaseline !== null; - } - - /** - * @throws NoBaselineException - */ - public function generateBaseline(): string - { - if (!$this->hasGenerateBaseline()) { - throw new NoBaselineException; - } - - return $this->generateBaseline; - } - - public function debug(): bool - { - return $this->debug; - } - - /** - * @return non-negative-int - */ - public function shortenArraysForExportThreshold(): int - { - return $this->shortenArraysForExportThreshold; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php deleted file mode 100644 index 6eef052..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\TextUI\Configuration\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CannotFindSchemaException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php deleted file mode 100644 index 83faa0a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/CodeCoverageReportNotConfiguredException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CodeCoverageReportNotConfiguredException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php deleted file mode 100644 index e95e094..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/ConfigurationCannotBeBuiltException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ConfigurationCannotBeBuiltException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php deleted file mode 100644 index dc49125..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/Exception.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends \PHPUnit\TextUI\Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php deleted file mode 100644 index 5ae4331..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/FilterNotConfiguredException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class FilterNotConfiguredException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php deleted file mode 100644 index 63cf9b0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class LoggingNotConfiguredException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php deleted file mode 100644 index 7611dce..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoBaselineException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php deleted file mode 100644 index ff1bddf..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoBootstrapException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php deleted file mode 100644 index 215fe21..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoCacheDirectoryException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php deleted file mode 100644 index f8ceb80..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoConfigurationFileException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoConfigurationFileException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php deleted file mode 100644 index 113950b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCoverageCacheDirectoryException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoCoverageCacheDirectoryException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php deleted file mode 100644 index e524c8d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCustomCssFileException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoCustomCssFileException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php deleted file mode 100644 index 96e7a7a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoDefaultTestSuiteException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoDefaultTestSuiteException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php deleted file mode 100644 index ce573ca..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/NoPharExtensionDirectoryException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class NoPharExtensionDirectoryException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/SpecificDeprecationToStopOnNotConfiguredException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/SpecificDeprecationToStopOnNotConfiguredException.php deleted file mode 100644 index 73074db..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Exception/SpecificDeprecationToStopOnNotConfiguredException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SpecificDeprecationToStopOnNotConfiguredException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php deleted file mode 100644 index 9e8ed91..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php +++ /dev/null @@ -1,1018 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use const DIRECTORY_SEPARATOR; -use const PATH_SEPARATOR; -use function array_diff; -use function assert; -use function dirname; -use function explode; -use function is_int; -use function realpath; -use function time; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\TextUI\CliArguments\Configuration as CliConfiguration; -use PHPUnit\TextUI\CliArguments\Exception; -use PHPUnit\TextUI\XmlConfiguration\Configuration as XmlConfiguration; -use PHPUnit\TextUI\XmlConfiguration\LoadedFromFileConfiguration; -use PHPUnit\TextUI\XmlConfiguration\SchemaDetector; -use PHPUnit\Util\Filesystem; -use SebastianBergmann\CodeCoverage\Report\Html\Colors; -use SebastianBergmann\CodeCoverage\Report\Thresholds; -use SebastianBergmann\Environment\Console; -use SebastianBergmann\Invoker\Invoker; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Merger -{ - /** - * @throws \PHPUnit\TextUI\XmlConfiguration\Exception - * @throws Exception - * @throws NoCustomCssFileException - */ - public function merge(CliConfiguration $cliConfiguration, XmlConfiguration $xmlConfiguration): Configuration - { - $configurationFile = null; - - if ($xmlConfiguration->wasLoadedFromFile()) { - assert($xmlConfiguration instanceof LoadedFromFileConfiguration); - - $configurationFile = $xmlConfiguration->filename(); - } - - $bootstrap = null; - - if ($cliConfiguration->hasBootstrap()) { - $bootstrap = $cliConfiguration->bootstrap(); - } elseif ($xmlConfiguration->phpunit()->hasBootstrap()) { - $bootstrap = $xmlConfiguration->phpunit()->bootstrap(); - } - - if ($cliConfiguration->hasCacheResult()) { - $cacheResult = $cliConfiguration->cacheResult(); - } else { - $cacheResult = $xmlConfiguration->phpunit()->cacheResult(); - } - - $cacheDirectory = null; - $coverageCacheDirectory = null; - - if ($cliConfiguration->hasCacheDirectory() && Filesystem::createDirectory($cliConfiguration->cacheDirectory())) { - $cacheDirectory = realpath($cliConfiguration->cacheDirectory()); - } elseif ($xmlConfiguration->phpunit()->hasCacheDirectory() && Filesystem::createDirectory($xmlConfiguration->phpunit()->cacheDirectory())) { - $cacheDirectory = realpath($xmlConfiguration->phpunit()->cacheDirectory()); - } - - if ($cacheDirectory !== null) { - $coverageCacheDirectory = $cacheDirectory . DIRECTORY_SEPARATOR . 'code-coverage'; - $testResultCacheFile = $cacheDirectory . DIRECTORY_SEPARATOR . 'test-results'; - } - - if (!isset($testResultCacheFile)) { - if ($xmlConfiguration->wasLoadedFromFile()) { - $testResultCacheFile = dirname(realpath($xmlConfiguration->filename())) . DIRECTORY_SEPARATOR . '.phpunit.result.cache'; - } else { - $candidate = realpath($_SERVER['PHP_SELF']); - - if ($candidate) { - $testResultCacheFile = dirname($candidate) . DIRECTORY_SEPARATOR . '.phpunit.result.cache'; - } else { - $testResultCacheFile = '.phpunit.result.cache'; - } - } - } - - if ($cliConfiguration->hasDisableCodeCoverageIgnore()) { - $disableCodeCoverageIgnore = $cliConfiguration->disableCodeCoverageIgnore(); - } else { - $disableCodeCoverageIgnore = $xmlConfiguration->codeCoverage()->disableCodeCoverageIgnore(); - } - - if ($cliConfiguration->hasFailOnAllIssues()) { - $failOnAllIssues = $cliConfiguration->failOnAllIssues(); - } else { - $failOnAllIssues = $xmlConfiguration->phpunit()->failOnAllIssues(); - } - - if ($cliConfiguration->hasFailOnDeprecation()) { - $failOnDeprecation = $cliConfiguration->failOnDeprecation(); - } else { - $failOnDeprecation = $xmlConfiguration->phpunit()->failOnDeprecation(); - } - - if ($cliConfiguration->hasFailOnPhpunitDeprecation()) { - $failOnPhpunitDeprecation = $cliConfiguration->failOnPhpunitDeprecation(); - } else { - $failOnPhpunitDeprecation = $xmlConfiguration->phpunit()->failOnPhpunitDeprecation(); - } - - if ($cliConfiguration->hasFailOnPhpunitWarning()) { - $failOnPhpunitWarning = $cliConfiguration->failOnPhpunitWarning(); - } else { - $failOnPhpunitWarning = $xmlConfiguration->phpunit()->failOnPhpunitWarning(); - } - - if ($cliConfiguration->hasFailOnEmptyTestSuite()) { - $failOnEmptyTestSuite = $cliConfiguration->failOnEmptyTestSuite(); - } else { - $failOnEmptyTestSuite = $xmlConfiguration->phpunit()->failOnEmptyTestSuite(); - } - - if ($cliConfiguration->hasFailOnIncomplete()) { - $failOnIncomplete = $cliConfiguration->failOnIncomplete(); - } else { - $failOnIncomplete = $xmlConfiguration->phpunit()->failOnIncomplete(); - } - - if ($cliConfiguration->hasFailOnNotice()) { - $failOnNotice = $cliConfiguration->failOnNotice(); - } else { - $failOnNotice = $xmlConfiguration->phpunit()->failOnNotice(); - } - - if ($cliConfiguration->hasFailOnRisky()) { - $failOnRisky = $cliConfiguration->failOnRisky(); - } else { - $failOnRisky = $xmlConfiguration->phpunit()->failOnRisky(); - } - - if ($cliConfiguration->hasFailOnSkipped()) { - $failOnSkipped = $cliConfiguration->failOnSkipped(); - } else { - $failOnSkipped = $xmlConfiguration->phpunit()->failOnSkipped(); - } - - if ($cliConfiguration->hasFailOnWarning()) { - $failOnWarning = $cliConfiguration->failOnWarning(); - } else { - $failOnWarning = $xmlConfiguration->phpunit()->failOnWarning(); - } - - $doNotFailOnDeprecation = false; - - if ($cliConfiguration->hasDoNotFailOnDeprecation()) { - $doNotFailOnDeprecation = $cliConfiguration->doNotFailOnDeprecation(); - } - - $doNotFailOnPhpunitDeprecation = false; - - if ($cliConfiguration->hasDoNotFailOnPhpunitDeprecation()) { - $doNotFailOnPhpunitDeprecation = $cliConfiguration->doNotFailOnPhpunitDeprecation(); - } - - $doNotFailOnPhpunitWarning = false; - - if ($cliConfiguration->hasDoNotFailOnPhpunitWarning()) { - $doNotFailOnPhpunitWarning = $cliConfiguration->doNotFailOnPhpunitWarning(); - } - - $doNotFailOnEmptyTestSuite = false; - - if ($cliConfiguration->hasDoNotFailOnEmptyTestSuite()) { - $doNotFailOnEmptyTestSuite = $cliConfiguration->doNotFailOnEmptyTestSuite(); - } - - $doNotFailOnIncomplete = false; - - if ($cliConfiguration->hasDoNotFailOnIncomplete()) { - $doNotFailOnIncomplete = $cliConfiguration->doNotFailOnIncomplete(); - } - - $doNotFailOnNotice = false; - - if ($cliConfiguration->hasDoNotFailOnNotice()) { - $doNotFailOnNotice = $cliConfiguration->doNotFailOnNotice(); - } - - $doNotFailOnRisky = false; - - if ($cliConfiguration->hasDoNotFailOnRisky()) { - $doNotFailOnRisky = $cliConfiguration->doNotFailOnRisky(); - } - - $doNotFailOnSkipped = false; - - if ($cliConfiguration->hasDoNotFailOnSkipped()) { - $doNotFailOnSkipped = $cliConfiguration->doNotFailOnSkipped(); - } - - $doNotFailOnWarning = false; - - if ($cliConfiguration->hasDoNotFailOnWarning()) { - $doNotFailOnWarning = $cliConfiguration->doNotFailOnWarning(); - } - - if ($cliConfiguration->hasStopOnDefect()) { - $stopOnDefect = $cliConfiguration->stopOnDefect(); - } else { - $stopOnDefect = $xmlConfiguration->phpunit()->stopOnDefect(); - } - - if ($cliConfiguration->hasStopOnDeprecation()) { - $stopOnDeprecation = $cliConfiguration->stopOnDeprecation(); - } else { - $stopOnDeprecation = $xmlConfiguration->phpunit()->stopOnDeprecation(); - } - - $specificDeprecationToStopOn = null; - - if ($cliConfiguration->hasSpecificDeprecationToStopOn()) { - $specificDeprecationToStopOn = $cliConfiguration->specificDeprecationToStopOn(); - } - - if ($cliConfiguration->hasStopOnError()) { - $stopOnError = $cliConfiguration->stopOnError(); - } else { - $stopOnError = $xmlConfiguration->phpunit()->stopOnError(); - } - - if ($cliConfiguration->hasStopOnFailure()) { - $stopOnFailure = $cliConfiguration->stopOnFailure(); - } else { - $stopOnFailure = $xmlConfiguration->phpunit()->stopOnFailure(); - } - - if ($cliConfiguration->hasStopOnIncomplete()) { - $stopOnIncomplete = $cliConfiguration->stopOnIncomplete(); - } else { - $stopOnIncomplete = $xmlConfiguration->phpunit()->stopOnIncomplete(); - } - - if ($cliConfiguration->hasStopOnNotice()) { - $stopOnNotice = $cliConfiguration->stopOnNotice(); - } else { - $stopOnNotice = $xmlConfiguration->phpunit()->stopOnNotice(); - } - - if ($cliConfiguration->hasStopOnRisky()) { - $stopOnRisky = $cliConfiguration->stopOnRisky(); - } else { - $stopOnRisky = $xmlConfiguration->phpunit()->stopOnRisky(); - } - - if ($cliConfiguration->hasStopOnSkipped()) { - $stopOnSkipped = $cliConfiguration->stopOnSkipped(); - } else { - $stopOnSkipped = $xmlConfiguration->phpunit()->stopOnSkipped(); - } - - if ($cliConfiguration->hasStopOnWarning()) { - $stopOnWarning = $cliConfiguration->stopOnWarning(); - } else { - $stopOnWarning = $xmlConfiguration->phpunit()->stopOnWarning(); - } - - if ($cliConfiguration->hasStderr() && $cliConfiguration->stderr()) { - $outputToStandardErrorStream = true; - } else { - $outputToStandardErrorStream = $xmlConfiguration->phpunit()->stderr(); - } - - if ($cliConfiguration->hasColumns()) { - $columns = $cliConfiguration->columns(); - } else { - $columns = $xmlConfiguration->phpunit()->columns(); - } - - if ($columns === 'max') { - $columns = (new Console)->getNumberOfColumns(); - } - - if ($columns < 16) { - $columns = 16; - - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'Less than 16 columns requested, number of columns set to 16', - ); - } - - assert(is_int($columns)); - - $noExtensions = false; - - if ($cliConfiguration->hasNoExtensions() && $cliConfiguration->noExtensions()) { - $noExtensions = true; - } - - $pharExtensionDirectory = null; - - if ($xmlConfiguration->phpunit()->hasExtensionsDirectory()) { - $pharExtensionDirectory = $xmlConfiguration->phpunit()->extensionsDirectory(); - } - - $extensionBootstrappers = []; - - if ($cliConfiguration->hasExtensions()) { - foreach ($cliConfiguration->extensions() as $extension) { - $extensionBootstrappers[] = [ - 'className' => $extension, - 'parameters' => [], - ]; - } - } - - foreach ($xmlConfiguration->extensions() as $extension) { - $extensionBootstrappers[] = [ - 'className' => $extension->className(), - 'parameters' => $extension->parameters(), - ]; - } - - if ($cliConfiguration->hasPathCoverage() && $cliConfiguration->pathCoverage()) { - $pathCoverage = $cliConfiguration->pathCoverage(); - } else { - $pathCoverage = $xmlConfiguration->codeCoverage()->pathCoverage(); - } - - $defaultColors = Colors::default(); - $defaultThresholds = Thresholds::default(); - - $coverageClover = null; - $coverageCobertura = null; - $coverageCrap4j = null; - $coverageCrap4jThreshold = 30; - $coverageHtml = null; - $coverageHtmlLowUpperBound = $defaultThresholds->lowUpperBound(); - $coverageHtmlHighLowerBound = $defaultThresholds->highLowerBound(); - $coverageHtmlColorSuccessLow = $defaultColors->successLow(); - $coverageHtmlColorSuccessMedium = $defaultColors->successMedium(); - $coverageHtmlColorSuccessHigh = $defaultColors->successHigh(); - $coverageHtmlColorWarning = $defaultColors->warning(); - $coverageHtmlColorDanger = $defaultColors->danger(); - $coverageHtmlCustomCssFile = null; - $coveragePhp = null; - $coverageText = null; - $coverageTextShowUncoveredFiles = false; - $coverageTextShowOnlySummary = false; - $coverageXml = null; - $coverageFromXmlConfiguration = true; - - if ($cliConfiguration->hasNoCoverage() && $cliConfiguration->noCoverage()) { - $coverageFromXmlConfiguration = false; - } - - if ($cliConfiguration->hasCoverageClover()) { - $coverageClover = $cliConfiguration->coverageClover(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasClover()) { - $coverageClover = $xmlConfiguration->codeCoverage()->clover()->target()->path(); - } - - if ($cliConfiguration->hasCoverageCobertura()) { - $coverageCobertura = $cliConfiguration->coverageCobertura(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasCobertura()) { - $coverageCobertura = $xmlConfiguration->codeCoverage()->cobertura()->target()->path(); - } - - if ($xmlConfiguration->codeCoverage()->hasCrap4j()) { - $coverageCrap4jThreshold = $xmlConfiguration->codeCoverage()->crap4j()->threshold(); - } - - if ($cliConfiguration->hasCoverageCrap4J()) { - $coverageCrap4j = $cliConfiguration->coverageCrap4J(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasCrap4j()) { - $coverageCrap4j = $xmlConfiguration->codeCoverage()->crap4j()->target()->path(); - } - - if ($xmlConfiguration->codeCoverage()->hasHtml()) { - $coverageHtmlHighLowerBound = $xmlConfiguration->codeCoverage()->html()->highLowerBound(); - $coverageHtmlLowUpperBound = $xmlConfiguration->codeCoverage()->html()->lowUpperBound(); - - if ($coverageHtmlLowUpperBound > $coverageHtmlHighLowerBound) { - $coverageHtmlLowUpperBound = $defaultThresholds->lowUpperBound(); - $coverageHtmlHighLowerBound = $defaultThresholds->highLowerBound(); - } - - $coverageHtmlColorSuccessLow = $xmlConfiguration->codeCoverage()->html()->colorSuccessLow(); - $coverageHtmlColorSuccessMedium = $xmlConfiguration->codeCoverage()->html()->colorSuccessMedium(); - $coverageHtmlColorSuccessHigh = $xmlConfiguration->codeCoverage()->html()->colorSuccessHigh(); - $coverageHtmlColorWarning = $xmlConfiguration->codeCoverage()->html()->colorWarning(); - $coverageHtmlColorDanger = $xmlConfiguration->codeCoverage()->html()->colorDanger(); - - if ($xmlConfiguration->codeCoverage()->html()->hasCustomCssFile()) { - $coverageHtmlCustomCssFile = $xmlConfiguration->codeCoverage()->html()->customCssFile(); - } - } - - if ($cliConfiguration->hasCoverageHtml()) { - $coverageHtml = $cliConfiguration->coverageHtml(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasHtml()) { - $coverageHtml = $xmlConfiguration->codeCoverage()->html()->target()->path(); - } - - if ($cliConfiguration->hasCoveragePhp()) { - $coveragePhp = $cliConfiguration->coveragePhp(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasPhp()) { - $coveragePhp = $xmlConfiguration->codeCoverage()->php()->target()->path(); - } - - if ($xmlConfiguration->codeCoverage()->hasText()) { - $coverageTextShowUncoveredFiles = $xmlConfiguration->codeCoverage()->text()->showUncoveredFiles(); - $coverageTextShowOnlySummary = $xmlConfiguration->codeCoverage()->text()->showOnlySummary(); - } - - if ($cliConfiguration->hasCoverageTextShowUncoveredFiles()) { - $coverageTextShowUncoveredFiles = $cliConfiguration->coverageTextShowUncoveredFiles(); - } - - if ($cliConfiguration->hasCoverageTextShowOnlySummary()) { - $coverageTextShowOnlySummary = $cliConfiguration->coverageTextShowOnlySummary(); - } - - if ($cliConfiguration->hasCoverageText()) { - $coverageText = $cliConfiguration->coverageText(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasText()) { - $coverageText = $xmlConfiguration->codeCoverage()->text()->target()->path(); - } - - if ($cliConfiguration->hasCoverageXml()) { - $coverageXml = $cliConfiguration->coverageXml(); - } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasXml()) { - $coverageXml = $xmlConfiguration->codeCoverage()->xml()->target()->path(); - } - - if ($cliConfiguration->hasBackupGlobals()) { - $backupGlobals = $cliConfiguration->backupGlobals(); - } else { - $backupGlobals = $xmlConfiguration->phpunit()->backupGlobals(); - } - - if ($cliConfiguration->hasBackupStaticProperties()) { - $backupStaticProperties = $cliConfiguration->backupStaticProperties(); - } else { - $backupStaticProperties = $xmlConfiguration->phpunit()->backupStaticProperties(); - } - - if ($cliConfiguration->hasBeStrictAboutChangesToGlobalState()) { - $beStrictAboutChangesToGlobalState = $cliConfiguration->beStrictAboutChangesToGlobalState(); - } else { - $beStrictAboutChangesToGlobalState = $xmlConfiguration->phpunit()->beStrictAboutChangesToGlobalState(); - } - - if ($cliConfiguration->hasProcessIsolation()) { - $processIsolation = $cliConfiguration->processIsolation(); - } else { - $processIsolation = $xmlConfiguration->phpunit()->processIsolation(); - } - - if ($cliConfiguration->hasEnforceTimeLimit()) { - $enforceTimeLimit = $cliConfiguration->enforceTimeLimit(); - } else { - $enforceTimeLimit = $xmlConfiguration->phpunit()->enforceTimeLimit(); - } - - if ($enforceTimeLimit && !(new Invoker)->canInvokeWithTimeout()) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'The pcntl extension is required for enforcing time limits', - ); - } - - if ($cliConfiguration->hasDefaultTimeLimit()) { - $defaultTimeLimit = $cliConfiguration->defaultTimeLimit(); - } else { - $defaultTimeLimit = $xmlConfiguration->phpunit()->defaultTimeLimit(); - } - - $timeoutForSmallTests = $xmlConfiguration->phpunit()->timeoutForSmallTests(); - $timeoutForMediumTests = $xmlConfiguration->phpunit()->timeoutForMediumTests(); - $timeoutForLargeTests = $xmlConfiguration->phpunit()->timeoutForLargeTests(); - - if ($cliConfiguration->hasReportUselessTests()) { - $reportUselessTests = $cliConfiguration->reportUselessTests(); - } else { - $reportUselessTests = $xmlConfiguration->phpunit()->beStrictAboutTestsThatDoNotTestAnything(); - } - - if ($cliConfiguration->hasStrictCoverage()) { - $strictCoverage = $cliConfiguration->strictCoverage(); - } else { - $strictCoverage = $xmlConfiguration->phpunit()->beStrictAboutCoverageMetadata(); - } - - if ($cliConfiguration->hasDisallowTestOutput()) { - $disallowTestOutput = $cliConfiguration->disallowTestOutput(); - } else { - $disallowTestOutput = $xmlConfiguration->phpunit()->beStrictAboutOutputDuringTests(); - } - - if ($cliConfiguration->hasDisplayDetailsOnAllIssues()) { - $displayDetailsOnAllIssues = $cliConfiguration->displayDetailsOnAllIssues(); - } else { - $displayDetailsOnAllIssues = $xmlConfiguration->phpunit()->displayDetailsOnAllIssues(); - } - - if ($cliConfiguration->hasDisplayDetailsOnIncompleteTests()) { - $displayDetailsOnIncompleteTests = $cliConfiguration->displayDetailsOnIncompleteTests(); - } else { - $displayDetailsOnIncompleteTests = $xmlConfiguration->phpunit()->displayDetailsOnIncompleteTests(); - } - - if ($cliConfiguration->hasDisplayDetailsOnSkippedTests()) { - $displayDetailsOnSkippedTests = $cliConfiguration->displayDetailsOnSkippedTests(); - } else { - $displayDetailsOnSkippedTests = $xmlConfiguration->phpunit()->displayDetailsOnSkippedTests(); - } - - if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerDeprecations()) { - $displayDetailsOnTestsThatTriggerDeprecations = $cliConfiguration->displayDetailsOnTestsThatTriggerDeprecations(); - } else { - $displayDetailsOnTestsThatTriggerDeprecations = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerDeprecations(); - } - - if ($cliConfiguration->hasDisplayDetailsOnPhpunitDeprecations()) { - $displayDetailsOnPhpunitDeprecations = $cliConfiguration->displayDetailsOnPhpunitDeprecations(); - } else { - $displayDetailsOnPhpunitDeprecations = $xmlConfiguration->phpunit()->displayDetailsOnPhpunitDeprecations(); - } - - if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerErrors()) { - $displayDetailsOnTestsThatTriggerErrors = $cliConfiguration->displayDetailsOnTestsThatTriggerErrors(); - } else { - $displayDetailsOnTestsThatTriggerErrors = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerErrors(); - } - - if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerNotices()) { - $displayDetailsOnTestsThatTriggerNotices = $cliConfiguration->displayDetailsOnTestsThatTriggerNotices(); - } else { - $displayDetailsOnTestsThatTriggerNotices = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerNotices(); - } - - if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerWarnings()) { - $displayDetailsOnTestsThatTriggerWarnings = $cliConfiguration->displayDetailsOnTestsThatTriggerWarnings(); - } else { - $displayDetailsOnTestsThatTriggerWarnings = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerWarnings(); - } - - if ($cliConfiguration->hasReverseList()) { - $reverseDefectList = $cliConfiguration->reverseList(); - } else { - $reverseDefectList = $xmlConfiguration->phpunit()->reverseDefectList(); - } - - $requireCoverageMetadata = $xmlConfiguration->phpunit()->requireCoverageMetadata(); - - if ($cliConfiguration->hasExecutionOrder()) { - $executionOrder = $cliConfiguration->executionOrder(); - } else { - $executionOrder = $xmlConfiguration->phpunit()->executionOrder(); - } - - $executionOrderDefects = TestSuiteSorter::ORDER_DEFAULT; - - if ($cliConfiguration->hasExecutionOrderDefects()) { - $executionOrderDefects = $cliConfiguration->executionOrderDefects(); - } elseif ($xmlConfiguration->phpunit()->defectsFirst()) { - $executionOrderDefects = TestSuiteSorter::ORDER_DEFECTS_FIRST; - } - - if ($cliConfiguration->hasResolveDependencies()) { - $resolveDependencies = $cliConfiguration->resolveDependencies(); - } else { - $resolveDependencies = $xmlConfiguration->phpunit()->resolveDependencies(); - } - - $colors = false; - $colorsSupported = (new Console)->hasColorSupport(); - - if ($cliConfiguration->hasColors()) { - if ($cliConfiguration->colors() === Configuration::COLOR_ALWAYS) { - $colors = true; - } elseif ($colorsSupported && $cliConfiguration->colors() === Configuration::COLOR_AUTO) { - $colors = true; - } - } elseif ($xmlConfiguration->phpunit()->colors() === Configuration::COLOR_ALWAYS) { - $colors = true; - } elseif ($colorsSupported && $xmlConfiguration->phpunit()->colors() === Configuration::COLOR_AUTO) { - $colors = true; - } - - $logfileTeamcity = null; - $logfileJunit = null; - $logfileTestdoxHtml = null; - $logfileTestdoxText = null; - $loggingFromXmlConfiguration = true; - - if ($cliConfiguration->hasNoLogging() && $cliConfiguration->noLogging()) { - $loggingFromXmlConfiguration = false; - } - - if ($cliConfiguration->hasTeamcityLogfile()) { - $logfileTeamcity = $cliConfiguration->teamcityLogfile(); - } elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasTeamCity()) { - $logfileTeamcity = $xmlConfiguration->logging()->teamCity()->target()->path(); - } - - if ($cliConfiguration->hasJunitLogfile()) { - $logfileJunit = $cliConfiguration->junitLogfile(); - } elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasJunit()) { - $logfileJunit = $xmlConfiguration->logging()->junit()->target()->path(); - } - - if ($cliConfiguration->hasTestdoxHtmlFile()) { - $logfileTestdoxHtml = $cliConfiguration->testdoxHtmlFile(); - } elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasTestDoxHtml()) { - $logfileTestdoxHtml = $xmlConfiguration->logging()->testDoxHtml()->target()->path(); - } - - if ($cliConfiguration->hasTestdoxTextFile()) { - $logfileTestdoxText = $cliConfiguration->testdoxTextFile(); - } elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasTestDoxText()) { - $logfileTestdoxText = $xmlConfiguration->logging()->testDoxText()->target()->path(); - } - - $logEventsText = null; - - if ($cliConfiguration->hasLogEventsText()) { - $logEventsText = $cliConfiguration->logEventsText(); - } - - $logEventsVerboseText = null; - - if ($cliConfiguration->hasLogEventsVerboseText()) { - $logEventsVerboseText = $cliConfiguration->logEventsVerboseText(); - } - - $teamCityOutput = false; - - if ($cliConfiguration->hasTeamCityPrinter() && $cliConfiguration->teamCityPrinter()) { - $teamCityOutput = true; - } - - if ($cliConfiguration->hasTestDoxPrinter() && $cliConfiguration->testdoxPrinter()) { - $testDoxOutput = true; - } else { - $testDoxOutput = $xmlConfiguration->phpunit()->testdoxPrinter(); - } - - if ($cliConfiguration->hasTestDoxPrinterSummary() && $cliConfiguration->testdoxPrinterSummary()) { - $testDoxOutputSummary = true; - } else { - $testDoxOutputSummary = $xmlConfiguration->phpunit()->testdoxPrinterSummary(); - } - - $noProgress = false; - - if ($cliConfiguration->hasNoProgress() && $cliConfiguration->noProgress()) { - $noProgress = true; - } - - $noResults = false; - - if ($cliConfiguration->hasNoResults() && $cliConfiguration->noResults()) { - $noResults = true; - } - - $noOutput = false; - - if ($cliConfiguration->hasNoOutput() && $cliConfiguration->noOutput()) { - $noOutput = true; - } - - $testsCovering = null; - - if ($cliConfiguration->hasTestsCovering()) { - $testsCovering = $cliConfiguration->testsCovering(); - } - - $testsUsing = null; - - if ($cliConfiguration->hasTestsUsing()) { - $testsUsing = $cliConfiguration->testsUsing(); - } - - $testsRequiringPhpExtension = null; - - if ($cliConfiguration->hasTestsRequiringPhpExtension()) { - $testsRequiringPhpExtension = $cliConfiguration->testsRequiringPhpExtension(); - } - - $filter = null; - - if ($cliConfiguration->hasFilter()) { - $filter = $cliConfiguration->filter(); - } - - $excludeFilter = null; - - if ($cliConfiguration->hasExcludeFilter()) { - $excludeFilter = $cliConfiguration->excludeFilter(); - } - - if ($cliConfiguration->hasGroups()) { - $groups = $cliConfiguration->groups(); - } else { - $groups = $xmlConfiguration->groups()->include()->asArrayOfStrings(); - } - - if ($cliConfiguration->hasExcludeGroups()) { - $excludeGroups = $cliConfiguration->excludeGroups(); - } else { - $excludeGroups = $xmlConfiguration->groups()->exclude()->asArrayOfStrings(); - } - - $excludeGroups = array_diff($excludeGroups, $groups); - - if ($cliConfiguration->hasRandomOrderSeed()) { - $randomOrderSeed = $cliConfiguration->randomOrderSeed(); - } else { - $randomOrderSeed = time(); - } - - if ($xmlConfiguration->wasLoadedFromFile() && $xmlConfiguration->hasValidationErrors()) { - if ((new SchemaDetector)->detect($xmlConfiguration->filename())->detected()) { - EventFacade::emitter()->testRunnerTriggeredPhpunitDeprecation( - 'Your XML configuration validates against a deprecated schema. Migrate your XML configuration using "--migrate-configuration"!', - ); - } else { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - "Test results may not be as expected because the XML configuration file did not pass validation:\n" . - $xmlConfiguration->validationErrors(), - ); - } - } - - $includeUncoveredFiles = $xmlConfiguration->codeCoverage()->includeUncoveredFiles(); - - $includePaths = []; - - if ($cliConfiguration->hasIncludePath()) { - foreach (explode(PATH_SEPARATOR, $cliConfiguration->includePath()) as $includePath) { - $includePaths[] = new Directory($includePath); - } - } - - foreach ($xmlConfiguration->php()->includePaths() as $includePath) { - $includePaths[] = $includePath; - } - - $iniSettings = []; - - if ($cliConfiguration->hasIniSettings()) { - foreach ($cliConfiguration->iniSettings() as $name => $value) { - $iniSettings[] = new IniSetting($name, $value); - } - } - - foreach ($xmlConfiguration->php()->iniSettings() as $iniSetting) { - $iniSettings[] = $iniSetting; - } - - $includeTestSuite = ''; - - if ($cliConfiguration->hasTestSuite()) { - $includeTestSuite = $cliConfiguration->testSuite(); - } elseif ($xmlConfiguration->phpunit()->hasDefaultTestSuite()) { - $includeTestSuite = $xmlConfiguration->phpunit()->defaultTestSuite(); - } - - $excludeTestSuite = ''; - - if ($cliConfiguration->hasExcludedTestSuite()) { - $excludeTestSuite = $cliConfiguration->excludedTestSuite(); - } - - $testSuffixes = ['Test.php', '.phpt']; - - if ($cliConfiguration->hasTestSuffixes()) { - $testSuffixes = $cliConfiguration->testSuffixes(); - } - - $sourceIncludeDirectories = []; - - if ($cliConfiguration->hasCoverageFilter()) { - foreach ($cliConfiguration->coverageFilter() as $directory) { - $sourceIncludeDirectories[] = new FilterDirectory($directory, '', '.php'); - } - } - - foreach ($xmlConfiguration->source()->includeDirectories() as $directory) { - $sourceIncludeDirectories[] = $directory; - } - - $sourceIncludeFiles = $xmlConfiguration->source()->includeFiles(); - $sourceExcludeDirectories = $xmlConfiguration->source()->excludeDirectories(); - $sourceExcludeFiles = $xmlConfiguration->source()->excludeFiles(); - - $useBaseline = null; - $generateBaseline = null; - - if (!$cliConfiguration->hasGenerateBaseline()) { - if ($cliConfiguration->hasUseBaseline()) { - $useBaseline = $cliConfiguration->useBaseline(); - } elseif ($xmlConfiguration->source()->hasBaseline()) { - $useBaseline = $xmlConfiguration->source()->baseline(); - } - } else { - $generateBaseline = $cliConfiguration->generateBaseline(); - } - - assert($useBaseline !== ''); - assert($generateBaseline !== ''); - - if ($failOnAllIssues) { - $displayDetailsOnAllIssues = true; - } - - if ($failOnDeprecation && !$doNotFailOnDeprecation) { - $displayDetailsOnTestsThatTriggerDeprecations = true; - } - - if ($failOnPhpunitDeprecation && !$doNotFailOnPhpunitDeprecation) { - $displayDetailsOnPhpunitDeprecations = true; - } - - if ($failOnNotice && !$doNotFailOnNotice) { - $displayDetailsOnTestsThatTriggerNotices = true; - } - - if ($failOnWarning && !$doNotFailOnWarning) { - $displayDetailsOnTestsThatTriggerWarnings = true; - } - - if ($failOnIncomplete && !$doNotFailOnIncomplete) { - $displayDetailsOnIncompleteTests = true; - } - - if ($failOnSkipped && !$doNotFailOnSkipped) { - $displayDetailsOnSkippedTests = true; - } - - $issueTriggerIdentificationNeeded = $xmlConfiguration->source()->ignoreSelfDeprecations() || $xmlConfiguration->source()->ignoreDirectDeprecations() || $xmlConfiguration->source()->ignoreIndirectDeprecations(); - - if ($issueTriggerIdentificationNeeded && !$xmlConfiguration->source()->identifyIssueTrigger()) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - 'The identification of issue triggers is disabled. However, ignoring self-deprecations, direct deprecations, or indirect deprecations is requested.', - ); - } - - return new Configuration( - $cliConfiguration->arguments(), - $configurationFile, - $bootstrap, - $cacheResult, - $cacheDirectory, - $coverageCacheDirectory, - new Source( - $useBaseline, - $cliConfiguration->ignoreBaseline(), - FilterDirectoryCollection::fromArray($sourceIncludeDirectories), - $sourceIncludeFiles, - $sourceExcludeDirectories, - $sourceExcludeFiles, - $xmlConfiguration->source()->restrictDeprecations(), - $xmlConfiguration->source()->restrictNotices(), - $xmlConfiguration->source()->restrictWarnings(), - $xmlConfiguration->source()->ignoreSuppressionOfDeprecations(), - $xmlConfiguration->source()->ignoreSuppressionOfPhpDeprecations(), - $xmlConfiguration->source()->ignoreSuppressionOfErrors(), - $xmlConfiguration->source()->ignoreSuppressionOfNotices(), - $xmlConfiguration->source()->ignoreSuppressionOfPhpNotices(), - $xmlConfiguration->source()->ignoreSuppressionOfWarnings(), - $xmlConfiguration->source()->ignoreSuppressionOfPhpWarnings(), - $xmlConfiguration->source()->deprecationTriggers(), - $xmlConfiguration->source()->ignoreSelfDeprecations(), - $xmlConfiguration->source()->ignoreDirectDeprecations(), - $xmlConfiguration->source()->ignoreIndirectDeprecations(), - $xmlConfiguration->source()->identifyIssueTrigger(), - ), - $testResultCacheFile, - $coverageClover, - $coverageCobertura, - $coverageCrap4j, - $coverageCrap4jThreshold, - $coverageHtml, - $coverageHtmlLowUpperBound, - $coverageHtmlHighLowerBound, - $coverageHtmlColorSuccessLow, - $coverageHtmlColorSuccessMedium, - $coverageHtmlColorSuccessHigh, - $coverageHtmlColorWarning, - $coverageHtmlColorDanger, - $coverageHtmlCustomCssFile, - $coveragePhp, - $coverageText, - $coverageTextShowUncoveredFiles, - $coverageTextShowOnlySummary, - $coverageXml, - $pathCoverage, - $xmlConfiguration->codeCoverage()->ignoreDeprecatedCodeUnits(), - $disableCodeCoverageIgnore, - $failOnAllIssues, - $failOnDeprecation, - $failOnPhpunitDeprecation, - $failOnPhpunitWarning, - $failOnEmptyTestSuite, - $failOnIncomplete, - $failOnNotice, - $failOnRisky, - $failOnSkipped, - $failOnWarning, - $doNotFailOnDeprecation, - $doNotFailOnPhpunitDeprecation, - $doNotFailOnPhpunitWarning, - $doNotFailOnEmptyTestSuite, - $doNotFailOnIncomplete, - $doNotFailOnNotice, - $doNotFailOnRisky, - $doNotFailOnSkipped, - $doNotFailOnWarning, - $stopOnDefect, - $stopOnDeprecation, - $specificDeprecationToStopOn, - $stopOnError, - $stopOnFailure, - $stopOnIncomplete, - $stopOnNotice, - $stopOnRisky, - $stopOnSkipped, - $stopOnWarning, - $outputToStandardErrorStream, - $columns, - $noExtensions, - $pharExtensionDirectory, - $extensionBootstrappers, - $backupGlobals, - $backupStaticProperties, - $beStrictAboutChangesToGlobalState, - $colors, - $processIsolation, - $enforceTimeLimit, - $defaultTimeLimit, - $timeoutForSmallTests, - $timeoutForMediumTests, - $timeoutForLargeTests, - $reportUselessTests, - $strictCoverage, - $disallowTestOutput, - $displayDetailsOnAllIssues, - $displayDetailsOnIncompleteTests, - $displayDetailsOnSkippedTests, - $displayDetailsOnTestsThatTriggerDeprecations, - $displayDetailsOnPhpunitDeprecations, - $displayDetailsOnTestsThatTriggerErrors, - $displayDetailsOnTestsThatTriggerNotices, - $displayDetailsOnTestsThatTriggerWarnings, - $reverseDefectList, - $requireCoverageMetadata, - $noProgress, - $noResults, - $noOutput, - $executionOrder, - $executionOrderDefects, - $resolveDependencies, - $logfileTeamcity, - $logfileJunit, - $logfileTestdoxHtml, - $logfileTestdoxText, - $logEventsText, - $logEventsVerboseText, - $teamCityOutput, - $testDoxOutput, - $testDoxOutputSummary, - $testsCovering, - $testsUsing, - $testsRequiringPhpExtension, - $filter, - $excludeFilter, - $groups, - $excludeGroups, - $randomOrderSeed, - $includeUncoveredFiles, - $xmlConfiguration->testSuite(), - $includeTestSuite, - $excludeTestSuite, - $xmlConfiguration->phpunit()->hasDefaultTestSuite() ? $xmlConfiguration->phpunit()->defaultTestSuite() : null, - $testSuffixes, - new Php( - DirectoryCollection::fromArray($includePaths), - IniSettingCollection::fromArray($iniSettings), - $xmlConfiguration->php()->constants(), - $xmlConfiguration->php()->globalVariables(), - $xmlConfiguration->php()->envVariables(), - $xmlConfiguration->php()->postVariables(), - $xmlConfiguration->php()->getVariables(), - $xmlConfiguration->php()->cookieVariables(), - $xmlConfiguration->php()->serverVariables(), - $xmlConfiguration->php()->filesVariables(), - $xmlConfiguration->php()->requestVariables(), - ), - $xmlConfiguration->phpunit()->controlGarbageCollector(), - $xmlConfiguration->phpunit()->numberOfTestsBeforeGarbageCollection(), - $generateBaseline, - $cliConfiguration->debug(), - $xmlConfiguration->phpunit()->shortenArraysForExportThreshold(), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php deleted file mode 100644 index 3aa1316..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use const PATH_SEPARATOR; -use function constant; -use function define; -use function defined; -use function getenv; -use function implode; -use function ini_get; -use function ini_set; -use function putenv; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class PhpHandler -{ - public function handle(Php $configuration): void - { - $this->handleIncludePaths($configuration->includePaths()); - $this->handleIniSettings($configuration->iniSettings()); - $this->handleConstants($configuration->constants()); - $this->handleGlobalVariables($configuration->globalVariables()); - $this->handleServerVariables($configuration->serverVariables()); - $this->handleEnvVariables($configuration->envVariables()); - $this->handleVariables('_POST', $configuration->postVariables()); - $this->handleVariables('_GET', $configuration->getVariables()); - $this->handleVariables('_COOKIE', $configuration->cookieVariables()); - $this->handleVariables('_FILES', $configuration->filesVariables()); - $this->handleVariables('_REQUEST', $configuration->requestVariables()); - } - - private function handleIncludePaths(DirectoryCollection $includePaths): void - { - if (!$includePaths->isEmpty()) { - $includePathsAsStrings = []; - - foreach ($includePaths as $includePath) { - $includePathsAsStrings[] = $includePath->path(); - } - - ini_set( - 'include_path', - implode(PATH_SEPARATOR, $includePathsAsStrings) . - PATH_SEPARATOR . - ini_get('include_path'), - ); - } - } - - private function handleIniSettings(IniSettingCollection $iniSettings): void - { - foreach ($iniSettings as $iniSetting) { - $value = $iniSetting->value(); - - if (defined($value)) { - $value = (string) constant($value); - } - - ini_set($iniSetting->name(), $value); - } - } - - private function handleConstants(ConstantCollection $constants): void - { - foreach ($constants as $constant) { - if (!defined($constant->name())) { - define($constant->name(), $constant->value()); - } - } - } - - private function handleGlobalVariables(VariableCollection $variables): void - { - foreach ($variables as $variable) { - $GLOBALS[$variable->name()] = $variable->value(); - } - } - - private function handleServerVariables(VariableCollection $variables): void - { - foreach ($variables as $variable) { - $_SERVER[$variable->name()] = $variable->value(); - } - } - - private function handleVariables(string $target, VariableCollection $variables): void - { - foreach ($variables as $variable) { - $GLOBALS[$target][$variable->name()] = $variable->value(); - } - } - - private function handleEnvVariables(VariableCollection $variables): void - { - foreach ($variables as $variable) { - $name = $variable->name(); - $value = $variable->value(); - $force = $variable->force(); - - if ($force || getenv($name) === false) { - putenv("{$name}={$value}"); - } - - $value = getenv($name); - - if ($force || !isset($_ENV[$name])) { - $_ENV[$name] = $value; - } - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php deleted file mode 100644 index ad80752..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php +++ /dev/null @@ -1,115 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function assert; -use function file_get_contents; -use function file_put_contents; -use function serialize; -use function unserialize; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\TextUI\CliArguments\Configuration as CliConfiguration; -use PHPUnit\TextUI\CliArguments\Exception; -use PHPUnit\TextUI\XmlConfiguration\Configuration as XmlConfiguration; -use PHPUnit\Util\VersionComparisonOperator; - -/** - * CLI options and XML configuration are static within a single PHPUnit process. - * It is therefore okay to use a Singleton registry here. - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Registry -{ - private static ?Configuration $instance = null; - - public static function saveTo(string $path): bool - { - $result = file_put_contents( - $path, - serialize(self::get()), - ); - - if ($result) { - return true; - } - - // @codeCoverageIgnoreStart - return false; - // @codeCoverageIgnoreEnd - } - - /** - * This method is used by the "run test(s) in separate process" templates. - * - * @noinspection PhpUnused - * - * @codeCoverageIgnore - */ - public static function loadFrom(string $path): void - { - $buffer = file_get_contents($path); - - assert($buffer !== false); - - self::$instance = unserialize( - $buffer, - [ - 'allowed_classes' => [ - Configuration::class, - Php::class, - ConstantCollection::class, - Constant::class, - IniSettingCollection::class, - IniSetting::class, - VariableCollection::class, - Variable::class, - DirectoryCollection::class, - Directory::class, - FileCollection::class, - File::class, - FilterDirectoryCollection::class, - FilterDirectory::class, - TestDirectoryCollection::class, - TestDirectory::class, - TestFileCollection::class, - TestFile::class, - TestSuiteCollection::class, - TestSuite::class, - VersionComparisonOperator::class, - Source::class, - ], - ], - ); - } - - public static function get(): Configuration - { - assert(self::$instance instanceof Configuration); - - return self::$instance; - } - - /** - * @throws \PHPUnit\TextUI\XmlConfiguration\Exception - * @throws Exception - * @throws NoCustomCssFileException - */ - public static function init(CliConfiguration $cliConfiguration, XmlConfiguration $xmlConfiguration): Configuration - { - self::$instance = (new Merger)->merge($cliConfiguration, $xmlConfiguration); - - EventFacade::emitter()->testRunnerConfigured(self::$instance); - - return self::$instance; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php deleted file mode 100644 index 845a9b3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SourceFilter -{ - private static ?self $instance = null; - - /** - * @var array - */ - private readonly array $map; - - public static function instance(): self - { - if (self::$instance === null) { - self::$instance = new self( - (new SourceMapper)->map( - Registry::get()->source(), - ), - ); - } - - return self::$instance; - } - - /** - * @param array $map - */ - public function __construct(array $map) - { - $this->map = $map; - } - - public function includes(string $path): bool - { - return isset($this->map[$path]); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php deleted file mode 100644 index fd929ed..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php +++ /dev/null @@ -1,171 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function file_get_contents; -use function file_put_contents; -use function is_array; -use function realpath; -use function serialize; -use function unserialize; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; -use SplObjectStorage; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SourceMapper -{ - /** - * @var ?SplObjectStorage> - */ - private static ?SplObjectStorage $files = null; - - public static function saveTo(string $path, Source $source): bool - { - $map = (new self)->map($source); - - return file_put_contents($path, serialize($map)) !== false; - } - - /** - * @codeCoverageIgnore - */ - public static function loadFrom(string $path, Source $source): void - { - $content = file_get_contents($path); - - if ($content === false) { - return; - } - - $map = unserialize($content, ['allowed_classes' => false]); - - if (!is_array($map)) { - return; - } - - if (self::$files === null) { - self::$files = new SplObjectStorage; - } - - /** @phpstan-ignore offsetAssign.valueType */ - self::$files[$source] = $map; - } - - /** - * @return array - */ - public function map(Source $source): array - { - if (self::$files === null) { - self::$files = new SplObjectStorage; - } - - if (isset(self::$files[$source])) { - return self::$files[$source]; - } - - $files = []; - - $directories = $this->aggregateDirectories($source->includeDirectories()); - - foreach ($directories as $path => [$prefixes, $suffixes]) { - foreach ((new FileIteratorFacade)->getFilesAsArray($path, $suffixes, $prefixes) as $file) { - $file = realpath($file); - - if (!$file) { - continue; - } - - $files[$file] = true; - } - } - - foreach ($source->includeFiles() as $file) { - $file = realpath($file->path()); - - if (!$file) { - continue; - } - - $files[$file] = true; - } - - $directories = $this->aggregateDirectories($source->excludeDirectories()); - - foreach ($directories as $path => [$prefixes, $suffixes]) { - foreach ((new FileIteratorFacade)->getFilesAsArray($path, $suffixes, $prefixes) as $file) { - $file = realpath($file); - - if (!$file) { - continue; - } - - if (!isset($files[$file])) { - continue; - } - - unset($files[$file]); - } - } - - foreach ($source->excludeFiles() as $file) { - $file = realpath($file->path()); - - if (!$file) { - continue; - } - - if (!isset($files[$file])) { - continue; - } - - unset($files[$file]); - } - - self::$files[$source] = $files; - - return $files; - } - - /** - * @return array,list}> - */ - private function aggregateDirectories(FilterDirectoryCollection $directories): array - { - $aggregated = []; - - foreach ($directories as $directory) { - if (!isset($aggregated[$directory->path()])) { - $aggregated[$directory->path()] = [ - 0 => [], - 1 => [], - ]; - } - - $prefix = $directory->prefix(); - - if ($prefix !== '') { - $aggregated[$directory->path()][0][] = $prefix; - } - - $suffix = $directory->suffix(); - - if ($suffix !== '') { - $aggregated[$directory->path()][1][] = $suffix; - } - } - - return $aggregated; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php deleted file mode 100644 index 56ad1d8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php +++ /dev/null @@ -1,145 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use const PHP_EOL; -use function assert; -use function count; -use function is_dir; -use function is_file; -use function realpath; -use function str_ends_with; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Exception; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\TestSuiteLoader; -use PHPUnit\TextUI\RuntimeException; -use PHPUnit\TextUI\TestDirectoryNotFoundException; -use PHPUnit\TextUI\TestFileNotFoundException; -use PHPUnit\TextUI\XmlConfiguration\TestSuiteMapper; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSuiteBuilder -{ - /** - * @throws \PHPUnit\Framework\Exception - * @throws RuntimeException - * @throws TestDirectoryNotFoundException - * @throws TestFileNotFoundException - */ - public function build(Configuration $configuration): TestSuite - { - if ($configuration->hasCliArguments()) { - $arguments = []; - - foreach ($configuration->cliArguments() as $cliArgument) { - $argument = realpath($cliArgument); - - if (!$argument) { - throw new TestFileNotFoundException($cliArgument); - } - - $arguments[] = $argument; - } - - if (count($arguments) === 1) { - $testSuite = $this->testSuiteFromPath( - $arguments[0], - $configuration->testSuffixes(), - ); - } else { - $testSuite = $this->testSuiteFromPathList( - $arguments, - $configuration->testSuffixes(), - ); - } - } - - if (!isset($testSuite)) { - $xmlConfigurationFile = $configuration->hasConfigurationFile() ? $configuration->configurationFile() : 'Root Test Suite'; - - assert(!empty($xmlConfigurationFile)); - - $testSuite = (new TestSuiteMapper)->map( - $xmlConfigurationFile, - $configuration->testSuite(), - $configuration->includeTestSuite(), - $configuration->excludeTestSuite(), - ); - } - - EventFacade::emitter()->testSuiteLoaded(\PHPUnit\Event\TestSuite\TestSuiteBuilder::from($testSuite)); - - return $testSuite; - } - - /** - * @param non-empty-string $path - * @param list $suffixes - * - * @throws \PHPUnit\Framework\Exception - */ - private function testSuiteFromPath(string $path, array $suffixes, ?TestSuite $suite = null): TestSuite - { - if (str_ends_with($path, '.phpt') && is_file($path)) { - $suite = $suite ?: TestSuite::empty($path); - $suite->addTestFile($path); - - return $suite; - } - - if (is_dir($path)) { - $files = (new FileIteratorFacade)->getFilesAsArray($path, $suffixes); - - $suite = $suite ?: TestSuite::empty('CLI Arguments'); - $suite->addTestFiles($files); - - return $suite; - } - - try { - $testClass = (new TestSuiteLoader)->load($path); - } catch (Exception $e) { - print $e->getMessage() . PHP_EOL; - - exit(1); - } - - if (!$suite) { - return TestSuite::fromClassReflector($testClass); - } - - $suite->addTestSuite($testClass); - - return $suite; - } - - /** - * @param list $paths - * @param list $suffixes - * - * @throws \PHPUnit\Framework\Exception - */ - private function testSuiteFromPathList(array $paths, array $suffixes): TestSuite - { - $suite = TestSuite::empty('CLI Arguments'); - - foreach ($paths as $path) { - $this->testSuiteFromPath($path, $suffixes, $suite); - } - - return $suite; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Constant.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Constant.php deleted file mode 100644 index 0ff240d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Constant.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Constant -{ - private string $name; - private bool|string $value; - - public function __construct(string $name, bool|string $value) - { - $this->name = $name; - $this->value = $value; - } - - public function name(): string - { - return $this->name; - } - - public function value(): bool|string - { - return $this->value; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollection.php deleted file mode 100644 index 137dceb..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollection.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Countable; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class ConstantCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $constants; - - /** - * @param list $constants - */ - public static function fromArray(array $constants): self - { - return new self(...$constants); - } - - private function __construct(Constant ...$constants) - { - $this->constants = $constants; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->constants; - } - - public function count(): int - { - return count($this->constants); - } - - public function getIterator(): ConstantCollectionIterator - { - return new ConstantCollectionIterator($this); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollectionIterator.php deleted file mode 100644 index 62753f7..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ConstantCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class ConstantCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $constants; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(ConstantCollection $constants) - { - $this->constants = $constants->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->constants); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): Constant - { - return $this->constants[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Directory.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Directory.php deleted file mode 100644 index f44e28b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Directory.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Directory -{ - private string $path; - - public function __construct(string $path) - { - $this->path = $path; - } - - public function path(): string - { - return $this->path; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollection.php deleted file mode 100644 index d76deec..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollection.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Countable; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class DirectoryCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $directories; - - /** - * @param list $directories - */ - public static function fromArray(array $directories): self - { - return new self(...$directories); - } - - private function __construct(Directory ...$directories) - { - $this->directories = $directories; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->directories; - } - - public function count(): int - { - return count($this->directories); - } - - public function getIterator(): DirectoryCollectionIterator - { - return new DirectoryCollectionIterator($this); - } - - public function isEmpty(): bool - { - return $this->count() === 0; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollectionIterator.php deleted file mode 100644 index 9a0c47f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/DirectoryCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class DirectoryCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $directories; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(DirectoryCollection $directories) - { - $this->directories = $directories->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->directories); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): Directory - { - return $this->directories[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrap.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrap.php deleted file mode 100644 index 09430c7..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrap.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class ExtensionBootstrap -{ - /** - * @var non-empty-string - */ - private string $className; - - /** - * @var array - */ - private array $parameters; - - /** - * @param non-empty-string $className - * @param array $parameters - */ - public function __construct(string $className, array $parameters) - { - $this->className = $className; - $this->parameters = $parameters; - } - - /** - * @return non-empty-string - */ - public function className(): string - { - return $this->className; - } - - /** - * @return array - */ - public function parameters(): array - { - return $this->parameters; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollection.php deleted file mode 100644 index 99c3a3e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollection.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use IteratorAggregate; - -/** - * @template-implements IteratorAggregate - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class ExtensionBootstrapCollection implements IteratorAggregate -{ - /** - * @var list - */ - private array $extensionBootstraps; - - /** - * @param list $extensionBootstraps - */ - public static function fromArray(array $extensionBootstraps): self - { - return new self(...$extensionBootstraps); - } - - private function __construct(ExtensionBootstrap ...$extensionBootstraps) - { - $this->extensionBootstraps = $extensionBootstraps; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->extensionBootstraps; - } - - public function getIterator(): ExtensionBootstrapCollectionIterator - { - return new ExtensionBootstrapCollectionIterator($this); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollectionIterator.php deleted file mode 100644 index 5d517b5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/ExtensionBootstrapCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class ExtensionBootstrapCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $extensionBootstraps; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(ExtensionBootstrapCollection $extensionBootstraps) - { - $this->extensionBootstraps = $extensionBootstraps->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->extensionBootstraps); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): ExtensionBootstrap - { - return $this->extensionBootstraps[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/File.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/File.php deleted file mode 100644 index 85900f4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/File.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class File -{ - /** - * @var non-empty-string - */ - private string $path; - - /** - * @param non-empty-string $path - */ - public function __construct(string $path) - { - $this->path = $path; - } - - /** - * @return non-empty-string - */ - public function path(): string - { - return $this->path; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollection.php deleted file mode 100644 index 659f951..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollection.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Countable; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class FileCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $files; - - /** - * @param list $files - */ - public static function fromArray(array $files): self - { - return new self(...$files); - } - - private function __construct(File ...$files) - { - $this->files = $files; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->files; - } - - public function count(): int - { - return count($this->files); - } - - public function notEmpty(): bool - { - return !empty($this->files); - } - - public function getIterator(): FileCollectionIterator - { - return new FileCollectionIterator($this); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollectionIterator.php deleted file mode 100644 index 9d2e8e5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FileCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class FileCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $files; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(FileCollection $files) - { - $this->files = $files->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->files); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): File - { - return $this->files[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectory.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectory.php deleted file mode 100644 index 52dcd1b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectory.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class FilterDirectory -{ - /** - * @var non-empty-string - */ - private string $path; - private string $prefix; - private string $suffix; - - /** - * @param non-empty-string $path - */ - public function __construct(string $path, string $prefix, string $suffix) - { - $this->path = $path; - $this->prefix = $prefix; - $this->suffix = $suffix; - } - - /** - * @return non-empty-string - */ - public function path(): string - { - return $this->path; - } - - public function prefix(): string - { - return $this->prefix; - } - - public function suffix(): string - { - return $this->suffix; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollection.php deleted file mode 100644 index 50d022d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollection.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Countable; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class FilterDirectoryCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $directories; - - /** - * @param list $directories - */ - public static function fromArray(array $directories): self - { - return new self(...$directories); - } - - private function __construct(FilterDirectory ...$directories) - { - $this->directories = $directories; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->directories; - } - - public function count(): int - { - return count($this->directories); - } - - public function notEmpty(): bool - { - return !empty($this->directories); - } - - public function getIterator(): FilterDirectoryCollectionIterator - { - return new FilterDirectoryCollectionIterator($this); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollectionIterator.php deleted file mode 100644 index 1534804..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/FilterDirectoryCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class FilterDirectoryCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $directories; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(FilterDirectoryCollection $directories) - { - $this->directories = $directories->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->directories); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): FilterDirectory - { - return $this->directories[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php deleted file mode 100644 index cb0bdc8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Group -{ - private string $name; - - public function __construct(string $name) - { - $this->name = $name; - } - - public function name(): string - { - return $this->name; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php deleted file mode 100644 index 88a3ff4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php +++ /dev/null @@ -1,72 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class GroupCollection implements IteratorAggregate -{ - /** - * @var list - */ - private array $groups; - - /** - * @param list $groups - */ - public static function fromArray(array $groups): self - { - return new self(...$groups); - } - - private function __construct(Group ...$groups) - { - $this->groups = $groups; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->groups; - } - - /** - * @return list - */ - public function asArrayOfStrings(): array - { - $result = []; - - foreach ($this->groups as $group) { - $result[] = $group->name(); - } - - return $result; - } - - public function isEmpty(): bool - { - return empty($this->groups); - } - - public function getIterator(): GroupCollectionIterator - { - return new GroupCollectionIterator($this); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php deleted file mode 100644 index a40fcc7..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class GroupCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $groups; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(GroupCollection $groups) - { - $this->groups = $groups->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->groups); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): Group - { - return $this->groups[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php deleted file mode 100644 index b4d1166..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class IniSetting -{ - private string $name; - private string $value; - - public function __construct(string $name, string $value) - { - $this->name = $name; - $this->value = $value; - } - - public function name(): string - { - return $this->name; - } - - public function value(): string - { - return $this->value; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php deleted file mode 100644 index 3281e0e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Countable; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class IniSettingCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $iniSettings; - - /** - * @param list $iniSettings - */ - public static function fromArray(array $iniSettings): self - { - return new self(...$iniSettings); - } - - private function __construct(IniSetting ...$iniSettings) - { - $this->iniSettings = $iniSettings; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->iniSettings; - } - - public function count(): int - { - return count($this->iniSettings); - } - - public function getIterator(): IniSettingCollectionIterator - { - return new IniSettingCollectionIterator($this); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php deleted file mode 100644 index d974963..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class IniSettingCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $iniSettings; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(IniSettingCollection $iniSettings) - { - $this->iniSettings = $iniSettings->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->iniSettings); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): IniSetting - { - return $this->iniSettings[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php deleted file mode 100644 index 0dc4735..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Php -{ - private DirectoryCollection $includePaths; - private IniSettingCollection $iniSettings; - private ConstantCollection $constants; - private VariableCollection $globalVariables; - private VariableCollection $envVariables; - private VariableCollection $postVariables; - private VariableCollection $getVariables; - private VariableCollection $cookieVariables; - private VariableCollection $serverVariables; - private VariableCollection $filesVariables; - private VariableCollection $requestVariables; - - public function __construct(DirectoryCollection $includePaths, IniSettingCollection $iniSettings, ConstantCollection $constants, VariableCollection $globalVariables, VariableCollection $envVariables, VariableCollection $postVariables, VariableCollection $getVariables, VariableCollection $cookieVariables, VariableCollection $serverVariables, VariableCollection $filesVariables, VariableCollection $requestVariables) - { - $this->includePaths = $includePaths; - $this->iniSettings = $iniSettings; - $this->constants = $constants; - $this->globalVariables = $globalVariables; - $this->envVariables = $envVariables; - $this->postVariables = $postVariables; - $this->getVariables = $getVariables; - $this->cookieVariables = $cookieVariables; - $this->serverVariables = $serverVariables; - $this->filesVariables = $filesVariables; - $this->requestVariables = $requestVariables; - } - - public function includePaths(): DirectoryCollection - { - return $this->includePaths; - } - - public function iniSettings(): IniSettingCollection - { - return $this->iniSettings; - } - - public function constants(): ConstantCollection - { - return $this->constants; - } - - public function globalVariables(): VariableCollection - { - return $this->globalVariables; - } - - public function envVariables(): VariableCollection - { - return $this->envVariables; - } - - public function postVariables(): VariableCollection - { - return $this->postVariables; - } - - public function getVariables(): VariableCollection - { - return $this->getVariables; - } - - public function cookieVariables(): VariableCollection - { - return $this->cookieVariables; - } - - public function serverVariables(): VariableCollection - { - return $this->serverVariables; - } - - public function filesVariables(): VariableCollection - { - return $this->filesVariables; - } - - public function requestVariables(): VariableCollection - { - return $this->requestVariables; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php deleted file mode 100644 index 9213858..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php +++ /dev/null @@ -1,209 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Source -{ - /** - * @var non-empty-string - */ - private ?string $baseline; - private bool $ignoreBaseline; - private FilterDirectoryCollection $includeDirectories; - private FileCollection $includeFiles; - private FilterDirectoryCollection $excludeDirectories; - private FileCollection $excludeFiles; - private bool $restrictDeprecations; - private bool $restrictNotices; - private bool $restrictWarnings; - private bool $ignoreSuppressionOfDeprecations; - private bool $ignoreSuppressionOfPhpDeprecations; - private bool $ignoreSuppressionOfErrors; - private bool $ignoreSuppressionOfNotices; - private bool $ignoreSuppressionOfPhpNotices; - private bool $ignoreSuppressionOfWarnings; - private bool $ignoreSuppressionOfPhpWarnings; - private bool $ignoreSelfDeprecations; - private bool $ignoreDirectDeprecations; - private bool $ignoreIndirectDeprecations; - private bool $identifyIssueTrigger; - - /** - * @var array{functions: list, methods: list} - */ - private array $deprecationTriggers; - - /** - * @param ?non-empty-string $baseline - * @param array{functions: list, methods: list} $deprecationTriggers - */ - public function __construct(?string $baseline, bool $ignoreBaseline, FilterDirectoryCollection $includeDirectories, FileCollection $includeFiles, FilterDirectoryCollection $excludeDirectories, FileCollection $excludeFiles, bool $restrictDeprecations, bool $restrictNotices, bool $restrictWarnings, bool $ignoreSuppressionOfDeprecations, bool $ignoreSuppressionOfPhpDeprecations, bool $ignoreSuppressionOfErrors, bool $ignoreSuppressionOfNotices, bool $ignoreSuppressionOfPhpNotices, bool $ignoreSuppressionOfWarnings, bool $ignoreSuppressionOfPhpWarnings, array $deprecationTriggers, bool $ignoreSelfDeprecations, bool $ignoreDirectDeprecations, bool $ignoreIndirectDeprecations, bool $identifyIssueTrigger) - { - $this->baseline = $baseline; - $this->ignoreBaseline = $ignoreBaseline; - $this->includeDirectories = $includeDirectories; - $this->includeFiles = $includeFiles; - $this->excludeDirectories = $excludeDirectories; - $this->excludeFiles = $excludeFiles; - $this->restrictDeprecations = $restrictDeprecations; - $this->restrictNotices = $restrictNotices; - $this->restrictWarnings = $restrictWarnings; - $this->ignoreSuppressionOfDeprecations = $ignoreSuppressionOfDeprecations; - $this->ignoreSuppressionOfPhpDeprecations = $ignoreSuppressionOfPhpDeprecations; - $this->ignoreSuppressionOfErrors = $ignoreSuppressionOfErrors; - $this->ignoreSuppressionOfNotices = $ignoreSuppressionOfNotices; - $this->ignoreSuppressionOfPhpNotices = $ignoreSuppressionOfPhpNotices; - $this->ignoreSuppressionOfWarnings = $ignoreSuppressionOfWarnings; - $this->ignoreSuppressionOfPhpWarnings = $ignoreSuppressionOfPhpWarnings; - $this->deprecationTriggers = $deprecationTriggers; - $this->ignoreSelfDeprecations = $ignoreSelfDeprecations; - $this->ignoreDirectDeprecations = $ignoreDirectDeprecations; - $this->ignoreIndirectDeprecations = $ignoreIndirectDeprecations; - $this->identifyIssueTrigger = $identifyIssueTrigger; - } - - /** - * @phpstan-assert-if-true !null $this->baseline - */ - public function useBaseline(): bool - { - return $this->hasBaseline() && !$this->ignoreBaseline; - } - - /** - * @phpstan-assert-if-true !null $this->baseline - */ - public function hasBaseline(): bool - { - return $this->baseline !== null; - } - - /** - * @throws NoBaselineException - * - * @return non-empty-string - */ - public function baseline(): string - { - if (!$this->hasBaseline()) { - throw new NoBaselineException; - } - - return $this->baseline; - } - - public function includeDirectories(): FilterDirectoryCollection - { - return $this->includeDirectories; - } - - public function includeFiles(): FileCollection - { - return $this->includeFiles; - } - - public function excludeDirectories(): FilterDirectoryCollection - { - return $this->excludeDirectories; - } - - public function excludeFiles(): FileCollection - { - return $this->excludeFiles; - } - - public function notEmpty(): bool - { - return $this->includeDirectories->notEmpty() || $this->includeFiles->notEmpty(); - } - - public function restrictDeprecations(): bool - { - return $this->restrictDeprecations; - } - - public function restrictNotices(): bool - { - return $this->restrictNotices; - } - - public function restrictWarnings(): bool - { - return $this->restrictWarnings; - } - - public function ignoreSuppressionOfDeprecations(): bool - { - return $this->ignoreSuppressionOfDeprecations; - } - - public function ignoreSuppressionOfPhpDeprecations(): bool - { - return $this->ignoreSuppressionOfPhpDeprecations; - } - - public function ignoreSuppressionOfErrors(): bool - { - return $this->ignoreSuppressionOfErrors; - } - - public function ignoreSuppressionOfNotices(): bool - { - return $this->ignoreSuppressionOfNotices; - } - - public function ignoreSuppressionOfPhpNotices(): bool - { - return $this->ignoreSuppressionOfPhpNotices; - } - - public function ignoreSuppressionOfWarnings(): bool - { - return $this->ignoreSuppressionOfWarnings; - } - - public function ignoreSuppressionOfPhpWarnings(): bool - { - return $this->ignoreSuppressionOfPhpWarnings; - } - - /** - * @return array{functions: list, methods: list} - */ - public function deprecationTriggers(): array - { - return $this->deprecationTriggers; - } - - public function ignoreSelfDeprecations(): bool - { - return $this->ignoreSelfDeprecations; - } - - public function ignoreDirectDeprecations(): bool - { - return $this->ignoreDirectDeprecations; - } - - public function ignoreIndirectDeprecations(): bool - { - return $this->ignoreIndirectDeprecations; - } - - public function identifyIssueTrigger(): bool - { - return $this->identifyIssueTrigger; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php deleted file mode 100644 index dfe301a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use PHPUnit\Util\VersionComparisonOperator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class TestDirectory -{ - /** - * @var non-empty-string - */ - private string $path; - private string $prefix; - private string $suffix; - private string $phpVersion; - private VersionComparisonOperator $phpVersionOperator; - - /** - * @var list - */ - private array $groups; - - /** - * @param non-empty-string $path - * @param list $groups - */ - public function __construct(string $path, string $prefix, string $suffix, string $phpVersion, VersionComparisonOperator $phpVersionOperator, array $groups) - { - $this->path = $path; - $this->prefix = $prefix; - $this->suffix = $suffix; - $this->phpVersion = $phpVersion; - $this->phpVersionOperator = $phpVersionOperator; - $this->groups = $groups; - } - - /** - * @return non-empty-string - */ - public function path(): string - { - return $this->path; - } - - public function prefix(): string - { - return $this->prefix; - } - - public function suffix(): string - { - return $this->suffix; - } - - public function phpVersion(): string - { - return $this->phpVersion; - } - - public function phpVersionOperator(): VersionComparisonOperator - { - return $this->phpVersionOperator; - } - - /** - * @return list - */ - public function groups(): array - { - return $this->groups; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php deleted file mode 100644 index 033e660..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Countable; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class TestDirectoryCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $directories; - - /** - * @param list $directories - */ - public static function fromArray(array $directories): self - { - return new self(...$directories); - } - - private function __construct(TestDirectory ...$directories) - { - $this->directories = $directories; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->directories; - } - - public function count(): int - { - return count($this->directories); - } - - public function getIterator(): TestDirectoryCollectionIterator - { - return new TestDirectoryCollectionIterator($this); - } - - public function isEmpty(): bool - { - return $this->count() === 0; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php deleted file mode 100644 index eab066c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class TestDirectoryCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $directories; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(TestDirectoryCollection $directories) - { - $this->directories = $directories->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->directories); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): TestDirectory - { - return $this->directories[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestFile.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestFile.php deleted file mode 100644 index e658ff8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestFile.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use PHPUnit\Util\VersionComparisonOperator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class TestFile -{ - /** - * @var non-empty-string - */ - private string $path; - private string $phpVersion; - private VersionComparisonOperator $phpVersionOperator; - - /** - * @var list - */ - private array $groups; - - /** - * @param non-empty-string $path - * @param list $groups - */ - public function __construct(string $path, string $phpVersion, VersionComparisonOperator $phpVersionOperator, array $groups) - { - $this->path = $path; - $this->phpVersion = $phpVersion; - $this->phpVersionOperator = $phpVersionOperator; - $this->groups = $groups; - } - - /** - * @return non-empty-string - */ - public function path(): string - { - return $this->path; - } - - public function phpVersion(): string - { - return $this->phpVersion; - } - - public function phpVersionOperator(): VersionComparisonOperator - { - return $this->phpVersionOperator; - } - - /** - * @return list - */ - public function groups(): array - { - return $this->groups; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollection.php deleted file mode 100644 index 5a86147..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollection.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Countable; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class TestFileCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $files; - - /** - * @param list $files - */ - public static function fromArray(array $files): self - { - return new self(...$files); - } - - private function __construct(TestFile ...$files) - { - $this->files = $files; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->files; - } - - public function count(): int - { - return count($this->files); - } - - public function getIterator(): TestFileCollectionIterator - { - return new TestFileCollectionIterator($this); - } - - public function isEmpty(): bool - { - return $this->count() === 0; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollectionIterator.php deleted file mode 100644 index 9629900..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestFileCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class TestFileCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $files; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(TestFileCollection $files) - { - $this->files = $files->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->files); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): TestFile - { - return $this->files[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php deleted file mode 100644 index fdba72e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class TestSuite -{ - /** - * @var non-empty-string - */ - private string $name; - private TestDirectoryCollection $directories; - private TestFileCollection $files; - private FileCollection $exclude; - - /** - * @param non-empty-string $name - */ - public function __construct(string $name, TestDirectoryCollection $directories, TestFileCollection $files, FileCollection $exclude) - { - $this->name = $name; - $this->directories = $directories; - $this->files = $files; - $this->exclude = $exclude; - } - - /** - * @return non-empty-string - */ - public function name(): string - { - return $this->name; - } - - public function directories(): TestDirectoryCollection - { - return $this->directories; - } - - public function files(): TestFileCollection - { - return $this->files; - } - - public function exclude(): FileCollection - { - return $this->exclude; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollection.php deleted file mode 100644 index 5cbeda2..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollection.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Countable; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class TestSuiteCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $testSuites; - - /** - * @param list $testSuites - */ - public static function fromArray(array $testSuites): self - { - return new self(...$testSuites); - } - - private function __construct(TestSuite ...$testSuites) - { - $this->testSuites = $testSuites; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->testSuites; - } - - public function count(): int - { - return count($this->testSuites); - } - - public function getIterator(): TestSuiteCollectionIterator - { - return new TestSuiteCollectionIterator($this); - } - - public function isEmpty(): bool - { - return $this->count() === 0; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollectionIterator.php deleted file mode 100644 index 9f411a0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuiteCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class TestSuiteCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $testSuites; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(TestSuiteCollection $testSuites) - { - $this->testSuites = $testSuites->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->testSuites); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): TestSuite - { - return $this->testSuites[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Variable.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Variable.php deleted file mode 100644 index cc0425c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Variable.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Variable -{ - private string $name; - private mixed $value; - private bool $force; - - public function __construct(string $name, mixed $value, bool $force) - { - $this->name = $name; - $this->value = $value; - $this->force = $force; - } - - public function name(): string - { - return $this->name; - } - - public function value(): mixed - { - return $this->value; - } - - public function force(): bool - { - return $this->force; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php deleted file mode 100644 index e83a4e4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Countable; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - * - * @template-implements IteratorAggregate - */ -final readonly class VariableCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $variables; - - /** - * @param list $variables - */ - public static function fromArray(array $variables): self - { - return new self(...$variables); - } - - private function __construct(Variable ...$variables) - { - $this->variables = $variables; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->variables; - } - - public function count(): int - { - return count($this->variables); - } - - public function getIterator(): VariableCollectionIterator - { - return new VariableCollectionIterator($this); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php deleted file mode 100644 index b37459c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Configuration; - -use function count; -use Iterator; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @template-implements Iterator - */ -final class VariableCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $variables; - - /** - * @var non-negative-int - */ - private int $position = 0; - - public function __construct(VariableCollection $variables) - { - $this->variables = $variables->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return $this->position < count($this->variables); - } - - /** - * @return non-negative-int - */ - public function key(): int - { - return $this->position; - } - - public function current(): Variable - { - return $this->variables[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php deleted file mode 100644 index c3975a8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php +++ /dev/null @@ -1,230 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage; - -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Clover; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Cobertura; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Crap4j; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Html; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Php; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Text; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Xml; -use PHPUnit\TextUI\XmlConfiguration\Exception; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class CodeCoverage -{ - private bool $pathCoverage; - private bool $includeUncoveredFiles; - private bool $ignoreDeprecatedCodeUnits; - private bool $disableCodeCoverageIgnore; - private ?Clover $clover; - private ?Cobertura $cobertura; - private ?Crap4j $crap4j; - private ?Html $html; - private ?Php $php; - private ?Text $text; - private ?Xml $xml; - - public function __construct(bool $pathCoverage, bool $includeUncoveredFiles, bool $ignoreDeprecatedCodeUnits, bool $disableCodeCoverageIgnore, ?Clover $clover, ?Cobertura $cobertura, ?Crap4j $crap4j, ?Html $html, ?Php $php, ?Text $text, ?Xml $xml) - { - $this->pathCoverage = $pathCoverage; - $this->includeUncoveredFiles = $includeUncoveredFiles; - $this->ignoreDeprecatedCodeUnits = $ignoreDeprecatedCodeUnits; - $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore; - $this->clover = $clover; - $this->cobertura = $cobertura; - $this->crap4j = $crap4j; - $this->html = $html; - $this->php = $php; - $this->text = $text; - $this->xml = $xml; - } - - public function pathCoverage(): bool - { - return $this->pathCoverage; - } - - public function includeUncoveredFiles(): bool - { - return $this->includeUncoveredFiles; - } - - public function ignoreDeprecatedCodeUnits(): bool - { - return $this->ignoreDeprecatedCodeUnits; - } - - public function disableCodeCoverageIgnore(): bool - { - return $this->disableCodeCoverageIgnore; - } - - /** - * @phpstan-assert-if-true !null $this->clover - */ - public function hasClover(): bool - { - return $this->clover !== null; - } - - /** - * @throws Exception - */ - public function clover(): Clover - { - if (!$this->hasClover()) { - throw new Exception( - 'Code Coverage report "Clover XML" has not been configured', - ); - } - - return $this->clover; - } - - /** - * @phpstan-assert-if-true !null $this->cobertura - */ - public function hasCobertura(): bool - { - return $this->cobertura !== null; - } - - /** - * @throws Exception - */ - public function cobertura(): Cobertura - { - if (!$this->hasCobertura()) { - throw new Exception( - 'Code Coverage report "Cobertura XML" has not been configured', - ); - } - - return $this->cobertura; - } - - /** - * @phpstan-assert-if-true !null $this->crap4j - */ - public function hasCrap4j(): bool - { - return $this->crap4j !== null; - } - - /** - * @throws Exception - */ - public function crap4j(): Crap4j - { - if (!$this->hasCrap4j()) { - throw new Exception( - 'Code Coverage report "Crap4J" has not been configured', - ); - } - - return $this->crap4j; - } - - /** - * @phpstan-assert-if-true !null $this->html - */ - public function hasHtml(): bool - { - return $this->html !== null; - } - - /** - * @throws Exception - */ - public function html(): Html - { - if (!$this->hasHtml()) { - throw new Exception( - 'Code Coverage report "HTML" has not been configured', - ); - } - - return $this->html; - } - - /** - * @phpstan-assert-if-true !null $this->php - */ - public function hasPhp(): bool - { - return $this->php !== null; - } - - /** - * @throws Exception - */ - public function php(): Php - { - if (!$this->hasPhp()) { - throw new Exception( - 'Code Coverage report "PHP" has not been configured', - ); - } - - return $this->php; - } - - /** - * @phpstan-assert-if-true !null $this->text - */ - public function hasText(): bool - { - return $this->text !== null; - } - - /** - * @throws Exception - */ - public function text(): Text - { - if (!$this->hasText()) { - throw new Exception( - 'Code Coverage report "Text" has not been configured', - ); - } - - return $this->text; - } - - /** - * @phpstan-assert-if-true !null $this->xml - */ - public function hasXml(): bool - { - return $this->xml !== null; - } - - /** - * @throws Exception - */ - public function xml(): Xml - { - if (!$this->hasXml()) { - throw new Exception( - 'Code Coverage report "XML" has not been configured', - ); - } - - return $this->xml; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php deleted file mode 100644 index cdaf122..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Clover -{ - private File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php deleted file mode 100644 index 015dba3..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Cobertura -{ - private File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php deleted file mode 100644 index 24aa66d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Crap4j.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Crap4j -{ - private File $target; - private int $threshold; - - public function __construct(File $target, int $threshold) - { - $this->target = $target; - $this->threshold = $threshold; - } - - public function target(): File - { - return $this->target; - } - - public function threshold(): int - { - return $this->threshold; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php deleted file mode 100644 index dde8880..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Html.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\Directory; -use PHPUnit\TextUI\Configuration\NoCustomCssFileException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Html -{ - private Directory $target; - private int $lowUpperBound; - private int $highLowerBound; - private string $colorSuccessLow; - private string $colorSuccessMedium; - private string $colorSuccessHigh; - private string $colorWarning; - private string $colorDanger; - private ?string $customCssFile; - - public function __construct(Directory $target, int $lowUpperBound, int $highLowerBound, string $colorSuccessLow, string $colorSuccessMedium, string $colorSuccessHigh, string $colorWarning, string $colorDanger, ?string $customCssFile) - { - $this->target = $target; - $this->lowUpperBound = $lowUpperBound; - $this->highLowerBound = $highLowerBound; - $this->colorSuccessLow = $colorSuccessLow; - $this->colorSuccessMedium = $colorSuccessMedium; - $this->colorSuccessHigh = $colorSuccessHigh; - $this->colorWarning = $colorWarning; - $this->colorDanger = $colorDanger; - $this->customCssFile = $customCssFile; - } - - public function target(): Directory - { - return $this->target; - } - - public function lowUpperBound(): int - { - return $this->lowUpperBound; - } - - public function highLowerBound(): int - { - return $this->highLowerBound; - } - - public function colorSuccessLow(): string - { - return $this->colorSuccessLow; - } - - public function colorSuccessMedium(): string - { - return $this->colorSuccessMedium; - } - - public function colorSuccessHigh(): string - { - return $this->colorSuccessHigh; - } - - public function colorWarning(): string - { - return $this->colorWarning; - } - - public function colorDanger(): string - { - return $this->colorDanger; - } - - /** - * @phpstan-assert-if-true !null $this->customCssFile - */ - public function hasCustomCssFile(): bool - { - return $this->customCssFile !== null; - } - - /** - * @throws NoCustomCssFileException - */ - public function customCssFile(): string - { - if (!$this->hasCustomCssFile()) { - throw new NoCustomCssFileException; - } - - return $this->customCssFile; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php deleted file mode 100644 index ae022e7..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Php.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Php -{ - private File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php deleted file mode 100644 index cf04d91..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Text.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Text -{ - private File $target; - private bool $showUncoveredFiles; - private bool $showOnlySummary; - - public function __construct(File $target, bool $showUncoveredFiles, bool $showOnlySummary) - { - $this->target = $target; - $this->showUncoveredFiles = $showUncoveredFiles; - $this->showOnlySummary = $showOnlySummary; - } - - public function target(): File - { - return $this->target; - } - - public function showUncoveredFiles(): bool - { - return $this->showUncoveredFiles; - } - - public function showOnlySummary(): bool - { - return $this->showOnlySummary; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php deleted file mode 100644 index 62f99a0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Xml.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; - -use PHPUnit\TextUI\Configuration\Directory; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Xml -{ - private Directory $target; - - public function __construct(Directory $target) - { - $this->target = $target; - } - - public function target(): Directory - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php deleted file mode 100644 index 378022b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php +++ /dev/null @@ -1,104 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; -use PHPUnit\TextUI\Configuration\Php; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; -use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -abstract readonly class Configuration -{ - private ExtensionBootstrapCollection $extensions; - private Source $source; - private CodeCoverage $codeCoverage; - private Groups $groups; - private Logging $logging; - private Php $php; - private PHPUnit $phpunit; - private TestSuiteCollection $testSuite; - - public function __construct(ExtensionBootstrapCollection $extensions, Source $source, CodeCoverage $codeCoverage, Groups $groups, Logging $logging, Php $php, PHPUnit $phpunit, TestSuiteCollection $testSuite) - { - $this->extensions = $extensions; - $this->source = $source; - $this->codeCoverage = $codeCoverage; - $this->groups = $groups; - $this->logging = $logging; - $this->php = $php; - $this->phpunit = $phpunit; - $this->testSuite = $testSuite; - } - - public function extensions(): ExtensionBootstrapCollection - { - return $this->extensions; - } - - public function source(): Source - { - return $this->source; - } - - public function codeCoverage(): CodeCoverage - { - return $this->codeCoverage; - } - - public function groups(): Groups - { - return $this->groups; - } - - public function logging(): Logging - { - return $this->logging; - } - - public function php(): Php - { - return $this->php; - } - - public function phpunit(): PHPUnit - { - return $this->phpunit; - } - - public function testSuite(): TestSuiteCollection - { - return $this->testSuite; - } - - /** - * @phpstan-assert-if-true DefaultConfiguration $this - */ - public function isDefault(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true LoadedFromFileConfiguration $this - */ - public function wasLoadedFromFile(): bool - { - return false; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php deleted file mode 100644 index 140d64b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php +++ /dev/null @@ -1,169 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\TextUI\Configuration\ConstantCollection; -use PHPUnit\TextUI\Configuration\DirectoryCollection; -use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; -use PHPUnit\TextUI\Configuration\FileCollection; -use PHPUnit\TextUI\Configuration\FilterDirectoryCollection as CodeCoverageFilterDirectoryCollection; -use PHPUnit\TextUI\Configuration\GroupCollection; -use PHPUnit\TextUI\Configuration\IniSettingCollection; -use PHPUnit\TextUI\Configuration\Php; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\Configuration\VariableCollection; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; -use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class DefaultConfiguration extends Configuration -{ - public static function create(): self - { - return new self( - ExtensionBootstrapCollection::fromArray([]), - new Source( - null, - false, - CodeCoverageFilterDirectoryCollection::fromArray([]), - FileCollection::fromArray([]), - CodeCoverageFilterDirectoryCollection::fromArray([]), - FileCollection::fromArray([]), - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - [ - 'functions' => [], - 'methods' => [], - ], - false, - false, - false, - true, - ), - new CodeCoverage( - false, - true, - false, - false, - null, - null, - null, - null, - null, - null, - null, - ), - new Groups( - GroupCollection::fromArray([]), - GroupCollection::fromArray([]), - ), - new Logging( - null, - null, - null, - null, - ), - new Php( - DirectoryCollection::fromArray([]), - IniSettingCollection::fromArray([]), - ConstantCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - VariableCollection::fromArray([]), - ), - new PHPUnit( - null, - true, - 80, - \PHPUnit\TextUI\Configuration\Configuration::COLOR_DEFAULT, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - null, - false, - false, - false, - false, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - null, - false, - false, - true, - false, - false, - 1, - 1, - 10, - 60, - null, - TestSuiteSorter::ORDER_DEFAULT, - true, - false, - false, - false, - false, - false, - false, - 100, - 0, - ), - TestSuiteCollection::fromArray([]), - ); - } - - public function isDefault(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php deleted file mode 100644 index 60c3c9a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Exception extends RuntimeException implements \PHPUnit\Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php deleted file mode 100644 index 4e4a71f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function str_replace; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Generator -{ - /** - * @var string - */ - private const TEMPLATE = <<<'EOT' - - - - - {tests_directory} - - - - - - {src_directory} - - - - -EOT; - - public function generateDefaultConfiguration(string $schemaLocation, string $bootstrapScript, string $testsDirectory, string $srcDirectory, string $cacheDirectory): string - { - return str_replace( - [ - '{schema_location}', - '{bootstrap_script}', - '{tests_directory}', - '{src_directory}', - '{cache_directory}', - ], - [ - $schemaLocation, - $bootstrapScript, - $testsDirectory, - $srcDirectory, - $cacheDirectory, - ], - self::TEMPLATE, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php deleted file mode 100644 index 1a7cc6b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\TextUI\Configuration\GroupCollection; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Groups -{ - private GroupCollection $include; - private GroupCollection $exclude; - - public function __construct(GroupCollection $include, GroupCollection $exclude) - { - $this->include = $include; - $this->exclude = $exclude; - } - - public function hasInclude(): bool - { - return !$this->include->isEmpty(); - } - - public function include(): GroupCollection - { - return $this->include; - } - - public function hasExclude(): bool - { - return !$this->exclude->isEmpty(); - } - - public function exclude(): GroupCollection - { - return $this->exclude; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php deleted file mode 100644 index e69d137..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; -use PHPUnit\TextUI\Configuration\Php; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; -use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class LoadedFromFileConfiguration extends Configuration -{ - /** - * @var non-empty-string - */ - private string $filename; - private ValidationResult $validationResult; - - /** - * @param non-empty-string $filename - */ - public function __construct(string $filename, ValidationResult $validationResult, ExtensionBootstrapCollection $extensions, Source $source, CodeCoverage $codeCoverage, Groups $groups, Logging $logging, Php $php, PHPUnit $phpunit, TestSuiteCollection $testSuite) - { - $this->filename = $filename; - $this->validationResult = $validationResult; - - parent::__construct( - $extensions, - $source, - $codeCoverage, - $groups, - $logging, - $php, - $phpunit, - $testSuite, - ); - } - - /** - * @return non-empty-string - */ - public function filename(): string - { - return $this->filename; - } - - public function hasValidationErrors(): bool - { - return $this->validationResult->hasValidationErrors(); - } - - public function validationErrors(): string - { - return $this->validationResult->asString(); - } - - public function wasLoadedFromFile(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php deleted file mode 100644 index a1cae29..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php +++ /dev/null @@ -1,1171 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use const DIRECTORY_SEPARATOR; -use const PHP_EOL; -use const PHP_VERSION; -use function assert; -use function defined; -use function dirname; -use function explode; -use function is_numeric; -use function preg_match; -use function realpath; -use function sprintf; -use function str_contains; -use function str_starts_with; -use function strlen; -use function strtolower; -use function substr; -use function trim; -use DOMDocument; -use DOMElement; -use DOMNode; -use DOMNodeList; -use DOMXPath; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\Runner\Version; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\Constant; -use PHPUnit\TextUI\Configuration\ConstantCollection; -use PHPUnit\TextUI\Configuration\Directory; -use PHPUnit\TextUI\Configuration\DirectoryCollection; -use PHPUnit\TextUI\Configuration\ExtensionBootstrap; -use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; -use PHPUnit\TextUI\Configuration\File; -use PHPUnit\TextUI\Configuration\FileCollection; -use PHPUnit\TextUI\Configuration\FilterDirectory; -use PHPUnit\TextUI\Configuration\FilterDirectoryCollection; -use PHPUnit\TextUI\Configuration\Group; -use PHPUnit\TextUI\Configuration\GroupCollection; -use PHPUnit\TextUI\Configuration\IniSetting; -use PHPUnit\TextUI\Configuration\IniSettingCollection; -use PHPUnit\TextUI\Configuration\Php; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\TestDirectory; -use PHPUnit\TextUI\Configuration\TestDirectoryCollection; -use PHPUnit\TextUI\Configuration\TestFile; -use PHPUnit\TextUI\Configuration\TestFileCollection; -use PHPUnit\TextUI\Configuration\TestSuite as TestSuiteConfiguration; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\Configuration\Variable; -use PHPUnit\TextUI\Configuration\VariableCollection; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Clover; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Cobertura; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Crap4j; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Html as CodeCoverageHtml; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Php as CodeCoveragePhp; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Text as CodeCoverageText; -use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Xml as CodeCoverageXml; -use PHPUnit\TextUI\XmlConfiguration\Logging\Junit; -use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; -use PHPUnit\TextUI\XmlConfiguration\Logging\TeamCity; -use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Html as TestDoxHtml; -use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Text as TestDoxText; -use PHPUnit\Util\VersionComparisonOperator; -use PHPUnit\Util\Xml\Loader as XmlLoader; -use PHPUnit\Util\Xml\XmlException; -use SebastianBergmann\CodeCoverage\Report\Html\Colors; -use SebastianBergmann\CodeCoverage\Report\Thresholds; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Loader -{ - /** - * @throws Exception - */ - public function load(string $filename): LoadedFromFileConfiguration - { - try { - $document = (new XmlLoader)->loadFile($filename); - } catch (XmlException $e) { - throw new Exception( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - $xpath = new DOMXPath($document); - - try { - $xsdFilename = (new SchemaFinder)->find(Version::series()); - } catch (CannotFindSchemaException $e) { - throw new Exception( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - - $configurationFileRealpath = realpath($filename); - - assert($configurationFileRealpath !== false && $configurationFileRealpath !== ''); - - $validationResult = (new Validator)->validate($document, $xsdFilename); - - try { - return new LoadedFromFileConfiguration( - $configurationFileRealpath, - $validationResult, - $this->extensions($xpath), - $this->source($configurationFileRealpath, $xpath), - $this->codeCoverage($configurationFileRealpath, $xpath), - $this->groups($xpath), - $this->logging($configurationFileRealpath, $xpath), - $this->php($configurationFileRealpath, $xpath), - $this->phpunit($configurationFileRealpath, $document), - $this->testSuite($configurationFileRealpath, $xpath), - ); - } catch (Throwable $t) { - $message = sprintf( - 'Cannot load XML configuration file %s', - $configurationFileRealpath, - ); - - if ($validationResult->hasValidationErrors()) { - $message .= ' because it has validation errors:' . PHP_EOL . $validationResult->asString(); - } - - throw new Exception($message, previous: $t); - } - } - - private function logging(string $filename, DOMXPath $xpath): Logging - { - $junit = null; - $element = $this->element($xpath, 'logging/junit'); - - if ($element) { - $junit = new Junit( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $teamCity = null; - $element = $this->element($xpath, 'logging/teamcity'); - - if ($element) { - $teamCity = new TeamCity( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $testDoxHtml = null; - $element = $this->element($xpath, 'logging/testdoxHtml'); - - if ($element) { - $testDoxHtml = new TestDoxHtml( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $testDoxText = null; - $element = $this->element($xpath, 'logging/testdoxText'); - - if ($element) { - $testDoxText = new TestDoxText( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - return new Logging( - $junit, - $teamCity, - $testDoxHtml, - $testDoxText, - ); - } - - private function extensions(DOMXPath $xpath): ExtensionBootstrapCollection - { - $extensionBootstrappers = []; - - $bootstrapNodes = $xpath->query('extensions/bootstrap'); - - assert($bootstrapNodes instanceof DOMNodeList); - - foreach ($bootstrapNodes as $bootstrap) { - assert($bootstrap instanceof DOMElement); - - $parameters = []; - - $parameterNodes = $xpath->query('parameter', $bootstrap); - - assert($parameterNodes instanceof DOMNodeList); - - foreach ($parameterNodes as $parameter) { - assert($parameter instanceof DOMElement); - - $parameters[$parameter->getAttribute('name')] = $parameter->getAttribute('value'); - } - - $className = $bootstrap->getAttribute('class'); - - assert($className !== ''); - - $extensionBootstrappers[] = new ExtensionBootstrap( - $className, - $parameters, - ); - } - - return ExtensionBootstrapCollection::fromArray($extensionBootstrappers); - } - - /** - * @return non-empty-string - */ - private function toAbsolutePath(string $filename, string $path): string - { - $path = trim($path); - - if (str_starts_with($path, '/')) { - return $path; - } - - // Matches the following on Windows: - // - \\NetworkComputer\Path - // - \\.\D: - // - \\.\c: - // - C:\Windows - // - C:\windows - // - C:/windows - // - c:/windows - if (defined('PHP_WINDOWS_VERSION_BUILD') && - !empty($path) && - ($path[0] === '\\' || (strlen($path) >= 3 && preg_match('#^[A-Z]:[/\\\]#i', substr($path, 0, 3))))) { - return $path; - } - - if (str_contains($path, '://')) { - return $path; - } - - return dirname($filename) . DIRECTORY_SEPARATOR . $path; - } - - private function source(string $filename, DOMXPath $xpath): Source - { - $baseline = null; - $restrictDeprecations = false; - $restrictNotices = false; - $restrictWarnings = false; - $ignoreSuppressionOfDeprecations = false; - $ignoreSuppressionOfPhpDeprecations = false; - $ignoreSuppressionOfErrors = false; - $ignoreSuppressionOfNotices = false; - $ignoreSuppressionOfPhpNotices = false; - $ignoreSuppressionOfWarnings = false; - $ignoreSuppressionOfPhpWarnings = false; - $ignoreSelfDeprecations = false; - $ignoreDirectDeprecations = false; - $ignoreIndirectDeprecations = false; - $identifyIssueTrigger = true; - - $element = $this->element($xpath, 'source'); - - if ($element) { - $baseline = $this->parseStringAttribute($element, 'baseline'); - - if ($baseline !== null) { - $baseline = $this->toAbsolutePath($filename, $baseline); - } - - $restrictDeprecations = $this->parseBooleanAttribute($element, 'restrictDeprecations', false); - $restrictNotices = $this->parseBooleanAttribute($element, 'restrictNotices', false); - $restrictWarnings = $this->parseBooleanAttribute($element, 'restrictWarnings', false); - $ignoreSuppressionOfDeprecations = $this->parseBooleanAttribute($element, 'ignoreSuppressionOfDeprecations', false); - $ignoreSuppressionOfPhpDeprecations = $this->parseBooleanAttribute($element, 'ignoreSuppressionOfPhpDeprecations', false); - $ignoreSuppressionOfErrors = $this->parseBooleanAttribute($element, 'ignoreSuppressionOfErrors', false); - $ignoreSuppressionOfNotices = $this->parseBooleanAttribute($element, 'ignoreSuppressionOfNotices', false); - $ignoreSuppressionOfPhpNotices = $this->parseBooleanAttribute($element, 'ignoreSuppressionOfPhpNotices', false); - $ignoreSuppressionOfWarnings = $this->parseBooleanAttribute($element, 'ignoreSuppressionOfWarnings', false); - $ignoreSuppressionOfPhpWarnings = $this->parseBooleanAttribute($element, 'ignoreSuppressionOfPhpWarnings', false); - $ignoreSelfDeprecations = $this->parseBooleanAttribute($element, 'ignoreSelfDeprecations', false); - $ignoreDirectDeprecations = $this->parseBooleanAttribute($element, 'ignoreDirectDeprecations', false); - $ignoreIndirectDeprecations = $this->parseBooleanAttribute($element, 'ignoreIndirectDeprecations', false); - $identifyIssueTrigger = $this->parseBooleanAttribute($element, 'identifyIssueTrigger', true); - } - - $deprecationTriggers = [ - 'functions' => [], - 'methods' => [], - ]; - - $functionNodes = $xpath->query('source/deprecationTrigger/function'); - - assert($functionNodes instanceof DOMNodeList); - - foreach ($functionNodes as $functionNode) { - assert($functionNode instanceof DOMElement); - - $deprecationTriggers['functions'][] = $functionNode->textContent; - } - - $methodNodes = $xpath->query('source/deprecationTrigger/method'); - - assert($methodNodes instanceof DOMNodeList); - - foreach ($methodNodes as $methodNode) { - assert($methodNode instanceof DOMElement); - - $deprecationTriggers['methods'][] = $methodNode->textContent; - } - - return new Source( - $baseline, - false, - $this->readFilterDirectories($filename, $xpath, 'source/include/directory'), - $this->readFilterFiles($filename, $xpath, 'source/include/file'), - $this->readFilterDirectories($filename, $xpath, 'source/exclude/directory'), - $this->readFilterFiles($filename, $xpath, 'source/exclude/file'), - $restrictDeprecations, - $restrictNotices, - $restrictWarnings, - $ignoreSuppressionOfDeprecations, - $ignoreSuppressionOfPhpDeprecations, - $ignoreSuppressionOfErrors, - $ignoreSuppressionOfNotices, - $ignoreSuppressionOfPhpNotices, - $ignoreSuppressionOfWarnings, - $ignoreSuppressionOfPhpWarnings, - $deprecationTriggers, - $ignoreSelfDeprecations, - $ignoreDirectDeprecations, - $ignoreIndirectDeprecations, - $identifyIssueTrigger, - ); - } - - private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage - { - $pathCoverage = false; - $includeUncoveredFiles = true; - $ignoreDeprecatedCodeUnits = false; - $disableCodeCoverageIgnore = false; - - $element = $this->element($xpath, 'coverage'); - - if ($element) { - $pathCoverage = $this->parseBooleanAttribute( - $element, - 'pathCoverage', - false, - ); - - $includeUncoveredFiles = $this->parseBooleanAttribute( - $element, - 'includeUncoveredFiles', - true, - ); - - $ignoreDeprecatedCodeUnits = $this->parseBooleanAttribute( - $element, - 'ignoreDeprecatedCodeUnits', - false, - ); - - $disableCodeCoverageIgnore = $this->parseBooleanAttribute( - $element, - 'disableCodeCoverageIgnore', - false, - ); - } - - $clover = null; - $element = $this->element($xpath, 'coverage/report/clover'); - - if ($element) { - $clover = new Clover( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $cobertura = null; - $element = $this->element($xpath, 'coverage/report/cobertura'); - - if ($element) { - $cobertura = new Cobertura( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $crap4j = null; - $element = $this->element($xpath, 'coverage/report/crap4j'); - - if ($element) { - $crap4j = new Crap4j( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputFile'), - ), - ), - $this->parseIntegerAttribute($element, 'threshold', 30), - ); - } - - $html = null; - $element = $this->element($xpath, 'coverage/report/html'); - - if ($element) { - $defaultColors = Colors::default(); - $defaultThresholds = Thresholds::default(); - - $html = new CodeCoverageHtml( - new Directory( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputDirectory'), - ), - ), - $this->parseIntegerAttribute($element, 'lowUpperBound', $defaultThresholds->lowUpperBound()), - $this->parseIntegerAttribute($element, 'highLowerBound', $defaultThresholds->highLowerBound()), - $this->parseStringAttributeWithDefault($element, 'colorSuccessLow', $defaultColors->successLow()), - $this->parseStringAttributeWithDefault($element, 'colorSuccessMedium', $defaultColors->successMedium()), - $this->parseStringAttributeWithDefault($element, 'colorSuccessHigh', $defaultColors->successHigh()), - $this->parseStringAttributeWithDefault($element, 'colorWarning', $defaultColors->warning()), - $this->parseStringAttributeWithDefault($element, 'colorDanger', $defaultColors->danger()), - $this->parseStringAttribute($element, 'customCssFile'), - ); - } - - $php = null; - $element = $this->element($xpath, 'coverage/report/php'); - - if ($element) { - $php = new CodeCoveragePhp( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputFile'), - ), - ), - ); - } - - $text = null; - $element = $this->element($xpath, 'coverage/report/text'); - - if ($element) { - $text = new CodeCoverageText( - new File( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputFile'), - ), - ), - $this->parseBooleanAttribute($element, 'showUncoveredFiles', false), - $this->parseBooleanAttribute($element, 'showOnlySummary', false), - ); - } - - $xml = null; - $element = $this->element($xpath, 'coverage/report/xml'); - - if ($element) { - $xml = new CodeCoverageXml( - new Directory( - $this->toAbsolutePath( - $filename, - (string) $this->parseStringAttribute($element, 'outputDirectory'), - ), - ), - ); - } - - return new CodeCoverage( - $pathCoverage, - $includeUncoveredFiles, - $ignoreDeprecatedCodeUnits, - $disableCodeCoverageIgnore, - $clover, - $cobertura, - $crap4j, - $html, - $php, - $text, - $xml, - ); - } - - private function booleanFromString(string $value, bool $default): bool - { - if (strtolower($value) === 'false') { - return false; - } - - if (strtolower($value) === 'true') { - return true; - } - - return $default; - } - - private function valueFromString(string $value): bool|string - { - if (strtolower($value) === 'false') { - return false; - } - - if (strtolower($value) === 'true') { - return true; - } - - return $value; - } - - private function readFilterDirectories(string $filename, DOMXPath $xpath, string $query): FilterDirectoryCollection - { - $directories = []; - - $directoryNodes = $xpath->query($query); - - assert($directoryNodes instanceof DOMNodeList); - - foreach ($directoryNodes as $directoryNode) { - assert($directoryNode instanceof DOMElement); - - $directoryPath = $directoryNode->textContent; - - if (!$directoryPath) { - continue; - } - - $directories[] = new FilterDirectory( - $this->toAbsolutePath($filename, $directoryPath), - $directoryNode->hasAttribute('prefix') ? $directoryNode->getAttribute('prefix') : '', - $directoryNode->hasAttribute('suffix') ? $directoryNode->getAttribute('suffix') : '.php', - ); - } - - return FilterDirectoryCollection::fromArray($directories); - } - - private function readFilterFiles(string $filename, DOMXPath $xpath, string $query): FileCollection - { - $files = []; - - $fileNodes = $xpath->query($query); - - assert($fileNodes instanceof DOMNodeList); - - foreach ($fileNodes as $fileNode) { - assert($fileNode instanceof DOMNode); - - $filePath = $fileNode->textContent; - - if ($filePath) { - $files[] = new File($this->toAbsolutePath($filename, $filePath)); - } - } - - return FileCollection::fromArray($files); - } - - private function groups(DOMXPath $xpath): Groups - { - $include = []; - $exclude = []; - - $groupNodes = $xpath->query('groups/include/group'); - - assert($groupNodes instanceof DOMNodeList); - - foreach ($groupNodes as $groupNode) { - assert($groupNode instanceof DOMNode); - - $include[] = new Group($groupNode->textContent); - } - - $groupNodes = $xpath->query('groups/exclude/group'); - - assert($groupNodes instanceof DOMNodeList); - - foreach ($groupNodes as $groupNode) { - assert($groupNode instanceof DOMNode); - - $exclude[] = new Group($groupNode->textContent); - } - - return new Groups( - GroupCollection::fromArray($include), - GroupCollection::fromArray($exclude), - ); - } - - private function parseBooleanAttribute(DOMElement $element, string $attribute, bool $default): bool - { - if (!$element->hasAttribute($attribute)) { - return $default; - } - - return $this->booleanFromString( - $element->getAttribute($attribute), - false, - ); - } - - private function parseIntegerAttribute(DOMElement $element, string $attribute, int $default): int - { - if (!$element->hasAttribute($attribute)) { - return $default; - } - - return $this->parseInteger( - $element->getAttribute($attribute), - $default, - ); - } - - private function parseStringAttribute(DOMElement $element, string $attribute): ?string - { - if (!$element->hasAttribute($attribute)) { - return null; - } - - return $element->getAttribute($attribute); - } - - private function parseStringAttributeWithDefault(DOMElement $element, string $attribute, string $default): string - { - if (!$element->hasAttribute($attribute)) { - return $default; - } - - return $element->getAttribute($attribute); - } - - private function parseInteger(string $value, int $default): int - { - if (is_numeric($value)) { - return (int) $value; - } - - return $default; - } - - private function php(string $filename, DOMXPath $xpath): Php - { - $includePaths = []; - - $includePathNodes = $xpath->query('php/includePath'); - - assert($includePathNodes instanceof DOMNodeList); - - foreach ($includePathNodes as $includePath) { - assert($includePath instanceof DOMNode); - - $path = $includePath->textContent; - - if ($path) { - $includePaths[] = new Directory($this->toAbsolutePath($filename, $path)); - } - } - - $iniSettings = []; - - $iniNodes = $xpath->query('php/ini'); - - assert($iniNodes instanceof DOMNodeList); - - foreach ($iniNodes as $ini) { - assert($ini instanceof DOMElement); - - $iniSettings[] = new IniSetting( - $ini->getAttribute('name'), - $ini->getAttribute('value'), - ); - } - - $constants = []; - - $constNodes = $xpath->query('php/const'); - - assert($constNodes instanceof DOMNodeList); - - foreach ($constNodes as $constNode) { - assert($constNode instanceof DOMElement); - - $value = $constNode->getAttribute('value'); - - $constants[] = new Constant( - $constNode->getAttribute('name'), - $this->valueFromString($value), - ); - } - - $variables = [ - 'var' => [], - 'env' => [], - 'post' => [], - 'get' => [], - 'cookie' => [], - 'server' => [], - 'files' => [], - 'request' => [], - ]; - - foreach (['var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request'] as $array) { - $varNodes = $xpath->query('php/' . $array); - - assert($varNodes instanceof DOMNodeList); - - foreach ($varNodes as $var) { - assert($var instanceof DOMElement); - - $name = $var->getAttribute('name'); - $value = $var->getAttribute('value'); - $force = false; - $verbatim = false; - - if ($var->hasAttribute('force')) { - $force = $this->booleanFromString($var->getAttribute('force'), false); - } - - if ($var->hasAttribute('verbatim')) { - $verbatim = $this->booleanFromString($var->getAttribute('verbatim'), false); - } - - if (!$verbatim) { - $value = $this->valueFromString($value); - } - - $variables[$array][] = new Variable($name, $value, $force); - } - } - - return new Php( - DirectoryCollection::fromArray($includePaths), - IniSettingCollection::fromArray($iniSettings), - ConstantCollection::fromArray($constants), - VariableCollection::fromArray($variables['var']), - VariableCollection::fromArray($variables['env']), - VariableCollection::fromArray($variables['post']), - VariableCollection::fromArray($variables['get']), - VariableCollection::fromArray($variables['cookie']), - VariableCollection::fromArray($variables['server']), - VariableCollection::fromArray($variables['files']), - VariableCollection::fromArray($variables['request']), - ); - } - - private function phpunit(string $filename, DOMDocument $document): PHPUnit - { - $executionOrder = TestSuiteSorter::ORDER_DEFAULT; - $defectsFirst = false; - $resolveDependencies = $this->parseBooleanAttribute($document->documentElement, 'resolveDependencies', true); - - if ($document->documentElement->hasAttribute('executionOrder')) { - foreach (explode(',', $document->documentElement->getAttribute('executionOrder')) as $order) { - switch ($order) { - case 'default': - $executionOrder = TestSuiteSorter::ORDER_DEFAULT; - $defectsFirst = false; - $resolveDependencies = true; - - break; - - case 'depends': - $resolveDependencies = true; - - break; - - case 'no-depends': - $resolveDependencies = false; - - break; - - case 'defects': - $defectsFirst = true; - - break; - - case 'duration': - $executionOrder = TestSuiteSorter::ORDER_DURATION; - - break; - - case 'random': - $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED; - - break; - - case 'reverse': - $executionOrder = TestSuiteSorter::ORDER_REVERSED; - - break; - - case 'size': - $executionOrder = TestSuiteSorter::ORDER_SIZE; - - break; - } - } - } - - $cacheDirectory = $this->parseStringAttribute($document->documentElement, 'cacheDirectory'); - - if ($cacheDirectory !== null) { - $cacheDirectory = $this->toAbsolutePath($filename, $cacheDirectory); - } - - $bootstrap = $this->parseStringAttribute($document->documentElement, 'bootstrap'); - - if ($bootstrap !== null) { - $bootstrap = $this->toAbsolutePath($filename, $bootstrap); - } - - $extensionsDirectory = $this->parseStringAttribute($document->documentElement, 'extensionsDirectory'); - - if ($extensionsDirectory !== null) { - $extensionsDirectory = $this->toAbsolutePath($filename, $extensionsDirectory); - } - - $backupStaticProperties = false; - - if ($document->documentElement->hasAttribute('backupStaticProperties')) { - $backupStaticProperties = $this->parseBooleanAttribute($document->documentElement, 'backupStaticProperties', false); - } - - $requireCoverageMetadata = false; - - if ($document->documentElement->hasAttribute('requireCoverageMetadata')) { - $requireCoverageMetadata = $this->parseBooleanAttribute($document->documentElement, 'requireCoverageMetadata', false); - } - - $beStrictAboutCoverageMetadata = false; - - if ($document->documentElement->hasAttribute('beStrictAboutCoverageMetadata')) { - $beStrictAboutCoverageMetadata = $this->parseBooleanAttribute($document->documentElement, 'beStrictAboutCoverageMetadata', false); - } - - $shortenArraysForExportThreshold = $this->parseIntegerAttribute($document->documentElement, 'shortenArraysForExportThreshold', 0); - - if ($shortenArraysForExportThreshold < 0) { - $shortenArraysForExportThreshold = 0; - } - - return new PHPUnit( - $cacheDirectory, - $this->parseBooleanAttribute($document->documentElement, 'cacheResult', true), - $this->parseColumns($document), - $this->parseColors($document), - $this->parseBooleanAttribute($document->documentElement, 'stderr', false), - $this->parseBooleanAttribute($document->documentElement, 'displayDetailsOnAllIssues', false), - $this->parseBooleanAttribute($document->documentElement, 'displayDetailsOnIncompleteTests', false), - $this->parseBooleanAttribute($document->documentElement, 'displayDetailsOnSkippedTests', false), - $this->parseBooleanAttribute($document->documentElement, 'displayDetailsOnTestsThatTriggerDeprecations', false), - $this->parseBooleanAttribute($document->documentElement, 'displayDetailsOnPhpunitDeprecations', false), - $this->parseBooleanAttribute($document->documentElement, 'displayDetailsOnTestsThatTriggerErrors', false), - $this->parseBooleanAttribute($document->documentElement, 'displayDetailsOnTestsThatTriggerNotices', false), - $this->parseBooleanAttribute($document->documentElement, 'displayDetailsOnTestsThatTriggerWarnings', false), - $this->parseBooleanAttribute($document->documentElement, 'reverseDefectList', false), - $requireCoverageMetadata, - $bootstrap, - $this->parseBooleanAttribute($document->documentElement, 'processIsolation', false), - $this->parseBooleanAttribute($document->documentElement, 'failOnAllIssues', false), - $this->parseBooleanAttribute($document->documentElement, 'failOnDeprecation', false), - $this->parseBooleanAttribute($document->documentElement, 'failOnPhpunitDeprecation', false), - $this->parseBooleanAttribute($document->documentElement, 'failOnPhpunitWarning', true), - $this->parseBooleanAttribute($document->documentElement, 'failOnEmptyTestSuite', false), - $this->parseBooleanAttribute($document->documentElement, 'failOnIncomplete', false), - $this->parseBooleanAttribute($document->documentElement, 'failOnNotice', false), - $this->parseBooleanAttribute($document->documentElement, 'failOnRisky', false), - $this->parseBooleanAttribute($document->documentElement, 'failOnSkipped', false), - $this->parseBooleanAttribute($document->documentElement, 'failOnWarning', false), - $this->parseBooleanAttribute($document->documentElement, 'stopOnDefect', false), - $this->parseBooleanAttribute($document->documentElement, 'stopOnDeprecation', false), - $this->parseBooleanAttribute($document->documentElement, 'stopOnError', false), - $this->parseBooleanAttribute($document->documentElement, 'stopOnFailure', false), - $this->parseBooleanAttribute($document->documentElement, 'stopOnIncomplete', false), - $this->parseBooleanAttribute($document->documentElement, 'stopOnNotice', false), - $this->parseBooleanAttribute($document->documentElement, 'stopOnRisky', false), - $this->parseBooleanAttribute($document->documentElement, 'stopOnSkipped', false), - $this->parseBooleanAttribute($document->documentElement, 'stopOnWarning', false), - $extensionsDirectory, - $this->parseBooleanAttribute($document->documentElement, 'beStrictAboutChangesToGlobalState', false), - $this->parseBooleanAttribute($document->documentElement, 'beStrictAboutOutputDuringTests', false), - $this->parseBooleanAttribute($document->documentElement, 'beStrictAboutTestsThatDoNotTestAnything', true), - $beStrictAboutCoverageMetadata, - $this->parseBooleanAttribute($document->documentElement, 'enforceTimeLimit', false), - $this->parseIntegerAttribute($document->documentElement, 'defaultTimeLimit', 1), - $this->parseIntegerAttribute($document->documentElement, 'timeoutForSmallTests', 1), - $this->parseIntegerAttribute($document->documentElement, 'timeoutForMediumTests', 10), - $this->parseIntegerAttribute($document->documentElement, 'timeoutForLargeTests', 60), - $this->parseStringAttribute($document->documentElement, 'defaultTestSuite'), - $executionOrder, - $resolveDependencies, - $defectsFirst, - $this->parseBooleanAttribute($document->documentElement, 'backupGlobals', false), - $backupStaticProperties, - $this->parseBooleanAttribute($document->documentElement, 'testdox', false), - $this->parseBooleanAttribute($document->documentElement, 'testdoxSummary', false), - $this->parseBooleanAttribute($document->documentElement, 'controlGarbageCollector', false), - $this->parseIntegerAttribute($document->documentElement, 'numberOfTestsBeforeGarbageCollection', 100), - $shortenArraysForExportThreshold, - ); - } - - private function parseColors(DOMDocument $document): string - { - $colors = Configuration::COLOR_DEFAULT; - - if ($document->documentElement->hasAttribute('colors')) { - /* only allow boolean for compatibility with previous versions - 'always' only allowed from command line */ - if ($this->booleanFromString($document->documentElement->getAttribute('colors'), false)) { - $colors = Configuration::COLOR_AUTO; - } else { - $colors = Configuration::COLOR_NEVER; - } - } - - return $colors; - } - - private function parseColumns(DOMDocument $document): int|string - { - $columns = 80; - - if ($document->documentElement->hasAttribute('columns')) { - $columns = $document->documentElement->getAttribute('columns'); - - if ($columns !== 'max') { - $columns = $this->parseInteger($columns, 80); - } - } - - return $columns; - } - - private function testSuite(string $filename, DOMXPath $xpath): TestSuiteCollection - { - $testSuites = []; - - foreach ($this->parseTestSuiteElements($xpath) as $element) { - $exclude = []; - - foreach ($element->getElementsByTagName('exclude') as $excludeNode) { - $excludeFile = $excludeNode->textContent; - - if ($excludeFile) { - $exclude[] = new File($this->toAbsolutePath($filename, $excludeFile)); - } - } - - $directories = []; - - foreach ($element->getElementsByTagName('directory') as $directoryNode) { - assert($directoryNode instanceof DOMElement); - - $directory = $directoryNode->textContent; - - if (empty($directory)) { - continue; - } - - $prefix = ''; - - if ($directoryNode->hasAttribute('prefix')) { - $prefix = $directoryNode->getAttribute('prefix'); - } - - $suffix = 'Test.php'; - - if ($directoryNode->hasAttribute('suffix')) { - $suffix = $directoryNode->getAttribute('suffix'); - } - - $phpVersion = PHP_VERSION; - - if ($directoryNode->hasAttribute('phpVersion')) { - $phpVersion = $directoryNode->getAttribute('phpVersion'); - } - - $phpVersionOperator = new VersionComparisonOperator('>='); - - if ($directoryNode->hasAttribute('phpVersionOperator')) { - $phpVersionOperator = new VersionComparisonOperator($directoryNode->getAttribute('phpVersionOperator')); - } - - $groups = []; - - if ($directoryNode->hasAttribute('groups')) { - foreach (explode(',', $directoryNode->getAttribute('groups')) as $group) { - $group = trim($group); - - if (empty($group)) { - continue; - } - - $groups[] = $group; - } - } - - $directories[] = new TestDirectory( - $this->toAbsolutePath($filename, $directory), - $prefix, - $suffix, - $phpVersion, - $phpVersionOperator, - $groups, - ); - } - - $files = []; - - foreach ($element->getElementsByTagName('file') as $fileNode) { - assert($fileNode instanceof DOMElement); - - $file = $fileNode->textContent; - - if (empty($file)) { - continue; - } - - $phpVersion = PHP_VERSION; - - if ($fileNode->hasAttribute('phpVersion')) { - $phpVersion = $fileNode->getAttribute('phpVersion'); - } - - $phpVersionOperator = new VersionComparisonOperator('>='); - - if ($fileNode->hasAttribute('phpVersionOperator')) { - $phpVersionOperator = new VersionComparisonOperator($fileNode->getAttribute('phpVersionOperator')); - } - - $groups = []; - - if ($fileNode->hasAttribute('groups')) { - foreach (explode(',', $fileNode->getAttribute('groups')) as $group) { - $group = trim($group); - - if (empty($group)) { - continue; - } - - $groups[] = $group; - } - } - - $files[] = new TestFile( - $this->toAbsolutePath($filename, $file), - $phpVersion, - $phpVersionOperator, - $groups, - ); - } - - $name = $element->getAttribute('name'); - - assert(!empty($name)); - - $testSuites[] = new TestSuiteConfiguration( - $name, - TestDirectoryCollection::fromArray($directories), - TestFileCollection::fromArray($files), - FileCollection::fromArray($exclude), - ); - } - - return TestSuiteCollection::fromArray($testSuites); - } - - /** - * @return list - */ - private function parseTestSuiteElements(DOMXPath $xpath): array - { - $elements = []; - - $testSuiteNodes = $xpath->query('testsuites/testsuite'); - - assert($testSuiteNodes instanceof DOMNodeList); - - if ($testSuiteNodes->length === 0) { - $testSuiteNodes = $xpath->query('testsuite'); - - assert($testSuiteNodes instanceof DOMNodeList); - } - - if ($testSuiteNodes->length === 1) { - $element = $testSuiteNodes->item(0); - - assert($element instanceof DOMElement); - - $elements[] = $element; - } else { - foreach ($testSuiteNodes as $testSuiteNode) { - assert($testSuiteNode instanceof DOMElement); - - $elements[] = $testSuiteNode; - } - } - - return $elements; - } - - private function element(DOMXPath $xpath, string $element): ?DOMElement - { - $nodes = $xpath->query($element); - - assert($nodes instanceof DOMNodeList); - - if ($nodes->length === 1) { - $node = $nodes->item(0); - - assert($node instanceof DOMElement); - - return $node; - } - - return null; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php deleted file mode 100644 index cf9878d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Junit.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Junit -{ - private File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php deleted file mode 100644 index a37dea5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/Logging.php +++ /dev/null @@ -1,105 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging; - -use PHPUnit\TextUI\XmlConfiguration\Exception; -use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Html as TestDoxHtml; -use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Text as TestDoxText; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Logging -{ - private ?Junit $junit; - private ?TeamCity $teamCity; - private ?TestDoxHtml $testDoxHtml; - private ?TestDoxText $testDoxText; - - public function __construct(?Junit $junit, ?TeamCity $teamCity, ?TestDoxHtml $testDoxHtml, ?TestDoxText $testDoxText) - { - $this->junit = $junit; - $this->teamCity = $teamCity; - $this->testDoxHtml = $testDoxHtml; - $this->testDoxText = $testDoxText; - } - - public function hasJunit(): bool - { - return $this->junit !== null; - } - - /** - * @throws Exception - */ - public function junit(): Junit - { - if ($this->junit === null) { - throw new Exception('Logger "JUnit XML" is not configured'); - } - - return $this->junit; - } - - public function hasTeamCity(): bool - { - return $this->teamCity !== null; - } - - /** - * @throws Exception - */ - public function teamCity(): TeamCity - { - if ($this->teamCity === null) { - throw new Exception('Logger "Team City" is not configured'); - } - - return $this->teamCity; - } - - public function hasTestDoxHtml(): bool - { - return $this->testDoxHtml !== null; - } - - /** - * @throws Exception - */ - public function testDoxHtml(): TestDoxHtml - { - if ($this->testDoxHtml === null) { - throw new Exception('Logger "TestDox HTML" is not configured'); - } - - return $this->testDoxHtml; - } - - public function hasTestDoxText(): bool - { - return $this->testDoxText !== null; - } - - /** - * @throws Exception - */ - public function testDoxText(): TestDoxText - { - if ($this->testDoxText === null) { - throw new Exception('Logger "TestDox Text" is not configured'); - } - - return $this->testDoxText; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php deleted file mode 100644 index daf1cec..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TeamCity.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class TeamCity -{ - private File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php deleted file mode 100644 index 60e9d4d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Html.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Html -{ - private File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php deleted file mode 100644 index ed436c0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox; - -use PHPUnit\TextUI\Configuration\File; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class Text -{ - private File $target; - - public function __construct(File $target) - { - $this->target = $target; - } - - public function target(): File - { - return $this->target; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php deleted file mode 100644 index 20a1de6..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php +++ /dev/null @@ -1,108 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function version_compare; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class MigrationBuilder -{ - private const AVAILABLE_MIGRATIONS = [ - '8.5' => [ - RemoveLogTypes::class, - ], - - '9.2' => [ - RemoveCacheTokensAttribute::class, - IntroduceCoverageElement::class, - MoveAttributesFromRootToCoverage::class, - MoveAttributesFromFilterWhitelistToCoverage::class, - MoveWhitelistIncludesToCoverage::class, - MoveWhitelistExcludesToCoverage::class, - RemoveEmptyFilter::class, - CoverageCloverToReport::class, - CoverageCrap4jToReport::class, - CoverageHtmlToReport::class, - CoveragePhpToReport::class, - CoverageTextToReport::class, - CoverageXmlToReport::class, - ConvertLogTypes::class, - ], - - '9.5' => [ - RemoveListeners::class, - RemoveTestSuiteLoaderAttributes::class, - RemoveCacheResultFileAttribute::class, - RemoveCoverageElementCacheDirectoryAttribute::class, - RemoveCoverageElementProcessUncoveredFilesAttribute::class, - IntroduceCacheDirectoryAttribute::class, - RenameBackupStaticAttributesAttribute::class, - RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute::class, - RemoveBeStrictAboutTodoAnnotatedTestsAttribute::class, - RemovePrinterAttributes::class, - RemoveVerboseAttribute::class, - RenameForceCoversAnnotationAttribute::class, - RenameBeStrictAboutCoversAnnotationAttribute::class, - RemoveConversionToExceptionsAttributes::class, - RemoveNoInteractionAttribute::class, - RemoveLoggingElements::class, - RemoveTestDoxGroupsElement::class, - ], - - '10.0' => [ - MoveCoverageDirectoriesToSource::class, - ], - - '10.4' => [ - RemoveBeStrictAboutTodoAnnotatedTestsAttribute::class, - ], - - '10.5' => [ - RemoveRegisterMockObjectsFromTestArgumentsRecursivelyAttribute::class, - ], - - '11.0' => [ - ReplaceRestrictDeprecationsWithIgnoreDeprecations::class, - ], - - '11.1' => [ - RemoveCacheResultFileAttribute::class, - RemoveCoverageElementCacheDirectoryAttribute::class, - ], - - '11.2' => [ - RemoveBeStrictAboutTodoAnnotatedTestsAttribute::class, - ], - ]; - - /** - * @return non-empty-list - */ - public function build(string $fromVersion): array - { - $stack = [new UpdateSchemaLocation]; - - foreach (self::AVAILABLE_MIGRATIONS as $version => $migrations) { - if (version_compare($version, $fromVersion, '<')) { - continue; - } - - foreach ($migrations as $migration) { - $stack[] = new $migration; - } - } - - return $stack; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php deleted file mode 100644 index bb35aca..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class MigrationException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php deleted file mode 100644 index 81a0e32..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ConvertLogTypes.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ConvertLogTypes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $logging = $document->getElementsByTagName('logging')->item(0); - - if (!$logging instanceof DOMElement) { - return; - } - $types = [ - 'junit' => 'junit', - 'teamcity' => 'teamcity', - 'testdox-html' => 'testdoxHtml', - 'testdox-text' => 'testdoxText', - 'testdox-xml' => 'testdoxXml', - 'plain' => 'text', - ]; - - $logNodes = []; - - foreach ($logging->getElementsByTagName('log') as $logNode) { - if (!isset($types[$logNode->getAttribute('type')])) { - continue; - } - - $logNodes[] = $logNode; - } - - foreach ($logNodes as $oldNode) { - $newLogNode = $document->createElement($types[$oldNode->getAttribute('type')]); - $newLogNode->setAttribute('outputFile', $oldNode->getAttribute('target')); - - $logging->replaceChild($newLogNode, $oldNode); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php deleted file mode 100644 index 0dfee46..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCloverToReport.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoverageCloverToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-clover'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $clover = $logNode->ownerDocument->createElement('clover'); - - $clover->setAttribute('outputFile', $logNode->getAttribute('target')); - - return $clover; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php deleted file mode 100644 index f0aac5c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageCrap4jToReport.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoverageCrap4jToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-crap4j'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $crap4j = $logNode->ownerDocument->createElement('crap4j'); - $crap4j->setAttribute('outputFile', $logNode->getAttribute('target')); - - $this->migrateAttributes($logNode, $crap4j, ['threshold']); - - return $crap4j; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php deleted file mode 100644 index f6b7982..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageHtmlToReport.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoverageHtmlToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-html'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $html = $logNode->ownerDocument->createElement('html'); - $html->setAttribute('outputDirectory', $logNode->getAttribute('target')); - - $this->migrateAttributes($logNode, $html, ['lowUpperBound', 'highLowerBound']); - - return $html; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php deleted file mode 100644 index 7e36270..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoveragePhpToReport.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoveragePhpToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-php'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $php = $logNode->ownerDocument->createElement('php'); - $php->setAttribute('outputFile', $logNode->getAttribute('target')); - - return $php; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php deleted file mode 100644 index d463cef..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageTextToReport.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoverageTextToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-text'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $text = $logNode->ownerDocument->createElement('text'); - $text->setAttribute('outputFile', $logNode->getAttribute('target')); - - $this->migrateAttributes($logNode, $text, ['showUncoveredFiles', 'showOnlySummary']); - - return $text; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php deleted file mode 100644 index 3db8997..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class CoverageXmlToReport extends LogToReportMigration -{ - protected function forType(): string - { - return 'coverage-xml'; - } - - protected function toReportFormat(DOMElement $logNode): DOMElement - { - $xml = $logNode->ownerDocument->createElement('xml'); - $xml->setAttribute('outputDirectory', $logNode->getAttribute('target')); - - return $xml; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php deleted file mode 100644 index 87624cc..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class IntroduceCacheDirectoryAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('cacheDirectory')) { - return; - } - - $root->setAttribute('cacheDirectory', '.phpunit.cache'); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php deleted file mode 100644 index 9334c1f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class IntroduceCoverageElement implements Migration -{ - public function migrate(DOMDocument $document): void - { - $coverage = $document->createElement('coverage'); - - $document->documentElement->insertBefore( - $coverage, - $document->documentElement->firstChild, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php deleted file mode 100644 index 08815cb..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php +++ /dev/null @@ -1,94 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use function sprintf; -use DOMDocument; -use DOMElement; -use DOMXPath; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class LogToReportMigration implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - $logNode = $this->findLogNode($document); - - if ($logNode === null) { - return; - } - - $reportChild = $this->toReportFormat($logNode); - - $report = $coverage->getElementsByTagName('report')->item(0); - - if ($report === null) { - $report = $coverage->appendChild($document->createElement('report')); - } - - $report->appendChild($reportChild); - $logNode->parentNode->removeChild($logNode); - } - - /** - * @param list $attributes - */ - protected function migrateAttributes(DOMElement $src, DOMElement $dest, array $attributes): void - { - foreach ($attributes as $attr) { - if (!$src->hasAttribute($attr)) { - continue; - } - - $dest->setAttribute($attr, $src->getAttribute($attr)); - $src->removeAttribute($attr); - } - } - - abstract protected function forType(): string; - - abstract protected function toReportFormat(DOMElement $logNode): DOMElement; - - private function findLogNode(DOMDocument $document): ?DOMElement - { - $xpath = new DOMXPath($document); - - $logNode = $xpath->query( - sprintf( - '//logging/log[@type="%s"]', - $this->forType(), - ), - ); - - assert($logNode !== false); - - $logNode = $logNode->item(0); - - if (!$logNode instanceof DOMElement) { - return null; - } - - return $logNode; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php deleted file mode 100644 index 6fd0524..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Migration -{ - public function migrate(DOMDocument $document): void; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php deleted file mode 100644 index 2fe4d20..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class MoveAttributesFromFilterWhitelistToCoverage implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $whitelist = $document->getElementsByTagName('whitelist')->item(0); - - if (!$whitelist) { - return; - } - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - $map = [ - 'addUncoveredFilesFromWhitelist' => 'includeUncoveredFiles', - 'processUncoveredFilesFromWhitelist' => 'processUncoveredFiles', - ]; - - foreach ($map as $old => $new) { - if (!$whitelist->hasAttribute($old)) { - continue; - } - - $coverage->setAttribute($new, $whitelist->getAttribute($old)); - $whitelist->removeAttribute($old); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php deleted file mode 100644 index f0e47b9..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class MoveAttributesFromRootToCoverage implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $map = [ - 'disableCodeCoverageIgnore' => 'disableCodeCoverageIgnore', - 'ignoreDeprecatedCodeUnitsFromCodeCoverage' => 'ignoreDeprecatedCodeUnits', - ]; - - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - foreach ($map as $old => $new) { - if (!$root->hasAttribute($old)) { - continue; - } - - $coverage->setAttribute($new, $root->getAttribute($old)); - $root->removeAttribute($old); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php deleted file mode 100644 index 4dd37ea..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; -use DOMXPath; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class MoveCoverageDirectoriesToSource implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $source = $document->getElementsByTagName('source')->item(0); - - if ($source !== null) { - return; - } - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if ($coverage === null) { - return; - } - - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - $source = $document->createElement('source'); - $root->appendChild($source); - - $xpath = new DOMXPath($document); - - foreach (['include', 'exclude'] as $element) { - $nodes = $xpath->query('//coverage/' . $element); - - assert($nodes !== false); - - foreach (SnapshotNodeList::fromNodeList($nodes) as $node) { - $source->appendChild($node); - } - } - - if ($coverage->childElementCount !== 0) { - return; - } - - assert($coverage->parentNode !== null); - - $coverage->parentNode->removeChild($coverage); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php deleted file mode 100644 index 09641bb..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use function in_array; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class MoveWhitelistExcludesToCoverage implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $whitelist = $document->getElementsByTagName('whitelist')->item(0); - - if ($whitelist === null) { - return; - } - - $excludeNodes = SnapshotNodeList::fromNodeList($whitelist->getElementsByTagName('exclude')); - - if ($excludeNodes->count() === 0) { - return; - } - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - $targetExclude = $coverage->getElementsByTagName('exclude')->item(0); - - if ($targetExclude === null) { - $targetExclude = $coverage->appendChild( - $document->createElement('exclude'), - ); - } - - foreach ($excludeNodes as $excludeNode) { - assert($excludeNode instanceof DOMElement); - - foreach (SnapshotNodeList::fromNodeList($excludeNode->childNodes) as $child) { - if (!$child instanceof DOMElement || !in_array($child->nodeName, ['directory', 'file'], true)) { - continue; - } - - $targetExclude->appendChild($child); - } - - if ($excludeNode->getElementsByTagName('*')->count() !== 0) { - throw new MigrationException('Dangling child elements in exclude found.'); - } - - $whitelist->removeChild($excludeNode); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php deleted file mode 100644 index 9990124..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class MoveWhitelistIncludesToCoverage implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $whitelist = $document->getElementsByTagName('whitelist')->item(0); - - if ($whitelist === null) { - return; - } - - $coverage = $document->getElementsByTagName('coverage')->item(0); - - if (!$coverage instanceof DOMElement) { - throw new MigrationException('Unexpected state - No coverage element'); - } - - $include = $document->createElement('include'); - $coverage->appendChild($include); - - foreach (SnapshotNodeList::fromNodeList($whitelist->childNodes) as $child) { - if (!$child instanceof DOMElement) { - continue; - } - - if (!($child->nodeName === 'directory' || $child->nodeName === 'file')) { - continue; - } - - $include->appendChild($child); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php deleted file mode 100644 index cdb9077..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('beStrictAboutResourceUsageDuringSmallTests')) { - $root->removeAttribute('beStrictAboutResourceUsageDuringSmallTests'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php deleted file mode 100644 index 1858e67..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveBeStrictAboutTodoAnnotatedTestsAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('beStrictAboutTodoAnnotatedTests')) { - $root->removeAttribute('beStrictAboutTodoAnnotatedTests'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php deleted file mode 100644 index a5c51c4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheResultFileAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveCacheResultFileAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('cacheResultFile')) { - $root->removeAttribute('cacheResultFile'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php deleted file mode 100644 index 69bf38a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCacheTokensAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveCacheTokensAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('cacheTokens')) { - $root->removeAttribute('cacheTokens'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php deleted file mode 100644 index a908aee..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveConversionToExceptionsAttributes.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveConversionToExceptionsAttributes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('convertDeprecationsToExceptions')) { - $root->removeAttribute('convertDeprecationsToExceptions'); - } - - if ($root->hasAttribute('convertErrorsToExceptions')) { - $root->removeAttribute('convertErrorsToExceptions'); - } - - if ($root->hasAttribute('convertNoticesToExceptions')) { - $root->removeAttribute('convertNoticesToExceptions'); - } - - if ($root->hasAttribute('convertWarningsToExceptions')) { - $root->removeAttribute('convertWarningsToExceptions'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php deleted file mode 100644 index c26d207..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementCacheDirectoryAttribute.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveCoverageElementCacheDirectoryAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $node = $document->getElementsByTagName('coverage')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - if ($node->hasAttribute('cacheDirectory')) { - $node->removeAttribute('cacheDirectory'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php deleted file mode 100644 index 3476862..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveCoverageElementProcessUncoveredFilesAttribute.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveCoverageElementProcessUncoveredFilesAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $node = $document->getElementsByTagName('coverage')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - if ($node->hasAttribute('processUncoveredFiles')) { - $node->removeAttribute('processUncoveredFiles'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php deleted file mode 100644 index a831e20..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveEmptyFilter.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function sprintf; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveEmptyFilter implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $whitelist = $document->getElementsByTagName('whitelist')->item(0); - - if ($whitelist instanceof DOMElement) { - $this->ensureEmpty($whitelist); - $whitelist->parentNode->removeChild($whitelist); - } - - $filter = $document->getElementsByTagName('filter')->item(0); - - if ($filter instanceof DOMElement) { - $this->ensureEmpty($filter); - $filter->parentNode->removeChild($filter); - } - } - - /** - * @throws MigrationException - */ - private function ensureEmpty(DOMElement $element): void - { - if ($element->attributes->length > 0) { - throw new MigrationException(sprintf('%s element has unexpected attributes', $element->nodeName)); - } - - if ($element->getElementsByTagName('*')->length > 0) { - throw new MigrationException(sprintf('%s element has unexpected children', $element->nodeName)); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php deleted file mode 100644 index bf28899..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveListeners.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveListeners implements Migration -{ - public function migrate(DOMDocument $document): void - { - $node = $document->getElementsByTagName('listeners')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - $node->parentNode->removeChild($node); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php deleted file mode 100644 index 46ee55e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLogTypes.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveLogTypes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $logging = $document->getElementsByTagName('logging')->item(0); - - if (!$logging instanceof DOMElement) { - return; - } - - foreach (SnapshotNodeList::fromNodeList($logging->getElementsByTagName('log')) as $logNode) { - assert($logNode instanceof DOMElement); - - switch ($logNode->getAttribute('type')) { - case 'json': - case 'tap': - $logging->removeChild($logNode); - } - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php deleted file mode 100644 index ccccb81..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveLoggingElements.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; -use DOMXPath; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveLoggingElements implements Migration -{ - public function migrate(DOMDocument $document): void - { - $this->removeTestDoxElement($document); - $this->removeTextElement($document); - } - - private function removeTestDoxElement(DOMDocument $document): void - { - $nodes = (new DOMXPath($document))->query('logging/testdoxXml'); - - assert($nodes !== false); - - $node = $nodes->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - $node->parentNode->removeChild($node); - } - - private function removeTextElement(DOMDocument $document): void - { - $nodes = (new DOMXPath($document))->query('logging/text'); - - assert($nodes !== false); - - $node = $nodes->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - $node->parentNode->removeChild($node); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php deleted file mode 100644 index 897cccd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveNoInteractionAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveNoInteractionAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('noInteraction')) { - $root->removeAttribute('noInteraction'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php deleted file mode 100644 index 84f4bcf..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemovePrinterAttributes.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemovePrinterAttributes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('printerClass')) { - $root->removeAttribute('printerClass'); - } - - if ($root->hasAttribute('printerFile')) { - $root->removeAttribute('printerFile'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveRegisterMockObjectsFromTestArgumentsRecursivelyAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveRegisterMockObjectsFromTestArgumentsRecursivelyAttribute.php deleted file mode 100644 index e2ff305..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveRegisterMockObjectsFromTestArgumentsRecursivelyAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveRegisterMockObjectsFromTestArgumentsRecursivelyAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('registerMockObjectsFromTestArgumentsRecursively')) { - $root->removeAttribute('registerMockObjectsFromTestArgumentsRecursively'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php deleted file mode 100644 index ea5a692..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestDoxGroupsElement.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveTestDoxGroupsElement implements Migration -{ - public function migrate(DOMDocument $document): void - { - $node = $document->getElementsByTagName('testdoxGroups')->item(0); - - if (!$node instanceof DOMElement || $node->parentNode === null) { - return; - } - - $node->parentNode->removeChild($node); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php deleted file mode 100644 index 284dda2..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveTestSuiteLoaderAttributes.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveTestSuiteLoaderAttributes implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('testSuiteLoaderClass')) { - $root->removeAttribute('testSuiteLoaderClass'); - } - - if ($root->hasAttribute('testSuiteLoaderFile')) { - $root->removeAttribute('testSuiteLoaderFile'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php deleted file mode 100644 index d4aa660..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveVerboseAttribute.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RemoveVerboseAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('verbose')) { - $root->removeAttribute('verbose'); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php deleted file mode 100644 index c2de95c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RenameBackupStaticAttributesAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('backupStaticProperties')) { - return; - } - - if (!$root->hasAttribute('backupStaticAttributes')) { - return; - } - - $root->setAttribute('backupStaticProperties', $root->getAttribute('backupStaticAttributes')); - $root->removeAttribute('backupStaticAttributes'); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php deleted file mode 100644 index dda890b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RenameBeStrictAboutCoversAnnotationAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('beStrictAboutCoverageMetadata')) { - return; - } - - if (!$root->hasAttribute('beStrictAboutCoversAnnotation')) { - return; - } - - $root->setAttribute('beStrictAboutCoverageMetadata', $root->getAttribute('beStrictAboutCoversAnnotation')); - $root->removeAttribute('beStrictAboutCoversAnnotation'); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php deleted file mode 100644 index 707aff8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class RenameForceCoversAnnotationAttribute implements Migration -{ - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - if ($root->hasAttribute('requireCoverageMetadata')) { - return; - } - - if (!$root->hasAttribute('forceCoversAnnotation')) { - return; - } - - $root->setAttribute('requireCoverageMetadata', $root->getAttribute('forceCoversAnnotation')); - $root->removeAttribute('forceCoversAnnotation'); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ReplaceRestrictDeprecationsWithIgnoreDeprecations.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ReplaceRestrictDeprecationsWithIgnoreDeprecations.php deleted file mode 100644 index 12cb1e7..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/ReplaceRestrictDeprecationsWithIgnoreDeprecations.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use DOMDocument; -use DOMElement; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ReplaceRestrictDeprecationsWithIgnoreDeprecations implements Migration -{ - /** - * @throws MigrationException - */ - public function migrate(DOMDocument $document): void - { - $source = $document->getElementsByTagName('source')->item(0); - - if ($source === null) { - return; - } - - assert($source instanceof DOMElement); - - if (!$source->hasAttribute('restrictDeprecations')) { - return; - } - - $restrictDeprecations = $source->getAttribute('restrictDeprecations') === 'true'; - - $source->removeAttribute('restrictDeprecations'); - - if (!$restrictDeprecations || - $source->hasAttribute('ignoreIndirectDeprecations')) { - return; - } - - $source->setAttribute('ignoreIndirectDeprecations', 'true'); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php deleted file mode 100644 index 8753218..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use function str_contains; -use DOMDocument; -use DOMElement; -use PHPUnit\Runner\Version; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class UpdateSchemaLocation implements Migration -{ - private const NAMESPACE_URI = 'http://www.w3.org/2001/XMLSchema-instance'; - private const LOCAL_NAME_SCHEMA_LOCATION = 'noNamespaceSchemaLocation'; - - public function migrate(DOMDocument $document): void - { - $root = $document->documentElement; - - assert($root instanceof DOMElement); - - $existingSchemaLocation = $root->getAttributeNS(self::NAMESPACE_URI, self::LOCAL_NAME_SCHEMA_LOCATION); - - if (str_contains($existingSchemaLocation, '://') === false) { // If the current schema location is a relative path, don't update it - return; - } - - $root->setAttributeNS( - self::NAMESPACE_URI, - 'xsi:' . self::LOCAL_NAME_SCHEMA_LOCATION, - 'https://schema.phpunit.de/' . Version::series() . '/phpunit.xsd', - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php deleted file mode 100644 index 4649dec..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use PHPUnit\Runner\Version; -use PHPUnit\Util\Xml\Loader as XmlLoader; -use PHPUnit\Util\Xml\XmlException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Migrator -{ - /** - * @throws Exception - * @throws MigrationException - * @throws XmlException - */ - public function migrate(string $filename): string - { - $origin = (new SchemaDetector)->detect($filename); - - if (!$origin->detected()) { - throw new Exception('The file does not validate against any known schema'); - } - - if ($origin->version() === Version::series()) { - throw new Exception('The file does not need to be migrated'); - } - - $configurationDocument = (new XmlLoader)->loadFile($filename); - - foreach ((new MigrationBuilder)->build($origin->version()) as $migration) { - $migration->migrate($configurationDocument); - } - - $configurationDocument->formatOutput = true; - $configurationDocument->preserveWhiteSpace = false; - - $xml = $configurationDocument->saveXML(); - - assert($xml !== false); - - return $xml; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php deleted file mode 100644 index 8941681..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function count; -use ArrayIterator; -use Countable; -use DOMNode; -use DOMNodeList; -use IteratorAggregate; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @template-implements IteratorAggregate - */ -final class SnapshotNodeList implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $nodes = []; - - /** - * @param DOMNodeList $list - */ - public static function fromNodeList(DOMNodeList $list): self - { - $snapshot = new self; - - foreach ($list as $node) { - $snapshot->nodes[] = $node; - } - - return $snapshot; - } - - public function count(): int - { - return count($this->nodes); - } - - /** - * @return ArrayIterator - */ - public function getIterator(): ArrayIterator - { - return new ArrayIterator($this->nodes); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php deleted file mode 100644 index 0e0c0a7..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php +++ /dev/null @@ -1,501 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class PHPUnit -{ - private ?string $cacheDirectory; - private bool $cacheResult; - private int|string $columns; - private string $colors; - private bool $stderr; - private bool $displayDetailsOnAllIssues; - private bool $displayDetailsOnIncompleteTests; - private bool $displayDetailsOnSkippedTests; - private bool $displayDetailsOnTestsThatTriggerDeprecations; - private bool $displayDetailsOnPhpunitDeprecations; - private bool $displayDetailsOnTestsThatTriggerErrors; - private bool $displayDetailsOnTestsThatTriggerNotices; - private bool $displayDetailsOnTestsThatTriggerWarnings; - private bool $reverseDefectList; - private bool $requireCoverageMetadata; - private ?string $bootstrap; - private bool $processIsolation; - private bool $failOnAllIssues; - private bool $failOnDeprecation; - private bool $failOnPhpunitDeprecation; - private bool $failOnPhpunitWarning; - private bool $failOnEmptyTestSuite; - private bool $failOnIncomplete; - private bool $failOnNotice; - private bool $failOnRisky; - private bool $failOnSkipped; - private bool $failOnWarning; - private bool $stopOnDefect; - private bool $stopOnDeprecation; - private bool $stopOnError; - private bool $stopOnFailure; - private bool $stopOnIncomplete; - private bool $stopOnNotice; - private bool $stopOnRisky; - private bool $stopOnSkipped; - private bool $stopOnWarning; - - /** - * @var ?non-empty-string - */ - private ?string $extensionsDirectory; - private bool $beStrictAboutChangesToGlobalState; - private bool $beStrictAboutOutputDuringTests; - private bool $beStrictAboutTestsThatDoNotTestAnything; - private bool $beStrictAboutCoverageMetadata; - private bool $enforceTimeLimit; - private int $defaultTimeLimit; - private int $timeoutForSmallTests; - private int $timeoutForMediumTests; - private int $timeoutForLargeTests; - private ?string $defaultTestSuite; - private int $executionOrder; - private bool $resolveDependencies; - private bool $defectsFirst; - private bool $backupGlobals; - private bool $backupStaticProperties; - private bool $testdoxPrinter; - private bool $testdoxPrinterSummary; - private bool $controlGarbageCollector; - private int $numberOfTestsBeforeGarbageCollection; - - /** - * @var non-negative-int - */ - private int $shortenArraysForExportThreshold; - - /** - * @param ?non-empty-string $extensionsDirectory - * @param non-negative-int $shortenArraysForExportThreshold - */ - public function __construct(?string $cacheDirectory, bool $cacheResult, int|string $columns, string $colors, bool $stderr, bool $displayDetailsOnAllIssues, bool $displayDetailsOnIncompleteTests, bool $displayDetailsOnSkippedTests, bool $displayDetailsOnTestsThatTriggerDeprecations, bool $displayDetailsOnPhpunitDeprecations, bool $displayDetailsOnTestsThatTriggerErrors, bool $displayDetailsOnTestsThatTriggerNotices, bool $displayDetailsOnTestsThatTriggerWarnings, bool $reverseDefectList, bool $requireCoverageMetadata, ?string $bootstrap, bool $processIsolation, bool $failOnAllIssues, bool $failOnDeprecation, bool $failOnPhpunitDeprecation, bool $failOnPhpunitWarning, bool $failOnEmptyTestSuite, bool $failOnIncomplete, bool $failOnNotice, bool $failOnRisky, bool $failOnSkipped, bool $failOnWarning, bool $stopOnDefect, bool $stopOnDeprecation, bool $stopOnError, bool $stopOnFailure, bool $stopOnIncomplete, bool $stopOnNotice, bool $stopOnRisky, bool $stopOnSkipped, bool $stopOnWarning, ?string $extensionsDirectory, bool $beStrictAboutChangesToGlobalState, bool $beStrictAboutOutputDuringTests, bool $beStrictAboutTestsThatDoNotTestAnything, bool $beStrictAboutCoverageMetadata, bool $enforceTimeLimit, int $defaultTimeLimit, int $timeoutForSmallTests, int $timeoutForMediumTests, int $timeoutForLargeTests, ?string $defaultTestSuite, int $executionOrder, bool $resolveDependencies, bool $defectsFirst, bool $backupGlobals, bool $backupStaticProperties, bool $testdoxPrinter, bool $testdoxPrinterSummary, bool $controlGarbageCollector, int $numberOfTestsBeforeGarbageCollection, int $shortenArraysForExportThreshold) - { - $this->cacheDirectory = $cacheDirectory; - $this->cacheResult = $cacheResult; - $this->columns = $columns; - $this->colors = $colors; - $this->stderr = $stderr; - $this->displayDetailsOnAllIssues = $displayDetailsOnAllIssues; - $this->displayDetailsOnIncompleteTests = $displayDetailsOnIncompleteTests; - $this->displayDetailsOnSkippedTests = $displayDetailsOnSkippedTests; - $this->displayDetailsOnTestsThatTriggerDeprecations = $displayDetailsOnTestsThatTriggerDeprecations; - $this->displayDetailsOnPhpunitDeprecations = $displayDetailsOnPhpunitDeprecations; - $this->displayDetailsOnTestsThatTriggerErrors = $displayDetailsOnTestsThatTriggerErrors; - $this->displayDetailsOnTestsThatTriggerNotices = $displayDetailsOnTestsThatTriggerNotices; - $this->displayDetailsOnTestsThatTriggerWarnings = $displayDetailsOnTestsThatTriggerWarnings; - $this->reverseDefectList = $reverseDefectList; - $this->requireCoverageMetadata = $requireCoverageMetadata; - $this->bootstrap = $bootstrap; - $this->processIsolation = $processIsolation; - $this->failOnAllIssues = $failOnAllIssues; - $this->failOnDeprecation = $failOnDeprecation; - $this->failOnPhpunitDeprecation = $failOnPhpunitDeprecation; - $this->failOnPhpunitWarning = $failOnPhpunitWarning; - $this->failOnEmptyTestSuite = $failOnEmptyTestSuite; - $this->failOnIncomplete = $failOnIncomplete; - $this->failOnNotice = $failOnNotice; - $this->failOnRisky = $failOnRisky; - $this->failOnSkipped = $failOnSkipped; - $this->failOnWarning = $failOnWarning; - $this->stopOnDefect = $stopOnDefect; - $this->stopOnDeprecation = $stopOnDeprecation; - $this->stopOnError = $stopOnError; - $this->stopOnFailure = $stopOnFailure; - $this->stopOnIncomplete = $stopOnIncomplete; - $this->stopOnNotice = $stopOnNotice; - $this->stopOnRisky = $stopOnRisky; - $this->stopOnSkipped = $stopOnSkipped; - $this->stopOnWarning = $stopOnWarning; - $this->extensionsDirectory = $extensionsDirectory; - $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; - $this->beStrictAboutOutputDuringTests = $beStrictAboutOutputDuringTests; - $this->beStrictAboutTestsThatDoNotTestAnything = $beStrictAboutTestsThatDoNotTestAnything; - $this->beStrictAboutCoverageMetadata = $beStrictAboutCoverageMetadata; - $this->enforceTimeLimit = $enforceTimeLimit; - $this->defaultTimeLimit = $defaultTimeLimit; - $this->timeoutForSmallTests = $timeoutForSmallTests; - $this->timeoutForMediumTests = $timeoutForMediumTests; - $this->timeoutForLargeTests = $timeoutForLargeTests; - $this->defaultTestSuite = $defaultTestSuite; - $this->executionOrder = $executionOrder; - $this->resolveDependencies = $resolveDependencies; - $this->defectsFirst = $defectsFirst; - $this->backupGlobals = $backupGlobals; - $this->backupStaticProperties = $backupStaticProperties; - $this->testdoxPrinter = $testdoxPrinter; - $this->testdoxPrinterSummary = $testdoxPrinterSummary; - $this->controlGarbageCollector = $controlGarbageCollector; - $this->numberOfTestsBeforeGarbageCollection = $numberOfTestsBeforeGarbageCollection; - $this->shortenArraysForExportThreshold = $shortenArraysForExportThreshold; - } - - /** - * @phpstan-assert-if-true !null $this->cacheDirectory - */ - public function hasCacheDirectory(): bool - { - return $this->cacheDirectory !== null; - } - - /** - * @throws Exception - */ - public function cacheDirectory(): string - { - if (!$this->hasCacheDirectory()) { - throw new Exception('Cache directory is not configured'); - } - - return $this->cacheDirectory; - } - - public function cacheResult(): bool - { - return $this->cacheResult; - } - - public function columns(): int|string - { - return $this->columns; - } - - public function colors(): string - { - return $this->colors; - } - - public function stderr(): bool - { - return $this->stderr; - } - - public function displayDetailsOnAllIssues(): bool - { - return $this->displayDetailsOnAllIssues; - } - - public function displayDetailsOnIncompleteTests(): bool - { - return $this->displayDetailsOnIncompleteTests; - } - - public function displayDetailsOnSkippedTests(): bool - { - return $this->displayDetailsOnSkippedTests; - } - - public function displayDetailsOnTestsThatTriggerDeprecations(): bool - { - return $this->displayDetailsOnTestsThatTriggerDeprecations; - } - - public function displayDetailsOnPhpunitDeprecations(): bool - { - return $this->displayDetailsOnPhpunitDeprecations; - } - - public function displayDetailsOnTestsThatTriggerErrors(): bool - { - return $this->displayDetailsOnTestsThatTriggerErrors; - } - - public function displayDetailsOnTestsThatTriggerNotices(): bool - { - return $this->displayDetailsOnTestsThatTriggerNotices; - } - - public function displayDetailsOnTestsThatTriggerWarnings(): bool - { - return $this->displayDetailsOnTestsThatTriggerWarnings; - } - - public function reverseDefectList(): bool - { - return $this->reverseDefectList; - } - - public function requireCoverageMetadata(): bool - { - return $this->requireCoverageMetadata; - } - - /** - * @phpstan-assert-if-true !null $this->bootstrap - */ - public function hasBootstrap(): bool - { - return $this->bootstrap !== null; - } - - /** - * @throws Exception - */ - public function bootstrap(): string - { - if (!$this->hasBootstrap()) { - throw new Exception('Bootstrap script is not configured'); - } - - return $this->bootstrap; - } - - public function processIsolation(): bool - { - return $this->processIsolation; - } - - public function failOnAllIssues(): bool - { - return $this->failOnAllIssues; - } - - public function failOnDeprecation(): bool - { - return $this->failOnDeprecation; - } - - public function failOnPhpunitDeprecation(): bool - { - return $this->failOnPhpunitDeprecation; - } - - public function failOnPhpunitWarning(): bool - { - return $this->failOnPhpunitWarning; - } - - public function failOnEmptyTestSuite(): bool - { - return $this->failOnEmptyTestSuite; - } - - public function failOnIncomplete(): bool - { - return $this->failOnIncomplete; - } - - public function failOnNotice(): bool - { - return $this->failOnNotice; - } - - public function failOnRisky(): bool - { - return $this->failOnRisky; - } - - public function failOnSkipped(): bool - { - return $this->failOnSkipped; - } - - public function failOnWarning(): bool - { - return $this->failOnWarning; - } - - public function stopOnDefect(): bool - { - return $this->stopOnDefect; - } - - public function stopOnDeprecation(): bool - { - return $this->stopOnDeprecation; - } - - public function stopOnError(): bool - { - return $this->stopOnError; - } - - public function stopOnFailure(): bool - { - return $this->stopOnFailure; - } - - public function stopOnIncomplete(): bool - { - return $this->stopOnIncomplete; - } - - public function stopOnNotice(): bool - { - return $this->stopOnNotice; - } - - public function stopOnRisky(): bool - { - return $this->stopOnRisky; - } - - public function stopOnSkipped(): bool - { - return $this->stopOnSkipped; - } - - public function stopOnWarning(): bool - { - return $this->stopOnWarning; - } - - /** - * @phpstan-assert-if-true !null $this->extensionsDirectory - */ - public function hasExtensionsDirectory(): bool - { - return $this->extensionsDirectory !== null; - } - - /** - * @throws Exception - * - * @return non-empty-string - */ - public function extensionsDirectory(): string - { - if (!$this->hasExtensionsDirectory()) { - throw new Exception('Extensions directory is not configured'); - } - - return $this->extensionsDirectory; - } - - public function beStrictAboutChangesToGlobalState(): bool - { - return $this->beStrictAboutChangesToGlobalState; - } - - public function beStrictAboutOutputDuringTests(): bool - { - return $this->beStrictAboutOutputDuringTests; - } - - public function beStrictAboutTestsThatDoNotTestAnything(): bool - { - return $this->beStrictAboutTestsThatDoNotTestAnything; - } - - public function beStrictAboutCoverageMetadata(): bool - { - return $this->beStrictAboutCoverageMetadata; - } - - public function enforceTimeLimit(): bool - { - return $this->enforceTimeLimit; - } - - public function defaultTimeLimit(): int - { - return $this->defaultTimeLimit; - } - - public function timeoutForSmallTests(): int - { - return $this->timeoutForSmallTests; - } - - public function timeoutForMediumTests(): int - { - return $this->timeoutForMediumTests; - } - - public function timeoutForLargeTests(): int - { - return $this->timeoutForLargeTests; - } - - /** - * @phpstan-assert-if-true !null $this->defaultTestSuite - */ - public function hasDefaultTestSuite(): bool - { - return $this->defaultTestSuite !== null; - } - - /** - * @throws Exception - */ - public function defaultTestSuite(): string - { - if (!$this->hasDefaultTestSuite()) { - throw new Exception('Default test suite is not configured'); - } - - return $this->defaultTestSuite; - } - - public function executionOrder(): int - { - return $this->executionOrder; - } - - public function resolveDependencies(): bool - { - return $this->resolveDependencies; - } - - public function defectsFirst(): bool - { - return $this->defectsFirst; - } - - public function backupGlobals(): bool - { - return $this->backupGlobals; - } - - public function backupStaticProperties(): bool - { - return $this->backupStaticProperties; - } - - public function testdoxPrinter(): bool - { - return $this->testdoxPrinter; - } - - public function testdoxPrinterSummary(): bool - { - return $this->testdoxPrinterSummary; - } - - public function controlGarbageCollector(): bool - { - return $this->controlGarbageCollector; - } - - public function numberOfTestsBeforeGarbageCollection(): int - { - return $this->numberOfTestsBeforeGarbageCollection; - } - - /** - * @return non-negative-int - */ - public function shortenArraysForExportThreshold(): int - { - return $this->shortenArraysForExportThreshold; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php deleted file mode 100644 index 5bd282c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class FailedSchemaDetectionResult extends SchemaDetectionResult -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php deleted file mode 100644 index aa855b0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\Util\Xml\XmlException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -abstract readonly class SchemaDetectionResult -{ - /** - * @phpstan-assert-if-true SuccessfulSchemaDetectionResult $this - */ - public function detected(): bool - { - return false; - } - - /** - * @throws XmlException - */ - public function version(): string - { - throw new XmlException('No supported schema was detected'); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php deleted file mode 100644 index 5f55f5f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use PHPUnit\Util\Xml\Loader; -use PHPUnit\Util\Xml\XmlException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class SchemaDetector -{ - /** - * @throws XmlException - */ - public function detect(string $filename): SchemaDetectionResult - { - $document = (new Loader)->loadFile($filename); - - $schemaFinder = new SchemaFinder; - - foreach ($schemaFinder->available() as $candidate) { - $schema = (new SchemaFinder)->find($candidate); - - if (!(new Validator)->validate($document, $schema)->hasValidationErrors()) { - return new SuccessfulSchemaDetectionResult($candidate); - } - } - - return new FailedSchemaDetectionResult; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php deleted file mode 100644 index 72a64c1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class SuccessfulSchemaDetectionResult extends SchemaDetectionResult -{ - /** - * @var non-empty-string - */ - private string $version; - - /** - * @param non-empty-string $version - */ - public function __construct(string $version) - { - $this->version = $version; - } - - public function detected(): bool - { - return true; - } - - /** - * @throws void - * - * @return non-empty-string - */ - public function version(): string - { - return $this->version; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php deleted file mode 100644 index ff4a240..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use function defined; -use function is_file; -use function rsort; -use function sprintf; -use DirectoryIterator; -use PHPUnit\Runner\Version; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class SchemaFinder -{ - /** - * @return non-empty-list - */ - public function available(): array - { - $result = [Version::series()]; - - foreach ((new DirectoryIterator($this->path() . 'schema')) as $file) { - if ($file->isDot()) { - continue; - } - - $version = $file->getBasename('.xsd'); - - assert(!empty($version)); - - $result[] = $version; - } - - rsort($result); - - return $result; - } - - /** - * @throws CannotFindSchemaException - */ - public function find(string $version): string - { - if ($version === Version::series()) { - $filename = $this->path() . 'phpunit.xsd'; - } else { - $filename = $this->path() . 'schema/' . $version . '.xsd'; - } - - if (!is_file($filename)) { - throw new CannotFindSchemaException( - sprintf( - 'Schema for PHPUnit %s is not available', - $version, - ), - ); - } - - return $filename; - } - - private function path(): string - { - if (defined('__PHPUNIT_PHAR_ROOT__')) { - return __PHPUNIT_PHAR_ROOT__ . '/'; - } - - return __DIR__ . '/../../../../'; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php deleted file mode 100644 index 0bb31fe..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php +++ /dev/null @@ -1,151 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use const PHP_VERSION; -use function explode; -use function in_array; -use function is_dir; -use function is_file; -use function sprintf; -use function str_contains; -use function version_compare; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Framework\Exception as FrameworkException; -use PHPUnit\Framework\TestSuite as TestSuiteObject; -use PHPUnit\TextUI\Configuration\TestSuiteCollection; -use PHPUnit\TextUI\RuntimeException; -use PHPUnit\TextUI\TestDirectoryNotFoundException; -use PHPUnit\TextUI\TestFileNotFoundException; -use SebastianBergmann\FileIterator\Facade; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSuiteMapper -{ - /** - * @param non-empty-string $xmlConfigurationFile, - * - * @throws RuntimeException - * @throws TestDirectoryNotFoundException - * @throws TestFileNotFoundException - */ - public function map(string $xmlConfigurationFile, TestSuiteCollection $configuredTestSuites, string $namesOfIncludedTestSuites, string $namesOfExcludedTestSuites): TestSuiteObject - { - try { - $namesOfIncludedTestSuitesAsArray = $namesOfIncludedTestSuites ? explode(',', $namesOfIncludedTestSuites) : []; - $excludedTestSuitesAsArray = $namesOfExcludedTestSuites ? explode(',', $namesOfExcludedTestSuites) : []; - $result = TestSuiteObject::empty($xmlConfigurationFile); - $processed = []; - - foreach ($configuredTestSuites as $configuredTestSuite) { - if (!empty($namesOfIncludedTestSuitesAsArray) && !in_array($configuredTestSuite->name(), $namesOfIncludedTestSuitesAsArray, true)) { - continue; - } - - if (!empty($excludedTestSuitesAsArray) && in_array($configuredTestSuite->name(), $excludedTestSuitesAsArray, true)) { - continue; - } - - $testSuiteName = $configuredTestSuite->name(); - $exclude = []; - - foreach ($configuredTestSuite->exclude()->asArray() as $file) { - $exclude[] = $file->path(); - } - - $testSuite = TestSuiteObject::empty($configuredTestSuite->name()); - $empty = true; - - foreach ($configuredTestSuite->directories() as $directory) { - if (!str_contains($directory->path(), '*') && !is_dir($directory->path())) { - throw new TestDirectoryNotFoundException($directory->path()); - } - - if (!version_compare(PHP_VERSION, $directory->phpVersion(), $directory->phpVersionOperator()->asString())) { - continue; - } - - $files = (new Facade)->getFilesAsArray( - $directory->path(), - $directory->suffix(), - $directory->prefix(), - $exclude, - ); - - $groups = $directory->groups(); - - foreach ($files as $file) { - if (isset($processed[$file])) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot add file %s to test suite "%s" as it was already added to test suite "%s"', - $file, - $testSuiteName, - $processed[$file], - ), - ); - - continue; - } - - $processed[$file] = $testSuiteName; - $empty = false; - - $testSuite->addTestFile($file, $groups); - } - } - - foreach ($configuredTestSuite->files() as $file) { - if (!is_file($file->path())) { - throw new TestFileNotFoundException($file->path()); - } - - if (!version_compare(PHP_VERSION, $file->phpVersion(), $file->phpVersionOperator()->asString())) { - continue; - } - - if (isset($processed[$file->path()])) { - EventFacade::emitter()->testRunnerTriggeredPhpunitWarning( - sprintf( - 'Cannot add file %s to test suite "%s" as it was already added to test suite "%s"', - $file->path(), - $testSuiteName, - $processed[$file->path()], - ), - ); - - continue; - } - - $processed[$file->path()] = $testSuiteName; - $empty = false; - - $testSuite->addTestFile($file->path(), $file->groups()); - } - - if (!$empty) { - $result->addTest($testSuite); - } - } - - return $result; - } catch (FrameworkException $e) { - throw new RuntimeException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php deleted file mode 100644 index aa6920e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use const PHP_EOL; -use function sprintf; -use function trim; -use LibXMLError; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class ValidationResult -{ - /** - * @var array> - */ - private array $validationErrors; - - /** - * @param array $errors - */ - public static function fromArray(array $errors): self - { - $validationErrors = []; - - foreach ($errors as $error) { - if (!isset($validationErrors[$error->line])) { - $validationErrors[$error->line] = []; - } - - $validationErrors[$error->line][] = trim($error->message); - } - - return new self($validationErrors); - } - - /** - * @param array> $validationErrors - */ - private function __construct(array $validationErrors) - { - $this->validationErrors = $validationErrors; - } - - public function hasValidationErrors(): bool - { - return !empty($this->validationErrors); - } - - public function asString(): string - { - $buffer = ''; - - foreach ($this->validationErrors as $line => $validationErrorsOnLine) { - $buffer .= sprintf(PHP_EOL . ' Line %d:' . PHP_EOL, $line); - - foreach ($validationErrorsOnLine as $validationError) { - $buffer .= sprintf(' - %s' . PHP_EOL, $validationError); - } - } - - return $buffer; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php deleted file mode 100644 index cc3a93d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\XmlConfiguration; - -use function assert; -use function file_get_contents; -use function libxml_clear_errors; -use function libxml_get_errors; -use function libxml_use_internal_errors; -use DOMDocument; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Validator -{ - public function validate(DOMDocument $document, string $xsdFilename): ValidationResult - { - $buffer = file_get_contents($xsdFilename); - - assert($buffer !== false); - - $originalErrorHandling = libxml_use_internal_errors(true); - - $document->schemaValidateSource($buffer); - - $errors = libxml_get_errors(); - libxml_clear_errors(); - libxml_use_internal_errors($originalErrorHandling); - - return ValidationResult::fromArray($errors); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/CannotOpenSocketException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/CannotOpenSocketException.php deleted file mode 100644 index 519d137..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/CannotOpenSocketException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class CannotOpenSocketException extends RuntimeException implements Exception -{ - public function __construct(string $hostname, int $port) - { - parent::__construct( - sprintf( - 'Cannot open socket %s:%d', - $hostname, - $port, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php deleted file mode 100644 index 6b370ca..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php deleted file mode 100644 index 441afd2..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidSocketException extends RuntimeException implements Exception -{ - public function __construct(string $socket) - { - parent::__construct( - sprintf( - '"%s" does not match "socket://hostname:port" format', - $socket, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php deleted file mode 100644 index 875a048..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class RuntimeException extends \RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php deleted file mode 100644 index 9b35390..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestDirectoryNotFoundException extends RuntimeException implements Exception -{ - public function __construct(string $path) - { - parent::__construct( - sprintf( - 'Test directory "%s" not found', - $path, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php deleted file mode 100644 index 46c9df8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestFileNotFoundException extends RuntimeException implements Exception -{ - public function __construct(string $path) - { - parent::__construct( - sprintf( - 'Test file "%s" not found', - $path, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Help.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Help.php deleted file mode 100644 index 809d6fa..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Help.php +++ /dev/null @@ -1,323 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use const PHP_EOL; -use function count; -use function defined; -use function explode; -use function max; -use function preg_replace_callback; -use function str_pad; -use function str_repeat; -use function strlen; -use function wordwrap; -use PHPUnit\Util\Color; -use SebastianBergmann\Environment\Console; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Help -{ - private const LEFT_MARGIN = ' '; - private int $lengthOfLongestOptionName = 0; - private readonly int $columnsAvailableForDescription; - private bool $hasColor; - - public function __construct(?int $width = null, ?bool $withColor = null) - { - if ($width === null) { - $width = (new Console)->getNumberOfColumns(); - } - - if ($withColor === null) { - $this->hasColor = (new Console)->hasColorSupport(); - } else { - $this->hasColor = $withColor; - } - - foreach ($this->elements() as $options) { - foreach ($options as $option) { - if (isset($option['arg'])) { - $this->lengthOfLongestOptionName = max($this->lengthOfLongestOptionName, strlen($option['arg'])); - } - } - } - - $this->columnsAvailableForDescription = $width - $this->lengthOfLongestOptionName - 4; - } - - public function generate(): string - { - if ($this->hasColor) { - return $this->writeWithColor(); - } - - return $this->writeWithoutColor(); - } - - private function writeWithoutColor(): string - { - $buffer = ''; - - foreach ($this->elements() as $section => $options) { - $buffer .= "{$section}:" . PHP_EOL; - - if ($section !== 'Usage') { - $buffer .= PHP_EOL; - } - - foreach ($options as $option) { - if (isset($option['spacer'])) { - $buffer .= PHP_EOL; - } - - if (isset($option['text'])) { - $buffer .= self::LEFT_MARGIN . $option['text'] . PHP_EOL; - } - - if (isset($option['arg'])) { - $arg = str_pad($option['arg'], $this->lengthOfLongestOptionName); - - $buffer .= self::LEFT_MARGIN . $arg . ' ' . $option['desc'] . PHP_EOL; - } - } - - $buffer .= PHP_EOL; - } - - return $buffer; - } - - private function writeWithColor(): string - { - $buffer = ''; - - foreach ($this->elements() as $section => $options) { - $buffer .= Color::colorize('fg-yellow', "{$section}:") . PHP_EOL; - - if ($section !== 'Usage') { - $buffer .= PHP_EOL; - } - - foreach ($options as $option) { - if (isset($option['spacer'])) { - $buffer .= PHP_EOL; - } - - if (isset($option['text'])) { - $buffer .= self::LEFT_MARGIN . $option['text'] . PHP_EOL; - } - - if (isset($option['arg'])) { - $arg = Color::colorize('fg-green', str_pad($option['arg'], $this->lengthOfLongestOptionName)); - $arg = preg_replace_callback( - '/(<[^>]+>)/', - static fn ($matches) => Color::colorize('fg-cyan', $matches[0]), - $arg, - ); - - $desc = explode(PHP_EOL, wordwrap($option['desc'], $this->columnsAvailableForDescription, PHP_EOL)); - - $buffer .= self::LEFT_MARGIN . $arg . ' ' . $desc[0] . PHP_EOL; - - for ($i = 1; $i < count($desc); $i++) { - $buffer .= str_repeat(' ', $this->lengthOfLongestOptionName + 3) . $desc[$i] . PHP_EOL; - } - } - } - - $buffer .= PHP_EOL; - } - - return $buffer; - } - - /** - * @return array> - */ - private function elements(): array - { - $elements = [ - 'Usage' => [ - ['text' => 'phpunit [options] ...'], - ], - - 'Configuration' => [ - ['arg' => '--bootstrap ', 'desc' => 'A PHP script that is included before the tests run'], - ['arg' => '-c|--configuration ', 'desc' => 'Read configuration from XML file'], - ['arg' => '--no-configuration', 'desc' => 'Ignore default configuration file (phpunit.xml)'], - ['arg' => '--extension ', 'desc' => 'Register test runner extension with bootstrap '], - ['arg' => '--no-extensions', 'desc' => 'Do not register test runner extensions'], - ['arg' => '--include-path ', 'desc' => 'Prepend PHP\'s include_path with given path(s)'], - ['arg' => '-d ', 'desc' => 'Sets a php.ini value'], - ['arg' => '--cache-directory ', 'desc' => 'Specify cache directory'], - ['arg' => '--generate-configuration', 'desc' => 'Generate configuration file with suggested settings'], - ['arg' => '--migrate-configuration', 'desc' => 'Migrate configuration file to current format'], - ['arg' => '--generate-baseline ', 'desc' => 'Generate baseline for issues'], - ['arg' => '--use-baseline ', 'desc' => 'Use baseline to ignore issues'], - ['arg' => '--ignore-baseline', 'desc' => 'Do not use baseline to ignore issues'], - ], - - 'Selection' => [ - ['arg' => '--list-suites', 'desc' => 'List available test suites'], - ['arg' => '--testsuite ', 'desc' => 'Only run tests from the specified test suite(s)'], - ['arg' => '--exclude-testsuite ', 'desc' => 'Exclude tests from the specified test suite(s)'], - ['arg' => '--list-groups', 'desc' => 'List available test groups'], - ['arg' => '--group ', 'desc' => 'Only run tests from the specified group(s)'], - ['arg' => '--exclude-group ', 'desc' => 'Exclude tests from the specified group(s)'], - ['arg' => '--covers ', 'desc' => 'Only run tests that intend to cover '], - ['arg' => '--uses ', 'desc' => 'Only run tests that intend to use '], - ['arg' => '--requires-php-extension ', 'desc' => 'Only run tests that require PHP extension '], - ['arg' => '--list-test-files', 'desc' => 'List available test files'], - ['arg' => '--list-tests', 'desc' => 'List available tests'], - ['arg' => '--list-tests-xml ', 'desc' => 'List available tests in XML format'], - ['arg' => '--filter ', 'desc' => 'Filter which tests to run'], - ['arg' => '--exclude-filter ', 'desc' => 'Exclude tests for the specified filter pattern'], - ['arg' => '--test-suffix ', 'desc' => 'Only search for test in files with specified suffix(es). Default: Test.php,.phpt'], - ], - - 'Execution' => [ - ['arg' => '--process-isolation', 'desc' => 'Run each test in a separate PHP process'], - ['arg' => '--globals-backup', 'desc' => 'Backup and restore $GLOBALS for each test'], - ['arg' => '--static-backup', 'desc' => 'Backup and restore static properties for each test'], - ['spacer' => ''], - - ['arg' => '--strict-coverage', 'desc' => 'Be strict about code coverage metadata'], - ['arg' => '--strict-global-state', 'desc' => 'Be strict about changes to global state'], - ['arg' => '--disallow-test-output', 'desc' => 'Be strict about output during tests'], - ['arg' => '--enforce-time-limit', 'desc' => 'Enforce time limit based on test size'], - ['arg' => '--default-time-limit ', 'desc' => 'Timeout in seconds for tests that have no declared size'], - ['arg' => '--do-not-report-useless-tests', 'desc' => 'Do not report tests that do not test anything'], - ['spacer' => ''], - - ['arg' => '--stop-on-defect', 'desc' => 'Stop after first error, failure, warning, or risky test'], - ['arg' => '--stop-on-error', 'desc' => 'Stop after first error'], - ['arg' => '--stop-on-failure', 'desc' => 'Stop after first failure'], - ['arg' => '--stop-on-warning', 'desc' => 'Stop after first warning'], - ['arg' => '--stop-on-risky', 'desc' => 'Stop after first risky test'], - ['arg' => '--stop-on-deprecation', 'desc' => 'Stop after first test that triggered a deprecation'], - ['arg' => '--stop-on-notice', 'desc' => 'Stop after first test that triggered a notice'], - ['arg' => '--stop-on-skipped', 'desc' => 'Stop after first skipped test'], - ['arg' => '--stop-on-incomplete', 'desc' => 'Stop after first incomplete test'], - ['spacer' => ''], - - ['arg' => '--fail-on-empty-test-suite', 'desc' => 'Signal failure using shell exit code when no tests were run'], - ['arg' => '--fail-on-warning', 'desc' => 'Signal failure using shell exit code when a warning was triggered'], - ['arg' => '--fail-on-risky', 'desc' => 'Signal failure using shell exit code when a test was considered risky'], - ['arg' => '--fail-on-deprecation', 'desc' => 'Signal failure using shell exit code when a deprecation was triggered'], - ['arg' => '--fail-on-phpunit-deprecation', 'desc' => 'Signal failure using shell exit code when a PHPUnit deprecation was triggered'], - ['arg' => '--fail-on-phpunit-warning', 'desc' => 'Signal failure using shell exit code when a PHPUnit warning was triggered'], - ['arg' => '--fail-on-notice', 'desc' => 'Signal failure using shell exit code when a notice was triggered'], - ['arg' => '--fail-on-skipped', 'desc' => 'Signal failure using shell exit code when a test was skipped'], - ['arg' => '--fail-on-incomplete', 'desc' => 'Signal failure using shell exit code when a test was marked incomplete'], - ['arg' => '--fail-on-all-issues', 'desc' => 'Signal failure using shell exit code when an issue is triggered'], - ['spacer' => ''], - - ['arg' => '--do-not-fail-on-empty-test-suite', 'desc' => 'Do not signal failure using shell exit code when no tests were run'], - ['arg' => '--do-not-fail-on-warning', 'desc' => 'Do not signal failure using shell exit code when a warning was triggered'], - ['arg' => '--do-not-fail-on-risky', 'desc' => 'Do not signal failure using shell exit code when a test was considered risky'], - ['arg' => '--do-not-fail-on-deprecation', 'desc' => 'Do not signal failure using shell exit code when a deprecation was triggered'], - ['arg' => '--do-not-fail-on-phpunit-deprecation', 'desc' => 'Do not signal failure using shell exit code when a PHPUnit deprecation was triggered'], - ['arg' => '--do-not-fail-on-phpunit-warning', 'desc' => 'Do not signal failure using shell exit code when a PHPUnit warning was triggered'], - ['arg' => '--do-not-fail-on-notice', 'desc' => 'Do not signal failure using shell exit code when a notice was triggered'], - ['arg' => '--do-not-fail-on-skipped', 'desc' => 'Do not signal failure using shell exit code when a test was skipped'], - ['arg' => '--do-not-fail-on-incomplete', 'desc' => 'Do not signal failure using shell exit code when a test was marked incomplete'], - ['spacer' => ''], - - ['arg' => '--cache-result', 'desc' => 'Write test results to cache file'], - ['arg' => '--do-not-cache-result', 'desc' => 'Do not write test results to cache file'], - ['spacer' => ''], - - ['arg' => '--order-by ', 'desc' => 'Run tests in order: default|defects|depends|duration|no-depends|random|reverse|size'], - ['arg' => '--random-order-seed ', 'desc' => 'Use the specified random seed when running tests in random order'], - ], - - 'Reporting' => [ - ['arg' => '--colors ', 'desc' => 'Use colors in output ("never", "auto" or "always")'], - ['arg' => '--columns ', 'desc' => 'Number of columns to use for progress output'], - ['arg' => '--columns max', 'desc' => 'Use maximum number of columns for progress output'], - ['arg' => '--stderr', 'desc' => 'Write to STDERR instead of STDOUT'], - ['spacer' => ''], - - ['arg' => '--no-progress', 'desc' => 'Disable output of test execution progress'], - ['arg' => '--no-results', 'desc' => 'Disable output of test results'], - ['arg' => '--no-output', 'desc' => 'Disable all output'], - ['spacer' => ''], - - ['arg' => '--display-incomplete', 'desc' => 'Display details for incomplete tests'], - ['arg' => '--display-skipped', 'desc' => 'Display details for skipped tests'], - ['arg' => '--display-deprecations', 'desc' => 'Display details for deprecations triggered by tests'], - ['arg' => '--display-phpunit-deprecations', 'desc' => 'Display details for PHPUnit deprecations'], - ['arg' => '--display-errors', 'desc' => 'Display details for errors triggered by tests'], - ['arg' => '--display-notices', 'desc' => 'Display details for notices triggered by tests'], - ['arg' => '--display-warnings', 'desc' => 'Display details for warnings triggered by tests'], - ['arg' => '--display-all-issues', 'desc' => 'Display details for all issues that are triggered'], - ['arg' => '--reverse-list', 'desc' => 'Print defects in reverse order'], - ['spacer' => ''], - - ['arg' => '--teamcity', 'desc' => 'Replace default progress and result output with TeamCity format'], - ['arg' => '--testdox', 'desc' => 'Replace default result output with TestDox format'], - ['arg' => '--testdox-summary', 'desc' => 'Repeat TestDox output for tests with errors, failures, or issues'], - ['spacer' => ''], - - ['arg' => '--debug', 'desc' => 'Replace default progress and result output with debugging information'], - ], - - 'Logging' => [ - ['arg' => '--log-junit ', 'desc' => 'Write test results in JUnit XML format to file'], - ['arg' => '--log-teamcity ', 'desc' => 'Write test results in TeamCity format to file'], - ['arg' => '--testdox-html ', 'desc' => 'Write test results in TestDox format (HTML) to file'], - ['arg' => '--testdox-text ', 'desc' => 'Write test results in TestDox format (plain text) to file'], - ['arg' => '--log-events-text ', 'desc' => 'Stream events as plain text to file'], - ['arg' => '--log-events-verbose-text ', 'desc' => 'Stream events as plain text with extended information to file'], - ['arg' => '--no-logging', 'desc' => 'Ignore logging configured in the XML configuration file'], - ], - - 'Code Coverage' => [ - ['arg' => '--coverage-clover ', 'desc' => 'Write code coverage report in Clover XML format to file'], - ['arg' => '--coverage-cobertura ', 'desc' => 'Write code coverage report in Cobertura XML format to file'], - ['arg' => '--coverage-crap4j ', 'desc' => 'Write code coverage report in Crap4J XML format to file'], - ['arg' => '--coverage-html ', 'desc' => 'Write code coverage report in HTML format to directory'], - ['arg' => '--coverage-php ', 'desc' => 'Write serialized code coverage data to file'], - ['arg' => '--coverage-text=', 'desc' => 'Write code coverage report in text format to file [default: standard output]'], - ['arg' => '--only-summary-for-coverage-text', 'desc' => 'Option for code coverage report in text format: only show summary'], - ['arg' => '--show-uncovered-for-coverage-text', 'desc' => 'Option for code coverage report in text format: show uncovered files'], - ['arg' => '--coverage-xml ', 'desc' => 'Write code coverage report in XML format to directory'], - ['arg' => '--warm-coverage-cache', 'desc' => 'Warm static analysis cache'], - ['arg' => '--coverage-filter ', 'desc' => 'Include in code coverage reporting'], - ['arg' => '--path-coverage', 'desc' => 'Report path coverage in addition to line coverage'], - ['arg' => '--disable-coverage-ignore', 'desc' => 'Disable metadata for ignoring code coverage'], - ['arg' => '--no-coverage', 'desc' => 'Ignore code coverage reporting configured in the XML configuration file'], - ], - ]; - - if (defined('__PHPUNIT_PHAR__')) { - $elements['PHAR'] = [ - ['arg' => '--manifest', 'desc' => 'Print Software Bill of Materials (SBOM) in plain-text format'], - ['arg' => '--sbom', 'desc' => 'Print Software Bill of Materials (SBOM) in CycloneDX XML format'], - ['arg' => '--composer-lock', 'desc' => 'Print composer.lock file used to build the PHAR'], - ]; - } - - $elements['Miscellaneous'] = [ - ['arg' => '-h|--help', 'desc' => 'Prints this usage information'], - ['arg' => '--version', 'desc' => 'Prints the version and exits'], - ['arg' => '--atleast-version ', 'desc' => 'Checks that version is greater than and exits'], - ['arg' => '--check-version', 'desc' => 'Checks whether PHPUnit is the latest version and exits'], - ['arg' => '--check-php-configuration', 'desc' => 'Checks whether PHP configuration follows best practices'], - ]; - - return $elements; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php deleted file mode 100644 index 50920d0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php +++ /dev/null @@ -1,434 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use function floor; -use function sprintf; -use function str_contains; -use function str_repeat; -use function strlen; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\TextUI\Configuration\Source; -use PHPUnit\TextUI\Configuration\SourceFilter; -use PHPUnit\TextUI\Output\Printer; -use PHPUnit\Util\Color; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ProgressPrinter -{ - private readonly Printer $printer; - private readonly bool $colors; - private readonly int $numberOfColumns; - private readonly Source $source; - private int $column = 0; - private int $numberOfTests = 0; - private int $numberOfTestsWidth = 0; - private int $maxColumn = 0; - private int $numberOfTestsRun = 0; - private ?TestStatus $status = null; - private bool $prepared = false; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Printer $printer, Facade $facade, bool $colors, int $numberOfColumns, Source $source) - { - $this->printer = $printer; - $this->colors = $colors; - $this->numberOfColumns = $numberOfColumns; - $this->source = $source; - - $this->registerSubscribers($facade); - } - - public function testRunnerExecutionStarted(ExecutionStarted $event): void - { - $this->numberOfTestsRun = 0; - $this->numberOfTests = $event->testSuite()->count(); - $this->numberOfTestsWidth = strlen((string) $this->numberOfTests); - $this->column = 0; - $this->maxColumn = $this->numberOfColumns - strlen(' / (XXX%)') - (2 * $this->numberOfTestsWidth); - } - - public function beforeTestClassMethodErrored(): void - { - $this->printProgressForError(); - $this->updateTestStatus(TestStatus::error()); - } - - public function testPrepared(): void - { - $this->prepared = true; - } - - public function testSkipped(): void - { - if (!$this->prepared) { - $this->printProgressForSkipped(); - } else { - $this->updateTestStatus(TestStatus::skipped()); - } - } - - public function testSuiteSkipped(int $countTests): void - { - for ($i = 0; $i < $countTests; $i++) { - $this->testSkipped(); - } - } - - public function testMarkedIncomplete(): void - { - $this->updateTestStatus(TestStatus::incomplete()); - } - - public function testTriggeredNotice(NoticeTriggered $event): void - { - if ($event->ignoredByBaseline()) { - return; - } - - if ($this->source->restrictNotices() && - !SourceFilter::instance()->includes($event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfNotices() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::notice()); - } - - public function testTriggeredPhpNotice(PhpNoticeTriggered $event): void - { - if ($event->ignoredByBaseline()) { - return; - } - - if ($this->source->restrictNotices() && - !SourceFilter::instance()->includes($event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfPhpNotices() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::notice()); - } - - public function testTriggeredDeprecation(DeprecationTriggered $event): void - { - if ($event->ignoredByBaseline() || $event->ignoredByTest()) { - return; - } - - if ($this->source->ignoreSelfDeprecations() && $event->trigger()->isSelf()) { - return; - } - - if ($this->source->ignoreDirectDeprecations() && $event->trigger()->isDirect()) { - return; - } - - if ($this->source->ignoreIndirectDeprecations() && $event->trigger()->isIndirect()) { - return; - } - - if ($this->source->restrictDeprecations() && - !SourceFilter::instance()->includes($event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfDeprecations() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredPhpDeprecation(PhpDeprecationTriggered $event): void - { - if ($event->ignoredByBaseline() || $event->ignoredByTest()) { - return; - } - - if ($this->source->ignoreSelfDeprecations() && $event->trigger()->isSelf()) { - return; - } - - if ($this->source->ignoreDirectDeprecations() && $event->trigger()->isDirect()) { - return; - } - - if ($this->source->ignoreIndirectDeprecations() && $event->trigger()->isIndirect()) { - return; - } - - if ($this->source->restrictDeprecations() && - !SourceFilter::instance()->includes($event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfPhpDeprecations() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testTriggeredPhpunitDeprecation(): void - { - $this->updateTestStatus(TestStatus::deprecation()); - } - - public function testConsideredRisky(): void - { - $this->updateTestStatus(TestStatus::risky()); - } - - public function testTriggeredWarning(WarningTriggered $event): void - { - if ($event->ignoredByBaseline()) { - return; - } - - if ($this->source->restrictWarnings() && - !SourceFilter::instance()->includes($event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfWarnings() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredPhpWarning(PhpWarningTriggered $event): void - { - if ($event->ignoredByBaseline()) { - return; - } - - if ($this->source->restrictWarnings() && - !SourceFilter::instance()->includes($event->file())) { - return; - } - - if (!$this->source->ignoreSuppressionOfPhpWarnings() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredPhpunitWarning(): void - { - $this->updateTestStatus(TestStatus::warning()); - } - - public function testTriggeredError(ErrorTriggered $event): void - { - if (!$this->source->ignoreSuppressionOfErrors() && $event->wasSuppressed()) { - return; - } - - $this->updateTestStatus(TestStatus::error()); - } - - public function testFailed(): void - { - $this->updateTestStatus(TestStatus::failure()); - } - - public function testErrored(Errored $event): void - { - /* - * @todo Eliminate this special case - */ - if (str_contains($event->asString(), 'Test was run in child process and ended unexpectedly')) { - $this->updateTestStatus(TestStatus::error()); - - return; - } - - if (!$this->prepared) { - $this->printProgressForError(); - } else { - $this->updateTestStatus(TestStatus::error()); - } - } - - public function testFinished(): void - { - if ($this->status === null) { - $this->printProgressForSuccess(); - } elseif ($this->status->isSkipped()) { - $this->printProgressForSkipped(); - } elseif ($this->status->isIncomplete()) { - $this->printProgressForIncomplete(); - } elseif ($this->status->isRisky()) { - $this->printProgressForRisky(); - } elseif ($this->status->isNotice()) { - $this->printProgressForNotice(); - } elseif ($this->status->isDeprecation()) { - $this->printProgressForDeprecation(); - } elseif ($this->status->isWarning()) { - $this->printProgressForWarning(); - } elseif ($this->status->isFailure()) { - $this->printProgressForFailure(); - } else { - $this->printProgressForError(); - } - - $this->status = null; - $this->prepared = false; - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private function registerSubscribers(Facade $facade): void - { - $facade->registerSubscribers( - new BeforeTestClassMethodErroredSubscriber($this), - new TestConsideredRiskySubscriber($this), - new TestErroredSubscriber($this), - new TestFailedSubscriber($this), - new TestFinishedSubscriber($this), - new TestMarkedIncompleteSubscriber($this), - new TestPreparedSubscriber($this), - new TestRunnerExecutionStartedSubscriber($this), - new TestSkippedSubscriber($this), - new TestSuiteSkippedSubscriber($this), - new TestTriggeredDeprecationSubscriber($this), - new TestTriggeredNoticeSubscriber($this), - new TestTriggeredPhpDeprecationSubscriber($this), - new TestTriggeredPhpNoticeSubscriber($this), - new TestTriggeredPhpunitDeprecationSubscriber($this), - new TestTriggeredPhpunitWarningSubscriber($this), - new TestTriggeredPhpWarningSubscriber($this), - new TestTriggeredWarningSubscriber($this), - ); - } - - private function updateTestStatus(TestStatus $status): void - { - if ($this->status !== null && - $this->status->isMoreImportantThan($status)) { - return; - } - - $this->status = $status; - } - - private function printProgressForSuccess(): void - { - $this->printProgress('.'); - } - - private function printProgressForSkipped(): void - { - $this->printProgressWithColor('fg-cyan, bold', 'S'); - } - - private function printProgressForIncomplete(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'I'); - } - - private function printProgressForNotice(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'N'); - } - - private function printProgressForDeprecation(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'D'); - } - - private function printProgressForRisky(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'R'); - } - - private function printProgressForWarning(): void - { - $this->printProgressWithColor('fg-yellow, bold', 'W'); - } - - private function printProgressForFailure(): void - { - $this->printProgressWithColor('bg-red, fg-white', 'F'); - } - - private function printProgressForError(): void - { - $this->printProgressWithColor('fg-red, bold', 'E'); - } - - private function printProgressWithColor(string $color, string $progress): void - { - if ($this->colors) { - $progress = Color::colorizeTextBox($color, $progress); - } - - $this->printProgress($progress); - } - - private function printProgress(string $progress): void - { - $this->printer->print($progress); - - $this->column++; - $this->numberOfTestsRun++; - - if ($this->column === $this->maxColumn || $this->numberOfTestsRun === $this->numberOfTests) { - if ($this->numberOfTestsRun === $this->numberOfTests) { - $this->printer->print(str_repeat(' ', $this->maxColumn - $this->column)); - } - - $this->printer->print( - sprintf( - ' %' . $this->numberOfTestsWidth . 'd / %' . - $this->numberOfTestsWidth . 'd (%3s%%)', - $this->numberOfTestsRun, - $this->numberOfTests, - floor(($this->numberOfTestsRun / $this->numberOfTests) * 100), - ), - ); - - if ($this->column === $this->maxColumn) { - $this->column = 0; - $this->printer->print("\n"); - } - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php deleted file mode 100644 index 2984cdd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\BeforeFirstTestMethodErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class BeforeTestClassMethodErroredSubscriber extends Subscriber implements BeforeFirstTestMethodErroredSubscriber -{ - public function notify(BeforeFirstTestMethodErrored $event): void - { - $this->printer()->beforeTestClassMethodErrored(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php deleted file mode 100644 index 32515ee..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/Subscriber.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class Subscriber -{ - private ProgressPrinter $printer; - - public function __construct(ProgressPrinter $printer) - { - $this->printer = $printer; - } - - protected function printer(): ProgressPrinter - { - return $this->printer; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php deleted file mode 100644 index e5b57c6..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestConsideredRiskySubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\ConsideredRiskySubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestConsideredRiskySubscriber extends Subscriber implements ConsideredRiskySubscriber -{ - public function notify(ConsideredRisky $event): void - { - $this->printer()->testConsideredRisky(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php deleted file mode 100644 index 3334075..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestErroredSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Errored; -use PHPUnit\Event\Test\ErroredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestErroredSubscriber extends Subscriber implements ErroredSubscriber -{ - public function notify(Errored $event): void - { - $this->printer()->testErrored($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php deleted file mode 100644 index 9109d1b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFailedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Failed; -use PHPUnit\Event\Test\FailedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestFailedSubscriber extends Subscriber implements FailedSubscriber -{ - public function notify(Failed $event): void - { - $this->printer()->testFailed(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php deleted file mode 100644 index e4b4ca5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Finished; -use PHPUnit\Event\Test\FinishedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestFinishedSubscriber extends Subscriber implements FinishedSubscriber -{ - public function notify(Finished $event): void - { - $this->printer()->testFinished(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php deleted file mode 100644 index 8b44508..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\MarkedIncomplete; -use PHPUnit\Event\Test\MarkedIncompleteSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestMarkedIncompleteSubscriber extends Subscriber implements MarkedIncompleteSubscriber -{ - public function notify(MarkedIncomplete $event): void - { - $this->printer()->testMarkedIncomplete(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php deleted file mode 100644 index d99f2fa..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Prepared; -use PHPUnit\Event\Test\PreparedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestPreparedSubscriber extends Subscriber implements PreparedSubscriber -{ - public function notify(Prepared $event): void - { - $this->printer()->testPrepared(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php deleted file mode 100644 index 78e104f..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\TestRunner\ExecutionStarted; -use PHPUnit\Event\TestRunner\ExecutionStartedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestRunnerExecutionStartedSubscriber extends Subscriber implements ExecutionStartedSubscriber -{ - public function notify(ExecutionStarted $event): void - { - $this->printer()->testRunnerExecutionStarted($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php deleted file mode 100644 index a2f4e25..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\Skipped; -use PHPUnit\Event\Test\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - public function notify(Skipped $event): void - { - $this->printer()->testSkipped(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSuiteSkippedSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSuiteSkippedSubscriber.php deleted file mode 100644 index 1054df1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSuiteSkippedSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\TestSuite\Skipped; -use PHPUnit\Event\TestSuite\SkippedSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSuiteSkippedSubscriber extends Subscriber implements SkippedSubscriber -{ - public function notify(Skipped $event): void - { - $this->printer()->testSuiteSkipped($event->testSuite()->count()); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php deleted file mode 100644 index 16a4ccf..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\DeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredDeprecationSubscriber extends Subscriber implements DeprecationTriggeredSubscriber -{ - public function notify(DeprecationTriggered $event): void - { - $this->printer()->testTriggeredDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php deleted file mode 100644 index 1f89911..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\ErrorTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredErrorSubscriber extends Subscriber implements ErrorTriggeredSubscriber -{ - public function notify(ErrorTriggered $event): void - { - $this->printer()->testTriggeredError($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php deleted file mode 100644 index 0639f02..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\NoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredNoticeSubscriber extends Subscriber implements NoticeTriggeredSubscriber -{ - public function notify(NoticeTriggered $event): void - { - $this->printer()->testTriggeredNotice($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php deleted file mode 100644 index 550250c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpDeprecationSubscriber extends Subscriber implements PhpDeprecationTriggeredSubscriber -{ - public function notify(PhpDeprecationTriggered $event): void - { - $this->printer()->testTriggeredPhpDeprecation($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php deleted file mode 100644 index 299b898..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpNoticeSubscriber extends Subscriber implements PhpNoticeTriggeredSubscriber -{ - public function notify(PhpNoticeTriggered $event): void - { - $this->printer()->testTriggeredPhpNotice($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php deleted file mode 100644 index a4ff81c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpWarningSubscriber extends Subscriber implements PhpWarningTriggeredSubscriber -{ - public function notify(PhpWarningTriggered $event): void - { - $this->printer()->testTriggeredPhpWarning($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php deleted file mode 100644 index 62311a0..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpunitDeprecationSubscriber extends Subscriber implements PhpunitDeprecationTriggeredSubscriber -{ - public function notify(PhpunitDeprecationTriggered $event): void - { - $this->printer()->testTriggeredPhpunitDeprecation(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php deleted file mode 100644 index 4e3e3d2..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredPhpunitWarningSubscriber extends Subscriber implements PhpunitWarningTriggeredSubscriber -{ - public function notify(PhpunitWarningTriggered $event): void - { - $this->printer()->testTriggeredPhpunitWarning(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php deleted file mode 100644 index 6204584..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; - -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\Event\Test\WarningTriggeredSubscriber; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestTriggeredWarningSubscriber extends Subscriber implements WarningTriggeredSubscriber -{ - public function notify(WarningTriggered $event): void - { - $this->printer()->testTriggeredWarning($event); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php deleted file mode 100644 index 6b0db7c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php +++ /dev/null @@ -1,642 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default; - -use const PHP_EOL; -use function array_keys; -use function array_merge; -use function array_reverse; -use function array_unique; -use function assert; -use function count; -use function explode; -use function ksort; -use function range; -use function sprintf; -use function str_starts_with; -use function strlen; -use function substr; -use function trim; -use PHPUnit\Event\Code\Test; -use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\Test\AfterLastTestMethodErrored; -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Event\Test\ConsideredRisky; -use PHPUnit\Event\Test\DeprecationTriggered; -use PHPUnit\Event\Test\ErrorTriggered; -use PHPUnit\Event\Test\NoticeTriggered; -use PHPUnit\Event\Test\PhpDeprecationTriggered; -use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitErrorTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggered; -use PHPUnit\Event\Test\PhpWarningTriggered; -use PHPUnit\Event\Test\WarningTriggered; -use PHPUnit\TestRunner\TestResult\Issues\Issue; -use PHPUnit\TestRunner\TestResult\TestResult; -use PHPUnit\TextUI\Output\Printer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ResultPrinter -{ - private readonly Printer $printer; - private readonly bool $displayPhpunitErrors; - private readonly bool $displayPhpunitWarnings; - private readonly bool $displayTestsWithErrors; - private readonly bool $displayTestsWithFailedAssertions; - private readonly bool $displayRiskyTests; - private readonly bool $displayPhpunitDeprecations; - private readonly bool $displayDetailsOnIncompleteTests; - private readonly bool $displayDetailsOnSkippedTests; - private readonly bool $displayDetailsOnTestsThatTriggerDeprecations; - private readonly bool $displayDetailsOnTestsThatTriggerErrors; - private readonly bool $displayDetailsOnTestsThatTriggerNotices; - private readonly bool $displayDetailsOnTestsThatTriggerWarnings; - private readonly bool $displayDefectsInReverseOrder; - private bool $listPrinted = false; - - public function __construct(Printer $printer, bool $displayPhpunitErrors, bool $displayPhpunitWarnings, bool $displayPhpunitDeprecations, bool $displayTestsWithErrors, bool $displayTestsWithFailedAssertions, bool $displayRiskyTests, bool $displayDetailsOnIncompleteTests, bool $displayDetailsOnSkippedTests, bool $displayDetailsOnTestsThatTriggerDeprecations, bool $displayDetailsOnTestsThatTriggerErrors, bool $displayDetailsOnTestsThatTriggerNotices, bool $displayDetailsOnTestsThatTriggerWarnings, bool $displayDefectsInReverseOrder) - { - $this->printer = $printer; - $this->displayPhpunitErrors = $displayPhpunitErrors; - $this->displayPhpunitWarnings = $displayPhpunitWarnings; - $this->displayPhpunitDeprecations = $displayPhpunitDeprecations; - $this->displayTestsWithErrors = $displayTestsWithErrors; - $this->displayTestsWithFailedAssertions = $displayTestsWithFailedAssertions; - $this->displayRiskyTests = $displayRiskyTests; - $this->displayDetailsOnIncompleteTests = $displayDetailsOnIncompleteTests; - $this->displayDetailsOnSkippedTests = $displayDetailsOnSkippedTests; - $this->displayDetailsOnTestsThatTriggerDeprecations = $displayDetailsOnTestsThatTriggerDeprecations; - $this->displayDetailsOnTestsThatTriggerErrors = $displayDetailsOnTestsThatTriggerErrors; - $this->displayDetailsOnTestsThatTriggerNotices = $displayDetailsOnTestsThatTriggerNotices; - $this->displayDetailsOnTestsThatTriggerWarnings = $displayDetailsOnTestsThatTriggerWarnings; - $this->displayDefectsInReverseOrder = $displayDefectsInReverseOrder; - } - - public function print(TestResult $result, bool $stackTraceForDeprecations = false): void - { - if ($this->displayPhpunitErrors) { - $this->printPhpunitErrors($result); - } - - if ($this->displayPhpunitWarnings) { - $this->printTestRunnerWarnings($result); - } - - if ($this->displayPhpunitDeprecations) { - $this->printTestRunnerDeprecations($result); - } - - if ($this->displayTestsWithErrors) { - $this->printTestsWithErrors($result); - } - - if ($this->displayTestsWithFailedAssertions) { - $this->printTestsWithFailedAssertions($result); - } - - if ($this->displayPhpunitWarnings) { - $this->printDetailsOnTestsThatTriggeredPhpunitWarnings($result); - } - - if ($this->displayPhpunitDeprecations) { - $this->printDetailsOnTestsThatTriggeredPhpunitDeprecations($result); - } - - if ($this->displayRiskyTests) { - $this->printRiskyTests($result); - } - - if ($this->displayDetailsOnIncompleteTests) { - $this->printIncompleteTests($result); - } - - if ($this->displayDetailsOnSkippedTests) { - $this->printSkippedTestSuites($result); - $this->printSkippedTests($result); - } - - if ($this->displayDetailsOnTestsThatTriggerErrors) { - $this->printIssueList('error', $result->errors()); - } - - if ($this->displayDetailsOnTestsThatTriggerWarnings) { - $this->printIssueList('PHP warning', $result->phpWarnings()); - $this->printIssueList('warning', $result->warnings()); - } - - if ($this->displayDetailsOnTestsThatTriggerNotices) { - $this->printIssueList('PHP notice', $result->phpNotices()); - $this->printIssueList('notice', $result->notices()); - } - - if ($this->displayDetailsOnTestsThatTriggerDeprecations) { - $this->printIssueList('PHP deprecation', $result->phpDeprecations()); - $this->printIssueList('deprecation', $result->deprecations(), $stackTraceForDeprecations); - } - } - - private function printPhpunitErrors(TestResult $result): void - { - if (!$result->hasTestTriggeredPhpunitErrorEvents()) { - return; - } - - $elements = $this->mapTestsWithIssuesEventsToElements($result->testTriggeredPhpunitErrorEvents()); - - $this->printListHeaderWithNumber($elements['numberOfTestsWithIssues'], 'PHPUnit error'); - $this->printList($elements['elements']); - } - - private function printDetailsOnTestsThatTriggeredPhpunitDeprecations(TestResult $result): void - { - if (!$result->hasTestTriggeredPhpunitDeprecationEvents()) { - return; - } - - $elements = $this->mapTestsWithIssuesEventsToElements($result->testTriggeredPhpunitDeprecationEvents()); - - $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( - $elements['numberOfTestsWithIssues'], - $elements['numberOfIssues'], - 'PHPUnit deprecation', - ); - - $this->printList($elements['elements']); - } - - private function printTestRunnerWarnings(TestResult $result): void - { - if (!$result->hasTestRunnerTriggeredWarningEvents()) { - return; - } - - $elements = []; - $messages = []; - - foreach ($result->testRunnerTriggeredWarningEvents() as $event) { - if (isset($messages[$event->message()])) { - continue; - } - - $elements[] = [ - 'title' => $event->message(), - 'body' => '', - ]; - - $messages[$event->message()] = true; - } - - $this->printListHeaderWithNumber(count($elements), 'PHPUnit test runner warning'); - $this->printList($elements); - } - - private function printTestRunnerDeprecations(TestResult $result): void - { - if (!$result->hasTestRunnerTriggeredDeprecationEvents()) { - return; - } - - $elements = []; - - foreach ($result->testRunnerTriggeredDeprecationEvents() as $event) { - $elements[] = [ - 'title' => $event->message(), - 'body' => '', - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'PHPUnit test runner deprecation'); - $this->printList($elements); - } - - private function printDetailsOnTestsThatTriggeredPhpunitWarnings(TestResult $result): void - { - if (!$result->hasTestTriggeredPhpunitWarningEvents()) { - return; - } - - $elements = $this->mapTestsWithIssuesEventsToElements($result->testTriggeredPhpunitWarningEvents()); - - $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( - $elements['numberOfTestsWithIssues'], - $elements['numberOfIssues'], - 'PHPUnit warning', - ); - - $this->printList($elements['elements']); - } - - private function printTestsWithErrors(TestResult $result): void - { - if (!$result->hasTestErroredEvents()) { - return; - } - - $elements = []; - - foreach ($result->testErroredEvents() as $event) { - if ($event instanceof AfterLastTestMethodErrored || $event instanceof BeforeFirstTestMethodErrored) { - $title = $event->testClassName(); - } else { - $title = $this->name($event->test()); - } - - $elements[] = [ - 'title' => $title, - 'body' => $event->throwable()->asString(), - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'error'); - $this->printList($elements); - } - - private function printTestsWithFailedAssertions(TestResult $result): void - { - if (!$result->hasTestFailedEvents()) { - return; - } - - $elements = []; - - foreach ($result->testFailedEvents() as $event) { - $body = $event->throwable()->asString(); - - if (str_starts_with($body, 'AssertionError: ')) { - $body = substr($body, strlen('AssertionError: ')); - } - - $elements[] = [ - 'title' => $this->name($event->test()), - 'body' => $body, - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'failure'); - $this->printList($elements); - } - - private function printRiskyTests(TestResult $result): void - { - if (!$result->hasTestConsideredRiskyEvents()) { - return; - } - - $elements = $this->mapTestsWithIssuesEventsToElements($result->testConsideredRiskyEvents()); - - $this->printListHeaderWithNumber($elements['numberOfTestsWithIssues'], 'risky test'); - $this->printList($elements['elements']); - } - - private function printIncompleteTests(TestResult $result): void - { - if (!$result->hasTestMarkedIncompleteEvents()) { - return; - } - - $elements = []; - - foreach ($result->testMarkedIncompleteEvents() as $event) { - $elements[] = [ - 'title' => $this->name($event->test()), - 'body' => $event->throwable()->asString(), - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'incomplete test'); - $this->printList($elements); - } - - private function printSkippedTestSuites(TestResult $result): void - { - if (!$result->hasTestSuiteSkippedEvents()) { - return; - } - - $elements = []; - - foreach ($result->testSuiteSkippedEvents() as $event) { - $elements[] = [ - 'title' => $event->testSuite()->name(), - 'body' => $event->message(), - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'skipped test suite'); - $this->printList($elements); - } - - private function printSkippedTests(TestResult $result): void - { - if (!$result->hasTestSkippedEvents()) { - return; - } - - $elements = []; - - foreach ($result->testSkippedEvents() as $event) { - $elements[] = [ - 'title' => $this->name($event->test()), - 'body' => $event->message(), - ]; - } - - $this->printListHeaderWithNumber(count($elements), 'skipped test'); - $this->printList($elements); - } - - /** - * @param non-empty-string $type - * @param list $issues - */ - private function printIssueList(string $type, array $issues, bool $stackTrace = false): void - { - if (empty($issues)) { - return; - } - - $numberOfUniqueIssues = count($issues); - $triggeringTests = []; - - foreach ($issues as $issue) { - $triggeringTests = array_merge($triggeringTests, array_keys($issue->triggeringTests())); - } - - $numberOfTests = count(array_unique($triggeringTests)); - unset($triggeringTests); - - $this->printListHeader( - sprintf( - '%d test%s triggered %d %s%s:' . PHP_EOL . PHP_EOL, - $numberOfTests, - $numberOfTests !== 1 ? 's' : '', - $numberOfUniqueIssues, - $type, - $numberOfUniqueIssues !== 1 ? 's' : '', - ), - ); - - $i = 1; - - foreach ($issues as $issue) { - $title = sprintf( - '%s:%d', - $issue->file(), - $issue->line(), - ); - - $body = trim($issue->description()) . PHP_EOL . PHP_EOL; - - if ($stackTrace && $issue->hasStackTrace()) { - $body .= trim($issue->stackTrace()) . PHP_EOL . PHP_EOL; - } - - if (!$issue->triggeredInTest()) { - $body .= 'Triggered by:'; - - $triggeringTests = $issue->triggeringTests(); - - ksort($triggeringTests); - - foreach ($triggeringTests as $triggeringTest) { - $body .= PHP_EOL . PHP_EOL . '* ' . $triggeringTest['test']->id(); - - if ($triggeringTest['count'] > 1) { - $body .= sprintf( - ' (%d times)', - $triggeringTest['count'], - ); - } - - if ($triggeringTest['test']->isTestMethod()) { - $body .= PHP_EOL . ' ' . $triggeringTest['test']->file() . ':' . $triggeringTest['test']->line(); - } - } - } - - $this->printIssueListElement($i++, $title, $body); - - $this->printer->print(PHP_EOL); - } - } - - private function printListHeaderWithNumberOfTestsAndNumberOfIssues(int $numberOfTestsWithIssues, int $numberOfIssues, string $type): void - { - $this->printListHeader( - sprintf( - "%d test%s triggered %d %s%s:\n\n", - $numberOfTestsWithIssues, - $numberOfTestsWithIssues !== 1 ? 's' : '', - $numberOfIssues, - $type, - $numberOfIssues !== 1 ? 's' : '', - ), - ); - } - - private function printListHeaderWithNumber(int $number, string $type): void - { - $this->printListHeader( - sprintf( - "There %s %d %s%s:\n\n", - ($number === 1) ? 'was' : 'were', - $number, - $type, - ($number === 1) ? '' : 's', - ), - ); - } - - private function printListHeader(string $header): void - { - if ($this->listPrinted) { - $this->printer->print("--\n\n"); - } - - $this->listPrinted = true; - - $this->printer->print($header); - } - - /** - * @param list $elements - */ - private function printList(array $elements): void - { - $i = 1; - - if ($this->displayDefectsInReverseOrder) { - $elements = array_reverse($elements); - } - - foreach ($elements as $element) { - $this->printListElement($i++, $element['title'], $element['body']); - } - - $this->printer->print("\n"); - } - - private function printListElement(int $number, string $title, string $body): void - { - $body = trim($body); - - $this->printer->print( - sprintf( - "%s%d) %s\n%s%s", - $number > 1 ? "\n" : '', - $number, - $title, - $body, - !empty($body) ? "\n" : '', - ), - ); - } - - private function printIssueListElement(int $number, string $title, string $body): void - { - $body = trim($body); - - $this->printer->print( - sprintf( - "%d) %s\n%s%s", - $number, - $title, - $body, - !empty($body) ? "\n" : '', - ), - ); - } - - private function name(Test $test): string - { - if ($test->isTestMethod()) { - assert($test instanceof TestMethod); - - if (!$test->testData()->hasDataFromDataProvider()) { - return $test->nameWithClass(); - } - - return $test->className() . '::' . $test->methodName() . $test->testData()->dataFromDataProvider()->dataAsStringForResultOutput(); - } - - return $test->name(); - } - - /** - * @param array> $events - * - * @return array{numberOfTestsWithIssues: int, numberOfIssues: int, elements: list} - */ - private function mapTestsWithIssuesEventsToElements(array $events): array - { - $elements = []; - $issues = 0; - - foreach ($events as $reasons) { - $test = $reasons[0]->test(); - $testLocation = $this->testLocation($test); - $title = $this->name($test); - $body = ''; - $first = true; - $single = count($reasons) === 1; - - foreach ($reasons as $reason) { - if ($first) { - $first = false; - } else { - $body .= PHP_EOL; - } - - $body .= $this->reasonMessage($reason, $single); - $body .= $this->reasonLocation($reason, $single); - - $issues++; - } - - if (!empty($testLocation)) { - $body .= $testLocation; - } - - $elements[] = [ - 'title' => $title, - 'body' => $body, - ]; - } - - return [ - 'numberOfTestsWithIssues' => count($events), - 'numberOfIssues' => $issues, - 'elements' => $elements, - ]; - } - - private function testLocation(Test $test): string - { - if (!$test->isTestMethod()) { - return ''; - } - - assert($test instanceof TestMethod); - - return sprintf( - '%s%s:%d%s', - PHP_EOL, - $test->file(), - $test->line(), - PHP_EOL, - ); - } - - private function reasonMessage(ConsideredRisky|DeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpunitDeprecationTriggered|PhpunitErrorTriggered|PhpunitWarningTriggered|PhpWarningTriggered|WarningTriggered $reason, bool $single): string - { - $message = trim($reason->message()); - - if ($single) { - return $message . PHP_EOL; - } - - $lines = explode(PHP_EOL, $message); - $buffer = '* ' . $lines[0] . PHP_EOL; - - if (count($lines) > 1) { - foreach (range(1, count($lines) - 1) as $line) { - $buffer .= ' ' . $lines[$line] . PHP_EOL; - } - } - - return $buffer; - } - - private function reasonLocation(ConsideredRisky|DeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpunitDeprecationTriggered|PhpunitErrorTriggered|PhpunitWarningTriggered|PhpWarningTriggered|WarningTriggered $reason, bool $single): string - { - if (!$reason instanceof DeprecationTriggered && - !$reason instanceof PhpDeprecationTriggered && - !$reason instanceof ErrorTriggered && - !$reason instanceof NoticeTriggered && - !$reason instanceof PhpNoticeTriggered && - !$reason instanceof WarningTriggered && - !$reason instanceof PhpWarningTriggered) { - return ''; - } - - return sprintf( - '%s%s:%d%s', - $single ? '' : ' ', - $reason->file(), - $reason->line(), - PHP_EOL, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/UnexpectedOutputPrinter.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/UnexpectedOutputPrinter.php deleted file mode 100644 index d8fe3a1..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Default/UnexpectedOutputPrinter.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\Default; - -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade; -use PHPUnit\Event\Test\PrintedUnexpectedOutput; -use PHPUnit\Event\Test\PrintedUnexpectedOutputSubscriber; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\TextUI\Output\Printer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final readonly class UnexpectedOutputPrinter implements PrintedUnexpectedOutputSubscriber -{ - private Printer $printer; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public function __construct(Printer $printer, Facade $facade) - { - $this->printer = $printer; - - $facade->registerSubscriber($this); - } - - public function notify(PrintedUnexpectedOutput $event): void - { - $this->printer->print($event->output()); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php deleted file mode 100644 index e6ccd35..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php +++ /dev/null @@ -1,283 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -use const PHP_EOL; -use function assert; -use PHPUnit\Event\EventFacadeIsSealedException; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Event\UnknownSubscriberTypeException; -use PHPUnit\Logging\TeamCity\TeamCityLogger; -use PHPUnit\Logging\TestDox\TestResultCollection; -use PHPUnit\Runner\DirectoryDoesNotExistException; -use PHPUnit\TestRunner\TestResult\TestResult; -use PHPUnit\TextUI\CannotOpenSocketException; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\InvalidSocketException; -use PHPUnit\TextUI\Output\Default\ProgressPrinter\ProgressPrinter as DefaultProgressPrinter; -use PHPUnit\TextUI\Output\Default\ResultPrinter as DefaultResultPrinter; -use PHPUnit\TextUI\Output\Default\UnexpectedOutputPrinter; -use PHPUnit\TextUI\Output\TestDox\ResultPrinter as TestDoxResultPrinter; -use SebastianBergmann\Timer\Duration; -use SebastianBergmann\Timer\ResourceUsageFormatter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Facade -{ - private static ?Printer $printer = null; - private static ?DefaultResultPrinter $defaultResultPrinter = null; - private static ?TestDoxResultPrinter $testDoxResultPrinter = null; - private static ?SummaryPrinter $summaryPrinter = null; - private static bool $defaultProgressPrinter = false; - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - public static function init(Configuration $configuration, bool $extensionReplacesProgressOutput, bool $extensionReplacesResultOutput): Printer - { - self::createPrinter($configuration); - - assert(self::$printer !== null); - - if ($configuration->debug()) { - return self::$printer; - } - - self::createUnexpectedOutputPrinter(); - - if (!$extensionReplacesProgressOutput) { - self::createProgressPrinter($configuration); - } - - if (!$extensionReplacesResultOutput) { - self::createResultPrinter($configuration); - self::createSummaryPrinter($configuration); - } - - if ($configuration->outputIsTeamCity()) { - new TeamCityLogger( - DefaultPrinter::standardOutput(), - EventFacade::instance(), - ); - } - - return self::$printer; - } - - /** - * @param ?array $testDoxResult - */ - public static function printResult(TestResult $result, ?array $testDoxResult, Duration $duration, bool $stackTraceForDeprecations): void - { - assert(self::$printer !== null); - - if ($result->numberOfTestsRun() > 0) { - if (self::$defaultProgressPrinter) { - self::$printer->print(PHP_EOL . PHP_EOL); - } - - self::$printer->print((new ResourceUsageFormatter)->resourceUsage($duration) . PHP_EOL . PHP_EOL); - } - - if (self::$testDoxResultPrinter !== null && $testDoxResult !== null) { - self::$testDoxResultPrinter->print($result, $testDoxResult); - } - - if (self::$defaultResultPrinter !== null) { - self::$defaultResultPrinter->print($result, $stackTraceForDeprecations); - } - - if (self::$summaryPrinter !== null) { - self::$summaryPrinter->print($result); - } - } - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - public static function printerFor(string $target): Printer - { - if ($target === 'php://stdout') { - if (!self::$printer instanceof NullPrinter) { - return self::$printer; - } - - return DefaultPrinter::standardOutput(); - } - - return DefaultPrinter::from($target); - } - - private static function createPrinter(Configuration $configuration): void - { - $printerNeeded = false; - - if ($configuration->debug()) { - $printerNeeded = true; - } - - if ($configuration->outputIsTeamCity()) { - $printerNeeded = true; - } - - if ($configuration->outputIsTestDox()) { - $printerNeeded = true; - } - - if (!$configuration->noOutput() && !$configuration->noProgress()) { - $printerNeeded = true; - } - - if (!$configuration->noOutput() && !$configuration->noResults()) { - $printerNeeded = true; - } - - if ($printerNeeded) { - if ($configuration->outputToStandardErrorStream()) { - self::$printer = DefaultPrinter::standardError(); - - return; - } - - self::$printer = DefaultPrinter::standardOutput(); - - return; - } - - self::$printer = new NullPrinter; - } - - private static function createProgressPrinter(Configuration $configuration): void - { - assert(self::$printer !== null); - - if (!self::useDefaultProgressPrinter($configuration)) { - return; - } - - new DefaultProgressPrinter( - self::$printer, - EventFacade::instance(), - $configuration->colors(), - $configuration->columns(), - $configuration->source(), - ); - - self::$defaultProgressPrinter = true; - } - - private static function useDefaultProgressPrinter(Configuration $configuration): bool - { - if ($configuration->noOutput()) { - return false; - } - - if ($configuration->noProgress()) { - return false; - } - - if ($configuration->outputIsTeamCity()) { - return false; - } - - return true; - } - - private static function createResultPrinter(Configuration $configuration): void - { - assert(self::$printer !== null); - - if ($configuration->outputIsTestDox()) { - self::$defaultResultPrinter = new DefaultResultPrinter( - self::$printer, - true, - true, - $configuration->displayDetailsOnPhpunitDeprecations() || $configuration->displayDetailsOnAllIssues(), - false, - false, - true, - false, - false, - $configuration->displayDetailsOnTestsThatTriggerDeprecations() || $configuration->displayDetailsOnAllIssues(), - $configuration->displayDetailsOnTestsThatTriggerErrors() || $configuration->displayDetailsOnAllIssues(), - $configuration->displayDetailsOnTestsThatTriggerNotices() || $configuration->displayDetailsOnAllIssues(), - $configuration->displayDetailsOnTestsThatTriggerWarnings() || $configuration->displayDetailsOnAllIssues(), - $configuration->reverseDefectList(), - ); - } - - if ($configuration->outputIsTestDox()) { - self::$testDoxResultPrinter = new TestDoxResultPrinter( - self::$printer, - $configuration->colors(), - $configuration->columns(), - $configuration->testDoxOutputWithSummary(), - ); - } - - if ($configuration->noOutput() || $configuration->noResults()) { - return; - } - - if (self::$defaultResultPrinter !== null) { - return; - } - - self::$defaultResultPrinter = new DefaultResultPrinter( - self::$printer, - true, - true, - $configuration->displayDetailsOnPhpunitDeprecations() || $configuration->displayDetailsOnAllIssues(), - true, - true, - true, - $configuration->displayDetailsOnIncompleteTests() || $configuration->displayDetailsOnAllIssues(), - $configuration->displayDetailsOnSkippedTests() || $configuration->displayDetailsOnAllIssues(), - $configuration->displayDetailsOnTestsThatTriggerDeprecations() || $configuration->displayDetailsOnAllIssues(), - $configuration->displayDetailsOnTestsThatTriggerErrors() || $configuration->displayDetailsOnAllIssues(), - $configuration->displayDetailsOnTestsThatTriggerNotices() || $configuration->displayDetailsOnAllIssues(), - $configuration->displayDetailsOnTestsThatTriggerWarnings() || $configuration->displayDetailsOnAllIssues(), - $configuration->reverseDefectList(), - ); - } - - private static function createSummaryPrinter(Configuration $configuration): void - { - assert(self::$printer !== null); - - if (($configuration->noOutput() || $configuration->noResults()) && - !($configuration->outputIsTeamCity() || $configuration->outputIsTestDox())) { - return; - } - - self::$summaryPrinter = new SummaryPrinter( - self::$printer, - $configuration->colors(), - ); - } - - /** - * @throws EventFacadeIsSealedException - * @throws UnknownSubscriberTypeException - */ - private static function createUnexpectedOutputPrinter(): void - { - assert(self::$printer !== null); - - new UnexpectedOutputPrinter(self::$printer, EventFacade::instance()); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php deleted file mode 100644 index 382f481..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php +++ /dev/null @@ -1,126 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -use function assert; -use function count; -use function dirname; -use function explode; -use function fclose; -use function fopen; -use function fsockopen; -use function fwrite; -use function str_replace; -use function str_starts_with; -use PHPUnit\Runner\DirectoryDoesNotExistException; -use PHPUnit\TextUI\CannotOpenSocketException; -use PHPUnit\TextUI\InvalidSocketException; -use PHPUnit\Util\Filesystem; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class DefaultPrinter implements Printer -{ - /** - * @var closed-resource|resource - */ - private $stream; - private readonly bool $isPhpStream; - private bool $isOpen; - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - public static function from(string $out): self - { - return new self($out); - } - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - public static function standardOutput(): self - { - return new self('php://stdout'); - } - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - public static function standardError(): self - { - return new self('php://stderr'); - } - - /** - * @throws CannotOpenSocketException - * @throws DirectoryDoesNotExistException - * @throws InvalidSocketException - */ - private function __construct(string $out) - { - $this->isPhpStream = str_starts_with($out, 'php://'); - - if (str_starts_with($out, 'socket://')) { - $tmp = explode(':', str_replace('socket://', '', $out)); - - if (count($tmp) !== 2) { - throw new InvalidSocketException($out); - } - - $stream = @fsockopen($tmp[0], (int) $tmp[1]); - - if ($stream === false) { - throw new CannotOpenSocketException($tmp[0], (int) $tmp[1]); - } - - $this->stream = $stream; - $this->isOpen = true; - - return; - } - - if (!$this->isPhpStream && !Filesystem::createDirectory(dirname($out))) { - throw new DirectoryDoesNotExistException(dirname($out)); - } - - $stream = fopen($out, 'wb'); - - assert($stream !== false); - - $this->stream = $stream; - $this->isOpen = true; - } - - public function print(string $buffer): void - { - assert($this->isOpen); - - fwrite($this->stream, $buffer); - } - - public function flush(): void - { - if ($this->isOpen && $this->isPhpStream) { - fclose($this->stream); - - $this->isOpen = false; - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php deleted file mode 100644 index 5e6b7dd..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class NullPrinter implements Printer -{ - public function print(string $buffer): void - { - } - - public function flush(): void - { - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php deleted file mode 100644 index c9b0fb9..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Printer -{ - public function print(string $buffer): void; - - public function flush(): void; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php deleted file mode 100644 index 2e4bc75..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php +++ /dev/null @@ -1,160 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output; - -use const PHP_EOL; -use function sprintf; -use PHPUnit\TestRunner\TestResult\TestResult; -use PHPUnit\Util\Color; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class SummaryPrinter -{ - private readonly Printer $printer; - private readonly bool $colors; - private bool $countPrinted = false; - - public function __construct(Printer $printer, bool $colors) - { - $this->printer = $printer; - $this->colors = $colors; - } - - public function print(TestResult $result): void - { - if ($result->numberOfTestsRun() === 0) { - $this->printWithColor( - 'fg-black, bg-yellow', - 'No tests executed!', - ); - - return; - } - - if ($result->wasSuccessful() && - !$result->hasIssues() && - !$result->hasTestSuiteSkippedEvents() && - !$result->hasTestSkippedEvents()) { - $this->printWithColor( - 'fg-black, bg-green', - sprintf( - 'OK (%d test%s, %d assertion%s)', - $result->numberOfTestsRun(), - $result->numberOfTestsRun() === 1 ? '' : 's', - $result->numberOfAssertions(), - $result->numberOfAssertions() === 1 ? '' : 's', - ), - ); - - $this->printNumberOfIssuesIgnoredByBaseline($result); - - return; - } - - if ($result->wasSuccessful()) { - if ($result->hasIssues()) { - $color = 'fg-black, bg-yellow'; - - $this->printWithColor( - $color, - 'OK, but there were issues!', - ); - } else { - $color = 'fg-black, bg-green'; - - $this->printWithColor( - $color, - 'OK, but some tests were skipped!', - ); - } - } else { - $color = 'fg-white, bg-red'; - - if ($result->hasTestErroredEvents() || $result->hasTestTriggeredPhpunitErrorEvents()) { - $this->printWithColor( - 'fg-white, bg-red', - 'ERRORS!', - ); - } else { - $this->printWithColor( - 'fg-white, bg-red', - 'FAILURES!', - ); - } - } - - $this->printCountString($result->numberOfTestsRun(), 'Tests', $color, true); - $this->printCountString($result->numberOfAssertions(), 'Assertions', $color, true); - $this->printCountString($result->numberOfErrors(), 'Errors', $color); - $this->printCountString($result->numberOfTestFailedEvents(), 'Failures', $color); - $this->printCountString($result->numberOfPhpunitWarnings(), 'PHPUnit Warnings', $color); - $this->printCountString($result->numberOfWarnings(), 'Warnings', $color); - $this->printCountString($result->numberOfPhpOrUserDeprecations(), 'Deprecations', $color); - $this->printCountString($result->numberOfPhpunitDeprecations(), 'PHPUnit Deprecations', $color); - $this->printCountString($result->numberOfNotices(), 'Notices', $color); - $this->printCountString($result->numberOfTestSkippedByTestSuiteSkippedEvents() + $result->numberOfTestSkippedEvents(), 'Skipped', $color); - $this->printCountString($result->numberOfTestMarkedIncompleteEvents(), 'Incomplete', $color); - $this->printCountString($result->numberOfTestsWithTestConsideredRiskyEvents(), 'Risky', $color); - $this->printWithColor($color, '.'); - - $this->printNumberOfIssuesIgnoredByBaseline($result); - } - - private function printCountString(int $count, string $name, string $color, bool $always = false): void - { - if ($always || $count > 0) { - $this->printWithColor( - $color, - sprintf( - '%s%s: %d', - $this->countPrinted ? ', ' : '', - $name, - $count, - ), - false, - ); - - $this->countPrinted = true; - } - } - - private function printWithColor(string $color, string $buffer, bool $lf = true): void - { - if ($this->colors) { - $buffer = Color::colorizeTextBox($color, $buffer); - } - - $this->printer->print($buffer); - - if ($lf) { - $this->printer->print(PHP_EOL); - } - } - - private function printNumberOfIssuesIgnoredByBaseline(TestResult $result): void - { - if ($result->hasIssuesIgnoredByBaseline()) { - $this->printer->print( - sprintf( - '%s%d issue%s %s ignored by baseline.%s', - PHP_EOL, - $result->numberOfIssuesIgnoredByBaseline(), - $result->numberOfIssuesIgnoredByBaseline() > 1 ? 's' : '', - $result->numberOfIssuesIgnoredByBaseline() > 1 ? 'were' : 'was', - PHP_EOL, - ), - ); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php deleted file mode 100644 index 007ef4d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php +++ /dev/null @@ -1,491 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI\Output\TestDox; - -use const PHP_EOL; -use function array_map; -use function explode; -use function implode; -use function preg_match; -use function preg_split; -use function rtrim; -use function sprintf; -use function str_starts_with; -use function trim; -use PHPUnit\Event\Code\Throwable; -use PHPUnit\Event\Test\AfterLastTestMethodErrored; -use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; -use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\Logging\TestDox\TestResult as TestDoxTestResult; -use PHPUnit\Logging\TestDox\TestResultCollection; -use PHPUnit\TestRunner\TestResult\TestResult; -use PHPUnit\TextUI\Output\Printer; -use PHPUnit\Util\Color; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ResultPrinter -{ - private Printer $printer; - private bool $colors; - private int $columns; - private bool $printSummary; - - public function __construct(Printer $printer, bool $colors, int $columns, bool $printSummary) - { - $this->printer = $printer; - $this->colors = $colors; - $this->columns = $columns; - $this->printSummary = $printSummary; - } - - /** - * @param array $tests - */ - public function print(TestResult $result, array $tests): void - { - $this->doPrint($tests, false); - - if ($this->printSummary) { - $this->printer->print('Summary of tests with errors, failures, or issues:' . PHP_EOL . PHP_EOL); - - $this->doPrint($tests, true); - } - - $beforeFirstTestMethodErrored = []; - $afterLastTestMethodErrored = []; - - foreach ($result->testErroredEvents() as $error) { - if ($error instanceof BeforeFirstTestMethodErrored) { - $beforeFirstTestMethodErrored[$error->calledMethod()->className() . '::' . $error->calledMethod()->methodName()] = $error; - } - - if ($error instanceof AfterLastTestMethodErrored) { - $afterLastTestMethodErrored[$error->calledMethod()->className() . '::' . $error->calledMethod()->methodName()] = $error; - } - } - - $this->printBeforeClassOrAfterClassErrors( - 'before-first-test', - $beforeFirstTestMethodErrored, - ); - - $this->printBeforeClassOrAfterClassErrors( - 'after-last-test', - $afterLastTestMethodErrored, - ); - } - - /** - * @param array $tests - */ - private function doPrint(array $tests, bool $onlySummary): void - { - foreach ($tests as $prettifiedClassName => $_tests) { - $print = true; - - if ($onlySummary) { - $found = false; - - foreach ($_tests as $test) { - if ($test->status()->isSuccess()) { - continue; - } - - $found = true; - - break; - } - - if (!$found) { - $print = false; - } - } - - if (!$print) { - continue; - } - - $this->printPrettifiedClassName($prettifiedClassName); - - foreach ($_tests as $test) { - if ($onlySummary && $test->status()->isSuccess()) { - continue; - } - - $this->printTestResult($test); - } - - $this->printer->print(PHP_EOL); - } - } - - private function printPrettifiedClassName(string $prettifiedClassName): void - { - $buffer = $prettifiedClassName; - - if ($this->colors) { - $buffer = Color::colorizeTextBox('underlined', $buffer); - } - - $this->printer->print($buffer . PHP_EOL); - } - - private function printTestResult(TestDoxTestResult $test): void - { - $this->printTestResultHeader($test); - $this->printTestResultBody($test); - } - - private function printTestResultHeader(TestDoxTestResult $test): void - { - $buffer = ' ' . $this->symbolFor($test->status()) . ' '; - - if ($this->colors) { - $this->printer->print( - Color::colorizeTextBox( - $this->colorFor($test->status()), - $buffer, - ), - ); - } else { - $this->printer->print($buffer); - } - - $this->printer->print($test->test()->testDox()->prettifiedMethodName($this->colors) . PHP_EOL); - } - - private function printTestResultBody(TestDoxTestResult $test): void - { - if ($test->status()->isSuccess()) { - return; - } - - if (!$test->hasThrowable()) { - return; - } - - $this->printTestResultBodyStart($test); - $this->printThrowable($test->status(), $test->throwable()); - $this->printTestResultBodyEnd($test); - } - - private function printTestResultBodyStart(TestDoxTestResult $test): void - { - $this->printer->print( - $this->prefixLines( - $this->prefixFor('start', $test->status()), - '', - ), - ); - - $this->printer->print(PHP_EOL); - } - - private function printTestResultBodyEnd(TestDoxTestResult $test): void - { - $this->printer->print(PHP_EOL); - - $this->printer->print( - $this->prefixLines( - $this->prefixFor('last', $test->status()), - '', - ), - ); - - $this->printer->print(PHP_EOL); - } - - private function printThrowable(TestStatus $status, Throwable $throwable): void - { - $message = trim($throwable->description()); - $stackTrace = $this->formatStackTrace($throwable->stackTrace()); - $diff = ''; - - if (!empty($message) && $this->colors) { - ['message' => $message, 'diff' => $diff] = $this->colorizeMessageAndDiff( - $message, - $this->messageColorFor($status), - ); - } - - if (!empty($message)) { - $this->printer->print( - $this->prefixLines( - $this->prefixFor('message', $status), - $message, - ), - ); - - $this->printer->print(PHP_EOL); - } - - if (!empty($diff)) { - $this->printer->print( - $this->prefixLines( - $this->prefixFor('diff', $status), - $diff, - ), - ); - - $this->printer->print(PHP_EOL); - } - - if (!empty($stackTrace)) { - if (!empty($message) || !empty($diff)) { - $tracePrefix = $this->prefixFor('default', $status); - } else { - $tracePrefix = $this->prefixFor('trace', $status); - } - - $this->printer->print( - $this->prefixLines($tracePrefix, PHP_EOL . $stackTrace), - ); - } - - if ($throwable->hasPrevious()) { - $this->printer->print(PHP_EOL); - - $this->printer->print( - $this->prefixLines( - $this->prefixFor('default', $status), - ' ', - ), - ); - - $this->printer->print(PHP_EOL); - - $this->printer->print( - $this->prefixLines( - $this->prefixFor('default', $status), - 'Caused by:', - ), - ); - - $this->printer->print(PHP_EOL); - - $this->printThrowable($status, $throwable->previous()); - } - } - - /** - * @return array{message: string, diff: string} - */ - private function colorizeMessageAndDiff(string $buffer, string $style): array - { - $lines = $buffer ? array_map('\rtrim', explode(PHP_EOL, $buffer)) : []; - $message = []; - $diff = []; - $insideDiff = false; - - foreach ($lines as $line) { - if ($line === '--- Expected') { - $insideDiff = true; - } - - if (!$insideDiff) { - $message[] = $line; - } else { - if (str_starts_with($line, '-')) { - $line = Color::colorize('fg-red', Color::visualizeWhitespace($line, true)); - } elseif (str_starts_with($line, '+')) { - $line = Color::colorize('fg-green', Color::visualizeWhitespace($line, true)); - } elseif ($line === '@@ @@') { - $line = Color::colorize('fg-cyan', $line); - } - - $diff[] = $line; - } - } - - $message = implode(PHP_EOL, $message); - $diff = implode(PHP_EOL, $diff); - - if (!empty($message)) { - // Testdox output has a left-margin of 5; keep right-margin to prevent terminal scrolling - $message = Color::colorizeTextBox($style, $message, $this->columns - 7); - } - - return [ - 'message' => $message, - 'diff' => $diff, - ]; - } - - private function formatStackTrace(string $stackTrace): string - { - if (!$this->colors) { - return rtrim($stackTrace); - } - - $lines = []; - $previousPath = ''; - - foreach (explode(PHP_EOL, $stackTrace) as $line) { - if (preg_match('/^(.*):(\d+)$/', $line, $matches)) { - $lines[] = Color::colorizePath($matches[1], $previousPath) . Color::dim(':') . Color::colorize('fg-blue', $matches[2]) . "\n"; - $previousPath = $matches[1]; - - continue; - } - - $lines[] = $line; - $previousPath = ''; - } - - return rtrim(implode('', $lines)); - } - - private function prefixLines(string $prefix, string $message): string - { - return implode( - PHP_EOL, - array_map( - static fn (string $line) => ' ' . $prefix . ($line ? ' ' . $line : ''), - preg_split('/\r\n|\r|\n/', $message), - ), - ); - } - - /** - * @param 'default'|'diff'|'last'|'message'|'start'|'trace' $type - */ - private function prefixFor(string $type, TestStatus $status): string - { - if (!$this->colors) { - return '│'; - } - - return Color::colorize( - $this->colorFor($status), - match ($type) { - 'default' => '│', - 'start' => '┐', - 'message' => '├', - 'diff' => '┊', - 'trace' => '╵', - 'last' => '┴', - }, - ); - } - - private function colorFor(TestStatus $status): string - { - if ($status->isSuccess()) { - return 'fg-green'; - } - - if ($status->isError()) { - return 'fg-yellow'; - } - - if ($status->isFailure()) { - return 'fg-red'; - } - - if ($status->isSkipped()) { - return 'fg-cyan'; - } - - if ($status->isIncomplete() || $status->isDeprecation() || $status->isNotice() || $status->isRisky() || $status->isWarning()) { - return 'fg-yellow'; - } - - return 'fg-blue'; - } - - private function messageColorFor(TestStatus $status): string - { - if ($status->isSuccess()) { - return ''; - } - - if ($status->isError()) { - return 'bg-yellow,fg-black'; - } - - if ($status->isFailure()) { - return 'bg-red,fg-white'; - } - - if ($status->isSkipped()) { - return 'fg-cyan'; - } - - if ($status->isIncomplete() || $status->isDeprecation() || $status->isNotice() || $status->isRisky() || $status->isWarning()) { - return 'fg-yellow'; - } - - return 'fg-white,bg-blue'; - } - - private function symbolFor(TestStatus $status): string - { - if ($status->isSuccess()) { - return '✔'; - } - - if ($status->isError() || $status->isFailure()) { - return '✘'; - } - - if ($status->isSkipped()) { - return '↩'; - } - - if ($status->isDeprecation() || $status->isNotice() || $status->isRisky() || $status->isWarning()) { - return '⚠'; - } - - if ($status->isIncomplete()) { - return '∅'; - } - - return '?'; - } - - /** - * @param 'after-last-test'|'before-first-test' $type - * @param array $errors - */ - private function printBeforeClassOrAfterClassErrors(string $type, array $errors): void - { - if (empty($errors)) { - return; - } - - $this->printer->print( - sprintf( - 'These %s methods errored:' . PHP_EOL . PHP_EOL, - $type, - ), - ); - - $index = 0; - - foreach ($errors as $method => $error) { - $this->printer->print( - sprintf( - '%d) %s' . PHP_EOL, - ++$index, - $method, - ), - ); - - $this->printer->print(trim($error->throwable()->description()) . PHP_EOL . PHP_EOL); - $this->printer->print($this->formatStackTrace($error->throwable()->stackTrace()) . PHP_EOL); - } - - $this->printer->print(PHP_EOL); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php deleted file mode 100644 index e16c026..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php +++ /dev/null @@ -1,170 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use PHPUnit\TestRunner\TestResult\TestResult; -use PHPUnit\TextUI\Configuration\Configuration; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ShellExitCodeCalculator -{ - private const SUCCESS_EXIT = 0; - private const FAILURE_EXIT = 1; - private const EXCEPTION_EXIT = 2; - - public function calculate(Configuration $configuration, TestResult $result): int - { - $failOnDeprecation = false; - $failOnPhpunitDeprecation = false; - $failOnPhpunitWarning = false; - $failOnEmptyTestSuite = false; - $failOnIncomplete = false; - $failOnNotice = false; - $failOnRisky = false; - $failOnSkipped = false; - $failOnWarning = false; - - if ($configuration->failOnAllIssues()) { - $failOnDeprecation = true; - $failOnPhpunitDeprecation = true; - $failOnPhpunitWarning = true; - $failOnEmptyTestSuite = true; - $failOnIncomplete = true; - $failOnNotice = true; - $failOnRisky = true; - $failOnSkipped = true; - $failOnWarning = true; - } - - if ($configuration->failOnDeprecation()) { - $failOnDeprecation = true; - } - - if ($configuration->doNotFailOnDeprecation()) { - $failOnDeprecation = false; - } - - if ($configuration->failOnPhpunitDeprecation()) { - $failOnPhpunitDeprecation = true; - } - - if ($configuration->doNotFailOnPhpunitDeprecation()) { - $failOnPhpunitDeprecation = false; - } - - if ($configuration->failOnPhpunitWarning()) { - $failOnPhpunitWarning = true; - } - - if ($configuration->doNotFailOnPhpunitWarning()) { - $failOnPhpunitWarning = false; - } - - if ($configuration->failOnEmptyTestSuite()) { - $failOnEmptyTestSuite = true; - } - - if ($configuration->doNotFailOnEmptyTestSuite()) { - $failOnEmptyTestSuite = false; - } - - if ($configuration->failOnIncomplete()) { - $failOnIncomplete = true; - } - - if ($configuration->doNotFailOnIncomplete()) { - $failOnIncomplete = false; - } - - if ($configuration->failOnNotice()) { - $failOnNotice = true; - } - - if ($configuration->doNotFailOnNotice()) { - $failOnNotice = false; - } - - if ($configuration->failOnRisky()) { - $failOnRisky = true; - } - - if ($configuration->doNotFailOnRisky()) { - $failOnRisky = false; - } - - if ($configuration->failOnSkipped()) { - $failOnSkipped = true; - } - - if ($configuration->doNotFailOnSkipped()) { - $failOnSkipped = false; - } - - if ($configuration->failOnWarning()) { - $failOnWarning = true; - } - - if ($configuration->doNotFailOnWarning()) { - $failOnWarning = false; - } - - $returnCode = self::FAILURE_EXIT; - - if ($result->wasSuccessful()) { - $returnCode = self::SUCCESS_EXIT; - } - - if ($failOnEmptyTestSuite && !$result->hasTests()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnDeprecation && $result->hasPhpOrUserDeprecations()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnPhpunitDeprecation && $result->hasPhpunitDeprecations()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnPhpunitWarning && $result->hasPhpunitWarnings()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnIncomplete && $result->hasIncompleteTests()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnNotice && $result->hasNotices()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnRisky && $result->hasRiskyTests()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnSkipped && $result->hasSkippedTests()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($failOnWarning && $result->hasWarnings()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($result->hasErrors()) { - $returnCode = self::EXCEPTION_EXIT; - } - - return $returnCode; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/TestRunner.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/TestRunner.php deleted file mode 100644 index 2363ca2..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/TestRunner.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function mt_srand; -use PHPUnit\Event; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\ResultCache\ResultCache; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\TextUI\Configuration\Configuration; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class TestRunner -{ - /** - * @throws RuntimeException - */ - public function run(Configuration $configuration, ResultCache $resultCache, TestSuite $suite): void - { - try { - Event\Facade::emitter()->testRunnerStarted(); - - if ($configuration->executionOrder() === TestSuiteSorter::ORDER_RANDOMIZED) { - mt_srand($configuration->randomOrderSeed()); - } - - if ($configuration->executionOrder() !== TestSuiteSorter::ORDER_DEFAULT || - $configuration->executionOrderDefects() !== TestSuiteSorter::ORDER_DEFAULT || - $configuration->resolveDependencies()) { - $resultCache->load(); - - (new TestSuiteSorter($resultCache))->reorderTestsInSuite( - $suite, - $configuration->executionOrder(), - $configuration->resolveDependencies(), - $configuration->executionOrderDefects(), - ); - - Event\Facade::emitter()->testSuiteSorted( - $configuration->executionOrder(), - $configuration->executionOrderDefects(), - $configuration->resolveDependencies(), - ); - } - - (new TestSuiteFilterProcessor)->process($configuration, $suite); - - Event\Facade::emitter()->testRunnerExecutionStarted( - Event\TestSuite\TestSuiteBuilder::from($suite), - ); - - $suite->run(); - - Event\Facade::emitter()->testRunnerExecutionFinished(); - Event\Facade::emitter()->testRunnerFinished(); - } catch (Throwable $t) { - throw new RuntimeException( - $t->getMessage(), - (int) $t->getCode(), - $t, - ); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php b/v3_ci4/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php deleted file mode 100644 index c0e4beb..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php +++ /dev/null @@ -1,101 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use function array_map; -use PHPUnit\Event; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\Filter\Factory; -use PHPUnit\TextUI\Configuration\Configuration; -use PHPUnit\TextUI\Configuration\FilterNotConfiguredException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class TestSuiteFilterProcessor -{ - /** - * @throws Event\RuntimeException - * @throws FilterNotConfiguredException - */ - public function process(Configuration $configuration, TestSuite $suite): void - { - $factory = new Factory; - - if (!$configuration->hasFilter() && - !$configuration->hasGroups() && - !$configuration->hasExcludeGroups() && - !$configuration->hasExcludeFilter() && - !$configuration->hasTestsCovering() && - !$configuration->hasTestsUsing() && - !$configuration->hasTestsRequiringPhpExtension()) { - return; - } - - if ($configuration->hasExcludeGroups()) { - $factory->addExcludeGroupFilter( - $configuration->excludeGroups(), - ); - } - - if ($configuration->hasGroups()) { - $factory->addIncludeGroupFilter( - $configuration->groups(), - ); - } - - if ($configuration->hasTestsCovering()) { - $factory->addIncludeGroupFilter( - array_map( - static fn (string $name): string => '__phpunit_covers_' . $name, - $configuration->testsCovering(), - ), - ); - } - - if ($configuration->hasTestsUsing()) { - $factory->addIncludeGroupFilter( - array_map( - static fn (string $name): string => '__phpunit_uses_' . $name, - $configuration->testsUsing(), - ), - ); - } - - if ($configuration->hasTestsRequiringPhpExtension()) { - $factory->addIncludeGroupFilter( - array_map( - static fn (string $name): string => '__phpunit_requires_php_extension' . $name, - $configuration->testsRequiringPhpExtension(), - ), - ); - } - - if ($configuration->hasExcludeFilter()) { - $factory->addExcludeNameFilter( - $configuration->excludeFilter(), - ); - } - - if ($configuration->hasFilter()) { - $factory->addIncludeNameFilter( - $configuration->filter(), - ); - } - - $suite->injectFilter($factory); - - Event\Facade::emitter()->testSuiteFiltered( - Event\TestSuite\TestSuiteBuilder::from($suite), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Cloner.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Cloner.php deleted file mode 100644 index ca8a6b4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Cloner.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Cloner -{ - /** - * @template OriginalType of object - * - * @param OriginalType $original - * - * @return OriginalType - */ - public static function clone(object $original): object - { - try { - return clone $original; - - /** @phpstan-ignore catch.neverThrown */ - } catch (Throwable) { - return $original; - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Color.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Color.php deleted file mode 100644 index 6cfbb7b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Color.php +++ /dev/null @@ -1,185 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const DIRECTORY_SEPARATOR; -use const PHP_EOL; -use function array_map; -use function array_walk; -use function count; -use function explode; -use function implode; -use function max; -use function min; -use function preg_replace; -use function preg_replace_callback; -use function preg_split; -use function sprintf; -use function str_pad; -use function strtr; -use function trim; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Color -{ - /** - * @var array - */ - private const WHITESPACE_MAP = [ - ' ' => '·', - "\t" => '⇥', - ]; - - /** - * @var array - */ - private const WHITESPACE_EOL_MAP = [ - ' ' => '·', - "\t" => '⇥', - "\n" => '↵', - "\r" => '⟵', - ]; - - /** - * @var array - */ - private static array $ansiCodes = [ - 'reset' => '0', - 'bold' => '1', - 'dim' => '2', - 'dim-reset' => '22', - 'underlined' => '4', - 'fg-default' => '39', - 'fg-black' => '30', - 'fg-red' => '31', - 'fg-green' => '32', - 'fg-yellow' => '33', - 'fg-blue' => '34', - 'fg-magenta' => '35', - 'fg-cyan' => '36', - 'fg-white' => '37', - 'bg-default' => '49', - 'bg-black' => '40', - 'bg-red' => '41', - 'bg-green' => '42', - 'bg-yellow' => '43', - 'bg-blue' => '44', - 'bg-magenta' => '45', - 'bg-cyan' => '46', - 'bg-white' => '47', - ]; - - public static function colorize(string $color, string $buffer): string - { - if (trim($buffer) === '') { - return $buffer; - } - - $codes = array_map('\trim', explode(',', $color)); - $styles = []; - - foreach ($codes as $code) { - if (isset(self::$ansiCodes[$code])) { - $styles[] = self::$ansiCodes[$code]; - } - } - - if (empty($styles)) { - return $buffer; - } - - return self::optimizeColor(sprintf("\x1b[%sm", implode(';', $styles)) . $buffer . "\x1b[0m"); - } - - public static function colorizeTextBox(string $color, string $buffer, ?int $columns = null): string - { - $lines = preg_split('/\r\n|\r|\n/', $buffer); - $maxBoxWidth = max(array_map('\strlen', $lines)); - - if ($columns !== null) { - $maxBoxWidth = min($maxBoxWidth, $columns); - } - - array_walk($lines, static function (string &$line) use ($color, $maxBoxWidth): void - { - $line = self::colorize($color, str_pad($line, $maxBoxWidth)); - }); - - return implode(PHP_EOL, $lines); - } - - public static function colorizePath(string $path, ?string $previousPath = null, bool $colorizeFilename = false): string - { - if ($previousPath === null) { - $previousPath = ''; - } - - $path = explode(DIRECTORY_SEPARATOR, $path); - $previousPath = explode(DIRECTORY_SEPARATOR, $previousPath); - - for ($i = 0; $i < min(count($path), count($previousPath)); $i++) { - if ($path[$i] === $previousPath[$i]) { - $path[$i] = self::dim($path[$i]); - } - } - - if ($colorizeFilename) { - $last = count($path) - 1; - $path[$last] = preg_replace_callback( - '/([\-_.]+|phpt$)/', - static fn ($matches) => self::dim($matches[0]), - $path[$last], - ); - } - - return self::optimizeColor(implode(self::dim(DIRECTORY_SEPARATOR), $path)); - } - - public static function dim(string $buffer): string - { - if (trim($buffer) === '') { - return $buffer; - } - - return "\e[2m{$buffer}\e[22m"; - } - - public static function visualizeWhitespace(string $buffer, bool $visualizeEOL = false): string - { - $replaceMap = $visualizeEOL ? self::WHITESPACE_EOL_MAP : self::WHITESPACE_MAP; - - return preg_replace_callback( - '/\s+/', - static fn ($matches) => self::dim(strtr($matches[0], $replaceMap)), - $buffer, - ); - } - - private static function optimizeColor(string $buffer): string - { - return preg_replace( - [ - "/\e\\[22m\e\\[2m/", - "/\e\\[([^m]*)m\e\\[([1-9][0-9;]*)m/", - "/(\e\\[[^m]*m)+(\e\\[0m)/", - ], - [ - '', - "\e[$1;$2m", - '$2', - ], - $buffer, - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/Exception.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/Exception.php deleted file mode 100644 index 58f42db..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/Exception.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php deleted file mode 100644 index 623af2d..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidDirectoryException extends RuntimeException implements Exception -{ - public function __construct(string $directory) - { - parent::__construct( - sprintf( - '"%s" is not a directory', - $directory, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php deleted file mode 100644 index 224f711..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidJsonException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php deleted file mode 100644 index bc2fe9a..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function sprintf; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class InvalidVersionOperatorException extends RuntimeException implements Exception -{ - public function __construct(string $operator) - { - parent::__construct( - sprintf( - '"%s" is not a valid version_compare() operator', - $operator, - ), - ); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/PhpProcessException.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/PhpProcessException.php deleted file mode 100644 index 05069ef..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/PhpProcessException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\PHP; - -use PHPUnit\Util\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PhpProcessException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/XmlException.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/XmlException.php deleted file mode 100644 index 127e1ec..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exception/XmlException.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\Xml; - -use PHPUnit\Util\Exception; -use RuntimeException; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class XmlException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/ExcludeList.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/ExcludeList.php deleted file mode 100644 index e935ae8..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/ExcludeList.php +++ /dev/null @@ -1,235 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const PHP_OS_FAMILY; -use function class_exists; -use function defined; -use function dirname; -use function is_dir; -use function realpath; -use function str_starts_with; -use function sys_get_temp_dir; -use Composer\Autoload\ClassLoader; -use DeepCopy\DeepCopy; -use PharIo\Manifest\Manifest; -use PharIo\Version\Version as PharIoVersion; -use PhpParser\Parser; -use PHPUnit\Framework\TestCase; -use ReflectionClass; -use SebastianBergmann\CliParser\Parser as CliParser; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeUnit\CodeUnit; -use SebastianBergmann\CodeUnitReverseLookup\Wizard; -use SebastianBergmann\Comparator\Comparator; -use SebastianBergmann\Complexity\Calculator; -use SebastianBergmann\Diff\Diff; -use SebastianBergmann\Environment\Runtime; -use SebastianBergmann\Exporter\Exporter; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; -use SebastianBergmann\GlobalState\Snapshot; -use SebastianBergmann\Invoker\Invoker; -use SebastianBergmann\LinesOfCode\Counter; -use SebastianBergmann\ObjectEnumerator\Enumerator; -use SebastianBergmann\ObjectReflector\ObjectReflector; -use SebastianBergmann\RecursionContext\Context; -use SebastianBergmann\Template\Template; -use SebastianBergmann\Timer\Timer; -use SebastianBergmann\Type\TypeName; -use SebastianBergmann\Version; -use staabm\SideEffectsDetector\SideEffectsDetector; -use TheSeer\Tokenizer\Tokenizer; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class ExcludeList -{ - /** - * @var array - */ - private const EXCLUDED_CLASS_NAMES = [ - // composer - ClassLoader::class => 1, - - // myclabs/deepcopy - DeepCopy::class => 1, - - // nikic/php-parser - Parser::class => 1, - - // phar-io/manifest - Manifest::class => 1, - - // phar-io/version - PharIoVersion::class => 1, - - // phpunit/phpunit - TestCase::class => 2, - - // phpunit/php-code-coverage - CodeCoverage::class => 1, - - // phpunit/php-file-iterator - FileIteratorFacade::class => 1, - - // phpunit/php-invoker - Invoker::class => 1, - - // phpunit/php-text-template - Template::class => 1, - - // phpunit/php-timer - Timer::class => 1, - - // sebastian/cli-parser - CliParser::class => 1, - - // sebastian/code-unit - CodeUnit::class => 1, - - // sebastian/code-unit-reverse-lookup - Wizard::class => 1, - - // sebastian/comparator - Comparator::class => 1, - - // sebastian/complexity - Calculator::class => 1, - - // sebastian/diff - Diff::class => 1, - - // sebastian/environment - Runtime::class => 1, - - // sebastian/exporter - Exporter::class => 1, - - // sebastian/global-state - Snapshot::class => 1, - - // sebastian/lines-of-code - Counter::class => 1, - - // sebastian/object-enumerator - Enumerator::class => 1, - - // sebastian/object-reflector - ObjectReflector::class => 1, - - // sebastian/recursion-context - Context::class => 1, - - // sebastian/type - TypeName::class => 1, - - // sebastian/version - Version::class => 1, - - // staabm/side-effects-detector - SideEffectsDetector::class => 1, - - // theseer/tokenizer - Tokenizer::class => 1, - ]; - - /** - * @var list - */ - private static array $directories = []; - private static bool $initialized = false; - private readonly bool $enabled; - - /** - * @param non-empty-string $directory - * - * @throws InvalidDirectoryException - */ - public static function addDirectory(string $directory): void - { - if (!is_dir($directory)) { - throw new InvalidDirectoryException($directory); - } - - self::$directories[] = realpath($directory); - } - - public function __construct(?bool $enabled = null) - { - if ($enabled === null) { - $enabled = !defined('PHPUNIT_TESTSUITE'); - } - - $this->enabled = $enabled; - } - - /** - * @return list - */ - public function getExcludedDirectories(): array - { - self::initialize(); - - return self::$directories; - } - - public function isExcluded(string $file): bool - { - if (!$this->enabled) { - return false; - } - - self::initialize(); - - foreach (self::$directories as $directory) { - if (str_starts_with($file, $directory)) { - return true; - } - } - - return false; - } - - private static function initialize(): void - { - if (self::$initialized) { - return; - } - - foreach (self::EXCLUDED_CLASS_NAMES as $className => $parent) { - if (!class_exists($className)) { - continue; - } - - $directory = (new ReflectionClass($className))->getFileName(); - - for ($i = 0; $i < $parent; $i++) { - $directory = dirname($directory); - } - - self::$directories[] = $directory; - } - - /** - * Hide process isolation workaround on Windows: - * tempnam() prefix is limited to first 3 characters. - * - * @see https://php.net/manual/en/function.tempnam.php - */ - if (PHP_OS_FAMILY === 'Windows') { - // @codeCoverageIgnoreStart - self::$directories[] = sys_get_temp_dir() . '\\PHP'; - // @codeCoverageIgnoreEnd - } - - self::$initialized = true; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exporter.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Exporter.php deleted file mode 100644 index 182499e..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Exporter.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use PHPUnit\TextUI\Configuration\Registry as ConfigurationRegistry; -use SebastianBergmann\Exporter\Exporter as OriginalExporter; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - */ -final class Exporter -{ - private static ?OriginalExporter $exporter = null; - - public static function export(mixed $value): string - { - return self::exporter()->export($value); - } - - /** - * @param array $data - */ - public static function shortenedRecursiveExport(array $data): string - { - return self::exporter()->shortenedRecursiveExport($data); - } - - public static function shortenedExport(mixed $value): string - { - return self::exporter()->shortenedExport($value); - } - - private static function exporter(): OriginalExporter - { - if (self::$exporter !== null) { - return self::$exporter; - } - - self::$exporter = new OriginalExporter( - ConfigurationRegistry::get()->shortenArraysForExportThreshold(), - ); - - return self::$exporter; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Filesystem.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Filesystem.php deleted file mode 100644 index 3da5404..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Filesystem.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const DIRECTORY_SEPARATOR; -use function basename; -use function dirname; -use function is_dir; -use function mkdir; -use function realpath; -use function str_starts_with; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Filesystem -{ - public static function createDirectory(string $directory): bool - { - return !(!is_dir($directory) && !@mkdir($directory, 0o777, true) && !is_dir($directory)); - } - - /** - * @param non-empty-string $path - * - * @return false|non-empty-string - */ - public static function resolveStreamOrFile(string $path): false|string - { - if (str_starts_with($path, 'php://') || str_starts_with($path, 'socket://')) { - return $path; - } - - $directory = dirname($path); - - if (is_dir($directory)) { - return realpath($directory) . DIRECTORY_SEPARATOR . basename($path); - } - - return false; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Filter.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Filter.php deleted file mode 100644 index c1aa5ac..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Filter.php +++ /dev/null @@ -1,132 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function array_unshift; -use function defined; -use function in_array; -use function is_file; -use function realpath; -use function sprintf; -use function str_starts_with; -use PHPUnit\Framework\Exception; -use PHPUnit\Framework\PhptAssertionFailedError; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Filter -{ - /** - * @throws Exception - */ - public static function stackTraceFromThrowableAsString(Throwable $t, bool $unwrap = true): string - { - if ($t instanceof PhptAssertionFailedError) { - $stackTrace = $t->syntheticTrace(); - $file = $t->syntheticFile(); - $line = $t->syntheticLine(); - } elseif ($t instanceof Exception) { - $stackTrace = $t->getSerializableTrace(); - $file = $t->getFile(); - $line = $t->getLine(); - } else { - if ($unwrap && $t->getPrevious()) { - $t = $t->getPrevious(); - } - - $stackTrace = $t->getTrace(); - $file = $t->getFile(); - $line = $t->getLine(); - } - - if (!self::frameExists($stackTrace, $file, $line)) { - array_unshift( - $stackTrace, - ['file' => $file, 'line' => $line], - ); - } - - return self::stackTraceAsString($stackTrace); - } - - /** - * @param list $frames - */ - public static function stackTraceAsString(array $frames): string - { - $buffer = ''; - $prefix = defined('__PHPUNIT_PHAR_ROOT__') ? __PHPUNIT_PHAR_ROOT__ : false; - $excludeList = new ExcludeList; - - foreach ($frames as $frame) { - if (self::shouldPrintFrame($frame, $prefix, $excludeList)) { - $buffer .= sprintf( - "%s:%s\n", - $frame['file'], - $frame['line'] ?? '?', - ); - } - } - - return $buffer; - } - - /** - * @param array{file?: non-empty-string} $frame - */ - private static function shouldPrintFrame(array $frame, false|string $prefix, ExcludeList $excludeList): bool - { - if (!isset($frame['file'])) { - return false; - } - - $file = $frame['file']; - $fileIsNotPrefixed = $prefix === false || !str_starts_with($file, $prefix); - - // @see https://github.com/sebastianbergmann/phpunit/issues/4033 - if (isset($GLOBALS['_SERVER']['SCRIPT_NAME'])) { - $script = realpath($GLOBALS['_SERVER']['SCRIPT_NAME']); - } else { - // @codeCoverageIgnoreStart - $script = ''; - // @codeCoverageIgnoreEnd - } - - return $fileIsNotPrefixed && - $file !== $script && - self::fileIsExcluded($file, $excludeList) && - is_file($file); - } - - private static function fileIsExcluded(string $file, ExcludeList $excludeList): bool - { - return (empty($GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST']) || - !in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST'], true)) && - !$excludeList->isExcluded($file); - } - - /** - * @param list $trace - */ - private static function frameExists(array $trace, string $file, int $line): bool - { - foreach ($trace as $frame) { - if (isset($frame['file'], $frame['line']) && $frame['file'] === $file && $frame['line'] === $line) { - return true; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/GlobalState.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/GlobalState.php deleted file mode 100644 index ee97d39..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/GlobalState.php +++ /dev/null @@ -1,337 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const PHP_MAJOR_VERSION; -use const PHP_MINOR_VERSION; -use function array_keys; -use function array_reverse; -use function array_shift; -use function assert; -use function defined; -use function get_defined_constants; -use function get_included_files; -use function in_array; -use function ini_get_all; -use function is_array; -use function is_file; -use function is_scalar; -use function preg_match; -use function serialize; -use function sprintf; -use function str_ends_with; -use function str_starts_with; -use function strtr; -use function var_export; -use Closure; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class GlobalState -{ - /** - * @var list - */ - private const SUPER_GLOBAL_ARRAYS = [ - '_ENV', - '_POST', - '_GET', - '_COOKIE', - '_SERVER', - '_FILES', - '_REQUEST', - ]; - - /** - * @var array> - */ - private const DEPRECATED_INI_SETTINGS = [ - '7.3' => [ - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.func_overload' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'string.strip_tags' => true, - ], - - '7.4' => [ - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.func_overload' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'pdo_odbc.db2_instance_name' => true, - 'string.strip_tags' => true, - ], - - '8.0' => [ - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - ], - - '8.1' => [ - 'auto_detect_line_endings' => true, - 'filter.default' => true, - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'oci8.old_oci_close_semantics' => true, - ], - - '8.2' => [ - 'auto_detect_line_endings' => true, - 'filter.default' => true, - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'oci8.old_oci_close_semantics' => true, - ], - - '8.3' => [ - 'auto_detect_line_endings' => true, - 'filter.default' => true, - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'oci8.old_oci_close_semantics' => true, - ], - - '8.4' => [ - 'auto_detect_line_endings' => true, - 'filter.default' => true, - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'oci8.old_oci_close_semantics' => true, - ], - - '8.5' => [ - 'auto_detect_line_endings' => true, - 'filter.default' => true, - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'oci8.old_oci_close_semantics' => true, - ], - - '8.6' => [ - 'auto_detect_line_endings' => true, - 'filter.default' => true, - 'iconv.input_encoding' => true, - 'iconv.output_encoding' => true, - 'iconv.internal_encoding' => true, - 'mbstring.http_input' => true, - 'mbstring.http_output' => true, - 'mbstring.internal_encoding' => true, - 'oci8.old_oci_close_semantics' => true, - ], - ]; - - /** - * @throws Exception - */ - public static function getIncludedFilesAsString(): string - { - return self::processIncludedFilesAsString(get_included_files()); - } - - /** - * @param list $files - * - * @throws Exception - */ - public static function processIncludedFilesAsString(array $files): string - { - $excludeList = new ExcludeList; - $prefix = false; - $result = ''; - - if (defined('__PHPUNIT_PHAR__')) { - // @codeCoverageIgnoreStart - $prefix = 'phar://' . __PHPUNIT_PHAR__ . '/'; - // @codeCoverageIgnoreEnd - } - - // Do not process bootstrap script - array_shift($files); - - // If bootstrap script was a Composer bin proxy, skip the second entry as well - if (str_ends_with(strtr($files[0], '\\', '/'), '/phpunit/phpunit/phpunit')) { - // @codeCoverageIgnoreStart - array_shift($files); - // @codeCoverageIgnoreEnd - } - - foreach (array_reverse($files) as $file) { - if (!empty($GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST']) && - in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST'], true)) { - continue; - } - - if ($prefix !== false && str_starts_with($file, $prefix)) { - continue; - } - - // Skip virtual file system protocols - if (preg_match('/^(vfs|phpvfs[a-z0-9]+):/', $file)) { - continue; - } - - if (!$excludeList->isExcluded($file) && is_file($file)) { - $result = 'require_once \'' . $file . "';\n" . $result; - } - } - - return $result; - } - - public static function getIniSettingsAsString(): string - { - $result = ''; - - $iniSettings = ini_get_all(null, false); - - assert($iniSettings !== false); - - foreach ($iniSettings as $key => $value) { - if (self::isIniSettingDeprecated($key)) { - continue; - } - - $result .= sprintf( - '@ini_set(%s, %s);' . "\n", - self::exportVariable($key), - self::exportVariable((string) $value), - ); - } - - return $result; - } - - public static function getConstantsAsString(): string - { - $constants = get_defined_constants(true); - $result = ''; - - if (isset($constants['user'])) { - foreach ($constants['user'] as $name => $value) { - $result .= sprintf( - 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n", - $name, - $name, - self::exportVariable($value), - ); - } - } - - return $result; - } - - public static function getGlobalsAsString(): string - { - $result = ''; - - foreach (self::SUPER_GLOBAL_ARRAYS as $superGlobalArray) { - if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray])) { - foreach (array_keys($GLOBALS[$superGlobalArray]) as $key) { - if ($GLOBALS[$superGlobalArray][$key] instanceof Closure) { - continue; - } - - $result .= sprintf( - '$GLOBALS[\'%s\'][\'%s\'] = %s;' . "\n", - $superGlobalArray, - $key, - self::exportVariable($GLOBALS[$superGlobalArray][$key]), - ); - } - } - } - - $excludeList = self::SUPER_GLOBAL_ARRAYS; - $excludeList[] = 'GLOBALS'; - - foreach (array_keys($GLOBALS) as $key) { - if (!$GLOBALS[$key] instanceof Closure && !in_array($key, $excludeList, true)) { - $result .= sprintf( - '$GLOBALS[\'%s\'] = %s;' . "\n", - $key, - self::exportVariable($GLOBALS[$key]), - ); - } - } - - return $result; - } - - private static function exportVariable(mixed $variable): string - { - if (is_scalar($variable) || $variable === null || - (is_array($variable) && self::arrayOnlyContainsScalars($variable))) { - return var_export($variable, true); - } - - return 'unserialize(' . var_export(serialize($variable), true) . ')'; - } - - /** - * @param array $array - */ - private static function arrayOnlyContainsScalars(array $array): bool - { - $result = true; - - foreach ($array as $element) { - if (is_array($element)) { - $result = self::arrayOnlyContainsScalars($element); - } elseif (!is_scalar($element) && $element !== null) { - $result = false; - } - - if (!$result) { - break; - } - } - - return $result; - } - - private static function isIniSettingDeprecated(string $iniSetting): bool - { - return isset(self::DEPRECATED_INI_SETTINGS[PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION][$iniSetting]); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Http/Downloader.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Http/Downloader.php deleted file mode 100644 index 4e8252b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Http/Downloader.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\Http; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This interface is not covered by the backward compatibility promise for PHPUnit - */ -interface Downloader -{ - /** - * @param non-empty-string $url - */ - public function download(string $url): false|string; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Http/PhpDownloader.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Http/PhpDownloader.php deleted file mode 100644 index 5969c04..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Http/PhpDownloader.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\Http; - -use function file_get_contents; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - * - * @codeCoverageIgnore - */ -final class PhpDownloader implements Downloader -{ - /** - * @param non-empty-string $url - */ - public function download(string $url): false|string - { - return file_get_contents($url); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Json.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Json.php deleted file mode 100644 index 8e7a92b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Json.php +++ /dev/null @@ -1,101 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const JSON_PRETTY_PRINT; -use const JSON_UNESCAPED_SLASHES; -use const JSON_UNESCAPED_UNICODE; -use const SORT_STRING; -use function is_object; -use function is_scalar; -use function json_decode; -use function json_encode; -use function json_last_error; -use function ksort; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Json -{ - /** - * @throws InvalidJsonException - */ - public static function prettify(string $json): string - { - $decodedJson = json_decode($json, false); - - if (json_last_error()) { - throw new InvalidJsonException; - } - - return json_encode($decodedJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - } - - /** - * Element 0 is true and element 1 is null when JSON decoding did not work. - * * Element 0 is false and element 1 has the decoded value when JSON decoding did work. - * * This is used to avoid ambiguity with JSON strings consisting entirely of 'null' or 'false'. - * - * @return array{0: false, 1: mixed}|array{0: true, 1: null} - */ - public static function canonicalize(string $json): array - { - $decodedJson = json_decode($json); - - if (json_last_error()) { - return [true, null]; - } - - self::recursiveSort($decodedJson); - - $reencodedJson = json_encode($decodedJson); - - return [false, $reencodedJson]; - } - - /** - * JSON object keys are unordered while PHP array keys are ordered. - * - * Sort all array keys to ensure both the expected and actual values have - * their keys in the same order. - */ - private static function recursiveSort(mixed &$json): void - { - // Nulls, empty arrays, and scalars need no further handling. - if (!$json || is_scalar($json)) { - return; - } - - $isObject = is_object($json); - - if ($isObject) { - // Objects need to be sorted during canonicalization to ensure - // correct comparsion since JSON objects are unordered. It must be - // kept as an object so that the value correctly stays as a JSON - // object instead of potentially being converted to an array. This - // approach ensures that numeric string JSON keys are preserved and - // don't risk being flattened due to PHP's array semantics. - // See #2919, #4584, #4674 - $json = (array) $json; - ksort($json, SORT_STRING); - } - - foreach ($json as &$value) { - self::recursiveSort($value); - } - - if ($isObject) { - $json = (object) $json; - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/DefaultJobRunner.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/DefaultJobRunner.php deleted file mode 100644 index 8439875..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/DefaultJobRunner.php +++ /dev/null @@ -1,262 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\PHP; - -use const PHP_BINARY; -use const PHP_SAPI; -use function array_keys; -use function array_merge; -use function assert; -use function fclose; -use function file_put_contents; -use function function_exists; -use function fwrite; -use function ini_get_all; -use function is_array; -use function is_resource; -use function proc_close; -use function proc_open; -use function str_starts_with; -use function stream_get_contents; -use function sys_get_temp_dir; -use function tempnam; -use function trim; -use function unlink; -use function xdebug_is_debugger_active; -use PHPUnit\Event\Facade; -use PHPUnit\Runner\CodeCoverage; -use SebastianBergmann\Environment\Runtime; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class DefaultJobRunner extends JobRunner -{ - /** - * @throws PhpProcessException - */ - public function run(Job $job): Result - { - $temporaryFile = null; - - if ($job->hasInput()) { - $temporaryFile = tempnam(sys_get_temp_dir(), 'phpunit_'); - - if ($temporaryFile === false || - file_put_contents($temporaryFile, $job->code()) === false) { - // @codeCoverageIgnoreStart - throw new PhpProcessException( - 'Unable to write temporary file', - ); - // @codeCoverageIgnoreEnd - } - - $job = new Job( - $job->input(), - $job->phpSettings(), - $job->environmentVariables(), - $job->arguments(), - null, - $job->redirectErrors(), - $job->requiresXdebug(), - ); - } - - assert($temporaryFile !== ''); - - return $this->runProcess($job, $temporaryFile); - } - - /** - * @param ?non-empty-string $temporaryFile - * - * @throws PhpProcessException - */ - private function runProcess(Job $job, ?string $temporaryFile): Result - { - $environmentVariables = null; - - if ($job->hasEnvironmentVariables()) { - /** @phpstan-ignore nullCoalesce.variable */ - $environmentVariables = $_SERVER ?? []; - - unset($environmentVariables['argv'], $environmentVariables['argc']); - - $environmentVariables = array_merge($environmentVariables, $job->environmentVariables()); - - foreach ($environmentVariables as $key => $value) { - if (is_array($value)) { - unset($environmentVariables[$key]); - } - } - - unset($key, $value); - } - - $pipeSpec = [ - 0 => ['pipe', 'r'], - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ]; - - if ($job->redirectErrors()) { - $pipeSpec[2] = ['redirect', 1]; - } - - $process = proc_open( - $this->buildCommand($job, $temporaryFile), - $pipeSpec, - $pipes, - null, - $environmentVariables, - ); - - if (!is_resource($process)) { - // @codeCoverageIgnoreStart - throw new PhpProcessException( - 'Unable to spawn worker process', - ); - // @codeCoverageIgnoreEnd - } - - Facade::emitter()->testRunnerStartedChildProcess(); - - fwrite($pipes[0], $job->code()); - fclose($pipes[0]); - - $stdout = ''; - $stderr = ''; - - if (isset($pipes[1])) { - $stdout = stream_get_contents($pipes[1]); - - fclose($pipes[1]); - } - - if (isset($pipes[2])) { - $stderr = stream_get_contents($pipes[2]); - - fclose($pipes[2]); - } - - proc_close($process); - - if ($temporaryFile !== null) { - unlink($temporaryFile); - } - - assert($stdout !== false); - assert($stderr !== false); - - return new Result($stdout, $stderr); - } - - /** - * @return non-empty-list - */ - private function buildCommand(Job $job, ?string $file): array - { - $runtime = new Runtime; - $command = [PHP_BINARY]; - $phpSettings = $job->phpSettings(); - - $xdebugModeConfiguredExplicitly = false; - - foreach ($phpSettings as $phpSetting) { - if (str_starts_with($phpSetting, 'xdebug.mode')) { - $xdebugModeConfiguredExplicitly = true; - - break; - } - } - - if ($runtime->hasPCOV()) { - $pcovSettings = ini_get_all('pcov'); - - assert($pcovSettings !== false); - - $phpSettings = array_merge( - $phpSettings, - $runtime->getCurrentSettings( - array_keys($pcovSettings), - ), - ); - } elseif ($runtime->hasXdebug()) { - assert(function_exists('xdebug_is_debugger_active')); - - $xdebugSettings = ini_get_all('xdebug'); - - assert($xdebugSettings !== false); - - $phpSettings = array_merge( - $phpSettings, - $runtime->getCurrentSettings( - array_keys($xdebugSettings), - ), - ); - - if ( - !$xdebugModeConfiguredExplicitly && - !CodeCoverage::instance()->isActive() && - xdebug_is_debugger_active() === false && - !$job->requiresXdebug() - ) { - // disable xdebug to speedup test execution - $phpSettings['xdebug.mode'] = 'xdebug.mode=off'; - } - } - - $command = array_merge($command, $this->settingsToParameters($phpSettings)); - - if (PHP_SAPI === 'phpdbg') { - $command[] = '-qrr'; - - if ($file === null) { - $command[] = 's='; - } - } - - if ($file !== null) { - $command[] = '-f'; - $command[] = $file; - } - - if ($job->hasArguments()) { - if ($file === null) { - $command[] = '--'; - } - - foreach ($job->arguments() as $argument) { - $command[] = trim($argument); - } - } - - return $command; - } - - /** - * @param list $settings - * - * @return list - */ - private function settingsToParameters(array $settings): array - { - $buffer = []; - - foreach ($settings as $setting) { - $buffer[] = '-d'; - $buffer[] = $setting; - } - - return $buffer; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/Job.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/Job.php deleted file mode 100644 index 172d3f5..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/Job.php +++ /dev/null @@ -1,145 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\PHP; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Job -{ - /** - * @var non-empty-string - */ - private string $code; - - /** - * @var list - */ - private array $phpSettings; - - /** - * @var array - */ - private array $environmentVariables; - - /** - * @var list - */ - private array $arguments; - - /** - * @var ?non-empty-string - */ - private ?string $input; - private bool $redirectErrors; - private bool $requiresXdebug; - - /** - * @param non-empty-string $code - * @param list $phpSettings - * @param array $environmentVariables - * @param list $arguments - * @param ?non-empty-string $input - */ - public function __construct(string $code, array $phpSettings = [], array $environmentVariables = [], array $arguments = [], ?string $input = null, bool $redirectErrors = false, bool $requiresXdebug = false) - { - $this->code = $code; - $this->phpSettings = $phpSettings; - $this->environmentVariables = $environmentVariables; - $this->arguments = $arguments; - $this->input = $input; - $this->redirectErrors = $redirectErrors; - $this->requiresXdebug = $requiresXdebug; - } - - /** - * @return non-empty-string - */ - public function code(): string - { - return $this->code; - } - - /** - * @return list - */ - public function phpSettings(): array - { - return $this->phpSettings; - } - - /** - * @phpstan-assert-if-true !empty $this->environmentVariables - */ - public function hasEnvironmentVariables(): bool - { - return $this->environmentVariables !== []; - } - - /** - * @return array - */ - public function environmentVariables(): array - { - return $this->environmentVariables; - } - - /** - * @phpstan-assert-if-true !empty $this->arguments - */ - public function hasArguments(): bool - { - return $this->arguments !== []; - } - - /** - * @return list - */ - public function arguments(): array - { - return $this->arguments; - } - - /** - * @phpstan-assert-if-true !empty $this->input - */ - public function hasInput(): bool - { - return $this->input !== null; - } - - /** - * @throws PhpProcessException - * - * @return non-empty-string - */ - public function input(): string - { - if ($this->input === null) { - throw new PhpProcessException('No input specified'); - } - - return $this->input; - } - - public function redirectErrors(): bool - { - return $this->redirectErrors; - } - - public function requiresXdebug(): bool - { - return $this->requiresXdebug; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/JobRunner.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/JobRunner.php deleted file mode 100644 index 56d9e57..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/JobRunner.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\PHP; - -use function assert; -use function file_get_contents; -use function is_file; -use function unlink; -use PHPUnit\Event\Facade as EventFacade; -use PHPUnit\Framework\ChildProcessResultProcessor; -use PHPUnit\Framework\Test; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -abstract readonly class JobRunner -{ - private ChildProcessResultProcessor $processor; - - public function __construct(ChildProcessResultProcessor $processor) - { - $this->processor = $processor; - } - - /** - * @param non-empty-string $processResultFile - */ - final public function runTestJob(Job $job, string $processResultFile, Test $test): void - { - $result = $this->run($job); - - $processResult = ''; - - if (is_file($processResultFile)) { - $processResult = file_get_contents($processResultFile); - - assert($processResult !== false); - - @unlink($processResultFile); - } - - $this->processor->process( - $test, - $processResult, - $result->stderr(), - ); - - EventFacade::emitter()->testRunnerFinishedChildProcess($result->stdout(), $result->stderr()); - } - - abstract public function run(Job $job): Result; -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/JobRunnerRegistry.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/JobRunnerRegistry.php deleted file mode 100644 index 94e22a4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/JobRunnerRegistry.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\PHP; - -use PHPUnit\Event\Facade; -use PHPUnit\Framework\ChildProcessResultProcessor; -use PHPUnit\Framework\Test; -use PHPUnit\Runner\CodeCoverage; -use PHPUnit\TestRunner\TestResult\PassedTests; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class JobRunnerRegistry -{ - private static ?JobRunner $runner = null; - - public static function run(Job $job): Result - { - return self::runner()->run($job); - } - - /** - * @param non-empty-string $processResultFile - */ - public static function runTestJob(Job $job, string $processResultFile, Test $test): void - { - self::runner()->runTestJob($job, $processResultFile, $test); - } - - public static function set(JobRunner $runner): void - { - self::$runner = $runner; - } - - private static function runner(): JobRunner - { - if (self::$runner === null) { - self::$runner = new DefaultJobRunner( - new ChildProcessResultProcessor( - Facade::instance(), - Facade::emitter(), - PassedTests::instance(), - CodeCoverage::instance(), - ), - ); - } - - return self::$runner; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/Result.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/Result.php deleted file mode 100644 index ed05822..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/PHP/Result.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\PHP; - -/** - * @immutable - * - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Result -{ - private string $stdout; - private string $stderr; - - public function __construct(string $stdout, string $stderr) - { - $this->stdout = $stdout; - $this->stderr = $stderr; - } - - public function stdout(): string - { - return $this->stdout; - } - - public function stderr(): string - { - return $this->stderr; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Reflection.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Reflection.php deleted file mode 100644 index b61c19b..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Reflection.php +++ /dev/null @@ -1,117 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function array_keys; -use function array_merge; -use function array_reverse; -use function assert; -use PHPUnit\Framework\Assert; -use PHPUnit\Framework\TestCase; -use ReflectionClass; -use ReflectionException; -use ReflectionMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Reflection -{ - /** - * @param class-string $className - * @param non-empty-string $methodName - * - * @return array{file: non-empty-string, line: non-negative-int} - */ - public static function sourceLocationFor(string $className, string $methodName): array - { - try { - $reflector = new ReflectionMethod($className, $methodName); - - $file = $reflector->getFileName(); - $line = $reflector->getStartLine(); - } catch (ReflectionException) { - $file = 'unknown'; - $line = 0; - } - - assert($file !== false && $file !== ''); - assert($line !== false && $line >= 0); - - return [ - 'file' => $file, - 'line' => $line, - ]; - } - - /** - * @param ReflectionClass $class - * - * @return list - */ - public static function publicMethodsDeclaredDirectlyInTestClass(ReflectionClass $class): array - { - return self::filterAndSortMethods($class, ReflectionMethod::IS_PUBLIC, true); - } - - /** - * @param ReflectionClass $class - * - * @return list - */ - public static function methodsDeclaredDirectlyInTestClass(ReflectionClass $class): array - { - return self::filterAndSortMethods($class, null, false); - } - - /** - * @param ReflectionClass $class - * - * @return list - */ - private static function filterAndSortMethods(ReflectionClass $class, ?int $filter, bool $sortHighestToLowest): array - { - $methodsByClass = []; - - foreach ($class->getMethods($filter) as $method) { - $declaringClassName = $method->getDeclaringClass()->getName(); - - if ($declaringClassName === TestCase::class) { - continue; - } - - if ($declaringClassName === Assert::class) { - continue; - } - - if (!isset($methodsByClass[$declaringClassName])) { - $methodsByClass[$declaringClassName] = []; - } - - $methodsByClass[$declaringClassName][] = $method; - } - - $classNames = array_keys($methodsByClass); - - if ($sortHighestToLowest) { - $classNames = array_reverse($classNames); - } - - $methods = []; - - foreach ($classNames as $className) { - $methods = array_merge($methods, $methodsByClass[$className]); - } - - return $methods; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Test.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Test.php deleted file mode 100644 index bcc2f37..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Test.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const DEBUG_BACKTRACE_IGNORE_ARGS; -use const DEBUG_BACKTRACE_PROVIDE_OBJECT; -use function debug_backtrace; -use function str_starts_with; -use PHPUnit\Event\Code\NoTestCaseObjectOnCallStackException; -use PHPUnit\Framework\TestCase; -use PHPUnit\Metadata\Parser\Registry; -use ReflectionMethod; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Test -{ - /** - * @throws NoTestCaseObjectOnCallStackException - */ - public static function currentTestCase(): TestCase - { - foreach (debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS) as $frame) { - if (isset($frame['object']) && $frame['object'] instanceof TestCase) { - return $frame['object']; - } - } - - throw new NoTestCaseObjectOnCallStackException; - } - - public static function isTestMethod(ReflectionMethod $method): bool - { - if (!$method->isPublic()) { - return false; - } - - if (str_starts_with($method->getName(), 'test')) { - return true; - } - - $metadata = Registry::parser()->forMethod( - $method->getDeclaringClass()->getName(), - $method->getName(), - ); - - return $metadata->isTest()->isNotEmpty(); - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/ThrowableToStringMapper.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/ThrowableToStringMapper.php deleted file mode 100644 index bdc5880..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/ThrowableToStringMapper.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function trim; -use PHPUnit\Framework\ExpectationFailedException; -use PHPUnit\Framework\PhptAssertionFailedError; -use PHPUnit\Framework\SelfDescribing; -use PHPUnit\Runner\ErrorException; -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class ThrowableToStringMapper -{ - public static function map(Throwable $t): string - { - if ($t instanceof ErrorException) { - return $t->getMessage(); - } - - if ($t instanceof SelfDescribing) { - $buffer = $t->toString(); - - if ($t instanceof ExpectationFailedException && $t->getComparisonFailure()) { - $buffer .= $t->getComparisonFailure()->getDiff(); - } - - if ($t instanceof PhptAssertionFailedError) { - $buffer .= $t->diff(); - } - - if (!empty($buffer)) { - $buffer = trim($buffer) . "\n"; - } - - return $buffer; - } - - return $t::class . ': ' . $t->getMessage() . "\n"; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/VersionComparisonOperator.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/VersionComparisonOperator.php deleted file mode 100644 index 9dcba3c..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/VersionComparisonOperator.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function in_array; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @immutable - */ -final readonly class VersionComparisonOperator -{ - /** - * @var '!='|'<'|'<='|'<>'|'='|'=='|'>'|'>='|'eq'|'ge'|'gt'|'le'|'lt'|'ne' - */ - private string $operator; - - /** - * @param '!='|'<'|'<='|'<>'|'='|'=='|'>'|'>='|'eq'|'ge'|'gt'|'le'|'lt'|'ne' $operator - * - * @throws InvalidVersionOperatorException - */ - public function __construct(string $operator) - { - $this->ensureOperatorIsValid($operator); - - $this->operator = $operator; - } - - /** - * @return '!='|'<'|'<='|'<>'|'='|'=='|'>'|'>='|'eq'|'ge'|'gt'|'le'|'lt'|'ne' - */ - public function asString(): string - { - return $this->operator; - } - - /** - * @param '!='|'<'|'<='|'<>'|'='|'=='|'>'|'>='|'eq'|'ge'|'gt'|'le'|'lt'|'ne' $operator - * - * @throws InvalidVersionOperatorException - */ - private function ensureOperatorIsValid(string $operator): void - { - if (!in_array($operator, ['<', 'lt', '<=', 'le', '>', 'gt', '>=', 'ge', '==', '=', 'eq', '!=', '<>', 'ne'], true)) { - throw new InvalidVersionOperatorException($operator); - } - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Xml/Loader.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Xml/Loader.php deleted file mode 100644 index 03c3c20..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Xml/Loader.php +++ /dev/null @@ -1,94 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util\Xml; - -use function error_reporting; -use function file_get_contents; -use function libxml_get_errors; -use function libxml_use_internal_errors; -use function sprintf; -use function trim; -use DOMDocument; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Loader -{ - /** - * @throws XmlException - */ - public function loadFile(string $filename): DOMDocument - { - $reporting = error_reporting(0); - $contents = file_get_contents($filename); - - error_reporting($reporting); - - if ($contents === false) { - throw new XmlException( - sprintf( - 'Could not read XML from file "%s"', - $filename, - ), - ); - } - - if (trim($contents) === '') { - throw new XmlException( - sprintf( - 'Could not parse XML from empty file "%s"', - $filename, - ), - ); - } - - return $this->load($contents); - } - - /** - * @throws XmlException - */ - public function load(string $actual): DOMDocument - { - if ($actual === '') { - throw new XmlException('Could not parse XML from empty string'); - } - - $document = new DOMDocument; - $document->preserveWhiteSpace = false; - - $internal = libxml_use_internal_errors(true); - $message = ''; - $reporting = error_reporting(0); - $loaded = $document->loadXML($actual); - - foreach (libxml_get_errors() as $error) { - $message .= "\n" . $error->message; - } - - libxml_use_internal_errors($internal); - error_reporting($reporting); - - if ($loaded === false) { - if ($message === '') { - // @codeCoverageIgnoreStart - $message = 'Could not load XML for unknown reason'; - // @codeCoverageIgnoreEnd - } - - throw new XmlException($message); - } - - return $document; - } -} diff --git a/v3_ci4/vendor/phpunit/phpunit/src/Util/Xml/Xml.php b/v3_ci4/vendor/phpunit/phpunit/src/Util/Xml/Xml.php deleted file mode 100644 index 5e30bb4..0000000 --- a/v3_ci4/vendor/phpunit/phpunit/src/Util/Xml/Xml.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const ENT_QUOTES; -use function htmlspecialchars; -use function mb_convert_encoding; -use function ord; -use function preg_replace; -use function strlen; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final readonly class Xml -{ - /** - * Escapes a string for the use in XML documents. - * - * Any Unicode character is allowed, excluding the surrogate blocks, FFFE, - * and FFFF (not even as character reference). - * - * @see https://www.w3.org/TR/xml/#charsets - */ - public static function prepareString(string $string): string - { - return preg_replace( - '/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/', - '', - htmlspecialchars( - self::convertToUtf8($string), - ENT_QUOTES, - ), - ); - } - - private static function convertToUtf8(string $string): string - { - if (!self::isUtf8($string)) { - $string = mb_convert_encoding($string, 'UTF-8'); - } - - return $string; - } - - private static function isUtf8(string $string): bool - { - $length = strlen($string); - - for ($i = 0; $i < $length; $i++) { - if (ord($string[$i]) < 0x80) { - $n = 0; - } elseif ((ord($string[$i]) & 0xE0) === 0xC0) { - $n = 1; - } elseif ((ord($string[$i]) & 0xF0) === 0xE0) { - $n = 2; - } elseif ((ord($string[$i]) & 0xF0) === 0xF0) { - $n = 3; - } else { - return false; - } - - for ($j = 0; $j < $n; $j++) { - if ((++$i === $length) || ((ord($string[$i]) & 0xC0) !== 0x80)) { - return false; - } - } - } - - return true; - } -} diff --git a/v3_ci4/vendor/predis/predis/LICENSE b/v3_ci4/vendor/predis/predis/LICENSE deleted file mode 100644 index ee78cd7..0000000 --- a/v3_ci4/vendor/predis/predis/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -MIT License - -Copyright (c) 2009-2020 Daniele Alessandri (original work) -Copyright (c) 2021-2024 Till Krüss (modified work) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/v3_ci4/vendor/predis/predis/README.md b/v3_ci4/vendor/predis/predis/README.md deleted file mode 100644 index a91a4ed..0000000 --- a/v3_ci4/vendor/predis/predis/README.md +++ /dev/null @@ -1,763 +0,0 @@ -# Predis # - -[![Software license][ico-license]](LICENSE) -[![Latest stable][ico-version-stable]][link-releases] -[![Latest development][ico-version-dev]][link-releases] -[![Monthly installs][ico-downloads-monthly]][link-downloads] -[![Build status][ico-build]][link-actions] -[![Coverage Status][ico-coverage]][link-coverage] - -A flexible and feature-complete [Redis](http://redis.io) / [Valkey](https://github.com/valkey-io/valkey) client for PHP 7.2 and newer. - -More details about this project can be found on the [frequently asked questions](FAQ.md). - - -## Main features ## - -- Support for Redis from __3.0__ to __8.0__. -- Support for clustering using client-side sharding and pluggable keyspace distributors. -- Support for [redis-cluster](http://redis.io/topics/cluster-tutorial) (Redis >= 3.0). -- Support for master-slave replication setups and [redis-sentinel](http://redis.io/topics/sentinel). -- Transparent key prefixing of keys using a customizable prefix strategy. -- Command pipelining on both single nodes and clusters (client-side sharding only). -- Abstraction for Redis transactions (Redis >= 2.0) and CAS operations (Redis >= 2.2). -- Abstraction for Lua scripting (Redis >= 2.6) and automatic switching between `EVALSHA` or `EVAL`. -- Abstraction for `SCAN`, `SSCAN`, `ZSCAN` and `HSCAN` (Redis >= 2.8) based on PHP iterators. -- Connections are established lazily by the client upon the first command and can be persisted. -- Connections can be established via TCP/IP (also TLS/SSL-encrypted) or UNIX domain sockets. -- Support for custom connection classes for providing different network or protocol backends. -- Flexible system for defining custom commands and override the default ones. - - -## How to _install_ and use Predis ## - -This library can be found on [Packagist](http://packagist.org/packages/predis/predis) for an easier -management of projects dependencies using [Composer](http://packagist.org/about-composer). -Compressed archives of each release are [available on GitHub](https://github.com/predis/predis/releases). - -```shell -composer require predis/predis -``` - - -### Loading the library ### - -Predis relies on the autoloading features of PHP to load its files when needed and complies with the -[PSR-4 standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md). -Autoloading is handled automatically when dependencies are managed through Composer, but it is also -possible to leverage its own autoloader in projects or scripts lacking any autoload facility: - -```php -// Prepend a base path if Predis is not available in your "include_path". -require 'Predis/Autoloader.php'; - -Predis\Autoloader::register(); -``` - - -### Connecting to Redis ### - -When creating a client instance without passing any connection parameter, Predis assumes `127.0.0.1` -and `6379` as default host and port. The default timeout for the `connect()` operation is 5 seconds: - -```php -$client = new Predis\Client(); -$client->set('foo', 'bar'); -$value = $client->get('foo'); -``` - -Connection parameters can be supplied either in the form of URI strings or named arrays. The latter -is the preferred way to supply parameters, but URI strings can be useful when parameters are read -from non-structured or partially-structured sources: - -```php -// Parameters passed using a named array: -$client = new Predis\Client([ - 'scheme' => 'tcp', - 'host' => '10.0.0.1', - 'port' => 6379, -]); - -// Same set of parameters, passed using an URI string: -$client = new Predis\Client('tcp://10.0.0.1:6379'); -``` - -Password protected servers can be accessed by adding `password` to the parameters set. When ACLs are -enabled on Redis >= 6.0, both `username` and `password` are required for user authentication. - -It is also possible to connect to local instances of Redis using UNIX domain sockets, in this case -the parameters must use the `unix` scheme and specify a path for the socket file: - -```php -$client = new Predis\Client(['scheme' => 'unix', 'path' => '/path/to/redis.sock']); -$client = new Predis\Client('unix:/path/to/redis.sock'); -``` - -The client can leverage TLS/SSL encryption to connect to secured remote Redis instances without the -need to configure an SSL proxy like stunnel. This can be useful when connecting to nodes running on -various cloud hosting providers. Encryption can be enabled with using the `tls` scheme and an array -of suitable [options](http://php.net/manual/context.ssl.php) passed via the `ssl` parameter: - -```php -// Named array of connection parameters: -$client = new Predis\Client([ - 'scheme' => 'tls', - 'ssl' => ['cafile' => 'private.pem', 'verify_peer' => true], -]); - -// Same set of parameters, but using an URI string: -$client = new Predis\Client('tls://127.0.0.1?ssl[cafile]=private.pem&ssl[verify_peer]=1'); -``` - -The connection schemes [`redis`](http://www.iana.org/assignments/uri-schemes/prov/redis) (alias of -`tcp`) and [`rediss`](http://www.iana.org/assignments/uri-schemes/prov/rediss) (alias of `tls`) are -also supported, with the difference that URI strings containing these schemes are parsed following -the rules described on their respective IANA provisional registration documents. - -Since Redis 8.6, you can authenticate a client using the Subject CN from its TLS client certificate (mTLS). -When this is enabled on the server, the client is authenticated during the TLS handshake, so you don’t need -to send an AUTH command. - -To use this, configure: - -- a CA certificate used to verify the server certificate (cafile), -- a client certificate (local_cert) signed by a CA trusted by the Redis server for client authentication, -- the corresponding private key (local_pk). - -Make sure: - -- the Redis server certificate is signed by a CA trusted by the client, and -- the client certificate is signed by a CA trusted by the Redis server (mTLS). - -```php -// Named array of connection parameters: -$client = new Predis\Client([ - 'scheme' => 'tls', - 'ssl' => [ - 'cafile' => 'ca.pem', // CA used to verify the server certificate - 'local_cert' => 'client.crt', // client certificate (Subject CN maps to ACL user) - 'local_pk' => 'client.key', // client private key - 'verify_peer' => true, - ], -]); - -// ACL user must exist and match the certificate Subject CN (example: CN=CN_NAME). -// Enable the user and grant permissions as needed: -$client->acl->setUser('CN_NAME', 'on', '>clientpass', 'allcommands', 'allkeys') - -echo $client->acl->whoami() // CN_NAME -``` - -The actual list of supported connection parameters can vary depending on each connection backend so -it is recommended to refer to their specific documentation or implementation for details. - -Predis can aggregate multiple connections when providing an array of connection parameters and the -appropriate option to instruct the client about how to aggregate them (clustering, replication or a -custom aggregation logic). Named arrays and URI strings can be mixed when providing configurations -for each node: - -```php -$client = new Predis\Client([ - 'tcp://10.0.0.1?alias=first-node', ['host' => '10.0.0.2', 'alias' => 'second-node'], -], [ - 'cluster' => 'predis', -]); -``` - -See the [aggregate connections](#aggregate-connections) section of this document for more details. - -Connections to Redis are lazy meaning that the client connects to a server only if and when needed. -While it is recommended to let the client do its own stuff under the hood, there may be times when -it is still desired to have control of when the connection is opened or closed: this can easily be -achieved by invoking `$client->connect()` and `$client->disconnect()`. Please note that the effect -of these methods on aggregate connections may differ depending on each specific implementation. - -#### Persistent connections #### - -To increase a performance of your application you may set up a client to use persistent TCP connection, this way -client saves a time on socket creation and connection handshake. By default, connection is created on first-command -execution and will be automatically closed by GC before the process is being killed. -However, if your application is backed by PHP-FPM the processes are idle, and you may set up it to be persistent and -reusable across multiple script execution within the same process. - -To enable the persistent connection mode you should provide following configuration: - -```php -// Standalone -$client = new Predis\Client(['persistent' => true]); - -// Cluster -$client = new Predis\Client( - ['tcp://host:port', 'tcp://host:port', 'tcp://host:port'], - ['cluster' => 'redis', 'parameters' => ['persistent' => true]] -); -``` - -**Important** - -If you operate on multiple clients within the same application, and they communicate with the same resource, by default -they will share the same socket (that's the default behaviour of persistent sockets). So in this case you would need -to additionally provide a `conn_uid` identifier for each client, this way each client will create its own socket so -the connection context won't be shared across clients. This socket behaviour explained -[here](https://www.php.net/manual/en/function.stream-socket-client.php#105393) - -```php -// Standalone -$client1 = new Predis\Client(['persistent' => true, 'conn_uid' => 'id_1']); -$client2 = new Predis\Client(['persistent' => true, 'conn_uid' => 'id_2']); - -// Cluster -$client1 = new Predis\Client( - ['tcp://host:port', 'tcp://host:port', 'tcp://host:port'], - ['cluster' => 'redis', 'parameters' => ['persistent' => true, 'conn_uid' => 'id_1']] -); -$client2 = new Predis\Client( - ['tcp://host:port', 'tcp://host:port', 'tcp://host:port'], - ['cluster' => 'redis', 'parameters' => ['persistent' => true, 'conn_uid' => 'id_2']] -); -``` - -### Client configuration ### - -Many aspects and behaviors of the client can be configured by passing specific client options to the -second argument of `Predis\Client::__construct()`: - -```php -$client = new Predis\Client($parameters, ['prefix' => 'sample:']); -``` - -Options are managed using a mini DI-alike container and their values can be lazily initialized only -when needed. The client options supported by default in Predis are: - - - `prefix`: prefix string applied to every key found in commands. - - `exceptions`: whether the client should throw or return responses upon Redis errors. - - `connections`: list of connection backends or a connection factory instance. - - `cluster`: specifies a cluster backend (`predis`, `redis` or callable). - - `replication`: specifies a replication backend (`predis`, `sentinel` or callable). - - `aggregate`: configures the client with a custom aggregate connection (callable). - - `parameters`: list of default connection parameters for aggregate connections. - - `commands`: specifies a command factory instance to use through the library. - - `readTimeout`: (cluster only) Timeout between read operations while loop over connections. - -Users can also provide custom options with values or callable objects (for lazy initialization) that -are stored in the options container for later use through the library. - - -### Aggregate connections ### - -Aggregate connections are the foundation upon which Predis implements clustering and replication and -they are used to group multiple connections to single Redis nodes and hide the specific logic needed -to handle them properly depending on the context. Aggregate connections usually require an array of -connection parameters along with the appropriate client option when creating a new client instance. - -#### Cluster #### - -Predis can be configured to work in clustering mode with a traditional client-side sharding approach -to create a cluster of independent nodes and distribute the keyspace among them. This approach needs -some sort of external health monitoring of nodes and requires the keyspace to be rebalanced manually -when nodes are added or removed: - -```php -$parameters = ['tcp://10.0.0.1', 'tcp://10.0.0.2', 'tcp://10.0.0.3']; -$options = ['cluster' => 'predis']; - -$client = new Predis\Client($parameters); -``` - -Along with Redis 3.0, a new supervised and coordinated type of clustering was introduced in the form -of [redis-cluster](http://redis.io/topics/cluster-tutorial). This kind of approach uses a different -algorithm to distribute the keyspaces, with Redis nodes coordinating themselves by communicating via -a gossip protocol to handle health status, rebalancing, nodes discovery and request redirection. In -order to connect to a cluster managed by redis-cluster, the client requires a list of its nodes (not -necessarily complete since it will automatically discover new nodes if necessary) and the `cluster` -client options set to `redis`: - -```php -$parameters = ['tcp://10.0.0.1', 'tcp://10.0.0.2', 'tcp://10.0.0.3']; -$options = ['cluster' => 'redis']; - -$client = new Predis\Client($parameters, $options); -``` - -#### Redis Gears with cluster #### - -Since Redis v7.2, Redis Gears module is a part of Redis Stack bundle. Client supports a variety of -Redis Gears commands that can be used with OSS cluster API. Currently, before using any Redis -Gears commands against OSS cluster Redis server needs to be aware of cluster topology. - -`REDISGEARS_2.REFRESHCLUSTER` command should be called against **each master node** (read replicas -should be ignored) **on cluster creation and each time cluster topology changes**. - -In most cases this actions should be performed from the CLI interface by the administrator, DevOPS -or even Kubernetes, depends on your infrastructure managing process. However, client provides an API -to do this programmatically. - -```php -/** @var \Predis\Connection\Cluster\ClusterInterface $connection */ -$connection->executeCommandOnEachNode( - new \Predis\Command\RawCommand('REDISGEARS_2.REFRESHCLUSTER') -); -``` - -#### Replication #### - -The client can be configured to operate in a single master / multiple slaves setup to provide better -service availability. When using replication, Predis recognizes read-only commands and sends them to -a random slave in order to provide some sort of load-balancing and switches to the master as soon as -it detects a command that performs any kind of operation that would end up modifying the keyspace or -the value of a key. Instead of raising a connection error when a slave fails, the client attempts to -fall back to a different slave among the ones provided in the configuration. - -The basic configuration needed to use the client in replication mode requires one Redis server to be -identified as the master (this can be done via connection parameters by setting the `role` parameter -to `master`) and one or more slaves (in this case setting `role` to `slave` for slaves is optional): - -```php -$parameters = ['tcp://10.0.0.1?role=master', 'tcp://10.0.0.2', 'tcp://10.0.0.3']; -$options = ['replication' => 'predis']; - -$client = new Predis\Client($parameters, $options); -``` - -The above configuration has a static list of servers and relies entirely on the client's logic, but -it is possible to rely on [`redis-sentinel`](http://redis.io/topics/sentinel) for a more robust HA -environment with sentinel servers acting as a source of authority for clients for service discovery. -The minimum configuration required by the client to work with redis-sentinel is a list of connection -parameters pointing to a bunch of sentinel instances, the `replication` option set to `sentinel` and -the `service` option set to the name of the service: - -```php -$sentinels = ['tcp://10.0.0.1', 'tcp://10.0.0.2', 'tcp://10.0.0.3']; -$options = ['replication' => 'sentinel', 'service' => 'mymaster']; - -$client = new Predis\Client($sentinels, $options); -``` - -If the master and slave nodes are configured to require an authentication from clients, a password -must be provided via the global `parameters` client option. This option can also be used to specify -a different database index. The client options array would then look like this: - -```php -$options = [ - 'replication' => 'sentinel', - 'service' => 'mymaster', - 'parameters' => [ - 'password' => $secretpassword, - 'database' => 10, - ], -]; -``` - -While Predis is able to distinguish commands performing write and read-only operations, `EVAL` and -`EVALSHA` represent a corner case in which the client switches to the master node because it cannot -tell when a Lua script is safe to be executed on slaves. While this is indeed the default behavior, -when certain Lua scripts do not perform write operations it is possible to provide an hint to tell -the client to stick with slaves for their execution: - -```php -$parameters = ['tcp://10.0.0.1?role=master', 'tcp://10.0.0.2', 'tcp://10.0.0.3']; -$options = ['replication' => function () { - // Set scripts that won't trigger a switch from a slave to the master node. - $strategy = new Predis\Replication\ReplicationStrategy(); - $strategy->setScriptReadOnly($LUA_SCRIPT); - - return new Predis\Connection\Replication\MasterSlaveReplication($strategy); -}]; - -$client = new Predis\Client($parameters, $options); -$client->eval($LUA_SCRIPT, 0); // Sticks to slave using `eval`... -$client->evalsha(sha1($LUA_SCRIPT), 0); // ... and `evalsha`, too. -``` - -The [`examples`](examples/) directory contains a few scripts that demonstrate how the client can be -configured and used to leverage replication in both basic and complex scenarios. - - -### Command pipelines ### - -Pipelining can help with performances when many commands need to be sent to a server by reducing the -latency introduced by network round-trip timings. Pipelining also works with aggregate connections. -The client can execute the pipeline inside a callable block or return a pipeline instance with the -ability to chain commands thanks to its fluent interface: - -```php -// Executes a pipeline inside the given callable block: -$responses = $client->pipeline(function ($pipe) { - for ($i = 0; $i < 1000; $i++) { - $pipe->set("key:$i", str_pad($i, 4, '0', 0)); - $pipe->get("key:$i"); - } -}); - -// Returns a pipeline that can be chained thanks to its fluent interface: -$responses = $client->pipeline()->set('foo', 'bar')->get('foo')->execute(); -``` - - -### Transactions ### - -The client provides an abstraction for Redis transactions based on `MULTI` and `EXEC` with a similar -interface to command pipelines: - -```php -// Executes a transaction inside the given callable block: -$responses = $client->transaction(function ($tx) { - $tx->set('foo', 'bar'); - $tx->get('foo'); -}); - -// Returns a transaction that can be chained thanks to its fluent interface: -$responses = $client->transaction()->set('foo', 'bar')->get('foo')->execute(); -``` - -This abstraction can perform check-and-set operations thanks to `WATCH` and `UNWATCH` and provides -automatic retries of transactions aborted by Redis when `WATCH`ed keys are touched. For an example -of a transaction using CAS you can see [the following example](examples/transaction_using_cas.php). - -#### Support for clustered connections #### - -Since Predis v3.0 transactions could be used with clustered connections. However, it has some limitations due to the -fact that Redis doesn't support distributed transactions. All keys in the transaction context should operate on the same -hash slot, due to this limitation it's recommended to use `{}` syntax to make sure that all keys will be mapped to the same hash -slot. Apart from it no additional configuration needed on a client side. - -```php -$redis = $this->getClient(); - -$response = $redis->transaction(function (MultiExec $tx) { - $tx->set('{foo}foo', 'value'); - $tx->set('{foo}bar', 'value'); - $tx->set('{foo}baz', 'value'); -}); - -// ['OK', 'OK', 'OK'] -``` - - -### Adding new commands ### - -While we try to update Predis to stay up to date with all the commands available in Redis, you might -prefer to stick with an old version of the library or provide a different way to filter arguments or -parse responses for specific commands. To achieve that, Predis provides the ability to implement new -command classes to define or override commands in the default command factory used by the client: - -```php -// Define a new command by extending Predis\Command\Command: -class BrandNewRedisCommand extends Predis\Command\Command -{ - public function getId() - { - return 'NEWCMD'; - } -} - -// Inject your command in the current command factory: -$client = new Predis\Client($parameters, [ - 'commands' => [ - 'newcmd' => 'BrandNewRedisCommand', - ], -]); - -$response = $client->newcmd(); -``` - -There is also a method to send raw commands without filtering their arguments or parsing responses. -Users must provide the list of arguments for the command as an array, following the signatures as -defined by the [Redis documentation for commands](http://redis.io/commands): - -```php -$response = $client->executeRaw(['SET', 'foo', 'bar']); -``` - - -### Script commands ### - -While it is possible to leverage [Lua scripting](http://redis.io/commands/eval) on Redis 2.6+ using -directly [`EVAL`](http://redis.io/commands/eval) and [`EVALSHA`](http://redis.io/commands/evalsha), -Predis offers script commands as an higher level abstraction built upon them to make things simple. -Script commands can be registered in the command factory used by the client and are accessible as if -they were plain Redis commands, but they define Lua scripts that get transmitted to the server for -remote execution. Internally they use [`EVALSHA`](http://redis.io/commands/evalsha) by default and -identify a script by its SHA1 hash to save bandwidth, but [`EVAL`](http://redis.io/commands/eval) -is used as a fall back when needed: - -```php -// Define a new script command by extending Predis\Command\ScriptCommand: -class ListPushRandomValue extends Predis\Command\ScriptCommand -{ - public function getKeysCount() - { - return 1; - } - - public function getScript() - { - return << [ - 'lpushrand' => 'ListPushRandomValue', - ], -]); - -$response = $client->lpushrand('random_values', $seed = mt_rand()); -``` - - -### Customizable connection backends ### - -Predis can use different connection backends to connect to Redis. The builtin Relay integration -leverages the [Relay](https://github.com/cachewerk/relay) extension for PHP for major performance -gains, by caching a partial replica of the Redis dataset in PHP shared runtime memory. - -```php -$client = new Predis\Client('tcp://127.0.0.1', [ - 'connections' => 'relay', -]); -``` - -Developers can create their own connection classes to support whole new network backends, extend -existing classes or provide completely different implementations. Connection classes must implement -`Predis\Connection\NodeConnectionInterface` or extend `Predis\Connection\AbstractConnection`: - -```php -class MyConnectionClass implements Predis\Connection\NodeConnectionInterface -{ - // Implementation goes here... -} - -// Use MyConnectionClass to handle connections for the `tcp` scheme: -$client = new Predis\Client('tcp://127.0.0.1', [ - 'connections' => ['tcp' => 'MyConnectionClass'], -]); -``` - -For a more in-depth insight on how to create new connection backends you can refer to the actual -implementation of the standard connection classes available in the `Predis\Connection` namespace. - -### Retry exceptions - -You can enable automatic retry that is disabled by default, to be able to reduce the amount of -false-positives in case of network issues. By default, we're retrying on any connection, -timeout or socket initialization exception, but you can update the list of retry -exceptions. For now `EqualBackoff` and `ExponentialBackoff` strategies are available, -but you may provide your custom one. Retry may be configured with any type of communication -(standalone node, cluster, pipeline, transaction, replication). Here's an example of -configuration: - -```php -// Standalone client -$client = new Predis\Client([ - 'retry' => new \Predis\Retry\Retry( - new \Predis\Retry\Strategy\ExponentialBackoff(1000, 10000), // Base and cap configuration in microseconds - 3 // Number of retries - ), -]); - -// Cluster configuration -$options = [ - 'parameters' => [ - 'retry' => new \Predis\Retry\Retry(new \Predis\Retry\Strategy\ExponentialBackoff(1000, 10000), 3), - ], -]; - -$client = new Predis\Client(['tcp://host:port', 'tcp://host:port', 'tcp://host:port'], $options); - -$retry = new \Predis\Retry\Retry( - new \Predis\Retry\Strategy\ExponentialBackoff(1000, 10000), - 3 -); - -// Update a list of exceptions to catch -$retry->updateCatchableExceptions([Exception::class]); -``` - -## RESP3 ## - -### Connection ### -To establish the connection using the [RESP3](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md) protocol, you need to set parameter `protocol => 3`. The default protocol is RESP2. - -You can pass parameter as configuration option in array or as a query parameter in `redis_url` - -```php - // Configuration option - $client = new \Predis\Client(['protocol' => 3]); - - // Redis URL - $client = new \Predis\Client('redis://localhost:6379?protocol=3'); - - // ["proto" => "3"] - $client->executeRaw(['HELLO']); -``` - -### Command responses ### -RESP3 protocol introduce a variety of new [response types](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#resp3-types), -so on the client-side we have more explicit understanding on data types we retrieve from server. Here's some examples to show the difference -between RESP2 and RESP3 responses. - -#### Float responses #### -``` php -// RESP2 connection -$client = new \Predis\Client(); - -$client->geoadd('my_geo', 11.111, 22.222, 'member1'); - -// [[0 => string(20) "11.11099988222122192", 1 => string(20) "22.22200052541037252"]] -// RESP2 returns float values as simple strings. -var_dump($client->geopos('my_geo', ['member1'])); - -// RESP3 connection -$client = new \Predis\Client(['protocol' => 3]); - -// [[0 => float(11.110999882221222), 1 => float(22.222000525410373)]] -// RESP3 introduces new double type, that corresponds to PHP float. -var_dump($client->geopos('my_geo', ['member1'])); -``` - -#### Aggregate types #### -In RESP3 new aggregate type [Map](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#map-type) -was introduced, that represents the sequence of field-value pairs. So it simplifies parsing, since we don't need to specify -parsing strategy per command (RESP2) and instead relies on the type defined by protocol (RESP3). - -In most cases RESP2 responses shouldn't differ from RESP3, since we added additional parsing for those -command that return field-value pairs. However, since RESP2 requires additional parsing, it could be that some commands -had lack of it and return unhandled responses. In this case there would be difference like this: - -```php -$client = new \Predis\Client(); - -// RESP2: ['field', 'value] -$client->commandThatReturnsFieldValuePair('key'); - -$client = new \Predis\Client(['protocol' => 3]); - -// RESP3: ['field' => 'value] -$client->commandThatReturnsFieldValuePair('key'); -``` - -Feel free to open PR or GitHub issue if you face those protocol mismatching. - -### Push notifications ### -RESP3 introduce a concept of [push connection](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#push-type), -is the one where server could send asynchronous data to client which was not explicitly requested. Predis 3.0 provides -an API to establish this kind of connection as separate blocking process (worker) and invoke callbacks depends on push -notification message type. - -#### Consumer #### -First of all, you need to set up a consumer connection and provide an optional callback that will be executed before -event loop will be started. It allows you to subscribe on channels, enable keys invalidations tracking or enable monitor -connection, any Redis command to let server know that you want to receive push notification within this connection. - -```php -// Make sure that RESP3 protocol enabled and read_write_timeout set 0, -// so connection won't be killed by timeout. -$client = new Predis\Client(['read_write_timeout' => 0, 'protocol' => 3]); - -// Create push notifications consumer. -// Provides callback where current consumer subscribes to few channels before -// enter the loop. -$push = $client->push(function (ClientInterface $client) { - $response = $client->subscribe('channel', 'control'); - $status = ($response[2] === 1) ? 'OK' : 'FAILED'; - echo "Channel subscription status: {$status}\n"; -}); -``` - -#### Dispatcher loop #### -Dispatcher object allows you to attach a callback to given push notification type and run the actual worker process that -listen for incoming push notifications. To be able to stop blocking process in runtime you can specify a condition and -call `$dispatcher->stop()` method from given callback. In this example we're waiting for specific message `terminate` -within `control` channel that we subscribed to before entering the loop. - -```php -// Storage for incoming notifications. -$messages = []; - -// Create dispatcher for push notifications. -$dispatcher = new Predis\Consumer\Push\DispatcherLoop($push); - -$dispatcher->attachCallback( - PushResponseInterface::MESSAGE_DATA_TYPE, - static function (array $payload, DispatcherLoopInterface $dispatcher) { - global $messages; - [$channel, $message] = $payload; - - if ($channel === 'control' && $message === 'terminate') { - echo "Terminating notification consumer.\n"; - $dispatcher->stop(); - - return; - } - - $messages[] = $message; - echo "Received message: {$message}\n"; - } -); - -// Run consumer loop with attached callbacks. -$dispatcher->run(); - -// Count all messages that were received during consumer loop. -$messagesCount = count($messages); -echo "We received: {$messagesCount} messages\n"; -``` - -This example shows a simple script to count all incoming messages from push notifications that we receive from -subscribed channels until stop condition will be met. Examples available in `examples/` folder. - -### Sharded pub/sub ### -From Redis 7.0, sharded Pub/Sub is introduced in which shard channels are assigned to slots by the same algorithm used -to assign keys to slots. - -Predis 3.0 provides an API that allows to use pub/sub for Cluster connections using sharded pub/sub from Redis. -You don't need to specify any additional configuration to enable sharded pub/sub, it will be automatically enabled if -Cluster connection is using. - -Implementation looks pretty much the same as Push notification, so you need to set up consumer -and run it over Dispatcher loop object. All examples available in `examples/` folder. -## Development ## - - -### Reporting bugs and contributing code ### - -Contributions to Predis are highly appreciated either in the form of pull requests for new features, -bug fixes, or just bug reports. We only ask you to adhere to issue and pull request templates. - - -### Test suite ### - -__ATTENTION__: Do not ever run the test suite shipped with Predis against instances of Redis running -in production environments or containing data you are interested in! - -Predis has a comprehensive test suite covering every aspect of the library and that can optionally -perform integration tests against a running instance of Redis (required >= 2.4.0 in order to verify -the correct behavior of the implementation of each command. Integration tests for unsupported Redis -commands are automatically skipped. If you do not have Redis up and running, integration tests can -be disabled. See [the tests README](tests/README.md) for more details about testing this library. - -Predis uses GitHub Actions for continuous integration and the history for past and current builds can be -found [on its actions page](https://github.com/predis/predis/actions). - -### License ### - -The code for Predis is distributed under the terms of the MIT license (see [LICENSE](LICENSE)). - -[ico-license]: https://img.shields.io/github/license/predis/predis.svg?style=flat-square -[ico-version-stable]: https://img.shields.io/github/v/tag/predis/predis?label=stable&style=flat-square -[ico-version-dev]: https://img.shields.io/github/v/tag/predis/predis?include_prereleases&label=pre-release&style=flat-square -[ico-downloads-monthly]: https://img.shields.io/packagist/dm/predis/predis.svg?style=flat-square -[ico-build]: https://img.shields.io/github/actions/workflow/status/predis/predis/tests.yml?branch=main&style=flat-square -[ico-coverage]: https://img.shields.io/coverallsCoverage/github/predis/predis?style=flat-square - -[link-releases]: https://github.com/predis/predis/releases -[link-actions]: https://github.com/predis/predis/actions -[link-downloads]: https://packagist.org/packages/predis/predis/stats -[link-coverage]: https://coveralls.io/github/predis/predis diff --git a/v3_ci4/vendor/predis/predis/autoload.php b/v3_ci4/vendor/predis/predis/autoload.php deleted file mode 100644 index 5d96d68..0000000 --- a/v3_ci4/vendor/predis/predis/autoload.php +++ /dev/null @@ -1,12 +0,0 @@ -=0.6.2)" - }, - "scripts": { - "phpstan": "phpstan analyse", - "style": "php-cs-fixer fix --diff --dry-run", - "style:fix": "php-cs-fixer fix" - }, - "autoload": { - "psr-4": { - "Predis\\": "src/" - } - }, - "config": { - "sort-packages": true, - "preferred-install": "dist", - "audit": { - "ignore": [ - "GHSA-vvj3-c3rp-c85p", - "PKSA-z3gr-8qht-p93v" - ] - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/v3_ci4/vendor/predis/predis/src/Autoloader.php b/v3_ci4/vendor/predis/predis/src/Autoloader.php deleted file mode 100644 index b32c7f8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Autoloader.php +++ /dev/null @@ -1,64 +0,0 @@ - - * @author Daniele Alessandri - * @codeCoverageIgnore - */ -class Autoloader -{ - private $directory; - private $prefix; - private $prefixLength; - - /** - * @param string $baseDirectory Base directory where the source files are located. - */ - public function __construct($baseDirectory = __DIR__) - { - $this->directory = $baseDirectory; - $this->prefix = __NAMESPACE__ . '\\'; - $this->prefixLength = strlen($this->prefix); - } - - /** - * Registers the autoloader class with the PHP SPL autoloader. - * - * @param bool $prepend Prepend the autoloader on the stack instead of appending it. - */ - public static function register($prepend = false) - { - spl_autoload_register([new self(), 'autoload'], true, $prepend); - } - - /** - * Loads a class from a file using its fully qualified name. - * - * @param string $className Fully qualified name of a class. - */ - public function autoload($className) - { - if (0 === strpos($className, $this->prefix)) { - $parts = explode('\\', substr($className, $this->prefixLength)); - $filepath = $this->directory . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $parts) . '.php'; - - if (is_file($filepath)) { - require $filepath; - } - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Client.php b/v3_ci4/vendor/predis/predis/src/Client.php deleted file mode 100644 index 35d4856..0000000 --- a/v3_ci4/vendor/predis/predis/src/Client.php +++ /dev/null @@ -1,642 +0,0 @@ - - */ -class Client implements ClientInterface, IteratorAggregate -{ - public const VERSION = '3.5.1'; - - /** @var OptionsInterface */ - private $options; - - /** @var ConnectionInterface */ - private $connection; - - /** @var Command\FactoryInterface */ - private $commands; - - /** - * @param mixed $parameters Connection parameters for one or more servers. - * @param mixed $options Options to configure some behaviours of the client. - */ - public function __construct($parameters = null, $options = null) - { - $this->options = static::createOptions($options ?? new Options()); - $this->connection = static::createConnection($this->options, $parameters ?? new Parameters()); - $this->commands = $this->options->commands; - } - - /** - * Creates a new set of client options for the client. - * - * @param array|OptionsInterface $options Set of client options - * - * @return OptionsInterface - * @throws InvalidArgumentException - */ - protected static function createOptions($options) - { - if (is_array($options)) { - return new Options($options); - } elseif ($options instanceof OptionsInterface) { - return $options; - } - throw new InvalidArgumentException('Invalid type for client options'); - } - - /** - * Creates single or aggregate connections from supplied arguments. - * - * This method accepts the following types to create a connection instance: - * - * - Array (dictionary: single connection, indexed: aggregate connections) - * - String (URI for a single connection) - * - Callable (connection initializer callback) - * - Instance of Predis\Connection\ParametersInterface (used as-is) - * - Instance of Predis\Connection\ConnectionInterface (returned as-is) - * - * When a callable is passed, it receives the original set of client options - * and must return an instance of Predis\Connection\ConnectionInterface. - * - * Connections are created using the connection factory (in case of single - * connections) or a specialized aggregate connection initializer (in case - * of cluster and replication) retrieved from the supplied client options. - * - * @param OptionsInterface $options Client options container - * @param mixed $parameters Connection parameters - * - * @return ConnectionInterface - * @throws InvalidArgumentException - */ - protected static function createConnection(OptionsInterface $options, $parameters) - { - if ($parameters instanceof ConnectionInterface) { - return $parameters; - } - - if ($parameters instanceof ParametersInterface || is_string($parameters)) { - return $options->connections->create($parameters); - } - - if (is_array($parameters)) { - if (!isset($parameters[0])) { - return $options->connections->create($parameters); - } elseif ($options->defined('cluster') && $initializer = $options->cluster) { - return $initializer($parameters, true); - } elseif ($options->defined('replication') && $initializer = $options->replication) { - return $initializer($parameters, true); - } elseif ($options->defined('aggregate') && $initializer = $options->aggregate) { - return $initializer($parameters, false); - } - throw new InvalidArgumentException( - 'Array of connection parameters requires `cluster`, `replication` or `aggregate` client option' - ); - } - - if (is_callable($parameters)) { - $connection = call_user_func($parameters, $options); - - if (!$connection instanceof ConnectionInterface) { - throw new InvalidArgumentException('Callable parameters must return a valid connection'); - } - - return $connection; - } - - throw new InvalidArgumentException('Invalid type for connection parameters'); - } - - /** - * {@inheritdoc} - */ - public function getCommandFactory() - { - return $this->commands; - } - - /** - * {@inheritdoc} - */ - public function getOptions() - { - return $this->options; - } - - /** - * Creates a new client using a specific underlying connection. - * - * This method allows to create a new client instance by picking a specific - * connection out of an aggregate one, with the same options of the original - * client instance. - * - * The specified selector defines which logic to use to look for a suitable - * connection by the specified value. Supported selectors are: - * - * - `id` - * - `key` - * - `slot` - * - `command` - * - `alias` - * - `role` - * - * Internally the client relies on duck-typing and follows this convention: - * - * $selector string => getConnectionBy$selector($value) method - * - * This means that support for specific selectors may vary depending on the - * actual logic implemented by connection classes and there is no interface - * binding a connection class to implement any of these. - * - * @param string $selector Type of selector. - * @param mixed $value Value to be used by the selector. - * - * @return ClientInterface - */ - public function getClientBy($selector, $value) - { - $selector = strtolower($selector); - - if (!in_array($selector, ['id', 'key', 'slot', 'role', 'alias', 'command'])) { - throw new InvalidArgumentException("Invalid selector type: `$selector`"); - } - - if (!method_exists($this->connection, $method = "getConnectionBy$selector")) { - $class = get_class($this->connection); - throw new InvalidArgumentException("Selecting connection by $selector is not supported by $class"); - } - - if (!$connection = $this->connection->$method($value)) { - throw new InvalidArgumentException("Cannot find a connection by $selector matching `$value`"); - } - - return new static($connection, $this->getOptions()); - } - - /** - * Opens the underlying connection and connects to the server. - */ - public function connect() - { - $this->connection->connect(); - } - - /** - * Closes the underlying connection and disconnects from the server. - */ - public function disconnect() - { - $this->connection->disconnect(); - } - - /** - * Closes the underlying connection and disconnects from the server. - * - * This is the same as `Client::disconnect()` as it does not actually send - * the `QUIT` command to Redis, but simply closes the connection. - */ - public function quit() - { - $this->disconnect(); - } - - /** - * Returns the current state of the underlying connection. - * - * @return bool - */ - public function isConnected() - { - return $this->connection->isConnected(); - } - - /** - * {@inheritdoc} - */ - public function getConnection() - { - return $this->connection; - } - - /** - * Applies the configured serializer and compression to given value. - * - * @param mixed $value - * @return string - */ - public function pack($value) - { - return $this->connection instanceof RelayConnection - ? $this->connection->pack($value) - : $value; - } - - /** - * Deserializes and decompresses to given value. - * - * @param mixed $value - * @return string - */ - public function unpack($value) - { - return $this->connection instanceof RelayConnection - ? $this->connection->unpack($value) - : $value; - } - - /** - * Executes a command without filtering its arguments, parsing the response, - * applying any prefix to keys or throwing exceptions on Redis errors even - * regardless of client options. - * - * It is possible to identify Redis error responses from normal responses - * using the second optional argument which is populated by reference. - * - * @param array $arguments Command arguments as defined by the command signature. - * @param bool $error Set to TRUE when Redis returned an error response. - * - * @return mixed - */ - public function executeRaw(array $arguments, &$error = null) - { - $error = false; - $commandID = array_shift($arguments); - - $response = $this->connection->executeCommand( - new RawCommand($commandID, $arguments) - ); - - if ($response instanceof ResponseInterface) { - if ($response instanceof ErrorResponseInterface) { - $error = true; - } - - return (string) $response; - } - - return $response; - } - - /** - * {@inheritdoc} - */ - public function __call($commandID, $arguments) - { - return $this->executeCommand( - $this->createCommand($commandID, $arguments) - ); - } - - /** - * {@inheritdoc} - */ - public function createCommand($commandID, $arguments = []) - { - return $this->commands->create($commandID, $arguments); - } - - /** - * @param string $name - * @return ContainerInterface - */ - public function __get(string $name) - { - return ContainerFactory::create($this, $name); - } - - /** - * @param string $name - * @param mixed $value - * @return mixed - */ - public function __set(string $name, $value) - { - throw new RuntimeException('Not allowed'); - } - - /** - * @param string $name - * @return mixed - */ - public function __isset(string $name) - { - throw new RuntimeException('Not allowed'); - } - - /** - * {@inheritdoc} - * @throws Throwable - */ - public function executeCommand(CommandInterface $command) - { - $parameters = $this->connection->getParameters(); - - if ($this->connection instanceof AggregateConnectionInterface || $this->connection instanceof RelayConnection) { - $response = $this->connection->executeCommand($command); - } else { - $response = $parameters->retry->callWithRetry( - function () use ($command) { - return $this->connection->executeCommand($command); - }, - function () { - $this->connection->disconnect(); - } - ); - } - - if ($response instanceof ResponseInterface) { - if ($response instanceof ErrorResponseInterface) { - $response = $this->onErrorResponse($command, $response); - } - - return $response; - } - - if ($parameters->protocol === 2) { - return $command->parseResponse($response); - } - - return $command->parseResp3Response($response); - } - - /** - * Handles -ERR responses returned by Redis. - * - * @param CommandInterface $command Redis command that generated the error. - * @param ErrorResponseInterface $response Instance of the error response. - * - * @return mixed - * @throws ServerException - */ - protected function onErrorResponse(CommandInterface $command, ErrorResponseInterface $response) - { - if ($command instanceof ScriptCommand && $response->getErrorType() === 'NOSCRIPT') { - $response = $this->executeCommand($command->getEvalCommand()); - - if (!$response instanceof ResponseInterface) { - $response = $command->parseResponse($response); - } - - return $response; - } - - if ($this->options->exceptions) { - throw new ServerException($response->getMessage()); - } - - return $response; - } - - /** - * Executes the specified initializer method on `$this` by adjusting the - * actual invocation depending on the arity (0, 1 or 2 arguments). This is - * simply an utility method to create Redis contexts instances since they - * follow a common initialization path. - * - * @param string $initializer Method name. - * @param array $argv Arguments for the method. - * - * @return mixed - */ - private function sharedContextFactory($initializer, $argv = null) - { - switch (count($argv)) { - case 0: - return $this->$initializer(); - - case 1: - return is_array($argv[0]) - ? $this->$initializer($argv[0]) - : $this->$initializer(null, $argv[0]); - - case 2: - [$arg0, $arg1] = $argv; - - return $this->$initializer($arg0, $arg1); - - default: - return $this->$initializer($this, $argv); - } - } - - /** - * Creates a new pipeline context and returns it, or returns the results of - * a pipeline executed inside the optionally provided callable object. - * - * @param mixed ...$arguments Array of options, a callable for execution, or both. - * - * @return Pipeline|array - */ - public function pipeline(...$arguments) - { - return $this->sharedContextFactory('createPipeline', func_get_args()); - } - - /** - * Actual pipeline context initializer method. - * - * @param array|null $options Options for the context. - * @param mixed $callable Optional callable used to execute the context. - * - * @return Pipeline|array - */ - protected function createPipeline(?array $options = null, $callable = null) - { - if (isset($options['atomic']) && $options['atomic']) { - $class = Atomic::class; - } elseif (isset($options['fire-and-forget']) && $options['fire-and-forget']) { - $class = FireAndForget::class; - } else { - $class = Pipeline::class; - } - - if ($this->connection instanceof RelayConnection) { - if (isset($options['atomic']) && $options['atomic']) { - $class = RelayAtomic::class; - } elseif (isset($options['fire-and-forget']) && $options['fire-and-forget']) { - throw new NotSupportedException('The "relay" extension does not support fire-and-forget pipelines.'); - } else { - $class = RelayPipeline::class; - } - } - - /* - * @var ClientContextInterface - */ - $pipeline = new $class($this); - - if (isset($callable)) { - return $pipeline->execute($callable); - } - - return $pipeline; - } - - /** - * Creates a new transaction context and returns it, or returns the results - * of a transaction executed inside the optionally provided callable object. - * - * @param mixed ...$arguments Array of options, a callable for execution, or both. - * - * @return MultiExecTransaction|array - */ - public function transaction(...$arguments) - { - return $this->sharedContextFactory('createTransaction', func_get_args()); - } - - /** - * Actual transaction context initializer method. - * - * @param array|null $options Options for the context. - * @param mixed $callable Optional callable used to execute the context. - * - * @return MultiExecTransaction|array - */ - protected function createTransaction(?array $options = null, $callable = null) - { - $transaction = new MultiExecTransaction($this, $options); - - if (isset($callable)) { - return $transaction->execute($callable); - } - - return $transaction; - } - - /** - * Creates a new publish/subscribe context and returns it, or starts its loop - * inside the optionally provided callable object. - * - * @param mixed ...$arguments Array of options, a callable for execution, or both. - * - * @return PubSubConsumer|null - */ - public function pubSubLoop(...$arguments) - { - return $this->sharedContextFactory('createPubSub', func_get_args()); - } - - /** - * Creates new push notifications consumer. - * - * @param callable|null $preLoopCallback Callback that should be called on client before enter a loop. - * @return PushConsumer - */ - public function push(?callable $preLoopCallback = null): PushConsumer - { - return new PushConsumer($this, $preLoopCallback); - } - - /** - * Actual publish/subscribe context initializer method. - * - * @param array|null $options Options for the context. - * @param mixed $callable Optional callable used to execute the context. - * - * @return PubSubConsumer|null - */ - protected function createPubSub(?array $options = null, $callable = null) - { - if ($this->connection instanceof RelayConnection) { - $pubsub = new RelayPubSubConsumer($this, $options); - } else { - $pubsub = new PubSubConsumer($this, $options); - } - - if (!isset($callable)) { - return $pubsub; - } - - foreach ($pubsub as $message) { - if (call_user_func($callable, $pubsub, $message) === false) { - $pubsub->stop(); - } - } - - return null; - } - - /** - * Creates a new monitor consumer and returns it. - * - * @return MonitorConsumer - */ - public function monitor() - { - return new MonitorConsumer($this); - } - - /** - * @return Traversable - */ - #[ReturnTypeWillChange] - public function getIterator() - { - $clients = []; - $connection = $this->getConnection(); - - if (!$connection instanceof Traversable) { - return new ArrayIterator([ - (string) $connection => new static($connection, $this->getOptions()), - ]); - } - - foreach ($connection as $node) { - $clients[(string) $node] = new static($node, $this->getOptions()); - } - - return new ArrayIterator($clients); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/ClientConfiguration.php b/v3_ci4/vendor/predis/predis/src/ClientConfiguration.php deleted file mode 100644 index 7af6c52..0000000 --- a/v3_ci4/vendor/predis/predis/src/ClientConfiguration.php +++ /dev/null @@ -1,42 +0,0 @@ - [ - ['name' => 'Json', 'commandPrefix' => 'JSON'], - ['name' => 'BloomFilter', 'commandPrefix' => 'BF'], - ['name' => 'CuckooFilter', 'commandPrefix' => 'CF'], - ['name' => 'CountMinSketch', 'commandPrefix' => 'CMS'], - ['name' => 'TDigest', 'commandPrefix' => 'TDIGEST'], - ['name' => 'TopK', 'commandPrefix' => 'TOPK'], - ['name' => 'Search', 'commandPrefix' => 'FT'], - ['name' => 'TimeSeries', 'commandPrefix' => 'TS'], - ], - ]; - - /** - * Returns available modules with configuration. - * - * @return array|string[][] - */ - public static function getModules(): array - { - return self::$config['modules']; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/ClientContextInterface.php b/v3_ci4/vendor/predis/predis/src/ClientContextInterface.php deleted file mode 100644 index 2e02140..0000000 --- a/v3_ci4/vendor/predis/predis/src/ClientContextInterface.php +++ /dev/null @@ -1,459 +0,0 @@ -commands = $this->getDefaultCommands(); - } - - /** - * Returns the default map of supported commands with their handlers. - * - * @return array - */ - protected function getDefaultCommands() - { - $getKeyFromFirstArgument = [$this, 'getKeyFromFirstArgument']; - $getKeyFromAllArguments = [$this, 'getKeyFromAllArguments']; - - return [ - /* commands operating on the key space */ - 'EXISTS' => $getKeyFromAllArguments, - 'DEL' => $getKeyFromAllArguments, - 'UNLINK' => $getKeyFromAllArguments, - 'TYPE' => $getKeyFromFirstArgument, - 'EXPIRE' => $getKeyFromFirstArgument, - 'EXPIREAT' => $getKeyFromFirstArgument, - 'PERSIST' => $getKeyFromFirstArgument, - 'PEXPIRE' => $getKeyFromFirstArgument, - 'PEXPIREAT' => $getKeyFromFirstArgument, - 'TTL' => $getKeyFromFirstArgument, - 'PTTL' => $getKeyFromFirstArgument, - 'SORT' => [$this, 'getKeyFromSortCommand'], - 'DUMP' => $getKeyFromFirstArgument, - 'RESTORE' => $getKeyFromFirstArgument, - 'FLUSHDB' => [$this, 'getFakeKey'], - - /* commands operating on string values */ - 'APPEND' => $getKeyFromFirstArgument, - 'DECR' => $getKeyFromFirstArgument, - 'DECRBY' => $getKeyFromFirstArgument, - 'GET' => $getKeyFromFirstArgument, - 'GETBIT' => $getKeyFromFirstArgument, - 'MGET' => $getKeyFromAllArguments, - 'SET' => $getKeyFromFirstArgument, - 'GETRANGE' => $getKeyFromFirstArgument, - 'GETSET' => $getKeyFromFirstArgument, - 'INCR' => $getKeyFromFirstArgument, - 'INCRBY' => $getKeyFromFirstArgument, - 'INCRBYFLOAT' => $getKeyFromFirstArgument, - 'INCREX' => $getKeyFromFirstArgument, - 'SETBIT' => $getKeyFromFirstArgument, - 'SETEX' => $getKeyFromFirstArgument, - 'MSET' => [$this, 'getKeyFromInterleavedArguments'], - 'MSETNX' => [$this, 'getKeyFromInterleavedArguments'], - 'SETNX' => $getKeyFromFirstArgument, - 'SETRANGE' => $getKeyFromFirstArgument, - 'STRLEN' => $getKeyFromFirstArgument, - 'SUBSTR' => $getKeyFromFirstArgument, - 'BITOP' => [$this, 'getKeyFromBitOp'], - 'BITCOUNT' => $getKeyFromFirstArgument, - 'BITFIELD' => $getKeyFromFirstArgument, - - /* commands operating on lists */ - 'LINSERT' => $getKeyFromFirstArgument, - 'LINDEX' => $getKeyFromFirstArgument, - 'LLEN' => $getKeyFromFirstArgument, - 'LPOP' => $getKeyFromFirstArgument, - 'RPOP' => $getKeyFromFirstArgument, - 'RPOPLPUSH' => $getKeyFromAllArguments, - 'BLPOP' => [$this, 'getKeyFromBlockingListCommands'], - 'BRPOP' => [$this, 'getKeyFromBlockingListCommands'], - 'BRPOPLPUSH' => [$this, 'getKeyFromBlockingListCommands'], - 'LPUSH' => $getKeyFromFirstArgument, - 'LPUSHX' => $getKeyFromFirstArgument, - 'RPUSH' => $getKeyFromFirstArgument, - 'RPUSHX' => $getKeyFromFirstArgument, - 'LRANGE' => $getKeyFromFirstArgument, - 'LREM' => $getKeyFromFirstArgument, - 'LSET' => $getKeyFromFirstArgument, - 'LTRIM' => $getKeyFromFirstArgument, - - /* commands operating on arrays */ - 'ARCOUNT' => $getKeyFromFirstArgument, - 'ARDEL' => $getKeyFromFirstArgument, - 'ARDELRANGE' => $getKeyFromFirstArgument, - 'ARGET' => $getKeyFromFirstArgument, - 'ARGETRANGE' => $getKeyFromFirstArgument, - 'ARGREP' => $getKeyFromFirstArgument, - 'ARINFO' => $getKeyFromFirstArgument, - 'ARINSERT' => $getKeyFromFirstArgument, - 'ARLASTITEMS' => $getKeyFromFirstArgument, - 'ARLEN' => $getKeyFromFirstArgument, - 'ARMGET' => $getKeyFromFirstArgument, - 'ARMSET' => $getKeyFromFirstArgument, - 'ARNEXT' => $getKeyFromFirstArgument, - 'AROP' => $getKeyFromFirstArgument, - 'ARRING' => $getKeyFromFirstArgument, - 'ARSCAN' => $getKeyFromFirstArgument, - 'ARSEEK' => $getKeyFromFirstArgument, - 'ARSET' => $getKeyFromFirstArgument, - - /* commands operating on sets */ - 'SADD' => $getKeyFromFirstArgument, - 'SCARD' => $getKeyFromFirstArgument, - 'SDIFF' => $getKeyFromAllArguments, - 'SDIFFSTORE' => $getKeyFromAllArguments, - 'SINTER' => $getKeyFromAllArguments, - 'SINTERSTORE' => $getKeyFromAllArguments, - 'SUNION' => $getKeyFromAllArguments, - 'SUNIONSTORE' => $getKeyFromAllArguments, - 'SISMEMBER' => $getKeyFromFirstArgument, - 'SMEMBERS' => $getKeyFromFirstArgument, - 'SSCAN' => $getKeyFromFirstArgument, - 'SPOP' => $getKeyFromFirstArgument, - 'SRANDMEMBER' => $getKeyFromFirstArgument, - 'SREM' => $getKeyFromFirstArgument, - - /* commands operating on sorted sets */ - 'ZADD' => $getKeyFromFirstArgument, - 'ZCARD' => $getKeyFromFirstArgument, - 'ZCOUNT' => $getKeyFromFirstArgument, - 'ZINCRBY' => $getKeyFromFirstArgument, - 'ZINTERSTORE' => [$this, 'getKeyFromZsetAggregationCommands'], - 'ZRANGE' => $getKeyFromFirstArgument, - 'ZRANGEBYSCORE' => $getKeyFromFirstArgument, - 'ZRANK' => $getKeyFromFirstArgument, - 'ZREM' => $getKeyFromFirstArgument, - 'ZREMRANGEBYRANK' => $getKeyFromFirstArgument, - 'ZREMRANGEBYSCORE' => $getKeyFromFirstArgument, - 'ZREVRANGE' => $getKeyFromFirstArgument, - 'ZREVRANGEBYSCORE' => $getKeyFromFirstArgument, - 'ZREVRANK' => $getKeyFromFirstArgument, - 'ZSCORE' => $getKeyFromFirstArgument, - 'ZUNIONSTORE' => [$this, 'getKeyFromZsetAggregationCommands'], - 'ZSCAN' => $getKeyFromFirstArgument, - 'ZLEXCOUNT' => $getKeyFromFirstArgument, - 'ZRANGEBYLEX' => $getKeyFromFirstArgument, - 'ZREMRANGEBYLEX' => $getKeyFromFirstArgument, - 'ZREVRANGEBYLEX' => $getKeyFromFirstArgument, - - /* commands operating on hashes */ - 'HDEL' => $getKeyFromFirstArgument, - 'HEXISTS' => $getKeyFromFirstArgument, - 'HGET' => $getKeyFromFirstArgument, - 'HGETALL' => $getKeyFromFirstArgument, - 'HMGET' => $getKeyFromFirstArgument, - 'HMSET' => $getKeyFromFirstArgument, - 'HINCRBY' => $getKeyFromFirstArgument, - 'HINCRBYFLOAT' => $getKeyFromFirstArgument, - 'HKEYS' => $getKeyFromFirstArgument, - 'HLEN' => $getKeyFromFirstArgument, - 'HSET' => $getKeyFromFirstArgument, - 'HSETNX' => $getKeyFromFirstArgument, - 'HVALS' => $getKeyFromFirstArgument, - 'HSCAN' => $getKeyFromFirstArgument, - 'HSTRLEN' => $getKeyFromFirstArgument, - - /* commands operating on streams */ - 'XADD' => $getKeyFromFirstArgument, - 'XDEL' => $getKeyFromFirstArgument, - 'XRANGE' => $getKeyFromFirstArgument, - - /* commands operating on HyperLogLog */ - 'PFADD' => $getKeyFromFirstArgument, - 'PFCOUNT' => $getKeyFromAllArguments, - 'PFMERGE' => $getKeyFromAllArguments, - - /* scripting */ - 'EVAL' => [$this, 'getKeyFromScriptingCommands'], - 'EVALSHA' => [$this, 'getKeyFromScriptingCommands'], - 'EVAL_RO' => [$this, 'getKeyFromScriptingCommands'], - 'EVALSHA_RO' => [$this, 'getKeyFromScriptingCommands'], - - /* server */ - 'INFO' => [$this, 'getFakeKey'], - - /* commands performing geospatial operations */ - 'GEOADD' => $getKeyFromFirstArgument, - 'GEOHASH' => $getKeyFromFirstArgument, - 'GEOPOS' => $getKeyFromFirstArgument, - 'GEODIST' => $getKeyFromFirstArgument, - 'GEORADIUS' => [$this, 'getKeyFromGeoradiusCommands'], - 'GEORADIUSBYMEMBER' => [$this, 'getKeyFromGeoradiusCommands'], - - /* sharded pubsub */ - 'SSUBSCRIBE' => $getKeyFromAllArguments, - 'SUNSUBSCRIBE' => [$this, 'getKeyFromSUnsubscribeCommand'], - 'SPUBLISH' => $getKeyFromFirstArgument, - - /* cluster */ - 'CLUSTER' => [$this, 'getFakeKey'], - - /* control */ - 'ACL' => [$this, 'getFakeKey'], - ]; - } - - /** - * Returns the list of IDs for the supported commands. - * - * @return array - */ - public function getSupportedCommands() - { - return array_keys($this->commands); - } - - /** - * Sets an handler for the specified command ID. - * - * The signature of the callback must have a single parameter of type - * Predis\Command\CommandInterface. - * - * When the callback argument is omitted or NULL, the previously associated - * handler for the specified command ID is removed. - * - * @param string $commandID Command ID. - * @param mixed $callback A valid callable object, or NULL to unset the handler. - * - * @throws InvalidArgumentException - */ - public function setCommandHandler($commandID, $callback = null) - { - $commandID = strtoupper($commandID); - - if (!isset($callback)) { - unset($this->commands[$commandID]); - - return; - } - - if (!is_callable($callback)) { - throw new InvalidArgumentException( - 'The argument must be a callable object or NULL.' - ); - } - - $this->commands[$commandID] = $callback; - } - - /** - * Get fake key for commands with no key argument. - * - * @return string - */ - protected function getFakeKey(): string - { - return 'key'; - } - - /** - * Extracts the key from the first argument of a command instance. - * - * @param CommandInterface $command Command instance. - * - * @return string - */ - protected function getKeyFromFirstArgument(CommandInterface $command) - { - return $command->getArgument(0); - } - - /** - * Extracts the key from a command with multiple keys only when all keys in - * the arguments array produce the same hash. - * - * @param CommandInterface $command Command instance. - * - * @return string|null - */ - protected function getKeyFromAllArguments(CommandInterface $command) - { - $arguments = $command->getArguments(); - - if (!$this->checkSameSlotForKeys($arguments)) { - return null; - } - - return $arguments[0]; - } - - /** - * Extracts the key from a command with multiple keys only when all keys in - * the arguments array produce the same hash. - * - * @param CommandInterface $command Command instance. - * - * @return string|null - */ - protected function getKeyFromInterleavedArguments(CommandInterface $command) - { - $arguments = $command->getArguments(); - $keys = []; - - for ($i = 0; $i < count($arguments); $i += 2) { - $keys[] = $arguments[$i]; - } - - if (!$this->checkSameSlotForKeys($keys)) { - return null; - } - - return $arguments[0]; - } - - /** - * Extracts the key from SORT command. - * - * @param CommandInterface $command Command instance. - * - * @return string|null - */ - protected function getKeyFromSortCommand(CommandInterface $command) - { - $arguments = $command->getArguments(); - $firstKey = $arguments[0]; - - if (1 === $argc = count($arguments)) { - return $firstKey; - } - - $keys = [$firstKey]; - - for ($i = 1; $i < $argc; ++$i) { - if (strtoupper($arguments[$i]) === 'STORE') { - $keys[] = $arguments[++$i]; - } - } - - if (!$this->checkSameSlotForKeys($keys)) { - return null; - } - - return $firstKey; - } - - /** - * Extracts the key from BLPOP and BRPOP commands. - * - * @param CommandInterface $command Command instance. - * - * @return string|null - */ - protected function getKeyFromBlockingListCommands(CommandInterface $command) - { - $arguments = $command->getArguments(); - - if (!$this->checkSameSlotForKeys(array_slice($arguments, 0, count($arguments) - 1))) { - return null; - } - - return $arguments[0]; - } - - /** - * Extracts the key from BITOP command. - * - * @param CommandInterface $command Command instance. - * - * @return string|null - */ - protected function getKeyFromBitOp(CommandInterface $command) - { - $arguments = $command->getArguments(); - - if (!$this->checkSameSlotForKeys(array_slice($arguments, 1, count($arguments)))) { - return null; - } - - return $arguments[1]; - } - - /** - * Extracts the key from GEORADIUS and GEORADIUSBYMEMBER commands. - * - * @param CommandInterface $command Command instance. - * - * @return string|null - */ - protected function getKeyFromGeoradiusCommands(CommandInterface $command) - { - $arguments = $command->getArguments(); - $argc = count($arguments); - $startIndex = $command->getId() === 'GEORADIUS' ? 5 : 4; - - if ($argc > $startIndex) { - $keys = [$arguments[0]]; - - for ($i = $startIndex; $i < $argc; ++$i) { - $argument = strtoupper($arguments[$i]); - if ($argument === 'STORE' || $argument === 'STOREDIST') { - $keys[] = $arguments[++$i]; - } - } - - if (!$this->checkSameSlotForKeys($keys)) { - return null; - } - } - - return $arguments[0]; - } - - /** - * Extracts the key from ZINTERSTORE and ZUNIONSTORE commands. - * - * @param CommandInterface $command Command instance. - * - * @return string|null - */ - protected function getKeyFromZsetAggregationCommands(CommandInterface $command) - { - $arguments = $command->getArguments(); - $keys = array_merge([$arguments[0]], array_slice($arguments, 2, $arguments[1])); - - if (!$this->checkSameSlotForKeys($keys)) { - return null; - } - - return $arguments[0]; - } - - /** - * Extracts key from SUNSUBSCRIBE command if it's given. - * - * @param CommandInterface $command - * @return string - */ - protected function getKeyFromSUnsubscribeCommand(CommandInterface $command): ?string - { - $arguments = $command->getArguments(); - - // SUNSUBSCRIBE command could be called without arguments, so it doesn't matter on each node it will be called. - if (empty($arguments)) { - return 'fake'; - } - - return $this->getKeyFromAllArguments($command); - } - - /** - * Extracts the key from EVAL and EVALSHA commands. - * - * @param CommandInterface $command Command instance. - * - * @return string|null - */ - protected function getKeyFromScriptingCommands(CommandInterface $command) - { - $keys = $command instanceof ScriptCommand - ? $command->getKeys() - : array_slice($args = $command->getArguments(), 2, $args[1]); - - if (!$keys || !$this->checkSameSlotForKeys($keys)) { - return null; - } - - return $keys[0]; - } - - /** - * {@inheritdoc} - */ - public function getSlot(CommandInterface $command) - { - $slot = $command->getSlot(); - - if (!isset($slot) && isset($this->commands[$cmdID = $command->getId()])) { - $key = call_user_func($this->commands[$cmdID], $command); - - if (isset($key)) { - $slot = $this->getSlotByKey($key); - $command->setSlot($slot); - } - } - - return $slot; - } - - /** - * {@inheritdoc} - */ - public function checkSameSlotForKeys(array $keys): bool - { - if (!$count = count($keys)) { - return false; - } - - $currentSlot = $this->getSlotByKey($keys[0]); - - for ($i = 1; $i < $count; ++$i) { - $nextSlot = $this->getSlotByKey($keys[$i]); - - if ($currentSlot !== $nextSlot) { - return false; - } - } - - return true; - } - - /** - * Returns only the hashable part of a key (delimited by "{...}"), or the - * whole key if a key tag is not found in the string. - * - * @param string $key A key. - * - * @return string - */ - protected function extractKeyTag($key) - { - if (false !== $start = strpos($key, '{')) { - if (false !== ($end = strpos($key, '}', $start)) && $end !== ++$start) { - $key = substr($key, $start, $end - $start); - } - } - - return $key; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Cluster/Distributor/DistributorInterface.php b/v3_ci4/vendor/predis/predis/src/Cluster/Distributor/DistributorInterface.php deleted file mode 100644 index f7cf2d1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Cluster/Distributor/DistributorInterface.php +++ /dev/null @@ -1,81 +0,0 @@ - - */ -class HashRing implements DistributorInterface, HashGeneratorInterface -{ - public const DEFAULT_REPLICAS = 128; - public const DEFAULT_WEIGHT = 100; - - private $ring; - private $ringKeys; - private $ringKeysCount; - private $replicas; - private $nodeHashCallback; - private $nodes = []; - - /** - * @param int $replicas Number of replicas in the ring. - * @param mixed $nodeHashCallback Callback returning a string used to calculate the hash of nodes. - */ - public function __construct($replicas = self::DEFAULT_REPLICAS, $nodeHashCallback = null) - { - $this->replicas = $replicas; - $this->nodeHashCallback = $nodeHashCallback; - } - - /** - * Adds a node to the ring with an optional weight. - * - * @param mixed $node Node object. - * @param int $weight Weight for the node. - */ - public function add($node, $weight = null) - { - // In case of collisions in the hashes of the nodes, the node added - // last wins, thus the order in which nodes are added is significant. - $this->nodes[] = [ - 'object' => $node, - 'weight' => (int) $weight ?: $this::DEFAULT_WEIGHT, - ]; - - $this->reset(); - } - - /** - * {@inheritdoc} - */ - public function remove($node) - { - // A node is removed by resetting the ring so that it's recreated from - // scratch, in order to reassign possible hashes with collisions to the - // right node according to the order in which they were added in the - // first place. - for ($i = 0; $i < count($this->nodes); ++$i) { - if ($this->nodes[$i]['object'] === $node) { - array_splice($this->nodes, $i, 1); - $this->reset(); - - break; - } - } - } - - /** - * Resets the distributor. - */ - private function reset() - { - unset( - $this->ring, - $this->ringKeys, - $this->ringKeysCount - ); - } - - /** - * Returns the initialization status of the distributor. - * - * @return bool - */ - private function isInitialized() - { - return isset($this->ringKeys); - } - - /** - * Calculates the total weight of all the nodes in the distributor. - * - * @return int - */ - private function computeTotalWeight() - { - $totalWeight = 0; - - foreach ($this->nodes as $node) { - $totalWeight += $node['weight']; - } - - return $totalWeight; - } - - /** - * Initializes the distributor. - */ - private function initialize() - { - if ($this->isInitialized()) { - return; - } - - if (!$this->nodes) { - throw new EmptyRingException('Cannot initialize an empty hashring.'); - } - - $this->ring = []; - $totalWeight = $this->computeTotalWeight(); - $nodesCount = count($this->nodes); - - foreach ($this->nodes as $node) { - $weightRatio = $node['weight'] / $totalWeight; - $this->addNodeToRing($this->ring, $node, $nodesCount, $this->replicas, $weightRatio); - } - - ksort($this->ring, SORT_NUMERIC); - $this->ringKeys = array_keys($this->ring); - $this->ringKeysCount = count($this->ringKeys); - } - - /** - * Implements the logic needed to add a node to the hashring. - * - * @param array $ring Source hashring. - * @param mixed $node Node object to be added. - * @param int $totalNodes Total number of nodes. - * @param int $replicas Number of replicas in the ring. - * @param float $weightRatio Weight ratio for the node. - */ - protected function addNodeToRing(&$ring, $node, $totalNodes, $replicas, $weightRatio) - { - $nodeObject = $node['object']; - $nodeHash = $this->getNodeHash($nodeObject); - $replicas = (int) round($weightRatio * $totalNodes * $replicas); - - for ($i = 0; $i < $replicas; ++$i) { - $key = $this->hash("$nodeHash:$i"); - $ring[$key] = $nodeObject; - } - } - - /** - * {@inheritdoc} - */ - protected function getNodeHash($nodeObject) - { - if (!isset($this->nodeHashCallback)) { - return (string) $nodeObject; - } - - return call_user_func($this->nodeHashCallback, $nodeObject); - } - - /** - * {@inheritdoc} - */ - public function hash($value) - { - return crc32($value); - } - - /** - * {@inheritdoc} - */ - public function getByHash($hash) - { - return $this->ring[$this->getSlot($hash)]; - } - - /** - * {@inheritdoc} - */ - public function getBySlot($slot) - { - $this->initialize(); - - if (isset($this->ring[$slot])) { - return $this->ring[$slot]; - } - } - - /** - * {@inheritdoc} - */ - public function getSlot($hash) - { - $this->initialize(); - - $ringKeys = $this->ringKeys; - $upper = $this->ringKeysCount - 1; - $lower = 0; - - while ($lower <= $upper) { - $index = ($lower + $upper) >> 1; - $item = $ringKeys[$index]; - - if ($item > $hash) { - $upper = $index - 1; - } elseif ($item < $hash) { - $lower = $index + 1; - } else { - return $item; - } - } - - return $ringKeys[$this->wrapAroundStrategy($upper, $lower, $this->ringKeysCount)]; - } - - /** - * {@inheritdoc} - */ - public function get($value) - { - $hash = $this->hash($value); - - return $this->getByHash($hash); - } - - /** - * Implements a strategy to deal with wrap-around errors during binary searches. - * - * @param int $upper - * @param int $lower - * @param int $ringKeysCount - * - * @return int - */ - protected function wrapAroundStrategy($upper, $lower, $ringKeysCount) - { - // Binary search for the last item in ringkeys with a value less or - // equal to the key. If no such item exists, return the last item. - return $upper >= 0 ? $upper : $ringKeysCount - 1; - } - - /** - * {@inheritdoc} - */ - public function getHashGenerator() - { - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Cluster/Distributor/KetamaRing.php b/v3_ci4/vendor/predis/predis/src/Cluster/Distributor/KetamaRing.php deleted file mode 100644 index 3213571..0000000 --- a/v3_ci4/vendor/predis/predis/src/Cluster/Distributor/KetamaRing.php +++ /dev/null @@ -1,70 +0,0 @@ - - */ -class KetamaRing extends HashRing -{ - public const DEFAULT_REPLICAS = 160; - - /** - * @param mixed $nodeHashCallback Callback returning a string used to calculate the hash of nodes. - */ - public function __construct($nodeHashCallback = null) - { - parent::__construct($this::DEFAULT_REPLICAS, $nodeHashCallback); - } - - /** - * {@inheritdoc} - */ - protected function addNodeToRing(&$ring, $node, $totalNodes, $replicas, $weightRatio) - { - $nodeObject = $node['object']; - $nodeHash = $this->getNodeHash($nodeObject); - $replicas = (int) floor($weightRatio * $totalNodes * ($replicas / 4)); - - for ($i = 0; $i < $replicas; ++$i) { - $unpackedDigest = unpack('V4', md5("$nodeHash-$i", true)); - - foreach ($unpackedDigest as $key) { - $ring[$key] = $nodeObject; - } - } - } - - /** - * {@inheritdoc} - */ - public function hash($value) - { - $hash = unpack('V', md5($value, true)); - - return $hash[1]; - } - - /** - * {@inheritdoc} - */ - protected function wrapAroundStrategy($upper, $lower, $ringKeysCount) - { - // Binary search for the first item in ringkeys with a value greater - // or equal to the key. If no such item exists, return the first item. - return $lower < $ringKeysCount ? $lower : 0; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Cluster/Hash/CRC16.php b/v3_ci4/vendor/predis/predis/src/Cluster/Hash/CRC16.php deleted file mode 100644 index 0cb3435..0000000 --- a/v3_ci4/vendor/predis/predis/src/Cluster/Hash/CRC16.php +++ /dev/null @@ -1,73 +0,0 @@ -> 8) ^ ord($value[$i])]) & 0xFFFF; - } - - return $crc; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Cluster/Hash/HashGeneratorInterface.php b/v3_ci4/vendor/predis/predis/src/Cluster/Hash/HashGeneratorInterface.php deleted file mode 100644 index 920c299..0000000 --- a/v3_ci4/vendor/predis/predis/src/Cluster/Hash/HashGeneratorInterface.php +++ /dev/null @@ -1,29 +0,0 @@ -distributor = $distributor ?: new HashRing(); - } - - /** - * {@inheritdoc} - */ - public function getSlotByKey($key) - { - $key = $this->extractKeyTag($key); - $hash = $this->distributor->hash($key); - - return $this->distributor->getSlot($hash); - } - - /** - * {@inheritdoc} - */ - public function checkSameSlotForKeys(array $keys): bool - { - if (!$count = count($keys)) { - return false; - } - - $currentKey = $this->extractKeyTag($keys[0]); - - for ($i = 1; $i < $count; ++$i) { - $nextKey = $this->extractKeyTag($keys[$i]); - - if ($currentKey !== $nextKey) { - return false; - } - } - - return true; - } - - /** - * {@inheritdoc} - */ - public function getDistributor() - { - return $this->distributor; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Cluster/RedisStrategy.php b/v3_ci4/vendor/predis/predis/src/Cluster/RedisStrategy.php deleted file mode 100644 index a9adc3e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Cluster/RedisStrategy.php +++ /dev/null @@ -1,55 +0,0 @@ -hashGenerator = $hashGenerator ?: new CRC16(); - } - - /** - * {@inheritdoc} - */ - public function getSlotByKey($key) - { - $key = $this->extractKeyTag($key); - - return $this->hashGenerator->hash($key) & 0x3FFF; - } - - /** - * {@inheritdoc} - */ - public function getDistributor() - { - $class = get_class($this); - throw new NotSupportedException("$class does not provide an external distributor"); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Cluster/SimpleSlotMap.php b/v3_ci4/vendor/predis/predis/src/Cluster/SimpleSlotMap.php deleted file mode 100644 index 2fed8d7..0000000 --- a/v3_ci4/vendor/predis/predis/src/Cluster/SimpleSlotMap.php +++ /dev/null @@ -1,209 +0,0 @@ -= 0x0000 && $slot <= 0x3FFF; - } - - /** - * Checks if the given slot range is valid. - * - * @param int $first Initial slot of the range. - * @param int $last Last slot of the range. - * - * @return bool - */ - public static function isValidRange($first, $last) - { - return $first >= 0x0000 && $first <= 0x3FFF && $last >= 0x0000 && $last <= 0x3FFF && $first <= $last; - } - - /** - * Resets the slot map. - */ - public function reset() - { - $this->slots = []; - } - - /** - * Checks if the slot map is empty. - * - * @return bool - */ - public function isEmpty() - { - return empty($this->slots); - } - - /** - * Returns the current slot map as a dictionary of $slot => $node. - * - * The order of the slots in the dictionary is not guaranteed. - * - * @return array - */ - public function toArray() - { - return $this->slots; - } - - /** - * Returns the list of unique nodes in the slot map. - * - * @return array - */ - public function getNodes() - { - return array_keys(array_flip($this->slots)); - } - - /** - * Assigns the specified slot range to a node. - * - * @param int $first Initial slot of the range. - * @param int $last Last slot of the range. - * @param NodeConnectionInterface|string $connection ID or connection instance. - * - * @throws OutOfBoundsException - */ - public function setSlots($first, $last, $connection) - { - if (!static::isValidRange($first, $last)) { - throw new OutOfBoundsException("Invalid slot range $first-$last for `$connection`"); - } - - $this->slots += array_fill($first, $last - $first + 1, (string) $connection); - } - - /** - * Returns the specified slot range. - * - * @param int $first Initial slot of the range. - * @param int $last Last slot of the range. - * - * @return array - */ - public function getSlots($first, $last) - { - if (!static::isValidRange($first, $last)) { - throw new OutOfBoundsException("Invalid slot range $first-$last"); - } - - return array_intersect_key($this->slots, array_fill($first, $last - $first + 1, null)); - } - - /** - * Checks if the specified slot is assigned. - * - * @param int $slot Slot index. - * - * @return bool - */ - #[ReturnTypeWillChange] - public function offsetExists($slot) - { - return isset($this->slots[$slot]); - } - - /** - * Returns the node assigned to the specified slot. - * - * @param int $slot Slot index. - * - * @return string|null - */ - #[ReturnTypeWillChange] - public function offsetGet($slot) - { - return $this->slots[$slot] ?? null; - } - - /** - * Assigns the specified slot to a node. - * - * @param int $slot Slot index. - * @param NodeConnectionInterface|string $connection ID or connection instance. - * - * @return void - */ - #[ReturnTypeWillChange] - public function offsetSet($slot, $connection) - { - if (!static::isValid($slot)) { - throw new OutOfBoundsException("Invalid slot $slot for `$connection`"); - } - - $this->slots[(int) $slot] = (string) $connection; - } - - /** - * Returns the node assigned to the specified slot. - * - * @param int $slot Slot index. - * - * @return void - */ - #[ReturnTypeWillChange] - public function offsetUnset($slot) - { - unset($this->slots[$slot]); - } - - /** - * Returns the current number of assigned slots. - * - * @return int - */ - #[ReturnTypeWillChange] - public function count() - { - return count($this->slots); - } - - /** - * Returns an iterator over the slot map. - * - * @return Traversable - */ - #[ReturnTypeWillChange] - public function getIterator() - { - return new ArrayIterator($this->slots); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Cluster/SlotMap.php b/v3_ci4/vendor/predis/predis/src/Cluster/SlotMap.php deleted file mode 100644 index a75c3e4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Cluster/SlotMap.php +++ /dev/null @@ -1,418 +0,0 @@ -= 0 && $slot <= SlotRange::MAX_SLOTS; - } - - /** - * Checks if the given slot range is valid. - * - * @param int $first Initial slot of the range. - * @param int $last Last slot of the range. - * - * @return bool - */ - public static function isValidRange($first, $last) - { - return SlotRange::isValidRange($first, $last); - } - - /** - * Resets the slot map. - */ - public function reset() - { - $this->slotRanges = []; - } - - /** - * Checks if the slot map is empty. - * - * @return bool - */ - public function isEmpty() - { - return empty($this->slotRanges); - } - - /** - * Returns the current slot map as a dictionary of $slot => $node. - * - * The order of the slots in the dictionary is not guaranteed. - * - * @return array - */ - public function toArray() - { - return array_reduce( - $this->slotRanges, - static function ($carry, $slotRange) { - return $carry + $slotRange->toArray(); - }, - [] - ); - } - - /** - * Returns the list of unique nodes in the slot map. - * - * @return array - */ - public function getNodes() - { - return array_unique(array_map( - static function ($slotRange) { - return $slotRange->getConnection(); - }, - $this->slotRanges - )); - } - - /** - * Returns the list of slot ranges. - * - * @return SlotRange[] - */ - public function getSlotRanges() - { - return $this->slotRanges; - } - - /** - * Assigns the specified slot range to a node. - * - * @param int $first Initial slot of the range. - * @param int $last Last slot of the range. - * @param NodeConnectionInterface|string $connection ID or connection instance. - * - * @throws OutOfBoundsException - */ - public function setSlots($first, $last, $connection) - { - if (!static::isValidRange($first, $last)) { - throw new OutOfBoundsException("Invalid slot range $first-$last for `$connection`"); - } - - $targetSlotRange = new SlotRange($first, $last, (string) $connection); - - // Get gaps of slot ranges list. - $gaps = $this->getGaps($this->slotRanges); - - $results = $this->slotRanges; - - foreach ($gaps as $gap) { - if (!$gap->hasIntersectionWith($targetSlotRange)) { - continue; - } - - // Get intersection of the gap and target slot range. - $results[] = new SlotRange( - max($gap->getStart(), $targetSlotRange->getStart()), - min($gap->getEnd(), $targetSlotRange->getEnd()), - $targetSlotRange->getConnection() - ); - } - - $this->sortSlotRanges($results); - - $results = $this->compactSlotRanges($results); - - $this->slotRanges = $results; - } - - /** - * Returns the specified slot range. - * - * @param int $first Initial slot of the range. - * @param int $last Last slot of the range. - * - * @return array - */ - public function getSlots($first, $last) - { - if (!static::isValidRange($first, $last)) { - throw new OutOfBoundsException("Invalid slot range $first-$last"); - } - - $placeHolder = new NullSlotRange($first, $last); - - $intersections = []; - foreach ($this->slotRanges as $slotRange) { - if (!$placeHolder->hasIntersectionWith($slotRange)) { - continue; - } - - $intersections[] = new SlotRange( - max($placeHolder->getStart(), $slotRange->getStart()), - min($placeHolder->getEnd(), $slotRange->getEnd()), - $slotRange->getConnection() - ); - } - - return array_reduce( - $intersections, - static function ($carry, $slotRange) { - return $carry + $slotRange->toArray(); - }, - [] - ); - } - - /** - * Checks if the specified slot is assigned. - * - * @param int $slot Slot index. - * - * @return bool - */ - #[ReturnTypeWillChange] - public function offsetExists($slot) - { - return $this->findRangeBySlot($slot) !== false; - } - - /** - * Returns the node assigned to the specified slot. - * - * @param int $slot Slot index. - * - * @return string|null - */ - #[ReturnTypeWillChange] - public function offsetGet($slot) - { - $found = $this->findRangeBySlot($slot); - - return $found ? $found->getConnection() : null; - } - - /** - * Assigns the specified slot to a node. - * - * @param int $slot Slot index. - * @param NodeConnectionInterface|string $connection ID or connection instance. - * - * @return void - */ - #[ReturnTypeWillChange] - public function offsetSet($slot, $connection) - { - if (!static::isValid($slot)) { - throw new OutOfBoundsException("Invalid slot $slot for `$connection`"); - } - - $this->offsetUnset($slot); - $this->setSlots($slot, $slot, $connection); - } - - /** - * Returns the node assigned to the specified slot. - * - * @param int $slot Slot index. - * - * @return void - */ - #[ReturnTypeWillChange] - public function offsetUnset($slot) - { - if (!static::isValid($slot)) { - throw new OutOfBoundsException("Invalid slot $slot"); - } - - $results = []; - foreach ($this->slotRanges as $slotRange) { - if (!$slotRange->hasSlot($slot)) { - $results[] = $slotRange; - continue; - } - - if (static::isValidRange($slotRange->getStart(), $slot - 1)) { - $results[] = new SlotRange($slotRange->getStart(), $slot - 1, $slotRange->getConnection()); - } - - if (static::isValidRange($slot + 1, $slotRange->getEnd())) { - $results[] = new SlotRange($slot + 1, $slotRange->getEnd(), $slotRange->getConnection()); - } - } - - $this->slotRanges = $results; - } - - /** - * Returns the current number of assigned slots. - * - * @return int - */ - #[ReturnTypeWillChange] - public function count() - { - return array_sum(array_map( - static function ($slotRange) { - return $slotRange->count(); - }, - $this->slotRanges - )); - } - - /** - * Returns an iterator over the slot map. - * - * @return Traversable - */ - #[ReturnTypeWillChange] - public function getIterator() - { - return new ArrayIterator($this->toArray()); - } - - /** - * Find the slot range which contains the specific slot index. - * - * @param int $slot Slot index. - * - * @return SlotRange|false The slot range object or false if not found. - */ - protected function findRangeBySlot(int $slot) - { - foreach ($this->slotRanges as $slotRange) { - if ($slotRange->hasSlot($slot)) { - return $slotRange; - } - } - - return false; - } - - /** - * Get gaps between sorted slot ranges with NullSlotRange object. - * - * @param SlotRange[] $slotRanges - * - * @return SlotRange[] - */ - protected function getGaps(array $slotRanges) - { - if (empty($slotRanges)) { - return [ - new NullSlotRange(0, SlotRange::MAX_SLOTS), - ]; - } - $gaps = []; - $count = count($slotRanges); - $i = 0; - foreach ($slotRanges as $key => $slotRange) { - $start = $slotRange->getStart(); - $end = $slotRange->getEnd(); - if (static::isValidRange($i, $start - 1)) { - $gaps[] = new NullSlotRange($i, $start - 1); - } - - $i = $end + 1; - - if ($key === $count - 1) { - if (static::isValidRange($i, SlotRange::MAX_SLOTS)) { - $gaps[] = new NullSlotRange($i, SlotRange::MAX_SLOTS); - } - } - } - - return $gaps; - } - - /** - * Sort slot ranges by start index. - * - * @param SlotRange[] $slotRanges - * - * @return void - */ - protected function sortSlotRanges(array &$slotRanges) - { - usort( - $slotRanges, - static function (SlotRange $a, SlotRange $b) { - if ($a->getStart() == $b->getStart()) { - return 0; - } - - return $a->getStart() < $b->getStart() ? -1 : 1; - } - ); - } - - /** - * Compact adjacent slot ranges with the same connection. - * - * @param SlotRange[] $slotRanges - * - * @return SlotRange[] - */ - protected function compactSlotRanges(array $slotRanges) - { - if (empty($slotRanges)) { - return []; - } - - $compacted = []; - $count = count($slotRanges); - $i = 0; - $carry = $slotRanges[0]; - while ($i < $count) { - $next = $slotRanges[$i + 1] ?? null; - if ( - !is_null($next) - && ($carry->getEnd() + 1) === $next->getStart() - && $carry->getConnection() === $next->getConnection() - ) { - $carry = new SlotRange($carry->getStart(), $next->getEnd(), $carry->getConnection()); - } else { - $compacted[] = $carry; - $carry = $next; - } - $i++; - } - - return array_values($compacted); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Cluster/SlotRange.php b/v3_ci4/vendor/predis/predis/src/Cluster/SlotRange.php deleted file mode 100644 index bd81f4e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Cluster/SlotRange.php +++ /dev/null @@ -1,145 +0,0 @@ -start = $start; - $this->end = $end; - $this->connection = $connection; - } - - /** - * Checks if a slot range is valid. - * - * @param int $first - * @param int $last - * - * @return bool - */ - public static function isValidRange($first, $last) - { - return $first >= 0x0000 && $first <= self::MAX_SLOTS && $last >= 0x0000 && $last <= self::MAX_SLOTS && $first <= $last; - } - - /** - * Returns the start slot index of this range. - * - * @return int - */ - public function getStart() - { - return $this->start; - } - - /** - * Returns the end slot index of this range. - * - * @return int - */ - public function getEnd() - { - return $this->end; - } - - /** - * Returns the connection to the server hosting this slot range. - * - * @return string - */ - public function getConnection() - { - return $this->connection; - } - - /** - * Checks if the specific slot is contained in this range. - * - * @param int $slot - * - * @return bool - */ - public function hasSlot(int $slot) - { - return $this->start <= $slot && $this->end >= $slot; - } - - /** - * Returns an array of connection strings for each slot in this range. - * - * @return string[] - */ - public function toArray(): array - { - return array_fill($this->start, $this->end - $this->start + 1, $this->connection); - } - - /** - * Returns the number of slots in this range. - * - * @return int - */ - public function count(): int - { - return $this->end - $this->start + 1; - } - - /** - * Checks if this range has an intersection with the given slot range. - * - * @param SlotRange $slotRange - * - * @return bool - */ - public function hasIntersectionWith(SlotRange $slotRange): bool - { - return $this->start <= $slotRange->getEnd() && $this->end >= $slotRange->getStart(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Cluster/StrategyInterface.php b/v3_ci4/vendor/predis/predis/src/Cluster/StrategyInterface.php deleted file mode 100644 index dc720aa..0000000 --- a/v3_ci4/vendor/predis/predis/src/Cluster/StrategyInterface.php +++ /dev/null @@ -1,60 +0,0 @@ -client = $client; - $this->match = $match; - $this->count = $count; - - $this->reset(); - } - - /** - * Ensures that the client supports the specified Redis command required to - * fetch elements from the server to perform the iteration. - * - * @param ClientInterface $client Client connected to Redis. - * @param string $commandID Command ID. - * - * @throws NotSupportedException - */ - protected function requiredCommand(ClientInterface $client, $commandID) - { - if (!$client->getCommandFactory()->supports($commandID)) { - throw new NotSupportedException("'$commandID' is not supported by the current command factory."); - } - } - - /** - * Resets the inner state of the iterator. - */ - protected function reset() - { - $this->valid = true; - $this->fetchmore = true; - $this->elements = []; - $this->cursor = 0; - $this->position = -1; - $this->current = null; - } - - /** - * Returns an array of options for the `SCAN` command. - * - * @return array - */ - protected function getScanOptions() - { - $options = []; - - if (strlen(strval($this->match)) > 0) { - $options['MATCH'] = $this->match; - } - - if ($this->count > 0) { - $options['COUNT'] = $this->count; - } - - return $options; - } - - /** - * Fetches a new set of elements from the remote collection, effectively - * advancing the iteration process. - * - * @return array - */ - abstract protected function executeCommand(); - - /** - * Populates the local buffer of elements fetched from the server during - * the iteration. - */ - protected function fetch() - { - [$cursor, $elements] = $this->executeCommand(); - - if (!$cursor) { - $this->fetchmore = false; - } - - $this->cursor = $cursor; - $this->elements = $elements; - } - - /** - * Extracts next values for key() and current(). - */ - protected function extractNext() - { - ++$this->position; - $this->current = array_shift($this->elements); - } - - /** - * @return void - */ - #[ReturnTypeWillChange] - public function rewind() - { - $this->reset(); - $this->next(); - } - - /** - * @return mixed - */ - #[ReturnTypeWillChange] - public function current() - { - return $this->current; - } - - /** - * @return int|null - */ - #[ReturnTypeWillChange] - public function key() - { - return $this->position; - } - - /** - * @return void - */ - #[ReturnTypeWillChange] - public function next() - { - tryFetch: - if (!$this->elements && $this->fetchmore) { - $this->fetch(); - } - - if ($this->elements) { - $this->extractNext(); - } elseif ($this->cursor) { - goto tryFetch; - } else { - $this->valid = false; - } - } - - /** - * @return bool - */ - #[ReturnTypeWillChange] - public function valid() - { - return $this->valid; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/HashKey.php b/v3_ci4/vendor/predis/predis/src/Collection/Iterator/HashKey.php deleted file mode 100644 index c3fb908..0000000 --- a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/HashKey.php +++ /dev/null @@ -1,57 +0,0 @@ -= 2.8) wrapped in a fully-rewindable PHP iterator. - * - * @see http://redis.io/commands/scan - */ -class HashKey extends CursorBasedIterator -{ - protected $key; - - /** - * {@inheritdoc} - */ - public function __construct(ClientInterface $client, $key, $match = null, $count = null) - { - $this->requiredCommand($client, 'HSCAN'); - - parent::__construct($client, $match, $count); - - $this->key = $key; - } - - /** - * {@inheritdoc} - */ - protected function executeCommand() - { - return $this->client->hscan($this->key, $this->cursor, $this->getScanOptions()); - } - - /** - * {@inheritdoc} - */ - protected function extractNext() - { - $this->position = key($this->elements); - $this->current = current($this->elements); - - unset($this->elements[$this->position]); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/Keyspace.php b/v3_ci4/vendor/predis/predis/src/Collection/Iterator/Keyspace.php deleted file mode 100644 index 209f478..0000000 --- a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/Keyspace.php +++ /dev/null @@ -1,42 +0,0 @@ -= 2.8) wrapped in a fully-rewindable PHP iterator. - * - * @see http://redis.io/commands/scan - */ -class Keyspace extends CursorBasedIterator -{ - /** - * {@inheritdoc} - */ - public function __construct(ClientInterface $client, $match = null, $count = null) - { - $this->requiredCommand($client, 'SCAN'); - - parent::__construct($client, $match, $count); - } - - /** - * {@inheritdoc} - */ - protected function executeCommand() - { - return $this->client->scan($this->cursor, $this->getScanOptions()); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/ListKey.php b/v3_ci4/vendor/predis/predis/src/Collection/Iterator/ListKey.php deleted file mode 100644 index aa7cc54..0000000 --- a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/ListKey.php +++ /dev/null @@ -1,183 +0,0 @@ -requiredCommand($client, 'LRANGE'); - - if ((false === $count = filter_var($count, FILTER_VALIDATE_INT)) || $count < 0) { - throw new InvalidArgumentException('The $count argument must be a positive integer.'); - } - - $this->client = $client; - $this->key = $key; - $this->count = $count; - - $this->reset(); - } - - /** - * Ensures that the client instance supports the specified Redis command - * required to fetch elements from the server to perform the iteration. - * - * @param ClientInterface $client Client connected to Redis. - * @param string $commandID Command ID. - * - * @throws NotSupportedException - */ - protected function requiredCommand(ClientInterface $client, $commandID) - { - if (!$client->getCommandFactory()->supports($commandID)) { - throw new NotSupportedException("'$commandID' is not supported by the current command factory."); - } - } - - /** - * Resets the inner state of the iterator. - */ - protected function reset() - { - $this->valid = true; - $this->fetchmore = true; - $this->elements = []; - $this->position = -1; - $this->current = null; - } - - /** - * Fetches a new set of elements from the remote collection, effectively - * advancing the iteration process. - * - * @return array - */ - protected function executeCommand() - { - return $this->client->lrange($this->key, $this->position + 1, $this->position + $this->count); - } - - /** - * Populates the local buffer of elements fetched from the server during the - * iteration. - */ - protected function fetch() - { - $elements = $this->executeCommand(); - - if (count($elements) < $this->count) { - $this->fetchmore = false; - } - - $this->elements = $elements; - } - - /** - * Extracts next values for key() and current(). - */ - protected function extractNext() - { - ++$this->position; - $this->current = array_shift($this->elements); - } - - /** - * @return void - */ - #[ReturnTypeWillChange] - public function rewind() - { - $this->reset(); - $this->next(); - } - - /** - * @return mixed - */ - #[ReturnTypeWillChange] - public function current() - { - return $this->current; - } - - /** - * @return int|null - */ - #[ReturnTypeWillChange] - public function key() - { - return $this->position; - } - - /** - * @return void - */ - #[ReturnTypeWillChange] - public function next() - { - if (!$this->elements && $this->fetchmore) { - $this->fetch(); - } - - if ($this->elements) { - $this->extractNext(); - } else { - $this->valid = false; - } - } - - /** - * @return bool - */ - #[ReturnTypeWillChange] - public function valid() - { - return $this->valid; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/SetKey.php b/v3_ci4/vendor/predis/predis/src/Collection/Iterator/SetKey.php deleted file mode 100644 index 0e2484a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/SetKey.php +++ /dev/null @@ -1,46 +0,0 @@ -= 2.8) wrapped in a fully-rewindable PHP iterator. - * - * @see http://redis.io/commands/scan - */ -class SetKey extends CursorBasedIterator -{ - protected $key; - - /** - * {@inheritdoc} - */ - public function __construct(ClientInterface $client, $key, $match = null, $count = null) - { - $this->requiredCommand($client, 'SSCAN'); - - parent::__construct($client, $match, $count); - - $this->key = $key; - } - - /** - * {@inheritdoc} - */ - protected function executeCommand() - { - return $this->client->sscan($this->key, $this->cursor, $this->getScanOptions()); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/SortedSetKey.php b/v3_ci4/vendor/predis/predis/src/Collection/Iterator/SortedSetKey.php deleted file mode 100644 index f1fdbd2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Collection/Iterator/SortedSetKey.php +++ /dev/null @@ -1,57 +0,0 @@ -= 2.8) wrapped in a fully-rewindable PHP iterator. - * - * @see http://redis.io/commands/scan - */ -class SortedSetKey extends CursorBasedIterator -{ - protected $key; - - /** - * {@inheritdoc} - */ - public function __construct(ClientInterface $client, $key, $match = null, $count = null) - { - $this->requiredCommand($client, 'ZSCAN'); - - parent::__construct($client, $match, $count); - - $this->key = $key; - } - - /** - * {@inheritdoc} - */ - protected function executeCommand() - { - return $this->client->zscan($this->key, $this->cursor, $this->getScanOptions()); - } - - /** - * {@inheritdoc} - */ - protected function extractNext() - { - $this->position = key($this->elements); - $this->current = current($this->elements); - - unset($this->elements[$this->position]); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/ArrayableArgument.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/ArrayableArgument.php deleted file mode 100644 index 908a8c2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/ArrayableArgument.php +++ /dev/null @@ -1,26 +0,0 @@ -unit = $unit; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/ByBox.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/ByBox.php deleted file mode 100644 index 8928f84..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/ByBox.php +++ /dev/null @@ -1,43 +0,0 @@ -width = $width; - $this->height = $height; - $this->setUnit($unit); - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return [self::KEYWORD, $this->width, $this->height, $this->unit]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/ByInterface.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/ByInterface.php deleted file mode 100644 index 40b6f99..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/ByInterface.php +++ /dev/null @@ -1,19 +0,0 @@ -radius = $radius; - $this->setUnit($unit); - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return [self::KEYWORD, $this->radius, $this->unit]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/FromInterface.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/FromInterface.php deleted file mode 100644 index ef3af2e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/FromInterface.php +++ /dev/null @@ -1,19 +0,0 @@ -longitude = $longitude; - $this->latitude = $latitude; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return [self::KEYWORD, $this->longitude, $this->latitude]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/FromMember.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/FromMember.php deleted file mode 100644 index a247536..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Geospatial/FromMember.php +++ /dev/null @@ -1,36 +0,0 @@ -member = $member; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return [self::KEYWORD, $this->member]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/AggregateArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/AggregateArguments.php deleted file mode 100644 index bbf0dab..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/AggregateArguments.php +++ /dev/null @@ -1,161 +0,0 @@ - 'ASC', - 'desc' => 'DESC', - ]; - - /** - * Loads document attributes from the source document. - * - * @param string ...$fields Could be just '*' to load all fields - * @return $this - */ - public function load(string ...$fields): self - { - $arguments = func_get_args(); - - $this->arguments[] = 'LOAD'; - - if ($arguments[0] === '*') { - $this->arguments[] = '*'; - - return $this; - } - - $this->arguments[] = count($arguments); - $this->arguments = array_merge($this->arguments, $arguments); - - return $this; - } - - /** - * Loads document attributes from the source document. - * - * @param string ...$properties - * @return $this - */ - public function groupBy(string ...$properties): self - { - $arguments = func_get_args(); - - array_push($this->arguments, 'GROUPBY', count($arguments)); - $this->arguments = array_merge($this->arguments, $arguments); - - return $this; - } - - /** - * Groups the results in the pipeline based on one or more properties. - * - * If you want to add alias property to your argument just add "true" value in arguments enumeration, - * next value will be considered as alias to previous one. - * - * Example: 'argument', true, 'name' => 'argument' AS 'name' - * - * @param string $function - * @param string|bool ...$argument - * @return $this - */ - public function reduce(string $function, ...$argument): self - { - $arguments = func_get_args(); - $functionValue = array_shift($arguments); - $argumentsCounter = 0; - - for ($i = 0, $iMax = count($arguments); $i < $iMax; $i++) { - if (true === $arguments[$i]) { - $arguments[$i] = 'AS'; - $i++; - continue; - } - - $argumentsCounter++; - } - - array_push($this->arguments, 'REDUCE', $functionValue); - $this->arguments = array_merge($this->arguments, [$argumentsCounter], $arguments); - - return $this; - } - - /** - * Sorts the pipeline up until the point of SORTBY, using a list of properties. - * - * @param int $max - * @param string ...$properties Enumeration of properties, including sorting direction (ASC, DESC) - * @return $this - */ - public function sortBy(int $max = 0, ...$properties): self - { - $arguments = func_get_args(); - $maxValue = array_shift($arguments); - - $this->arguments[] = 'SORTBY'; - $this->arguments = array_merge($this->arguments, [count($arguments)], $arguments); - - if ($maxValue !== 0) { - array_push($this->arguments, 'MAX', $maxValue); - } - - return $this; - } - - /** - * Applies a 1-to-1 transformation on one or more properties and either stores the result - * as a new property down the pipeline or replaces any property using this transformation. - * - * @param string $expression - * @param string $as - * @return $this - */ - public function apply(string $expression, string $as = ''): self - { - array_push($this->arguments, 'APPLY', $expression); - - if ($as !== '') { - array_push($this->arguments, 'AS', $as); - } - - return $this; - } - - /** - * Scan part of the results with a quicker alternative than LIMIT. - * - * @param int $readSize - * @param int $idleTime - * @return $this - */ - public function withCursor(int $readSize = 0, int $idleTime = 0): self - { - $this->arguments[] = 'WITHCURSOR'; - - if ($readSize !== 0) { - array_push($this->arguments, 'COUNT', $readSize); - } - - if ($idleTime !== 0) { - array_push($this->arguments, 'MAXIDLE', $idleTime); - } - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/AlterArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/AlterArguments.php deleted file mode 100644 index bc6ea7a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/AlterArguments.php +++ /dev/null @@ -1,17 +0,0 @@ -arguments[] = 'LANGUAGE'; - $this->arguments[] = $defaultLanguage; - - return $this; - } - - /** - * Selects the dialect version under which to execute the query. - * If not specified, the query will execute under the default dialect version - * set during module initial loading or via FT.CONFIG SET command. - * - * @param string $dialect - * @return $this - */ - public function dialect(string $dialect): self - { - $this->arguments[] = 'DIALECT'; - $this->arguments[] = $dialect; - - return $this; - } - - /** - * If set, does not scan and index. - * - * @return $this - */ - public function skipInitialScan(): self - { - $this->arguments[] = 'SKIPINITIALSCAN'; - - return $this; - } - - /** - * Adds an arbitrary, binary safe payload that is exposed to custom scoring functions. - * - * @param string $payload - * @return $this - */ - public function payload(string $payload): self - { - $this->arguments[] = 'PAYLOAD'; - $this->arguments[] = $payload; - - return $this; - } - - /** - * Also returns the relative internal score of each document. - * - * @return $this - */ - public function withScores(): self - { - $this->arguments[] = 'WITHSCORES'; - - return $this; - } - - /** - * Retrieves optional document payloads. - * - * @return $this - */ - public function withPayloads(): self - { - $this->arguments[] = 'WITHPAYLOADS'; - - return $this; - } - - /** - * Does not try to use stemming for query expansion but searches the query terms verbatim. - * - * @return $this - */ - public function verbatim(): self - { - $this->arguments[] = 'VERBATIM'; - - return $this; - } - - /** - * Overrides the timeout parameter of the module. - * - * @param int $timeout - * @return $this - */ - public function timeout(int $timeout): self - { - $this->arguments[] = 'TIMEOUT'; - $this->arguments[] = $timeout; - - return $this; - } - - /** - * Adds an arbitrary, binary safe payload that is exposed to custom scoring functions. - * - * @param int $offset - * @param int $num - * @return $this - */ - public function limit(int $offset, int $num): self - { - array_push($this->arguments, 'LIMIT', $offset, $num); - - return $this; - } - - /** - * Adds filter expression into index. - * - * @param string $filter - * @return $this - */ - public function filter(string $filter): self - { - $this->arguments[] = 'FILTER'; - $this->arguments[] = $filter; - - return $this; - } - - /** - * Defines one or more value parameters. Each parameter has a name and a value. - * - * Example: ['name1', 'value1', 'name2', 'value2'...] - * - * @param array $nameValuesDictionary - * @return $this - */ - public function params(array $nameValuesDictionary): self - { - $this->arguments[] = 'PARAMS'; - $this->arguments[] = count($nameValuesDictionary); - $this->arguments = array_merge($this->arguments, $nameValuesDictionary); - - return $this; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/CreateArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/CreateArguments.php deleted file mode 100644 index 00e52ea..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/CreateArguments.php +++ /dev/null @@ -1,191 +0,0 @@ - 'HASH', - 'json' => 'JSON', - ]; - - /** - * Specify data type for given index. To index JSON you must have the RedisJSON module to be installed. - * - * @param string $modifier - * @return $this - */ - public function on(string $modifier = 'HASH'): self - { - if (in_array(strtoupper($modifier), $this->supportedDataTypesEnum)) { - $this->arguments[] = 'ON'; - $this->arguments[] = $this->supportedDataTypesEnum[strtolower($modifier)]; - - return $this; - } - - $enumValues = implode(', ', array_values($this->supportedDataTypesEnum)); - throw new InvalidArgumentException("Wrong modifier value given. Currently supports: {$enumValues}"); - } - - /** - * Adds one or more prefixes into index. - * - * @param array $prefixes - * @return $this - */ - public function prefix(array $prefixes): self - { - $this->arguments[] = 'PREFIX'; - $this->arguments[] = count($prefixes); - $this->arguments = array_merge($this->arguments, $prefixes); - - return $this; - } - - /** - * Document attribute set as document language. - * - * @param string $languageAttribute - * @return $this - */ - public function languageField(string $languageAttribute): self - { - $this->arguments[] = 'LANGUAGE_FIELD'; - $this->arguments[] = $languageAttribute; - - return $this; - } - - /** - * Default score for documents in the index. - * - * @param float $defaultScore - * @return $this - */ - public function score(float $defaultScore = 1.0): self - { - $this->arguments[] = 'SCORE'; - $this->arguments[] = $defaultScore; - - return $this; - } - - /** - * Document attribute that used as the document rank based on the user ranking. - * - * @param string $scoreAttribute - * @return $this - */ - public function scoreField(string $scoreAttribute): self - { - $this->arguments[] = 'SCORE_FIELD'; - $this->arguments[] = $scoreAttribute; - - return $this; - } - - /** - * Forces RediSearch to encode indexes as if there were more than 32 text attributes. - * - * @return $this - */ - public function maxTextFields(): self - { - $this->arguments[] = 'MAXTEXTFIELDS'; - - return $this; - } - - /** - * Does not store term offsets for documents. - * - * @return $this - */ - public function noOffsets(): self - { - $this->arguments[] = 'NOOFFSETS'; - - return $this; - } - - /** - * Creates a lightweight temporary index that expires after a specified period of inactivity, in seconds. - * - * @param int $seconds - * @return $this - */ - public function temporary(int $seconds): self - { - $this->arguments[] = 'TEMPORARY'; - $this->arguments[] = $seconds; - - return $this; - } - - /** - * Conserves storage space and memory by disabling highlighting support. - * - * @return $this - */ - public function noHl(): self - { - $this->arguments[] = 'NOHL'; - - return $this; - } - - /** - * Does not store attribute bits for each term. - * - * @return $this - */ - public function noFields(): self - { - $this->arguments[] = 'NOFIELDS'; - - return $this; - } - - /** - * Avoids saving the term frequencies in the index. - * - * @return $this - */ - public function noFreqs(): self - { - $this->arguments[] = 'NOFREQS'; - - return $this; - } - - /** - * Sets the index with a custom stopword list, to be ignored during indexing and search time. - * - * @param array $stopWords - * @return $this - */ - public function stopWords(array $stopWords): self - { - $this->arguments[] = 'STOPWORDS'; - $this->arguments[] = count($stopWords); - $this->arguments = array_merge($this->arguments, $stopWords); - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/CursorArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/CursorArguments.php deleted file mode 100644 index 42e5782..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/CursorArguments.php +++ /dev/null @@ -1,44 +0,0 @@ -arguments, 'COUNT', $readSize); - - return $this; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/DropArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/DropArguments.php deleted file mode 100644 index ebd4c1c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/DropArguments.php +++ /dev/null @@ -1,43 +0,0 @@ -arguments[] = 'DD'; - - return $this; - } - - /** - * @return array - */ - public function toArray(): array - { - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/ExplainArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/ExplainArguments.php deleted file mode 100644 index 493fbef..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/ExplainArguments.php +++ /dev/null @@ -1,17 +0,0 @@ -as, 'YIELD_SCORE_AS', $alias); - - return $this; - } - - /** - * {@inheritDoc} - */ - abstract public function toArray(): array; -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/LinearCombineConfig.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/LinearCombineConfig.php deleted file mode 100644 index 0d7ab14..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/LinearCombineConfig.php +++ /dev/null @@ -1,79 +0,0 @@ -alpha = $alpha; - - return $this; - } - - /** - * The weight for the vector score (a value between 0 and 1). - * - * @param float $beta - * @return $this - */ - public function beta(float $beta): self - { - $this->beta = $beta; - - return $this; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - $this->arguments[] = 'LINEAR'; - $tokens = []; - - if ($this->alpha !== null) { - array_push($tokens, 'ALPHA', $this->alpha); - } - - if ($this->beta !== null) { - array_push($tokens, 'BETA', $this->beta); - } - - if ($this->as) { - array_push($tokens, ...$this->as); - } - - if (!empty($tokens)) { - array_push($this->arguments, count($tokens), ...$tokens); - } - - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/RRFCombineConfig.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/RRFCombineConfig.php deleted file mode 100644 index 97bfd61..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/Combine/RRFCombineConfig.php +++ /dev/null @@ -1,79 +0,0 @@ -window = $window; - - return $this; - } - - /** - * The RRF ranking constant. A smaller value gives more weight to top-ranked items. Defaults to 60. - * - * @param int $constant - * @return $this - */ - public function rrfConstant(int $constant): self - { - $this->rrfConstant = $constant; - - return $this; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - $this->arguments[] = 'RRF'; - $tokens = []; - - if ($this->window !== null) { - array_push($tokens, 'WINDOW', $this->window); - } - - if ($this->rrfConstant !== null) { - array_push($tokens, 'CONSTANT', $this->rrfConstant); - } - - if ($this->as) { - array_push($tokens, ...$this->as); - } - - if (!empty($tokens)) { - array_push($this->arguments, count($tokens), ...$tokens); - } - - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/HybridSearchQuery.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/HybridSearchQuery.php deleted file mode 100644 index 64a18c1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/HybridSearchQuery.php +++ /dev/null @@ -1,352 +0,0 @@ -searchConfig = new SearchConfig(); - $this->vectorSearchConfig = new $vectorSearchMethod(); - $this->combineConfig = new $combineMethod(); - } - - /** - * @param callable(SearchConfig): void $callable - * @return $this - */ - public function buildSearchConfig(callable $callable): self - { - $callable($this->searchConfig); - - return $this; - } - - /** - * @param callable(KNNVectorSearchConfig|RangeVectorSearchConfig): void $callable - * @return $this - */ - public function buildVectorSearchConfig(callable $callable): self - { - $callable($this->vectorSearchConfig); - - return $this; - } - - /** - * @param callable(RRFCombineConfig|LinearCombineConfig): void $callable - * @return $this - */ - public function buildCombineConfig(callable $callable): self - { - $callable($this->combineConfig); - - return $this; - } - - /** - * The list of fields to return in the results. - * - * @param array $fields - * @return $this - */ - public function load(array $fields): self - { - array_push($this->load, 'LOAD', count($fields), ...$fields); - - return $this; - } - - /** - * @param array $fields - * @param Reducer[] $reducers - * @return $this - */ - public function groupBy(array $fields, array $reducers): self - { - array_push($this->groupBy, 'GROUPBY', count($fields), ...$fields); - - foreach ($reducers as $reducer) { - array_push($this->groupBy, 'REDUCE', ...$reducer->toArray()); - } - - return $this; - } - - /** - * @param array $expressionFieldDict field => function dictionary - * @return $this - */ - public function apply(array $expressionFieldDict): self - { - foreach ($expressionFieldDict as $field => $function) { - array_push($this->apply, 'APPLY', $function, 'AS', $field); - } - - return $this; - } - - /** - * Sorts the final results by a specific field. - * - * @param array $fields Dictionary with fields and sort direction. Check class constants. - * @return $this - */ - public function sortBy(array $fields): self - { - $fieldsArray = []; - foreach ($fields as $field => $direction) { - if (!in_array(strtoupper($direction), [self::SORT_ASC, self::SORT_DESC])) { - throw new ValueError('Sort direction must be one of "ASC" or "DESC".'); - } - - array_push($fieldsArray, $field, $direction); - } - - array_push($this->sortBy, 'SORTBY', count($fieldsArray), ...$fieldsArray); - - return $this; - } - - /** - * Final result filtering. - * - * @param string $expression - * @return $this - */ - public function filter(string $expression): self - { - $this->filter = $expression; - - return $this; - } - - /** - * @param int $offset - * @param int $num - * @return $this - */ - public function limit(int $offset, int $num): self - { - array_push($this->limit, 'LIMIT', $offset, $num); - - return $this; - } - - /** - * Binds values to named parameters in the query string. - * - * @param array $params - * @return $this - */ - public function params(array $params): self - { - $arrayParams = CommandUtility::dictionaryToArray($params); - array_push($this->params, 'PARAMS', count($arrayParams), ...$arrayParams); - - return $this; - } - - /** - * @return $this - */ - public function explainScore(): self - { - $this->explainScore = true; - - return $this; - } - - /** - * @return $this - */ - public function timeout(): self - { - $this->timeout = true; - - return $this; - } - - /** - * @param int|null $readSize - * @param int|null $idleTime - * @return $this - */ - public function withCursor(?int $readSize = null, ?int $idleTime = null): self - { - $this->withCursor[] = 'WITHCURSOR'; - - if ($readSize) { - array_push($this->withCursor, 'COUNT', $readSize); - } - - if ($idleTime) { - array_push($this->withCursor, 'MAXIDLE', $idleTime); - } - - return $this; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - $this->arguments = array_merge( - $this->arguments, - $this->searchConfig->toArray(), - $this->vectorSearchConfig->toArray() - ); - - $combineConfig = $this->combineConfig->toArray(); - - // Only add if any configuration was applied - if (count($combineConfig) > 2) { - $this->arguments = array_merge($this->arguments, $combineConfig); - } - - if ($this->load) { - $this->arguments = array_merge($this->arguments, $this->load); - } - - if ($this->groupBy) { - $this->arguments = array_merge($this->arguments, $this->groupBy); - } - - if ($this->apply) { - $this->arguments = array_merge($this->arguments, $this->apply); - } - - if ($this->sortBy) { - $this->arguments = array_merge($this->arguments, $this->sortBy); - } - - if ($this->filter) { - array_push($this->arguments, 'FILTER', $this->filter); - } - - if ($this->limit) { - $this->arguments = array_merge($this->arguments, $this->limit); - } - - if ($this->params) { - $this->arguments = array_merge($this->arguments, $this->params); - } - - if ($this->explainScore) { - $this->arguments[] = 'EXPLAINSCORE'; - } - - if ($this->timeout) { - $this->arguments[] = 'TIMEOUT'; - } - - if ($this->withCursor) { - $this->arguments = array_merge($this->arguments, $this->withCursor); - } - - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/Reducer.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/Reducer.php deleted file mode 100644 index 9ebd444..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/Reducer.php +++ /dev/null @@ -1,51 +0,0 @@ -arguments, $function, count($arguments), ...$arguments); - - if ($alias) { - array_push($this->arguments, 'AS', $alias); - } - } - - public function toArray(): array - { - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/ScorerConfig.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/ScorerConfig.php deleted file mode 100644 index 71d371a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/ScorerConfig.php +++ /dev/null @@ -1,60 +0,0 @@ -arguments[] = $type; - - return $this; - } - - /** - * An alias for the text score field in the results. - * The aliased field will be included in the `value` object of each returned document. - * - * @param string $alias - * @return $this - */ - public function as(string $alias): self - { - array_push($this->arguments, 'YIELD_SCORE_AS', $alias); - - return $this; - } - - public function toArray(): array - { - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/SearchConfig.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/SearchConfig.php deleted file mode 100644 index dceba8f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/SearchConfig.php +++ /dev/null @@ -1,80 +0,0 @@ -scorerConfig = new ScorerConfig(); - } - - /** - * Search query. - * - * @param string $query - * @return $this - */ - public function query(string $query): self - { - $this->arguments[] = $query; - - return $this; - } - - /** - * @param string $alias - * @return $this - */ - public function as(string $alias): self - { - array_push($this->arguments, 'YIELD_SCORE_AS', $alias); - - return $this; - } - - /** - * @param callable(ScorerConfig): void $callable - * @return $this - */ - public function buildScorerConfig(callable $callable): self - { - $callable($this->scorerConfig); - - return $this; - } - - public function toArray(): array - { - $scorerConfig = $this->scorerConfig->toArray(); - - if (!empty($scorerConfig)) { - $this->arguments[] = 'SCORER'; - $this->arguments = array_merge($this->arguments, $scorerConfig); - } - - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/BaseVectorSearchConfig.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/BaseVectorSearchConfig.php deleted file mode 100644 index 9c58a1e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/BaseVectorSearchConfig.php +++ /dev/null @@ -1,80 +0,0 @@ -vector, $field, $value); - - return $this; - } - - /** - * @param string $expression - * @return $this - */ - public function filter(string $expression): self - { - array_push($this->filter, 'FILTER', $expression); - - return $this; - } - - /** - * @param string $alias - * @return $this - */ - public function as(string $alias): self - { - array_push($this->as, 'YIELD_SCORE_AS', $alias); - - return $this; - } - - abstract public function toArray(): array; -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/KNNVectorSearchConfig.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/KNNVectorSearchConfig.php deleted file mode 100644 index df7cdd9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/KNNVectorSearchConfig.php +++ /dev/null @@ -1,91 +0,0 @@ -k = $k; - - return $this; - } - - /** - * The HNSW `ef_runtime` parameter for tuning the accuracy/speed trade-off. - * - * @param int $ef - * @return $this - */ - public function ef(int $ef): self - { - $this->ef = $ef; - - return $this; - } - - public function toArray(): array - { - if (!$this->vector) { - throw new ValueError('Vector configuration not specified.'); - } - - $this->arguments = array_merge($this->arguments, $this->vector); - - if ($this->k || $this->ef) { - $this->arguments[] = 'KNN'; - } - - $tokens = []; - - if ($this->k !== null) { - array_push($tokens, 'K', $this->k); - } - - if ($this->ef !== null) { - array_push($tokens, 'EF_RUNTIME', $this->ef); - } - - if (!empty($tokens)) { - array_push($this->arguments, count($tokens), ...$tokens); - } - - if ($this->filter) { - $this->arguments = array_merge($this->arguments, $this->filter); - } - - if ($this->as) { - array_push($this->arguments, ...$this->as); - } - - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/RangeVectorSearchConfig.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/RangeVectorSearchConfig.php deleted file mode 100644 index 5ac4168..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/HybridSearch/VectorSearch/RangeVectorSearchConfig.php +++ /dev/null @@ -1,89 +0,0 @@ -radius = $radius; - - return $this; - } - - /** - * @param float $epsilon - * @return $this - */ - public function epsilon(float $epsilon): self - { - $this->epsilon = $epsilon; - - return $this; - } - - public function toArray(): array - { - if (!$this->vector) { - throw new ValueError('Vector configuration not specified.'); - } - - $this->arguments = array_merge($this->arguments, $this->vector); - - if ($this->radius || $this->epsilon) { - $this->arguments[] = 'RANGE'; - } - - $tokens = []; - - if ($this->radius !== null) { - array_push($tokens, 'RADIUS', $this->radius); - } - - if ($this->epsilon !== null) { - array_push($tokens, 'EPSILON', $this->epsilon); - } - - if (!empty($tokens)) { - array_push($this->arguments, count($tokens), ...$tokens); - } - - if ($this->filter) { - $this->arguments = array_merge($this->arguments, $this->filter); - } - - if ($this->as) { - array_push($this->arguments, ...$this->as); - } - - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/ProfileArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/ProfileArguments.php deleted file mode 100644 index 9868df9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/ProfileArguments.php +++ /dev/null @@ -1,81 +0,0 @@ -arguments[] = 'SEARCH'; - - return $this; - } - - /** - * Adds aggregate context. - * - * @return $this - */ - public function aggregate(): self - { - $this->arguments[] = 'AGGREGATE'; - - return $this; - } - - /** - * Removes details of reader iterator. - * - * @return $this - */ - public function limited(): self - { - $this->arguments[] = 'LIMITED'; - - return $this; - } - - /** - * Is query string, as if sent to FT.SEARCH. - * - * @param string $query - * @return $this - */ - public function query(string $query): self - { - $this->arguments[] = 'QUERY'; - $this->arguments[] = $query; - - return $this; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/AbstractField.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/AbstractField.php deleted file mode 100644 index 5a4a591..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/AbstractField.php +++ /dev/null @@ -1,75 +0,0 @@ -fieldArguments[] = $identifier; - - if ($alias !== '') { - $this->fieldArguments[] = 'AS'; - $this->fieldArguments[] = $alias; - } - - $this->fieldArguments[] = $fieldType; - - if ($sortable === self::SORTABLE) { - $this->fieldArguments[] = 'SORTABLE'; - } elseif ($sortable === self::SORTABLE_UNF) { - $this->fieldArguments[] = 'SORTABLE'; - $this->fieldArguments[] = 'UNF'; - } - - if ($noIndex) { - $this->fieldArguments[] = 'NOINDEX'; - } - - if ($allowsMissing) { - $this->fieldArguments[] = 'INDEXMISSING'; - } - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return $this->fieldArguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/FieldInterface.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/FieldInterface.php deleted file mode 100644 index 5898a0c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/FieldInterface.php +++ /dev/null @@ -1,22 +0,0 @@ -setCommonOptions('GEO', $identifier, $alias, $sortable, $noIndex, $allowsMissing); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/GeoShapeField.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/GeoShapeField.php deleted file mode 100644 index 16aef28..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/GeoShapeField.php +++ /dev/null @@ -1,57 +0,0 @@ -fieldArguments[] = $identifier; - - if ($alias !== '') { - $this->fieldArguments[] = 'AS'; - $this->fieldArguments[] = $alias; - } - - $this->fieldArguments[] = 'GEOSHAPE'; - - if (null !== $coordSystem) { - $this->fieldArguments[] = $coordSystem; - } - - if ($sortable === self::SORTABLE) { - $this->fieldArguments[] = 'SORTABLE'; - } elseif ($sortable === self::SORTABLE_UNF) { - $this->fieldArguments[] = 'SORTABLE'; - $this->fieldArguments[] = 'UNF'; - } - - if ($noIndex) { - $this->fieldArguments[] = 'NOINDEX'; - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/NumericField.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/NumericField.php deleted file mode 100644 index 66a53ba..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/NumericField.php +++ /dev/null @@ -1,33 +0,0 @@ -setCommonOptions('NUMERIC', $identifier, $alias, $sortable, $noIndex, $allowsMissing); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/TagField.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/TagField.php deleted file mode 100644 index 36ad709..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/TagField.php +++ /dev/null @@ -1,51 +0,0 @@ -setCommonOptions('TAG', $identifier, $alias, $sortable, $noIndex, $allowsMissing); - - if ($separator !== ',') { - $this->fieldArguments[] = 'SEPARATOR'; - $this->fieldArguments[] = $separator; - } - - if ($caseSensitive) { - $this->fieldArguments[] = 'CASESENSITIVE'; - } - - if ($allowsEmpty) { - $this->fieldArguments[] = 'INDEXEMPTY'; - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/TextField.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/TextField.php deleted file mode 100644 index a205119..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/TextField.php +++ /dev/null @@ -1,65 +0,0 @@ -setCommonOptions('TEXT', $identifier, $alias, $sortable, $noIndex, $allowsMissing); - - if ($noStem) { - $this->fieldArguments[] = 'NOSTEM'; - } - - if ($phonetic !== '') { - $this->fieldArguments[] = 'PHONETIC'; - $this->fieldArguments[] = $phonetic; - } - - if ($weight !== 1) { - $this->fieldArguments[] = 'WEIGHT'; - $this->fieldArguments[] = $weight; - } - - if ($withSuffixTrie) { - $this->fieldArguments[] = 'WITHSUFFIXTRIE'; - } - - if ($allowsEmpty) { - $this->fieldArguments[] = 'INDEXEMPTY'; - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/VectorField.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/VectorField.php deleted file mode 100644 index 8268843..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SchemaFields/VectorField.php +++ /dev/null @@ -1,47 +0,0 @@ -setCommonOptions('VECTOR', $fieldName, $alias); - - array_push($this->fieldArguments, $algorithm, count($attributeNameValueDictionary)); - $this->fieldArguments = array_merge($this->fieldArguments, $attributeNameValueDictionary); - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return $this->fieldArguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SearchArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SearchArguments.php deleted file mode 100644 index d939a29..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SearchArguments.php +++ /dev/null @@ -1,306 +0,0 @@ - 'ASC', - 'desc' => 'DESC', - ]; - - /** - * Returns the document ids and not the content. - * - * @return $this - */ - public function noContent(): self - { - $this->arguments[] = 'NOCONTENT'; - - return $this; - } - - /** - * Returns the value of the sorting key, right after the id and score and/or payload, if requested. - * - * @return $this - */ - public function withSortKeys(): self - { - $this->arguments[] = 'WITHSORTKEYS'; - - return $this; - } - - /** - * Limits results to those having numeric values ranging between min and max, - * if numeric_attribute is defined as a numeric attribute in FT.CREATE. - * Min and max follow ZRANGE syntax, and can be -inf, +inf, and use( for exclusive ranges. - * Multiple numeric filters for different attributes are supported in one query. - * - * @param array ...$filter Should contain: numeric_field, min and max. Example: ['numeric_field', 1, 10] - * @return $this - */ - public function searchFilter(array ...$filter): self - { - $arguments = func_get_args(); - - foreach ($arguments as $argument) { - array_push($this->arguments, 'FILTER', ...$argument); - } - - return $this; - } - - /** - * Filter the results to a given radius from lon and lat. Radius is given as a number and units. - * - * @param array ...$filter Should contain: geo_field, lon, lat, radius, unit. Example: ['geo_field', 34.1231, 35.1231, 300, km] - * @return $this - */ - public function geoFilter(array ...$filter): self - { - $arguments = func_get_args(); - - foreach ($arguments as $argument) { - array_push($this->arguments, 'GEOFILTER', ...$argument); - } - - return $this; - } - - /** - * Limits the result to a given set of keys specified in the list. - * - * @param array $keys - * @return $this - */ - public function inKeys(array $keys): self - { - $this->arguments[] = 'INKEYS'; - $this->arguments[] = count($keys); - $this->arguments = array_merge($this->arguments, $keys); - - return $this; - } - - /** - * Filters the results to those appearing only in specific attributes of the document, like title or URL. - * - * @param array $fields - * @return $this - */ - public function inFields(array $fields): self - { - $this->arguments[] = 'INFIELDS'; - $this->arguments[] = count($fields); - $this->arguments = array_merge($this->arguments, $fields); - - return $this; - } - - /** - * Limits the attributes returned from the document. - * Num is the number of attributes following the keyword. - * If num is 0, it acts like NOCONTENT. - * Identifier is either an attribute name (for hashes and JSON) or a JSON Path expression (for JSON). - * Property is an optional name used in the result. If not provided, the identifier is used in the result. - * - * If you want to add alias property to your identifier just add "true" value in identifier enumeration, - * next value will be considered as alias to previous one. - * - * Example: 'identifier', true, 'property' => 'identifier' AS 'property' - * - * @param int $count - * @param string|bool ...$identifier - * @return $this - */ - public function addReturn(int $count, ...$identifier): self - { - $arguments = func_get_args(); - - $this->arguments[] = 'RETURN'; - - for ($i = 1, $iMax = count($arguments); $i < $iMax; $i++) { - if (true === $arguments[$i]) { - $arguments[$i] = 'AS'; - } - } - - $this->arguments = array_merge($this->arguments, $arguments); - - return $this; - } - - /** - * Returns only the sections of the attribute that contain the matched text. - * - * @param array $fields - * @param int $frags - * @param int $len - * @param string $separator - * @return $this - */ - public function summarize(array $fields = [], int $frags = 0, int $len = 0, string $separator = ''): self - { - $this->arguments[] = 'SUMMARIZE'; - - if (!empty($fields)) { - $this->arguments[] = 'FIELDS'; - $this->arguments[] = count($fields); - $this->arguments = array_merge($this->arguments, $fields); - } - - if ($frags !== 0) { - $this->arguments[] = 'FRAGS'; - $this->arguments[] = $frags; - } - - if ($len !== 0) { - $this->arguments[] = 'LEN'; - $this->arguments[] = $len; - } - - if ($separator !== '') { - $this->arguments[] = 'SEPARATOR'; - $this->arguments[] = $separator; - } - - return $this; - } - - /** - * Formats occurrences of matched text. - * - * @param array $fields - * @param string $openTag - * @param string $closeTag - * @return $this - */ - public function highlight(array $fields = [], string $openTag = '', string $closeTag = ''): self - { - $this->arguments[] = 'HIGHLIGHT'; - - if (!empty($fields)) { - $this->arguments[] = 'FIELDS'; - $this->arguments[] = count($fields); - $this->arguments = array_merge($this->arguments, $fields); - } - - if ($openTag !== '' && $closeTag !== '') { - array_push($this->arguments, 'TAGS', $openTag, $closeTag); - } - - return $this; - } - - /** - * Allows a maximum of N intervening number of unmatched offsets between phrase terms. - * In other words, the slop for exact phrases is 0. - * - * @param int $slop - * @return $this - */ - public function slop(int $slop): self - { - $this->arguments[] = 'SLOP'; - $this->arguments[] = $slop; - - return $this; - } - - /** - * Puts the query terms in the same order in the document as in the query, regardless of the offsets between them. - * Typically used in conjunction with SLOP. - * - * @return $this - */ - public function inOrder(): self - { - $this->arguments[] = 'INORDER'; - - return $this; - } - - /** - * Uses a custom query expander instead of the stemmer. - * - * @param string $expander - * @return $this - */ - public function expander(string $expander): self - { - $this->arguments[] = 'EXPANDER'; - $this->arguments[] = $expander; - - return $this; - } - - /** - * Uses a custom scoring function you define. - * - * @param string $scorer - * @return $this - */ - public function scorer(string $scorer): self - { - $this->arguments[] = 'SCORER'; - $this->arguments[] = $scorer; - - return $this; - } - - /** - * Returns a textual description of how the scores were calculated. - * Using this options requires the WITHSCORES option. - * - * @return $this - */ - public function explainScore(): self - { - $this->arguments[] = 'EXPLAINSCORE'; - - return $this; - } - - /** - * Orders the results by the value of this attribute. - * This applies to both text and numeric attributes. - * Attributes needed for SORTBY should be declared as SORTABLE in the index, in order to be available with very low latency. - * Note that this adds memory overhead. - * - * @param string $sortAttribute - * @param string $orderBy - * @return $this - */ - public function sortBy(string $sortAttribute, string $orderBy = 'asc'): self - { - $this->arguments[] = 'SORTBY'; - $this->arguments[] = $sortAttribute; - - if (in_array(strtoupper($orderBy), $this->sortingEnum)) { - $this->arguments[] = $this->sortingEnum[strtolower($orderBy)]; - } else { - $enumValues = implode(', ', array_values($this->sortingEnum)); - throw new InvalidArgumentException("Wrong order direction value given. Currently supports: {$enumValues}"); - } - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SpellcheckArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SpellcheckArguments.php deleted file mode 100644 index fba4b12..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SpellcheckArguments.php +++ /dev/null @@ -1,59 +0,0 @@ - 'INCLUDE', - 'exclude' => 'EXCLUDE', - ]; - - /** - * Is maximum Levenshtein distance for spelling suggestions (default: 1, max: 4). - * - * @return $this - */ - public function distance(int $distance): self - { - $this->arguments[] = 'DISTANCE'; - $this->arguments[] = $distance; - - return $this; - } - - /** - * Specifies an inclusion (INCLUDE) or exclusion (EXCLUDE) of a custom dictionary named {dict}. - * - * @param string $dictionary - * @param string $modifier - * @param string ...$terms - * @return $this - */ - public function terms(string $dictionary, string $modifier = 'INCLUDE', string ...$terms): self - { - if (!in_array(strtoupper($modifier), $this->termsEnum)) { - $enumValues = implode(', ', array_values($this->termsEnum)); - throw new InvalidArgumentException("Wrong modifier value given. Currently supports: {$enumValues}"); - } - - array_push($this->arguments, 'TERMS', $this->termsEnum[strtolower($modifier)], $dictionary, ...$terms); - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SugAddArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SugAddArguments.php deleted file mode 100644 index 41cc9a2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SugAddArguments.php +++ /dev/null @@ -1,28 +0,0 @@ -arguments[] = 'INCR'; - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SugGetArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SugGetArguments.php deleted file mode 100644 index 9c23f3d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SugGetArguments.php +++ /dev/null @@ -1,41 +0,0 @@ -arguments[] = 'FUZZY'; - - return $this; - } - - /** - * Limits the results to a maximum of num (default: 5). - * - * @param int $num - * @return $this - */ - public function max(int $num): self - { - array_push($this->arguments, 'MAX', $num); - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SynUpdateArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SynUpdateArguments.php deleted file mode 100644 index ccbaa8b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Search/SynUpdateArguments.php +++ /dev/null @@ -1,17 +0,0 @@ -offset = $offset; - $this->count = $count; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return [self::KEYWORD, $this->offset, $this->count]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Server/To.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Server/To.php deleted file mode 100644 index d0ace42..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Server/To.php +++ /dev/null @@ -1,57 +0,0 @@ -host = $host; - $this->port = $port; - $this->isForce = $isForce; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - $arguments = [self::KEYWORD, $this->host, $this->port]; - - if ($this->isForce) { - $arguments[] = self::FORCE_KEYWORD; - } - - return $arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/Stream/XInfoStreamOptions.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/Stream/XInfoStreamOptions.php deleted file mode 100644 index dbb6e97..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/Stream/XInfoStreamOptions.php +++ /dev/null @@ -1,49 +0,0 @@ -options[] = 'FULL'; - - if (null !== $count) { - array_push($this->options, 'COUNT', $count); - } - - return $this; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return $this->options; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/AddArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/AddArguments.php deleted file mode 100644 index 2390e4c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/AddArguments.php +++ /dev/null @@ -1,30 +0,0 @@ -arguments, 'ON_DUPLICATE', $policy); - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/AlterArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/AlterArguments.php deleted file mode 100644 index 2d5cc5c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/AlterArguments.php +++ /dev/null @@ -1,17 +0,0 @@ -arguments, 'RETENTION', $retentionPeriod); - - return $this; - } - - /** - * Ignore samples with given time or value difference. - * - * @param int $maxTimeDiff Non-negative integer value in milliseconds - * @param float $maxValDiff Non-negative float value - * @return $this - */ - public function ignore(int $maxTimeDiff, float $maxValDiff): self - { - if ($maxTimeDiff < 0 || $maxValDiff < 0) { - throw new UnexpectedValueException('Ignore does not accept negative values'); - } - - array_push($this->arguments, 'IGNORE', $maxTimeDiff, $maxValDiff); - - return $this; - } - - /** - * Is initial allocation size, in bytes, for the data part of each new chunk. - * - * @param int $size - * @return $this - */ - public function chunkSize(int $size): self - { - array_push($this->arguments, 'CHUNK_SIZE', $size); - - return $this; - } - - /** - * Is policy for handling insertion of multiple samples with identical timestamps. - * - * @param string $policy - * @return $this - */ - public function duplicatePolicy(string $policy = self::POLICY_BLOCK): self - { - array_push($this->arguments, 'DUPLICATE_POLICY', $policy); - - return $this; - } - - /** - * Is set of label-value pairs that represent metadata labels of the key and serve as a secondary index. - * - * @param mixed ...$labelValuePair - * @return $this - */ - public function labels(...$labelValuePair): self - { - array_push($this->arguments, 'LABELS', ...$labelValuePair); - - return $this; - } - - /** - * Specifies the series samples encoding format. - * - * @param string $encoding - * @return $this - */ - public function encoding(string $encoding = self::ENCODING_COMPRESSED): self - { - array_push($this->arguments, 'ENCODING', $encoding); - - return $this; - } - - /** - * Is used when a time series is a compaction. - * With LATEST, TS.GET reports the compacted value of the latest, possibly partial, bucket. - * - * @return $this - */ - public function latest(): self - { - $this->arguments[] = 'LATEST'; - - return $this; - } - - /** - * Includes in the reply all label-value pairs representing metadata labels of the time series. - * - * @return $this - */ - public function withLabels(): self - { - $this->arguments[] = 'WITHLABELS'; - - return $this; - } - - /** - * Returns a subset of the label-value pairs that represent metadata labels of the time series. - * - * @return $this - */ - public function selectedLabels(string ...$labels): self - { - array_push($this->arguments, 'SELECTED_LABELS', ...$labels); - - return $this; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/CreateArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/CreateArguments.php deleted file mode 100644 index dca5133..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/CreateArguments.php +++ /dev/null @@ -1,17 +0,0 @@ -arguments, 'TIMESTAMP', $timeStamp); - - return $this; - } - - /** - * Changes data storage from compressed (default) to uncompressed. - * - * @return $this - */ - public function uncompressed(): self - { - $this->arguments[] = 'UNCOMPRESSED'; - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/InfoArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/InfoArguments.php deleted file mode 100644 index 6da5c43..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/InfoArguments.php +++ /dev/null @@ -1,43 +0,0 @@ -arguments[] = 'DEBUG'; - - return $this; - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return $this->arguments; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/MGetArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/MGetArguments.php deleted file mode 100644 index 21a6b42..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/MGetArguments.php +++ /dev/null @@ -1,17 +0,0 @@ -arguments, 'FILTER', ...$filterExpressions); - - return $this; - } - - /** - * {@inheritDoc} - * - * Multiple aggregators cannot be combined with GROUPBY. - * - * @return $this - */ - public function aggregation($aggregator, int $bucketDuration, int $align = 0, int $bucketTimestamp = 0, bool $empty = false): RangeArguments - { - $isMulti = is_array($aggregator) ? count($aggregator) > 1 : strpos((string) $aggregator, ',') !== false; - - if ($isMulti && in_array('GROUPBY', $this->arguments, true)) { - throw new UnexpectedValueException('Multiple aggregators cannot be combined with GROUPBY.'); - } - - return parent::aggregation($aggregator, $bucketDuration, $align, $bucketTimestamp, $empty); - } - - /** - * Splits time series into groups, each group contains time series that share the same - * value for the provided label name, then aggregates results in each group. - * - * GROUPBY cannot be combined with multiple aggregators set via aggregation(). - * - * @param string $label - * @param string $reducer - * @return $this - */ - public function groupBy(string $label, string $reducer): self - { - $aggIndex = array_search('AGGREGATION', $this->arguments, true); - - if ($aggIndex !== false - && isset($this->arguments[$aggIndex + 1]) - && is_string($this->arguments[$aggIndex + 1]) - && strpos($this->arguments[$aggIndex + 1], ',') !== false - ) { - throw new UnexpectedValueException('GROUPBY cannot be combined with multiple aggregators.'); - } - - array_push($this->arguments, 'GROUPBY', $label, 'REDUCE', $reducer); - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/RangeArguments.php b/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/RangeArguments.php deleted file mode 100644 index 2140f5a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Argument/TimeSeries/RangeArguments.php +++ /dev/null @@ -1,97 +0,0 @@ -arguments, 'FILTER_BY_TS', ...$ts); - - return $this; - } - - /** - * Filters samples by minimum and maximum values. - * - * @param int $min - * @param int $max - * @return $this - */ - public function filterByValue(int $min, int $max): self - { - array_push($this->arguments, 'FILTER_BY_VALUE', $min, $max); - - return $this; - } - - /** - * Limits the number of returned samples. - * - * @param int $count - * @return $this - */ - public function count(int $count): self - { - array_push($this->arguments, 'COUNT', $count); - - return $this; - } - - /** - * Aggregates samples into time buckets. - * - * Multiple aggregators may be specified by passing an array of aggregation types - * (e.g. ['min', 'max']) or a comma-separated string (e.g. "min,max"). - * - * @param string|array $aggregator Aggregation type, or list of aggregation types. Check class constants. - * @param int $bucketDuration Is duration of each bucket, in milliseconds. - * @param int $align It controls the time bucket timestamps by changing the reference timestamp on which a bucket is defined. - * @param int $bucketTimestamp Controls how bucket timestamps are reported. - * @param bool $empty Is a flag, which, when specified, reports aggregations also for empty buckets. - * @return $this - */ - public function aggregation($aggregator, int $bucketDuration, int $align = 0, int $bucketTimestamp = 0, bool $empty = false): self - { - $aggString = is_array($aggregator) ? implode(',', $aggregator) : (string) $aggregator; - - if ($align > 0) { - array_push($this->arguments, 'ALIGN', $align); - } - - array_push($this->arguments, 'AGGREGATION', $aggString, $bucketDuration); - - if ($bucketTimestamp > 0) { - array_push($this->arguments, 'BUCKETTIMESTAMP', $bucketTimestamp); - } - - if (true === $empty) { - $this->arguments[] = 'EMPTY'; - } - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Command.php b/v3_ci4/vendor/predis/predis/src/Command/Command.php deleted file mode 100644 index 5040147..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Command.php +++ /dev/null @@ -1,200 +0,0 @@ -arguments = $arguments; - unset($this->slot); - } - - /** - * {@inheritdoc} - */ - public function setRawArguments(array $arguments) - { - $this->arguments = $arguments; - unset($this->slot); - } - - /** - * {@inheritdoc} - */ - public function getArguments() - { - return $this->arguments; - } - - /** - * {@inheritdoc} - */ - public function getArgument($index) - { - if (isset($this->arguments[$index])) { - return $this->arguments[$index]; - } - } - - /** - * {@inheritdoc} - */ - public function setSlot($slot) - { - $this->slot = $slot; - } - - /** - * {@inheritdoc} - */ - public function getSlot() - { - return $this->slot ?? null; - } - - /** - * {@inheritdoc} - */ - public function parseResponse($data) - { - return $data; - } - - /** - * {@inheritdoc} - */ - public function parseResp3Response($data) - { - return $data; - } - - /** - * Normalizes the arguments array passed to a Redis command. - * - * @param array $arguments Arguments for a command. - * - * @return array - */ - public static function normalizeArguments(array $arguments) - { - if (count($arguments) === 1 && isset($arguments[0]) && is_array($arguments[0])) { - return $arguments[0]; - } - - return $arguments; - } - - /** - * Normalizes the arguments array passed to a variadic Redis command. - * - * @param array $arguments Arguments for a command. - * - * @return array - */ - public static function normalizeVariadic(array $arguments) - { - if (count($arguments) === 2 && is_array($arguments[1])) { - return array_merge([$arguments[0]], $arguments[1]); - } - - return $arguments; - } - - /** - * Remove all false values from arguments. - * - * @return void - */ - public function filterArguments(): void - { - $this->arguments = array_filter($this->arguments, static function ($argument) { - return $argument !== false && $argument !== null; - }); - } - - /** - * {@inheritDoc} - */ - public function serializeCommand(): string - { - $commandID = $this->getId(); - $arguments = $this->getArguments(); - - $cmdlen = strlen($commandID); - $reqlen = count($arguments) + 1; - - $buffer = "*{$reqlen}\r\n\${$cmdlen}\r\n{$commandID}\r\n"; - - foreach ($arguments as $argument) { - $arglen = strlen(strval($argument)); - $buffer .= "\${$arglen}\r\n{$argument}\r\n"; - } - - return $buffer; - } - - /** - * {@inheritDoc} - */ - public static function deserializeCommand(string $serializedCommand): CommandInterface - { - if ($serializedCommand[0] !== '*') { - throw new UnexpectedValueException('Invalid serializing format'); - } - - $commandArray = explode("\r\n", $serializedCommand); - $commandId = $commandArray[2]; - $classPath = __NAMESPACE__ . '\Redis\\'; - - // Check if given command is a module command. - if (count($commandIdArray = explode('.', $commandId)) > 1) { - // Fetch module configuration to resolve namespace. - $moduleConfiguration = array_filter( - ClientConfiguration::getModules(), - static function ($module) use ($commandIdArray) { - return $module['commandPrefix'] === $commandIdArray[0]; - } - ); - - $commandClass = strtoupper($commandIdArray[0] . $commandIdArray[1]); - $classPath .= array_shift($moduleConfiguration)['name'] . '\\' . $commandClass; - } else { - $classPath .= $commandIdArray[0]; - } - - $command = new $classPath(); - $arguments = []; - - for ($i = 4, $iMax = count($commandArray); $i < $iMax; $i++) { - $arguments[] = $commandArray[$i]; - ++$i; - } - - $command->setArguments($arguments); - - return $command; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/CommandInterface.php b/v3_ci4/vendor/predis/predis/src/Command/CommandInterface.php deleted file mode 100644 index dd91082..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/CommandInterface.php +++ /dev/null @@ -1,103 +0,0 @@ -client = $client; - } - - /** - * {@inheritDoc} - */ - public function __call(string $subcommandID, array $arguments) - { - array_unshift($arguments, strtoupper($subcommandID)); - - return $this->client->executeCommand( - $this->client->createCommand($this->getContainerCommandId(), $arguments) - ); - } - - abstract public function getContainerCommandId(): string; -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Container/CLIENT.php b/v3_ci4/vendor/predis/predis/src/Command/Container/CLIENT.php deleted file mode 100644 index 2bc0cff..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Container/CLIENT.php +++ /dev/null @@ -1,32 +0,0 @@ - FUNCTIONS::class, - ]; - - /** - * Creates container command. - * - * @param ClientInterface $client - * @param string $containerCommandID - * @return ContainerInterface - */ - public static function create(ClientInterface $client, string $containerCommandID): ContainerInterface - { - $containerCommandID = strtoupper($containerCommandID); - $commandModule = self::resolveCommandModuleByPrefix($containerCommandID); - - if (null !== $commandModule) { - if (class_exists($containerClass = self::CONTAINER_NAMESPACE . '\\' . $commandModule . '\\' . $containerCommandID)) { - return new $containerClass($client); - } - - throw new UnexpectedValueException("Given module container command '{$containerCommandID}' is not supported."); - } - - if (class_exists($containerClass = self::CONTAINER_NAMESPACE . '\\' . $containerCommandID)) { - return new $containerClass($client); - } - - if (array_key_exists($containerCommandID, self::$specialMappings)) { - $containerClass = self::$specialMappings[$containerCommandID]; - - return new $containerClass($client); - } - - throw new UnexpectedValueException("Given container command '{$containerCommandID}' is not supported."); - } - - /** - * @param string $commandID - * @return string|null - */ - private static function resolveCommandModuleByPrefix(string $commandID): ?string - { - $modules = ClientConfiguration::getModules(); - - foreach ($modules as $module) { - if (preg_match("/^{$module['commandPrefix']}/", $commandID)) { - return $module['name']; - } - } - - return null; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Container/ContainerInterface.php b/v3_ci4/vendor/predis/predis/src/Command/Container/ContainerInterface.php deleted file mode 100644 index 551a0c8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Container/ContainerInterface.php +++ /dev/null @@ -1,33 +0,0 @@ - $metrics One of the available metric types. Check class constants. - * @param int|null $count Number of top keys to report. Default: 10, Min: 10, Max: 64 - * @param int|null $duration Auto-stop tracking after this many seconds. Default: 0 (no auto-stop) - * @param int|null $sample Sample ratio - track keys with probability 1/sample. Default: 1 (track every key), Min: 1 - * @param array|null $slots All specified slots must be hosted by the receiving node! If not specified, all slots are tracked. - * @return string|Status - */ - public function start(array $metrics, ?int $count = null, ?int $duration = null, ?int $sample = null, ?array $slots = null) - { - return $this->__call('START', func_get_args()); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Container/Json/JSONDEBUG.php b/v3_ci4/vendor/predis/predis/src/Command/Container/Json/JSONDEBUG.php deleted file mode 100644 index 3c750a6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Container/Json/JSONDEBUG.php +++ /dev/null @@ -1,27 +0,0 @@ -getCommandClass($commandID) === null) { - return false; - } - } - - return true; - } - - /** - * Returns the FQCN of a class that represents the specified command ID. - * - * @codeCoverageIgnore - * - * @param string $commandID Command ID - * - * @return string|null - */ - public function getCommandClass(string $commandID): ?string - { - return $this->commands[strtoupper($commandID)] ?? null; - } - - /** - * {@inheritdoc} - */ - public function create(string $commandID, array $arguments = []): CommandInterface - { - if (!$commandClass = $this->getCommandClass($commandID)) { - $commandID = strtoupper($commandID); - - throw new ClientException("Command `$commandID` is not a registered Redis command."); - } - - $command = new $commandClass(); - $command->setArguments($arguments); - - if (isset($this->processor)) { - $this->processor->process($command); - } - - return $command; - } - - /** - * Defines a command in the factory. - * - * Only classes implementing Predis\Command\CommandInterface are allowed to - * handle a command. If the command specified by its ID is already handled - * by the factory, the underlying command class is replaced by the new one. - * - * @param string $commandID Command ID - * @param string $commandClass FQCN of a class implementing Predis\Command\CommandInterface - * - * @throws InvalidArgumentException - */ - public function define(string $commandID, string $commandClass): void - { - if (!is_a($commandClass, 'Predis\Command\CommandInterface', true)) { - throw new InvalidArgumentException( - "Class $commandClass must implement Predis\Command\CommandInterface" - ); - } - - $this->commands[strtoupper($commandID)] = $commandClass; - } - - /** - * Undefines a command in the factory. - * - * When the factory already has a class handler associated to the specified - * command ID it is removed from the map of known commands. Nothing happens - * when the command is not handled by the factory. - * - * @param string $commandID Command ID - */ - public function undefine(string $commandID): void - { - unset($this->commands[strtoupper($commandID)]); - } - - /** - * Sets a command processor for processing command arguments. - * - * Command processors are used to process and transform arguments of Redis - * commands before their newly created instances are returned to the caller - * of "create()". - * - * A NULL value can be used to effectively unset any processor if previously - * set for the command factory. - * - * @param ProcessorInterface|null $processor Command processor or NULL value. - */ - public function setProcessor(?ProcessorInterface $processor): void - { - $this->processor = $processor; - } - - /** - * Returns the current command processor. - * - * @return ProcessorInterface|null - */ - public function getProcessor(): ?ProcessorInterface - { - return $this->processor; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/FactoryInterface.php b/v3_ci4/vendor/predis/predis/src/Command/FactoryInterface.php deleted file mode 100644 index cb9a71c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/FactoryInterface.php +++ /dev/null @@ -1,42 +0,0 @@ -setRawArguments( - array_map(static function ($key) use ($prefix) { - return $prefix . $key; - }, $this->getArguments()) - ); - } - - /** - * Applies prefix for first argument. - * - * @param string $prefix - * @return void - */ - public function applyPrefixForFirstArgument(string $prefix): void - { - $arguments = $this->getArguments(); - $arguments[0] = $prefix . $arguments[0]; - $this->setRawArguments($arguments); - } - - /** - * Applies prefix for interleaved arguments. - * - * @param string $prefix - * @return void - */ - public function applyPrefixForInterleavedArgument(string $prefix): void - { - if ($arguments = $this->getArguments()) { - $length = count($arguments); - - for ($i = 0; $i < $length; $i += 2) { - $arguments[$i] = "$prefix{$arguments[$i]}"; - } - - $this->setRawArguments($arguments); - } - } - - /** - * Applies prefix for all keys except last one. - * - * @param string $prefix - * @return void - */ - public function applyPrefixSkippingLastArgument(string $prefix): void - { - if ($arguments = $this->getArguments()) { - $length = count($arguments); - - for ($i = 0; $i < $length - 1; ++$i) { - $arguments[$i] = "$prefix{$arguments[$i]}"; - } - - $this->setRawArguments($arguments); - } - } - - /** - * Applies prefix for all keys except first one. - * - * @param string $prefix - * @return void - */ - public function applyPrefixSkippingFirstArgument(string $prefix): void - { - if ($arguments = $this->getArguments()) { - $length = count($arguments); - - for ($i = 1; $i < $length; ++$i) { - $arguments[$i] = "$prefix{$arguments[$i]}"; - } - - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/PrefixableCommandInterface.php b/v3_ci4/vendor/predis/predis/src/Command/PrefixableCommandInterface.php deleted file mode 100644 index 3e2ce4e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/PrefixableCommandInterface.php +++ /dev/null @@ -1,26 +0,0 @@ -prefix = $prefix; - } - - /** - * Sets a prefix that is applied to all the keys. - * - * @param string $prefix Prefix for the keys. - */ - public function setPrefix($prefix) - { - $this->prefix = $prefix; - } - - /** - * Gets the current prefix. - * - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - /** - * {@inheritdoc} - */ - public function process(CommandInterface $command) - { - if ($command instanceof PrefixableCommandInterface) { - $command->prefixKeys($this->prefix); - } elseif (isset($this->commands[$commandID = strtoupper($command->getId())])) { - $this->commands[$commandID]($command, $this->prefix); - } - } - - /** - * Sets an handler for the specified command ID. - * - * The callback signature must have 2 parameters of the following types: - * - * - Predis\Command\CommandInterface (command instance) - * - String (prefix) - * - * When the callback argument is omitted or NULL, the previously - * associated handler for the specified command ID is removed. - * - * @param string $commandID The ID of the command to be handled. - * @param mixed $callback A valid callable object or NULL. - * - * @throws InvalidArgumentException - */ - public function setCommandHandler($commandID, $callback = null) - { - $commandID = strtoupper($commandID); - - if (!isset($callback)) { - unset($this->commands[$commandID]); - - return; - } - - if (!is_callable($callback)) { - throw new InvalidArgumentException( - 'Callback must be a valid callable object or NULL' - ); - } - - $this->commands[$commandID] = $callback; - } - - /** - * {@inheritdoc} - */ - public function __toString() - { - return $this->getPrefix(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Processor/ProcessorChain.php b/v3_ci4/vendor/predis/predis/src/Command/Processor/ProcessorChain.php deleted file mode 100644 index aa011d8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Processor/ProcessorChain.php +++ /dev/null @@ -1,142 +0,0 @@ -add($processor); - } - } - - /** - * {@inheritdoc} - */ - public function add(ProcessorInterface $processor) - { - $this->processors[] = $processor; - } - - /** - * {@inheritdoc} - */ - public function remove(ProcessorInterface $processor) - { - if (false !== $index = array_search($processor, $this->processors, true)) { - unset($this[$index]); - } - } - - /** - * {@inheritdoc} - */ - public function process(CommandInterface $command) - { - for ($i = 0; $i < $count = count($this->processors); ++$i) { - $this->processors[$i]->process($command); - } - } - - /** - * {@inheritdoc} - */ - public function getProcessors() - { - return $this->processors; - } - - /** - * Returns an iterator over the list of command processor in the chain. - * - * @return Traversable - */ - public function getIterator() - { - return new ArrayIterator($this->processors); - } - - /** - * Returns the number of command processors in the chain. - * - * @return int - */ - public function count() - { - return count($this->processors); - } - - /** - * @param int $index - * @return bool - */ - #[ReturnTypeWillChange] - public function offsetExists($index) - { - return isset($this->processors[$index]); - } - - /** - * @param int $index - * @return ProcessorInterface - */ - #[ReturnTypeWillChange] - public function offsetGet($index) - { - return $this->processors[$index]; - } - - /** - * @param int $index - * @param ProcessorInterface $processor - * @return void - */ - #[ReturnTypeWillChange] - public function offsetSet($index, $processor) - { - if (!$processor instanceof ProcessorInterface) { - throw new InvalidArgumentException( - 'Processor chain accepts only instances of `Predis\Command\Processor\ProcessorInterface`' - ); - } - - $this->processors[$index] = $processor; - } - - /** - * @param int $index - * @return void - */ - #[ReturnTypeWillChange] - public function offsetUnset($index) - { - unset($this->processors[$index]); - $this->processors = array_values($this->processors); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Processor/ProcessorInterface.php b/v3_ci4/vendor/predis/predis/src/Command/Processor/ProcessorInterface.php deleted file mode 100644 index e803fe4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Processor/ProcessorInterface.php +++ /dev/null @@ -1,28 +0,0 @@ -commandID = strtoupper($commandID); - $this->setArguments($arguments); - } - - /** - * Creates a new raw command using a variadic method. - * - * @param string $commandID Redis command ID - * @param string ...$args Arguments list for the command - * - * @return CommandInterface - */ - public static function create($commandID, ...$args) - { - $arguments = func_get_args(); - - return new static(array_shift($arguments), $arguments); - } - - /** - * {@inheritdoc} - */ - public function getId() - { - return $this->commandID; - } - - /** - * {@inheritdoc} - */ - public function setArguments(array $arguments) - { - $this->arguments = $arguments; - unset($this->slot); - } - - /** - * {@inheritdoc} - */ - public function setRawArguments(array $arguments) - { - $this->setArguments($arguments); - } - - /** - * {@inheritdoc} - */ - public function getArguments() - { - return $this->arguments; - } - - /** - * {@inheritdoc} - */ - public function getArgument($index) - { - if (isset($this->arguments[$index])) { - return $this->arguments[$index]; - } - } - - /** - * {@inheritdoc} - */ - public function setSlot($slot) - { - $this->slot = $slot; - } - - /** - * {@inheritdoc} - */ - public function getSlot() - { - return $this->slot ?? null; - } - - /** - * {@inheritdoc} - */ - public function parseResponse($data) - { - return $data; - } - - /** - * {@inheritdoc} - */ - public function parseResp3Response($data) - { - return $data; - } - - /** - * {@inheritDoc} - */ - public function serializeCommand(): string - { - $commandID = $this->getId(); - $arguments = $this->getArguments(); - - $cmdlen = strlen($commandID); - $reqlen = count($arguments) + 1; - - $buffer = "*{$reqlen}\r\n\${$cmdlen}\r\n{$commandID}\r\n"; - - foreach ($arguments as $argument) { - $arglen = strlen(strval($argument)); - $buffer .= "\${$arglen}\r\n{$argument}\r\n"; - } - - return $buffer; - } - - public static function deserializeCommand(string $serializedCommand): CommandInterface - { - if ($serializedCommand[0] !== '*') { - throw new UnexpectedValueException('Invalid serializing format'); - } - - $commandArray = explode("\r\n", $serializedCommand); - $commandId = $commandArray[2]; - $classPath = __NAMESPACE__ . '\Redis\\'; - - // Check if given command is a module command. - if (count($commandIdArray = explode('.', $commandId)) > 1) { - // Fetch module configuration to resolve namespace. - $moduleConfiguration = array_filter( - ClientConfiguration::getModules(), - static function ($module) use ($commandIdArray) { - return $module['commandPrefix'] === $commandIdArray[0]; - } - ); - - $commandClass = strtoupper($commandIdArray[0] . $commandIdArray[1]); - $classPath .= array_shift($moduleConfiguration)['name'] . '\\' . $commandClass; - } else { - $classPath .= $commandIdArray[0]; - } - - $command = new $classPath(); - $arguments = []; - - for ($i = 4, $iMax = count($commandArray); $i < $iMax; $i++) { - $arguments[] = $commandArray[$i]; - ++$i; - } - - $command->setArguments($arguments); - - return $command; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/RawFactory.php b/v3_ci4/vendor/predis/predis/src/Command/RawFactory.php deleted file mode 100644 index 0715fa3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/RawFactory.php +++ /dev/null @@ -1,43 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARCOUNT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARCOUNT.php deleted file mode 100644 index 419d36a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARCOUNT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARDEL.php deleted file mode 100644 index 54f65ce..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARDEL.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARDELRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARDELRANGE.php deleted file mode 100644 index 3de12de..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARDELRANGE.php +++ /dev/null @@ -1,57 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARGET.php deleted file mode 100644 index 5f4ed0b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARGET.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARGETRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARGETRANGE.php deleted file mode 100644 index c9d30bc..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARGETRANGE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARGREP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARGREP.php deleted file mode 100644 index ca63077..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARGREP.php +++ /dev/null @@ -1,113 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARINFO.php deleted file mode 100644 index 3957857..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARINFO.php +++ /dev/null @@ -1,61 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARINSERT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARINSERT.php deleted file mode 100644 index 7c7eaa1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARINSERT.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARLASTITEMS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARLASTITEMS.php deleted file mode 100644 index e682f8d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARLASTITEMS.php +++ /dev/null @@ -1,48 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARLEN.php deleted file mode 100644 index 167902d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARLEN.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARMGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARMGET.php deleted file mode 100644 index 9adc230..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARMGET.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARMSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARMSET.php deleted file mode 100644 index 877d0de..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARMSET.php +++ /dev/null @@ -1,53 +0,0 @@ - $value) { - $flat[] = $index; - $flat[] = $value; - } - - $arguments = $flat; - } - - parent::setArguments($arguments); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARNEXT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARNEXT.php deleted file mode 100644 index 9351f84..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARNEXT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/AROP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/AROP.php deleted file mode 100644 index c51655d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/AROP.php +++ /dev/null @@ -1,86 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARRING.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARRING.php deleted file mode 100644 index 8e51da8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARRING.php +++ /dev/null @@ -1,46 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARSCAN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARSCAN.php deleted file mode 100644 index b337b3b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARSCAN.php +++ /dev/null @@ -1,50 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARSEEK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARSEEK.php deleted file mode 100644 index 18171f0..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARSEEK.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ARSET.php deleted file mode 100644 index a948dc2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ARSET.php +++ /dev/null @@ -1,46 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/AUTH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/AUTH.php deleted file mode 100644 index 8876308..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/AUTH.php +++ /dev/null @@ -1,29 +0,0 @@ -setKeys($arguments, false); - } - - public function parseResponse($data) - { - $key = array_shift($data); - - if (null === $key) { - return [$key]; - } - - return array_combine([$key], [[$data[0] => $data[1]]]); - } - - /** - * @param $data - * @return array|false|mixed|null[]|string|null - */ - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BGREWRITEAOF.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BGREWRITEAOF.php deleted file mode 100644 index 3009d4d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BGREWRITEAOF.php +++ /dev/null @@ -1,37 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BITFIELD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BITFIELD.php deleted file mode 100644 index c6f5454..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BITFIELD.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BITFIELD_RO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BITFIELD_RO.php deleted file mode 100644 index 5b510c7..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BITFIELD_RO.php +++ /dev/null @@ -1,44 +0,0 @@ - offset, into GET, encoding, offset - array_walk($arguments[1], static function ($value, $key) use (&$processedArguments) { - array_push($processedArguments, 'GET', $key, $value); - }); - } - - parent::setArguments($processedArguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BITOP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BITOP.php deleted file mode 100644 index b4a0cae..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BITOP.php +++ /dev/null @@ -1,58 +0,0 @@ -applyPrefixSkippingFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BITPOS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BITPOS.php deleted file mode 100644 index 09af09a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BITPOS.php +++ /dev/null @@ -1,39 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BLMOVE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BLMOVE.php deleted file mode 100644 index ff4eb43..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BLMOVE.php +++ /dev/null @@ -1,21 +0,0 @@ -applyPrefixSkippingLastArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BRPOP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BRPOP.php deleted file mode 100644 index 4a8eed8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BRPOP.php +++ /dev/null @@ -1,47 +0,0 @@ -applyPrefixSkippingLastArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BRPOPLPUSH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BRPOPLPUSH.php deleted file mode 100644 index dc03685..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BRPOPLPUSH.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixSkippingLastArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BZMPOP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BZMPOP.php deleted file mode 100644 index 0777abd..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BZMPOP.php +++ /dev/null @@ -1,30 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFEXISTS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFEXISTS.php deleted file mode 100644 index dc70376..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFEXISTS.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFINFO.php deleted file mode 100644 index 31f585e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFINFO.php +++ /dev/null @@ -1,84 +0,0 @@ - 'CAPACITY', - 'size' => 'SIZE', - 'filters' => 'FILTERS', - 'items' => 'ITEMS', - 'expansion' => 'EXPANSION', - ]; - - public function getId() - { - return 'BF.INFO'; - } - - public function setArguments(array $arguments) - { - if (isset($arguments[1])) { - $modifier = array_pop($arguments); - - if ($modifier === '') { - parent::setArguments($arguments); - - return; - } - - if (!in_array(strtoupper($modifier), $this->modifierEnum)) { - $enumValues = implode(', ', array_keys($this->modifierEnum)); - throw new UnexpectedValueException("Argument accepts only: {$enumValues} values"); - } - - $arguments[] = $this->modifierEnum[strtolower($modifier)]; - } - - parent::setArguments($arguments); - } - - public function parseResponse($data) - { - if (count($data) > 1) { - $result = []; - - for ($i = 0, $iMax = count($data); $i < $iMax; ++$i) { - if (array_key_exists($i + 1, $data)) { - $result[(string) $data[$i]] = $data[++$i]; - } - } - - return $result; - } - - return $data; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFINSERT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFINSERT.php deleted file mode 100644 index 6850b7a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFINSERT.php +++ /dev/null @@ -1,77 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } - - public function setArguments(array $arguments) - { - $this->setNoCreate($arguments); - $arguments = $this->getArguments(); - - if (array_key_exists(5, $arguments) && $arguments[5]) { - $arguments[5] = 'NONSCALING'; - } - - $this->setItems($arguments); - $arguments = $this->getArguments(); - - $this->setExpansion($arguments); - $arguments = $this->getArguments(); - - $this->setErrorRate($arguments); - $arguments = $this->getArguments(); - - $this->setCapacity($arguments); - $this->filterArguments(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFLOADCHUNK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFLOADCHUNK.php deleted file mode 100644 index b8e83f1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFLOADCHUNK.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFMADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFMADD.php deleted file mode 100644 index 4a24793..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFMADD.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFMEXISTS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFMEXISTS.php deleted file mode 100644 index 44840d5..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFMEXISTS.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFRESERVE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFRESERVE.php deleted file mode 100644 index 402916a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFRESERVE.php +++ /dev/null @@ -1,54 +0,0 @@ -setExpansion($arguments); - $this->filterArguments(); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFSCANDUMP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFSCANDUMP.php deleted file mode 100644 index d24cc8a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/BloomFilter/BFSCANDUMP.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CLIENT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CLIENT.php deleted file mode 100644 index dd559ed..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CLIENT.php +++ /dev/null @@ -1,155 +0,0 @@ -setListArguments($arguments); - break; - case 'NOEVICT': - $arguments[0] = 'NO-EVICT'; - $this->setNoTouchArguments($arguments); - break; - case 'NOTOUCH': - $arguments[0] = 'NO-TOUCH'; - $this->setNoTouchArguments($arguments); - break; - case 'SETINFO': - $this->setSetInfoArguments($arguments); - break; - default: - parent::setArguments($arguments); - } - } - - private function setListArguments(array $arguments): void - { - $processedArguments = [$arguments[0]]; - - if (array_key_exists(1, $arguments) && null !== $arguments[1]) { - array_push($processedArguments, 'TYPE', strtoupper($arguments[1])); - } - - if (array_key_exists(2, $arguments)) { - array_push($processedArguments, 'ID', $arguments[2]); - } - - if (count($arguments) > 3) { - for ($i = 3, $iMax = count($arguments); $i < $iMax; $i++) { - $processedArguments[] = $arguments[$i]; - } - } - - parent::setArguments($processedArguments); - } - - private function setNoTouchArguments(array $arguments): void - { - $processedArguments = [$arguments[0]]; - - if (array_key_exists(1, $arguments) && null !== $arguments[1]) { - $modifier = ($arguments[1]) ? 'ON' : 'OFF'; - $processedArguments[] = $modifier; - } - - parent::setArguments($processedArguments); - } - - private function setSetInfoArguments(array $arguments): void - { - $processedArguments = [$arguments[0]]; - - if ( - array_key_exists(1, $arguments) - && null !== $arguments[1] - && array_key_exists(2, $arguments) - && null !== $arguments[2] - ) { - array_push($processedArguments, strtoupper($arguments[1]), $arguments[2]); - } - - parent::setArguments($processedArguments); - } - - /** - * {@inheritdoc} - */ - public function parseResponse($data) - { - $args = array_change_key_case($this->getArguments(), CASE_UPPER); - - switch (strtoupper($args[0])) { - case 'LIST': - return $this->parseClientList($data); - case 'KILL': - case 'GETNAME': - case 'SETNAME': - default: - return $data; - } // @codeCoverageIgnore - } - - /** - * Parses the response to CLIENT LIST and returns a structured list. - * - * @param string $data Response buffer. - * - * @return array - */ - protected function parseClientList($data) - { - $clients = []; - - foreach (explode("\n", $data, -1) as $clientData) { - $client = []; - - foreach (explode(' ', $clientData) as $kv) { - @[$k, $v] = explode('=', $kv); - $client[$k] = $v; - } - - $clients[] = $client; - } - - return $clients; - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CLUSTER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CLUSTER.php deleted file mode 100644 index 308136c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CLUSTER.php +++ /dev/null @@ -1,26 +0,0 @@ -parseResponse($item); - }, $data); - } - - // Relay - $result = []; - foreach ($data as $key => $value) { - $result[] = $key; - $result[] = $this->parseResponse($value); - } - - return $result; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CONFIG.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CONFIG.php deleted file mode 100644 index e5c56f1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CONFIG.php +++ /dev/null @@ -1,54 +0,0 @@ -setDB($arguments); - $arguments = $this->getArguments(); - - $this->setReplace($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINCRBY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINCRBY.php deleted file mode 100644 index 55bf156..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINCRBY.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINFO.php deleted file mode 100644 index dfc6d74..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINFO.php +++ /dev/null @@ -1,50 +0,0 @@ - 1) { - $result = []; - - for ($i = 0, $iMax = count($data); $i < $iMax; ++$i) { - if (array_key_exists($i + 1, $data)) { - $result[(string) $data[$i]] = $data[++$i]; - } - } - - return $result; - } - - return $data; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYDIM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYDIM.php deleted file mode 100644 index 5ac34e2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYDIM.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYPROB.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYPROB.php deleted file mode 100644 index 8e8f460..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSINITBYPROB.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSMERGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSMERGE.php deleted file mode 100644 index c5a18ef..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSMERGE.php +++ /dev/null @@ -1,55 +0,0 @@ -getArguments()) { - $arguments[0] = $prefix . $arguments[0]; - - for ($i = 2, $iMax = (int) $arguments[1] + 2; $i < $iMax; $i++) { - $arguments[$i] = $prefix . $arguments[$i]; - } - - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSQUERY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSQUERY.php deleted file mode 100644 index 7992a74..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CountMinSketch/CMSQUERY.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFADD.php deleted file mode 100644 index 682e9f8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFADD.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFADDNX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFADDNX.php deleted file mode 100644 index 9aa356b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFADDNX.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFCOUNT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFCOUNT.php deleted file mode 100644 index efa8e42..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFCOUNT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFDEL.php deleted file mode 100644 index e53b244..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFDEL.php +++ /dev/null @@ -1,35 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFEXISTS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFEXISTS.php deleted file mode 100644 index b397193..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFEXISTS.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFINFO.php deleted file mode 100644 index 77de1f1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFINFO.php +++ /dev/null @@ -1,50 +0,0 @@ - 1) { - $result = []; - - for ($i = 0, $iMax = count($data); $i < $iMax; ++$i) { - if (array_key_exists($i + 1, $data)) { - $result[(string) $data[$i]] = $data[++$i]; - } - } - - return $result; - } - - return $data; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFINSERT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFINSERT.php deleted file mode 100644 index 7c3fd69..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFINSERT.php +++ /dev/null @@ -1,57 +0,0 @@ -setNoCreate($arguments); - $arguments = $this->getArguments(); - - $this->setItems($arguments); - $arguments = $this->getArguments(); - - $this->setCapacity($arguments); - $this->filterArguments(); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFINSERTNX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFINSERTNX.php deleted file mode 100644 index a9a2440..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFINSERTNX.php +++ /dev/null @@ -1,27 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFMEXISTS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFMEXISTS.php deleted file mode 100644 index 6180182..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFMEXISTS.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFRESERVE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFRESERVE.php deleted file mode 100644 index fd11fd4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFRESERVE.php +++ /dev/null @@ -1,57 +0,0 @@ -setExpansion($arguments); - $arguments = $this->getArguments(); - - $this->setMaxIterations($arguments); - $arguments = $this->getArguments(); - - $this->setBucketSize($arguments); - $this->filterArguments(); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFSCANDUMP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFSCANDUMP.php deleted file mode 100644 index d00387c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/CuckooFilter/CFSCANDUMP.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/DBSIZE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/DBSIZE.php deleted file mode 100644 index 40c5125..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/DBSIZE.php +++ /dev/null @@ -1,29 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/DECRBY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/DECRBY.php deleted file mode 100644 index e736561..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/DECRBY.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/DEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/DEL.php deleted file mode 100644 index 4cf607f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/DEL.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/DELEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/DELEX.php deleted file mode 100644 index 11e5eb0..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/DELEX.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/DIGEST.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/DIGEST.php deleted file mode 100644 index 90ffbd3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/DIGEST.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/DISCARD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/DISCARD.php deleted file mode 100644 index 041becf..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/DISCARD.php +++ /dev/null @@ -1,29 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ECHO_.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ECHO_.php deleted file mode 100644 index 3d89807..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ECHO_.php +++ /dev/null @@ -1,29 +0,0 @@ -getArgument(0); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/EVALSHA_RO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/EVALSHA_RO.php deleted file mode 100644 index c7a052c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/EVALSHA_RO.php +++ /dev/null @@ -1,27 +0,0 @@ -getArgument(0)); - } - - public function prefixKeys($prefix) - { - if ($arguments = $this->getArguments()) { - for ($i = 2; $i < $arguments[1] + 2; ++$i) { - $arguments[$i] = "$prefix{$arguments[$i]}"; - } - - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/EVAL_RO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/EVAL_RO.php deleted file mode 100644 index 26877b8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/EVAL_RO.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/EXPIRE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/EXPIRE.php deleted file mode 100644 index 5eccc53..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/EXPIRE.php +++ /dev/null @@ -1,41 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/EXPIREAT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/EXPIREAT.php deleted file mode 100644 index f1ada4e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/EXPIREAT.php +++ /dev/null @@ -1,40 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/EXPIRETIME.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/EXPIRETIME.php deleted file mode 100644 index de36ce8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/EXPIRETIME.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/FAILOVER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/FAILOVER.php deleted file mode 100644 index 22b80f9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/FAILOVER.php +++ /dev/null @@ -1,48 +0,0 @@ -setTimeout($arguments); - $arguments = $this->getArguments(); - - $this->setTo($arguments); - $this->filterArguments(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/FCALL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/FCALL.php deleted file mode 100644 index 8584e5d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/FCALL.php +++ /dev/null @@ -1,48 +0,0 @@ -getArguments(); - - if (isset($arguments[1])) { - $numkeys = $arguments[1]; - - for ($i = 2; $i < $numkeys + 2; $i++) { - $arguments[$i] = $prefix . $arguments[$i]; - } - } - - $this->setRawArguments($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/FCALL_RO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/FCALL_RO.php deleted file mode 100644 index b03ad56..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/FCALL_RO.php +++ /dev/null @@ -1,41 +0,0 @@ - 2) { - for ($i = 2, $iMax = count($arguments); $i < $iMax; $i++) { - $processedArguments[] = $arguments[$i]; - } - } - - parent::setArguments($processedArguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/FLUSHALL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/FLUSHALL.php deleted file mode 100644 index 75e51f8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/FLUSHALL.php +++ /dev/null @@ -1,29 +0,0 @@ -setFlushArguments($arguments); - break; - - case 'LIST': - $this->setListArguments($arguments); - break; - - case 'LOAD': - $this->setLoadArguments($arguments); - break; - - case 'RESTORE': - $this->setRestoreArguments($arguments); - break; - - default: - parent::setArguments($arguments); - } - - $this->filterArguments(); - } - - /** - * @param array $arguments - * @return void - */ - private function setFlushArguments(array $arguments): void - { - $processedArguments = [$arguments[0]]; - - if (array_key_exists(1, $arguments) && null !== $arguments[1]) { - $processedArguments[] = strtoupper($arguments[1]); - } - - parent::setArguments($processedArguments); - } - - /** - * @param array $arguments - * @return void - */ - private function setListArguments(array $arguments): void - { - $processedArguments = [$arguments[0]]; - - if (array_key_exists(1, $arguments) && null !== $arguments[1]) { - array_push($processedArguments, 'LIBRARYNAME', $arguments[1]); - } - - if (array_key_exists(2, $arguments) && true === $arguments[2]) { - $processedArguments[] = 'WITHCODE'; - } - - parent::setArguments($processedArguments); - } - - /** - * @param array $arguments - * @return void - */ - private function setLoadArguments(array $arguments): void - { - if (count($arguments) <= 2) { - parent::setArguments($arguments); - - return; - } - - $processedArguments = [$arguments[0]]; - $replace = array_pop($arguments); - - if (is_bool($replace) && $replace) { - $processedArguments[] = 'REPLACE'; - } elseif (!is_bool($replace)) { - $processedArguments[] = $replace; - } - - $processedArguments[] = $arguments[1]; - - parent::setArguments($processedArguments); - } - - /** - * @param array $arguments - * @return void - */ - private function setRestoreArguments(array $arguments): void - { - $processedArguments = [$arguments[0], $arguments[1]]; - - if (array_key_exists(2, $arguments) && null !== $arguments[2]) { - $processedArguments[] = strtoupper($arguments[2]); - } - - parent::setArguments($processedArguments); - } - - public function parseResponse($data) - { - if (!is_array($data)) { - return $data; - } - - if ($data === array_values($data)) { - return array_map(function ($item) { - return $this->parseResponse($item); - }, $data); - } - - // Relay - $result = []; - foreach ($data as $key => $value) { - $result[] = $key; - $result[] = $this->parseResponse($value); - } - - return $result; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOADD.php deleted file mode 100644 index 755c0d4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOADD.php +++ /dev/null @@ -1,48 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEODIST.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GEODIST.php deleted file mode 100644 index 2162a2f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEODIST.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOHASH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOHASH.php deleted file mode 100644 index 69d932a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOHASH.php +++ /dev/null @@ -1,47 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOPOS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOPOS.php deleted file mode 100644 index 830145f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOPOS.php +++ /dev/null @@ -1,47 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEORADIUS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GEORADIUS.php deleted file mode 100644 index 02b8cea..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEORADIUS.php +++ /dev/null @@ -1,98 +0,0 @@ -getArguments()) { - $arguments[0] = "$prefix{$arguments[0]}"; - $startIndex = $this->getId() === 'GEORADIUS' ? 5 : 4; - - if (($count = count($arguments)) > $startIndex) { - for ($i = $startIndex; $i < $count; ++$i) { - switch (strtoupper($arguments[$i])) { - case 'STORE': - case 'STOREDIST': - $arguments[$i] = "$prefix{$arguments[++$i]}"; - break; - } - } - } - - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEORADIUSBYMEMBER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GEORADIUSBYMEMBER.php deleted file mode 100644 index 1b73f2f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEORADIUSBYMEMBER.php +++ /dev/null @@ -1,32 +0,0 @@ -setSorting($arguments); - $arguments = $this->getArguments(); - - $this->setWithCoord($arguments); - $arguments = $this->getArguments(); - - $this->setWithDist($arguments); - $arguments = $this->getArguments(); - - $this->setWithHash($arguments); - $arguments = $this->getArguments(); - - $this->setCount($arguments, $arguments[5] ?? false); - $arguments = $this->getArguments(); - - $this->setFrom($arguments); - $arguments = $this->getArguments(); - - $this->setBy($arguments); - $this->filterArguments(); - } - - public function parseResponse($data) - { - $parsedData = []; - $itemKey = ''; - - foreach ($data as $item) { - if (!is_array($item)) { - $parsedData[] = $item; - continue; - } - - foreach ($item as $key => $itemRow) { - if ($key === 0) { - $itemKey = $itemRow; - continue; - } - - if (is_string($itemRow)) { - $parsedData[$itemKey]['dist'] = round((float) $itemRow, 5); - } elseif (is_int($itemRow)) { - $parsedData[$itemKey]['hash'] = $itemRow; - } else { - $parsedData[$itemKey]['lng'] = round($itemRow[0], 5); - $parsedData[$itemKey]['lat'] = round($itemRow[1], 5); - } - } - } - - return $parsedData; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOSEARCHSTORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOSEARCHSTORE.php deleted file mode 100644 index 53336bf..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GEOSEARCHSTORE.php +++ /dev/null @@ -1,71 +0,0 @@ -setStoreDist($arguments); - $arguments = $this->getArguments(); - - $this->setCount($arguments, $arguments[6] ?? false); - $arguments = $this->getArguments(); - - $this->setSorting($arguments); - $arguments = $this->getArguments(); - - $this->setFrom($arguments); - $arguments = $this->getArguments(); - - $this->setBy($arguments); - $this->filterArguments(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GET.php deleted file mode 100644 index e50fe59..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GET.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETBIT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GETBIT.php deleted file mode 100644 index f1d4456..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETBIT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GETDEL.php deleted file mode 100644 index b2b23a9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETDEL.php +++ /dev/null @@ -1,28 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GETEX.php deleted file mode 100644 index b9a844a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETEX.php +++ /dev/null @@ -1,63 +0,0 @@ - 'EX', - 'px' => 'PX', - 'exat' => 'EXAT', - 'pxat' => 'PXAT', - 'persist' => 'PERSIST', - ]; - - public function getId() - { - return 'GETEX'; - } - - public function setArguments(array $arguments) - { - if (!array_key_exists(1, $arguments) || $arguments[1] === '') { - parent::setArguments([$arguments[0]]); - - return; - } - - if (!in_array(strtoupper($arguments[1]), self::$modifierEnum)) { - $enumValues = implode(', ', array_keys(self::$modifierEnum)); - throw new UnexpectedValueException("Modifier argument accepts only: {$enumValues} values"); - } - - if ($arguments[1] === 'persist') { - parent::setArguments([$arguments[0], self::$modifierEnum[$arguments[1]]]); - - return; - } - - $arguments[1] = self::$modifierEnum[$arguments[1]]; - - if (!array_key_exists(2, $arguments)) { - throw new UnexpectedValueException('You should provide value for current modifier'); - } - - parent::setArguments($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GETRANGE.php deleted file mode 100644 index 66e6f71..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETRANGE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/GETSET.php deleted file mode 100644 index 25190f8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/GETSET.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HDEL.php deleted file mode 100644 index 8ebed04..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HDEL.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HEXISTS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HEXISTS.php deleted file mode 100644 index 815e6be..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HEXISTS.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HEXPIRE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HEXPIRE.php deleted file mode 100644 index 1e9fd10..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HEXPIRE.php +++ /dev/null @@ -1,56 +0,0 @@ -flagsEnum, true)) { - $processedArguments[] = strtoupper($arguments[3]); - } else { - throw new UnexpectedValueException('Unsupported flag value'); - } - } - - if (array_key_exists(2, $arguments) && null !== $arguments[2]) { - array_push($processedArguments, 'FIELDS', count($arguments[2])); - $processedArguments = array_merge($processedArguments, $arguments[2]); - } - - parent::setArguments($processedArguments); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HEXPIREAT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HEXPIREAT.php deleted file mode 100644 index 0ce4170..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HEXPIREAT.php +++ /dev/null @@ -1,21 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HGET.php deleted file mode 100644 index 26085cb..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HGET.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HGETALL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HGETALL.php deleted file mode 100644 index f3c0e14..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HGETALL.php +++ /dev/null @@ -1,52 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HGETDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HGETDEL.php deleted file mode 100644 index 431a205..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HGETDEL.php +++ /dev/null @@ -1,35 +0,0 @@ - 'EX', - self::PX => 'PX', - self::EXAT => 'EXAT', - self::PXAT => 'PXAT', - self::PERSIST => 'PERSIST', - ]; - - public function getId() - { - return 'HGETEX'; - } - - public function setArguments(array $arguments) - { - $processedArguments = [$arguments[0]]; - - // Only required arguments - if (!array_key_exists(2, $arguments) || $arguments[2] == '') { - array_push($processedArguments, 'FIELDS', count($arguments[1])); - $processedArguments = array_merge($processedArguments, $arguments[1]); - parent::setArguments($processedArguments); - - return; - } - - if (!in_array(strtoupper($arguments[2]), self::$modifierEnum)) { - $enumValues = implode(', ', array_keys(self::$modifierEnum)); - throw new UnexpectedValueException("Modifier argument accepts only: {$enumValues} values"); - } - - // PERSIST requires no additional value - if (strtoupper($arguments[2]) === self::$modifierEnum['persist']) { - $processedArguments[] = self::$modifierEnum['persist']; - array_push($processedArguments, 'FIELDS', count($arguments[1])); - $processedArguments = array_merge($processedArguments, $arguments[1]); - parent::setArguments($processedArguments); - - return; - } - - if (!array_key_exists(3, $arguments) || !is_int($arguments[3])) { - throw new UnexpectedValueException('Modifier value is missing or incorrect type'); - } - - // Order matters so FIELDS should be at the end - array_push($processedArguments, self::$modifierEnum[strtolower($arguments[2])], $arguments[3], 'FIELDS', count($arguments[1])); - $processedArguments = array_merge($processedArguments, $arguments[1]); - - parent::setArguments($processedArguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HINCRBY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HINCRBY.php deleted file mode 100644 index 8665805..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HINCRBY.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HINCRBYFLOAT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HINCRBYFLOAT.php deleted file mode 100644 index ba9407c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HINCRBYFLOAT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HKEYS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HKEYS.php deleted file mode 100644 index 4f7ccdc..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HKEYS.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HLEN.php deleted file mode 100644 index 1d20ec7..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HLEN.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HMGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HMGET.php deleted file mode 100644 index d333ee6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HMGET.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HMSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HMSET.php deleted file mode 100644 index 84906e3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HMSET.php +++ /dev/null @@ -1,54 +0,0 @@ - $v) { - $flattenedKVs[] = $k; - $flattenedKVs[] = $v; - } - - $arguments = $flattenedKVs; - } - - parent::setArguments($arguments); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HOTKEYS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HOTKEYS.php deleted file mode 100644 index 2f77e15..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HOTKEYS.php +++ /dev/null @@ -1,93 +0,0 @@ -setStartArguments($arguments); - break; - - default: - parent::setArguments($arguments); - } - } - - public function parseResponse($data) - { - if (is_array($data)) { - foreach ($data as $key => $item) { - $dict = CommandUtility::arrayToDictionary($item, null, false); - $data[$key] = $dict; - } - } - - return $data; - } - - /** - * @param array $arguments - * @return void - */ - private function setStartArguments(array $arguments) - { - $processedArguments = [$arguments[0]]; - - array_push($processedArguments, 'METRICS', count($arguments[1]), ...$arguments[1]); - - if (isset($arguments[2])) { - if ($arguments[2] > 9 && $arguments[2] < 65) { - array_push($processedArguments, 'COUNT', $arguments[2]); - } else { - throw new ValueError('Count value should be between 10 and 64'); - } - } - - if (isset($arguments[3])) { - array_push($processedArguments, 'DURATION', $arguments[3]); - } - - if (isset($arguments[4])) { - if ($arguments[4] > 0) { - array_push($processedArguments, 'SAMPLE', $arguments[4]); - } else { - throw new ValueError('Sample value should be greater than 0'); - } - } - - if (isset($arguments[5])) { - array_push($processedArguments, 'SLOTS', count($arguments[5]), ...$arguments[5]); - } - - parent::setArguments($processedArguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HPERSIST.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HPERSIST.php deleted file mode 100644 index 4516d93..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HPERSIST.php +++ /dev/null @@ -1,31 +0,0 @@ -prepareOptions(array_pop($arguments)); - $arguments = array_merge($arguments, $options); - } - - $this->arguments = $arguments; - parent::setArguments($arguments); - } - - /** - * Returns a list of options and modifiers compatible with Redis. - * - * @param array $options List of options. - * - * @return array - */ - protected function prepareOptions($options) - { - $options = array_change_key_case($options, CASE_UPPER); - $normalized = []; - - if (!empty($options['MATCH'])) { - $normalized[] = 'MATCH'; - $normalized[] = $options['MATCH']; - } - - if (!empty($options['COUNT'])) { - $normalized[] = 'COUNT'; - $normalized[] = $options['COUNT']; - } - - if (!empty($options['NOVALUES']) && true === $options['NOVALUES']) { - $normalized[] = 'NOVALUES'; - } - - return $normalized; - } - - /** - * {@inheritdoc} - */ - public function parseResponse($data) - { - if (!in_array('NOVALUES', $this->arguments, true)) { - if (is_array($data)) { - $fields = $data[1]; - $result = []; - - for ($i = 0; $i < count($fields); ++$i) { - $result[$fields[$i]] = $fields[++$i]; - } - - $data[1] = $result; - } - } - - return $data; - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HSET.php deleted file mode 100644 index e038842..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HSET.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HSETEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HSETEX.php deleted file mode 100644 index ae8b517..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HSETEX.php +++ /dev/null @@ -1,117 +0,0 @@ - 'EX', - self::TTL_PX => 'PX', - self::TTL_EXAT => 'EXAT', - self::TTL_PXAT => 'PXAT', - self::TTL_KEEP_TTL => 'KEEPTTL', - ]; - - /** - * @var string[] - */ - private static $setModifierEnum = [ - self::SET_FNX => 'FNX', - self::SET_FXX => 'FXX', - ]; - - public function getId() - { - return 'HSETEX'; - } - - public function setArguments(array $arguments) - { - $processedArguments = [$arguments[0]]; - $flatArray = []; - - // Convert key => value, into key, value - array_walk($arguments[1], static function ($value, $key) use (&$flatArray) { - array_push($flatArray, $key, $value); - }); - - // Only required arguments - if (!array_key_exists(2, $arguments)) { - array_push($processedArguments, 'FIELDS', count($flatArray) / 2); - $processedArguments = array_merge($processedArguments, $flatArray); - parent::setArguments($processedArguments); - - return; - } - - if ($arguments[2] !== '') { - if (!in_array(strtoupper($arguments[2]), self::$setModifierEnum)) { - $enumValues = implode(', ', array_keys(self::$setModifierEnum)); - throw new UnexpectedValueException("Modifier argument accepts only: {$enumValues} values"); - } - - $processedArguments[] = self::$setModifierEnum[strtolower($arguments[2])]; - } - - // Required + set modifier - if (!array_key_exists(3, $arguments) || $arguments[3] == '') { - array_push($processedArguments, 'FIELDS', count($flatArray) / 2); - $processedArguments = array_merge($processedArguments, $flatArray); - parent::setArguments($processedArguments); - - return; - } - - if (!in_array(strtoupper($arguments[3]), self::$ttlModifierEnum)) { - $enumValues = implode(', ', array_keys(self::$ttlModifierEnum)); - throw new UnexpectedValueException("Modifier argument accepts only: {$enumValues} values"); - } - - // KEEPTTL requires no additional value - if (strtoupper($arguments[3]) === self::$ttlModifierEnum[self::TTL_KEEP_TTL]) { - $processedArguments[] = self::$ttlModifierEnum[self::TTL_KEEP_TTL]; - array_push($processedArguments, 'FIELDS', count($flatArray) / 2); - $processedArguments = array_merge($processedArguments, $flatArray); - parent::setArguments($processedArguments); - - return; - } - - if (!array_key_exists(4, $arguments) || !is_int($arguments[4])) { - throw new UnexpectedValueException('Modifier value is missing or incorrect type'); - } - - // Order matters so FIELDS should be at the end - array_push($processedArguments, self::$ttlModifierEnum[strtolower($arguments[3])], $arguments[4], 'FIELDS', count($flatArray) / 2); - $processedArguments = array_merge($processedArguments, $flatArray); - - parent::setArguments($processedArguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HSETNX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HSETNX.php deleted file mode 100644 index 477c048..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HSETNX.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HSTRLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HSTRLEN.php deleted file mode 100644 index 0459c6e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HSTRLEN.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HTTL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HTTL.php deleted file mode 100644 index df47b58..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HTTL.php +++ /dev/null @@ -1,36 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/HVALS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/HVALS.php deleted file mode 100644 index fb788b2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/HVALS.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/INCR.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/INCR.php deleted file mode 100644 index 4ff22f4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/INCR.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/INCRBY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/INCRBY.php deleted file mode 100644 index 474bff9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/INCRBY.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/INCRBYFLOAT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/INCRBYFLOAT.php deleted file mode 100644 index fe518f9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/INCRBYFLOAT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/INCREX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/INCREX.php deleted file mode 100644 index e42f356..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/INCREX.php +++ /dev/null @@ -1,163 +0,0 @@ -resolveByType($arguments[1]); - $processed[] = $byType; - $processed[] = $arguments[1]; - } - - if (isset($arguments[2]) && $arguments[2] !== null) { - $processed[] = 'LBOUND'; - $processed[] = $arguments[2]; - } - - if (isset($arguments[3]) && $arguments[3] !== null) { - $processed[] = 'UBOUND'; - $processed[] = $arguments[3]; - } - - if (!empty($arguments[4])) { - $processed[] = 'SATURATE'; - } - - $expireType = $arguments[5] ?? null; - if ($expireType !== null && $expireType !== '') { - $expireType = strtoupper($expireType); - - if (!in_array($expireType, self::$expireEnum, true)) { - $allowed = implode(', ', self::$expireEnum); - throw new UnexpectedValueException("Expire modifier accepts only: {$allowed} values"); - } - - if ($expireType === self::EXPIRE_PERSIST) { - $processed[] = self::EXPIRE_PERSIST; - } else { - if (!array_key_exists(6, $arguments) || $arguments[6] === null) { - throw new UnexpectedValueException("{$expireType} requires a value"); - } - - $processed[] = $expireType; - $processed[] = $arguments[6]; - } - } - - if (!empty($arguments[7])) { - $processed[] = 'ENX'; - } - - parent::setArguments($processed); - } - - /** - * {@inheritdoc} - * - * Normalizes the response to native numeric types so RESP2 and RESP3 are - * consistent: RESP2 returns BYFLOAT results as bulk strings while RESP3 - * returns native doubles. After parsing, callers always see int|float. - */ - public function parseResponse($data) - { - if (!is_array($data)) { - return $data; - } - - return array_map(static function ($v) { - if (!is_string($v) || !is_numeric($v)) { - return $v; - } - - return strpbrk($v, '.eE') !== false ? (float) $v : (int) $v; - }, $data); - } - - /** - * @param int|float|string $value - * @return string Either BYINT or BYFLOAT - */ - private function resolveByType($value): string - { - if (is_int($value)) { - return self::BY_INT; - } - - if (is_float($value)) { - return self::BY_FLOAT; - } - - if (!is_string($value) || !is_numeric($value)) { - throw new UnexpectedValueException( - 'Increment value must be an int, float, or numeric string' - ); - } - - // Numeric string: pick BYFLOAT when it carries a decimal point or - // exponent, otherwise treat it as an integer. - if (strpbrk($value, '.eE') !== false) { - return self::BY_FLOAT; - } - - return self::BY_INT; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/INFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/INFO.php deleted file mode 100644 index dabac61..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/INFO.php +++ /dev/null @@ -1,166 +0,0 @@ -parseNewResponseFormat($lines); - } - - return $this->parseOldResponseFormat($lines); - } - - /** - * {@inheritdoc} - */ - public function parseNewResponseFormat($lines) - { - $info = []; - $current = null; - - foreach ($lines as $row) { - if ($row === '') { - continue; - } - - if (preg_match('/^# (\w+)$/', $row, $matches)) { - $info[$matches[1]] = []; - $current = &$info[$matches[1]]; - continue; - } - - [$k, $v] = $this->parseRow($row); - $current[$k] = $v; - } - - return $info; - } - - /** - * {@inheritdoc} - */ - public function parseOldResponseFormat($lines) - { - $info = []; - - foreach ($lines as $row) { - if (strpos($row, ':') === false) { - continue; - } - - [$k, $v] = $this->parseRow($row); - $info[$k] = $v; - } - - return $info; - } - - /** - * Parses a single row of the response and returns the key-value pair. - * - * @param string $row Single row of the response. - * - * @return array - */ - protected function parseRow($row) - { - if (preg_match('/^module:name/', $row)) { - return $this->parseModuleRow($row); - } - - [$k, $v] = explode(':', $row, 2); - - if (preg_match('/^db\d+$/', $k)) { - $v = $this->parseDatabaseStats($v); - } - - return [$k, $v]; - } - - /** - * Extracts the statistics of each logical DB from the string buffer. - * - * @param string $str Response buffer. - * - * @return array - */ - protected function parseDatabaseStats($str) - { - $db = []; - - foreach (explode(',', $str) as $dbvar) { - [$dbvk, $dbvv] = explode('=', $dbvar); - $db[trim($dbvk)] = $dbvv; - } - - return $db; - } - - /** - * Parsing module rows because of different format. - * - * @param string $row - * @return array - */ - protected function parseModuleRow(string $row): array - { - [$moduleKeyword, $moduleData] = explode(':', $row); - $explodedData = explode(',', $moduleData); - $parsedData = []; - - foreach ($explodedData as $moduleDataRow) { - [$k, $v] = explode('=', $moduleDataRow); - - if ($k === 'name') { - $parsedData[0] = $v; - continue; - } - - $parsedData[1][$k] = $v; - } - - return $parsedData; - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRAPPEND.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRAPPEND.php deleted file mode 100644 index 894c1f5..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRAPPEND.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRINDEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRINDEX.php deleted file mode 100644 index a0189c3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRINDEX.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRINSERT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRINSERT.php deleted file mode 100644 index 16054e5..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRINSERT.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRLEN.php deleted file mode 100644 index 4ff88a3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRLEN.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRPOP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRPOP.php deleted file mode 100644 index 14e3bae..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRPOP.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRTRIM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRTRIM.php deleted file mode 100644 index e68df98..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONARRTRIM.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONCLEAR.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONCLEAR.php deleted file mode 100644 index 42d510d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONCLEAR.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONDEBUG.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONDEBUG.php deleted file mode 100644 index ac109cc..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONDEBUG.php +++ /dev/null @@ -1,28 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONFORGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONFORGET.php deleted file mode 100644 index 5ffe29f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONFORGET.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONGET.php deleted file mode 100644 index ef609b4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONGET.php +++ /dev/null @@ -1,62 +0,0 @@ -setSpace($arguments); - $arguments = $this->getArguments(); - - $this->setNewline($arguments); - $arguments = $this->getArguments(); - - $this->setIndent($arguments); - $this->filterArguments(); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONMERGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONMERGE.php deleted file mode 100644 index 5e6d919..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONMERGE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONMGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONMGET.php deleted file mode 100644 index 599eb88..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONMGET.php +++ /dev/null @@ -1,41 +0,0 @@ -applyPrefixSkippingLastArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONMSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONMSET.php deleted file mode 100644 index 4309926..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONMSET.php +++ /dev/null @@ -1,39 +0,0 @@ -getArguments()) { - for ($i = 0, $l = count($arguments); $i < $l; $i += 3) { - $arguments[$i] = $prefix . $arguments[$i]; - } - - $this->setArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONNUMINCRBY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONNUMINCRBY.php deleted file mode 100644 index d8f0e17..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONNUMINCRBY.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONOBJKEYS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONOBJKEYS.php deleted file mode 100644 index 739aa9f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONOBJKEYS.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONOBJLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONOBJLEN.php deleted file mode 100644 index b49d3c4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONOBJLEN.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONRESP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONRESP.php deleted file mode 100644 index b87bb6d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONRESP.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONSET.php deleted file mode 100644 index 8bf3c74..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONSET.php +++ /dev/null @@ -1,76 +0,0 @@ - 'BF16', - 'fp16' => 'FP16', - 'fp32' => 'FP32', - 'fp64' => 'FP64', - ]; - - public function getId() - { - return 'JSON.SET'; - } - - public function setArguments(array $arguments) - { - $fpha = null; - - if (isset($arguments[4])) { - $fpha = $arguments[4]; - array_splice($arguments, 4, 1); - } - - if ($fpha !== null && !array_key_exists(strtolower($fpha), self::$fphaEnum)) { - $enumValues = implode(', ', array_keys(self::$fphaEnum)); - throw new UnexpectedValueException("FPHA argument accepts only: {$enumValues} values"); - } - - $this->setSubcommand($arguments); - $this->filterArguments(); - - if ($fpha !== null) { - $currentArgs = $this->getArguments(); - $currentArgs[] = 'FPHA'; - $currentArgs[] = self::$fphaEnum[strtolower($fpha)]; - parent::setArguments($currentArgs); - } - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONSTRAPPEND.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONSTRAPPEND.php deleted file mode 100644 index bc5a3b3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONSTRAPPEND.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONSTRLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONSTRLEN.php deleted file mode 100644 index d15a52d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONSTRLEN.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONTOGGLE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONTOGGLE.php deleted file mode 100644 index 565ae00..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONTOGGLE.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONTYPE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONTYPE.php deleted file mode 100644 index 7454e33..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Json/JSONTYPE.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/KEYS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/KEYS.php deleted file mode 100644 index 3e06ced..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/KEYS.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LASTSAVE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LASTSAVE.php deleted file mode 100644 index 2e58bd5..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LASTSAVE.php +++ /dev/null @@ -1,29 +0,0 @@ -filterArguments(); - } - - public function parseResponse($data) - { - if (is_array($data)) { - if ($data !== array_values($data)) { - return $data; // Relay - } - - return [$data[0] => $data[1], $data[2] => $data[3]]; - } - - return $data; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LINDEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LINDEX.php deleted file mode 100644 index 4261e63..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LINDEX.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LINSERT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LINSERT.php deleted file mode 100644 index cf562d6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LINSERT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LLEN.php deleted file mode 100644 index 20dde4d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LLEN.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LMOVE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LMOVE.php deleted file mode 100644 index 3de38f6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LMOVE.php +++ /dev/null @@ -1,33 +0,0 @@ -getArguments()) { - $arguments[0] = $prefix . $arguments[0]; - $arguments[1] = $prefix . $arguments[1]; - - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LMPOP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LMPOP.php deleted file mode 100644 index 30bc6f3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LMPOP.php +++ /dev/null @@ -1,87 +0,0 @@ -setCount($arguments); - $arguments = $this->getArguments(); - - $this->setLeftRight($arguments); - $arguments = $this->getArguments(); - - $this->setKeys($arguments); - $this->filterArguments(); - } - - public function parseResponse($data) - { - if (null === $data) { - return null; - } - - return [$data[0] => $data[1]]; - } - - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } - - public function prefixKeys($prefix) - { - $arguments = $this->getArguments(); - - $keysOffset = static::$keysArgumentPositionOffset; - $keysCount = $arguments[$keysOffset]; - $keys = array_slice($arguments, $keysOffset + 1, $keysCount); - $prefixedKeys = array_map(static function ($key) use ($prefix) { - return $prefix . $key; - }, $keys); - - $argumentsBefore = array_slice($arguments, 0, $keysOffset + 1); - $argumentsAfter = array_slice($arguments, $keysOffset + $keysCount + 1); - - $this->setRawArguments(array_merge( - $argumentsBefore, - $prefixedKeys, - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LPOP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LPOP.php deleted file mode 100644 index 2dd7c94..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LPOP.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LPUSH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LPUSH.php deleted file mode 100644 index 08460eb..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LPUSH.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LPUSHX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LPUSHX.php deleted file mode 100644 index d41ec5f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LPUSHX.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LRANGE.php deleted file mode 100644 index cbe7102..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LRANGE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LREM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LREM.php deleted file mode 100644 index 538fcbe..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LREM.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LSET.php deleted file mode 100644 index 4815ea4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LSET.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/LTRIM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/LTRIM.php deleted file mode 100644 index 53b5734..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/LTRIM.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/MGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/MGET.php deleted file mode 100644 index 44aea1d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/MGET.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/MIGRATE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/MIGRATE.php deleted file mode 100644 index 2b930c2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/MIGRATE.php +++ /dev/null @@ -1,59 +0,0 @@ - $value) { - $modifier = strtoupper($modifier); - - if ($modifier === 'COPY' && $value == true) { - $arguments[] = $modifier; - } - - if ($modifier === 'REPLACE' && $value == true) { - $arguments[] = $modifier; - } - } - } - - parent::setArguments($arguments); - } - - public function prefixKeys($prefix) - { - if ($arguments = $this->getArguments()) { - $arguments[2] = "$prefix{$arguments[2]}"; - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/MONITOR.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/MONITOR.php deleted file mode 100644 index cd564a1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/MONITOR.php +++ /dev/null @@ -1,29 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/MSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/MSET.php deleted file mode 100644 index 6b5bcf9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/MSET.php +++ /dev/null @@ -1,54 +0,0 @@ - $v) { - $flattenedKVs[] = $k; - $flattenedKVs[] = $v; - } - - $arguments = $flattenedKVs; - } - - parent::setArguments($arguments); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForInterleavedArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/MSETEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/MSETEX.php deleted file mode 100644 index 8dc73f0..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/MSETEX.php +++ /dev/null @@ -1,80 +0,0 @@ -getArguments(); - $keysCount = $arguments[0]; - $currentKeyIndex = 1; - - while ($keysCount > 0) { - $arguments[$currentKeyIndex] = $prefix . $arguments[$currentKeyIndex]; - $keysCount--; - $currentKeyIndex += 2; - } - - parent::setRawArguments($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/MSETNX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/MSETNX.php deleted file mode 100644 index 6e7a25d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/MSETNX.php +++ /dev/null @@ -1,27 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PEXPIRE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PEXPIRE.php deleted file mode 100644 index 9fc63bf..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PEXPIRE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PEXPIREAT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PEXPIREAT.php deleted file mode 100644 index de2b092..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PEXPIREAT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PEXPIRETIME.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PEXPIRETIME.php deleted file mode 100644 index ba6815d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PEXPIRETIME.php +++ /dev/null @@ -1,29 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PFCOUNT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PFCOUNT.php deleted file mode 100644 index 43aff18..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PFCOUNT.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PFMERGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PFMERGE.php deleted file mode 100644 index cd69900..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PFMERGE.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PING.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PING.php deleted file mode 100644 index 6df7fef..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PING.php +++ /dev/null @@ -1,29 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PSUBSCRIBE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PSUBSCRIBE.php deleted file mode 100644 index fd9311c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PSUBSCRIBE.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PTTL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PTTL.php deleted file mode 100644 index 8e4d332..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PTTL.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PUBLISH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PUBLISH.php deleted file mode 100644 index c14f579..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PUBLISH.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PUBSUB.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PUBSUB.php deleted file mode 100644 index acd9436..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PUBSUB.php +++ /dev/null @@ -1,62 +0,0 @@ -getArgument(0))) { - case 'numsub': - return self::processNumsub($data); - - default: - return $data; - } - } - - /** - * Returns the processed response to PUBSUB NUMSUB. - * - * @param array $channels List of channels - * - * @return array - */ - protected static function processNumsub(array $channels) - { - $processed = []; - $count = count($channels); - - for ($i = 0; $i < $count; ++$i) { - $processed[$channels[$i]] = $channels[++$i]; - } - - return $processed; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/PUNSUBSCRIBE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/PUNSUBSCRIBE.php deleted file mode 100644 index 6454146..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/PUNSUBSCRIBE.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/QUIT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/QUIT.php deleted file mode 100644 index 43b9765..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/QUIT.php +++ /dev/null @@ -1,29 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/RENAMENX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/RENAMENX.php deleted file mode 100644 index 401ee57..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/RENAMENX.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/RESTORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/RESTORE.php deleted file mode 100644 index 5600f45..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/RESTORE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/RPOP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/RPOP.php deleted file mode 100644 index c6a0742..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/RPOP.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/RPOPLPUSH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/RPOPLPUSH.php deleted file mode 100644 index a724bf9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/RPOPLPUSH.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/RPUSH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/RPUSH.php deleted file mode 100644 index 3eb3c28..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/RPUSH.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/RPUSHX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/RPUSHX.php deleted file mode 100644 index ed0533a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/RPUSHX.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SADD.php deleted file mode 100644 index 016725f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SADD.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SAVE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SAVE.php deleted file mode 100644 index 448dda1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SAVE.php +++ /dev/null @@ -1,29 +0,0 @@ -prepareOptions(array_pop($arguments)); - $arguments = array_merge($arguments, $options); - } - - parent::setArguments($arguments); - } - - /** - * Returns a list of options and modifiers compatible with Redis. - * - * @param array $options List of options. - * - * @return array - */ - protected function prepareOptions($options) - { - $options = array_change_key_case($options, CASE_UPPER); - $normalized = []; - - if (!empty($options['MATCH'])) { - $normalized[] = 'MATCH'; - $normalized[] = $options['MATCH']; - } - - if (!empty($options['COUNT'])) { - $normalized[] = 'COUNT'; - $normalized[] = $options['COUNT']; - } - - return $normalized; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SCARD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SCARD.php deleted file mode 100644 index d99899f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SCARD.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SCRIPT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SCRIPT.php deleted file mode 100644 index 51882da..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SCRIPT.php +++ /dev/null @@ -1,29 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SDIFFSTORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SDIFFSTORE.php deleted file mode 100644 index e34b57f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SDIFFSTORE.php +++ /dev/null @@ -1,46 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SELECT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SELECT.php deleted file mode 100644 index 1cde960..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SELECT.php +++ /dev/null @@ -1,29 +0,0 @@ -getArgument(0); - $argument = is_null($argument) ? null : strtolower($argument); - - switch ($argument) { - case 'masters': - case 'slaves': - return self::processMastersOrSlaves($data); - - default: - return $data; - } - } - - /** - * Returns a processed response to SENTINEL MASTERS or SENTINEL SLAVES. - * - * @param array $servers List of Redis servers. - * - * @return array - */ - protected static function processMastersOrSlaves(array $servers) - { - foreach ($servers as $idx => $node) { - $processed = []; - $count = count($node); - - for ($i = 0; $i < $count; ++$i) { - $processed[$node[$i]] = $node[++$i]; - } - - $servers[$idx] = $processed; - } - - return $servers; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SET.php deleted file mode 100644 index 2b252c9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SET.php +++ /dev/null @@ -1,49 +0,0 @@ - $value) { - if ($index < 2) { - continue; - } - - if (false === $value || null === $value) { - unset($arguments[$index]); - } - } - - parent::setArguments($arguments); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SETBIT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SETBIT.php deleted file mode 100644 index 24008e7..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SETBIT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SETEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SETEX.php deleted file mode 100644 index 69a98f2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SETEX.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SETNX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SETNX.php deleted file mode 100644 index 985e7da..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SETNX.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SETRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SETRANGE.php deleted file mode 100644 index 6a53e00..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SETRANGE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SHUTDOWN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SHUTDOWN.php deleted file mode 100644 index 5433ea6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SHUTDOWN.php +++ /dev/null @@ -1,61 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SINTERCARD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SINTERCARD.php deleted file mode 100644 index 961d0cf..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SINTERCARD.php +++ /dev/null @@ -1,43 +0,0 @@ -setLimit($arguments); - $arguments = $this->getArguments(); - - $this->setKeys($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SINTERSTORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SINTERSTORE.php deleted file mode 100644 index 507faf8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SINTERSTORE.php +++ /dev/null @@ -1,46 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SISMEMBER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SISMEMBER.php deleted file mode 100644 index cb303c4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SISMEMBER.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SLAVEOF.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SLAVEOF.php deleted file mode 100644 index cb39bcb..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SLAVEOF.php +++ /dev/null @@ -1,41 +0,0 @@ - $entry) { - $log[$index] = [ - 'id' => $entry[0], - 'timestamp' => $entry[1], - 'duration' => $entry[2], - 'command' => $entry[3], - ]; - } - - return $log; - } - - return $data; - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SMEMBERS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SMEMBERS.php deleted file mode 100644 index a2afa4a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SMEMBERS.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SMISMEMBER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SMISMEMBER.php deleted file mode 100644 index d4dfe5b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SMISMEMBER.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SMOVE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SMOVE.php deleted file mode 100644 index c16c635..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SMOVE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixSkippingLastArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SORT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SORT.php deleted file mode 100644 index c653dbe..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SORT.php +++ /dev/null @@ -1,117 +0,0 @@ -getArguments()) { - $arguments[0] = "$prefix{$arguments[0]}"; - - if (($count = count($arguments)) > 1) { - for ($i = 1; $i < $count; ++$i) { - switch (strtoupper($arguments[$i])) { - case 'BY': - case 'STORE': - $arguments[$i] = "$prefix{$arguments[++$i]}"; - break; - - case 'GET': - $value = $arguments[++$i]; - if ($value !== '#') { - $arguments[$i] = "$prefix$value"; - } - break; - - case 'LIMIT': - $i += 2; - break; - } - } - } - - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SORT_RO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SORT_RO.php deleted file mode 100644 index a9c46d5..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SORT_RO.php +++ /dev/null @@ -1,74 +0,0 @@ -setSorting($arguments); - $arguments = $this->getArguments(); - - $this->setGetArgument($arguments); - $arguments = $this->getArguments(); - - $this->setLimit($arguments); - $arguments = $this->getArguments(); - - $this->setBy($arguments); - $this->filterArguments(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SPOP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SPOP.php deleted file mode 100644 index 324a499..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SPOP.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SPUBLISH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SPUBLISH.php deleted file mode 100644 index 484ba67..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SPUBLISH.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SRANDMEMBER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SRANDMEMBER.php deleted file mode 100644 index 4c1bc41..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SRANDMEMBER.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SREM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SREM.php deleted file mode 100644 index 399a95b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SREM.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SSCAN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SSCAN.php deleted file mode 100644 index 0a7ca41..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SSCAN.php +++ /dev/null @@ -1,72 +0,0 @@ -prepareOptions(array_pop($arguments)); - $arguments = array_merge($arguments, $options); - } - - parent::setArguments($arguments); - } - - /** - * Returns a list of options and modifiers compatible with Redis. - * - * @param array $options List of options. - * - * @return array - */ - protected function prepareOptions($options) - { - $options = array_change_key_case($options, CASE_UPPER); - $normalized = []; - - if (!empty($options['MATCH'])) { - $normalized[] = 'MATCH'; - $normalized[] = $options['MATCH']; - } - - if (!empty($options['COUNT'])) { - $normalized[] = 'COUNT'; - $normalized[] = $options['COUNT']; - } - - return $normalized; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SSUBSCRIBE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SSUBSCRIBE.php deleted file mode 100644 index c13585b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SSUBSCRIBE.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/STRLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/STRLEN.php deleted file mode 100644 index 140cd74..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/STRLEN.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUBSCRIBE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SUBSCRIBE.php deleted file mode 100644 index 2161a76..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUBSCRIBE.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUBSTR.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SUBSTR.php deleted file mode 100644 index a1a2b27..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUBSTR.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUNION.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SUNION.php deleted file mode 100644 index 7c758c1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUNION.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUNIONSTORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SUNIONSTORE.php deleted file mode 100644 index fbfc6a6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUNIONSTORE.php +++ /dev/null @@ -1,46 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUNSUBSCRIBE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/SUNSUBSCRIBE.php deleted file mode 100644 index 2e5dee2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/SUNSUBSCRIBE.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTAGGREGATE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTAGGREGATE.php deleted file mode 100644 index c084e63..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTAGGREGATE.php +++ /dev/null @@ -1,58 +0,0 @@ -toArray())) { - // Default dialect is 2 - $arguments[2]->dialect(2); - } - - $commandArguments = (!empty($arguments[2])) ? $arguments[2]->toArray() : ['DIALECT', 2]; - - parent::setArguments(array_merge( - [$index, $query], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALIASADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALIASADD.php deleted file mode 100644 index 2b7e486..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALIASADD.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALIASDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALIASDEL.php deleted file mode 100644 index 0c60a52..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALIASDEL.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALIASUPDATE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALIASUPDATE.php deleted file mode 100644 index a74a5c0..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALIASUPDATE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALTER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALTER.php deleted file mode 100644 index ec82769..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTALTER.php +++ /dev/null @@ -1,47 +0,0 @@ -toArray() : []; - - $schema = array_reduce($schema, static function (array $carry, FieldInterface $field) { - return array_merge($carry, $field->toArray()); - }, []); - - array_unshift($schema, 'SCHEMA', 'ADD'); - - parent::setArguments(array_merge( - [$index], - $commandArguments, - $schema - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTCONFIG.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTCONFIG.php deleted file mode 100644 index 3c6c031..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTCONFIG.php +++ /dev/null @@ -1,50 +0,0 @@ - $value) { - $group = [$key, $value]; - $result[] = $group; - } - - return $result; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTCREATE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTCREATE.php deleted file mode 100644 index 71416ae..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTCREATE.php +++ /dev/null @@ -1,52 +0,0 @@ -toArray() : []; - - $schema = array_reduce($schema, static function (array $carry, FieldInterface $field) { - return array_merge($carry, $field->toArray()); - }, []); - - array_unshift($schema, 'SCHEMA'); - - parent::setArguments(array_merge( - [$index], - $commandArguments, - $schema - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTCURSOR.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTCURSOR.php deleted file mode 100644 index 40e1d64..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTCURSOR.php +++ /dev/null @@ -1,39 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$subcommand, $index, $cursorId], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDICTADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDICTADD.php deleted file mode 100644 index 7dac542..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDICTADD.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDICTDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDICTDEL.php deleted file mode 100644 index fcb8298..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDICTDEL.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDICTDUMP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDICTDUMP.php deleted file mode 100644 index f74fd69..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDICTDUMP.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDROPINDEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDROPINDEX.php deleted file mode 100644 index 05e28f1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTDROPINDEX.php +++ /dev/null @@ -1,43 +0,0 @@ -toArray(); - } - - parent::setArguments(array_merge( - [$index], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTEXPLAIN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTEXPLAIN.php deleted file mode 100644 index dd6f64a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTEXPLAIN.php +++ /dev/null @@ -1,57 +0,0 @@ -toArray())) { - // Default dialect is 2 - $arguments[2]->dialect(2); - } - - $commandArguments = (!empty($arguments[2])) ? $arguments[2]->toArray() : ['DIALECT', 2]; - - parent::setArguments(array_merge( - [$index, $query], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTHYBRID.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTHYBRID.php deleted file mode 100644 index b751fa4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTHYBRID.php +++ /dev/null @@ -1,53 +0,0 @@ -toArray() - )); - } - - public function parseResponse($data) - { - $response = CommandUtility::arrayToDictionary($data, null, false); - - foreach ($response['results'] as $key => $result) { - $response['results'][$key] = CommandUtility::arrayToDictionary($result); - } - - return $response; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTINFO.php deleted file mode 100644 index 2979a64..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTINFO.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTPROFILE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTPROFILE.php deleted file mode 100644 index f97c0b8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTPROFILE.php +++ /dev/null @@ -1,43 +0,0 @@ -toArray() - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSEARCH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSEARCH.php deleted file mode 100644 index ce32d4a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSEARCH.php +++ /dev/null @@ -1,57 +0,0 @@ -toArray())) { - // Default dialect is 2 - $arguments[2]->dialect(2); - } - - $commandArguments = (!empty($arguments[2])) ? $arguments[2]->toArray() : ['DIALECT', 2]; - - parent::setArguments(array_merge( - [$index, $query], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSPELLCHECK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSPELLCHECK.php deleted file mode 100644 index 9bfea2e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSPELLCHECK.php +++ /dev/null @@ -1,56 +0,0 @@ -toArray())) { - // Default dialect is 2 - $arguments[2]->dialect(2); - } - - $commandArguments = ['DIALECT', 2]; - - if (!empty($arguments[2])) { - $commandArguments = $arguments[2]->toArray(); - } - - parent::setArguments(array_merge( - [$index, $query], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSUGADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSUGADD.php deleted file mode 100644 index 81f89f8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSUGADD.php +++ /dev/null @@ -1,39 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key, $string, $score], - $commandArguments - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSUGDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSUGDEL.php deleted file mode 100644 index 7627ad8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSUGDEL.php +++ /dev/null @@ -1,28 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key, $prefix], - $commandArguments - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSUGLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSUGLEN.php deleted file mode 100644 index 8b0cc1d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSUGLEN.php +++ /dev/null @@ -1,28 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSYNUPDATE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSYNUPDATE.php deleted file mode 100644 index 15e550f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTSYNUPDATE.php +++ /dev/null @@ -1,51 +0,0 @@ -toArray(); - } - - $terms = array_slice($arguments, 3); - - parent::setArguments(array_merge( - [$index, $synonymGroupId], - $commandArguments, - $terms - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTTAGVALS.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTTAGVALS.php deleted file mode 100644 index 05b5348..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FTTAGVALS.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FT_LIST.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FT_LIST.php deleted file mode 100644 index 977b0d3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Search/FT_LIST.php +++ /dev/null @@ -1,26 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTBYRANK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTBYRANK.php deleted file mode 100644 index d5443a7..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTBYRANK.php +++ /dev/null @@ -1,60 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTBYREVRANK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTBYREVRANK.php deleted file mode 100644 index b910c7b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTBYREVRANK.php +++ /dev/null @@ -1,60 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTCDF.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTCDF.php deleted file mode 100644 index 5409fe6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTCDF.php +++ /dev/null @@ -1,62 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTCREATE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTCREATE.php deleted file mode 100644 index fa18216..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTCREATE.php +++ /dev/null @@ -1,45 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTINFO.php deleted file mode 100644 index 7eb2e91..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTINFO.php +++ /dev/null @@ -1,46 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTMAX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTMAX.php deleted file mode 100644 index 39ad739..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTMAX.php +++ /dev/null @@ -1,54 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTMERGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTMERGE.php deleted file mode 100644 index 65358cf..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTMERGE.php +++ /dev/null @@ -1,56 +0,0 @@ -getArguments()) { - $arguments[0] = $prefix . $arguments[0]; - - for ($i = 2, $iMax = (int) $arguments[1] + 2; $i < $iMax; $i++) { - $arguments[$i] = $prefix . $arguments[$i]; - } - - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTMIN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTMIN.php deleted file mode 100644 index d9e4e21..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTMIN.php +++ /dev/null @@ -1,54 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTQUANTILE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTQUANTILE.php deleted file mode 100644 index 99bb33a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTQUANTILE.php +++ /dev/null @@ -1,60 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTRANK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTRANK.php deleted file mode 100644 index 46ad77d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTRANK.php +++ /dev/null @@ -1,35 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTRESET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTRESET.php deleted file mode 100644 index 285d4c6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTRESET.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTREVRANK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTREVRANK.php deleted file mode 100644 index a784288..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTREVRANK.php +++ /dev/null @@ -1,35 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTTRIMMED_MEAN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTTRIMMED_MEAN.php deleted file mode 100644 index 7255e95..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TDigest/TDIGESTTRIMMED_MEAN.php +++ /dev/null @@ -1,55 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TIME.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TIME.php deleted file mode 100644 index 44645e7..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TIME.php +++ /dev/null @@ -1,29 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TYPE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TYPE.php deleted file mode 100644 index d5e0436..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TYPE.php +++ /dev/null @@ -1,59 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSADD.php deleted file mode 100644 index ff112ea..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSADD.php +++ /dev/null @@ -1,44 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key, $timestamp, $value], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSALTER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSALTER.php deleted file mode 100644 index c1bb755..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSALTER.php +++ /dev/null @@ -1,44 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSCREATE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSCREATE.php deleted file mode 100644 index 85d88dd..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSCREATE.php +++ /dev/null @@ -1,44 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSCREATERULE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSCREATERULE.php deleted file mode 100644 index 75b598f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSCREATERULE.php +++ /dev/null @@ -1,50 +0,0 @@ -getArguments()) { - $arguments[0] = $prefix . $arguments[0]; - $arguments[1] = $prefix . $arguments[1]; - - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSDECRBY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSDECRBY.php deleted file mode 100644 index 7803f39..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSDECRBY.php +++ /dev/null @@ -1,46 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key, $value], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSDEL.php deleted file mode 100644 index 3dd744a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSDEL.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSDELETERULE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSDELETERULE.php deleted file mode 100644 index 2fc5716..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSDELETERULE.php +++ /dev/null @@ -1,33 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSGET.php deleted file mode 100644 index 600ccde..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSGET.php +++ /dev/null @@ -1,44 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSINCRBY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSINCRBY.php deleted file mode 100644 index de47dfd..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSINCRBY.php +++ /dev/null @@ -1,46 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key, $value], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSINFO.php deleted file mode 100644 index 197b5ca..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSINFO.php +++ /dev/null @@ -1,44 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMADD.php deleted file mode 100644 index 4303c2a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMADD.php +++ /dev/null @@ -1,39 +0,0 @@ -getArguments()) { - for ($i = 0, $l = count($arguments); $i < $l; $i += 3) { - $arguments[$i] = $prefix . $arguments[$i]; - } - - $this->setArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMGET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMGET.php deleted file mode 100644 index a474106..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMGET.php +++ /dev/null @@ -1,37 +0,0 @@ -toArray(); - - array_push($processedArguments, 'FILTER', ...$arguments); - - parent::setArguments(array_merge( - $commandArguments, - $processedArguments - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMRANGE.php deleted file mode 100644 index 825046d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMRANGE.php +++ /dev/null @@ -1,39 +0,0 @@ -toArray(); - - parent::setArguments(array_merge( - [$fromTimestamp, $toTimestamp], - $commandArguments - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMREVRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMREVRANGE.php deleted file mode 100644 index 568a7f0..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSMREVRANGE.php +++ /dev/null @@ -1,26 +0,0 @@ -toArray() : []; - - parent::setArguments(array_merge( - [$key, $fromTimestamp, $toTimestamp], - $commandArguments - )); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSREVRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSREVRANGE.php deleted file mode 100644 index 303bf56..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TimeSeries/TSREVRANGE.php +++ /dev/null @@ -1,26 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKINCRBY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKINCRBY.php deleted file mode 100644 index f3e98e9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKINCRBY.php +++ /dev/null @@ -1,35 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKINFO.php deleted file mode 100644 index daf21d6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKINFO.php +++ /dev/null @@ -1,46 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKLIST.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKLIST.php deleted file mode 100644 index 513415b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKLIST.php +++ /dev/null @@ -1,82 +0,0 @@ -filterArguments(); - } - - public function parseResponse($data) - { - if ($this->isWithCountModifier()) { - $result = []; - - for ($i = 0, $iMax = count($data); $i < $iMax; ++$i) { - if (array_key_exists($i + 1, $data)) { - $result[(string) $data[$i]] = $data[++$i]; - } - } - - return $result; - } - - return $data; - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } - - /** - * Checks for the presence of the WITHCOUNT modifier. - * - * @return bool - */ - private function isWithCountModifier(): bool - { - $arguments = $this->getArguments(); - $lastArgument = (!empty($arguments)) ? $arguments[count($arguments) - 1] : null; - - return is_string($lastArgument) && strtoupper($lastArgument) === 'WITHCOUNT'; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKQUERY.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKQUERY.php deleted file mode 100644 index 410f253..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKQUERY.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKRESERVE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKRESERVE.php deleted file mode 100644 index 28f018e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/TopK/TOPKRESERVE.php +++ /dev/null @@ -1,52 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/UNLINK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/UNLINK.php deleted file mode 100644 index 337a6cb..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/UNLINK.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/UNSUBSCRIBE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/UNSUBSCRIBE.php deleted file mode 100644 index 8c647a4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/UNSUBSCRIBE.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/UNWATCH.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/UNWATCH.php deleted file mode 100644 index e1710db..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/UNWATCH.php +++ /dev/null @@ -1,29 +0,0 @@ - value - * @param bool $recursive - * @return array - */ - public static function arrayToDictionary(array $array, ?callable $callback = null, bool $recursive = true): array - { - if (count($array) % 2 !== 0) { - throw new UnexpectedValueException('Array must have an even number of arguments'); - } - - $dict = []; - - for ($i = 0; $i < count($array); $i += 2) { - if (is_array($array[$i + 1])) { - if ($recursive) { - $dict[$array[$i]] = self::arrayToDictionary($array[$i + 1], $callback, $recursive); - } else { - $dict[$array[$i]] = $array[$i + 1]; - } - } else { - if ($callback) { - [$key, $value] = $callback($array[$i], $array[$i + 1]); - } else { - $key = $array[$i]; - $value = $array[$i + 1]; - } - - $dict[$key] = $value; - } - } - - return $dict; - } - - /** - * Converts a value into XXH3 hash. - * - * @param $value - * @return string - */ - public static function xxh3Hash($value): string - { - if (!in_array('xxh3', hash_algos(), true)) { - throw new RuntimeException('XXH3 algorithm is not supported. Please install PECL xxhash extension.'); - } - - return hash('xxh3', $value); - } - - /** - * Converts associative array into flatten array (key1, value1...keyN, valueN). - * - * @param array $dict - * @return array - */ - public static function dictionaryToArray(array $dict): array - { - $array = []; - - array_walk($dict, static function ($value, $key) use (&$array) { - array_push($array, $key, $value); - }); - - return $array; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/Utils/VectorUtility.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/Utils/VectorUtility.php deleted file mode 100644 index 63c5800..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/Utils/VectorUtility.php +++ /dev/null @@ -1,40 +0,0 @@ -isRaw = true; - $processedArguments[] = 'RAW'; - } - - parent::setArguments($processedArguments); - } - - /** - * @param $data - * @return array|float[]|string|null - */ - public function parseResponse($data) - { - if (!$this->isRaw) { - return array_map(static function ($value) { return (float) $value; }, $data); - } - - $parsedData = []; - - for ($i = 0; $i < count($data); $i++) { - if ($i > 1) { - $parsedData[] = (float) $data[$i]; - } else { - $parsedData[] = $data[$i]; - } - } - - return $parsedData; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/VGETATTR.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/VGETATTR.php deleted file mode 100644 index 76250e0..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/VGETATTR.php +++ /dev/null @@ -1,70 +0,0 @@ -asJson = $lastArg; - } else { - $arguments[] = $lastArg; - } - - parent::setArguments($arguments); - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResponse($data) - { - if (!$this->asJson && !is_null($data)) { - return json_decode($data, true); - } - - return $data; - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/VINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/VINFO.php deleted file mode 100644 index de087c5..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/VINFO.php +++ /dev/null @@ -1,44 +0,0 @@ -withScores = $lastArg; - $arguments[] = 'WITHSCORES'; - } else { - $arguments[] = $lastArg; - } - - parent::setArguments($arguments); - } - - /** - * @param $data - * @return array|null - */ - public function parseResponse($data): ?array - { - if (!is_null($data)) { - if ($this->withScores) { - foreach ($data as $key => $value) { - if ($value === array_values($value)) { - $data[$key] = CommandUtility::arrayToDictionary($value, static function ($key, $value) { - return [$key, (float) $value]; - }); - } else { - $data[$key] = $value; - } - } - } - } - - return $data; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/VRANDMEMBER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/VRANDMEMBER.php deleted file mode 100644 index 3b148ac..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/VRANDMEMBER.php +++ /dev/null @@ -1,41 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/VREM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/VREM.php deleted file mode 100644 index ad7fc5a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/VREM.php +++ /dev/null @@ -1,35 +0,0 @@ -withScores = true; - $processedArguments[] = 'WITHSCORES'; - } - - if (isset($arguments[4])) { - array_push($processedArguments, 'COUNT', $arguments[4]); - } - - if (isset($arguments[5])) { - array_push($processedArguments, 'EPSILON', $arguments[5]); - } - - if (isset($arguments[6])) { - array_push($processedArguments, 'EF', $arguments[6]); - } - - if (isset($arguments[7])) { - array_push($processedArguments, 'FILTER', $arguments[7]); - } - - if (isset($arguments[8])) { - array_push($processedArguments, 'FILTER-EF', $arguments[8]); - } - - if (isset($arguments[9]) && false !== $arguments[9]) { - $processedArguments[] = 'TRUTH'; - } - - if (isset($arguments[10]) && false !== $arguments[10]) { - $processedArguments[] = 'NOTHREAD'; - } - - parent::setArguments($processedArguments); - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResponse($data) - { - if ($this->withScores) { - if ($data === array_values($data)) { - $data = CommandUtility::arrayToDictionary($data, static function ($key, $value) { - return [$key, (float) $value]; - }); - } - } - - return $data; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/WAITAOF.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/WAITAOF.php deleted file mode 100644 index caad63c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/WAITAOF.php +++ /dev/null @@ -1,29 +0,0 @@ -applyPrefixForAllArguments($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XACK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XACK.php deleted file mode 100644 index 19e27dd..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XACK.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XACKDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XACKDEL.php deleted file mode 100644 index 67d3fac..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XACKDEL.php +++ /dev/null @@ -1,46 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XADD.php deleted file mode 100644 index 8ebaf49..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XADD.php +++ /dev/null @@ -1,84 +0,0 @@ - $val) { - $args[] = $key; - $args[] = $val; - } - } - - parent::setArguments($args); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XAUTOCLAIM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XAUTOCLAIM.php deleted file mode 100644 index d7dc9d3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XAUTOCLAIM.php +++ /dev/null @@ -1,44 +0,0 @@ -= 2 && true === $arguments[1]) { - $processedArguments[] = 'JUSTID'; - } - - parent::setArguments($processedArguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XCFGSET.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XCFGSET.php deleted file mode 100644 index b345a30..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XCFGSET.php +++ /dev/null @@ -1,58 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XCLAIM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XCLAIM.php deleted file mode 100644 index ad7006e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XCLAIM.php +++ /dev/null @@ -1,89 +0,0 @@ -parseResponse($data); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XDEL.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XDEL.php deleted file mode 100644 index bbec916..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XDEL.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XDELEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XDELEX.php deleted file mode 100644 index 834d27e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XDELEX.php +++ /dev/null @@ -1,46 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XGROUP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XGROUP.php deleted file mode 100644 index 74e1aa4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XGROUP.php +++ /dev/null @@ -1,88 +0,0 @@ -setCreateArguments($arguments); - - return; - - case 'SETID': - $this->setSetIdArguments($arguments); - - return; - - default: - parent::setArguments($arguments); - } - } - - /** - * @param array $arguments - * @return void - */ - private function setCreateArguments(array $arguments): void - { - $processedArguments = [$arguments[0], $arguments[1], $arguments[2], $arguments[3]]; - - if (array_key_exists(4, $arguments) && true === $arguments[4]) { - $processedArguments[] = 'MKSTREAM'; - } - - if (array_key_exists(5, $arguments)) { - array_push($processedArguments, 'ENTRIESREAD', $arguments[5]); - } - - parent::setArguments($processedArguments); - } - - /** - * @param array $arguments - * @return void - */ - private function setSetIdArguments(array $arguments): void - { - $processedArguments = [$arguments[0], $arguments[1], $arguments[2], $arguments[3]]; - - if (array_key_exists(4, $arguments)) { - array_push($processedArguments, 'ENTRIESREAD', $arguments[4]); - } - - parent::setArguments($processedArguments); - } - - public function prefixKeys($prefix) - { - $arguments = $this->getArguments(); - $arguments[1] = $prefix . $arguments[1]; - $this->setRawArguments($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XINFO.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XINFO.php deleted file mode 100644 index ad9d468..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XINFO.php +++ /dev/null @@ -1,128 +0,0 @@ -setStreamArguments($arguments); - } else { - parent::setArguments($arguments); - } - } - - /** - * @param array $arguments - * @return void - */ - private function setStreamArguments(array $arguments): void - { - $processedArguments = [$arguments[0], $arguments[1]]; - - if (array_key_exists(2, $arguments) && $arguments[2] instanceof ArrayableArgument) { - $processedArguments = array_merge($processedArguments, $arguments[2]->toArray()); - } - - parent::setArguments($processedArguments); - } - - public function parseResponse($data) - { - if ($this->getArgument(0) === 'STREAM') { - return $this->parseStreamResponse($data); - } - - return $this->parseDict($data); - } - - private function parseStreamResponse($data): array - { - if ($data === array_values($data)) { - $result = CommandUtility::arrayToDictionary($data, null, false); - } else { - $result = $data; // Relay - } - - if (isset($result['entries'])) { - $result['entries'] = $this->parseDict($result['entries']); - } - - if (isset($result['groups']) && is_array($result['groups'])) { - $result['groups'] = array_map(static function ($group) { - if ($group === array_values($group)) { - $group = CommandUtility::arrayToDictionary($group, null, false); - } - if (isset($group['consumers'])) { - $group['consumers'] = array_map(static function ($consumer) { - if ($consumer === array_values($consumer)) { - $consumer = CommandUtility::arrayToDictionary($consumer, null, false); - } - - return $consumer; - }, $group['consumers']); - } - - return $group; - }, $result['groups']); - } - - return $result; - } - - public function parseResp3Response($data) - { - $result = $data; - if (isset($result['entries'])) { - $result['entries'] = $this->parseDict($result['entries']); - } - - return $result; - } - - private function parseDict($data): array - { - if ($data !== array_values($data)) { - return $data; // Relay - } - - $result = []; - - for ($i = 0, $iMax = count($data); $i < $iMax; $i++) { - if (is_array($data[$i])) { - $result[$i] = $this->parseDict($data[$i]); - continue; - } - - if (array_key_exists($i + 1, $data)) { - if (is_array($data[$i + 1])) { - $result[$data[$i]] = $this->parseDict($data[++$i]); - } else { - $result[$data[$i]] = $data[++$i]; - } - } - } - - return $result; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XLEN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XLEN.php deleted file mode 100644 index 1dd7771..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XLEN.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XNACK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XNACK.php deleted file mode 100644 index 6196d29..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XNACK.php +++ /dev/null @@ -1,78 +0,0 @@ - 'SILENT', - self::FAIL => 'FAIL', - self::FATAL => 'FATAL', - ]; - - /** - * {@inheritdoc} - */ - public function getId() - { - return 'XNACK'; - } - - /** - * {@inheritdoc} - */ - public function setArguments(array $arguments) - { - // arguments: [key, group, mode, ids, retryCount?, force?] - if (!in_array(strtoupper($arguments[2]), self::$modeEnum, true)) { - $enumValues = implode(', ', array_keys(self::$modeEnum)); - throw new UnexpectedValueException("Mode argument accepts only: {$enumValues} values"); - } - - $processedArguments = [ - $arguments[0], - $arguments[1], - strtoupper($arguments[2]), - ]; - - array_push($processedArguments, 'IDS', strval(count($arguments[3])), ...$arguments[3]); - - if (isset($arguments[4]) && $arguments[4] !== null) { - array_push($processedArguments, 'RETRYCOUNT', $arguments[4]); - } - - if (!empty($arguments[5])) { - $processedArguments[] = 'FORCE'; - } - - parent::setArguments($processedArguments); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XPENDING.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XPENDING.php deleted file mode 100644 index b3d71d0..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XPENDING.php +++ /dev/null @@ -1,81 +0,0 @@ -getArgument(2) !== null) { - return $data; - } - - [$pending, $minId, $maxId, $consumers] = $data; - if (is_array($consumers)) { - $parsedConsumers = []; - foreach ($consumers as [$consumer, $num]) { - $parsedConsumers[$consumer] = (int) $num; - } - } else { - $parsedConsumers = $consumers; - } - - return [$pending, $minId, $maxId, $parsedConsumers]; - } - - public function parseResp3Response($data): array - { - return $this->parseResponse($data); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XRANGE.php deleted file mode 100644 index 052b904..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XRANGE.php +++ /dev/null @@ -1,72 +0,0 @@ -parseResponse($data); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XREAD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XREAD.php deleted file mode 100644 index 31c301f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XREAD.php +++ /dev/null @@ -1,65 +0,0 @@ -= 3 && null !== $arguments[2]) { - array_push($processedArguments, 'COUNT', $arguments[2]); - } - - if (count($arguments) >= 4 && null !== $arguments[3]) { - array_push($processedArguments, 'BLOCK', $arguments[3]); - } - - if (count($arguments) >= 5 && false !== $arguments[4]) { - $processedArguments[] = 'NOACK'; - } - - $processedArguments[] = 'STREAMS'; - $keyOrIds = array_slice($arguments, 5); - - parent::setArguments(array_merge($processedArguments, $keyOrIds)); - } - - public function parseResponse($data) - { - if (!is_array($data) || $data === array_values($data)) { - return $data; - } - - // Relay - $result = []; - foreach ($data as $key => $value) { - $group = [$key, $value]; - $result[] = $group; - } - - return $result; - } - - public function prefixKeys($prefix) - { - $arguments = $this->getArguments(); - $keyIdsStartingIndex = array_search('STREAMS', $arguments) + 1; - $keysAndIdsCount = count($arguments) - $keyIdsStartingIndex; - $keysCount = $keysAndIdsCount / 2; - - for ($i = $keyIdsStartingIndex; $i < $keyIdsStartingIndex + $keysCount; $i++) { - $arguments[$i] = $prefix . $arguments[$i]; - } - - parent::setRawArguments($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XREADGROUP_CLAIM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XREADGROUP_CLAIM.php deleted file mode 100644 index e08a7b9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XREADGROUP_CLAIM.php +++ /dev/null @@ -1,81 +0,0 @@ -= 4 && null !== $arguments[3]) { - array_push($processedArguments, 'COUNT', $arguments[3]); - } - - if (count($arguments) >= 5 && null !== $arguments[4]) { - array_push($processedArguments, 'BLOCK', $arguments[4]); - } - - if (count($arguments) >= 6 && false !== $arguments[5]) { - $processedArguments[] = 'NOACK'; - } - - if (count($arguments) >= 7 && false !== $arguments[6]) { - array_push($processedArguments, 'CLAIM', $arguments[6]); - } - - array_push($processedArguments, 'STREAMS', ...array_keys($arguments[2]), ...array_values($arguments[2])); - - parent::setArguments($processedArguments); - } - - public function parseResponse($data) - { - if (!is_array($data) || $data === array_values($data)) { - return $data; - } - - // Relay - $result = []; - foreach ($data as $key => $value) { - $group = [$key, $value]; - $result[] = $group; - } - - return $result; - } - - public function prefixKeys($prefix) - { - $arguments = $this->getArguments(); - $keyIdsStartingIndex = array_search('STREAMS', $arguments) + 1; - $keysAndIdsCount = count($arguments) - $keyIdsStartingIndex; - $keysCount = $keysAndIdsCount / 2; - - for ($i = $keyIdsStartingIndex; $i < $keyIdsStartingIndex + $keysCount; $i++) { - $arguments[$i] = $prefix . $arguments[$i]; - } - - parent::setRawArguments($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XREVRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XREVRANGE.php deleted file mode 100644 index afcee6b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XREVRANGE.php +++ /dev/null @@ -1,27 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/XTRIM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/XTRIM.php deleted file mode 100644 index fe3cd9d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/XTRIM.php +++ /dev/null @@ -1,63 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZADD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZADD.php deleted file mode 100644 index 269f95d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZADD.php +++ /dev/null @@ -1,49 +0,0 @@ - $score) { - $arguments[] = $score; - $arguments[] = $member; - } - } - - parent::setArguments($arguments); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZCARD.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZCARD.php deleted file mode 100644 index edbdee6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZCARD.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZCOUNT.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZCOUNT.php deleted file mode 100644 index 02ac8a0..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZCOUNT.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZDIFF.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZDIFF.php deleted file mode 100644 index d763335..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZDIFF.php +++ /dev/null @@ -1,63 +0,0 @@ -setKeys($arguments); - $arguments = $this->getArguments(); - - $this->setWithScore($arguments); - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResp3Response($data) - { - $parsedData = []; - - foreach ($data as $element) { - $parsedData[] = $this->parseResponse($element); - } - - return $parsedData; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZDIFFSTORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZDIFFSTORE.php deleted file mode 100644 index f3661a2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZDIFFSTORE.php +++ /dev/null @@ -1,40 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZINTER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZINTER.php deleted file mode 100644 index 8885d05..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZINTER.php +++ /dev/null @@ -1,35 +0,0 @@ -setLimit($arguments); - $arguments = $this->getArguments(); - - $this->setKeys($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZINTERSTORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZINTERSTORE.php deleted file mode 100644 index a68cd25..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZINTERSTORE.php +++ /dev/null @@ -1,27 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZMPOP.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZMPOP.php deleted file mode 100644 index 329301d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZMPOP.php +++ /dev/null @@ -1,88 +0,0 @@ -setCount($arguments); - $arguments = $this->getArguments(); - - $this->resolveModifier(static::$modifierArgumentPositionOffset, $arguments); - - $this->setKeys($arguments); - $arguments = $this->getArguments(); - - parent::setArguments($arguments); - } - - public function parseResponse($data) - { - $key = array_shift($data); - - if (null === $key) { - return [$key]; - } - - $data = $data[0]; - $parsedData = []; - - for ($i = 0, $iMax = count($data); $i < $iMax; $i++) { - for ($j = 0, $jMax = count($data[$i]); $j < $jMax; ++$j) { - if ($data[$i][$j + 1] ?? false) { - $parsedData[$data[$i][$j]] = $data[$i][++$j]; - } - } - } - - return array_combine([$key], [$parsedData]); - } - - /** - * @param $data - * @return array|array[]|false|mixed|null[]|string|null - */ - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZMSCORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZMSCORE.php deleted file mode 100644 index 79715c5..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZMSCORE.php +++ /dev/null @@ -1,34 +0,0 @@ -parseResponse($element); - } else { - return $this->parseResponse($data); - } - } - - return $parsedData; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZPOPMIN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZPOPMIN.php deleted file mode 100644 index 1e05d56..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZPOPMIN.php +++ /dev/null @@ -1,71 +0,0 @@ -parseResponse($element); - } else { - return $this->parseResponse($data); - } - } - - return $parsedData; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANDMEMBER.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANDMEMBER.php deleted file mode 100644 index 556b424..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANDMEMBER.php +++ /dev/null @@ -1,41 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANGE.php deleted file mode 100644 index bc6b77f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANGE.php +++ /dev/null @@ -1,155 +0,0 @@ - true]; - $lastType = 'array'; - } - - if ($lastType === 'array') { - $options = $this->prepareOptions(array_pop($arguments)); - $arguments = array_merge($arguments, $options); - } - } - - parent::setArguments($arguments); - } - - /** - * Returns a list of options and modifiers compatible with Redis. - * - * @param array $options List of options. - * - * @return array - */ - protected function prepareOptions($options) - { - $opts = array_change_key_case($options, CASE_UPPER); - $finalizedOpts = []; - - if (!empty($opts['BYSCORE']) && !empty($opts['BYLEX'])) { - throw new InvalidArgumentException('BYSCORE and BYLEX are mutually exclusive'); - } - - if (!empty($opts['BYSCORE'])) { - $finalizedOpts[] = 'BYSCORE'; - } - - if (!empty($opts['BYLEX'])) { - $finalizedOpts[] = 'BYLEX'; - } - - if (!empty($opts['REV'])) { - $finalizedOpts[] = 'REV'; - } - - if (!empty($opts['LIMIT']) && is_array($opts['LIMIT'])) { - $finalizedOpts = array_merge($finalizedOpts, ['LIMIT'], $opts['LIMIT']); - } - - if (!empty($opts['WITHSCORES'])) { - $finalizedOpts[] = 'WITHSCORES'; - } - - return $finalizedOpts; - } - - /** - * Checks for the presence of the WITHSCORES modifier. - * - * @return bool - */ - protected function withScores() - { - $arguments = $this->getArguments(); - - if (count($arguments) < 4) { - return false; - } - - // WITHSCORES can be at any position in the arguments array - return in_array('WITHSCORES', $arguments, true); - } - - /** - * {@inheritdoc} - */ - public function parseResponse($data) - { - if ($this->withScores()) { - $result = []; - - for ($i = 0; $i < count($data); ++$i) { - if (is_array($data[$i])) { - $result[$data[$i][0]] = $data[$i][1]; // Relay - } else { - $result[$data[$i]] = $data[++$i]; - } - } - - return $result; - } - - return $data; - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResp3Response($data) - { - if (!is_array($data)) { - return $data; - } - - $parsedData = []; - - foreach ($data as $element) { - $parsedData[] = $this->parseResponse($element); - } - - return $parsedData; - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANGEBYLEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANGEBYLEX.php deleted file mode 100644 index 9717e29..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANGEBYLEX.php +++ /dev/null @@ -1,54 +0,0 @@ -getArguments(); - - for ($i = 3; $i < count($arguments); ++$i) { - switch (strtoupper($arguments[$i])) { - case 'WITHSCORES': - return true; - - case 'LIMIT': - $i += 2; - break; - } - } - - return false; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANGESTORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANGESTORE.php deleted file mode 100644 index 90a2387..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANGESTORE.php +++ /dev/null @@ -1,57 +0,0 @@ -setByLexByScoreArgument($arguments); - $arguments = $this->getArguments(); - - $this->setReversedArgument($arguments); - $arguments = $this->getArguments(); - - $this->setLimitArguments($arguments); - $this->filterArguments(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANK.php deleted file mode 100644 index 191a6fa..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZRANK.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREM.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREM.php deleted file mode 100644 index 3bc7abb..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREM.php +++ /dev/null @@ -1,44 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREMRANGEBYLEX.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREMRANGEBYLEX.php deleted file mode 100644 index 89c574b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREMRANGEBYLEX.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREMRANGEBYRANK.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREMRANGEBYRANK.php deleted file mode 100644 index 0b62b75..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREMRANGEBYRANK.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREMRANGEBYSCORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREMRANGEBYSCORE.php deleted file mode 100644 index 3473dea..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREMRANGEBYSCORE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREVRANGE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREVRANGE.php deleted file mode 100644 index c661d8a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZREVRANGE.php +++ /dev/null @@ -1,27 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZSCAN.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZSCAN.php deleted file mode 100644 index e7989f9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZSCAN.php +++ /dev/null @@ -1,100 +0,0 @@ -prepareOptions(array_pop($arguments)); - $arguments = array_merge($arguments, $options); - } - - parent::setArguments($arguments); - } - - /** - * Returns a list of options and modifiers compatible with Redis. - * - * @param array $options List of options. - * - * @return array - */ - protected function prepareOptions($options) - { - $options = array_change_key_case($options, CASE_UPPER); - $normalized = []; - - if (!empty($options['MATCH'])) { - $normalized[] = 'MATCH'; - $normalized[] = $options['MATCH']; - } - - if (!empty($options['COUNT'])) { - $normalized[] = 'COUNT'; - $normalized[] = $options['COUNT']; - } - - return $normalized; - } - - /** - * {@inheritdoc} - */ - public function parseResponse($data) - { - if (is_array($data)) { - $members = $data[1]; - $result = []; - - for ($i = 0; $i < count($members); ++$i) { - $result[$members[$i]] = (float) $members[++$i]; - } - - $data[1] = $result; - } - - return $data; - } - - /** - * @param $data - * @return array|mixed|string|null - */ - public function parseResp3Response($data) - { - return $this->parseResponse($data); - } - - public function prefixKeys($prefix) - { - $this->applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZSCORE.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZSCORE.php deleted file mode 100644 index 7fa350f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZSCORE.php +++ /dev/null @@ -1,34 +0,0 @@ -applyPrefixForFirstArgument($prefix); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZUNION.php b/v3_ci4/vendor/predis/predis/src/Command/Redis/ZUNION.php deleted file mode 100644 index e929cae..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Redis/ZUNION.php +++ /dev/null @@ -1,35 +0,0 @@ -setAggregate($arguments); - $arguments = $this->getArguments(); - - $this->setWeights($arguments); - $arguments = $this->getArguments(); - - $this->setKeys($arguments); - } - - public function prefixKeys($prefix) - { - if ($arguments = $this->getArguments()) { - $arguments[0] = "$prefix{$arguments[0]}"; - $length = ((int) $arguments[1]) + 2; - - for ($i = 2; $i < $length; ++$i) { - $arguments[$i] = "$prefix{$arguments[$i]}"; - } - - $this->setRawArguments($arguments); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/RedisFactory.php b/v3_ci4/vendor/predis/predis/src/Command/RedisFactory.php deleted file mode 100644 index 2de80a6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/RedisFactory.php +++ /dev/null @@ -1,112 +0,0 @@ -commands = [ - 'ECHO' => 'Predis\Command\Redis\ECHO_', - 'EVAL' => 'Predis\Command\Redis\EVAL_', - 'OBJECT' => 'Predis\Command\Redis\OBJECT_', - // Class name corresponds to PHP reserved word "function", added mapping to bypass restrictions - 'FUNCTION' => FUNCTIONS::class, - ]; - } - - /** - * {@inheritdoc} - */ - public function getCommandClass(string $commandID): ?string - { - $commandID = strtoupper($commandID); - - if (isset($this->commands[$commandID]) || array_key_exists($commandID, $this->commands)) { - return $this->commands[$commandID]; - } - - $commandClass = $this->resolve($commandID); - - if (null === $commandClass) { - return null; - } - - $this->commands[$commandID] = $commandClass; - - return $commandClass; - } - - /** - * {@inheritdoc} - */ - public function undefine(string $commandID): void - { - // NOTE: we explicitly associate `NULL` to the command ID in the map - // instead of the parent's `unset()` because our subclass tries to load - // a predefined class from the Predis\Command\Redis namespace when no - // explicit mapping is defined, see RedisFactory::getCommandClass() for - // details of the implementation of this mechanism. - $this->commands[strtoupper($commandID)] = null; - } - - /** - * Resolves command object from given command ID. - * - * @param string $commandID Command ID of virtual method call - * @return string|null FQDN of corresponding command object - */ - private function resolve(string $commandID): ?string - { - if (class_exists($commandClass = self::COMMANDS_NAMESPACE . '\\' . $commandID)) { - return $commandClass; - } - - $commandModule = $this->resolveCommandModuleByPrefix($commandID); - - if (null === $commandModule) { - return null; - } - - if (class_exists($commandClass = self::COMMANDS_NAMESPACE . '\\' . $commandModule . '\\' . $commandID)) { - return $commandClass; - } - - return null; - } - - private function resolveCommandModuleByPrefix(string $commandID): ?string - { - foreach (ClientConfiguration::getModules() as $module) { - if (preg_match("/^{$module['commandPrefix']}/", $commandID)) { - return $module['name']; - } - } - - return null; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/ScriptCommand.php b/v3_ci4/vendor/predis/predis/src/Command/ScriptCommand.php deleted file mode 100644 index 0523369..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/ScriptCommand.php +++ /dev/null @@ -1,108 +0,0 @@ -getScript()); - } - - /** - * Specifies the number of arguments that should be considered as keys. - * - * The default behaviour for the base class is to return 0 to indicate that - * all the elements of the arguments array should be considered as keys, but - * subclasses can enforce a static number of keys. - * - * @return int - */ - protected function getKeysCount() - { - return 0; - } - - /** - * Returns the elements from the arguments that are identified as keys. - * - * @return array - */ - public function getKeys() - { - return array_slice($this->getArguments(), 2, $this->getKeysCount()); - } - - /** - * {@inheritdoc} - */ - public function setArguments(array $arguments) - { - if (($numkeys = $this->getKeysCount()) && $numkeys < 0) { - $numkeys = count($arguments) + $numkeys; - } - - $arguments = array_merge([$this->getScriptHash(), (int) $numkeys], $arguments); - - parent::setArguments($arguments); - } - - /** - * Returns arguments for EVAL command. - * - * @return array - */ - public function getEvalArguments() - { - $arguments = $this->getArguments(); - $arguments[0] = $this->getScript(); - - return $arguments; - } - - /** - * Returns the equivalent EVAL command as a raw command instance. - * - * @return RawCommand - */ - public function getEvalCommand() - { - return new RawCommand('EVAL', $this->getEvalArguments()); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Aggregate.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Aggregate.php deleted file mode 100644 index 14f77a2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Aggregate.php +++ /dev/null @@ -1,67 +0,0 @@ - 'MIN', - 'max' => 'MAX', - 'sum' => 'SUM', - 'count' => 'COUNT', - ]; - - /** - * @var string - */ - private static $aggregateModifier = 'AGGREGATE'; - - public function setArguments(array $arguments) - { - $argumentsLength = count($arguments); - - if (static::$aggregateArgumentPositionOffset >= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$aggregateArgumentPositionOffset]; - - if (is_string($argument) && in_array(strtoupper($argument), self::$aggregateValuesEnum)) { - $argument = self::$aggregateValuesEnum[$argument]; - } else { - $enumValues = implode(', ', array_keys(self::$aggregateValuesEnum)); - throw new UnexpectedValueException("Aggregate argument accepts only: {$enumValues} values"); - } - - $argumentsBefore = array_slice($arguments, 0, static::$aggregateArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$aggregateArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$aggregateModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/BitByte.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/BitByte.php deleted file mode 100644 index ba28163..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/BitByte.php +++ /dev/null @@ -1,40 +0,0 @@ - 'BIT', - 'byte' => 'BYTE', - ]; - - public function setArguments(array $arguments) - { - $value = array_pop($arguments); - - if (null === $value) { - parent::setArguments($arguments); - - return; - } - - if (in_array(strtoupper($value), self::$argumentEnum, true)) { - $arguments[] = self::$argumentEnum[$value]; - } else { - $arguments[] = $value; - } - - parent::setArguments($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/BucketSize.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/BucketSize.php deleted file mode 100644 index 60c1aa1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/BucketSize.php +++ /dev/null @@ -1,57 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$bucketSizeArgumentPositionOffset] === -1) { - array_splice($arguments, static::$bucketSizeArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$bucketSizeArgumentPositionOffset] < 1) { - throw new UnexpectedValueException('Wrong bucket size argument value or position offset'); - } - - $argument = $arguments[static::$bucketSizeArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$bucketSizeArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$bucketSizeArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$bucketSizeModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Capacity.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Capacity.php deleted file mode 100644 index 5bebf28..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Capacity.php +++ /dev/null @@ -1,57 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$capacityArgumentPositionOffset] === -1) { - array_splice($arguments, static::$capacityArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$capacityArgumentPositionOffset] < 1) { - throw new UnexpectedValueException('Wrong capacity argument value or position offset'); - } - - $argument = $arguments[static::$capacityArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$capacityArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$capacityArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$capacityModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Error.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Error.php deleted file mode 100644 index 76e0da1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Error.php +++ /dev/null @@ -1,57 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$errorArgumentPositionOffset] === -1) { - array_splice($arguments, static::$errorArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$errorArgumentPositionOffset] < 0) { - throw new UnexpectedValueException('Wrong error argument value or position offset'); - } - - $argument = $arguments[static::$errorArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$errorArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$errorArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$errorModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Expansion.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Expansion.php deleted file mode 100644 index 41fb780..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Expansion.php +++ /dev/null @@ -1,53 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$expansionArgumentPositionOffset] === -1) { - array_splice($arguments, static::$expansionArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$expansionArgumentPositionOffset] < 1) { - throw new UnexpectedValueException('Wrong expansion argument value or position offset'); - } - - $argument = $arguments[static::$expansionArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$expansionArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$expansionArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$expansionModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Items.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Items.php deleted file mode 100644 index 7fe24b2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/Items.php +++ /dev/null @@ -1,45 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$itemsArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$itemsArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$itemsArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$itemsModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/MaxIterations.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/MaxIterations.php deleted file mode 100644 index 3bf120d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/MaxIterations.php +++ /dev/null @@ -1,57 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$maxIterationsArgumentPositionOffset] === -1) { - array_splice($arguments, static::$maxIterationsArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$maxIterationsArgumentPositionOffset] < 1) { - throw new UnexpectedValueException('Wrong max iterations argument value or position offset'); - } - - $argument = $arguments[static::$maxIterationsArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$maxIterationsArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$maxIterationsArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$maxIterationsModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/NoCreate.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/NoCreate.php deleted file mode 100644 index 700ad26..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/BloomFilters/NoCreate.php +++ /dev/null @@ -1,49 +0,0 @@ -= $argumentsLength - || false === $arguments[static::$noCreateArgumentPositionOffset] - ) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$noCreateArgumentPositionOffset]; - - if (true === $argument) { - $argument = 'NOCREATE'; - } else { - throw new UnexpectedValueException('Wrong NOCREATE argument type'); - } - - $argumentsBefore = array_slice($arguments, 0, static::$noCreateArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$noCreateArgumentPositionOffset + 1); - - parent::setArguments(array_merge($argumentsBefore, [$argument], $argumentsAfter)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/By/ByArgument.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/By/ByArgument.php deleted file mode 100644 index fe787ed..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/By/ByArgument.php +++ /dev/null @@ -1,40 +0,0 @@ -= $argumentsLength || null === $arguments[static::$byArgumentPositionOffset]) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$byArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$byArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$byArgumentPositionOffset + 1); - - parent::setArguments(array_merge($argumentsBefore, [$this->byModifier, $argument], $argumentsAfter)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/By/ByLexByScore.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/By/ByLexByScore.php deleted file mode 100644 index 2b92e40..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/By/ByLexByScore.php +++ /dev/null @@ -1,49 +0,0 @@ - 'BYLEX', - 'byscore' => 'BYSCORE', - ]; - - public function setArguments(array $arguments) - { - if (count($arguments) <= static::$byLexByScoreArgumentPositionOffset || false === $arguments[static::$byLexByScoreArgumentPositionOffset]) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$byLexByScoreArgumentPositionOffset]; - - if (is_string($argument) && in_array(strtoupper($argument), self::$argumentsEnum)) { - $argument = self::$argumentsEnum[$argument]; - } else { - throw new UnexpectedValueException('By argument accepts only "bylex" and "byscore" values'); - } - - $argumentsBefore = array_slice($arguments, 0, static::$byLexByScoreArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$byLexByScoreArgumentPositionOffset + 1); - - parent::setArguments(array_merge($argumentsBefore, [$argument], $argumentsAfter)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/By/GeoBy.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/By/GeoBy.php deleted file mode 100644 index 29b9417..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/By/GeoBy.php +++ /dev/null @@ -1,49 +0,0 @@ -getByArgumentPositionOffset($arguments); - - if (null === $argumentPositionOffset) { - throw new InvalidArgumentException('Invalid BY argument value given'); - } - - $byArgumentObject = $arguments[$argumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, $argumentPositionOffset); - $argumentsAfter = array_slice($arguments, $argumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - $byArgumentObject->toArray(), - $argumentsAfter - )); - } - - private function getByArgumentPositionOffset(array $arguments): ?int - { - foreach ($arguments as $i => $value) { - if ($value instanceof ByInterface) { - return $i; - } - } - - return null; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Count.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Count.php deleted file mode 100644 index 1c11f34..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Count.php +++ /dev/null @@ -1,71 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$countArgumentPositionOffset] === -1) { - array_splice($arguments, static::$countArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$countArgumentPositionOffset] < 1) { - throw new UnexpectedValueException('Wrong count argument value or position offset'); - } - - $countArgument = $arguments[static::$countArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$countArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$countArgumentPositionOffset + 2); - - if (!$any) { - $argumentsAfter = array_slice($arguments, static::$countArgumentPositionOffset + 1); - parent::setArguments(array_merge( - $argumentsBefore, - [$this->countModifier], - [$countArgument], - $argumentsAfter - )); - - return; - } - - parent::setArguments(array_merge( - $argumentsBefore, - [$this->countModifier], - [$countArgument], - [$this->anyModifier], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/DB.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/DB.php deleted file mode 100644 index 4d297ee..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/DB.php +++ /dev/null @@ -1,53 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if (!is_numeric($arguments[static::$dbArgumentPositionOffset])) { - throw new UnexpectedValueException('DB argument should be a valid numeric value'); - } - - if ($arguments[static::$dbArgumentPositionOffset] < 0) { - array_splice($arguments, static::$dbArgumentPositionOffset, 1); - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$dbArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$dbArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$dbArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [$this->dbModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Expire/ExpireOptions.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Expire/ExpireOptions.php deleted file mode 100644 index 4a42117..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Expire/ExpireOptions.php +++ /dev/null @@ -1,42 +0,0 @@ - 'NX', - 'xx' => 'XX', - 'gt' => 'GT', - 'lt' => 'LT', - ]; - - public function setArguments(array $arguments) - { - $value = array_pop($arguments); - - if (null === $value) { - parent::setArguments($arguments); - - return; - } - - if (in_array(strtoupper($value), self::$argumentEnum, true)) { - $arguments[] = self::$argumentEnum[strtolower($value)]; - } else { - $arguments[] = $value; - } - - parent::setArguments($arguments); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/From/GeoFrom.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/From/GeoFrom.php deleted file mode 100644 index 7d7da6a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/From/GeoFrom.php +++ /dev/null @@ -1,49 +0,0 @@ -getFromArgumentPositionOffset($arguments); - - if (null === $argumentPositionOffset) { - throw new InvalidArgumentException('Invalid FROM argument value given'); - } - - $fromArgumentObject = $arguments[$argumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, $argumentPositionOffset); - $argumentsAfter = array_slice($arguments, $argumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - $fromArgumentObject->toArray(), - $argumentsAfter - )); - } - - private function getFromArgumentPositionOffset(array $arguments): ?int - { - foreach ($arguments as $i => $value) { - if ($value instanceof FromInterface) { - return $i; - } - } - - return null; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Get/Get.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Get/Get.php deleted file mode 100644 index e02e95b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Get/Get.php +++ /dev/null @@ -1,47 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if (!is_array($arguments[static::$getArgumentPositionOffset])) { - throw new UnexpectedValueException('Wrong get argument type'); - } - - $patterns = []; - - foreach ($arguments[static::$getArgumentPositionOffset] as $pattern) { - $patterns[] = self::$getModifier; - $patterns[] = $pattern; - } - - $argumentsBeforeKeys = array_slice($arguments, 0, static::$getArgumentPositionOffset); - $argumentsAfterKeys = array_slice($arguments, static::$getArgumentPositionOffset + 1); - - parent::setArguments(array_merge($argumentsBeforeKeys, $patterns, $argumentsAfterKeys)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/Indent.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/Indent.php deleted file mode 100644 index 9ab1358..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/Indent.php +++ /dev/null @@ -1,54 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$indentArgumentPositionOffset] === '') { - array_splice($arguments, static::$indentArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$indentArgumentPositionOffset]; - - if (!is_string($argument)) { - throw new UnexpectedValueException('Indent argument value should be a string'); - } - - $argumentsBefore = array_slice($arguments, 0, static::$indentArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$indentArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$indentModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/Newline.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/Newline.php deleted file mode 100644 index e33e072..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/Newline.php +++ /dev/null @@ -1,54 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$newlineArgumentPositionOffset] === '') { - array_splice($arguments, static::$newlineArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$newlineArgumentPositionOffset]; - - if (!is_string($argument)) { - throw new UnexpectedValueException('Newline argument value should be a string'); - } - - $argumentsBefore = array_slice($arguments, 0, static::$newlineArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$newlineArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$newlineModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/NxXxArgument.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/NxXxArgument.php deleted file mode 100644 index 0ba3558..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/NxXxArgument.php +++ /dev/null @@ -1,64 +0,0 @@ - 'NX', - 'xx' => 'XX', - ]; - - public function setArguments(array $arguments) - { - $argumentsLength = count($arguments); - - if (static::$nxXxArgumentPositionOffset >= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if (null === $arguments[static::$nxXxArgumentPositionOffset]) { - array_splice($arguments, static::$nxXxArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$nxXxArgumentPositionOffset]; - - if (!in_array(strtoupper($argument), self::$argumentEnum, true)) { - $enumValues = implode(', ', array_keys(self::$argumentEnum)); - throw new UnexpectedValueException("Argument accepts only: {$enumValues} values"); - } - - $argumentsBefore = array_slice($arguments, 0, static::$nxXxArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$nxXxArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$argumentEnum[strtolower($argument)]], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/Space.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/Space.php deleted file mode 100644 index 852ad1c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Json/Space.php +++ /dev/null @@ -1,54 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$spaceArgumentPositionOffset] === '') { - array_splice($arguments, static::$spaceArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$spaceArgumentPositionOffset]; - - if (!is_string($argument)) { - throw new UnexpectedValueException('Space argument value should be a string'); - } - - $argumentsBefore = array_slice($arguments, 0, static::$spaceArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$spaceArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$spaceModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Keys.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Keys.php deleted file mode 100644 index 433304a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Keys.php +++ /dev/null @@ -1,47 +0,0 @@ - $argumentsLength - || !is_array($arguments[static::$keysArgumentPositionOffset]) - ) { - throw new UnexpectedValueException('Wrong keys argument type or position offset'); - } - - $keysArgument = $arguments[static::$keysArgumentPositionOffset]; - $argumentsBeforeKeys = array_slice($arguments, 0, static::$keysArgumentPositionOffset); - $argumentsAfterKeys = array_slice($arguments, static::$keysArgumentPositionOffset + 1); - - if ($withNumkeys) { - $numkeys = count($keysArgument); - parent::setArguments(array_merge($argumentsBeforeKeys, [$numkeys], $keysArgument, $argumentsAfterKeys)); - - return; - } - - parent::setArguments(array_merge($argumentsBeforeKeys, $keysArgument, $argumentsAfterKeys)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/LeftRight.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/LeftRight.php deleted file mode 100644 index cb493d0..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/LeftRight.php +++ /dev/null @@ -1,60 +0,0 @@ - 'LEFT', - 'right' => 'RIGHT', - ]; - - public function setArguments(array $arguments) - { - $argumentsLength = count($arguments); - - if (static::$leftRightArgumentPositionOffset >= $argumentsLength) { - $arguments[] = 'LEFT'; - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$leftRightArgumentPositionOffset]; - - if (is_string($argument) && in_array(strtoupper($argument), self::$leftRightEnum, true)) { - $argument = self::$leftRightEnum[$argument]; - } else { - $enumValues = implode(', ', array_keys(self::$leftRightEnum)); - throw new UnexpectedValueException("Left/Right argument accepts only: {$enumValues} values"); - } - - $argumentsBefore = array_slice($arguments, 0, static::$leftRightArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$leftRightArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Limit/Limit.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Limit/Limit.php deleted file mode 100644 index b5f9fb5..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Limit/Limit.php +++ /dev/null @@ -1,54 +0,0 @@ -= $argumentsLength - || false === $arguments[static::$limitArgumentPositionOffset] - ) { - parent::setArguments($argumentsBefore); - - return; - } - - $argument = $arguments[static::$limitArgumentPositionOffset]; - $argumentsAfter = array_slice($arguments, static::$limitArgumentPositionOffset + 1); - - if (true === $argument) { - parent::setArguments(array_merge($argumentsBefore, [self::$limitModifier], $argumentsAfter)); - - return; - } - - if (!is_int($argument)) { - throw new UnexpectedValueException('Wrong limit argument type'); - } - - parent::setArguments(array_merge($argumentsBefore, [self::$limitModifier], [$argument], $argumentsAfter)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Limit/LimitObject.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Limit/LimitObject.php deleted file mode 100644 index 4adcd5a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Limit/LimitObject.php +++ /dev/null @@ -1,50 +0,0 @@ -getLimitArgumentPositionOffset($arguments); - - if (null === $argumentPositionOffset) { - parent::setArguments($arguments); - - return; - } - - $limitObject = $arguments[$argumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, $argumentPositionOffset); - $argumentsAfter = array_slice($arguments, $argumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - $limitObject->toArray(), - $argumentsAfter - )); - } - - private function getLimitArgumentPositionOffset(array $arguments): ?int - { - foreach ($arguments as $i => $value) { - if ($value instanceof LimitInterface) { - return $i; - } - } - - return null; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/MinMaxModifier.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/MinMaxModifier.php deleted file mode 100644 index 41feebd..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/MinMaxModifier.php +++ /dev/null @@ -1,45 +0,0 @@ - 'MIN', - 'max' => 'MAX', - ]; - - public function resolveModifier(int $offset, array &$arguments): void - { - if ($offset >= count($arguments)) { - $arguments[$offset] = $this->modifierEnum['min']; - - return; - } - - if (!is_string($arguments[$offset]) || !array_key_exists($arguments[$offset], $this->modifierEnum)) { - throw new UnexpectedValueException('Wrong type of modifier given'); - } - - $arguments[$offset] = $this->modifierEnum[$arguments[$offset]]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Replace.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Replace.php deleted file mode 100644 index 7df7fd4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Replace.php +++ /dev/null @@ -1,34 +0,0 @@ - 'ASC', - 'desc' => 'DESC', - ]; - - public function setArguments(array $arguments) - { - $argumentsLength = count($arguments); - - if (static::$sortArgumentPositionOffset >= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$sortArgumentPositionOffset]; - - if (null === $argument) { - array_splice($arguments, static::$sortArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - if (!in_array(strtoupper($argument), self::$sortingEnum, true)) { - $enumValues = implode(', ', array_keys(self::$sortingEnum)); - throw new UnexpectedValueException("Sorting argument accepts only: {$enumValues} values"); - } - - $argumentsBefore = array_slice($arguments, 0, static::$sortArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$sortArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$sortingEnum[$argument]], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Storedist.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Storedist.php deleted file mode 100644 index d75773c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Storedist.php +++ /dev/null @@ -1,49 +0,0 @@ -= $argumentsLength - || false === $arguments[static::$storeDistArgumentPositionOffset] - ) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$storeDistArgumentPositionOffset]; - - if (true === $argument) { - $argument = 'STOREDIST'; - } else { - throw new UnexpectedValueException('Wrong STOREDIST argument type'); - } - - $argumentsBefore = array_slice($arguments, 0, static::$storeDistArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$storeDistArgumentPositionOffset + 1); - - parent::setArguments(array_merge($argumentsBefore, [$argument], $argumentsAfter)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Timeout.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Timeout.php deleted file mode 100644 index 7d1ae90..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Timeout.php +++ /dev/null @@ -1,53 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$timeoutArgumentPositionOffset] === -1) { - array_splice($arguments, static::$timeoutArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - if ($arguments[static::$timeoutArgumentPositionOffset] < 1) { - throw new UnexpectedValueException('Wrong timeout argument value or position offset'); - } - - $argument = $arguments[static::$timeoutArgumentPositionOffset]; - $argumentsBefore = array_slice($arguments, 0, static::$timeoutArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$timeoutArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$timeoutModifier], - [$argument], - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/To/ServerTo.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/To/ServerTo.php deleted file mode 100644 index 82abc2b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/To/ServerTo.php +++ /dev/null @@ -1,48 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - /** @var To|null $toArgument */ - $toArgument = $arguments[static::$toArgumentPositionOffset]; - - if (null === $toArgument) { - array_splice($arguments, static::$toArgumentPositionOffset, 1, [false]); - parent::setArguments($arguments); - - return; - } - - $argumentsBefore = array_slice($arguments, 0, static::$toArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$toArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - $toArgument->toArray(), - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/Weights.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/Weights.php deleted file mode 100644 index d068275..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/Weights.php +++ /dev/null @@ -1,61 +0,0 @@ -= $argumentsLength) { - parent::setArguments($arguments); - - return; - } - - if (!is_array($arguments[static::$weightsArgumentPositionOffset])) { - throw new UnexpectedValueException('Wrong weights argument type'); - } - - $weightsArray = $arguments[static::$weightsArgumentPositionOffset]; - - if (empty($weightsArray)) { - unset($arguments[static::$weightsArgumentPositionOffset]); - parent::setArguments($arguments); - - return; - } - - $argumentsBefore = array_slice($arguments, 0, static::$weightsArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$weightsArgumentPositionOffset + 1); - - parent::setArguments(array_merge( - $argumentsBefore, - [self::$weightsModifier], - $weightsArray, - $argumentsAfter - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithCoord.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithCoord.php deleted file mode 100644 index 16a7f86..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithCoord.php +++ /dev/null @@ -1,49 +0,0 @@ -= $argumentsLength - || false === $arguments[static::$withCoordArgumentPositionOffset] - ) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$withCoordArgumentPositionOffset]; - - if (true === $argument) { - $argument = 'WITHCOORD'; - } else { - throw new UnexpectedValueException('Wrong WITHCOORD argument type'); - } - - $argumentsBefore = array_slice($arguments, 0, static::$withCoordArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$withCoordArgumentPositionOffset + 1); - - parent::setArguments(array_merge($argumentsBefore, [$argument], $argumentsAfter)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithDist.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithDist.php deleted file mode 100644 index 0ca66ae..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithDist.php +++ /dev/null @@ -1,45 +0,0 @@ -= $argumentsLength - || false === $arguments[static::$withDistArgumentPositionOffset] - ) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$withDistArgumentPositionOffset]; - - if (true === $argument) { - $argument = 'WITHDIST'; - } else { - throw new UnexpectedValueException('Wrong WITHDIST argument type'); - } - - $argumentsBefore = array_slice($arguments, 0, static::$withDistArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$withDistArgumentPositionOffset + 1); - - parent::setArguments(array_merge($argumentsBefore, [$argument], $argumentsAfter)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithHash.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithHash.php deleted file mode 100644 index e5e0f39..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithHash.php +++ /dev/null @@ -1,45 +0,0 @@ -= $argumentsLength - || false === $arguments[static::$withHashArgumentPositionOffset] - ) { - parent::setArguments($arguments); - - return; - } - - $argument = $arguments[static::$withHashArgumentPositionOffset]; - - if (true === $argument) { - $argument = 'WITHHASH'; - } else { - throw new UnexpectedValueException('Wrong WITHHASH argument type'); - } - - $argumentsBefore = array_slice($arguments, 0, static::$withHashArgumentPositionOffset); - $argumentsAfter = array_slice($arguments, static::$withHashArgumentPositionOffset + 1); - - parent::setArguments(array_merge($argumentsBefore, [$argument], $argumentsAfter)); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithScores.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithScores.php deleted file mode 100644 index 0184fb8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithScores.php +++ /dev/null @@ -1,68 +0,0 @@ -isWithScoreModifier()) { - $result = []; - - for ($i = 0, $iMax = count($data); $i < $iMax; ++$i) { - if (is_array($data[$i])) { - $result[$data[$i][0]] = $data[$i][1]; // Relay - } elseif (array_key_exists($i + 1, $data)) { - $result[$data[$i]] = $data[++$i]; - } - } - - return $result; - } - - return $data; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithValues.php b/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithValues.php deleted file mode 100644 index 152673c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Command/Traits/With/WithValues.php +++ /dev/null @@ -1,34 +0,0 @@ -connection = $connection; - } - - /** - * Gets the connection that generated the exception. - * - * @return NodeConnectionInterface - */ - public function getConnection() - { - return $this->connection; - } - - /** - * Indicates if the receiver should reset the underlying connection. - * - * @return bool - */ - public function shouldResetConnection() - { - return true; - } - - /** - * Helper method to handle exceptions generated by a connection object. - * - * @param CommunicationException $exception Exception. - * - * @throws CommunicationException - */ - public static function handle(CommunicationException $exception) - { - if ($exception->shouldResetConnection()) { - $connection = $exception->getConnection(); - - if ($connection->isConnected()) { - $connection->disconnect(); - } - } - - throw $exception; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Aggregate.php b/v3_ci4/vendor/predis/predis/src/Configuration/Option/Aggregate.php deleted file mode 100644 index 0178c05..0000000 --- a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Aggregate.php +++ /dev/null @@ -1,113 +0,0 @@ -getConnectionInitializer($options, $value); - } - - /** - * Wraps a user-supplied callable used to create a new aggregate connection. - * - * When the original callable acting as a connection initializer is executed - * by the client to create a new aggregate connection, it will receive the - * following arguments: - * - * - $parameters (same as passed to Predis\Client::__construct()) - * - $options (options container, Predis\Configuration\OptionsInterface) - * - $option (current option, Predis\Configuration\OptionInterface) - * - * The original callable must return a valid aggregation connection instance - * of type Predis\Connection\AggregateConnectionInterface, this is enforced - * by the wrapper returned by this method and an exception is thrown when - * invalid values are returned. - * - * @param OptionsInterface $options Client options - * @param callable $callable Callable initializer - * - * @return callable - * @throws InvalidArgumentException - */ - protected function getConnectionInitializer(OptionsInterface $options, callable $callable) - { - return function ($parameters = null, $autoaggregate = false) use ($callable, $options) { - $connection = call_user_func_array($callable, [&$parameters, $options, $this]); - - if (!$connection instanceof AggregateConnectionInterface) { - throw new InvalidArgumentException(sprintf( - '%s expects the supplied callable to return an instance of %s, but %s was returned', - static::class, - AggregateConnectionInterface::class, - is_object($connection) ? get_class($connection) : gettype($connection) - )); - } - - if ($parameters && $autoaggregate) { - static::aggregate($options, $connection, $parameters); - } - - return $connection; - }; - } - - /** - * Adds single connections to an aggregate connection instance. - * - * @param OptionsInterface $options Client options - * @param AggregateConnectionInterface $connection Target aggregate connection - * @param array $nodes List of nodes to be added to the target aggregate connection - */ - public static function aggregate(OptionsInterface $options, AggregateConnectionInterface $connection, array $nodes) - { - $connections = $options->connections; - - foreach ($nodes as $node) { - $connection->add($node instanceof NodeConnectionInterface ? $node : $connections->create($node)); - } - } - - /** - * {@inheritdoc} - */ - public function getDefault(OptionsInterface $options) - { - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Configuration/Option/CRC16.php b/v3_ci4/vendor/predis/predis/src/Configuration/Option/CRC16.php deleted file mode 100644 index e083401..0000000 --- a/v3_ci4/vendor/predis/predis/src/Configuration/Option/CRC16.php +++ /dev/null @@ -1,68 +0,0 @@ -getHashGeneratorByDescription($options, $value); - } elseif ($value instanceof Hash\HashGeneratorInterface) { - return $value; - } - $class = get_class($this); - throw new InvalidArgumentException("$class expects a valid hash generator"); - } - - /** - * {@inheritdoc} - */ - public function getDefault(OptionsInterface $options) - { - return new Hash\CRC16(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Cluster.php b/v3_ci4/vendor/predis/predis/src/Configuration/Option/Cluster.php deleted file mode 100644 index 87a0ced..0000000 --- a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Cluster.php +++ /dev/null @@ -1,108 +0,0 @@ -getConnectionInitializerByString($options, $value); - } - - if (is_callable($value)) { - return $this->getConnectionInitializer($options, $value); - } - throw new InvalidArgumentException(sprintf( - '%s expects either a string or a callable value, %s given', - static::class, - is_object($value) ? get_class($value) : gettype($value) - )); - } - - /** - * Returns a connection initializer from a descriptive name. - * - * @param OptionsInterface $options Client options - * @param string $description Identifier of a replication backend (`predis`, `sentinel`) - * - * @return callable - */ - protected function getConnectionInitializerByString(OptionsInterface $options, string $description) - { - switch ($description) { - case 'redis': - case 'redis-cluster': - return static function ($parameters, $options, $option) { - $optionParameters = $options->parameters ?? []; - - return new RedisCluster( - $options->connections, - new Parameters($optionParameters), - new RedisStrategy($options->crc16), - $options->readTimeout - ); - }; - - case 'predis': - return $this->getDefaultConnectionInitializer(); - - default: - throw new InvalidArgumentException(sprintf( - '%s expects either `predis`, `redis` or `redis-cluster` as valid string values, `%s` given', - static::class, - $description - )); - } - } - - /** - * Returns the default connection initializer. - * - * @return callable - */ - protected function getDefaultConnectionInitializer() - { - return static function ($parameters, $options, $option) { - $optionsParameters = $options->parameters ?? []; - - return new PredisCluster(new Parameters($optionsParameters)); - }; - } - - /** - * {@inheritdoc} - */ - public function getDefault(OptionsInterface $options) - { - return $this->getConnectionInitializer( - $options, - $this->getDefaultConnectionInitializer() - ); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Commands.php b/v3_ci4/vendor/predis/predis/src/Configuration/Option/Commands.php deleted file mode 100644 index 0c33900..0000000 --- a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Commands.php +++ /dev/null @@ -1,145 +0,0 @@ -createFactoryByArray($options, $value); - } elseif (is_string($value)) { - return $this->createFactoryByString($options, $value); - } - throw new InvalidArgumentException(sprintf( - '%s expects a valid command factory', - static::class - )); - } - - /** - * Creates a new default command factory from a named array. - * - * The factory instance is configured according to the supplied named array - * mapping command IDs (passed as keys) to the FCQN of classes implementing - * Predis\Command\CommandInterface. - * - * @param OptionsInterface $options Client options container - * @param array $value Named array mapping command IDs to classes - * - * @return FactoryInterface - */ - protected function createFactoryByArray(OptionsInterface $options, array $value) - { - /** - * @var FactoryInterface - */ - $commands = $this->getDefault($options); - - foreach ($value as $commandID => $commandClass) { - if ($commandClass === null) { - $commands->undefine($commandID); - } else { - $commands->define($commandID, $commandClass); - } - } - - return $commands; - } - - /** - * Creates a new command factory from a descriptive string. - * - * The factory instance is configured according to the supplied descriptive - * string that identifies specific configurations of schemes and connection - * classes. Supported configuration values are: - * - * - "predis" returns the default command factory used by Predis - * - "raw" returns a command factory that creates only raw commands - * - "default" is simply an alias of "predis" - * - * @param OptionsInterface $options Client options container - * @param string $value Descriptive string identifying the desired configuration - * - * @return FactoryInterface - */ - protected function createFactoryByString(OptionsInterface $options, string $value) - { - switch (strtolower($value)) { - case 'default': - case 'predis': - return $this->getDefault($options); - - case 'raw': - return $this->createRawFactory($options); - - default: - throw new InvalidArgumentException(sprintf( - '%s does not recognize `%s` as a supported configuration string', - static::class, - $value - )); - } - } - - /** - * Creates a new raw command factory instance. - * - * @param OptionsInterface $options Client options container - */ - protected function createRawFactory(OptionsInterface $options): FactoryInterface - { - $commands = new RawFactory(); - - if (isset($options->prefix)) { - throw new InvalidArgumentException(sprintf( - '%s does not support key prefixing', RawFactory::class - )); - } - - return $commands; - } - - /** - * {@inheritdoc} - */ - public function getDefault(OptionsInterface $options) - { - $commands = new RedisFactory(); - - if (isset($options->prefix)) { - $commands->setProcessor($options->prefix); - } - - return $commands; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Connections.php b/v3_ci4/vendor/predis/predis/src/Configuration/Option/Connections.php deleted file mode 100644 index 4586f87..0000000 --- a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Connections.php +++ /dev/null @@ -1,149 +0,0 @@ -createFactoryByArray($options, $value); - } elseif (is_string($value)) { - return $this->createFactoryByString($options, $value); - } - throw new InvalidArgumentException(sprintf( - '%s expects a valid connection factory', static::class - )); - } - - /** - * Creates a new connection factory from a named array. - * - * The factory instance is configured according to the supplied named array - * mapping URI schemes (passed as keys) to the FCQN of classes implementing - * Predis\Connection\NodeConnectionInterface, or callable objects acting as - * lazy initializers and returning new instances of classes implementing - * Predis\Connection\NodeConnectionInterface. - * - * @param OptionsInterface $options Client options - * @param array $value Named array mapping URI schemes to classes or callables - * - * @return FactoryInterface - */ - protected function createFactoryByArray(OptionsInterface $options, array $value) - { - /** - * @var FactoryInterface - */ - $factory = $this->getDefault($options); - - foreach ($value as $scheme => $initializer) { - $factory->define($scheme, $initializer); - } - - return $factory; - } - - /** - * Creates a new connection factory from a descriptive string. - * - * The factory instance is configured according to the supplied descriptive - * string that identifies specific configurations of schemes and connection - * classes. Supported configuration values are: - * - * - "relay" maps tcp, redis, unix, tls, rediss to RelayConnection - * - * @param OptionsInterface $options Client options - * @param string $value Descriptive string identifying the desired configuration - * - * @return FactoryInterface - */ - protected function createFactoryByString(OptionsInterface $options, string $value) - { - switch (strtolower($value)) { - case 'relay': - return $this->getRelayFactory($options); - - case 'default': - return $this->getDefault($options); - - default: - throw new InvalidArgumentException(sprintf( - '%s does not recognize `%s` as a supported configuration string', static::class, $value - )); - } - } - - /** - * {@inheritdoc} - */ - public function getDefault(OptionsInterface $options) - { - $factory = new Factory(); - - if ($options->defined('parameters')) { - $factory->setDefaultParameters($options->parameters); - } - - if ($options->defined('upstream_driver')) { - $factory->setUpstreamDriver($options->upstream_driver); - } - - return $factory; - } - - /** - * Creates RelayFactory instance. - * - * @param OptionsInterface $options - * @return FactoryInterface - */ - private function getRelayFactory(OptionsInterface $options): FactoryInterface - { - $factory = new RelayFactory(); - - if ($options->defined('parameters')) { - $factory->setDefaultParameters($options->parameters); - } - - if ($options->defined('upstream_driver')) { - $factory->setUpstreamDriver($options->upstream_driver); - } - - return $factory; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Exceptions.php b/v3_ci4/vendor/predis/predis/src/Configuration/Option/Exceptions.php deleted file mode 100644 index 951a711..0000000 --- a/v3_ci4/vendor/predis/predis/src/Configuration/Option/Exceptions.php +++ /dev/null @@ -1,39 +0,0 @@ -getConnectionInitializerByString($options, $value); - } - - if (is_callable($value)) { - return $this->getConnectionInitializer($options, $value); - } - throw new InvalidArgumentException(sprintf( - '%s expects either a string or a callable value, %s given', - static::class, - is_object($value) ? get_class($value) : gettype($value) - )); - } - - /** - * Returns a connection initializer (callable) from a descriptive string. - * - * Each connection initializer is specialized for the specified replication - * backend so that all the necessary steps for the configuration of the new - * aggregate connection are performed inside the initializer and the client - * receives a ready-to-use connection. - * - * Supported configuration values are: - * - * - `predis` for unmanaged replication setups - * - `redis-sentinel` for replication setups managed by redis-sentinel - * - `sentinel` is an alias of `redis-sentinel` - * - * @param OptionsInterface $options Client options - * @param string $description Identifier of a replication backend - * - * @return callable - */ - protected function getConnectionInitializerByString(OptionsInterface $options, string $description) - { - switch ($description) { - case 'sentinel': - case 'redis-sentinel': - return static function ($parameters, $options) { - return new SentinelReplication($options->service, $parameters, $options->connections); - }; - - case 'predis': - return $this->getDefaultConnectionInitializer(); - - default: - throw new InvalidArgumentException(sprintf( - '%s expects either `predis`, `sentinel` or `redis-sentinel` as valid string values, `%s` given', - static::class, - $description - )); - } - } - - /** - * Returns the default connection initializer. - * - * @return callable - */ - protected function getDefaultConnectionInitializer() - { - return static function ($parameters, $options) { - $connection = new MasterSlaveReplication(); - - if ($options->autodiscovery) { - $connection->setConnectionFactory($options->connections); - $connection->setAutoDiscovery(true); - } - - return $connection; - }; - } - - /** - * {@inheritdoc} - */ - public static function aggregate(OptionsInterface $options, AggregateConnectionInterface $connection, array $nodes) - { - if (!$connection instanceof SentinelReplication) { - parent::aggregate($options, $connection, $nodes); - } - } - - /** - * {@inheritdoc} - */ - public function getDefault(OptionsInterface $options) - { - return $this->getConnectionInitializer( - $options, - $this->getDefaultConnectionInitializer() - ); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Configuration/Option/UpstreamDriver.php b/v3_ci4/vendor/predis/predis/src/Configuration/Option/UpstreamDriver.php deleted file mode 100644 index 4c162c6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Configuration/Option/UpstreamDriver.php +++ /dev/null @@ -1,53 +0,0 @@ - Option\Aggregate::class, - 'cluster' => Option\Cluster::class, - 'replication' => Option\Replication::class, - 'connections' => Option\Connections::class, - 'commands' => Option\Commands::class, - 'exceptions' => Option\Exceptions::class, - 'prefix' => Option\Prefix::class, - 'crc16' => Option\CRC16::class, - 'upstream_driver' => Option\UpstreamDriver::class, - ]; - - /** @var array */ - protected $options = []; - - /** @var array */ - protected $input; - - /** - * @param array|null $options Named array of client options - */ - public function __construct(?array $options = null) - { - $this->input = $options ?? []; - } - - /** - * {@inheritdoc} - */ - public function getDefault($option) - { - if (isset($this->handlers[$option])) { - $handler = $this->handlers[$option]; - $handler = new $handler(); - - return $handler->getDefault($this); - } - } - - /** - * {@inheritdoc} - */ - public function defined($option) - { - return - array_key_exists($option, $this->options) - || array_key_exists($option, $this->input) - ; - } - - /** - * {@inheritdoc} - */ - public function __isset($option) - { - return ( - array_key_exists($option, $this->options) - || array_key_exists($option, $this->input) - ) && $this->__get($option) !== null; - } - - /** - * {@inheritdoc} - */ - public function __get($option) - { - if (isset($this->options[$option]) || array_key_exists($option, $this->options)) { - return $this->options[$option]; - } - - if (isset($this->input[$option]) || array_key_exists($option, $this->input)) { - $value = $this->input[$option]; - unset($this->input[$option]); - - if (isset($this->handlers[$option])) { - $handler = $this->handlers[$option]; - $handler = new $handler(); - $value = $handler->filter($this, $value); - } elseif (is_object($value) && method_exists($value, '__invoke')) { - $value = $value($this); - } - - return $this->options[$option] = $value; - } - - if (isset($this->handlers[$option])) { - return $this->options[$option] = $this->getDefault($option); - } - } - - /** - * {@inheritDoc} - */ - public function __set($option, $value) - { - $this->options[$option] = $value; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Configuration/OptionsInterface.php b/v3_ci4/vendor/predis/predis/src/Configuration/OptionsInterface.php deleted file mode 100644 index 20b9a06..0000000 --- a/v3_ci4/vendor/predis/predis/src/Configuration/OptionsInterface.php +++ /dev/null @@ -1,78 +0,0 @@ -getConnectionByCommand($commandObj)->write($command); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/AbstractConnection.php b/v3_ci4/vendor/predis/predis/src/Connection/AbstractConnection.php deleted file mode 100644 index b61c425..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/AbstractConnection.php +++ /dev/null @@ -1,263 +0,0 @@ -parameters = $parameters; - $this->setParserStrategy(); - } - - /** - * Disconnects from the server and destroys the underlying resource when - * PHP's garbage collector kicks in. - */ - public function __destruct() - { - $this->disconnect(); - } - - /** - * {@inheritdoc} - */ - public function isConnected() - { - return isset($this->resource); - } - - /** - * {@inheritdoc} - */ - public function hasDataToRead(): bool - { - return true; - } - - /** - * Creates a stream resource to communicate with Redis. - * - * @return mixed - * @throws StreamInitException - */ - abstract protected function createResource(); - - /** - * {@inheritdoc} - */ - public function connect() - { - if (!$this->isConnected()) { - $this->resource = $this->createResource(); - - return true; - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function disconnect() - { - unset($this->resource); - } - - /** - * {@inheritdoc} - */ - public function addConnectCommand(CommandInterface $command) - { - $this->initCommands[] = $command; - } - - /** - * {@inheritdoc} - */ - public function getInitCommands(): array - { - return $this->initCommands; - } - - /** - * {@inheritdoc} - */ - public function executeCommand(CommandInterface $command) - { - $this->writeRequest($command); - - return $this->readResponse($command); - } - - /** - * {@inheritdoc} - */ - public function readResponse(CommandInterface $command) - { - return $this->read(); - } - - /** - * Helper method to handle connection errors. - * - * @param string $message Error message. - * @param int $code Error code. - * @throws CommunicationException - */ - protected function onConnectionError($message, $code = 0): void - { - CommunicationException::handle( - new ConnectionException($this, "$message [{$this->getParameters()}]", $code) - ); - } - - /** - * Helper method to handle timeout errors. - * - * @param int $code - * @return void - * @throws CommunicationException - */ - protected function onTimeoutError(int $code = 0): void - { - CommunicationException::handle( - new TimeoutException($this, $code) - ); - } - - /** - * Helper method to handle protocol errors. - * - * @param string $message Error message. - * @throws CommunicationException - */ - protected function onProtocolError($message) - { - CommunicationException::handle( - new ProtocolException($this, "$message [{$this->getParameters()}]") - ); - } - - /** - * {@inheritdoc} - */ - public function getResource() - { - if (isset($this->resource)) { - return $this->resource; - } - - $this->connect(); - - return $this->resource; - } - - /** - * {@inheritdoc} - */ - public function getParameters() - { - return $this->parameters; - } - - /** - * Gets an identifier for the connection. - * - * @return string - */ - protected function getIdentifier() - { - if ($this->parameters->scheme === 'unix') { - return $this->parameters->path; - } - - return "{$this->parameters->host}:{$this->parameters->port}"; - } - - /** - * {@inheritDoc} - */ - public function getClientId(): ?int - { - return $this->clientId; - } - - /** - * {@inheritdoc} - */ - public function __toString() - { - if (!isset($this->cachedId)) { - $this->cachedId = $this->getIdentifier(); - } - - return $this->cachedId; - } - - /** - * {@inheritdoc} - */ - public function __sleep() - { - return ['parameters', 'initCommands']; - } - - /** - * Set parser strategy for given connection. - * - * @return void - */ - protected function setParserStrategy(): void - { - $strategyResolver = new ParserStrategyResolver(); - $this->parserStrategy = $strategyResolver->resolve((int) $this->parameters->protocol); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/AggregateConnectionInterface.php b/v3_ci4/vendor/predis/predis/src/Connection/AggregateConnectionInterface.php deleted file mode 100644 index 34e7014..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/AggregateConnectionInterface.php +++ /dev/null @@ -1,56 +0,0 @@ -connectionParameters = $parameters; - $this->strategy = $strategy ?: new PredisStrategy(); - $this->distributor = $this->strategy->getDistributor(); - } - - /** - * {@inheritdoc} - */ - public function isConnected() - { - foreach ($this->pool as $connection) { - if ($connection->isConnected()) { - return true; - } - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function connect() - { - foreach ($this->pool as $connection) { - $connection->connect(); - } - } - - /** - * Returns a random connection from the pool. - * - * @return NodeConnectionInterface|null - */ - protected function getRandomConnection() - { - if (!$this->pool) { - return null; - } - - return $this->pool[array_rand($this->pool)]; - } - - /** - * {@inheritdoc} - */ - public function disconnect() - { - foreach ($this->pool as $connection) { - $connection->disconnect(); - } - } - - /** - * {@inheritdoc} - */ - public function add(NodeConnectionInterface $connection) - { - $parameters = $connection->getParameters(); - - $this->pool[(string) $connection] = $connection; - - if (isset($parameters->alias)) { - $this->aliases[$parameters->alias] = $connection; - } - - $this->distributor->add($connection, $parameters->weight); - } - - /** - * {@inheritdoc} - */ - public function remove(NodeConnectionInterface $connection) - { - if (false !== $id = array_search($connection, $this->pool, true)) { - unset($this->pool[$id]); - $this->distributor->remove($connection); - - if ($this->aliases && $alias = $connection->getParameters()->alias) { - unset($this->aliases[$alias]); - } - - return true; - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function getConnectionByCommand(CommandInterface $command) - { - $slot = $this->strategy->getSlot($command); - - if (!isset($slot)) { - throw new NotSupportedException( - "Cannot use '{$command->getId()}' over clusters of connections." - ); - } - - return $this->distributor->getBySlot($slot); - } - - /** - * {@inheritdoc} - */ - public function getConnectionById($id) - { - return $this->pool[$id] ?? null; - } - - /** - * Returns a connection instance by its alias. - * - * @param string $alias Connection alias. - * - * @return NodeConnectionInterface|null - */ - public function getConnectionByAlias($alias) - { - return $this->aliases[$alias] ?? null; - } - - /** - * Retrieves a connection instance by slot. - * - * @param string $slot Slot name. - * - * @return NodeConnectionInterface|null - */ - public function getConnectionBySlot($slot) - { - return $this->distributor->getBySlot($slot); - } - - /** - * Retrieves a connection instance from the cluster using a key. - * - * @param string $key Key string. - * - * @return NodeConnectionInterface - */ - public function getConnectionByKey($key) - { - $hash = $this->strategy->getSlotByKey($key); - - return $this->distributor->getBySlot($hash); - } - - /** - * {@inheritDoc} - */ - public function getClusterStrategy(): StrategyInterface - { - return $this->strategy; - } - - /** - * @return int - */ - #[ReturnTypeWillChange] - public function count() - { - return count($this->pool); - } - - /** - * @return Traversable - */ - #[ReturnTypeWillChange] - public function getIterator() - { - return new ArrayIterator($this->pool); - } - - /** - * {@inheritdoc} - */ - public function writeRequest(CommandInterface $command) - { - $this->getConnectionByCommand($command)->writeRequest($command); - } - - /** - * {@inheritdoc} - */ - public function readResponse(CommandInterface $command) - { - return $this->getConnectionByCommand($command)->readResponse($command); - } - - /** - * {@inheritdoc} - */ - public function executeCommand(CommandInterface $command) - { - return $this->getConnectionByCommand($command)->executeCommand($command); - } - - /** - * {@inheritdoc} - */ - public function getParameters(): ParametersInterface - { - return $this->connectionParameters; - } - - /** - * {@inheritdoc} - */ - public function executeCommandOnEachNode(CommandInterface $command): array - { - $responses = []; - - foreach ($this->pool as $connection) { - $responses[] = $connection->executeCommand($command); - } - - return $responses; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/Cluster/RedisCluster.php b/v3_ci4/vendor/predis/predis/src/Connection/Cluster/RedisCluster.php deleted file mode 100644 index b65140f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/Cluster/RedisCluster.php +++ /dev/null @@ -1,791 +0,0 @@ -= 3.0.0). - * - * This connection backend offers smart support for redis-cluster by handling - * automatic slots map (re)generation upon -MOVED or -ASK responses returned by - * Redis when redirecting a client to a different node. - * - * The cluster can be pre-initialized using only a subset of the actual nodes in - * the cluster, Predis will do the rest by adjusting the slots map and creating - * the missing underlying connection instances on the fly. - * - * It is possible to pre-associate connections to a slots range with the "slots" - * parameter in the form "$first-$last". This can greatly reduce runtime node - * guessing and redirections. - * - * It is also possible to ask for the full and updated slots map directly to one - * of the nodes and optionally enable such a behaviour upon -MOVED redirections. - * Asking for the cluster configuration to Redis is actually done by issuing a - * CLUSTER SLOTS command to a random node in the pool. - */ -class RedisCluster extends AbstractAggregateConnection implements ClusterInterface, IteratorAggregate, Countable -{ - public $useClusterSlots = true; - - /** - * @var NodeConnectionInterface[] - */ - private $pool = []; - private $slots = []; - private $slotmap; - private $strategy; - private $connections; - private $retryLimit = 5; - private $retryInterval = 10; - - /** - * @var int - */ - private $readTimeout = 1000; - - /** - * @var ParametersInterface - */ - private $connectionParameters; - - /** - * @param FactoryInterface $connections Optional connection factory. - * @param StrategyInterface|null $strategy Optional cluster strategy. - * @param int|null $readTimeout Optional read timeout - */ - public function __construct( - FactoryInterface $connections, - ParametersInterface $parameters, - ?StrategyInterface $strategy = null, - ?int $readTimeout = null - ) { - $this->connections = $connections; - $this->connectionParameters = $parameters; - $this->strategy = $strategy ?: new RedisClusterStrategy(); - $this->slotmap = new SlotMap(); - - if (!is_null($readTimeout)) { - $this->readTimeout = $readTimeout; - } - } - - /** - * Sets the maximum number of retries for commands upon server failure. - * - * -1 = unlimited retry attempts - * 0 = no retry attempts (fails immediately) - * n = fail only after n retry attempts - * - * @param int $retry Number of retry attempts. - */ - public function setRetryLimit($retry) - { - $this->retryLimit = (int) $retry; - } - - /** - * Sets the initial retry interval (milliseconds). - * - * @param int $retryInterval Milliseconds between retries. - */ - public function setRetryInterval($retryInterval) - { - $this->retryInterval = (int) $retryInterval; - } - - /** - * Returns the retry interval (milliseconds). - * - * @return int Milliseconds between retries. - */ - public function getRetryInterval() - { - return (int) $this->retryInterval; - } - - /** - * {@inheritdoc} - */ - public function isConnected() - { - foreach ($this->pool as $connection) { - if ($connection->isConnected()) { - return true; - } - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function connect() - { - foreach ($this->pool as $connection) { - $connection->connect(); - } - } - - /** - * {@inheritdoc} - */ - public function disconnect() - { - foreach ($this->pool as $connection) { - $connection->disconnect(); - } - } - - /** - * {@inheritdoc} - */ - public function add(NodeConnectionInterface $connection) - { - $this->pool[(string) $connection] = $connection; - $this->slotmap->reset(); - } - - /** - * {@inheritdoc} - */ - public function remove(NodeConnectionInterface $connection) - { - if (false !== $id = array_search($connection, $this->pool, true)) { - $this->slotmap->reset(); - $this->slots = array_diff($this->slots, [$connection]); - unset($this->pool[$id]); - - return true; - } - - return false; - } - - /** - * Removes a connection instance by using its identifier. - * - * @param string $connectionID Connection identifier. - * - * @return bool True if the connection was in the pool. - */ - public function removeById($connectionID) - { - if (isset($this->pool[$connectionID])) { - $this->slotmap->reset(); - $this->slots = array_diff($this->slots, [$connectionID]); - unset($this->pool[$connectionID]); - - return true; - } - - return false; - } - - /** - * Generates the current slots map by guessing the cluster configuration out - * of the connection parameters of the connections in the pool. - * - * Generation is based on the same algorithm used by Redis to generate the - * cluster, so it is most effective when all of the connections supplied on - * initialization have the "slots" parameter properly set accordingly to the - * current cluster configuration. - */ - public function buildSlotMap() - { - $this->slotmap->reset(); - - foreach ($this->pool as $connectionID => $connection) { - $parameters = $connection->getParameters(); - - if (!isset($parameters->slots)) { - continue; - } - - foreach (explode(',', $parameters->slots) as $slotRange) { - $slots = explode('-', $slotRange, 2); - - if (!isset($slots[1])) { - $slots[1] = $slots[0]; - } - - $this->slotmap->setSlots($slots[0], $slots[1], $connectionID); - } - } - } - - /** - * Queries the specified node of the cluster to fetch the updated slots map. - * - * When the connection fails, this method tries to execute the same command - * on a different connection picked at random from the pool of known nodes, - * up until the retry limit is reached. - * - * @param NodeConnectionInterface $connection Connection to a node of the cluster. - * - * @return mixed - */ - private function queryClusterNodeForSlotMap(NodeConnectionInterface $connection) - { - // Backward-compatible hardcoded retry - $retry = new Retry( - new ExponentialBackoff($this->retryInterval * 1000, -1), - $this->retryLimit, - [ConnectionException::class] - ); - - $command = RawCommand::create('CLUSTER', 'SLOTS'); - - $doCallback = static function () use (&$connection, $command) { - return $connection->executeCommand($command); - }; - - $failCallback = function (ConnectionException $exception) use (&$connection) { - $connection = $exception->getConnection(); - $connection->disconnect(); - - $this->remove($connection); - - if (!$connection = $this->getRandomConnection()) { - throw new ClientException('No connections left in the pool for `CLUSTER SLOTS`'); - } - }; - - return $retry->callWithRetry($doCallback, $failCallback); - } - - /** - * Generates an updated slots map fetching the cluster configuration using - * the CLUSTER SLOTS command against the specified node or a random one from - * the pool. - * - * @param NodeConnectionInterface|null $connection Optional connection instance. - */ - public function askSlotMap(?NodeConnectionInterface $connection = null) - { - if (!$connection && !$connection = $this->getRandomConnection()) { - return; - } - - $this->slotmap->reset(); - - $response = $this->queryClusterNodeForSlotMap($connection); - - foreach ($response as $slots) { - // We only support master servers for now, so we ignore subsequent - // elements in the $slots array identifying slaves. - [$start, $end, $master] = $slots; - - if ($master[0] === '') { - $this->slotmap->setSlots($start, $end, (string) $connection); - } else { - $this->slotmap->setSlots($start, $end, "{$master[0]}:{$master[1]}"); - } - } - } - - /** - * Guesses the correct node associated to a given slot using a precalculated - * slots map, falling back to the same logic used by Redis to initialize a - * cluster (best-effort). - * - * @param int $slot Slot index. - * - * @return string Connection ID. - */ - protected function guessNode($slot) - { - if (!$this->pool) { - throw new ClientException('No connections available in the pool'); - } - - if ($this->slotmap->isEmpty()) { - $this->buildSlotMap(); - } - - if ($node = $this->slotmap[$slot]) { - return $node; - } - - $count = count($this->pool); - $index = min((int) ($slot / (int) (16384 / $count)), $count - 1); - $nodes = array_keys($this->pool); - - return $nodes[$index]; - } - - /** - * Creates a new connection instance from the given connection ID. - * - * @param string $connectionID Identifier for the connection. - * - * @return NodeConnectionInterface - */ - protected function createConnection($connectionID) - { - $separator = strrpos($connectionID, ':'); - - return $this->connections->create([ - 'host' => substr($connectionID, 0, $separator), - 'port' => substr($connectionID, $separator + 1), - ]); - } - - /** - * {@inheritdoc} - */ - public function getConnectionByCommand(CommandInterface $command) - { - $slot = $this->strategy->getSlot($command); - - if (!isset($slot)) { - throw new NotSupportedException( - "Cannot use '{$command->getId()}' with redis-cluster." - ); - } - - if (isset($this->slots[$slot])) { - return $this->slots[$slot]; - } - - return $this->getConnectionBySlot($slot); - } - - /** - * Returns the connection currently associated to a given slot. - * - * @param int $slot Slot index. - * - * @return NodeConnectionInterface - * @throws OutOfBoundsException - */ - public function getConnectionBySlot($slot) - { - if (!SlotMap::isValid($slot)) { - throw new OutOfBoundsException("Invalid slot [$slot]."); - } - - if (isset($this->slots[$slot])) { - return $this->slots[$slot]; - } - - $connectionID = $this->guessNode($slot); - - if (!$connection = $this->getConnectionById($connectionID)) { - $connection = $this->createConnection($connectionID); - $this->pool[$connectionID] = $connection; - } - - return $this->slots[$slot] = $connection; - } - - /** - * {@inheritdoc} - */ - public function getConnectionById($connectionID) - { - return $this->pool[$connectionID] ?? null; - } - - /** - * Returns a random connection from the pool. - * - * @return NodeConnectionInterface|null - */ - protected function getRandomConnection() - { - if (!$this->pool) { - return null; - } - - return $this->pool[array_rand($this->pool)]; - } - - /** - * Permanently associates the connection instance to a new slot. - * The connection is added to the connections pool if not yet included. - * - * @param NodeConnectionInterface $connection Connection instance. - * @param int $slot Target slot index. - */ - protected function move(NodeConnectionInterface $connection, $slot) - { - $this->pool[(string) $connection] = $connection; - $this->slots[(int) $slot] = $connection; - $this->slotmap[(int) $slot] = $connection; - } - - /** - * Handles -ERR responses returned by Redis. - * - * @param CommandInterface $command Command that generated the -ERR response. - * @param ErrorResponseInterface $error Redis error response object. - * - * @return mixed - */ - protected function onErrorResponse(CommandInterface $command, ErrorResponseInterface $error) - { - $details = explode(' ', $error->getMessage(), 2); - - switch ($details[0]) { - case 'READONLY': - return $this->onReadOnlyResponse($command); - - case 'MOVED': - return $this->onMovedResponse($command, $details[1]); - - case 'ASK': - return $this->onAskResponse($command, $details[1]); - - default: - return $error; - } - } - - /** - * Handles -READONLY responses by disconnecting the current node's connection - * and refreshing the slots map (when cluster slots are enabled), then - * re-executing the command so it is routed to the updated primary node. - * - * This is a workaround for AWS ElastiCache Redis OSS, which may return - * -READONLY errors during failover events. Standard Redis clusters do not - * exhibit this behavior. - * - * @param CommandInterface $command Command that generated the -READONLY response. - * - * @return mixed - */ - protected function onReadOnlyResponse(CommandInterface $command) - { - if ($this->useClusterSlots) { - $connection = $this->getConnectionByCommand($command); - $connection->disconnect(); - $this->askSlotMap(); - } - - return $this->executeCommand($command); - } - - /** - * Handles -MOVED responses by executing again the command against the node - * indicated by the Redis response. - * - * @param CommandInterface $command Command that generated the -MOVED response. - * @param string $details Parameters of the -MOVED response. - * - * @return mixed - */ - protected function onMovedResponse(CommandInterface $command, $details) - { - [$slot, $connectionID] = explode(' ', $details, 2); - - // Handle connection ID in the form of "IP:port (details about exception)" - // by trimming everything after first space (including the space) - $startPositionOfExtraDetails = strpos($connectionID, ' '); - - if ($startPositionOfExtraDetails !== false) { - $connectionID = substr($connectionID, 0, $startPositionOfExtraDetails); - } - - if (!$connection = $this->getConnectionById($connectionID)) { - $connection = $this->createConnection($connectionID); - } - - if ($this->useClusterSlots) { - $this->askSlotMap($connection); - } - - $this->move($connection, $slot); - - return $this->executeCommand($command); - } - - /** - * Handles -ASK responses by executing again the command against the node - * indicated by the Redis response. - * - * @param CommandInterface $command Command that generated the -ASK response. - * @param string $details Parameters of the -ASK response. - * - * @return mixed - */ - protected function onAskResponse(CommandInterface $command, $details) - { - [$slot, $connectionID] = explode(' ', $details, 2); - - if (!$connection = $this->getConnectionById($connectionID)) { - $connection = $this->createConnection($connectionID); - } - - $connection->executeCommand(RawCommand::create('ASKING')); - - return $connection->executeCommand($command); - } - - /** - * Ensures that a command is executed one more time on connection failure. - * - * The connection to the node that generated the error is evicted from the - * pool before trying to fetch an updated slots map from another node. If - * the new slots map points to an unreachable server the client gives up and - * throws the exception as the nodes participating in the cluster may still - * have to agree that something changed in the configuration of the cluster. - * - * @param CommandInterface $command Command instance. - * @param string $method Actual method. - * - * @return mixed - * @throws Throwable - */ - private function retryCommandOnFailure(CommandInterface $command, $method) - { - if ($this->connectionParameters->isDisabledRetry() || $this->connections instanceof RelayFactory) { - // Override default parameters, for backward-compatibility - // with current behaviour - $retry = new Retry( - new ExponentialBackoff($this->retryInterval * 1000, -1), - $this->retryLimit - ); - } else { - $retry = $this->connectionParameters->retry; - } - $retry->updateCatchableExceptions([ServerException::class]); - - $doCallback = function () use ($command, $method) { - $response = $this->getConnectionByCommand($command)->$method($command); - - if ($response instanceof ErrorResponse) { - $message = $response->getMessage(); - - if (strpos($message, 'CLUSTERDOWN') !== false) { - throw new ServerException($message); - } - } - - return $response; - }; - - return $retry->callWithRetry( - $doCallback, - function (Throwable $e) { - $this->onFailCallback($e); - } - ); - } - - /** - * {@inheritdoc} - */ - public function writeRequest(CommandInterface $command) - { - $this->retryCommandOnFailure($command, __FUNCTION__); - } - - /** - * {@inheritdoc} - */ - public function readResponse(CommandInterface $command) - { - return $this->retryCommandOnFailure($command, __FUNCTION__); - } - - /** - * {@inheritdoc} - */ - public function executeCommand(CommandInterface $command) - { - $response = $this->retryCommandOnFailure($command, __FUNCTION__); - - if ($response instanceof ErrorResponseInterface) { - return $this->onErrorResponse($command, $response); - } - - return $response; - } - - /** - * {@inheritdoc} - */ - public function executeCommandOnEachNode(CommandInterface $command): array - { - $responses = []; - - foreach ($this->pool as $connection) { - $responses[] = $connection->executeCommand($command); - } - - return $responses; - } - - /** - * @return int - */ - #[ReturnTypeWillChange] - public function count() - { - return count($this->pool); - } - - /** - * @return Traversable - */ - #[ReturnTypeWillChange] - public function getIterator() - { - if ($this->slotmap->isEmpty()) { - $this->useClusterSlots ? $this->askSlotMap() : $this->buildSlotMap(); - } - - $connections = []; - - foreach ($this->slotmap->getNodes() as $node) { - if (!$connection = $this->getConnectionById($node)) { - $this->add($connection = $this->createConnection($node)); - } - - $connections[] = $connection; - } - - return new ArrayIterator($connections); - } - - /** - * Returns the underlying slot map. - * - * @return SlotMap - */ - public function getSlotMap() - { - return $this->slotmap; - } - - /** - * {@inheritDoc} - */ - public function getClusterStrategy(): StrategyInterface - { - return $this->strategy; - } - - /** - * Returns the underlying connection factory used to create new connection - * instances to Redis nodes indicated by redis-cluster. - * - * @return FactoryInterface - */ - public function getConnectionFactory() - { - return $this->connections; - } - - /** - * Enables automatic fetching of the current slots map from one of the nodes - * using the CLUSTER SLOTS command. This option is enabled by default as - * asking the current slots map to Redis upon -MOVED responses may reduce - * overhead by eliminating the trial-and-error nature of the node guessing - * procedure, mostly when targeting many keys that would end up in a lot of - * redirections. - * - * The slots map can still be manually fetched using the askSlotMap() - * method whether or not this option is enabled. - * - * @param bool $value Enable or disable the use of CLUSTER SLOTS. - */ - public function useClusterSlots($value) - { - $this->useClusterSlots = (bool) $value; - } - - /** - * {@inheritdoc} - */ - public function getParameters(): ?ParametersInterface - { - return $this->connectionParameters; - } - - /** - * Loop over connections until there's data to read. - * - * @return mixed - */ - public function read() - { - while (true) { - foreach ($this->pool as $connection) { - if ($connection->hasDataToRead()) { - return $connection->read(); - } - } - - usleep($this->readTimeout); - } - } - - /** - * Handle exceptions. - * - * @param Throwable $exception - * @return void - */ - private function onFailCallback(Throwable $exception) - { - if ($exception instanceof ConnectionException) { - $connection = $exception->getConnection(); - - if ($connection) { - $connection->disconnect(); - $this->remove($connection); - } - - if ($this->useClusterSlots) { - $this->askSlotMap(); - } - } - - if ($exception instanceof TimeoutException) { - $connection = $exception->getConnection(); - - if ($connection) { - $connection->disconnect(); - } - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/CompositeConnectionInterface.php b/v3_ci4/vendor/predis/predis/src/Connection/CompositeConnectionInterface.php deleted file mode 100644 index b8537dd..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/CompositeConnectionInterface.php +++ /dev/null @@ -1,48 +0,0 @@ -protocol = $protocol ?: new TextProtocolProcessor(); - } - - /** - * {@inheritdoc} - */ - public function getProtocol() - { - return $this->protocol; - } - - /** - * {@inheritdoc} - */ - public function writeBuffer($buffer) - { - $this->write($buffer); - } - - /** - * {@inheritdoc} - */ - public function readBuffer($length) - { - if ($length <= 0) { - throw new InvalidArgumentException('Length parameter must be greater than 0.'); - } - - $value = ''; - $stream = $this->getResource(); - - if ($stream->eof()) { - $this->onStreamError(new RuntimeException('Stream is already at the end'), ''); - } - - do { - try { - $chunk = $stream->read($length); - } catch (RuntimeException $e) { - $this->onStreamError($e, 'Error while reading bytes from the server.'); - } - - $value .= $chunk; // @phpstan-ignore-line - } while (($length -= strlen($chunk)) > 0); // @phpstan-ignore-line - - return $value; - } - - /** - * {@inheritdoc} - */ - public function readLine() - { - $value = ''; - $stream = $this->getResource(); - - if ($stream->eof()) { - $this->onStreamError(new RuntimeException('Stream is already at the end'), ''); - } - - do { - try { - $chunk = $stream->read(-1); - } catch (RuntimeException $e) { - $this->onStreamError($e, 'Error while reading bytes from the server.'); - } - - $value .= $chunk; // @phpstan-ignore-line - } while (substr($value, -2) !== "\r\n"); - - return substr($value, 0, -2); - } - - /** - * {@inheritdoc} - */ - public function writeRequest(CommandInterface $command) - { - $this->protocol->write($this, $command); - } - - /** - * {@inheritdoc} - */ - public function read() - { - return $this->protocol->read($this); - } - - /** - * {@inheritdoc} - */ - public function __sleep() - { - return array_merge(parent::__sleep(), ['protocol']); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/ConnectionException.php b/v3_ci4/vendor/predis/predis/src/Connection/ConnectionException.php deleted file mode 100644 index d584e05..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/ConnectionException.php +++ /dev/null @@ -1,22 +0,0 @@ - 'Predis\Connection\StreamConnection', - 'unix' => 'Predis\Connection\StreamConnection', - 'tls' => 'Predis\Connection\StreamConnection', - 'redis' => 'Predis\Connection\StreamConnection', - 'rediss' => 'Predis\Connection\StreamConnection', - ]; - - /** - * Checks if the provided argument represents a valid connection class - * implementing Predis\Connection\NodeConnectionInterface. Optionally, - * callable objects are used for lazy initialization of connection objects. - * - * @param mixed $initializer FQN of a connection class or a callable for lazy initialization. - * - * @return mixed - * @throws InvalidArgumentException - */ - protected function checkInitializer($initializer) - { - if (is_callable($initializer)) { - return $initializer; - } - - $class = new ReflectionClass($initializer); - - if (!$class->isSubclassOf('Predis\Connection\NodeConnectionInterface')) { - throw new InvalidArgumentException( - 'A connection initializer must be a valid connection class or a callable object.' - ); - } - - return $initializer; - } - - /** - * {@inheritdoc} - */ - public function define($scheme, $initializer) - { - $this->schemes[$scheme] = $this->checkInitializer($initializer); - } - - /** - * {@inheritdoc} - */ - public function undefine($scheme) - { - unset($this->schemes[$scheme]); - } - - /** - * {@inheritdoc} - */ - public function create($parameters) - { - if (!$parameters instanceof ParametersInterface) { - $parameters = $this->createParameters($parameters); - } - - $scheme = $parameters->scheme; - - if (!isset($this->schemes[$scheme])) { - throw new InvalidArgumentException("Unknown connection scheme: '$scheme'."); - } - - $initializer = $this->schemes[$scheme]; - - if (is_callable($initializer)) { - $connection = call_user_func($initializer, $parameters, $this); - } else { - $connection = new $initializer($parameters); - $this->prepareConnection($connection); - } - - if (!$connection instanceof NodeConnectionInterface) { - throw new UnexpectedValueException( - 'Objects returned by connection initializers must implement ' . - "'Predis\Connection\NodeConnectionInterface'." - ); - } - - return $connection; - } - - /** - * Assigns a default set of parameters applied to new connections. - * - * The set of parameters passed to create a new connection have precedence - * over the default values set for the connection factory. - * - * @param array $parameters Set of connection parameters. - */ - public function setDefaultParameters(array $parameters) - { - $this->defaults = $parameters; - } - - /** - * Returns the default set of parameters applied to new connections. - * - * @return array - */ - public function getDefaultParameters() - { - return $this->defaults; - } - - /** - * Sets upstream driver information for CLIENT SETINFO. - * - * @param string $driver Upstream driver string (e.g., 'laravel_v11.0.0' or 'laravel_v11.0.0;my-app_v1.0.0'). - */ - public function setUpstreamDriver(string $driver): void - { - $this->upstreamDriver = $driver; - } - - /** - * Returns the configured upstream driver. - * - * @return string|null - */ - public function getUpstreamDriver(): ?string - { - return $this->upstreamDriver; - } - - /** - * Creates a connection parameters instance from the supplied argument. - * - * @param mixed $parameters Original connection parameters. - * - * @return ParametersInterface - */ - protected function createParameters($parameters) - { - if (is_string($parameters)) { - $parameters = Parameters::parse($parameters); - } else { - $parameters = $parameters ?: []; - } - - if ($this->defaults) { - $parameters += $this->defaults; - } - - return new Parameters($parameters); - } - - /** - * Prepares a connection instance after its initialization. - * - * @param NodeConnectionInterface $connection Connection instance. - */ - protected function prepareConnection(NodeConnectionInterface $connection) - { - $parameters = $connection->getParameters(); - - if (!empty($parameters->password)) { - $cmdAuthArgs = [$parameters->protocol, 'AUTH']; - - if (empty($parameters->username)) { - $parameters->username = 'default'; - } - - array_push($cmdAuthArgs, $parameters->username, $parameters->password); - array_push($cmdAuthArgs, 'SETNAME', 'predis'); - - $connection->addConnectCommand( - new RawCommand('HELLO', $cmdAuthArgs) - ); - } else { - $connection->addConnectCommand( - new RawCommand('HELLO', [$parameters->protocol ?? 2, 'SETNAME', 'predis']) - ); - } - - $connection->addConnectCommand( - new RawCommand('CLIENT', ['SETINFO', 'LIB-NAME', $this->buildLibraryName()]) - ); - - $connection->addConnectCommand( - new RawCommand('CLIENT', ['SETINFO', 'LIB-VER', Client::VERSION]) - ); - - if (isset($parameters->database) && strlen($parameters->database)) { - $connection->addConnectCommand( - new RawCommand('SELECT', [$parameters->database]) - ); - } - } - - /** - * Builds the library name string for CLIENT SETINFO. - * - * @return string - */ - protected function buildLibraryName(): string - { - return $this->upstreamDriver ? 'predis(' . $this->upstreamDriver . ')' : 'predis'; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/FactoryInterface.php b/v3_ci4/vendor/predis/predis/src/Connection/FactoryInterface.php deleted file mode 100644 index 9ebc7cd..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/FactoryInterface.php +++ /dev/null @@ -1,43 +0,0 @@ - 'tcp', - 'host' => '127.0.0.1', - 'port' => 6379, - 'protocol' => 2, - ]; - - /** - * Set of connection parameters already filtered - * for NULL or 0-length string values. - * - * @var array - */ - protected $parameters; - - /** - * @var bool - */ - private $disabledRetry = true; - - /** - * @param array $parameters Named array of connection parameters. - */ - public function __construct(array $parameters = []) - { - if (!array_key_exists('retry', $parameters)) { - // Retries disabled by default - static::$defaults['retry'] = new Retry(new NoBackoff(), 0); - } else { - $this->disabledRetry = false; - } - - $this->parameters = $this->filter($parameters + static::$defaults); - } - - /** - * Filters parameters removing entries with NULL or 0-length string values. - * - * @param array $parameters Array of parameters to be filtered - * - * @return array - */ - protected function filter(array $parameters) - { - return array_filter($parameters, static function ($value) { - return $value !== null && $value !== ''; - }); - } - - /** - * Creates a new instance by supplying the initial parameters either in the - * form of an URI string or a named array. - * - * @param array|string $parameters Set of connection parameters. - * - * @return Parameters - */ - public static function create($parameters) - { - if (is_string($parameters)) { - $parameters = static::parse($parameters); - } - - return new static($parameters ?: []); - } - - /** - * Parses an URI string returning an array of connection parameters. - * - * When using the "redis" and "rediss" schemes the URI is parsed according - * to the rules defined by the provisional registration documents approved - * by IANA. If the URI has a password in its "user-information" part or a - * database number in the "path" part these values override the values of - * "password" and "database" if they are present in the "query" part. - * - * @see http://www.iana.org/assignments/uri-schemes/prov/redis - * @see http://www.iana.org/assignments/uri-schemes/prov/rediss - * - * @param string $uri URI string. - * - * @return array - * @throws InvalidArgumentException - */ - public static function parse($uri) - { - if (stripos($uri, 'unix://') === 0) { - // parse_url() can parse unix:/path/to/sock so we do not need the - // unix:///path/to/sock hack, we will support it anyway until 2.0. - $uri = str_ireplace('unix://', 'unix:', $uri); - } - - if (!$parsed = parse_url($uri)) { - throw new InvalidArgumentException("Invalid parameters URI: $uri"); - } - - if ( - isset($parsed['host']) - && false !== strpos($parsed['host'], '[') - && false !== strpos($parsed['host'], ']') - ) { - $parsed['host'] = substr($parsed['host'], 1, -1); - } - - if (isset($parsed['query'])) { - parse_str($parsed['query'], $queryarray); - unset($parsed['query']); - - $parsed = array_merge($parsed, $queryarray); - } - - if (stripos($uri, 'redis') === 0) { - if (isset($parsed['user'])) { - if (strlen($parsed['user'])) { - $parsed['username'] = $parsed['user']; - } - unset($parsed['user']); - } - - if (isset($parsed['pass'])) { - if (strlen($parsed['pass'])) { - $parsed['password'] = $parsed['pass']; - } - unset($parsed['pass']); - } - - if (isset($parsed['path']) && preg_match('/^\/(\d+)(\/.*)?/', $parsed['path'], $path)) { - $parsed['database'] = $path[1]; - - if (isset($path[2])) { - $parsed['path'] = $path[2]; - } else { - unset($parsed['path']); - } - } - } - - return $parsed; - } - - /** - * {@inheritdoc} - */ - public function toArray() - { - return $this->parameters; - } - - /** - * {@inheritdoc} - */ - public function __get($parameter) - { - if (isset($this->parameters[$parameter])) { - return $this->parameters[$parameter]; - } - } - - public function __set($parameter, $value) - { - $this->parameters[$parameter] = $value; - } - - /** - * {@inheritdoc} - */ - public function __isset($parameter) - { - return isset($this->parameters[$parameter]); - } - - /** - * {@inheritdoc} - */ - public function __toString() - { - if ($this->scheme === 'unix') { - return "$this->scheme:$this->path"; - } - - if (filter_var($this->host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - return "$this->scheme://[$this->host]:$this->port"; - } - - return "$this->scheme://$this->host:$this->port"; - } - - /** - * Returns if retries is disabled. - * - * @return bool - */ - public function isDisabledRetry(): bool - { - return $this->disabledRetry; - } - - /** - * {@inheritdoc} - */ - public function __sleep() - { - return ['parameters']; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/ParametersInterface.php b/v3_ci4/vendor/predis/predis/src/Connection/ParametersInterface.php deleted file mode 100644 index 521418f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/ParametersInterface.php +++ /dev/null @@ -1,79 +0,0 @@ -assertExtensions(); - - $this->parameters = $this->assertParameters($parameters); - $this->client = $client; - } - - /** - * {@inheritdoc} - */ - public function isConnected() - { - return $this->client->isConnected(); - } - - /** - * {@inheritdoc} - */ - public function disconnect() - { - if ($this->client->isConnected()) { - $this->client->close(); - } - } - - /** - * Checks if the Relay extension is loaded in PHP. - */ - private function assertExtensions() - { - if (!extension_loaded('relay')) { - throw new NotSupportedException( - 'The "relay" extension is required by this connection backend.' - ); - } - } - - /** - * Returns the underlying client. - * - * @return Relay - */ - public function getClient() - { - return $this->client; - } - - /** - * @param ParametersInterface $parameters - * @param $address - * @param $flags - * @return Relay - */ - protected function connectWithConfiguration(ParametersInterface $parameters, $address, $flags) - { - $timeout = isset($parameters->timeout) ? (float) $parameters->timeout : 5.0; - - $retry_interval = 0; - $read_timeout = 5.0; - - if (isset($parameters->read_write_timeout)) { - $read_timeout = (float) $parameters->read_write_timeout; - $read_timeout = $read_timeout > 0 ? $read_timeout : 0; - } - - try { - $this->client->connect( - $parameters->path ?? $parameters->host, - isset($parameters->path) ? 0 : $parameters->port, - $timeout, - null, - $retry_interval, - $read_timeout - ); - } catch (RelayException $ex) { - $this->onConnectionError($ex->getMessage(), $ex->getCode()); - } - - return $this->client; - } - - /** - * {@inheritdoc} - */ - public function getIdentifier() - { - try { - return $this->client->endpointId(); - } catch (RelayException $ex) { - return parent::getIdentifier(); - } - } - - /** - * {@inheritdoc} - */ - public function executeCommand(CommandInterface $command) - { - if (!$this->client->isConnected()) { - $this->getResource(); - } - - try { - $name = $command->getId(); - - // When using compression or a serializer, we'll need a dedicated - // handler for `Predis\Command\RawCommand` calls, currently both - // parameters are unsupported until a future Relay release - return in_array($name, $this->atypicalCommands) - ? $this->client->{$name}(...$command->getArguments()) - : $this->client->rawCommand($name, ...$command->getArguments()); - } catch (RelayException $ex) { - $exception = $this->onCommandError($ex, $command); - - if ($exception instanceof ErrorResponseInterface) { - return $exception; - } - - throw $exception; - } - } - - /** - * {@inheritdoc} - */ - public function onCommandError(RelayException $exception, CommandInterface $command) - { - $code = $exception->getCode(); - $message = $exception->getMessage(); - - if (strpos($message, 'RELAY_ERR_IO') !== false) { - return new ConnectionException($this, $message, $code, $exception); - } - - if (strpos($message, 'RELAY_ERR_REDIS') !== false) { - return new ServerException($message, $code, $exception); - } - - if (strpos($message, 'RELAY_ERR_WRONGTYPE') !== false && strpos($message, "Got reply-type 'status'") !== false) { - $message = 'Operation against a key holding the wrong kind of value'; - } - - return new ClientException($message, $code, $exception); - } - - /** - * Applies the configured serializer and compression to given value. - * - * @param mixed $value - * @return string - */ - public function pack($value) - { - return $this->client->_pack($value); - } - - /** - * Deserializes and decompresses to given value. - * - * @param mixed $value - * @return string - */ - public function unpack($value) - { - return $this->client->_unpack($value); - } - - /** - * {@inheritdoc} - */ - public function writeRequest(CommandInterface $command) - { - throw new NotSupportedException('The "relay" extension does not support writing requests.'); - } - - /** - * {@inheritdoc} - */ - public function readResponse(CommandInterface $command) - { - throw new NotSupportedException('The "relay" extension does not support reading responses.'); - } - - /** - * {@inheritdoc} - */ - public function __destruct() - { - $this->disconnect(); - } - - /** - * {@inheritdoc} - */ - protected function createResource() - { - switch ($this->parameters->scheme) { - case 'tcp': - case 'redis': - return $this->initializeTcpConnection($this->parameters); - - case 'unix': - return $this->initializeUnixConnection($this->parameters); - - default: - throw new InvalidArgumentException("Invalid scheme: '{$this->parameters->scheme}'."); - } - } - - /** - * Initializes a TCP connection via client. - * - * @param ParametersInterface $parameters Initialization parameters for the connection. - * - * @return Relay - */ - protected function initializeTcpConnection(ParametersInterface $parameters) - { - if (!filter_var($parameters->host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - $address = "tcp://$parameters->host:$parameters->port"; - } else { - $address = "tcp://[$parameters->host]:$parameters->port"; - } - - $flags = STREAM_CLIENT_CONNECT; - - if (isset($parameters->async_connect) && $parameters->async_connect) { - $flags |= STREAM_CLIENT_ASYNC_CONNECT; - } - - if (isset($parameters->persistent)) { - if (false !== $persistent = filter_var($parameters->persistent, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) { - $flags |= STREAM_CLIENT_PERSISTENT; - - if ($persistent === null) { - $address = "{$address}/{$parameters->persistent}"; - } - } - } - - return $this->connectWithConfiguration($parameters, $address, $flags); - } - - /** - * Initializes a UNIX connection via client. - * - * @param ParametersInterface $parameters Initialization parameters for the connection. - * - * @return Relay - */ - protected function initializeUnixConnection(ParametersInterface $parameters) - { - if (!isset($parameters->path)) { - throw new InvalidArgumentException('Missing UNIX domain socket path.'); - } - - $flags = STREAM_CLIENT_CONNECT; - - if (isset($parameters->persistent)) { - if (false !== $persistent = filter_var($parameters->persistent, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) { - $flags |= STREAM_CLIENT_PERSISTENT; - - if ($persistent === null) { - throw new InvalidArgumentException( - 'Persistent connection IDs are not supported when using UNIX domain sockets.' - ); - } - } - } - - return $this->connectWithConfiguration($parameters, "unix://{$parameters->path}", $flags); - } - - /** - * {@inheritdoc} - */ - public function connect() - { - if (parent::connect() && $this->initCommands) { - foreach ($this->initCommands as $command) { - $response = $this->executeCommand($command); - - if ($response instanceof ErrorResponseInterface && ($command->getId() === 'CLIENT')) { - // Do nothing on CLIENT SETINFO command failure - } elseif ($response instanceof ErrorResponseInterface) { - $this->onConnectionError("`{$command->getId()}` failed: {$response->getMessage()}", 0); - } - } - } - } - - /** - * {@inheritdoc} - */ - public function read() - { - throw new NotSupportedException('The "relay" extension does not support reading responses.'); - } - - /** - * {@inheritdoc} - */ - protected function assertParameters(ParametersInterface $parameters) - { - if (!in_array($parameters->scheme, ['tcp', 'tls', 'unix', 'redis', 'rediss'])) { - throw new InvalidArgumentException("Invalid scheme: '{$parameters->scheme}'."); - } - - if (!in_array($parameters->serializer, [null, 'php', 'igbinary', 'msgpack', 'json'])) { - throw new InvalidArgumentException("Invalid serializer: '{$parameters->serializer}'."); - } - - if (!in_array($parameters->compression, [null, 'lzf', 'lz4', 'zstd'])) { - throw new InvalidArgumentException("Invalid compression algorithm: '{$parameters->compression}'."); - } - - return $parameters; - } - - /** - * {@inheritDoc} - */ - public function write(string $buffer): void - { - throw new NotSupportedException('The "relay" extension does not support writing operations.'); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/RelayFactory.php b/v3_ci4/vendor/predis/predis/src/Connection/RelayFactory.php deleted file mode 100644 index 6c81885..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/RelayFactory.php +++ /dev/null @@ -1,175 +0,0 @@ - RelayConnection::class, - 'tls' => RelayConnection::class, - 'unix' => RelayConnection::class, - 'redis' => RelayConnection::class, - 'rediss' => RelayConnection::class, - ]; - - /** - * {@inheritDoc} - */ - public function define($scheme, $initializer) - { - throw new NotSupportedException('Does not allow to override existing initializer.'); - } - - /** - * {@inheritDoc} - */ - public function undefine($scheme) - { - throw new NotSupportedException('Does not allow to override existing initializer.'); - } - - /** - * {@inheritDoc} - */ - public function create($parameters): NodeConnectionInterface - { - $this->assertExtensions(); - - if (!$parameters instanceof ParametersInterface) { - $parameters = $this->createParameters($parameters); - } - - $scheme = $parameters->scheme; - - if (!isset($this->schemes[$scheme])) { - throw new InvalidArgumentException("Unknown connection scheme: '$scheme'."); - } - - $initializer = $this->schemes[$scheme]; - $client = $this->createClient($parameters); - - $connection = new $initializer($parameters, $client); - - $this->prepareConnection($connection); - - return $connection; - } - - /** - * Checks if the Relay extension is loaded in PHP. - */ - private function assertExtensions() - { - if (!extension_loaded('relay')) { - throw new NotSupportedException( - 'The "relay" extension is required by this connection backend.' - ); - } - } - - /** - * Creates a new instance of the client. - * - * @return Relay - */ - private function createClient(ParametersInterface $parameters) - { - $client = new Relay(); - - // throw when errors occur and return `null` for non-existent keys - $client->setOption(Relay::OPT_PHPREDIS_COMPATIBILITY, false); - - // use reply literals - $client->setOption(Relay::OPT_REPLY_LITERAL, true); - - // whether to use in-memory caching - $client->setOption(Relay::OPT_USE_CACHE, $parameters->cache ?? true); - - // set data serializer - $client->setOption(Relay::OPT_SERIALIZER, constant(sprintf( - '%s::SERIALIZER_%s', - Relay::class, - strtoupper($parameters->serializer ?? 'none') - ))); - - // set data compression algorithm - $client->setOption(Relay::OPT_COMPRESSION, constant(sprintf( - '%s::COMPRESSION_%s', - Relay::class, - strtoupper($parameters->compression ?? 'none') - ))); - - if ($parameters->isDisabledRetry()) { - $client->setOption(Relay::OPT_MAX_RETRIES, 0); - } else { - $client->setOption(Relay::OPT_MAX_RETRIES, $parameters->retry->getRetries()); - - $retryStrategy = $parameters->retry->getStrategy(); - - if ($retryStrategy instanceof ExponentialBackoff) { - $algorithm = Relay::BACKOFF_ALGORITHM_FULL_JITTER; - $base = $retryStrategy->getBase(); - $cap = $retryStrategy->getCap(); - } else { - $algorithm = Relay::BACKOFF_ALGORITHM_DEFAULT; - - if ($retryStrategy instanceof EqualBackoff) { - $base = $cap = $retryStrategy->compute(0); - } else { - $base = $retryStrategy::DEFAULT_BASE; - $cap = $retryStrategy::DEFAULT_CAP; - } - } - - $client->setOption(Relay::OPT_BACKOFF_ALGORITHM, $algorithm); - $client->setOption(Relay::OPT_BACKOFF_BASE, $base / 1000); - $client->setOption(Relay::OPT_BACKOFF_CAP, $cap / 1000); - } - - return $client; - } - - /** - * {@inheritdoc} - */ - protected function prepareConnection(NodeConnectionInterface $connection) - { - $parameters = $connection->getParameters(); - - if (isset($parameters->password) && strlen($parameters->password)) { - $cmdAuthArgs = isset($parameters->username) && strlen($parameters->username) - ? [$parameters->username, $parameters->password] - : [$parameters->password]; - - $connection->addConnectCommand( - new RawCommand('AUTH', $cmdAuthArgs) - ); - } - - if (isset($parameters->database) && strlen($parameters->database)) { - $connection->addConnectCommand( - new RawCommand('SELECT', [$parameters->database]) - ); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/RelayMethods.php b/v3_ci4/vendor/predis/predis/src/Connection/RelayMethods.php deleted file mode 100644 index f5ea46a..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/RelayMethods.php +++ /dev/null @@ -1,136 +0,0 @@ -client->onFlushed($callback); - } - - /** - * Registers a new `invalidated` event listener. - * - * @param callable $callback - * @param string|null $pattern - * @return bool - */ - public function onInvalidated(?callable $callback, ?string $pattern = null) - { - return $this->client->onInvalidated($callback, $pattern); - } - - /** - * Dispatches all pending events. - * - * @return int|false - */ - public function dispatchEvents() - { - return $this->client->dispatchEvents(); - } - - /** - * Adds ignore pattern(s). Matching keys will not be cached in memory. - * - * @param string $pattern,... - * @return int - */ - public function addIgnorePatterns(string ...$pattern) - { - return $this->client->addIgnorePatterns(...$pattern); - } - - /** - * Adds allow pattern(s). Only matching keys will be cached in memory. - * - * @param string $pattern,... - * @return int - */ - public function addAllowPatterns(string ...$pattern) - { - return $this->client->addAllowPatterns(...$pattern); - } - - /** - * Returns the connection's endpoint identifier. - * - * @return string|false - */ - public function endpointId() - { - return $this->client->endpointId(); - } - - /** - * Returns a unique representation of the underlying socket connection identifier. - * - * @return string|false - */ - public function socketId() - { - return $this->client->socketId(); - } - - /** - * Returns information about the license. - * - * @return array - */ - public function license() - { - return $this->client->license(); - } - - /** - * Returns statistics about Relay. - * - * @return array> - */ - public function stats() - { - return $this->client->stats(); - } - - /** - * Returns the number of bytes allocated, or `0` in client-only mode. - * - * @return int - */ - public function maxMemory() - { - return $this->client->maxMemory(); - } - - /** - * Flushes Relay's in-memory cache of all databases. - * When given an endpoint, only that connection will be flushed. - * When given an endpoint and database index, only that database - * for that connection will be flushed. - * - * @param ?string $endpointId - * @param ?int $db - * @return bool - */ - public function flushMemory(?string $endpointId = null, ?int $db = null) - { - return $this->client->flushMemory($endpointId, $db); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/Replication/MasterSlaveReplication.php b/v3_ci4/vendor/predis/predis/src/Connection/Replication/MasterSlaveReplication.php deleted file mode 100644 index b7abf7d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/Replication/MasterSlaveReplication.php +++ /dev/null @@ -1,669 +0,0 @@ -strategy = $strategy ?: new ReplicationStrategy(); - } - - /** - * Configures the automatic discovery of the replication configuration on failure. - * - * @param bool $value Enable or disable auto discovery. - */ - public function setAutoDiscovery($value) - { - if (!$this->connectionFactory) { - throw new ClientException('Automatic discovery requires a connection factory'); - } - - $this->autoDiscovery = (bool) $value; - } - - /** - * Sets the connection factory used to create the connections by the auto - * discovery procedure. - * - * @param FactoryInterface $connectionFactory Connection factory instance. - */ - public function setConnectionFactory(FactoryInterface $connectionFactory) - { - $this->connectionFactory = $connectionFactory; - } - - /** - * Resets the connection state. - */ - protected function reset() - { - $this->current = null; - } - - /** - * {@inheritdoc} - */ - public function add(NodeConnectionInterface $connection) - { - $parameters = $connection->getParameters(); - - if ('master' === $parameters->role) { - $this->master = $connection; - } else { - // everything else is considered a slvave. - $this->slaves[] = $connection; - } - - if (isset($parameters->alias)) { - $this->aliases[$parameters->alias] = $connection; - } - - $this->pool[(string) $connection] = $connection; - - $this->reset(); - } - - /** - * {@inheritdoc} - */ - public function remove(NodeConnectionInterface $connection) - { - if ($connection === $this->master) { - $this->master = null; - } elseif (false !== $id = array_search($connection, $this->slaves, true)) { - unset($this->slaves[$id]); - } else { - return false; - } - - unset($this->pool[(string) $connection]); - - if ($this->aliases && $alias = $connection->getParameters()->alias) { - unset($this->aliases[$alias]); - } - - $this->reset(); - - return true; - } - - /** - * {@inheritdoc} - */ - public function getConnectionByCommand(CommandInterface $command) - { - if (!$this->current) { - if ($this->strategy->isReadOperation($command) && $slave = $this->pickSlave()) { - $this->current = $slave; - } else { - $this->current = $this->getMasterOrDie(); - } - - return $this->current; - } - - if ($this->current === $master = $this->getMasterOrDie()) { - return $master; - } - - if (!$this->strategy->isReadOperation($command) || !$this->slaves) { - $this->current = $master; - } - - return $this->current; - } - - /** - * {@inheritdoc} - */ - public function getConnectionById($id) - { - return $this->pool[$id] ?? null; - } - - /** - * Returns a connection instance by its alias. - * - * @param string $alias Connection alias. - * - * @return NodeConnectionInterface|null - */ - public function getConnectionByAlias($alias) - { - return $this->aliases[$alias] ?? null; - } - - /** - * Returns a connection by its role. - * - * @param string $role Connection role (`master` or `slave`) - * - * @return NodeConnectionInterface|null - */ - public function getConnectionByRole($role) - { - if ($role === 'master') { - return $this->getMaster(); - } elseif ($role === 'slave') { - return $this->pickSlave(); - } - - return null; - } - - /** - * Switches the internal connection in use by the backend. - * - * @param NodeConnectionInterface $connection Connection instance in the pool. - */ - public function switchTo(NodeConnectionInterface $connection) - { - if ($connection && $connection === $this->current) { - return; - } - - if ($connection !== $this->master && !in_array($connection, $this->slaves, true)) { - throw new InvalidArgumentException('Invalid connection or connection not found.'); - } - - $this->current = $connection; - } - - /** - * {@inheritdoc} - */ - public function switchToMaster() - { - if (!$connection = $this->getConnectionByRole('master')) { - throw new InvalidArgumentException('Invalid connection or connection not found.'); - } - - $this->switchTo($connection); - } - - /** - * {@inheritdoc} - */ - public function switchToSlave() - { - if (!$connection = $this->getConnectionByRole('slave')) { - throw new InvalidArgumentException('Invalid connection or connection not found.'); - } - - $this->switchTo($connection); - } - - /** - * {@inheritdoc} - */ - public function getCurrent() - { - return $this->current; - } - - /** - * {@inheritdoc} - */ - public function getMaster() - { - return $this->master; - } - - /** - * Returns the connection associated to the master server. - * - * @return NodeConnectionInterface - */ - private function getMasterOrDie() - { - if (!$connection = $this->getMaster()) { - throw new MissingMasterException('No master server available for replication'); - } - - return $connection; - } - - /** - * {@inheritdoc} - */ - public function getSlaves() - { - return $this->slaves; - } - - /** - * Returns the underlying replication strategy. - * - * @return ReplicationStrategy - */ - public function getReplicationStrategy() - { - return $this->strategy; - } - - /** - * Returns a random slave. - * - * @return NodeConnectionInterface|null - */ - protected function pickSlave() - { - if (!$this->slaves) { - return null; - } - - return $this->slaves[array_rand($this->slaves)]; - } - - /** - * {@inheritdoc} - */ - public function isConnected() - { - return $this->current ? $this->current->isConnected() : false; - } - - /** - * {@inheritdoc} - */ - public function connect() - { - if (!$this->current) { - if (!$this->current = $this->pickSlave()) { - if (!$this->current = $this->getMaster()) { - throw new ClientException('No available connection for replication'); - } - } - } - - $this->current->connect(); - } - - /** - * {@inheritdoc} - */ - public function disconnect() - { - foreach ($this->pool as $connection) { - $connection->disconnect(); - } - } - - /** - * Handles response from INFO. - * - * @param string $response - * - * @return array - */ - private function handleInfoResponse($response) - { - $info = []; - - foreach (preg_split('/\r?\n/', $response) as $row) { - if (strpos($row, ':') === false) { - continue; - } - - [$k, $v] = explode(':', $row, 2); - $info[$k] = $v; - } - - return $info; - } - - /** - * Fetches the replication configuration from one of the servers. - */ - public function discover() - { - if (!$this->connectionFactory) { - throw new ClientException('Discovery requires a connection factory'); - } - - while (true) { - try { - if ($connection = $this->getMaster()) { - $this->discoverFromMaster($connection, $this->connectionFactory); - break; - } elseif ($connection = $this->pickSlave()) { - $this->discoverFromSlave($connection, $this->connectionFactory); - break; - } - throw new ClientException('No connection available for discovery'); - } catch (ConnectionException $exception) { - $this->remove($connection); - } - } - } - - /** - * Discovers the replication configuration by contacting the master node. - * - * @param NodeConnectionInterface $connection Connection to the master node. - * @param FactoryInterface $connectionFactory Connection factory instance. - */ - protected function discoverFromMaster(NodeConnectionInterface $connection, FactoryInterface $connectionFactory) - { - $response = $connection->executeCommand(RawCommand::create('INFO', 'REPLICATION')); - $replication = $this->handleInfoResponse($response); - - if ($replication['role'] !== 'master') { - throw new ClientException("Role mismatch (expected master, got slave) [$connection]"); - } - - $this->slaves = []; - - foreach ($replication as $k => $v) { - $parameters = null; - - if (strpos($k, 'slave') === 0 && preg_match('/ip=(?P.*),port=(?P\d+)/', $v, $parameters)) { - $slaveConnection = $connectionFactory->create([ - 'host' => $parameters['host'], - 'port' => $parameters['port'], - 'role' => 'slave', - ]); - - $this->add($slaveConnection); - } - } - } - - /** - * Discovers the replication configuration by contacting one of the slaves. - * - * @param NodeConnectionInterface $connection Connection to one of the slaves. - * @param FactoryInterface $connectionFactory Connection factory instance. - */ - protected function discoverFromSlave(NodeConnectionInterface $connection, FactoryInterface $connectionFactory) - { - $response = $connection->executeCommand(RawCommand::create('INFO', 'REPLICATION')); - $replication = $this->handleInfoResponse($response); - - if ($replication['role'] !== 'slave') { - throw new ClientException("Role mismatch (expected slave, got master) [$connection]"); - } - - $masterConnection = $connectionFactory->create([ - 'host' => $replication['master_host'], - 'port' => $replication['master_port'], - 'role' => 'master', - ]); - - $this->add($masterConnection); - - $this->discoverFromMaster($masterConnection, $connectionFactory); - } - - /** - * Retries the execution of a command upon slave failure. - * - * @param CommandInterface $command Command instance. - * @param string $method Actual method. - * - * @return mixed - * @throws Throwable - */ - private function retryCommandOnFailure(CommandInterface $command, $method) - { - $parameters = $this->getParameters(); - - if (!$parameters->isDisabledRetry() && !$this->connectionFactory instanceof RelayFactory) { - $retry = $parameters->retry; - $retry->updateCatchableExceptions([MissingMasterException::class]); - - return $retry->callWithRetry( - function () use ($command, $method) { - return $this->executeCommandInternal($command, $method); - }, - function (Throwable $exception) { - $this->onFailCallback($exception); - } - ); - } - - while (true) { - try { - $connection = $this->getConnectionByCommand($command); - $response = $connection->$method($command); - - if ($response instanceof ResponseErrorInterface && $response->getErrorType() === 'LOADING') { - throw new ConnectionException($connection, "Redis is loading the dataset in memory [$connection]"); - } - - break; - } catch (ConnectionException $exception) { - $this->onConnectionExceptionCallback($exception); - } catch (MissingMasterException $exception) { - $this->onMissingMasterException($exception); - } - } - - return $response; - } - - /** - * Executes command against valid connection. - * - * @param CommandInterface $command - * @param string $method - * @return mixed - * @throws ConnectionException - */ - protected function executeCommandInternal(CommandInterface $command, string $method) - { - $connection = $this->getConnectionByCommand($command); - $response = $connection->$method($command); - - if ($response instanceof ResponseErrorInterface && $response->getErrorType() === 'LOADING') { - throw new ConnectionException($connection, "Redis is loading the dataset in memory [$connection]"); - } - - return $response; - } - - /** - * {@inheritdoc} - */ - public function writeRequest(CommandInterface $command) - { - $this->retryCommandOnFailure($command, __FUNCTION__); - } - - /** - * {@inheritdoc} - */ - public function readResponse(CommandInterface $command) - { - return $this->retryCommandOnFailure($command, __FUNCTION__); - } - - /** - * {@inheritdoc} - */ - public function executeCommand(CommandInterface $command) - { - return $this->retryCommandOnFailure($command, __FUNCTION__); - } - - /** - * {@inheritdoc} - */ - public function __sleep() - { - return ['master', 'slaves', 'pool', 'aliases', 'strategy']; - } - - /** - * {@inheritdoc} - */ - public function getParameters(): ?ParametersInterface - { - if (isset($this->master)) { - return $this->master->getParameters(); - } - - $slave = $this->pickSlave(); - - if (null !== $slave) { - return $slave->getParameters(); - } - - return null; - } - - /** - * Handle connection exception. - * - * @param ConnectionException $exception - * @return void - * @throws ClientException|ConnectionException - */ - private function onConnectionExceptionCallback(ConnectionException $exception) - { - $connection = $exception->getConnection(); - $connection->disconnect(); - - if ($connection === $this->master && !$this->autoDiscovery) { - // Throw immediately when master connection is failing, even - // when the command represents a read-only operation, unless - // automatic discovery has been enabled. - throw $exception; - } - // Otherwise remove the failing slave and attempt to execute - // the command again on one of the remaining slaves... - $this->remove($connection); - - // ... that is, unless we have no more connections to use. - if (!$this->slaves && !$this->master) { - throw $exception; - } elseif ($this->autoDiscovery) { - $this->discover(); - } - } - - /** - * Exception handling callback. - * - * @param Throwable $exception - * @return void - * @throws Throwable - */ - private function onFailCallback(Throwable $exception) - { - if ($exception instanceof ConnectionException) { - $this->onConnectionExceptionCallback($exception); - - return; - } - - if ($exception instanceof MissingMasterException) { - $this->onMissingMasterException($exception); - - return; - } - - if ($exception instanceof TimeoutException) { - $connection = $exception->getConnection(); - - if ($connection) { - $connection->disconnect(); - - return; - } - } - - throw $exception; - } - - /** - * @param MissingMasterException $exception - * @return void - * @throws ClientException - * @throws MissingMasterException - */ - private function onMissingMasterException(MissingMasterException $exception) - { - if ($this->autoDiscovery) { - $this->discover(); - } else { - throw $exception; - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/Replication/ReplicationInterface.php b/v3_ci4/vendor/predis/predis/src/Connection/Replication/ReplicationInterface.php deleted file mode 100644 index d72ab46..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/Replication/ReplicationInterface.php +++ /dev/null @@ -1,53 +0,0 @@ - - * @author Ville Mattila - */ -class SentinelReplication extends AbstractAggregateConnection implements ReplicationInterface -{ - /** - * @var NodeConnectionInterface - */ - protected $master; - - /** - * @var NodeConnectionInterface[] - */ - protected $slaves = []; - - /** - * @var NodeConnectionInterface[] - */ - protected $pool = []; - - /** - * @var NodeConnectionInterface - */ - protected $current; - - /** - * @var string - */ - protected $service; - - /** - * @var ConnectionFactoryInterface - */ - protected $connectionFactory; - - /** - * @var ReplicationStrategy - */ - protected $strategy; - - /** - * Sentinel connection parameters. - * - * Can contain: - * - String URIs (e.g., "tcp://127.0.0.1:26379") - * - Arrays of connection parameters (e.g., ['host' => '127.0.0.1', 'port' => 26379]) - * - ParametersInterface objects - * - NodeConnectionInterface objects - * - * @var array - */ - protected $sentinels = []; - - /** - * @var int - */ - protected $sentinelIndex = 0; - - /** - * @var NodeConnectionInterface - */ - protected $sentinelConnection; - - /** - * @var float - */ - protected $sentinelTimeout = 0.100; - - /** - * Max number of automatic retries of commands upon server failure. - * - * -1 = unlimited retry attempts - * 0 = no retry attempts (fails immediately) - * n = fail only after n retry attempts - * - * @var int - */ - protected $retryLimit = 20; - - /** - * Time to wait in milliseconds before fetching a new configuration from one - * of the sentinel servers. - * - * @var int - */ - protected $retryWait = 1000; - - /** - * Flag for automatic fetching of available sentinels. - * - * @var bool - */ - protected $updateSentinels = false; - - /** - * @param string $service Name of the service for autodiscovery. - * @param array $sentinels Sentinel servers connection parameters. - * @param ConnectionFactoryInterface $connectionFactory Connection factory instance. - * @param ReplicationStrategy|null $strategy Replication strategy instance. - */ - public function __construct( - $service, - array $sentinels, - ConnectionFactoryInterface $connectionFactory, - ?ReplicationStrategy $strategy = null - ) { - $this->sentinels = $sentinels; - $this->service = $service; - $this->connectionFactory = $connectionFactory; - $this->strategy = $strategy ?: new ReplicationStrategy(); - } - - /** - * Sets a default timeout for connections to sentinels. - * - * When "timeout" is present in the connection parameters of sentinels, its - * value overrides the default sentinel timeout. - * - * @param float $timeout Timeout value. - */ - public function setSentinelTimeout($timeout) - { - $this->sentinelTimeout = (float) $timeout; - } - - /** - * Sets the maximum number of retries for commands upon server failure. - * - * -1 = unlimited retry attempts - * 0 = no retry attempts (fails immediately) - * n = fail only after n retry attempts - * - * @param int $retry Number of retry attempts. - */ - public function setRetryLimit($retry) - { - $this->retryLimit = (int) $retry; - } - - /** - * Sets the time to wait (in milliseconds) before fetching a new configuration - * from one of the sentinels. - * - * @param float $milliseconds Time to wait before the next attempt. - */ - public function setRetryWait($milliseconds) - { - $this->retryWait = (float) $milliseconds; - } - - /** - * Set automatic fetching of available sentinels. - * - * @param bool $update Enable or disable automatic updates. - */ - public function setUpdateSentinels($update) - { - $this->updateSentinels = (bool) $update; - } - - /** - * Resets the current connection. - */ - protected function reset() - { - $this->current = null; - } - - /** - * Wipes the current list of master and slaves nodes. - */ - protected function wipeServerList() - { - $this->reset(); - - $this->master = null; - $this->slaves = []; - $this->pool = []; - } - - /** - * {@inheritdoc} - */ - public function add(NodeConnectionInterface $connection) - { - $parameters = $connection->getParameters(); - $role = $parameters->role; - - if ('master' === $role) { - $this->master = $connection; - } elseif ('sentinel' === $role) { - $this->sentinels[] = $connection; - - // sentinels are not considered part of the pool. - return; - } else { - // everything else is considered a slave. - $this->slaves[] = $connection; - } - - $this->pool[(string) $connection] = $connection; - - $this->reset(); - } - - /** - * {@inheritdoc} - */ - public function remove(NodeConnectionInterface $connection) - { - if ($connection === $this->master) { - $this->master = null; - } elseif (false !== $id = array_search($connection, $this->slaves, true)) { - unset($this->slaves[$id]); - } elseif (false !== $id = array_search($connection, $this->sentinels, true)) { - unset($this->sentinels[$id]); - - return true; - } else { - return false; - } - - unset($this->pool[(string) $connection]); - - $this->reset(); - - return true; - } - - /** - * Creates a new connection to a sentinel server. - * - * @return NodeConnectionInterface - */ - protected function createSentinelConnection($parameters) - { - if ($parameters instanceof NodeConnectionInterface) { - return $parameters; - } - - if (is_string($parameters)) { - $parameters = Parameters::parse($parameters); - } - - if (is_array($parameters)) { - // NOTE: sentinels do not accept SELECT command so we must - // explicitly set it to NULL to avoid problems when using default - // parameters set via client options. - $parameters['database'] = null; - - // don't leak password from between configurations - // https://github.com/predis/predis/pull/807/#discussion_r985764770 - if (!isset($parameters['password'])) { - $parameters['password'] = null; - } - - if (!isset($parameters['timeout'])) { - $parameters['timeout'] = $this->sentinelTimeout; - } - } - - return $this->connectionFactory->create($parameters); - } - - /** - * Returns the current sentinel connection. - * - * If there is no active sentinel connection, a new connection is created. - * - * @return NodeConnectionInterface - */ - public function getSentinelConnection() - { - if (!$this->sentinelConnection) { - if ($this->sentinelIndex >= count($this->sentinels)) { - $this->sentinelIndex = 0; - throw new \Predis\ClientException('No sentinel server available for autodiscovery.'); - } - - $sentinel = $this->sentinels[$this->sentinelIndex]; - ++$this->sentinelIndex; - $this->sentinelConnection = $this->createSentinelConnection($sentinel); - } - - return $this->sentinelConnection; - } - - /** - * Fetches an updated list of sentinels from a sentinel. - */ - public function updateSentinels() - { - SENTINEL_QUERY: { - $sentinel = $this->getSentinelConnection(); - - try { - $payload = $sentinel->executeCommand( - RawCommand::create('SENTINEL', 'sentinels', $this->service) - ); - - $this->sentinels = []; - $this->sentinelIndex = 0; - // NOTE: sentinel server does not return itself, so we add it back. - $this->sentinels[] = $sentinel->getParameters()->toArray(); - - foreach ($payload as $sentinel) { - $this->sentinels[] = [ - 'host' => $sentinel[3], - 'port' => $sentinel[5], - 'role' => 'sentinel', - ]; - } - } catch (ConnectionException|StreamInitException $exception) { - $this->sentinelConnection = null; - - goto SENTINEL_QUERY; - } - } - } - - /** - * Fetches the details for the master and slave servers from a sentinel. - */ - public function querySentinel() - { - $this->wipeServerList(); - - $this->updateSentinels(); - $this->getMaster(); - $this->getSlaves(); - } - - /** - * Handles error responses returned by redis-sentinel. - * - * @param NodeConnectionInterface $sentinel Connection to a sentinel server. - * @param ErrorResponseInterface $error Error response. - */ - private function handleSentinelErrorResponse(NodeConnectionInterface $sentinel, ErrorResponseInterface $error) - { - if ($error->getErrorType() === 'IDONTKNOW') { - throw new ConnectionException($sentinel, $error->getMessage()); - } - throw new ServerException($error->getMessage()); - } - - /** - * Fetches the details for the master server from a sentinel. - * - * @param NodeConnectionInterface $sentinel Connection to a sentinel server. - * @param string $service Name of the service. - * - * @return array - */ - protected function querySentinelForMaster(NodeConnectionInterface $sentinel, $service) - { - $payload = $sentinel->executeCommand( - RawCommand::create('SENTINEL', 'get-master-addr-by-name', $service) - ); - - if ($payload === null) { - throw new ServerException('ERR No such master with that name'); - } - - if ($payload instanceof ErrorResponseInterface) { - $this->handleSentinelErrorResponse($sentinel, $payload); - } - - return [ - 'host' => $payload[0], - 'port' => $payload[1], - 'role' => 'master', - ]; - } - - /** - * Fetches the details for the slave servers from a sentinel. - * - * @param NodeConnectionInterface $sentinel Connection to a sentinel server. - * @param string $service Name of the service. - * - * @return array - */ - protected function querySentinelForSlaves(NodeConnectionInterface $sentinel, $service) - { - $slaves = []; - - $payload = $sentinel->executeCommand( - RawCommand::create('SENTINEL', 'slaves', $service) - ); - - if ($payload instanceof ErrorResponseInterface) { - $this->handleSentinelErrorResponse($sentinel, $payload); - } - - foreach ($payload as $slave) { - if ($slave !== [] && !is_string(key($slave))) { - $slave = CommandUtility::arrayToDictionary($slave, null, false); - } - - $flags = explode(',', $slave['flags']); - - if (array_intersect($flags, ['s_down', 'o_down', 'disconnected'])) { - continue; - } - - // ensure `master-link-status` is ok - if (isset($slave['master-link-status']) && $slave['master-link-status'] === 'err') { - continue; - } - - $slaves[] = [ - 'host' => $slave['ip'], - 'port' => $slave['port'], - 'role' => 'slave', - ]; - } - - return $slaves; - } - - /** - * {@inheritdoc} - */ - public function getCurrent() - { - return $this->current; - } - - /** - * {@inheritdoc} - */ - public function getMaster() - { - if ($this->master) { - return $this->master; - } - - if ($this->updateSentinels) { - $this->updateSentinels(); - } - - SENTINEL_QUERY: { - $sentinel = $this->getSentinelConnection(); - - try { - $masterParameters = $this->querySentinelForMaster($sentinel, $this->service); - $masterConnection = $this->connectionFactory->create($masterParameters); - - $this->add($masterConnection); - } catch (ConnectionException|StreamInitException $exception) { - $this->sentinelConnection = null; - - goto SENTINEL_QUERY; - } - } - - return $masterConnection; - } - - /** - * {@inheritdoc} - */ - public function getSlaves() - { - if ($this->slaves) { - return array_values($this->slaves); - } - - if ($this->updateSentinels) { - $this->updateSentinels(); - } - - SENTINEL_QUERY: { - $sentinel = $this->getSentinelConnection(); - - try { - $slavesParameters = $this->querySentinelForSlaves($sentinel, $this->service); - - foreach ($slavesParameters as $slaveParameters) { - $this->add($this->connectionFactory->create($slaveParameters)); - } - } catch (ConnectionException|StreamInitException $exception) { - $this->sentinelConnection = null; - - goto SENTINEL_QUERY; - } - } - - return array_values($this->slaves); - } - - /** - * Returns a random slave. - * - * @return NodeConnectionInterface|null - */ - protected function pickSlave() - { - $slaves = $this->getSlaves(); - - return $slaves - ? $slaves[rand(1, count($slaves)) - 1] - : null; - } - - /** - * Returns the connection instance in charge for the given command. - * - * @param CommandInterface $command Command instance. - * - * @return NodeConnectionInterface - */ - private function getConnectionInternal(CommandInterface $command) - { - if (!$this->current) { - if ($this->strategy->isReadOperation($command) && $slave = $this->pickSlave()) { - $this->current = $slave; - } else { - $this->current = $this->getMaster(); - } - - return $this->current; - } - - if ($this->current === $this->master) { - return $this->current; - } - - if (!$this->strategy->isReadOperation($command)) { - $this->current = $this->getMaster(); - } - - return $this->current; - } - - /** - * Asserts that the specified connection matches an expected role. - * - * @param NodeConnectionInterface $connection Connection to a redis server. - * @param string $role Expected role of the server ("master", "slave" or "sentinel"). - * - * @throws RoleException|ConnectionException - */ - protected function assertConnectionRole(NodeConnectionInterface $connection, $role) - { - $role = strtolower($role); - $retry = $connection->getParameters()->retry; - $actualRole = $retry->callWithRetry(static function () use ($connection) { - return $connection->executeCommand(RawCommand::create('ROLE')); - }); - - if ($actualRole instanceof Error) { - throw new ConnectionException($connection, $actualRole->getMessage()); - } - - if ($role !== $actualRole[0]) { - throw new RoleException($connection, "Expected $role but got $actualRole[0] [$connection]"); - } - } - - /** - * {@inheritdoc} - */ - public function getConnectionByCommand(CommandInterface $command) - { - $connection = $this->getConnectionInternal($command); - - if (!$connection->isConnected()) { - // When we do not have any available slave in the pool we can expect - // read-only operations to hit the master server. - $expectedRole = $this->strategy->isReadOperation($command) && $this->slaves ? 'slave' : 'master'; - $this->assertConnectionRole($connection, $expectedRole); - } - - return $connection; - } - - /** - * {@inheritdoc} - */ - public function getConnectionById($id) - { - return $this->pool[$id] ?? null; - } - - /** - * Returns a connection by its role. - * - * @param string $role Connection role (`master`, `slave` or `sentinel`) - * - * @return NodeConnectionInterface|null - */ - public function getConnectionByRole($role) - { - if ($role === 'master') { - return $this->getMaster(); - } elseif ($role === 'slave') { - return $this->pickSlave(); - } elseif ($role === 'sentinel') { - return $this->getSentinelConnection(); - } - - return null; - } - - /** - * Switches the internal connection in use by the backend. - * - * Sentinel connections are not considered as part of the pool, meaning that - * trying to switch to a sentinel will throw an exception. - * - * @param NodeConnectionInterface $connection Connection instance in the pool. - */ - public function switchTo(NodeConnectionInterface $connection) - { - if ($connection && $connection === $this->current) { - return; - } - - if ($connection !== $this->master && !in_array($connection, $this->slaves, true)) { - throw new InvalidArgumentException('Invalid connection or connection not found.'); - } - - $connection->connect(); - - if ($this->current) { - $this->current->disconnect(); - } - - $this->current = $connection; - } - - /** - * {@inheritdoc} - */ - public function switchToMaster() - { - $connection = $this->getConnectionByRole('master'); - $this->switchTo($connection); - } - - /** - * {@inheritdoc} - */ - public function switchToSlave() - { - $connection = $this->getConnectionByRole('slave'); - $this->switchTo($connection); - } - - /** - * {@inheritdoc} - */ - public function isConnected() - { - return $this->current ? $this->current->isConnected() : false; - } - - /** - * {@inheritdoc} - */ - public function connect() - { - if (!$this->current) { - if (!$this->current = $this->pickSlave()) { - $this->current = $this->getMaster(); - } - } - - $this->current->connect(); - } - - /** - * {@inheritdoc} - */ - public function disconnect() - { - foreach ($this->pool as $connection) { - $connection->disconnect(); - } - } - - /** - * Retries the execution of a command upon server failure after asking a new - * configuration to one of the sentinels. - * - * @param CommandInterface $command Command instance. - * @param string $method Actual method. - * - * @return mixed - */ - private function retryCommandOnFailure(CommandInterface $command, $method) - { - $parameters = $this->getParameters(); - - if ($parameters->isDisabledRetry() || $this->connectionFactory instanceof RelayFactory) { - // Override default parameters, for backward-compatibility - // with current behaviour - $retry = new Retry( - new ExponentialBackoff($this->retryWait * 1000, -1), - $this->retryLimit - ); - } else { - $retry = $parameters->retry; - } - $retry->updateCatchableExceptions([CommunicationException::class]); - - $doCallback = function () use ($method, $command) { - $response = $this->getConnectionByCommand($command)->{$method}($command); - - if ($response instanceof Error && $response->getErrorType() === 'LOADING') { - throw new ConnectionException($this->current, $response->getMessage()); - } - - return $response; - }; - - $failCallback = function (CommunicationException $exception) { - $this->wipeServerList(); - $exception->getConnection()->disconnect(); - }; - - return $retry->callWithRetry($doCallback, $failCallback); - } - - /** - * {@inheritdoc} - */ - public function writeRequest(CommandInterface $command) - { - $this->retryCommandOnFailure($command, __FUNCTION__); - } - - /** - * {@inheritdoc} - */ - public function readResponse(CommandInterface $command) - { - return $this->retryCommandOnFailure($command, __FUNCTION__); - } - - /** - * {@inheritdoc} - */ - public function executeCommand(CommandInterface $command) - { - return $this->retryCommandOnFailure($command, __FUNCTION__); - } - - /** - * Returns the underlying replication strategy. - * - * @return ReplicationStrategy - */ - public function getReplicationStrategy() - { - return $this->strategy; - } - - /** - * {@inheritdoc} - */ - public function __sleep() - { - return [ - 'master', 'slaves', 'pool', 'service', 'sentinels', 'connectionFactory', 'strategy', - ]; - } - - /** - * {@inheritdoc} - */ - public function getParameters(): ?ParametersInterface - { - if (isset($this->master)) { - return $this->master->getParameters(); - } - - if (!empty($this->slaves)) { - return $this->slaves[0]->getParameters(); - } - - if (!empty($this->sentinels)) { - $sentinel = $this->sentinels[0]; - - // Handle string URIs (e.g., "tcp://127.0.0.1:26379") - if (is_string($sentinel)) { - return new Parameters(Parameters::parse($sentinel)); - } - - // After querySentinels(), sentinels array contains plain arrays instead of connection objects - if (is_array($sentinel)) { - return new Parameters($sentinel); - } - - if ($sentinel instanceof ParametersInterface) { - return $sentinel; - } - - return $sentinel->getParameters(); - } - - return null; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/Resource/Exception/StreamInitException.php b/v3_ci4/vendor/predis/predis/src/Connection/Resource/Exception/StreamInitException.php deleted file mode 100644 index 89da1e9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/Resource/Exception/StreamInitException.php +++ /dev/null @@ -1,19 +0,0 @@ -stream = $stream; - $metadata = stream_get_meta_data($this->stream); - $this->seekable = $metadata['seekable']; - $this->readable = (bool) preg_match(self::READABLE_MODES, $metadata['mode']); - $this->writable = (bool) preg_match(self::WRITABLE_MODES, $metadata['mode']); - } - - /** - * {@inheritDoc} - */ - public function __toString(): string - { - if ($this->isSeekable()) { - $this->seek(0); - } - - return $this->getContents(); - } - - /** - * {@inheritDoc} - */ - public function close(): void - { - if (isset($this->stream)) { - fclose($this->stream); - } - - $this->detach(); - } - - /** - * {@inheritDoc} - */ - public function detach() - { - if (!isset($this->stream)) { - return null; - } - - $result = $this->stream; - unset($this->stream); - $this->readable = $this->writable = $this->seekable = false; - - return $result; - } - - /** - * {@inheritDoc} - */ - public function getSize(): ?int - { - if (!isset($this->stream)) { - return null; - } - - $stats = fstat($this->stream); - if (is_array($stats) && isset($stats['size'])) { - return $stats['size']; - } - - return null; - } - - /** - * {@inheritDoc} - */ - public function tell(): int - { - if (!isset($this->stream)) { - throw new RuntimeException('Stream is detached'); - } - - $result = ftell($this->stream); - - if ($result === false) { - throw new RuntimeException('Unable to determine stream position'); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - public function eof(): bool - { - if (!isset($this->stream)) { - throw new RuntimeException('Stream is detached'); - } - - return feof($this->stream); - } - - /** - * {@inheritDoc} - */ - public function isSeekable(): bool - { - return $this->seekable; - } - - /** - * {@inheritDoc} - */ - public function seek(int $offset, int $whence = SEEK_SET): void - { - if (!isset($this->stream)) { - throw new RuntimeException('Stream is detached'); - } - - if (!$this->isSeekable()) { - throw new RuntimeException('Stream is not seekable'); - } - - if (fseek($this->stream, $offset, $whence) === -1) { - throw new RuntimeException("Unable to seek stream from offset {$offset} to whence {$whence}"); - } - } - - /** - * {@inheritDoc} - */ - public function rewind(): void - { - $this->seek(0); - } - - /** - * {@inheritDoc} - */ - public function isWritable(): bool - { - return $this->writable; - } - - /** - * {@inheritDoc} - * @throws RuntimeException - */ - public function write(string $string): int - { - if (!isset($this->stream)) { - throw new RuntimeException('Stream is detached'); - } - - if (!$this->isWritable()) { - throw new RuntimeException('Cannot write to a non-writable stream'); - } - - $result = fwrite($this->stream, $string); - - if ($result === false || $result === 0) { - $metadata = $this->getMetadata(); - - if ($this->eof()) { - throw new RuntimeException('Connection closed by peer during write', 1); - } - - if (!is_resource($this->stream)) { - throw new RuntimeException( - 'Stream resource is no longer valid', - 1 - ); - } - - if (array_key_exists('timed_out', $metadata) && $metadata['timed_out']) { - throw new RuntimeException( - 'Stream has been timed out', - 2 - ); - } - - throw new RuntimeException('Unable to write to stream', 1); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - public function isReadable(): bool - { - return $this->readable; - } - - /** - * {@inheritDoc} - * @param int $length If length = -1, reads a stream line by line (e.g fgets()) - * @throws RuntimeException - */ - public function read(int $length): string - { - if (!isset($this->stream)) { - throw new RuntimeException('Stream is detached'); - } - - if (!$this->isReadable()) { - throw new RuntimeException('Cannot read from non-readable stream'); - } - - if ($length < -1) { - throw new RuntimeException('Length parameter cannot be negative'); - } - - if (0 === $length) { - return ''; - } - - if ($length === -1) { - $string = fgets($this->stream); - } else { - $string = fread($this->stream, $length); - } - - if (false === $string) { - $metadata = $this->getMetadata(); - - if ($this->eof()) { - throw new RuntimeException('Connection closed by peer during read', 1); - } - - if (!is_resource($this->stream)) { - throw new RuntimeException( - 'Stream resource is no longer valid', - 1 - ); - } - - if (array_key_exists('timed_out', $metadata) && $metadata['timed_out']) { - throw new RuntimeException( - 'Stream has been timed out', - 2 - ); - } - - throw new RuntimeException('Unable to read from stream', 1); - } - - return $string; - } - - /** - * {@inheritDoc} - */ - public function getContents(): string - { - if (!isset($this->stream)) { - throw new RuntimeException('Stream is detached'); - } - - if (!$this->isReadable()) { - throw new RuntimeException('Cannot read from non-readable stream'); - } - - return stream_get_contents($this->stream); - } - - /** - * {@inheritDoc} - * @return mixed - */ - public function getMetadata(?string $key = null) - { - if (!isset($this->stream)) { - return null; - } - - if (!$key) { - return stream_get_meta_data($this->stream); - } - - $metadata = stream_get_meta_data($this->stream); - - return $metadata[$key] ?? null; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/Resource/StreamFactory.php b/v3_ci4/vendor/predis/predis/src/Connection/Resource/StreamFactory.php deleted file mode 100644 index 3e2a6e3..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/Resource/StreamFactory.php +++ /dev/null @@ -1,243 +0,0 @@ -assertParameters($parameters); - - switch ($parameters->scheme) { - case 'tcp': - case 'redis': - $stream = $this->tcpStreamInitializer($parameters); - break; - - case 'unix': - $stream = $this->unixStreamInitializer($parameters); - break; - - case 'tls': - case 'rediss': - $stream = $this->tlsStreamInitializer($parameters); - break; - - default: - throw new InvalidArgumentException("Invalid scheme: '{$parameters->scheme}'."); - } - - return new Stream($stream); - } - - /** - * Checks some parameters used to initialize the connection. - * - * @param ParametersInterface $parameters Initialization parameters for the connection. - * - * @return ParametersInterface - * @throws InvalidArgumentException - */ - protected function assertParameters(ParametersInterface $parameters): ParametersInterface - { - switch ($parameters->scheme) { - case 'tcp': - case 'redis': - case 'unix': - case 'tls': - case 'rediss': - break; - - default: - throw new InvalidArgumentException("Invalid scheme: '$parameters->scheme'."); - } - - return $parameters; - } - - /** - * Initializes a TCP stream resource. - * - * @param ParametersInterface $parameters Initialization parameters for the connection. - * - * @return resource - * @throws StreamInitException - */ - protected function tcpStreamInitializer(ParametersInterface $parameters) - { - if (!filter_var($parameters->host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - $address = "tcp://$parameters->host:$parameters->port"; - } else { - $address = "tcp://[$parameters->host]:$parameters->port"; - } - - $flags = STREAM_CLIENT_CONNECT; - - if (isset($parameters->async_connect) && $parameters->async_connect) { - $flags |= STREAM_CLIENT_ASYNC_CONNECT; - } - - if (isset($parameters->persistent)) { - if (false !== $persistent = filter_var($parameters->persistent, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) { - $flags |= STREAM_CLIENT_PERSISTENT; - - if ($persistent === null) { - $address = "{$address}/{$parameters->persistent}"; - } - } - } - - return $this->createStreamSocket($parameters, $address, $flags); - } - - /** - * Initializes a UNIX stream resource. - * - * @param ParametersInterface $parameters Initialization parameters for the connection. - * - * @return resource - * @throws StreamInitException - */ - protected function unixStreamInitializer(ParametersInterface $parameters) - { - if (!isset($parameters->path)) { - throw new InvalidArgumentException('Missing UNIX domain socket path.'); - } - - $flags = STREAM_CLIENT_CONNECT; - - if (isset($parameters->persistent)) { - if (false !== $persistent = filter_var($parameters->persistent, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) { - $flags |= STREAM_CLIENT_PERSISTENT; - - if ($persistent === null) { - throw new InvalidArgumentException( - 'Persistent connection IDs are not supported when using UNIX domain sockets.' - ); - } - } - } - - return $this->createStreamSocket($parameters, "unix://{$parameters->path}", $flags); - } - - /** - * Initializes a SSL-encrypted TCP stream resource. - * - * @param ParametersInterface $parameters Initialization parameters for the connection. - * - * @return resource - * @throws StreamInitException - */ - protected function tlsStreamInitializer(ParametersInterface $parameters) - { - $resource = $this->tcpStreamInitializer($parameters); - $metadata = stream_get_meta_data($resource); - - // Detect if crypto mode is already enabled for this stream (PHP >= 7.0.0). - if (isset($metadata['crypto'])) { - return $resource; - } - - if (isset($parameters->ssl) && is_array($parameters->ssl)) { - $options = $parameters->ssl; - } else { - $options = []; - } - - if (!isset($options['crypto_type'])) { - $options['crypto_type'] = STREAM_CRYPTO_METHOD_TLS_CLIENT; - } - - $context_options = function_exists('stream_context_set_options') - ? stream_context_set_options($resource, ['ssl' => $options]) - : stream_context_set_option($resource, ['ssl' => $options]); - - if (!$context_options) { - $this->onInitializationError($resource, $parameters, 'Error while setting SSL context options'); - } - - if (!stream_socket_enable_crypto($resource, true, $options['crypto_type'])) { - $this->onInitializationError($resource, $parameters, 'Error while switching to encrypted communication'); - } - - return $resource; - } - - /** - * Creates a connected stream socket resource. - * - * @param ParametersInterface $parameters Connection parameters. - * @param string $address Address for stream_socket_client(). - * @param int $flags Flags for stream_socket_client(). - * - * @return resource - * @throws StreamInitException - */ - protected function createStreamSocket(ParametersInterface $parameters, $address, $flags) - { - $timeout = (isset($parameters->timeout) ? (float) $parameters->timeout : 5.0); - $context = stream_context_create(['socket' => ['tcp_nodelay' => (bool) $parameters->tcp_nodelay]]); - - if ( - (isset($parameters->persistent) && $parameters->persistent) - && (isset($parameters->conn_uid) && $parameters->conn_uid) - ) { - $conn_uid = '/' . $parameters->conn_uid; - } else { - $conn_uid = ''; - } - - // Needs to create multiple persistent connections to the same resource - $address = $address . $conn_uid; - - if (!$resource = @stream_socket_client($address, $errno, $errstr, $timeout, $flags, $context)) { - $this->onInitializationError($resource, $parameters, trim($errstr), $errno); - } - - if (isset($parameters->read_write_timeout)) { - $rwtimeout = (float) $parameters->read_write_timeout; - $rwtimeout = $rwtimeout > 0 ? $rwtimeout : -1; - $timeoutSeconds = floor($rwtimeout); - $timeoutUSeconds = ($rwtimeout - $timeoutSeconds) * 1000000; - stream_set_timeout($resource, $timeoutSeconds, $timeoutUSeconds); - } - - return $resource; - } - - /** - * Helper method to handle connection errors. - * - * @param string $message Error message. - * @param int $code Error code. - * @throws StreamInitException - */ - protected function onInitializationError($stream, ParametersInterface $parameters, string $message, int $code = 0): void - { - if (is_resource($stream)) { - fclose($stream); - } - - throw new StreamInitException("$message [{$parameters}]", $code); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Connection/Resource/StreamFactoryInterface.php b/v3_ci4/vendor/predis/predis/src/Connection/Resource/StreamFactoryInterface.php deleted file mode 100644 index 1e2c285..0000000 --- a/v3_ci4/vendor/predis/predis/src/Connection/Resource/StreamFactoryInterface.php +++ /dev/null @@ -1,27 +0,0 @@ -streamFactory = $factory ?? new StreamFactory(); - } - - /** - * Disconnects from the server and destroys the underlying resource when the - * garbage collector kicks in only if the connection has not been marked as - * persistent. - */ - public function __destruct() - { - if (isset($this->parameters->persistent) && $this->parameters->persistent) { - return; - } - - $this->disconnect(); - } - - /** - * {@inheritdoc} - */ - protected function createResource(): StreamInterface - { - return $this->streamFactory->createStream($this->parameters); - } - - /** - * {@inheritdoc} - */ - public function connect() - { - if (parent::connect() && $this->initCommands) { - $responses = $this->sendPipeline($this->initCommands); - - if ($responses[0][0] instanceof ErrorResponseInterface) { - // Error in HELLO command, Redis < 6.0. - // We need to handle it separately and re-send other commands. - $this->handleOnConnectResponse($responses[0][0], $responses[0][1]); - $responses = $this->sendPipeline(array_slice($this->initCommands, 1)); - } - - foreach ($responses as $response) { - $this->handleOnConnectResponse($response[0], $response[1]); - } - } - } - - /** - * Sends commands to the server as pipeline and returns responses. - * - * @param CommandInterface[] $commands - * @return array - * @throws CommunicationException - */ - protected function sendPipeline(array $commands): array - { - $serialisedCommands = ''; - - foreach ($commands as $command) { - $serialisedCommands .= $command->serializeCommand(); - } - - $this->write($serialisedCommands); - $responses = []; - - foreach ($commands as $command) { - $responses[] = [$this->readResponse($command), $command]; - } - - return $responses; - } - - /** - * {@inheritdoc} - */ - public function disconnect() - { - if ($this->isConnected()) { - $this->getResource()->close(); - - parent::disconnect(); - } - } - - /** - * {@inheritDoc} - * @throws CommunicationException - */ - public function write(string $buffer): void - { - $stream = $this->getResource(); - - while (($length = strlen($buffer)) > 0) { - try { - $written = $stream->write($buffer); - } catch (RuntimeException $e) { - $this->onStreamError($e, 'Error while writing bytes to the server.'); - } - - if ($length === $written) { // @phpstan-ignore-line - return; - } - - $buffer = substr($buffer, $written); // @phpstan-ignore-line - } - } - - /** - * {@inheritdoc} - * @throws PushNotificationException - * @throws StreamInitException|CommunicationException - */ - public function read() - { - $stream = $this->getResource(); - - if ($stream->eof()) { - $this->onStreamError(new RuntimeException('', 1), 'Stream is already at the end'); - } - - try { - $chunk = $stream->read(-1); - } catch (RuntimeException $e) { - $this->onStreamError($e, 'Error while reading line from the server.'); - } - - try { - $parsedData = $this->parserStrategy->parseData($chunk); // @phpstan-ignore-line - } catch (UnexpectedTypeException $e) { - $this->onProtocolError("Unknown response prefix: '{$e->getType()}'."); - - return; - } - - if (!is_array($parsedData)) { - return $parsedData; - } - - switch ($parsedData['type']) { - case Resp3Strategy::TYPE_PUSH: - $data = []; - - for ($i = 0; $i < $parsedData['value']; ++$i) { - $data[$i] = $this->read(); - } - - return new PushResponse($data); - case Resp2Strategy::TYPE_ARRAY: - $data = []; - - for ($i = 0; $i < $parsedData['value']; ++$i) { - $data[$i] = $this->read(); - } - - return $data; - - case Resp2Strategy::TYPE_BULK_STRING: - $bulkData = $this->readByChunks($stream, $parsedData['value']); - - return substr($bulkData, 0, -2); - - case Resp3Strategy::TYPE_VERBATIM_STRING: - $bulkData = $this->readByChunks($stream, $parsedData['value']); - - return substr($bulkData, $parsedData['offset'], -2); - - case Resp3Strategy::TYPE_BLOB_ERROR: - $errorMessage = $this->readByChunks($stream, $parsedData['value']); - - return new Error(substr($errorMessage, 0, -2)); - - case Resp3Strategy::TYPE_MAP: - $data = []; - - for ($i = 0; $i < $parsedData['value']; ++$i) { - $key = $this->read(); - $data[$key] = $this->read(); - } - - return $data; - - case Resp3Strategy::TYPE_SET: - $data = []; - - for ($i = 0; $i < $parsedData['value']; ++$i) { - $element = $this->read(); - - if (!in_array($element, $data, true)) { - $data[] = $element; - } - } - - return $data; - } - - return $parsedData; - } - - /** - * {@inheritdoc} - */ - public function writeRequest(CommandInterface $command) - { - $buffer = $command->serializeCommand(); - $this->write($buffer); - } - - /** - * {@inheritDoc} - */ - public function hasDataToRead(): bool - { - return !$this->getResource()->eof(); - } - - /** - * Reads given resource split on chunks with given size. - * - * @param StreamInterface $stream - * @param int $chunkSize - * @return string - * @throws CommunicationException - */ - private function readByChunks(StreamInterface $stream, int $chunkSize): string - { - $string = ''; - $bytesLeft = ($chunkSize += 2); - - do { - try { - $chunk = $stream->read(min($bytesLeft, 4096)); - } catch (RuntimeException $e) { - $this->onStreamError($e, 'Error while reading bytes from the server.'); - } - - $string .= $chunk; // @phpstan-ignore-line - $bytesLeft = $chunkSize - strlen($string); - } while ($bytesLeft > 0); - - return $string; - } - - /** - * Handle response from on-connect command. - * - * @param $response - * @param CommandInterface $command - * @return void - * @throws CommunicationException - */ - private function handleOnConnectResponse($response, CommandInterface $command): void - { - if ($response instanceof ErrorResponseInterface) { - $this->handleError($response, $command); - } - - if ($command->getId() === 'HELLO' && is_array($response)) { - // Searching for the CLIENT ID in RESP2 connection tricky because no dictionaries. - if ( - $this->getParameters()->protocol == 2 - && false !== $key = array_search('id', $response, true) - ) { - $this->clientId = $response[$key + 1]; - } elseif ($this->getParameters()->protocol == 3) { - $this->clientId = $response['id']; - } - } - } - - /** - * Handle server errors. - * - * @param ErrorResponseInterface $error - * @param CommandInterface $failedCommand - * @return void - * @throws CommunicationException - */ - private function handleError(ErrorResponseInterface $error, CommandInterface $failedCommand): void - { - if ($failedCommand->getId() === 'CLIENT') { - // Do nothing on CLIENT SETINFO command failure - return; - } - - if ($failedCommand->getId() === 'HELLO') { - if (in_array('AUTH', $failedCommand->getArguments(), true)) { - $parameters = $this->getParameters(); - - // If Redis <= 6.0 - $auth = new RawCommand('AUTH', [$parameters->password]); - $response = $this->executeCommand($auth); - - if ($response instanceof ErrorResponseInterface) { - $this->onConnectionError("Failed: {$response->getMessage()}"); - } - } - - $setName = new RawCommand('CLIENT', ['SETNAME', 'predis']); - $response = $this->executeCommand($setName); - $this->handleOnConnectResponse($response, $setName); - - return; - } - - $this->onConnectionError("Failed: {$error->getMessage()}"); - } - - /** - * Handles stream-related exceptions. - * - * @param RuntimeException $e - * @param string|null $message - * @throws RuntimeException|CommunicationException - */ - protected function onStreamError($e, ?string $message = null) - { - // Code = 1 represents issues related to read/write operation, connection broken. - if ($e->getCode() === 1) { - $this->onConnectionError($message); - } elseif ($e->getCode() === 2) { - // Operation has been timed out, connection not necessarily broken. - $this->onTimeoutError(); - } - - throw $e; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/AbstractConsumer.php b/v3_ci4/vendor/predis/predis/src/Consumer/AbstractConsumer.php deleted file mode 100644 index 0cb4aa1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/AbstractConsumer.php +++ /dev/null @@ -1,112 +0,0 @@ -client = $client; - } - - /** - * {@inheritDoc} - */ - public function stop(bool $drop = false): bool - { - $this->isValid = false; - - if ($drop) { - $this->client->disconnect(); - - return true; - } - - return true; - } - - public function getClient(): ClientInterface - { - return $this->client; - } - - /** - * {@inheritDoc} - */ - public function current() - { - return $this->getValue(); - } - - /** - * Returns last message from server. - * - * @return mixed - */ - #[ReturnTypeWillChange] - abstract protected function getValue(); - - /** - * {@inheritDoc} - */ - public function valid() - { - return $this->isValid; - } - - /** - * {@inheritDoc} - */ - public function next() - { - if ($this->valid()) { - ++$this->position; - } - } - - /** - * {@inheritDoc} - */ - #[ReturnTypeWillChange] - public function key() - { - return $this->position; - } - - /** - * {@inheritDoc} - */ - #[ReturnTypeWillChange] - public function rewind() - { - // NOOP - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/AbstractDispatcherLoop.php b/v3_ci4/vendor/predis/predis/src/Consumer/AbstractDispatcherLoop.php deleted file mode 100644 index 3eaf206..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/AbstractDispatcherLoop.php +++ /dev/null @@ -1,86 +0,0 @@ -consumer = $consumer; - } - - /** - * {@inheritDoc} - */ - public function getConsumer(): ConsumerInterface - { - return $this->consumer; - } - - /** - * {@inheritDoc} - */ - public function setDefaultCallback(?callable $callback = null): void - { - $this->defaultCallback = $callback; - } - - /** - * {@inheritDoc} - */ - public function attachCallback(string $messageType, callable $callback): void - { - $this->callbacksDictionary[$messageType] = $callback; - } - - /** - * {@inheritDoc} - */ - public function detachCallback(string $messageType): void - { - if (isset($this->callbacksDictionary[$messageType])) { - unset($this->callbacksDictionary[$messageType]); - } - } - - /** - * {@inheritDoc} - */ - abstract public function run(): void; - - /** - * {@inheritDoc} - */ - public function stop(): void - { - $this->consumer->stop(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/ConsumerInterface.php b/v3_ci4/vendor/predis/predis/src/Consumer/ConsumerInterface.php deleted file mode 100644 index c894b7e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/ConsumerInterface.php +++ /dev/null @@ -1,64 +0,0 @@ -options = $options ?: []; - $this->setSubscriptionContext($client->getConnection()); - - parent::__construct($client); - $this->checkCapabilities($client); - - $this->client = $client; - - $this->genericSubscribeInit('subscribe'); - $this->genericSubscribeInit('ssubscribe'); - $this->genericSubscribeInit('psubscribe'); - } - - /** - * Returns subscription context for current instance. - * - * @return SubscriptionContext - */ - public function getSubscriptionContext(): SubscriptionContext - { - return $this->subscriptionContext; - } - - /** - * Checks if the client instance satisfies the required conditions needed to - * initialize a PUB/SUB consumer. - * - * @param ClientInterface $client Client instance used by the consumer. - * - * @throws NotSupportedException - */ - private function checkCapabilities(ClientInterface $client) - { - $commands = ['publish', 'spublish', 'subscribe', 'ssubscribe', 'unsubscribe', 'sunsubscribe', 'psubscribe', 'punsubscribe']; - - if (!$client->getCommandFactory()->supports(...$commands)) { - throw new NotSupportedException( - 'PUB/SUB commands are not supported by the current command factory.' - ); - } - } - - /** - * This method shares the logic to handle SUBSCRIBE, SSUBSCRIBE, PSUBSCRIBE. - * - * @param string $subscribeAction Type of subscription. - */ - private function genericSubscribeInit($subscribeAction) - { - if (isset($this->options[$subscribeAction])) { - $this->$subscribeAction($this->options[$subscribeAction]); - } - } - - /** - * {@inheritdoc} - */ - protected function writeRequest($method, $arguments) - { - $this->client->getConnection()->writeRequest( - $this->client->createCommand($method, - Command::normalizeArguments($arguments) - ) - ); - } - - /** - * Automatically stops the consumer when the garbage collector kicks in. - */ - public function __destruct() - { - $this->stop(true); - } - - /** - * Checks if the specified flag is valid based on the state of the consumer. - * - * @param int $value Flag. - * - * @return bool - */ - protected function isFlagSet($value) - { - return ($this->statusFlags & $value) === $value; - } - - /** - * Subscribes to the specified channels. - * - * @param string ...$channels One or more channel names. - */ - public function subscribe(string ...$channels) - { - $this->writeRequest(self::SUBSCRIBE, func_get_args()); - $this->statusFlags |= self::STATUS_SUBSCRIBED; - } - - /** - * Subscribes to the specified shard channels. - * - * @param string ...$channels - */ - public function ssubscribe(string ...$channels) - { - $this->writeRequest(self::SSUBSCRIBE, func_get_args()); - $this->statusFlags |= self::STATUS_SSUBSCRIBED; - } - - /** - * Unsubscribes from the specified channels. - * - * @param string ...$channel One or more channel names. - */ - public function unsubscribe(...$channel) - { - $this->writeRequest(self::UNSUBSCRIBE, func_get_args()); - } - - /** - * Unsubscribes from the specified shard channels. - * - * @param string ...$channels - */ - public function sunsubscribe(string ...$channels) - { - $this->writeRequest(self::SUNSUBSCRIBE, func_get_args()); - } - - /** - * Subscribes to the specified channels using a pattern. - * - * @param string ...$pattern One or more channel name patterns. - */ - public function psubscribe(...$pattern) - { - $this->writeRequest(self::PSUBSCRIBE, func_get_args()); - $this->statusFlags |= self::STATUS_PSUBSCRIBED; - } - - /** - * Unsubscribes from the specified channels using a pattern. - * - * @param string ...$pattern One or more channel name patterns. - */ - public function punsubscribe(...$pattern) - { - $this->writeRequest(self::PUNSUBSCRIBE, func_get_args()); - } - - /** - * PING the server with an optional payload that will be echoed as a - * PONG message in the pub/sub loop. - * - * @param string $payload Optional PING payload. - */ - public function ping($payload = null) - { - $this->writeRequest('PING', [$payload]); - } - - /** - * Closes the context by unsubscribing from all the subscribed channels. The - * context can be forcefully closed by dropping the underlying connection. - * - * @param bool $drop Indicates if the context should be closed by dropping the connection. - * - * @return bool Returns false when there are no pending messages. - */ - public function stop(bool $drop = false): bool - { - if (!$this->valid()) { - return false; - } - - if ($drop) { - $this->invalidate(); - $this->disconnect(); - } else { - if ($this->isFlagSet(self::STATUS_SUBSCRIBED)) { - $this->unsubscribe(); - } - if ($this->isFlagSet(self::STATUS_PSUBSCRIBED)) { - $this->punsubscribe(); - } - if ($this->isFlagSet(self::STATUS_SSUBSCRIBED)) { - $this->sunsubscribe(); - } - } - - return !$drop; - } - - /** - * {@inheritdoc} - */ - public function current() - { - return $this->getValue(); - } - - /** - * Checks if the consumer is still in a valid state to continue. - * - * @return bool - */ - public function valid() - { - $isValid = $this->isFlagSet(self::STATUS_VALID); - $subscriptionFlags = self::STATUS_SUBSCRIBED | self::STATUS_PSUBSCRIBED | self::STATUS_SSUBSCRIBED; - $hasSubscriptions = ($this->statusFlags & $subscriptionFlags) > 0; - - return $isValid && $hasSubscriptions; - } - - /** - * Resets the state of the consumer. - */ - protected function invalidate() - { - $this->statusFlags = 0; // 0b0000; - } - - /** - * {@inheritdoc} - */ - protected function disconnect() - { - $this->client->disconnect(); - } - - /** - * {@inheritdoc} - */ - protected function getValue() - { - /** @var NodeConnectionInterface $connection */ - $connection = $this->client->getConnection(); - $response = $connection->read(); - - switch ($response[0]) { - case self::SUBSCRIBE: - case self::SSUBSCRIBE: - case self::UNSUBSCRIBE: - case self::SUNSUBSCRIBE: - case self::PSUBSCRIBE: - case self::PUNSUBSCRIBE: - if ($response[2] === 0) { - $this->invalidate(); - } - // The missing break here is intentional as we must process - // subscriptions and unsubscriptions as standard messages. - // no break - - case self::MESSAGE: - return (object) [ - 'kind' => $response[0], - 'channel' => $response[1], - 'payload' => $response[2], - ]; - - case self::PMESSAGE: - return (object) [ - 'kind' => $response[0], - 'pattern' => $response[1], - 'channel' => $response[2], - 'payload' => $response[3], - ]; - - case self::PONG: - return (object) [ - 'kind' => $response[0], - 'payload' => $response[1], - ]; - - default: - throw new ClientException( - "Unknown message type '{$response[0]}' received in the PUB/SUB context." - ); - } - } - - /** - * Set subscription context depends on connection. - * - * @param NodeConnectionInterface $connection - * @return void - */ - private function setSubscriptionContext(ConnectionInterface $connection): void - { - if ($connection instanceof ClusterInterface) { - $this->subscriptionContext = new SubscriptionContext(SubscriptionContext::CONTEXT_SHARDED); - } else { - $this->subscriptionContext = new SubscriptionContext(); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/PubSub/DispatcherLoop.php b/v3_ci4/vendor/predis/predis/src/Consumer/PubSub/DispatcherLoop.php deleted file mode 100644 index 104cf55..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/PubSub/DispatcherLoop.php +++ /dev/null @@ -1,118 +0,0 @@ -consumer = $consumer; - } - - /** - * Binds a callback to a channel. - * - * @param string $messageType Channel name. - * @param callable $callback A callback. - */ - public function attachCallback(string $messageType, callable $callback): void - { - $callbackName = $this->getPrefixKeys() . $messageType; - - $this->callbacksDictionary[$callbackName] = $callback; - - if ($this->consumer->getSubscriptionContext()->getContext() === SubscriptionContext::CONTEXT_SHARDED) { - $this->consumer->ssubscribe($messageType); - } else { - $this->consumer->subscribe($messageType); - } - } - - /** - * Stops listening to a channel and removes the associated callback. - * - * @param string $messageType Redis channel. - */ - public function detachCallback(string $messageType): void - { - $callbackName = $this->getPrefixKeys() . $messageType; - - if (isset($this->callbacksDictionary[$callbackName])) { - unset($this->callbacksDictionary[$callbackName]); - - if ($this->consumer->getSubscriptionContext()->getContext() === SubscriptionContext::CONTEXT_SHARDED) { - $this->consumer->sunsubscribe($messageType); - } else { - $this->consumer->unsubscribe($messageType); - } - } - } - - /** - * Starts the dispatcher loop. - */ - public function run(): void - { - foreach ($this->consumer as $message) { - $kind = $message->kind; - - if ($kind !== Consumer::MESSAGE && $kind !== Consumer::PMESSAGE) { - if (isset($this->defaultCallback)) { - $callback = $this->defaultCallback; - $callback($message, $this); - } - - continue; - } - - if (isset($this->callbacksDictionary[$message->channel])) { - $callback = $this->callbacksDictionary[$message->channel]; - $callback($message->payload, $this); - } elseif (isset($this->defaultCallback)) { - $callback = $this->defaultCallback; - $callback($message, $this); - } - } - } - - /** - * Return the prefix used for keys. - * - * @return string - */ - protected function getPrefixKeys(): string - { - $options = $this->consumer->getClient()->getOptions(); - - if (isset($options->prefix)) { - /** @var KeyPrefixProcessor $processor */ - $processor = $options->prefix; - - return $processor->getPrefix(); - } - - return ''; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/PubSub/RelayConsumer.php b/v3_ci4/vendor/predis/predis/src/Consumer/PubSub/RelayConsumer.php deleted file mode 100644 index 0fdaec5..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/PubSub/RelayConsumer.php +++ /dev/null @@ -1,106 +0,0 @@ -statusFlags |= self::STATUS_SUBSCRIBED; - - $command = $this->client->createCommand('subscribe', [ - $channels, - static function ($relay, $channel, $message) use ($callback) { - $callback((object) [ - 'kind' => is_null($message) ? self::SUBSCRIBE : self::MESSAGE, - 'channel' => $channel, - 'payload' => $message, - ], $relay); - }, - ]); - - $this->client->getConnection()->executeCommand($command); - - $this->invalidate(); - } - - /** - * Subscribes to the specified channels using a pattern. - * - * @param string ...$pattern One or more channel name patterns. - * @param callable $callback The message callback. - */ - public function psubscribe(...$pattern) // @phpstan-ignore-line - { - $patterns = func_get_args(); - $callback = array_pop($patterns); - - $this->statusFlags |= self::STATUS_PSUBSCRIBED; - - $command = $this->client->createCommand('psubscribe', [ - $patterns, - static function ($relay, $pattern, $channel, $message) use ($callback) { - $callback((object) [ - 'kind' => is_null($message) ? self::PSUBSCRIBE : self::PMESSAGE, - 'pattern' => $pattern, - 'channel' => $channel, - 'payload' => $message, - ], $relay); - }, - ]); - - $this->client->getConnection()->executeCommand($command); - - $this->invalidate(); - } - - /** - * {@inheritDoc} - */ - protected function genericSubscribeInit($subscribeAction) - { - if (isset($this->options[$subscribeAction])) { - throw new NotSupportedException('Relay does not support Pub/Sub constructor options.'); - } - } - - /** - * {@inheritDoc} - */ - public function ping($payload = null) - { - throw new NotSupportedException('Relay does not support PING in Pub/Sub.'); - } - - /** - * {@inheritDoc} - */ - public function stop($drop = false): bool - { - return false; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/PubSub/SubscriptionContext.php b/v3_ci4/vendor/predis/predis/src/Consumer/PubSub/SubscriptionContext.php deleted file mode 100644 index fa7acda..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/PubSub/SubscriptionContext.php +++ /dev/null @@ -1,37 +0,0 @@ -context = $context; - } - - /** - * @return string - */ - public function getContext(): string - { - return $this->context; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/Push/Consumer.php b/v3_ci4/vendor/predis/predis/src/Consumer/Push/Consumer.php deleted file mode 100644 index 7983dd2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/Push/Consumer.php +++ /dev/null @@ -1,55 +0,0 @@ -client); - } - } - - /** - * @return PushResponseInterface|null - */ - public function current(): ?PushResponseInterface - { - return parent::current(); - } - - /** - * Reads line from connection and returns push response or null on any other type. - * - * @return PushResponseInterface|null - */ - protected function getValue(): ?PushResponseInterface - { - /** @var NodeConnectionInterface $connection */ - $connection = $this->client->getConnection(); - $response = $connection->read(); - - return ($response instanceof PushResponse) ? $response : null; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/Push/DispatcherLoop.php b/v3_ci4/vendor/predis/predis/src/Consumer/Push/DispatcherLoop.php deleted file mode 100644 index e233c1f..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/Push/DispatcherLoop.php +++ /dev/null @@ -1,43 +0,0 @@ -consumer = $consumer; - } - - /** - * {@inheritDoc} - */ - public function run(): void - { - foreach ($this->consumer as $notification) { - if (null !== $notification) { - $messageType = $notification->getDataType(); - - if (isset($this->callbacksDictionary[$messageType])) { - $callback = $this->callbacksDictionary[$messageType]; - $callback($notification->getPayload(), $this); - } elseif (isset($this->defaultCallback)) { - $callback = $this->defaultCallback; - $callback($notification->getPayload(), $this); - } - } - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/Push/PushNotificationException.php b/v3_ci4/vendor/predis/predis/src/Consumer/Push/PushNotificationException.php deleted file mode 100644 index bb50399..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/Push/PushNotificationException.php +++ /dev/null @@ -1,19 +0,0 @@ -response = $serverResponse; - } - - /** - * {@inheritDoc} - * @throws PushNotificationException - */ - public function getDataType(): string - { - if (!isset($this->response[0])) { - throw new PushNotificationException('Invalid server response'); - } - - return $this->response[0]; - } - - /** - * {@inheritDoc} - */ - public function getPayload(): array - { - return array_slice($this->response, 1); - } - - public function offsetExists($offset): bool - { - return isset($this->response[$offset]); - } - - #[ReturnTypeWillChange] - public function offsetGet($offset) - { - return $this->response[$offset]; - } - - public function offsetSet($offset, $value): void - { - $this->response[$offset] = $value; - } - - public function offsetUnset($offset): void - { - unset($this->response[$offset]); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Consumer/Push/PushResponseInterface.php b/v3_ci4/vendor/predis/predis/src/Consumer/Push/PushResponseInterface.php deleted file mode 100644 index a865371..0000000 --- a/v3_ci4/vendor/predis/predis/src/Consumer/Push/PushResponseInterface.php +++ /dev/null @@ -1,37 +0,0 @@ -assertClient($client); - - $this->client = $client; - - $this->start(); - } - - /** - * Automatically stops the consumer when the garbage collector kicks in. - */ - public function __destruct() - { - $this->stop(); - } - - /** - * Checks if the passed client instance satisfies the required conditions - * needed to initialize a monitor consumer. - * - * @param ClientInterface $client Client instance used by the consumer. - * - * @throws NotSupportedException - */ - private function assertClient(ClientInterface $client) - { - if ($client->getConnection() instanceof ClusterInterface) { - throw new NotSupportedException( - 'Cannot initialize a monitor consumer over cluster connections.' - ); - } - - if (!$client->getCommandFactory()->supports('MONITOR')) { - throw new NotSupportedException("'MONITOR' is not supported by the current command factory."); - } - } - - /** - * Initializes the consumer and sends the MONITOR command to the server. - */ - protected function start() - { - $this->client->executeCommand( - $this->client->createCommand('MONITOR') - ); - $this->valid = true; - } - - /** - * Stops the consumer. Internally this is done by disconnecting from server - * since there is no way to terminate the stream initialized by MONITOR. - */ - public function stop() - { - $this->client->disconnect(); - $this->valid = false; - } - - /** - * @return void - */ - #[ReturnTypeWillChange] - public function rewind() - { - // NOOP - } - - /** - * Returns the last message payload retrieved from the server. - * - * @return object - */ - #[ReturnTypeWillChange] - public function current() - { - return $this->getValue(); - } - - /** - * @return int|null - */ - #[ReturnTypeWillChange] - public function key() - { - return $this->position; - } - - /** - * @return void - */ - #[ReturnTypeWillChange] - public function next() - { - ++$this->position; - } - - /** - * Checks if the the consumer is still in a valid state to continue. - * - * @return bool - */ - #[ReturnTypeWillChange] - public function valid() - { - return $this->valid; - } - - /** - * Waits for a new message from the server generated by MONITOR and returns - * it when available. - * - * @return object - */ - private function getValue() - { - $database = 0; - $client = null; - $event = $this->client->getConnection()->read(); - - $callback = static function ($matches) use (&$database, &$client) { - if (2 === $count = count($matches)) { - // Redis <= 2.4 - $database = (int) $matches[1]; - } - - if (4 === $count) { - // Redis >= 2.6 - $database = (int) $matches[2]; - $client = $matches[3]; - } - - return ' '; - }; - - $event = preg_replace_callback('/ \(db (\d+)\) | \[(\d+) (.*?)\] /', $callback, $event, 1); - @[$timestamp, $command, $arguments] = explode(' ', $event, 3); - - return (object) [ - 'timestamp' => (float) $timestamp, - 'database' => $database, - 'client' => $client, - 'command' => substr($command, 1, -1), - 'arguments' => $arguments, - ]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/NotSupportedException.php b/v3_ci4/vendor/predis/predis/src/NotSupportedException.php deleted file mode 100644 index 0c257ed..0000000 --- a/v3_ci4/vendor/predis/predis/src/NotSupportedException.php +++ /dev/null @@ -1,21 +0,0 @@ -getCommandFactory()->supports('multi', 'exec', 'discard')) { - throw new ClientException( - "'MULTI', 'EXEC' and 'DISCARD' are not supported by the current command factory." - ); - } - - parent::__construct($client); - } - - /** - * {@inheritdoc} - */ - protected function getConnection() - { - $connection = $this->getClient()->getConnection(); - - if (!$connection instanceof NodeConnectionInterface) { - $class = __CLASS__; - - throw new ClientException("The class '$class' does not support aggregate connections."); - } - - return $connection; - } - - /** - * {@inheritdoc} - */ - protected function executePipeline(ConnectionInterface $connection, SplQueue $commands) - { - $commandFactory = $this->getClient()->getCommandFactory(); - $retry = $connection->getParameters()->retry; - $this->executeCommandWithRetry($connection, $commandFactory->create('multi')); - - $retry->callWithRetry(function () use ($connection, $commands) { - $this->queuePipeline($connection, $commands); - }, static function (Throwable $exception) { - if ($exception instanceof CommunicationException) { - $exception->getConnection()->disconnect(); - } - }); - - $executed = $this->executeCommandWithRetry($connection, $commandFactory->create('exec')); - - if (!isset($executed)) { - throw new ClientException( - 'The underlying transaction has been aborted by the server.' - ); - } - - if (count($executed) !== count($commands)) { - $expected = count($commands); - $received = count($executed); - - throw new ClientException( - "Invalid number of responses [expected $expected, received $received]." - ); - } - - $responses = []; - $sizeOfPipe = count($commands); - $exceptions = $this->throwServerExceptions(); - $protocolVersion = (int) $connection->getParameters()->protocol; - - for ($i = 0; $i < $sizeOfPipe; ++$i) { - $command = $commands->dequeue(); - $response = $executed[$i]; - - if (!$response instanceof ResponseInterface) { - if ($protocolVersion === 2) { - $responses[] = $command->parseResponse($response); - } else { - $responses[] = $command->parseResp3Response($response); - } - } elseif ($response instanceof ErrorResponseInterface && $exceptions) { - $this->exception($connection, $response); - } else { - $responses[] = $response; - } - - unset($executed[$i]); - } - - return $responses; - } - - /** - * @param ConnectionInterface $connection - * @param SplQueue $commands - * @return void - * @throws Throwable - */ - protected function queuePipeline(ConnectionInterface $connection, SplQueue $commands) - { - $commandFactory = $this->getClient()->getCommandFactory(); - $this->writeToSingleNode($connection, $commands); - - foreach ($commands as $command) { - $response = $connection->readResponse($command); - - if ($response instanceof ErrorResponseInterface) { - $this->executeCommandWithRetry($connection, $commandFactory->create('discard')); - throw new ServerException($response->getMessage()); - } - } - } - - /** - * @param ConnectionInterface $connection - * @param Command $command - * @return mixed - * @throws Throwable - */ - protected function executeCommandWithRetry(ConnectionInterface $connection, CommandInterface $command) - { - $retry = $connection->getParameters()->retry; - - return $retry->callWithRetry(static function () use ($connection, $command) { - return $connection->executeCommand($command); - }, static function (Throwable $e) { - if ($e instanceof CommunicationException) { - $e->getConnection()->disconnect(); - } - }); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Pipeline/ConnectionErrorProof.php b/v3_ci4/vendor/predis/predis/src/Pipeline/ConnectionErrorProof.php deleted file mode 100644 index 7059ac9..0000000 --- a/v3_ci4/vendor/predis/predis/src/Pipeline/ConnectionErrorProof.php +++ /dev/null @@ -1,121 +0,0 @@ -getClient()->getConnection(); - } - - /** - * {@inheritdoc} - */ - protected function executePipeline(ConnectionInterface $connection, SplQueue $commands) - { - if ($connection instanceof NodeConnectionInterface) { - return $this->executeSingleNode($connection, $commands); - } elseif ($connection instanceof ClusterInterface) { - return $this->executeCluster($connection, $commands); - } - $class = get_class($connection); - - throw new NotSupportedException("The connection class '$class' is not supported."); - } - - /** - * {@inheritdoc} - */ - protected function executeSingleNode(NodeConnectionInterface $connection, SplQueue $commands) - { - $responses = []; - $sizeOfPipe = count($commands); - $buffer = ''; - - foreach ($commands as $command) { - $buffer .= $command->serializeCommand(); - } - - try { - $connection->write($buffer); - } catch (CommunicationException $exception) { - return array_fill(0, $sizeOfPipe, $exception); - } - - for ($i = 0; $i < $sizeOfPipe; ++$i) { - $command = $commands->dequeue(); - - try { - $responses[$i] = $connection->readResponse($command); - } catch (CommunicationException $exception) { - $add = count($commands) - count($responses); - $responses = array_merge($responses, array_fill(0, $add, $exception)); - - break; - } - } - - return $responses; - } - - /** - * {@inheritdoc} - */ - protected function executeCluster(ClusterInterface $connection, SplQueue $commands) - { - $responses = []; - $sizeOfPipe = count($commands); - $exceptions = []; - - foreach ($commands as $command) { - $nodeConnection = $connection->getConnectionByCommand($command); - $nodeConnection->write($command->serializeCommand()); - } - - for ($i = 0; $i < $sizeOfPipe; ++$i) { - $command = $commands->dequeue(); - - $cmdConnection = $connection->getConnectionByCommand($command); - $connectionHash = spl_object_hash($cmdConnection); - - if (isset($exceptions[$connectionHash])) { - $responses[$i] = $exceptions[$connectionHash]; - continue; - } - - try { - $responses[$i] = $cmdConnection->readResponse($command); - } catch (CommunicationException $exception) { - $responses[$i] = $exception; - $exceptions[$connectionHash] = $exception; - } - } - - return $responses; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Pipeline/FireAndForget.php b/v3_ci4/vendor/predis/predis/src/Pipeline/FireAndForget.php deleted file mode 100644 index 84cd5a2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Pipeline/FireAndForget.php +++ /dev/null @@ -1,49 +0,0 @@ -getParameters()->retry; - - $retry->callWithRetry(function () use ($connection, $commands) { - if ($connection instanceof AggregateConnectionInterface) { - $this->writeToMultiNode($connection, $commands); - } else { - $this->writeToSingleNode($connection, $commands); - } - }, static function (Throwable $e) { - if ($e instanceof CommunicationException) { - $e->getConnection()->disconnect(); - } - }); - - $connection->disconnect(); - - return []; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Pipeline/Pipeline.php b/v3_ci4/vendor/predis/predis/src/Pipeline/Pipeline.php deleted file mode 100644 index 615d66b..0000000 --- a/v3_ci4/vendor/predis/predis/src/Pipeline/Pipeline.php +++ /dev/null @@ -1,391 +0,0 @@ -client = $client; - $this->pipeline = new SplQueue(); - } - - /** - * Queues a command into the pipeline buffer. - * - * @param string $method Command ID. - * @param array $arguments Arguments for the command. - * - * @return $this - */ - public function __call($method, $arguments) - { - $command = $this->client->createCommand($method, $arguments); - $this->recordCommand($command); - - return $this; - } - - /** - * Queues a command instance into the pipeline buffer. - * - * @param CommandInterface $command Command to be queued in the buffer. - */ - protected function recordCommand(CommandInterface $command) - { - $this->pipeline->enqueue($command); - } - - /** - * Queues a command instance into the pipeline buffer. - * - * @param CommandInterface $command Command instance to be queued in the buffer. - * - * @return $this - */ - public function executeCommand(CommandInterface $command) - { - $this->recordCommand($command); - - return $this; - } - - /** - * Throws an exception on -ERR responses returned by Redis. - * - * @param ConnectionInterface $connection Redis connection that returned the error. - * @param ErrorResponseInterface $response Instance of the error response. - * - * @throws ServerException - */ - protected function exception(ConnectionInterface $connection, ErrorResponseInterface $response) - { - $connection->disconnect(); - $message = $response->getMessage(); - - throw new ServerException($message); - } - - /** - * Returns the underlying connection to be used by the pipeline. - * - * @return ConnectionInterface - */ - protected function getConnection() - { - $connection = $this->getClient()->getConnection(); - - if ($connection instanceof ReplicationInterface) { - $connection->switchToMaster(); - } - - return $connection; - } - - /** - * Implements the logic to flush the queued commands and read the responses - * from the current connection. - * - * @param ConnectionInterface $connection Current connection instance. - * @param SplQueue $commands Queued commands. - * - * @return array - * @throws Throwable - */ - protected function executePipeline(ConnectionInterface $connection, SplQueue $commands) - { - $retry = $connection->getParameters()->retry; - $backupQueue = $this->createDeepCloneQueue($commands); - - return $retry->callWithRetry( - function () use ($connection, &$commands) { - return $this->executePipelineInternal($connection, $commands); - }, - function (Throwable $e) use (&$commands, $backupQueue, $connection) { - if (!$e instanceof CommunicationException) { - throw $e; - } - - if ($connection instanceof AggregateConnectionInterface) { - $this->onAggregateConnectionFailCallback($connection, $e); - } else { - $connection = $e->getConnection(); - $connection->disconnect(); - } - - // In case of error whole pipeline should be retried - // So we need to write all original commands again - $commands = $this->createDeepCloneQueue($backupQueue); - } - ); - } - - /** - * @param ConnectionInterface $connection - * @param SplQueue $commands - * @return array - * @throws ServerException - * @throws Throwable - */ - protected function executePipelineInternal( - ConnectionInterface $connection, - SplQueue $commands - ): array { - $responses = []; - $exceptions = $this->throwServerExceptions(); - $protocolVersion = (int) $connection->getParameters()->protocol; - - if ($connection instanceof AggregateConnectionInterface) { - $this->writeToMultiNode($connection, $commands); - } else { - $this->writeToSingleNode($connection, $commands); - } - - while (!$commands->isEmpty()) { - $command = $commands->dequeue(); - - if ($connection instanceof AggregateConnectionInterface) { - $response = $connection->getConnectionByCommand($command)->readResponse($command); - } else { - $response = $connection->readResponse($command); - } - - if (!$response instanceof ResponseInterface) { - if ($protocolVersion === 2) { - $responses[] = $command->parseResponse($response); - } else { - $responses[] = $command->parseResp3Response($response); - } - } elseif ($response instanceof ErrorResponseInterface && $exceptions) { - $this->exception($connection, $response); - } else { - $responses[] = $response; - } - } - - return $responses; - } - - /** - * Creates a deep copy of commands queue for backup. - * - * @param SplQueue $queue - * @return SplQueue - */ - private function createDeepCloneQueue(SplQueue $queue): SplQueue - { - $new = new SplQueue(); - - foreach ($queue as $command) { - $new->enqueue(clone $command); - } - - return $new; - } - - /** - * Writes pipelined commands to single node connection. - * - * @param ConnectionInterface $connection - * @param SplQueue $commands - * @return void - * @throws Throwable - */ - protected function writeToSingleNode(ConnectionInterface $connection, SplQueue $commands) - { - $buffer = ''; - - foreach ($commands as $command) { - $buffer .= $command->serializeCommand(); - } - - $connection->write($buffer); - } - - /** - * Writes pipelined commands to multi node connection. - * - * @param AggregateConnectionInterface $connection - * @param SplQueue $commands - * @return void - * @throws Throwable - */ - protected function writeToMultiNode(AggregateConnectionInterface $connection, SplQueue $commands) - { - $retry = $connection->getParameters()->retry; - - foreach ($commands as $command) { - $nodeConnection = $connection->getConnectionByCommand($command); - $nodeConnection->write($command->serializeCommand()); - } - } - - /** - * Flushes the buffer holding all of the commands queued so far. - * - * @param bool $send Specifies if the commands in the buffer should be sent to Redis. - * - * @return $this - */ - public function flushPipeline($send = true) - { - if ($send && !$this->pipeline->isEmpty()) { - $responses = $this->executePipeline($this->getConnection(), $this->pipeline); - $this->responses = array_merge($this->responses, $responses); - } else { - $this->pipeline = new SplQueue(); - } - - return $this; - } - - /** - * Marks the running status of the pipeline. - * - * @param bool $bool Sets the running status of the pipeline. - * - * @throws ClientException - */ - private function setRunning($bool) - { - if ($bool && $this->running) { - throw new ClientException('The current pipeline context is already being executed.'); - } - - $this->running = $bool; - } - - /** - * Handles the actual execution of the whole pipeline. - * - * @param mixed $callable Optional callback for execution. - * - * @return array - * @throws Exception - * @throws InvalidArgumentException - */ - public function execute($callable = null) - { - if ($callable && !is_callable($callable)) { - throw new InvalidArgumentException('The argument must be a callable object.'); - } - - $exception = null; - $this->setRunning(true); - - try { - if ($callable) { - call_user_func($callable, $this); - } - - $this->flushPipeline(); - } catch (Exception $exception) { - // NOOP - } - - $this->setRunning(false); - - if ($exception) { - throw $exception; - } - - return $this->responses; - } - - /** - * Returns if the pipeline should throw exceptions on server errors. - * - * @return bool - */ - protected function throwServerExceptions() - { - return (bool) $this->client->getOptions()->exceptions; - } - - /** - * Returns the underlying client instance used by the pipeline object. - * - * @return ClientInterface - */ - public function getClient() - { - return $this->client; - } - - /** - * Handle aggregate connection exception. - * - * @param AggregateConnectionInterface $connection - * @param CommunicationException $e - * @return void - */ - private function onAggregateConnectionFailCallback(AggregateConnectionInterface $connection, Throwable $e) - { - if ($e instanceof ConnectionException) { - $nodeConnection = $e->getConnection(); - - if ($nodeConnection) { - $nodeConnection->disconnect(); - $connection->remove($nodeConnection); - } - - if ($connection instanceof RedisCluster) { - if ($connection->useClusterSlots) { - $connection->askSlotMap(); - } - } - } - - if ($e instanceof TimeoutException) { - $nodeConnection = $e->getConnection(); - - if ($nodeConnection) { - $nodeConnection->disconnect(); - } - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Pipeline/RelayAtomic.php b/v3_ci4/vendor/predis/predis/src/Pipeline/RelayAtomic.php deleted file mode 100644 index 3ca81e2..0000000 --- a/v3_ci4/vendor/predis/predis/src/Pipeline/RelayAtomic.php +++ /dev/null @@ -1,69 +0,0 @@ -getClient(); - - $throw = $this->client->getOptions()->exceptions; - - try { - $transaction = $client->multi(); - - foreach ($commands as $command) { - $name = $command->getId(); - - in_array($name, $connection->atypicalCommands) - ? $transaction->{$name}(...$command->getArguments()) - : $transaction->rawCommand($name, ...$command->getArguments()); - } - - $responses = $transaction->exec(); - - if (!is_array($responses)) { - return $responses; - } - - foreach ($responses as $key => $response) { - if ($response instanceof RelayException) { - if ($throw) { - throw $response; - } - - $responses[$key] = new Error($response->getMessage()); - } - } - - return $responses; - } catch (RelayException $ex) { - if ($client->getMode() !== $client::ATOMIC) { - $client->discard(); - } - - throw new ServerException($ex->getMessage(), $ex->getCode(), $ex); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Pipeline/RelayPipeline.php b/v3_ci4/vendor/predis/predis/src/Pipeline/RelayPipeline.php deleted file mode 100644 index ce007f8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Pipeline/RelayPipeline.php +++ /dev/null @@ -1,75 +0,0 @@ -getClient(); - - $throw = $this->client->getOptions()->exceptions; - - try { - $pipeline = $client->pipeline(); - - foreach ($commands as $command) { - $name = $command->getId(); - - in_array($name, $connection->atypicalCommands) - ? $pipeline->{$name}(...$command->getArguments()) - : $pipeline->rawCommand($name, ...$command->getArguments()); - } - - $responses = $pipeline->exec(); - - if (!is_array($responses)) { - return $responses; - } - - foreach ($responses as $key => $response) { - if ($response instanceof RelayException) { - if ($throw) { - throw $response; - } - - $responses[$key] = new Error($response->getMessage()); - } - } - - return $responses; - } catch (RelayException $ex) { - if ($client->getMode() !== $client::ATOMIC) { - $client->discard(); - } - - throw new ServerException($ex->getMessage(), $ex->getCode(), $ex); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/PredisException.php b/v3_ci4/vendor/predis/predis/src/PredisException.php deleted file mode 100644 index a0cf16c..0000000 --- a/v3_ci4/vendor/predis/predis/src/PredisException.php +++ /dev/null @@ -1,22 +0,0 @@ - Resp2Strategy::class, - 3 => Resp3Strategy::class, - ]; - - /** - * {@inheritDoc} - */ - public function resolve(int $protocolVersion): ParserStrategyInterface - { - if (!array_key_exists($protocolVersion, $this->protocolStrategyMapping)) { - throw new InvalidArgumentException('Invalid protocol version given.'); - } - - $strategy = $this->protocolStrategyMapping[$protocolVersion]; - - return new $strategy(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Parser/ParserStrategyResolverInterface.php b/v3_ci4/vendor/predis/predis/src/Protocol/Parser/ParserStrategyResolverInterface.php deleted file mode 100644 index b1f4df1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Parser/ParserStrategyResolverInterface.php +++ /dev/null @@ -1,26 +0,0 @@ - 'parseSimpleString', - '-' => 'parseError', - ':' => 'parseInteger', - '*' => 'parseArray', - '$' => 'parseBulkString', - ]; - - /** - * RESP 2 Status responses. - * - * @var string[] - */ - protected $statusResponse = [ - 'OK', - 'QUEUED', - 'NOKEY', - 'PONG', - ]; - - /** - * {@inheritDoc} - */ - public function parseData(string $data) - { - $type = $data[0]; - $payload = substr($data, 1, -2); - - if (!array_key_exists($type, $this->typeCallbacks)) { - throw new UnexpectedTypeException($type, 'Unexpected data type given.'); - } - - $callback = $this->typeCallbacks[$type]; - - return $this->$callback($payload); - } - - /** - * Parse simple string RESP type. - * - * @param string $string - * @return StatusResponse|string - */ - protected function parseSimpleString(string $string) - { - if (in_array($string, $this->statusResponse)) { - return StatusResponse::get($string); - } - - return $string; - } - - /** - * Parse error RESP type. - * - * @param string $string - * @return ErrorInterface - */ - protected function parseError(string $string): ErrorInterface - { - return new Error($string); - } - - /** - * Parse integer RESP type. - * - * @param string $string - * @return int - */ - protected function parseInteger(string $string): int - { - return (int) $string; - } - - /** - * Parse array RESP type. - * - * @param string $string - * @return array - */ - protected function parseArray(string $string): ?array - { - $count = (int) $string; - - if ($count === -1) { - return null; - } - - return [ - 'type' => self::TYPE_ARRAY, - 'value' => $count, - ]; - } - - /** - * Parse bulk string RESP type. - * - * @param string $string - * @return array - */ - protected function parseBulkString(string $string): ?array - { - $size = (int) $string; - - if ($size === -1) { - return null; - } - - return [ - 'type' => self::TYPE_BULK_STRING, - 'value' => $size, - ]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Parser/Strategy/Resp3Strategy.php b/v3_ci4/vendor/predis/predis/src/Protocol/Parser/Strategy/Resp3Strategy.php deleted file mode 100644 index 83a2bfe..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Parser/Strategy/Resp3Strategy.php +++ /dev/null @@ -1,170 +0,0 @@ - 'parseNull', - ',' => 'parseDouble', - '#' => 'parseBoolean', - '!' => 'parseBlobError', - '=' => 'parseVerbatimString', - '(' => 'parseBigNumber', - '%' => 'parseMap', - '~' => 'parseSet', - '>' => 'parsePush', - ]; - - public function __construct() - { - $this->typeCallbacks += $this->resp3TypeCallbacks; - } - - /** - * Parse null RESP3 type. - * - * @return null - */ - protected function parseNull(string $string) - { - return null; - } - - /** - * Parse double RESP3 type. - * - * @param string $string - * @return float - */ - protected function parseDouble(string $string): float - { - if ($string === 'inf' || $string === '-inf') { - return INF; - } - - return (float) $string; - } - - /** - * Parse boolean RESP3 type. - * - * @param string $string - * @return bool - */ - protected function parseBoolean(string $string): bool - { - return $string === 't'; - } - - /** - * Parse blob error RESP3 type. - * - * @param string $string - * @return array - */ - protected function parseBlobError(string $string): array - { - return [ - 'type' => self::TYPE_BLOB_ERROR, - 'value' => (int) $string, - ]; - } - - /** - * Parse verbatim string RESP3 type. - * - * @param string $string - * @return array - */ - protected function parseVerbatimString(string $string): array - { - return [ - 'type' => self::TYPE_VERBATIM_STRING, - 'value' => (int) $string, - 'offset' => self::VERBATIM_STRING_EXTENSION_OFFSET, - ]; - } - - /** - * Parse big number RESP3 type. - * Depends on PHP environment returns float on numbers that reaches max integer limit. - * - * @param string $string - * @return int|float - */ - protected function parseBigNumber(string $string) - { - if (bccomp($string, PHP_INT_MAX) === 1) { - return (float) $string; - } - - return $this->parseInteger($string); - } - - /** - * Parse map RESP3 type. - * - * @param string $string - * @return array - */ - protected function parseMap(string $string): array - { - return [ - 'type' => self::TYPE_MAP, - 'value' => (int) $string, - ]; - } - - /** - * Parse set RESP3 type. - * - * @param string $string - * @return array - */ - protected function parseSet(string $string): array - { - return [ - 'type' => self::TYPE_SET, - 'value' => (int) $string, - ]; - } - - /** - * Parse push RESP3 type. - * - * @param string $string - * @return array - */ - protected function parsePush(string $string): array - { - return [ - 'type' => self::TYPE_PUSH, - 'value' => (int) $string, - ]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Parser/UnexpectedTypeException.php b/v3_ci4/vendor/predis/predis/src/Protocol/Parser/UnexpectedTypeException.php deleted file mode 100644 index 6e4b39e..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Parser/UnexpectedTypeException.php +++ /dev/null @@ -1,39 +0,0 @@ -type = $type; - - parent::__construct($message, $code, $previous); - } - - /** - * @return string - */ - public function getType(): string - { - return $this->type; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/ProtocolException.php b/v3_ci4/vendor/predis/predis/src/Protocol/ProtocolException.php deleted file mode 100644 index e5f8903..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/ProtocolException.php +++ /dev/null @@ -1,23 +0,0 @@ -setRequestSerializer($serializer ?: new RequestSerializer()); - $this->setResponseReader($reader ?: new ResponseReader()); - } - - /** - * {@inheritdoc} - */ - public function write(CompositeConnectionInterface $connection, CommandInterface $command) - { - $connection->writeBuffer($this->serializer->serialize($command)); - } - - /** - * {@inheritdoc} - */ - public function read(CompositeConnectionInterface $connection) - { - return $this->reader->read($connection); - } - - /** - * Sets the request serializer used by the protocol processor. - * - * @param RequestSerializerInterface $serializer Request serializer. - */ - public function setRequestSerializer(RequestSerializerInterface $serializer) - { - $this->serializer = $serializer; - } - - /** - * Returns the request serializer used by the protocol processor. - * - * @return RequestSerializerInterface - */ - public function getRequestSerializer() - { - return $this->serializer; - } - - /** - * Sets the response reader used by the protocol processor. - * - * @param ResponseReaderInterface $reader Response reader. - */ - public function setResponseReader(ResponseReaderInterface $reader) - { - $this->reader = $reader; - } - - /** - * Returns the Response reader used by the protocol processor. - * - * @return ResponseReaderInterface - */ - public function getResponseReader() - { - return $this->reader; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/BulkResponse.php b/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/BulkResponse.php deleted file mode 100644 index 497b358..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/BulkResponse.php +++ /dev/null @@ -1,52 +0,0 @@ -getParameters()}]" - )); - } - - if ($length >= 0) { - return substr($connection->readBuffer($length + 2), 0, -2); - } - - if ($length == -1) { - return; - } - - CommunicationException::handle(new ProtocolException( - $connection, "Value '$payload' is not a valid length for a bulk response [{$connection->getParameters()}]" - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/ErrorResponse.php b/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/ErrorResponse.php deleted file mode 100644 index 476b7e1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/ErrorResponse.php +++ /dev/null @@ -1,33 +0,0 @@ -getParameters()}]" - )); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/MultiBulkResponse.php b/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/MultiBulkResponse.php deleted file mode 100644 index 1c60fad..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/MultiBulkResponse.php +++ /dev/null @@ -1,67 +0,0 @@ -getParameters()}]" - )); - } - - if ($length === -1) { - return; - } - - $list = []; - - if ($length > 0) { - $handlersCache = []; - $reader = $connection->getProtocol()->getResponseReader(); - - for ($i = 0; $i < $length; ++$i) { - $header = $connection->readLine(); - $prefix = $header[0]; - - if (isset($handlersCache[$prefix])) { - $handler = $handlersCache[$prefix]; - } else { - $handler = $reader->getHandler($prefix); - $handlersCache[$prefix] = $handler; - } - - $list[$i] = $handler->handle($connection, substr($header, 1)); - } - } - - return $list; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/ResponseHandlerInterface.php b/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/ResponseHandlerInterface.php deleted file mode 100644 index 709de96..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Text/Handler/ResponseHandlerInterface.php +++ /dev/null @@ -1,32 +0,0 @@ -getParameters()}]" - )); - } - - return new MultiBulkIterator($connection, $length); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Text/ProtocolProcessor.php b/v3_ci4/vendor/predis/predis/src/Protocol/Text/ProtocolProcessor.php deleted file mode 100644 index 3aa7563..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Text/ProtocolProcessor.php +++ /dev/null @@ -1,120 +0,0 @@ -mbiterable = false; - $this->serializer = new RequestSerializer(); - } - - /** - * {@inheritdoc} - */ - public function write(CompositeConnectionInterface $connection, CommandInterface $command) - { - $request = $this->serializer->serialize($command); - $connection->writeBuffer($request); - } - - /** - * {@inheritdoc} - */ - public function read(CompositeConnectionInterface $connection) - { - $chunk = $connection->readLine(); - $prefix = $chunk[0]; - $payload = substr($chunk, 1); - - switch ($prefix) { - case '+': - return new StatusResponse($payload); - - case '$': - $size = (int) $payload; - if ($size === -1) { - return; - } - - return substr($connection->readBuffer($size + 2), 0, -2); - - case '*': - $count = (int) $payload; - - if ($count === -1) { - return; - } - if ($this->mbiterable) { - return new MultiBulkIterator($connection, $count); - } - - $multibulk = []; - - for ($i = 0; $i < $count; ++$i) { - $multibulk[$i] = $this->read($connection); - } - - return $multibulk; - - case ':': - $integer = (int) $payload; - - return $integer == $payload ? $integer : $payload; - - case '-': - return new ErrorResponse($payload); - - default: - CommunicationException::handle(new ProtocolException( - $connection, "Unknown response prefix: '$prefix' [{$connection->getParameters()}]" - )); - - return; - } - } - - /** - * Enables or disables returning multibulk responses as specialized PHP - * iterators used to stream bulk elements of a multibulk response instead - * returning a plain array. - * - * Streamable multibulk responses are not globally supported by the - * abstractions built-in into Predis, such as transactions or pipelines. - * Use them with care! - * - * @param bool $value Enable or disable streamable multibulk responses. - */ - public function useIterableMultibulk($value) - { - $this->mbiterable = (bool) $value; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Text/RequestSerializer.php b/v3_ci4/vendor/predis/predis/src/Protocol/Text/RequestSerializer.php deleted file mode 100644 index bd33f64..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Text/RequestSerializer.php +++ /dev/null @@ -1,45 +0,0 @@ -getId(); - $arguments = $command->getArguments(); - - $cmdlen = strlen($commandID); - $reqlen = count($arguments) + 1; - - $buffer = "*{$reqlen}\r\n\${$cmdlen}\r\n{$commandID}\r\n"; - - foreach ($arguments as $argument) { - $arglen = strlen($argument); - $buffer .= "\${$arglen}\r\n{$argument}\r\n"; - } - - return $buffer; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Protocol/Text/ResponseReader.php b/v3_ci4/vendor/predis/predis/src/Protocol/Text/ResponseReader.php deleted file mode 100644 index 60a6ced..0000000 --- a/v3_ci4/vendor/predis/predis/src/Protocol/Text/ResponseReader.php +++ /dev/null @@ -1,108 +0,0 @@ -handlers = $this->getDefaultHandlers(); - } - - /** - * Returns the default handlers for the supported type of responses. - * - * @return array - */ - protected function getDefaultHandlers() - { - return [ - '+' => new Handler\StatusResponse(), - '-' => new Handler\ErrorResponse(), - ':' => new Handler\IntegerResponse(), - '$' => new Handler\BulkResponse(), - '*' => new Handler\MultiBulkResponse(), - ]; - } - - /** - * Sets the handler for the specified prefix identifying the response type. - * - * @param string $prefix Identifier of the type of response. - * @param Handler\ResponseHandlerInterface $handler Response handler. - */ - public function setHandler($prefix, Handler\ResponseHandlerInterface $handler) - { - $this->handlers[$prefix] = $handler; - } - - /** - * Returns the response handler associated to a certain type of response. - * - * @param string $prefix Identifier of the type of response. - * - * @return Handler\ResponseHandlerInterface|void - */ - public function getHandler($prefix) - { - if (isset($this->handlers[$prefix])) { - return $this->handlers[$prefix]; - } - } - - /** - * {@inheritdoc} - */ - public function read(CompositeConnectionInterface $connection) - { - $header = $connection->readLine(); - - if ($header === '') { - $this->onProtocolError($connection, 'Unexpected empty response header'); - } - - $prefix = $header[0]; - - if (!isset($this->handlers[$prefix])) { - $this->onProtocolError($connection, "Unknown response prefix: '$prefix'"); - } - - return $this->handlers[$prefix]->handle($connection, substr($header, 1)); - } - - /** - * Handles protocol errors generated while reading responses from a - * connection. - * - * @param CompositeConnectionInterface $connection Redis connection that generated the error. - * @param string $message Error message. - */ - protected function onProtocolError(CompositeConnectionInterface $connection, $message) - { - CommunicationException::handle( - new ProtocolException($connection, "$message [{$connection->getParameters()}]") - ); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Replication/MissingMasterException.php b/v3_ci4/vendor/predis/predis/src/Replication/MissingMasterException.php deleted file mode 100644 index 8678fb8..0000000 --- a/v3_ci4/vendor/predis/predis/src/Replication/MissingMasterException.php +++ /dev/null @@ -1,22 +0,0 @@ -disallowed = $this->getDisallowedOperations(); - $this->readonly = $this->getReadOnlyOperations(); - $this->readonlySHA1 = []; - } - - /** - * Returns if the specified command will perform a read-only operation - * on Redis or not. - * - * @param CommandInterface $command Command instance. - * - * @return bool - * @throws NotSupportedException - */ - public function isReadOperation(CommandInterface $command) - { - if (!$this->loadBalancing) { - return false; - } - - if (isset($this->disallowed[$id = $command->getId()])) { - throw new NotSupportedException( - "The command '$id' is not allowed in replication mode." - ); - } - - if (isset($this->readonly[$id])) { - if (true === $readonly = $this->readonly[$id]) { - return true; - } - - return call_user_func($readonly, $command); - } - - if (($eval = $id === 'EVAL') || $id === 'EVALSHA') { - $argument = $command->getArgument(0); - $sha1 = $eval ? sha1(strval($argument)) : $argument; - - if (isset($this->readonlySHA1[$sha1])) { - if (true === $readonly = $this->readonlySHA1[$sha1]) { - return true; - } - - return call_user_func($readonly, $command); - } - } - - return false; - } - - /** - * Returns if the specified command is not allowed for execution in a master - * / slave replication context. - * - * @param CommandInterface $command Command instance. - * - * @return bool - */ - public function isDisallowedOperation(CommandInterface $command) - { - return isset($this->disallowed[$command->getId()]); - } - - /** - * Checks if BITFIELD performs a read-only operation by looking for certain - * SET and INCRYBY modifiers in the arguments array of the command. - * - * @param CommandInterface $command Command instance. - * - * @return bool - */ - protected function isBitfieldReadOnly(CommandInterface $command) - { - $arguments = $command->getArguments(); - $argc = count($arguments); - - if ($argc >= 2) { - for ($i = 1; $i < $argc; ++$i) { - $argument = strtoupper($arguments[$i]); - if ($argument === 'SET' || $argument === 'INCRBY') { - return false; - } - } - } - - return true; - } - - /** - * Checks if a GEORADIUS command is a readable operation by parsing the - * arguments array of the specified command instance. - * - * @param CommandInterface $command Command instance. - * - * @return bool - */ - protected function isGeoradiusReadOnly(CommandInterface $command) - { - $arguments = $command->getArguments(); - $argc = count($arguments); - $startIndex = $command->getId() === 'GEORADIUS' ? 5 : 4; - - if ($argc > $startIndex) { - for ($i = $startIndex; $i < $argc; ++$i) { - $argument = strtoupper($arguments[$i]); - if ($argument === 'STORE' || $argument === 'STOREDIST') { - return false; - } - } - } - - return true; - } - - /** - * Marks a command as a read-only operation. - * - * When the behavior of a command can be decided only at runtime depending - * on its arguments, a callable object can be provided to dynamically check - * if the specified command performs a read or a write operation. - * - * @param string $commandID Command ID. - * @param mixed $readonly A boolean value or a callable object. - */ - public function setCommandReadOnly($commandID, $readonly = true) - { - $commandID = strtoupper($commandID); - - if ($readonly) { - $this->readonly[$commandID] = $readonly; - } else { - unset($this->readonly[$commandID]); - } - } - - /** - * Marks a Lua script for EVAL and EVALSHA as a read-only operation. When - * the behaviour of a script can be decided only at runtime depending on - * its arguments, a callable object can be provided to dynamically check - * if the passed instance of EVAL or EVALSHA performs write operations or - * not. - * - * @param string $script Body of the Lua script. - * @param mixed $readonly A boolean value or a callable object. - */ - public function setScriptReadOnly($script, $readonly = true) - { - $sha1 = sha1($script); - - if ($readonly) { - $this->readonlySHA1[$sha1] = $readonly; - } else { - unset($this->readonlySHA1[$sha1]); - } - } - - /** - * Returns the default list of disallowed commands. - * - * @return array - */ - protected function getDisallowedOperations() - { - return [ - 'SHUTDOWN' => true, - 'INFO' => true, - 'DBSIZE' => true, - 'LASTSAVE' => true, - 'CONFIG' => true, - 'MONITOR' => true, - 'SLAVEOF' => true, - 'SAVE' => true, - 'BGSAVE' => true, - 'BGREWRITEAOF' => true, - 'SLOWLOG' => true, - ]; - } - - /** - * Returns the default list of commands performing read-only operations. - * - * @return array - */ - protected function getReadOnlyOperations() - { - return [ - 'EXISTS' => true, - 'TYPE' => true, - 'KEYS' => true, - 'SCAN' => true, - 'RANDOMKEY' => true, - 'TTL' => true, - 'GET' => true, - 'MGET' => true, - 'SUBSTR' => true, - 'STRLEN' => true, - 'GETRANGE' => true, - 'GETBIT' => true, - 'LLEN' => true, - 'LRANGE' => true, - 'LINDEX' => true, - 'SCARD' => true, - 'SISMEMBER' => true, - 'SINTER' => true, - 'SUNION' => true, - 'SDIFF' => true, - 'SMEMBERS' => true, - 'SSCAN' => true, - 'SRANDMEMBER' => true, - 'ZRANGE' => true, - 'ZREVRANGE' => true, - 'ZRANGEBYSCORE' => true, - 'ZREVRANGEBYSCORE' => true, - 'ZCARD' => true, - 'ZSCORE' => true, - 'ZCOUNT' => true, - 'ZRANK' => true, - 'ZREVRANK' => true, - 'ZSCAN' => true, - 'ZLEXCOUNT' => true, - 'ZRANGEBYLEX' => true, - 'ZREVRANGEBYLEX' => true, - 'HGET' => true, - 'HMGET' => true, - 'HEXISTS' => true, - 'HLEN' => true, - 'HKEYS' => true, - 'HVALS' => true, - 'HGETALL' => true, - 'HSCAN' => true, - 'HSTRLEN' => true, - 'PING' => true, - 'AUTH' => true, - 'SELECT' => true, - 'ECHO' => true, - 'QUIT' => true, - 'OBJECT' => true, - 'BITCOUNT' => true, - 'BITPOS' => true, - 'TIME' => true, - 'PFCOUNT' => true, - 'BITFIELD' => [$this, 'isBitfieldReadOnly'], - 'GEOHASH' => true, - 'GEOPOS' => true, - 'GEODIST' => true, - 'GEORADIUS' => [$this, 'isGeoradiusReadOnly'], - 'GEORADIUSBYMEMBER' => [$this, 'isGeoradiusReadOnly'], - 'GEOSEARCH' => true, - ]; - } - - /** - * Disables reads to slaves when using - * a replication topology. - * - * @return self - */ - public function disableLoadBalancing(): self - { - $this->loadBalancing = false; - - return $this; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Replication/RoleException.php b/v3_ci4/vendor/predis/predis/src/Replication/RoleException.php deleted file mode 100644 index 02f1e6c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Replication/RoleException.php +++ /dev/null @@ -1,23 +0,0 @@ -message = $message; - } - - /** - * {@inheritdoc} - */ - public function getMessage() - { - return $this->message; - } - - /** - * {@inheritdoc} - */ - public function getErrorType() - { - [$errorType] = explode(' ', $this->getMessage(), 2); - - return $errorType; - } - - /** - * Converts the object to its string representation. - * - * @return string - */ - public function __toString() - { - return $this->getMessage(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Response/ErrorInterface.php b/v3_ci4/vendor/predis/predis/src/Response/ErrorInterface.php deleted file mode 100644 index d51407d..0000000 --- a/v3_ci4/vendor/predis/predis/src/Response/ErrorInterface.php +++ /dev/null @@ -1,34 +0,0 @@ -connection = $connection; - $this->size = $size; - $this->position = 0; - $this->current = $size > 0 ? $this->getValue() : null; - } - - /** - * Handles the synchronization of the client with the Redis protocol when - * the garbage collector kicks in (e.g. when the iterator goes out of the - * scope of a foreach or it is unset). - */ - public function __destruct() - { - $this->drop(true); - } - - /** - * Drop queued elements that have not been read from the connection either - * by consuming the rest of the multibulk response or quickly by closing the - * underlying connection. - * - * @param bool $disconnect Consume the iterator or drop the connection. - */ - public function drop($disconnect = false) - { - if ($disconnect) { - if ($this->valid()) { - $this->position = $this->size; - $this->connection->disconnect(); - } - } else { - while ($this->valid()) { - $this->next(); - } - } - } - - /** - * Reads the next item of the multibulk response from the connection. - * - * @return mixed - */ - protected function getValue() - { - return $this->connection->read(); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Response/Iterator/MultiBulkIterator.php b/v3_ci4/vendor/predis/predis/src/Response/Iterator/MultiBulkIterator.php deleted file mode 100644 index 7050901..0000000 --- a/v3_ci4/vendor/predis/predis/src/Response/Iterator/MultiBulkIterator.php +++ /dev/null @@ -1,112 +0,0 @@ -current; - } - - /** - * @return int|null - */ - #[ReturnTypeWillChange] - public function key() - { - return $this->position; - } - - /** - * @return void - */ - #[ReturnTypeWillChange] - public function next() - { - if (++$this->position < $this->size) { - $this->current = $this->getValue(); - } - } - - /** - * @return bool - */ - #[ReturnTypeWillChange] - public function valid() - { - return $this->position < $this->size; - } - - /** - * Returns the number of items comprising the whole multibulk response. - * - * This method should be used instead of iterator_count() to get the size of - * the current multibulk response since the former consumes the iteration to - * count the number of elements, but our iterators do not support rewinding. - * - * @return int - */ - #[ReturnTypeWillChange] - public function count() - { - return $this->size; - } - - /** - * Returns the current position of the iterator. - * - * @return int - */ - public function getPosition() - { - return $this->position; - } - - /** - * {@inheritdoc} - */ - abstract protected function getValue(); -} diff --git a/v3_ci4/vendor/predis/predis/src/Response/Iterator/MultiBulkTuple.php b/v3_ci4/vendor/predis/predis/src/Response/Iterator/MultiBulkTuple.php deleted file mode 100644 index 0edb1cb..0000000 --- a/v3_ci4/vendor/predis/predis/src/Response/Iterator/MultiBulkTuple.php +++ /dev/null @@ -1,95 +0,0 @@ - $value pairs. - */ -class MultiBulkTuple extends MultiBulk implements OuterIterator -{ - private $iterator; - - /** - * @param MultiBulk $iterator Inner multibulk response iterator. - */ - public function __construct(MultiBulk $iterator) - { - $this->checkPreconditions($iterator); - - $this->size = count($iterator) / 2; - $this->iterator = $iterator; - $this->position = $iterator->getPosition(); - $this->current = $this->size > 0 ? $this->getValue() : null; - } - - /** - * Checks for valid preconditions. - * - * @param MultiBulk $iterator Inner multibulk response iterator. - * - * @throws InvalidArgumentException - * @throws UnexpectedValueException - */ - protected function checkPreconditions(MultiBulk $iterator) - { - if ($iterator->getPosition() !== 0) { - throw new InvalidArgumentException( - 'Cannot initialize a tuple iterator using an already initiated iterator.' - ); - } - - if (($size = count($iterator)) % 2 !== 0) { - throw new UnexpectedValueException('Invalid response size for a tuple iterator.'); - } - } - - /** - * @return MultiBulk - */ - #[ReturnTypeWillChange] - public function getInnerIterator() - { - return $this->iterator; - } - - /** - * {@inheritdoc} - */ - public function __destruct() - { - $this->iterator->drop(true); - } - - /** - * {@inheritdoc} - */ - protected function getValue() - { - $k = $this->iterator->current(); - $this->iterator->next(); - - $v = $this->iterator->current(); - $this->iterator->next(); - - return [$k, $v]; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Response/ResponseInterface.php b/v3_ci4/vendor/predis/predis/src/Response/ResponseInterface.php deleted file mode 100644 index c5dc5bb..0000000 --- a/v3_ci4/vendor/predis/predis/src/Response/ResponseInterface.php +++ /dev/null @@ -1,20 +0,0 @@ -getMessage(), 2); - - return $errorType; - } - - /** - * Converts the exception to an instance of Predis\Response\Error. - * - * @return Error - */ - public function toErrorResponse() - { - return new Error($this->getMessage()); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Response/Status.php b/v3_ci4/vendor/predis/predis/src/Response/Status.php deleted file mode 100644 index ec87614..0000000 --- a/v3_ci4/vendor/predis/predis/src/Response/Status.php +++ /dev/null @@ -1,78 +0,0 @@ -payload = $payload; - } - - /** - * Converts the response object to its string representation. - * - * @return string - */ - public function __toString() - { - return $this->payload; - } - - /** - * Returns the payload of status response. - * - * @return string - */ - public function getPayload() - { - return $this->payload; - } - - /** - * Returns an instance of a status response object. - * - * Common status responses such as OK or QUEUED are cached in order to lower - * the global memory usage especially when using pipelines. - * - * @param string $payload Status response payload. - * - * @return self - */ - public static function get($payload) - { - switch ($payload) { - case 'OK': - case 'QUEUED': - if (isset(self::$$payload)) { - return self::$$payload; - } - - return self::$$payload = new self($payload); - - default: - return new self($payload); - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Retry/Retry.php b/v3_ci4/vendor/predis/predis/src/Retry/Retry.php deleted file mode 100644 index d2a19e1..0000000 --- a/v3_ci4/vendor/predis/predis/src/Retry/Retry.php +++ /dev/null @@ -1,143 +0,0 @@ -backoffStrategy = $backoffStrategy; - $this->retries = $retries; - - if (null !== $catchableExceptions) { - $this->catchableExceptions = $catchableExceptions; - } - } - - /** - * Update the retry count. - * - * @param int $retries - * @return void - */ - public function updateRetriesCount(int $retries): void - { - $this->retries = $retries; - } - - /** - * Extend catchable exceptions list. - * - * @param array $catchableExceptions - * @return void - */ - public function updateCatchableExceptions(array $catchableExceptions): void - { - $this->catchableExceptions = array_merge($this->catchableExceptions, $catchableExceptions); - } - - /** - * @return int - */ - public function getRetries(): int - { - return $this->retries; - } - - /** - * @return RetryStrategyInterface - */ - public function getStrategy(): RetryStrategyInterface - { - return $this->backoffStrategy; - } - - /** - * @param callable(): mixed $do - * @param callable(Throwable): void|null $fail - * @return mixed - * @throws Throwable - */ - public function callWithRetry(callable $do, ?callable $fail = null) - { - $failures = 0; - - while (true) { - try { - return $do(); - } catch (Throwable $e) { - if (null !== $this->catchableExceptions) { - $isCatchable = false; - foreach ($this->catchableExceptions as $catchableException) { - if ($e instanceof $catchableException) { - $isCatchable = true; - } - } - - if (!$isCatchable) { - throw $e; - } - } - - $backoff = $this->backoffStrategy->compute($failures); - ++$failures; - - if ($this->retries >= 0 && $failures > $this->retries) { - throw $e; - } - - if ($fail !== null) { - $fail($e); - } - - if ($backoff > 0) { - usleep($backoff); - } - } - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Retry/Strategy/EqualBackoff.php b/v3_ci4/vendor/predis/predis/src/Retry/Strategy/EqualBackoff.php deleted file mode 100644 index e4819c4..0000000 --- a/v3_ci4/vendor/predis/predis/src/Retry/Strategy/EqualBackoff.php +++ /dev/null @@ -1,37 +0,0 @@ -backoff = $backoff; - } - - public function compute(int $failures): int - { - return $this->backoff; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Retry/Strategy/ExponentialBackoff.php b/v3_ci4/vendor/predis/predis/src/Retry/Strategy/ExponentialBackoff.php deleted file mode 100644 index df6ba99..0000000 --- a/v3_ci4/vendor/predis/predis/src/Retry/Strategy/ExponentialBackoff.php +++ /dev/null @@ -1,75 +0,0 @@ -base = $base; - $this->cap = $cap; - $this->withJitter = $withJitter; - } - - /** - * {@inheritDoc} - */ - public function compute(int $failures): int - { - if ($this->withJitter) { - return min($this->cap, (mt_rand(0, mt_getrandmax() - 1) / mt_getrandmax()) * ($this->base * 2 ** $failures)); - } - - if ($this->cap > 0) { - return min($this->cap, $this->base * 2 ** $failures); - } - - return $this->base * 2 ** $failures; - } - - /** - * @return int - */ - public function getBase(): int - { - return $this->base; - } - - /** - * @return int - */ - public function getCap(): int - { - return $this->cap; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Retry/Strategy/NoBackoff.php b/v3_ci4/vendor/predis/predis/src/Retry/Strategy/NoBackoff.php deleted file mode 100644 index 9d497ad..0000000 --- a/v3_ci4/vendor/predis/predis/src/Retry/Strategy/NoBackoff.php +++ /dev/null @@ -1,24 +0,0 @@ -client = $client; - - if (isset($options['gc_maxlifetime'])) { - $this->ttl = (int) $options['gc_maxlifetime']; - } else { - $this->ttl = ini_get('session.gc_maxlifetime'); - } - } - - /** - * Registers this instance as the current session handler. - */ - public function register() - { - session_set_save_handler($this, true); - } - - /** - * @param string $save_path - * @param string $session_id - * @return bool - */ - #[ReturnTypeWillChange] - public function open($save_path, $session_id) - { - // NOOP - return true; - } - - /** - * @return bool - */ - #[ReturnTypeWillChange] - public function close() - { - // NOOP - return true; - } - - /** - * @param int $maxlifetime - * @return bool - */ - #[ReturnTypeWillChange] - public function gc($maxlifetime) - { - // NOOP - return true; - } - - /** - * @param string $session_id - * @return string - */ - #[ReturnTypeWillChange] - public function read($session_id) - { - if ($data = $this->client->get($session_id)) { - return $data; - } - - return ''; - } - - /** - * @param string $session_id - * @param string $session_data - * @return bool - */ - #[ReturnTypeWillChange] - public function write($session_id, $session_data) - { - $this->client->setex($session_id, $this->ttl, $session_data); - - return true; - } - - /** - * @param string $session_id - * @return bool - */ - #[ReturnTypeWillChange] - public function destroy($session_id) - { - $this->client->del($session_id); - - return true; - } - - /** - * Returns the underlying client instance. - * - * @return ClientInterface - */ - public function getClient() - { - return $this->client; - } - - /** - * Returns the session max lifetime value. - * - * @return int - */ - public function getMaxLifeTime() - { - return $this->ttl; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/TimeoutException.php b/v3_ci4/vendor/predis/predis/src/TimeoutException.php deleted file mode 100644 index f40366e..0000000 --- a/v3_ci4/vendor/predis/predis/src/TimeoutException.php +++ /dev/null @@ -1,24 +0,0 @@ -transaction = $transaction; - } - - /** - * Returns the transaction that generated the exception. - * - * @return MultiExec - */ - public function getTransaction() - { - return $this->transaction; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Transaction/Exception/TransactionException.php b/v3_ci4/vendor/predis/predis/src/Transaction/Exception/TransactionException.php deleted file mode 100644 index 4e8d5fd..0000000 --- a/v3_ci4/vendor/predis/predis/src/Transaction/Exception/TransactionException.php +++ /dev/null @@ -1,19 +0,0 @@ -assertClient($client); - - $this->client = $client; - $this->state = new MultiExecState(); - - if (null === $strategyResolver) { - $strategyResolver = new ConnectionStrategyResolver(); - } - - $this->connectionStrategy = $strategyResolver->resolve( - $client->getConnection(), - $this->state - ); - $this->configure($client, $options ?: []); - $this->reset(); - } - - /** - * Checks if the passed client instance satisfies the required conditions - * needed to initialize the transaction object. - * - * @param ClientInterface $client Client instance used by the transaction object. - * - * @throws NotSupportedException - */ - private function assertClient(ClientInterface $client) - { - if (!$client->getCommandFactory()->supports('MULTI', 'EXEC', 'DISCARD')) { - throw new NotSupportedException( - 'MULTI, EXEC and DISCARD are not supported by the current command factory.' - ); - } - } - - /** - * Configures the transaction using the provided options. - * - * @param ClientInterface $client Underlying client instance. - * @param array $options Array of options for the transaction. - **/ - protected function configure(ClientInterface $client, array $options) - { - if (isset($options['exceptions'])) { - $this->exceptions = (bool) $options['exceptions']; - } else { - $this->exceptions = $client->getOptions()->exceptions; - } - - if (isset($options['cas'])) { - $this->modeCAS = (bool) $options['cas']; - } - - if (isset($options['watch']) && $keys = $options['watch']) { - $this->watchKeys = $keys; - } - - if (isset($options['retry'])) { - $this->attempts = (int) $options['retry']; - } - } - - /** - * Resets the state of the transaction. - */ - protected function reset() - { - $this->state->reset(); - $this->commands = new SplQueue(); - } - - /** - * Initializes the transaction context. - */ - protected function initialize() - { - if ($this->state->isInitialized()) { - return; - } - - if ($this->modeCAS) { - $this->state->flag(MultiExecState::CAS); - } - - if ($this->watchKeys) { - $this->watch($this->watchKeys); - } - - $cas = $this->state->isCAS(); - $discarded = $this->state->isDiscarded(); - - if (!$cas || ($cas && $discarded)) { - $this->connectionStrategy->initializeTransaction(); - - if ($discarded) { - $this->state->unflag(MultiExecState::CAS); - } - } - - $this->state->unflag(MultiExecState::DISCARDED); - $this->state->flag(MultiExecState::INITIALIZED); - } - - /** - * Dynamically invokes a Redis command with the specified arguments. - * - * @param string $method Command ID. - * @param array $arguments Arguments for the command. - * - * @return mixed - */ - public function __call($method, $arguments) - { - return $this->executeCommand( - $this->client->createCommand($method, $arguments) - ); - } - - /** - * Executes the specified Redis command. - * - * @param CommandInterface $command Command instance. - * - * @return $this|mixed - * @throws AbortedMultiExecException - * @throws CommunicationException - */ - public function executeCommand(CommandInterface $command) - { - $this->initialize(); - - $response = $this->connectionStrategy->executeCommand($command); - - if ($response instanceof BypassTransactionResponse) { - return $response->getResponse(); - } - - if ($response instanceof StatusResponse && $response == 'QUEUED') { - $this->commands->enqueue($command); - } elseif ($response instanceof Relay) { - $this->commands->enqueue($command); - } elseif ($response instanceof ErrorResponseInterface) { - throw new AbortedMultiExecException($this, $response->getMessage()); - } else { - $this->onProtocolError('The server did not return a +QUEUED status response.'); - } - - return $this; - } - - /** - * Executes WATCH against one or more keys. - * - * @param string|array $keys One or more keys. - * - * @return mixed - * @throws NotSupportedException - * @throws ClientException - */ - public function watch($keys) - { - if (!$this->client->getCommandFactory()->supports('WATCH')) { - throw new NotSupportedException('WATCH is not supported by the current command factory.'); - } - - if ($this->state->isWatchAllowed()) { - throw new ClientException('Sending WATCH after MULTI is not allowed.'); - } - - $response = $this->connectionStrategy->watch(is_array($keys) ? $keys : [$keys]); - $this->state->flag(MultiExecState::WATCH); - - return $response; - } - - /** - * Finalizes the transaction by executing MULTI on the server. - * - * @return MultiExec - */ - public function multi() - { - if ($this->state->check(MultiExecState::INITIALIZED | MultiExecState::CAS)) { - $this->state->unflag(MultiExecState::CAS); - $this->connectionStrategy->multi(); - } else { - $this->initialize(); - } - - return $this; - } - - /** - * Executes UNWATCH. - * - * @return MultiExec - * @throws NotSupportedException - */ - public function unwatch() - { - if (!$this->client->getCommandFactory()->supports('UNWATCH')) { - throw new NotSupportedException( - 'UNWATCH is not supported by the current command factory.' - ); - } - - $this->state->unflag(MultiExecState::WATCH); - $this->__call('UNWATCH', []); - - return $this; - } - - /** - * Resets the transaction by UNWATCH-ing the keys that are being WATCHed and - * DISCARD-ing pending commands that have been already sent to the server. - * - * @return MultiExec - */ - public function discard() - { - if ($this->state->isInitialized()) { - if ($this->state->isCAS()) { - $this->connectionStrategy->unwatch(); - } else { - $this->connectionStrategy->discard(); - } - - $this->reset(); - $this->state->flag(MultiExecState::DISCARDED); - } - - return $this; - } - - /** - * Executes the whole transaction. - * - * @return mixed - */ - public function exec() - { - return $this->execute(); - } - - /** - * Checks the state of the transaction before execution. - * - * @param mixed $callable Callback for execution. - * - * @throws InvalidArgumentException - * @throws ClientException - */ - private function checkBeforeExecution($callable) - { - if ($this->state->isExecuting()) { - throw new ClientException( - 'Cannot invoke "execute" or "exec" inside an active transaction context.' - ); - } - - if ($callable) { - if (!is_callable($callable)) { - throw new InvalidArgumentException('The argument must be a callable object.'); - } - - if (!$this->commands->isEmpty()) { - $this->discard(); - - throw new ClientException( - 'Cannot execute a transaction block after using fluent interface.' - ); - } - } elseif ($this->attempts) { - $this->discard(); - - throw new ClientException( - 'Automatic retries are supported only when a callable block is provided.' - ); - } - } - - /** - * Handles the actual execution of the whole transaction. - * - * @param mixed $callable Optional callback for execution. - * - * @return array - * @throws CommunicationException - * @throws AbortedMultiExecException - * @throws ServerException - */ - public function execute($callable = null) - { - $this->checkBeforeExecution($callable); - - $execResponse = null; - $attempts = $this->attempts; - - do { - if ($callable) { - $this->executeTransactionBlock($callable); - } - - if ($this->commands->isEmpty()) { - if ($this->state->isWatching()) { - $this->discard(); - } - - return; - } - - $execResponse = $this->connectionStrategy->executeTransaction(); - - // The additional `false` check is needed for Relay, - // let's hope it won't break anything - if ($execResponse === null || $execResponse === false) { - if ($attempts === 0) { - throw new AbortedMultiExecException( - $this, 'The current transaction has been aborted by the server.' - ); - } - - $this->reset(); - - continue; - } - - break; - } while ($attempts-- > 0); - - $response = []; - $commands = $this->commands; - $size = count($execResponse); - $protocolVersion = $this->client->getConnection()->getParameters()->protocol; - - if ($size !== count($commands)) { - $this->onProtocolError('EXEC returned an unexpected number of response items.'); - } - - for ($i = 0; $i < $size; ++$i) { - $cmdResponse = $execResponse[$i]; - - if ($this->exceptions && $cmdResponse instanceof ErrorResponseInterface) { - throw new ServerException($cmdResponse->getMessage()); - } - - if ($cmdResponse instanceof RelayException) { - if ($this->exceptions) { - throw new ServerException($cmdResponse->getMessage(), $cmdResponse->getCode(), $cmdResponse); - } - - $commands->dequeue(); - $response[$i] = new Error($cmdResponse->getMessage()); - continue; - } - - if ($protocolVersion === 2) { - $response[$i] = $commands->dequeue()->parseResponse($cmdResponse); - } else { - $response[$i] = $commands->dequeue()->parseResp3Response($cmdResponse); - } - } - - return $response; - } - - /** - * Passes the current transaction object to a callable block for execution. - * - * @param mixed $callable Callback. - * - * @throws CommunicationException - * @throws ServerException - */ - protected function executeTransactionBlock($callable) - { - $exception = null; - $this->state->flag(MultiExecState::INSIDEBLOCK); - - try { - call_user_func($callable, $this); - } catch (CommunicationException $exception) { - // NOOP - } catch (ServerException $exception) { - // NOOP - } catch (Exception $exception) { - $this->discard(); - } - - $this->state->unflag(MultiExecState::INSIDEBLOCK); - - if ($exception) { - throw $exception; - } - } - - /** - * Helper method for protocol errors encountered inside the transaction. - * - * @param string $message Error message. - */ - private function onProtocolError($message) - { - // Since a MULTI/EXEC block cannot be initialized when using aggregate - // connections we can safely assume that Predis\Client::getConnection() - // will return a Predis\Connection\NodeConnectionInterface instance. - CommunicationException::handle(new ProtocolException( - $this->client->getConnection(), $message - )); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Transaction/MultiExecState.php b/v3_ci4/vendor/predis/predis/src/Transaction/MultiExecState.php deleted file mode 100644 index 608fbc6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Transaction/MultiExecState.php +++ /dev/null @@ -1,162 +0,0 @@ -flags = 0; - } - - /** - * Sets the internal state flags. - * - * @param int $flags Set of flags - */ - public function set($flags) - { - $this->flags = $flags; - } - - /** - * Gets the internal state flags. - * - * @return int - */ - public function get() - { - return $this->flags; - } - - /** - * Sets one or more flags. - * - * @param int $flags Set of flags - */ - public function flag($flags) - { - $this->flags |= $flags; - } - - /** - * Resets one or more flags. - * - * @param int $flags Set of flags - */ - public function unflag($flags) - { - $this->flags &= ~$flags; - } - - /** - * Returns if the specified flag or set of flags is set. - * - * @param int $flags Flag - * - * @return bool - */ - public function check($flags) - { - return ($this->flags & $flags) === $flags; - } - - /** - * Resets the state of a transaction. - */ - public function reset() - { - $this->flags = 0; - } - - /** - * Returns the state of the RESET flag. - * - * @return bool - */ - public function isReset() - { - return $this->flags === 0; - } - - /** - * Returns the state of the INITIALIZED flag. - * - * @return bool - */ - public function isInitialized() - { - return $this->check(self::INITIALIZED); - } - - /** - * Returns the state of the INSIDEBLOCK flag. - * - * @return bool - */ - public function isExecuting() - { - return $this->check(self::INSIDEBLOCK); - } - - /** - * Returns the state of the CAS flag. - * - * @return bool - */ - public function isCAS() - { - return $this->check(self::CAS); - } - - /** - * Returns if WATCH is allowed in the current state. - * - * @return bool - */ - public function isWatchAllowed() - { - return $this->check(self::INITIALIZED) && !$this->check(self::CAS); - } - - /** - * Returns the state of the WATCH flag. - * - * @return bool - */ - public function isWatching() - { - return $this->check(self::WATCH); - } - - /** - * Returns the state of the DISCARDED flag. - * - * @return bool - */ - public function isDiscarded() - { - return $this->check(self::DISCARDED); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Transaction/Response/BypassTransactionResponse.php b/v3_ci4/vendor/predis/predis/src/Transaction/Response/BypassTransactionResponse.php deleted file mode 100644 index d4b0a2c..0000000 --- a/v3_ci4/vendor/predis/predis/src/Transaction/Response/BypassTransactionResponse.php +++ /dev/null @@ -1,39 +0,0 @@ -response = $response; - } - - /** - * @return mixed - */ - public function getResponse() - { - return $this->response; - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/ClusterConnectionStrategy.php b/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/ClusterConnectionStrategy.php deleted file mode 100644 index dc86066..0000000 --- a/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/ClusterConnectionStrategy.php +++ /dev/null @@ -1,230 +0,0 @@ -commandsQueue = new SplQueue(); - $this->connection = $connection; - $this->state = $state; - $this->clusterStrategy = $this->connection->getClusterStrategy(); - } - - /** - * {@inheritDoc} - */ - public function executeCommand(CommandInterface $command) - { - if (!$this->isInitialized) { - throw new TransactionException('Transaction context should be initialized first'); - } - - $commandSlot = $this->clusterStrategy->getSlot($command); - - if (null === $this->slot) { - $this->slot = $commandSlot; - } - - if (null === $commandSlot && null !== $this->slot) { - $command->setSlot($this->slot); - } - - if (is_int($commandSlot) && $commandSlot !== $this->slot) { - return new Error( - 'To be able to execute a transaction against cluster, all commands should operate on the same hash slot' - ); - } - - $this->commandsQueue->enqueue($command); - - return new Status('QUEUED'); - } - - /** - * {@inheritDoc} - */ - public function initializeTransaction(): bool - { - if ($this->isInitialized) { - return true; - } - - $this->commandsQueue->enqueue(new MULTI()); - $this->isInitialized = true; - - return true; - } - - /** - * {@inheritDoc} - */ - public function executeTransaction() - { - if (!$this->isInitialized) { - throw new TransactionException('Transaction context should be initialized first'); - } - - $exec = new EXEC(); - - /** @var MULTI $multi */ - $multi = $this->commandsQueue->dequeue(); - $multiResp = $this->setSlotAndExecute($multi); - - // Begin transaction - if (('OK' != $multiResp) && !$multiResp instanceof Relay) { - $this->slot = null; - - return null; - } - - // Transaction body - while (!$this->commandsQueue->isEmpty()) { - /** @var CommandInterface $command */ - $command = $this->commandsQueue->dequeue(); - $commandResp = $this->setSlotAndExecute($command); - - if (('QUEUED' != $commandResp) && !$commandResp instanceof Relay) { - $this->slot = null; - - return null; - } - } - - // Execute transaction - $exec = $this->setSlotAndExecute($exec); - $this->slot = null; - - return $exec; - } - - /** - * {@inheritDoc} - */ - public function multi() - { - $response = $this->setSlotAndExecute(new MULTI()); - - if ('OK' == $response) { - $this->isInitialized = true; - } - - return $response; - } - - /** - * {@inheritDoc} - */ - public function watch(array $keys) - { - if (!$this->clusterStrategy->checkSameSlotForKeys($keys)) { - throw new TransactionException('WATCHed keys should point to the same hash slot'); - } - - $this->slot = $this->clusterStrategy->getSlotByKey($keys[0]); - - $watch = new WATCH(); - $watch->setArguments($keys); - - $response = 'OK' == $this->setSlotAndExecute($watch); - - if ($this->state->check(MultiExecState::CAS)) { - $this->initializeTransaction(); - } - - return $response; - } - - /** - * {@inheritDoc} - */ - public function discard() - { - return $this->setSlotAndExecute(new DISCARD()); - } - - /** - * {@inheritDoc} - */ - public function unwatch() - { - return $this->setSlotAndExecute(new UNWATCH()); - } - - /** - * Assigns slot to a command and executes. - * - * @param CommandInterface $command - * @return mixed - */ - private function setSlotAndExecute(CommandInterface $command) - { - if (null !== $this->slot) { - $command->setSlot($this->slot); - } - - return $this->connection->executeCommand($command); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/ConnectionStrategyResolver.php b/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/ConnectionStrategyResolver.php deleted file mode 100644 index 4df7d74..0000000 --- a/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/ConnectionStrategyResolver.php +++ /dev/null @@ -1,49 +0,0 @@ - ClusterConnectionStrategy::class, - NodeConnectionInterface::class => NodeConnectionStrategy::class, - ReplicationInterface::class => ReplicationConnectionStrategy::class, - ]; - - /** - * {@inheritDoc} - * @param MultiExecState $state - */ - public function resolve(ConnectionInterface $connection, MultiExecState $state): StrategyInterface - { - foreach ($this->strategyMapping as $interface => $strategy) { - if ($connection instanceof $interface) { - return new $strategy($connection, $state); - } - } - - throw new InvalidArgumentException( - 'Cannot resolve strategy associated with this connection type' - ); - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/NodeConnectionStrategy.php b/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/NodeConnectionStrategy.php deleted file mode 100644 index fcc02e6..0000000 --- a/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/NodeConnectionStrategy.php +++ /dev/null @@ -1,29 +0,0 @@ -connection = $connection; - $this->state = $state; - } - - /** - * {@inheritDoc} - */ - public function initializeTransaction(): bool - { - return 'OK' == $this->executeBypassingTransaction(new MULTI())->getResponse(); - } - - /** - * {@inheritDoc} - * @throws Throwable - */ - public function executeCommand(CommandInterface $command) - { - if ($this->state->isCAS()) { - return $this->executeBypassingTransaction($command); - } - - $retry = $this->connection->getParameters()->retry; - - return $retry->callWithRetry( - function () use ($command) { - return $this->connection->executeCommand($command); - }, function (CommunicationException $e) { - $this->onFailCallback($e); - } - ); - } - - /** - * {@inheritDoc} - */ - public function executeTransaction() - { - return $this->executeBypassingTransaction(new EXEC())->getResponse(); - } - - /** - * {@inheritDoc} - */ - public function multi() - { - return $this->executeBypassingTransaction(new MULTI())->getResponse(); - } - - /** - * {@inheritDoc} - */ - public function watch(array $keys) - { - $watch = new WATCH(); - $watch->setArguments($keys); - - return $this->executeBypassingTransaction($watch)->getResponse(); - } - - /** - * {@inheritDoc} - * @throws Throwable - */ - public function unwatch() - { - $retry = $this->connection->getParameters()->retry; - - return $retry->callWithRetry( - function () { - return $this->connection->executeCommand(new UNWATCH()); - }, function (CommunicationException $e) { - $this->onFailCallback($e); - } - ); - } - - /** - * {@inheritDoc} - */ - public function discard() - { - return $this->executeBypassingTransaction(new DISCARD())->getResponse(); - } - - /** - * Executes a Redis command bypassing the transaction logic. - * - * @param CommandInterface $command - * @return BypassTransactionResponse - * @throws ServerException|Throwable - */ - protected function executeBypassingTransaction(CommandInterface $command): BypassTransactionResponse - { - $retry = $this->connection->getParameters()->retry; - - try { - $response = $retry->callWithRetry( - function () use ($command) { - return $this->connection->executeCommand($command); - }, function (CommunicationException $e) { - $this->onFailCallback($e); - } - ); - } catch (ServerException $exception) { - if (!$this->connection instanceof RelayConnection) { - throw $exception; - } - - if (strcasecmp($command->getId(), 'EXEC') != 0) { - throw $exception; - } - - if (!strpos($exception->getMessage(), 'RELAY_ERR_REDIS')) { - throw $exception; - } - - return new BypassTransactionResponse(null); - } - - if ($response instanceof ErrorInterface) { - throw new ServerException($response->getMessage()); - } - - return new BypassTransactionResponse($response); - } - - /** - * Handle communication exception. - * - * @param CommunicationException $e - * @return void - */ - private function onFailCallback(CommunicationException $e) - { - $connection = $e->getConnection(); - - if ($connection instanceof NodeConnectionInterface) { - $connection->disconnect(); - - return; - } - - if ($e instanceof ConnectionException) { - $nodeConnection = $e->getConnection(); - - if ($nodeConnection) { - $nodeConnection->disconnect(); - $this->connection->remove($nodeConnection); - } - } - - if ($e instanceof TimeoutException) { - $nodeConnection = $e->getConnection(); - - if ($nodeConnection) { - $nodeConnection->disconnect(); - } - } - } -} diff --git a/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/ReplicationConnectionStrategy.php b/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/ReplicationConnectionStrategy.php deleted file mode 100644 index c8f46cd..0000000 --- a/v3_ci4/vendor/predis/predis/src/Transaction/Strategy/ReplicationConnectionStrategy.php +++ /dev/null @@ -1,29 +0,0 @@ -=7.4.0" - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - } -} diff --git a/v3_ci4/vendor/psr/container/src/ContainerExceptionInterface.php b/v3_ci4/vendor/psr/container/src/ContainerExceptionInterface.php deleted file mode 100644 index 0f213f2..0000000 --- a/v3_ci4/vendor/psr/container/src/ContainerExceptionInterface.php +++ /dev/null @@ -1,12 +0,0 @@ -=7.2.0" - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/v3_ci4/vendor/psr/event-dispatcher/src/EventDispatcherInterface.php b/v3_ci4/vendor/psr/event-dispatcher/src/EventDispatcherInterface.php deleted file mode 100644 index 4306fa9..0000000 --- a/v3_ci4/vendor/psr/event-dispatcher/src/EventDispatcherInterface.php +++ /dev/null @@ -1,21 +0,0 @@ - `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface` because the `Request` and the `Response` are `HTTP Messages`. -> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered. - diff --git a/v3_ci4/vendor/psr/http-message/docs/PSR7-Usage.md b/v3_ci4/vendor/psr/http-message/docs/PSR7-Usage.md deleted file mode 100644 index b6d048a..0000000 --- a/v3_ci4/vendor/psr/http-message/docs/PSR7-Usage.md +++ /dev/null @@ -1,159 +0,0 @@ -### PSR-7 Usage - -All PSR-7 applications comply with these interfaces -They were created to establish a standard between middleware implementations. - -> `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface` because the `Request` and the `Response` are `HTTP Messages`. -> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered. - - -The following examples will illustrate how basic operations are done in PSR-7. - -##### Examples - - -For this examples to work (at least) a PSR-7 implementation package is required. (eg: zendframework/zend-diactoros, guzzlehttp/psr7, slim/slim, etc) -All PSR-7 implementations should have the same behaviour. - -The following will be assumed: -`$request` is an object of `Psr\Http\Message\RequestInterface` and - -`$response` is an object implementing `Psr\Http\Message\RequestInterface` - - -### Working with HTTP Headers - -#### Adding headers to response: - -```php -$response->withHeader('My-Custom-Header', 'My Custom Message'); -``` - -#### Appending values to headers - -```php -$response->withAddedHeader('My-Custom-Header', 'The second message'); -``` - -#### Checking if header exists: - -```php -$request->hasHeader('My-Custom-Header'); // will return false -$response->hasHeader('My-Custom-Header'); // will return true -``` - -> Note: My-Custom-Header was only added in the Response - -#### Getting comma-separated values from a header (also applies to request) - -```php -// getting value from request headers -$request->getHeaderLine('Content-Type'); // will return: "text/html; charset=UTF-8" -// getting value from response headers -$response->getHeaderLine('My-Custom-Header'); // will return: "My Custom Message; The second message" -``` - -#### Getting array of value from a header (also applies to request) -```php -// getting value from request headers -$request->getHeader('Content-Type'); // will return: ["text/html", "charset=UTF-8"] -// getting value from response headers -$response->getHeader('My-Custom-Header'); // will return: ["My Custom Message", "The second message"] -``` - -#### Removing headers from HTTP Messages -```php -// removing a header from Request, removing deprecated "Content-MD5" header -$request->withoutHeader('Content-MD5'); - -// removing a header from Response -// effect: the browser won't know the size of the stream -// the browser will download the stream till it ends -$response->withoutHeader('Content-Length'); -``` - -### Working with HTTP Message Body - -When working with the PSR-7 there are two methods of implementation: -#### 1. Getting the body separately - -> This method makes the body handling easier to understand and is useful when repeatedly calling body methods. (You only call `getBody()` once). Using this method mistakes like `$response->write()` are also prevented. - -```php -$body = $response->getBody(); -// operations on body, eg. read, write, seek -// ... -// replacing the old body -$response->withBody($body); -// this last statement is optional as we working with objects -// in this case the "new" body is same with the "old" one -// the $body variable has the same value as the one in $request, only the reference is passed -``` - -#### 2. Working directly on response - -> This method is useful when only performing few operations as the `$request->getBody()` statement fragment is required - -```php -$response->getBody()->write('hello'); -``` - -### Getting the body contents - -The following snippet gets the contents of a stream contents. -> Note: Streams must be rewinded, if content was written into streams, it will be ignored when calling `getContents()` because the stream pointer is set to the last character, which is `\0` - meaning end of stream. -```php -$body = $response->getBody(); -$body->rewind(); // or $body->seek(0); -$bodyText = $body->getContents(); -``` -> Note: If `$body->seek(1)` is called before `$body->getContents()`, the first character will be ommited as the starting pointer is set to `1`, not `0`. This is why using `$body->rewind()` is recommended. - -### Append to body - -```php -$response->getBody()->write('Hello'); // writing directly -$body = $request->getBody(); // which is a `StreamInterface` -$body->write('xxxxx'); -``` - -### Prepend to body -Prepending is different when it comes to streams. The content must be copied before writing the content to be prepended. -The following example will explain the behaviour of streams. - -```php -// assuming our response is initially empty -$body = $repsonse->getBody(); -// writing the string "abcd" -$body->write('abcd'); - -// seeking to start of stream -$body->seek(0); -// writing 'ef' -$body->write('ef'); // at this point the stream contains "efcd" -``` - -#### Prepending by rewriting separately - -```php -// assuming our response body stream only contains: "abcd" -$body = $response->getBody(); -$body->rewind(); -$contents = $body->getContents(); // abcd -// seeking the stream to beginning -$body->rewind(); -$body->write('ef'); // stream contains "efcd" -$body->write($contents); // stream contains "efabcd" -``` - -> Note: `getContents()` seeks the stream while reading it, therefore if the second `rewind()` method call was not present the stream would have resulted in `abcdefabcd` because the `write()` method appends to stream if not preceeded by `rewind()` or `seek(0)`. - -#### Prepending by using contents as a string -```php -$body = $response->getBody(); -$body->rewind(); -$contents = $body->getContents(); // efabcd -$contents = 'ef'.$contents; -$body->rewind(); -$body->write($contents); -``` diff --git a/v3_ci4/vendor/psr/http-message/src/MessageInterface.php b/v3_ci4/vendor/psr/http-message/src/MessageInterface.php deleted file mode 100644 index a83c985..0000000 --- a/v3_ci4/vendor/psr/http-message/src/MessageInterface.php +++ /dev/null @@ -1,187 +0,0 @@ -getHeaders() as $name => $values) { - * echo $name . ": " . implode(", ", $values); - * } - * - * // Emit headers iteratively: - * foreach ($message->getHeaders() as $name => $values) { - * foreach ($values as $value) { - * header(sprintf('%s: %s', $name, $value), false); - * } - * } - * - * While header names are not case-sensitive, getHeaders() will preserve the - * exact case in which headers were originally specified. - * - * @return string[][] Returns an associative array of the message's headers. Each - * key MUST be a header name, and each value MUST be an array of strings - * for that header. - */ - public function getHeaders(): array; - - /** - * Checks if a header exists by the given case-insensitive name. - * - * @param string $name Case-insensitive header field name. - * @return bool Returns true if any header names match the given header - * name using a case-insensitive string comparison. Returns false if - * no matching header name is found in the message. - */ - public function hasHeader(string $name): bool; - - /** - * Retrieves a message header value by the given case-insensitive name. - * - * This method returns an array of all the header values of the given - * case-insensitive header name. - * - * If the header does not appear in the message, this method MUST return an - * empty array. - * - * @param string $name Case-insensitive header field name. - * @return string[] An array of string values as provided for the given - * header. If the header does not appear in the message, this method MUST - * return an empty array. - */ - public function getHeader(string $name): array; - - /** - * Retrieves a comma-separated string of the values for a single header. - * - * This method returns all of the header values of the given - * case-insensitive header name as a string concatenated together using - * a comma. - * - * NOTE: Not all header values may be appropriately represented using - * comma concatenation. For such headers, use getHeader() instead - * and supply your own delimiter when concatenating. - * - * If the header does not appear in the message, this method MUST return - * an empty string. - * - * @param string $name Case-insensitive header field name. - * @return string A string of values as provided for the given header - * concatenated together using a comma. If the header does not appear in - * the message, this method MUST return an empty string. - */ - public function getHeaderLine(string $name): string; - - /** - * Return an instance with the provided value replacing the specified header. - * - * While header names are case-insensitive, the casing of the header will - * be preserved by this function, and returned from getHeaders(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * new and/or updated header and value. - * - * @param string $name Case-insensitive header field name. - * @param string|string[] $value Header value(s). - * @return static - * @throws \InvalidArgumentException for invalid header names or values. - */ - public function withHeader(string $name, $value): MessageInterface; - - /** - * Return an instance with the specified header appended with the given value. - * - * Existing values for the specified header will be maintained. The new - * value(s) will be appended to the existing list. If the header did not - * exist previously, it will be added. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * new header and/or value. - * - * @param string $name Case-insensitive header field name to add. - * @param string|string[] $value Header value(s). - * @return static - * @throws \InvalidArgumentException for invalid header names or values. - */ - public function withAddedHeader(string $name, $value): MessageInterface; - - /** - * Return an instance without the specified header. - * - * Header resolution MUST be done without case-sensitivity. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that removes - * the named header. - * - * @param string $name Case-insensitive header field name to remove. - * @return static - */ - public function withoutHeader(string $name): MessageInterface; - - /** - * Gets the body of the message. - * - * @return StreamInterface Returns the body as a stream. - */ - public function getBody(): StreamInterface; - - /** - * Return an instance with the specified message body. - * - * The body MUST be a StreamInterface object. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return a new instance that has the - * new body stream. - * - * @param StreamInterface $body Body. - * @return static - * @throws \InvalidArgumentException When the body is not valid. - */ - public function withBody(StreamInterface $body): MessageInterface; -} diff --git a/v3_ci4/vendor/psr/http-message/src/RequestInterface.php b/v3_ci4/vendor/psr/http-message/src/RequestInterface.php deleted file mode 100644 index 33f85e5..0000000 --- a/v3_ci4/vendor/psr/http-message/src/RequestInterface.php +++ /dev/null @@ -1,130 +0,0 @@ -getQuery()` - * or from the `QUERY_STRING` server param. - * - * @return array - */ - public function getQueryParams(): array; - - /** - * Return an instance with the specified query string arguments. - * - * These values SHOULD remain immutable over the course of the incoming - * request. They MAY be injected during instantiation, such as from PHP's - * $_GET superglobal, or MAY be derived from some other value such as the - * URI. In cases where the arguments are parsed from the URI, the data - * MUST be compatible with what PHP's parse_str() would return for - * purposes of how duplicate query parameters are handled, and how nested - * sets are handled. - * - * Setting query string arguments MUST NOT change the URI stored by the - * request, nor the values in the server params. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated query string arguments. - * - * @param array $query Array of query string arguments, typically from - * $_GET. - * @return static - */ - public function withQueryParams(array $query): ServerRequestInterface; - - /** - * Retrieve normalized file upload data. - * - * This method returns upload metadata in a normalized tree, with each leaf - * an instance of Psr\Http\Message\UploadedFileInterface. - * - * These values MAY be prepared from $_FILES or the message body during - * instantiation, or MAY be injected via withUploadedFiles(). - * - * @return array An array tree of UploadedFileInterface instances; an empty - * array MUST be returned if no data is present. - */ - public function getUploadedFiles(): array; - - /** - * Create a new instance with the specified uploaded files. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated body parameters. - * - * @param array $uploadedFiles An array tree of UploadedFileInterface instances. - * @return static - * @throws \InvalidArgumentException if an invalid structure is provided. - */ - public function withUploadedFiles(array $uploadedFiles): ServerRequestInterface; - - /** - * Retrieve any parameters provided in the request body. - * - * If the request Content-Type is either application/x-www-form-urlencoded - * or multipart/form-data, and the request method is POST, this method MUST - * return the contents of $_POST. - * - * Otherwise, this method may return any results of deserializing - * the request body content; as parsing returns structured content, the - * potential types MUST be arrays or objects only. A null value indicates - * the absence of body content. - * - * @return null|array|object The deserialized body parameters, if any. - * These will typically be an array or object. - */ - public function getParsedBody(); - - /** - * Return an instance with the specified body parameters. - * - * These MAY be injected during instantiation. - * - * If the request Content-Type is either application/x-www-form-urlencoded - * or multipart/form-data, and the request method is POST, use this method - * ONLY to inject the contents of $_POST. - * - * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of - * deserializing the request body content. Deserialization/parsing returns - * structured data, and, as such, this method ONLY accepts arrays or objects, - * or a null value if nothing was available to parse. - * - * As an example, if content negotiation determines that the request data - * is a JSON payload, this method could be used to create a request - * instance with the deserialized parameters. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated body parameters. - * - * @param null|array|object $data The deserialized body data. This will - * typically be in an array or object. - * @return static - * @throws \InvalidArgumentException if an unsupported argument type is - * provided. - */ - public function withParsedBody($data): ServerRequestInterface; - - /** - * Retrieve attributes derived from the request. - * - * The request "attributes" may be used to allow injection of any - * parameters derived from the request: e.g., the results of path - * match operations; the results of decrypting cookies; the results of - * deserializing non-form-encoded message bodies; etc. Attributes - * will be application and request specific, and CAN be mutable. - * - * @return array Attributes derived from the request. - */ - public function getAttributes(): array; - - /** - * Retrieve a single derived request attribute. - * - * Retrieves a single derived request attribute as described in - * getAttributes(). If the attribute has not been previously set, returns - * the default value as provided. - * - * This method obviates the need for a hasAttribute() method, as it allows - * specifying a default value to return if the attribute is not found. - * - * @see getAttributes() - * @param string $name The attribute name. - * @param mixed $default Default value to return if the attribute does not exist. - * @return mixed - */ - public function getAttribute(string $name, $default = null); - - /** - * Return an instance with the specified derived request attribute. - * - * This method allows setting a single derived request attribute as - * described in getAttributes(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated attribute. - * - * @see getAttributes() - * @param string $name The attribute name. - * @param mixed $value The value of the attribute. - * @return static - */ - public function withAttribute(string $name, $value): ServerRequestInterface; - - /** - * Return an instance that removes the specified derived request attribute. - * - * This method allows removing a single derived request attribute as - * described in getAttributes(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that removes - * the attribute. - * - * @see getAttributes() - * @param string $name The attribute name. - * @return static - */ - public function withoutAttribute(string $name): ServerRequestInterface; -} diff --git a/v3_ci4/vendor/psr/http-message/src/StreamInterface.php b/v3_ci4/vendor/psr/http-message/src/StreamInterface.php deleted file mode 100644 index a62aabb..0000000 --- a/v3_ci4/vendor/psr/http-message/src/StreamInterface.php +++ /dev/null @@ -1,158 +0,0 @@ - - * [user-info@]host[:port] - * - * - * If the port component is not set or is the standard port for the current - * scheme, it SHOULD NOT be included. - * - * @see https://tools.ietf.org/html/rfc3986#section-3.2 - * @return string The URI authority, in "[user-info@]host[:port]" format. - */ - public function getAuthority(): string; - - /** - * Retrieve the user information component of the URI. - * - * If no user information is present, this method MUST return an empty - * string. - * - * If a user is present in the URI, this will return that value; - * additionally, if the password is also present, it will be appended to the - * user value, with a colon (":") separating the values. - * - * The trailing "@" character is not part of the user information and MUST - * NOT be added. - * - * @return string The URI user information, in "username[:password]" format. - */ - public function getUserInfo(): string; - - /** - * Retrieve the host component of the URI. - * - * If no host is present, this method MUST return an empty string. - * - * The value returned MUST be normalized to lowercase, per RFC 3986 - * Section 3.2.2. - * - * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 - * @return string The URI host. - */ - public function getHost(): string; - - /** - * Retrieve the port component of the URI. - * - * If a port is present, and it is non-standard for the current scheme, - * this method MUST return it as an integer. If the port is the standard port - * used with the current scheme, this method SHOULD return null. - * - * If no port is present, and no scheme is present, this method MUST return - * a null value. - * - * If no port is present, but a scheme is present, this method MAY return - * the standard port for that scheme, but SHOULD return null. - * - * @return null|int The URI port. - */ - public function getPort(): ?int; - - /** - * Retrieve the path component of the URI. - * - * The path can either be empty or absolute (starting with a slash) or - * rootless (not starting with a slash). Implementations MUST support all - * three syntaxes. - * - * Normally, the empty path "" and absolute path "/" are considered equal as - * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically - * do this normalization because in contexts with a trimmed base path, e.g. - * the front controller, this difference becomes significant. It's the task - * of the user to handle both "" and "/". - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.3. - * - * As an example, if the value should include a slash ("/") not intended as - * delimiter between path segments, that value MUST be passed in encoded - * form (e.g., "%2F") to the instance. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.3 - * @return string The URI path. - */ - public function getPath(): string; - - /** - * Retrieve the query string of the URI. - * - * If no query string is present, this method MUST return an empty string. - * - * The leading "?" character is not part of the query and MUST NOT be - * added. - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.4. - * - * As an example, if a value in a key/value pair of the query string should - * include an ampersand ("&") not intended as a delimiter between values, - * that value MUST be passed in encoded form (e.g., "%26") to the instance. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.4 - * @return string The URI query string. - */ - public function getQuery(): string; - - /** - * Retrieve the fragment component of the URI. - * - * If no fragment is present, this method MUST return an empty string. - * - * The leading "#" character is not part of the fragment and MUST NOT be - * added. - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.5. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.5 - * @return string The URI fragment. - */ - public function getFragment(): string; - - /** - * Return an instance with the specified scheme. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified scheme. - * - * Implementations MUST support the schemes "http" and "https" case - * insensitively, and MAY accommodate other schemes if required. - * - * An empty scheme is equivalent to removing the scheme. - * - * @param string $scheme The scheme to use with the new instance. - * @return static A new instance with the specified scheme. - * @throws \InvalidArgumentException for invalid or unsupported schemes. - */ - public function withScheme(string $scheme): UriInterface; - - /** - * Return an instance with the specified user information. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified user information. - * - * Password is optional, but the user information MUST include the - * user; an empty string for the user is equivalent to removing user - * information. - * - * @param string $user The user name to use for authority. - * @param null|string $password The password associated with $user. - * @return static A new instance with the specified user information. - */ - public function withUserInfo(string $user, ?string $password = null): UriInterface; - - /** - * Return an instance with the specified host. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified host. - * - * An empty host value is equivalent to removing the host. - * - * @param string $host The hostname to use with the new instance. - * @return static A new instance with the specified host. - * @throws \InvalidArgumentException for invalid hostnames. - */ - public function withHost(string $host): UriInterface; - - /** - * Return an instance with the specified port. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified port. - * - * Implementations MUST raise an exception for ports outside the - * established TCP and UDP port ranges. - * - * A null value provided for the port is equivalent to removing the port - * information. - * - * @param null|int $port The port to use with the new instance; a null value - * removes the port information. - * @return static A new instance with the specified port. - * @throws \InvalidArgumentException for invalid ports. - */ - public function withPort(?int $port): UriInterface; - - /** - * Return an instance with the specified path. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified path. - * - * The path can either be empty or absolute (starting with a slash) or - * rootless (not starting with a slash). Implementations MUST support all - * three syntaxes. - * - * If the path is intended to be domain-relative rather than path relative then - * it must begin with a slash ("/"). Paths not starting with a slash ("/") - * are assumed to be relative to some base path known to the application or - * consumer. - * - * Users can provide both encoded and decoded path characters. - * Implementations ensure the correct encoding as outlined in getPath(). - * - * @param string $path The path to use with the new instance. - * @return static A new instance with the specified path. - * @throws \InvalidArgumentException for invalid paths. - */ - public function withPath(string $path): UriInterface; - - /** - * Return an instance with the specified query string. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified query string. - * - * Users can provide both encoded and decoded query characters. - * Implementations ensure the correct encoding as outlined in getQuery(). - * - * An empty query string value is equivalent to removing the query string. - * - * @param string $query The query string to use with the new instance. - * @return static A new instance with the specified query string. - * @throws \InvalidArgumentException for invalid query strings. - */ - public function withQuery(string $query): UriInterface; - - /** - * Return an instance with the specified URI fragment. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified URI fragment. - * - * Users can provide both encoded and decoded fragment characters. - * Implementations ensure the correct encoding as outlined in getFragment(). - * - * An empty fragment value is equivalent to removing the fragment. - * - * @param string $fragment The fragment to use with the new instance. - * @return static A new instance with the specified fragment. - */ - public function withFragment(string $fragment): UriInterface; - - /** - * Return the string representation as a URI reference. - * - * Depending on which components of the URI are present, the resulting - * string is either a full URI or relative reference according to RFC 3986, - * Section 4.1. The method concatenates the various components of the URI, - * using the appropriate delimiters: - * - * - If a scheme is present, it MUST be suffixed by ":". - * - If an authority is present, it MUST be prefixed by "//". - * - The path can be concatenated without delimiters. But there are two - * cases where the path has to be adjusted to make the URI reference - * valid as PHP does not allow to throw an exception in __toString(): - * - If the path is rootless and an authority is present, the path MUST - * be prefixed by "/". - * - If the path is starting with more than one "/" and no authority is - * present, the starting slashes MUST be reduced to one. - * - If a query is present, it MUST be prefixed by "?". - * - If a fragment is present, it MUST be prefixed by "#". - * - * @see http://tools.ietf.org/html/rfc3986#section-4.1 - * @return string - */ - public function __toString(): string; -} diff --git a/v3_ci4/vendor/psr/log/LICENSE b/v3_ci4/vendor/psr/log/LICENSE deleted file mode 100644 index 474c952..0000000 --- a/v3_ci4/vendor/psr/log/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 PHP Framework Interoperability Group - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/psr/log/README.md b/v3_ci4/vendor/psr/log/README.md deleted file mode 100644 index a9f20c4..0000000 --- a/v3_ci4/vendor/psr/log/README.md +++ /dev/null @@ -1,58 +0,0 @@ -PSR Log -======= - -This repository holds all interfaces/classes/traits related to -[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md). - -Note that this is not a logger of its own. It is merely an interface that -describes a logger. See the specification for more details. - -Installation ------------- - -```bash -composer require psr/log -``` - -Usage ------ - -If you need a logger, you can use the interface like this: - -```php -logger = $logger; - } - - public function doSomething() - { - if ($this->logger) { - $this->logger->info('Doing work'); - } - - try { - $this->doSomethingElse(); - } catch (Exception $exception) { - $this->logger->error('Oh no!', array('exception' => $exception)); - } - - // do something useful - } -} -``` - -You can then pick one of the implementations of the interface to get a logger. - -If you want to implement the interface, you can require this package and -implement `Psr\Log\LoggerInterface` in your code. Please read the -[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) -for details. diff --git a/v3_ci4/vendor/psr/log/composer.json b/v3_ci4/vendor/psr/log/composer.json deleted file mode 100644 index 879fc6f..0000000 --- a/v3_ci4/vendor/psr/log/composer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "psr/log", - "description": "Common interface for logging libraries", - "keywords": ["psr", "psr-3", "log"], - "homepage": "https://github.com/php-fig/log", - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "require": { - "php": ">=8.0.0" - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - } -} diff --git a/v3_ci4/vendor/psr/log/src/AbstractLogger.php b/v3_ci4/vendor/psr/log/src/AbstractLogger.php deleted file mode 100644 index d60a091..0000000 --- a/v3_ci4/vendor/psr/log/src/AbstractLogger.php +++ /dev/null @@ -1,15 +0,0 @@ -logger = $logger; - } -} diff --git a/v3_ci4/vendor/psr/log/src/LoggerInterface.php b/v3_ci4/vendor/psr/log/src/LoggerInterface.php deleted file mode 100644 index cb4cf64..0000000 --- a/v3_ci4/vendor/psr/log/src/LoggerInterface.php +++ /dev/null @@ -1,98 +0,0 @@ -log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - */ - public function alert(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - */ - public function critical(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - */ - public function error(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - */ - public function warning(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - */ - public function notice(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - */ - public function info(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - */ - public function debug(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::DEBUG, $message, $context); - } - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * - * @throws \Psr\Log\InvalidArgumentException - */ - abstract public function log($level, string|\Stringable $message, array $context = []): void; -} diff --git a/v3_ci4/vendor/psr/log/src/NullLogger.php b/v3_ci4/vendor/psr/log/src/NullLogger.php deleted file mode 100644 index de0561e..0000000 --- a/v3_ci4/vendor/psr/log/src/NullLogger.php +++ /dev/null @@ -1,26 +0,0 @@ -logger) { }` - * blocks. - */ -class NullLogger extends AbstractLogger -{ - /** - * Logs with an arbitrary level. - * - * @param mixed[] $context - * - * @throws \Psr\Log\InvalidArgumentException - */ - public function log($level, string|\Stringable $message, array $context = []): void - { - // noop - } -} diff --git a/v3_ci4/vendor/react/cache/CHANGELOG.md b/v3_ci4/vendor/react/cache/CHANGELOG.md deleted file mode 100644 index ab59f18..0000000 --- a/v3_ci4/vendor/react/cache/CHANGELOG.md +++ /dev/null @@ -1,96 +0,0 @@ -# Changelog - -## 1.2.0 (2022-11-30) - -* Feature: Support PHP 8.1 and PHP 8.2. - (#47 by @SimonFrings and #52 by @WyriHaximus) - -* Minor documentation improvements. - (#48 by @SimonFrings and #51 by @nhedger) - -* Update test suite and use GitHub actions for continuous integration (CI). - (#45 and #49 by @SimonFrings and #54 by @clue) - -## 1.1.0 (2020-09-18) - -* Feature: Forward compatibility with react/promise 3. - (#39 by @WyriHaximus) - -* Add `.gitattributes` to exclude dev files from exports. - (#40 by @reedy) - -* Improve test suite, update to support PHP 8 and PHPUnit 9.3. - (#41 and #43 by @SimonFrings and #42 by @WyriHaximus) - -## 1.0.0 (2019-07-11) - -* First stable LTS release, now following [SemVer](https://semver.org/). - We'd like to emphasize that this component is production ready and battle-tested. - We plan to support all long-term support (LTS) releases for at least 24 months, - so you have a rock-solid foundation to build on top of. - -> Contains no other changes, so it's actually fully compatible with the v0.6.0 release. - -## 0.6.0 (2019-07-04) - -* Feature / BC break: Add support for `getMultiple()`, `setMultiple()`, `deleteMultiple()`, `clear()` and `has()` - supporting multiple cache items (inspired by PSR-16). - (#32 by @krlv and #37 by @clue) - -* Documentation for TTL precision with millisecond accuracy or below and - use high-resolution timer for cache TTL on PHP 7.3+. - (#35 and #38 by @clue) - -* Improve API documentation and allow legacy HHVM to fail in Travis CI config. - (#34 and #36 by @clue) - -* Prefix all global functions calls with \ to skip the look up and resolve process and go straight to the global function. - (#31 by @WyriHaximus) - -## 0.5.0 (2018-06-25) - -* Improve documentation by describing what is expected of a class implementing `CacheInterface`. - (#21, #22, #23, #27 by @WyriHaximus) - -* Implemented (optional) Least Recently Used (LRU) cache algorithm for `ArrayCache`. - (#26 by @clue) - -* Added support for cache expiration (TTL). - (#29 by @clue and @WyriHaximus) - -* Renamed `remove` to `delete` making it more in line with `PSR-16`. - (#30 by @clue) - -## 0.4.2 (2017-12-20) - -* Improve documentation with usage and installation instructions - (#10 by @clue) - -* Improve test suite by adding PHPUnit to `require-dev` and - add forward compatibility with PHPUnit 5 and PHPUnit 6 and - sanitize Composer autoload paths - (#14 by @shaunbramley and #12 and #18 by @clue) - -## 0.4.1 (2016-02-25) - -* Repository maintenance, split off from main repo, improve test suite and documentation -* First class support for PHP7 and HHVM (#9 by @clue) -* Adjust compatibility to 5.3 (#7 by @clue) - -## 0.4.0 (2014-02-02) - -* BC break: Bump minimum PHP version to PHP 5.4, remove 5.3 specific hacks -* BC break: Update to React/Promise 2.0 -* Dependency: Autoloading and filesystem structure now PSR-4 instead of PSR-0 - -## 0.3.2 (2013-05-10) - -* Version bump - -## 0.3.0 (2013-04-14) - -* Version bump - -## 0.2.6 (2012-12-26) - -* Feature: New cache component, used by DNS diff --git a/v3_ci4/vendor/react/cache/LICENSE b/v3_ci4/vendor/react/cache/LICENSE deleted file mode 100644 index d6f8901..0000000 --- a/v3_ci4/vendor/react/cache/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/react/cache/README.md b/v3_ci4/vendor/react/cache/README.md deleted file mode 100644 index 7a86be9..0000000 --- a/v3_ci4/vendor/react/cache/README.md +++ /dev/null @@ -1,367 +0,0 @@ -# Cache - -[![CI status](https://github.com/reactphp/cache/actions/workflows/ci.yml/badge.svg)](https://github.com/reactphp/cache/actions) -[![installs on Packagist](https://img.shields.io/packagist/dt/react/cache?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/react/cache) - -Async, [Promise](https://github.com/reactphp/promise)-based cache interface -for [ReactPHP](https://reactphp.org/). - -The cache component provides a -[Promise](https://github.com/reactphp/promise)-based -[`CacheInterface`](#cacheinterface) and an in-memory [`ArrayCache`](#arraycache) -implementation of that. -This allows consumers to type hint against the interface and third parties to -provide alternate implementations. -This project is heavily inspired by -[PSR-16: Common Interface for Caching Libraries](https://www.php-fig.org/psr/psr-16/), -but uses an interface more suited for async, non-blocking applications. - -**Table of Contents** - -* [Usage](#usage) - * [CacheInterface](#cacheinterface) - * [get()](#get) - * [set()](#set) - * [delete()](#delete) - * [getMultiple()](#getmultiple) - * [setMultiple()](#setmultiple) - * [deleteMultiple()](#deletemultiple) - * [clear()](#clear) - * [has()](#has) - * [ArrayCache](#arraycache) -* [Common usage](#common-usage) - * [Fallback get](#fallback-get) - * [Fallback-get-and-set](#fallback-get-and-set) -* [Install](#install) -* [Tests](#tests) -* [License](#license) - -## Usage - -### CacheInterface - -The `CacheInterface` describes the main interface of this component. -This allows consumers to type hint against the interface and third parties to -provide alternate implementations. - -#### get() - -The `get(string $key, mixed $default = null): PromiseInterface` method can be used to -retrieve an item from the cache. - -This method will resolve with the cached value on success or with the -given `$default` value when no item can be found or when an error occurs. -Similarly, an expired cache item (once the time-to-live is expired) is -considered a cache miss. - -```php -$cache - ->get('foo') - ->then('var_dump'); -``` - -This example fetches the value of the key `foo` and passes it to the -`var_dump` function. You can use any of the composition provided by -[promises](https://github.com/reactphp/promise). - -#### set() - -The `set(string $key, mixed $value, ?float $ttl = null): PromiseInterface` method can be used to -store an item in the cache. - -This method will resolve with `true` on success or `false` when an error -occurs. If the cache implementation has to go over the network to store -it, it may take a while. - -The optional `$ttl` parameter sets the maximum time-to-live in seconds -for this cache item. If this parameter is omitted (or `null`), the item -will stay in the cache for as long as the underlying implementation -supports. Trying to access an expired cache item results in a cache miss, -see also [`get()`](#get). - -```php -$cache->set('foo', 'bar', 60); -``` - -This example eventually sets the value of the key `foo` to `bar`. If it -already exists, it is overridden. - -This interface does not enforce any particular TTL resolution, so special -care may have to be taken if you rely on very high precision with -millisecond accuracy or below. Cache implementations SHOULD work on a -best effort basis and SHOULD provide at least second accuracy unless -otherwise noted. Many existing cache implementations are known to provide -microsecond or millisecond accuracy, but it's generally not recommended -to rely on this high precision. - -This interface suggests that cache implementations SHOULD use a monotonic -time source if available. Given that a monotonic time source is only -available as of PHP 7.3 by default, cache implementations MAY fall back -to using wall-clock time. -While this does not affect many common use cases, this is an important -distinction for programs that rely on a high time precision or on systems -that are subject to discontinuous time adjustments (time jumps). -This means that if you store a cache item with a TTL of 30s and then -adjust your system time forward by 20s, the cache item SHOULD still -expire in 30s. - -#### delete() - -The `delete(string $key): PromiseInterface` method can be used to -delete an item from the cache. - -This method will resolve with `true` on success or `false` when an error -occurs. When no item for `$key` is found in the cache, it also resolves -to `true`. If the cache implementation has to go over the network to -delete it, it may take a while. - -```php -$cache->delete('foo'); -``` - -This example eventually deletes the key `foo` from the cache. As with -`set()`, this may not happen instantly and a promise is returned to -provide guarantees whether or not the item has been removed from cache. - -#### getMultiple() - -The `getMultiple(string[] $keys, mixed $default = null): PromiseInterface` method can be used to -retrieve multiple cache items by their unique keys. - -This method will resolve with an array of cached values on success or with the -given `$default` value when an item can not be found or when an error occurs. -Similarly, an expired cache item (once the time-to-live is expired) is -considered a cache miss. - -```php -$cache->getMultiple(array('name', 'age'))->then(function (array $values) { - $name = $values['name'] ?? 'User'; - $age = $values['age'] ?? 'n/a'; - - echo $name . ' is ' . $age . PHP_EOL; -}); -``` - -This example fetches the cache items for the `name` and `age` keys and -prints some example output. You can use any of the composition provided -by [promises](https://github.com/reactphp/promise). - -#### setMultiple() - -The `setMultiple(array $values, ?float $ttl = null): PromiseInterface` method can be used to -persist a set of key => value pairs in the cache, with an optional TTL. - -This method will resolve with `true` on success or `false` when an error -occurs. If the cache implementation has to go over the network to store -it, it may take a while. - -The optional `$ttl` parameter sets the maximum time-to-live in seconds -for these cache items. If this parameter is omitted (or `null`), these items -will stay in the cache for as long as the underlying implementation -supports. Trying to access an expired cache items results in a cache miss, -see also [`getMultiple()`](#getmultiple). - -```php -$cache->setMultiple(array('foo' => 1, 'bar' => 2), 60); -``` - -This example eventually sets the list of values - the key `foo` to `1` value -and the key `bar` to `2`. If some of the keys already exist, they are overridden. - -#### deleteMultiple() - -The `setMultiple(string[] $keys): PromiseInterface` method can be used to -delete multiple cache items in a single operation. - -This method will resolve with `true` on success or `false` when an error -occurs. When no items for `$keys` are found in the cache, it also resolves -to `true`. If the cache implementation has to go over the network to -delete it, it may take a while. - -```php -$cache->deleteMultiple(array('foo', 'bar, 'baz')); -``` - -This example eventually deletes keys `foo`, `bar` and `baz` from the cache. -As with `setMultiple()`, this may not happen instantly and a promise is returned to -provide guarantees whether or not the item has been removed from cache. - -#### clear() - -The `clear(): PromiseInterface` method can be used to -wipe clean the entire cache. - -This method will resolve with `true` on success or `false` when an error -occurs. If the cache implementation has to go over the network to -delete it, it may take a while. - -```php -$cache->clear(); -``` - -This example eventually deletes all keys from the cache. As with `deleteMultiple()`, -this may not happen instantly and a promise is returned to provide guarantees -whether or not all the items have been removed from cache. - -#### has() - -The `has(string $key): PromiseInterface` method can be used to -determine whether an item is present in the cache. - -This method will resolve with `true` on success or `false` when no item can be found -or when an error occurs. Similarly, an expired cache item (once the time-to-live -is expired) is considered a cache miss. - -```php -$cache - ->has('foo') - ->then('var_dump'); -``` - -This example checks if the value of the key `foo` is set in the cache and passes -the result to the `var_dump` function. You can use any of the composition provided by -[promises](https://github.com/reactphp/promise). - -NOTE: It is recommended that has() is only to be used for cache warming type purposes -and not to be used within your live applications operations for get/set, as this method -is subject to a race condition where your has() will return true and immediately after, -another script can remove it making the state of your app out of date. - -### ArrayCache - -The `ArrayCache` provides an in-memory implementation of the [`CacheInterface`](#cacheinterface). - -```php -$cache = new ArrayCache(); - -$cache->set('foo', 'bar'); -``` - -Its constructor accepts an optional `?int $limit` parameter to limit the -maximum number of entries to store in the LRU cache. If you add more -entries to this instance, it will automatically take care of removing -the one that was least recently used (LRU). - -For example, this snippet will overwrite the first value and only store -the last two entries: - -```php -$cache = new ArrayCache(2); - -$cache->set('foo', '1'); -$cache->set('bar', '2'); -$cache->set('baz', '3'); -``` - -This cache implementation is known to rely on wall-clock time to schedule -future cache expiration times when using any version before PHP 7.3, -because a monotonic time source is only available as of PHP 7.3 (`hrtime()`). -While this does not affect many common use cases, this is an important -distinction for programs that rely on a high time precision or on systems -that are subject to discontinuous time adjustments (time jumps). -This means that if you store a cache item with a TTL of 30s on PHP < 7.3 -and then adjust your system time forward by 20s, the cache item may -expire in 10s. See also [`set()`](#set) for more details. - -## Common usage - -### Fallback get - -A common use case of caches is to attempt fetching a cached value and as a -fallback retrieve it from the original data source if not found. Here is an -example of that: - -```php -$cache - ->get('foo') - ->then(function ($result) { - if ($result === null) { - return getFooFromDb(); - } - - return $result; - }) - ->then('var_dump'); -``` - -First an attempt is made to retrieve the value of `foo`. A callback function is -registered that will call `getFooFromDb` when the resulting value is null. -`getFooFromDb` is a function (can be any PHP callable) that will be called if the -key does not exist in the cache. - -`getFooFromDb` can handle the missing key by returning a promise for the -actual value from the database (or any other data source). As a result, this -chain will correctly fall back, and provide the value in both cases. - -### Fallback get and set - -To expand on the fallback get example, often you want to set the value on the -cache after fetching it from the data source. - -```php -$cache - ->get('foo') - ->then(function ($result) { - if ($result === null) { - return $this->getAndCacheFooFromDb(); - } - - return $result; - }) - ->then('var_dump'); - -public function getAndCacheFooFromDb() -{ - return $this->db - ->get('foo') - ->then(array($this, 'cacheFooFromDb')); -} - -public function cacheFooFromDb($foo) -{ - $this->cache->set('foo', $foo); - - return $foo; -} -``` - -By using chaining you can easily conditionally cache the value if it is -fetched from the database. - -## Install - -The recommended way to install this library is [through Composer](https://getcomposer.org). -[New to Composer?](https://getcomposer.org/doc/00-intro.md) - -This project follows [SemVer](https://semver.org/). -This will install the latest supported version: - -```bash -composer require react/cache:^1.2 -``` - -See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades. - -This project aims to run on any platform and thus does not require any PHP -extensions and supports running on legacy PHP 5.3 through current PHP 8+ and -HHVM. -It's *highly recommended to use PHP 7+* for this project. - -## Tests - -To run the test suite, you first need to clone this repo and then install all -dependencies [through Composer](https://getcomposer.org): - -```bash -composer install -``` - -To run the test suite, go to the project root and run: - -```bash -vendor/bin/phpunit -``` - -## License - -MIT, see [LICENSE file](LICENSE). diff --git a/v3_ci4/vendor/react/cache/composer.json b/v3_ci4/vendor/react/cache/composer.json deleted file mode 100644 index 153439a..0000000 --- a/v3_ci4/vendor/react/cache/composer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "react/cache", - "description": "Async, Promise-based cache interface for ReactPHP", - "keywords": ["cache", "caching", "promise", "ReactPHP"], - "license": "MIT", - "authors": [ - { - "name": "Christian Lück", - "homepage": "https://clue.engineering/", - "email": "christian@clue.engineering" - }, - { - "name": "Cees-Jan Kiewiet", - "homepage": "https://wyrihaximus.net/", - "email": "reactphp@ceesjankiewiet.nl" - }, - { - "name": "Jan Sorgalla", - "homepage": "https://sorgalla.com/", - "email": "jsorgalla@gmail.com" - }, - { - "name": "Chris Boden", - "homepage": "https://cboden.dev/", - "email": "cboden@gmail.com" - } - ], - "require": { - "php": ">=5.3.0", - "react/promise": "^3.0 || ^2.0 || ^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" - }, - "autoload": { - "psr-4": { - "React\\Cache\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "React\\Tests\\Cache\\": "tests/" - } - } -} diff --git a/v3_ci4/vendor/react/cache/src/ArrayCache.php b/v3_ci4/vendor/react/cache/src/ArrayCache.php deleted file mode 100644 index 81f25ef..0000000 --- a/v3_ci4/vendor/react/cache/src/ArrayCache.php +++ /dev/null @@ -1,181 +0,0 @@ -set('foo', 'bar'); - * ``` - * - * Its constructor accepts an optional `?int $limit` parameter to limit the - * maximum number of entries to store in the LRU cache. If you add more - * entries to this instance, it will automatically take care of removing - * the one that was least recently used (LRU). - * - * For example, this snippet will overwrite the first value and only store - * the last two entries: - * - * ```php - * $cache = new ArrayCache(2); - * - * $cache->set('foo', '1'); - * $cache->set('bar', '2'); - * $cache->set('baz', '3'); - * ``` - * - * This cache implementation is known to rely on wall-clock time to schedule - * future cache expiration times when using any version before PHP 7.3, - * because a monotonic time source is only available as of PHP 7.3 (`hrtime()`). - * While this does not affect many common use cases, this is an important - * distinction for programs that rely on a high time precision or on systems - * that are subject to discontinuous time adjustments (time jumps). - * This means that if you store a cache item with a TTL of 30s on PHP < 7.3 - * and then adjust your system time forward by 20s, the cache item may - * expire in 10s. See also [`set()`](#set) for more details. - * - * @param int|null $limit maximum number of entries to store in the LRU cache - */ - public function __construct($limit = null) - { - $this->limit = $limit; - - // prefer high-resolution timer, available as of PHP 7.3+ - $this->supportsHighResolution = \function_exists('hrtime'); - } - - public function get($key, $default = null) - { - // delete key if it is already expired => below will detect this as a cache miss - if (isset($this->expires[$key]) && $this->now() - $this->expires[$key] > 0) { - unset($this->data[$key], $this->expires[$key]); - } - - if (!\array_key_exists($key, $this->data)) { - return Promise\resolve($default); - } - - // remove and append to end of array to keep track of LRU info - $value = $this->data[$key]; - unset($this->data[$key]); - $this->data[$key] = $value; - - return Promise\resolve($value); - } - - public function set($key, $value, $ttl = null) - { - // unset before setting to ensure this entry will be added to end of array (LRU info) - unset($this->data[$key]); - $this->data[$key] = $value; - - // sort expiration times if TTL is given (first will expire first) - unset($this->expires[$key]); - if ($ttl !== null) { - $this->expires[$key] = $this->now() + $ttl; - \asort($this->expires); - } - - // ensure size limit is not exceeded or remove first entry from array - if ($this->limit !== null && \count($this->data) > $this->limit) { - // first try to check if there's any expired entry - // expiration times are sorted, so we can simply look at the first one - \reset($this->expires); - $key = \key($this->expires); - - // check to see if the first in the list of expiring keys is already expired - // if the first key is not expired, we have to overwrite by using LRU info - if ($key === null || $this->now() - $this->expires[$key] < 0) { - \reset($this->data); - $key = \key($this->data); - } - unset($this->data[$key], $this->expires[$key]); - } - - return Promise\resolve(true); - } - - public function delete($key) - { - unset($this->data[$key], $this->expires[$key]); - - return Promise\resolve(true); - } - - public function getMultiple(array $keys, $default = null) - { - $values = array(); - - foreach ($keys as $key) { - $values[$key] = $this->get($key, $default); - } - - return Promise\all($values); - } - - public function setMultiple(array $values, $ttl = null) - { - foreach ($values as $key => $value) { - $this->set($key, $value, $ttl); - } - - return Promise\resolve(true); - } - - public function deleteMultiple(array $keys) - { - foreach ($keys as $key) { - unset($this->data[$key], $this->expires[$key]); - } - - return Promise\resolve(true); - } - - public function clear() - { - $this->data = array(); - $this->expires = array(); - - return Promise\resolve(true); - } - - public function has($key) - { - // delete key if it is already expired - if (isset($this->expires[$key]) && $this->now() - $this->expires[$key] > 0) { - unset($this->data[$key], $this->expires[$key]); - } - - if (!\array_key_exists($key, $this->data)) { - return Promise\resolve(false); - } - - // remove and append to end of array to keep track of LRU info - $value = $this->data[$key]; - unset($this->data[$key]); - $this->data[$key] = $value; - - return Promise\resolve(true); - } - - /** - * @return float - */ - private function now() - { - return $this->supportsHighResolution ? \hrtime(true) * 1e-9 : \microtime(true); - } -} diff --git a/v3_ci4/vendor/react/cache/src/CacheInterface.php b/v3_ci4/vendor/react/cache/src/CacheInterface.php deleted file mode 100644 index 8e51c19..0000000 --- a/v3_ci4/vendor/react/cache/src/CacheInterface.php +++ /dev/null @@ -1,194 +0,0 @@ -get('foo') - * ->then('var_dump'); - * ``` - * - * This example fetches the value of the key `foo` and passes it to the - * `var_dump` function. You can use any of the composition provided by - * [promises](https://github.com/reactphp/promise). - * - * @param string $key - * @param mixed $default Default value to return for cache miss or null if not given. - * @return PromiseInterface - */ - public function get($key, $default = null); - - /** - * Stores an item in the cache. - * - * This method will resolve with `true` on success or `false` when an error - * occurs. If the cache implementation has to go over the network to store - * it, it may take a while. - * - * The optional `$ttl` parameter sets the maximum time-to-live in seconds - * for this cache item. If this parameter is omitted (or `null`), the item - * will stay in the cache for as long as the underlying implementation - * supports. Trying to access an expired cache item results in a cache miss, - * see also [`get()`](#get). - * - * ```php - * $cache->set('foo', 'bar', 60); - * ``` - * - * This example eventually sets the value of the key `foo` to `bar`. If it - * already exists, it is overridden. - * - * This interface does not enforce any particular TTL resolution, so special - * care may have to be taken if you rely on very high precision with - * millisecond accuracy or below. Cache implementations SHOULD work on a - * best effort basis and SHOULD provide at least second accuracy unless - * otherwise noted. Many existing cache implementations are known to provide - * microsecond or millisecond accuracy, but it's generally not recommended - * to rely on this high precision. - * - * This interface suggests that cache implementations SHOULD use a monotonic - * time source if available. Given that a monotonic time source is only - * available as of PHP 7.3 by default, cache implementations MAY fall back - * to using wall-clock time. - * While this does not affect many common use cases, this is an important - * distinction for programs that rely on a high time precision or on systems - * that are subject to discontinuous time adjustments (time jumps). - * This means that if you store a cache item with a TTL of 30s and then - * adjust your system time forward by 20s, the cache item SHOULD still - * expire in 30s. - * - * @param string $key - * @param mixed $value - * @param ?float $ttl - * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error - */ - public function set($key, $value, $ttl = null); - - /** - * Deletes an item from the cache. - * - * This method will resolve with `true` on success or `false` when an error - * occurs. When no item for `$key` is found in the cache, it also resolves - * to `true`. If the cache implementation has to go over the network to - * delete it, it may take a while. - * - * ```php - * $cache->delete('foo'); - * ``` - * - * This example eventually deletes the key `foo` from the cache. As with - * `set()`, this may not happen instantly and a promise is returned to - * provide guarantees whether or not the item has been removed from cache. - * - * @param string $key - * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error - */ - public function delete($key); - - /** - * Retrieves multiple cache items by their unique keys. - * - * This method will resolve with an array of cached values on success or with the - * given `$default` value when an item can not be found or when an error occurs. - * Similarly, an expired cache item (once the time-to-live is expired) is - * considered a cache miss. - * - * ```php - * $cache->getMultiple(array('name', 'age'))->then(function (array $values) { - * $name = $values['name'] ?? 'User'; - * $age = $values['age'] ?? 'n/a'; - * - * echo $name . ' is ' . $age . PHP_EOL; - * }); - * ``` - * - * This example fetches the cache items for the `name` and `age` keys and - * prints some example output. You can use any of the composition provided - * by [promises](https://github.com/reactphp/promise). - * - * @param string[] $keys A list of keys that can obtained in a single operation. - * @param mixed $default Default value to return for keys that do not exist. - * @return PromiseInterface Returns a promise which resolves to an `array` of cached values - */ - public function getMultiple(array $keys, $default = null); - - /** - * Persists a set of key => value pairs in the cache, with an optional TTL. - * - * This method will resolve with `true` on success or `false` when an error - * occurs. If the cache implementation has to go over the network to store - * it, it may take a while. - * - * The optional `$ttl` parameter sets the maximum time-to-live in seconds - * for these cache items. If this parameter is omitted (or `null`), these items - * will stay in the cache for as long as the underlying implementation - * supports. Trying to access an expired cache items results in a cache miss, - * see also [`get()`](#get). - * - * ```php - * $cache->setMultiple(array('foo' => 1, 'bar' => 2), 60); - * ``` - * - * This example eventually sets the list of values - the key `foo` to 1 value - * and the key `bar` to 2. If some of the keys already exist, they are overridden. - * - * @param array $values A list of key => value pairs for a multiple-set operation. - * @param ?float $ttl Optional. The TTL value of this item. - * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error - */ - public function setMultiple(array $values, $ttl = null); - - /** - * Deletes multiple cache items in a single operation. - * - * @param string[] $keys A list of string-based keys to be deleted. - * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error - */ - public function deleteMultiple(array $keys); - - /** - * Wipes clean the entire cache. - * - * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error - */ - public function clear(); - - /** - * Determines whether an item is present in the cache. - * - * This method will resolve with `true` on success or `false` when no item can be found - * or when an error occurs. Similarly, an expired cache item (once the time-to-live - * is expired) is considered a cache miss. - * - * ```php - * $cache - * ->has('foo') - * ->then('var_dump'); - * ``` - * - * This example checks if the value of the key `foo` is set in the cache and passes - * the result to the `var_dump` function. You can use any of the composition provided by - * [promises](https://github.com/reactphp/promise). - * - * NOTE: It is recommended that has() is only to be used for cache warming type purposes - * and not to be used within your live applications operations for get/set, as this method - * is subject to a race condition where your has() will return true and immediately after, - * another script can remove it making the state of your app out of date. - * - * @param string $key The cache item key. - * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error - */ - public function has($key); -} diff --git a/v3_ci4/vendor/react/child-process/CHANGELOG.md b/v3_ci4/vendor/react/child-process/CHANGELOG.md deleted file mode 100644 index 3ee0221..0000000 --- a/v3_ci4/vendor/react/child-process/CHANGELOG.md +++ /dev/null @@ -1,186 +0,0 @@ -# Changelog - -## 0.6.7 (2025-12-23) - -Just in time for the holidays, we are happy to announce the release of `v0.6.7`! 🎄🎉 - -This is a compatibility release that contains backported features from the `0.7.x` branch. -Once v0.7 is released, it will be the way forward for this project. - -* Feature: Improve PHP 8.5+ support by replacing binary cast with string cast. - (#119 by @kubawerlos and @WyriHaximus) - -## 0.6.6 (2025-01-01) - -This is a compatibility release that contains backported features from the `0.7.x` branch. -Once v0.7 is released, it will be the way forward for this project. - -* Feature: Improve PHP 8.4+ support by avoiding implicitly nullable types. - (#114 by @clue) - -* Improve test suite to run tests on latest PHP versions and report failed assertions. - (#113 by @clue) - -## 0.6.5 (2022-09-16) - -* Feature: Full support for PHP 8.1 and PHP 8.2 release. - (#91 by @SimonFrings and #99 by @WyriHaximus) - -* Feature / Fix: Improve error reporting when custom error handler is used. - (#94 by @clue) - -* Minor documentation improvements. - (#92 by @SimonFrings and #95 by @nhedger) - -* Improve test suite, skip failing tests on bugged versions and fix legacy HHVM build. - (#96 and #98 by @clue and #93 by @SimonFrings) - -## 0.6.4 (2021-10-12) - -* Feature / Fix: Skip sigchild check if `phpinfo()` has been disabled. - (#89 by @clue) - -* Fix: Fix detecting closed socket pipes on PHP 8. - (#90 by @clue) - -## 0.6.3 (2021-07-11) - -A major new feature release, see [**release announcement**](https://clue.engineering/2021/announcing-reactphp-default-loop). - -* Feature: Simplify usage by supporting new [default loop](https://reactphp.org/event-loop/#loop). - (#87 by @clue) - - ```php - // old (still supported) - $process = new React\ChildProcess\Process($command); - $process->start($loop); - - // new (using default loop) - $process = new React\ChildProcess\Process($command); - $process->start(); - ``` - -## 0.6.2 (2021-02-05) - -* Feature: Support PHP 8 and add non-blocking I/O support on Windows with PHP 8. - (#85 by @clue) - -* Minor documentation improvements. - (#78 by @WyriHaximus and #80 by @gdejong) - -* Improve test suite and add `.gitattributes` to exclude dev files from exports. - Run tests on PHPUnit 9, switch to GitHub actions and clean up test suite. - (#75 by @reedy, #81 by @gdejong, #82 by @SimonFrings and #84 by @clue) - -## 0.6.1 (2019-02-15) - -* Feature / Fix: Improve error reporting when spawning child process fails. - (#73 by @clue) - -## 0.6.0 (2019-01-14) - -A major feature release with some minor API improvements! -This project now has limited Windows support and supports passing custom pipes -and file descriptors to the child process. - -This update involves a few minor BC breaks. We've tried hard to avoid BC breaks -where possible and minimize impact otherwise. We expect that most consumers of -this package will actually not be affected by any BC breaks, see below for more -details. - -* Feature / BC break: Support passing custom pipes and file descriptors to child process, - expose all standard I/O pipes in an array and remove unused Windows-only options. - (#62, #64 and #65 by @clue) - - > BC note: The optional `$options` parameter in the `Process` constructor - has been removed and a new `$fds` parameter has been added instead. The - previous `$options` parameter was Windows-only, available options were not - documented or referenced anywhere else in this library, so its actual - impact is expected to be relatively small. See the documentation and the - following changelog entry if you're looking for Windows support. - -* Feature: Support spawning child process on Windows without process I/O pipes. - (#67 by @clue) - -* Feature / BC break: Improve sigchild compatibility and support explicit configuration. - (#63 by @clue) - - ```php - // advanced: not recommended by default - Process::setSigchildEnabled(true); - ``` - - > BC note: The old public sigchild methods have been removed, but its - practical impact is believed to be relatively small due to the automatic detection. - -* Improve performance by prefixing all global functions calls with \ to skip - the look up and resolve process and go straight to the global function. - (#68 by @WyriHaximus) - -* Minor documentation improvements and docblock updates. - (#59 by @iamluc and #69 by @CharlotteDunois) - -* Improve test suite to test against PHP7.2 and PHP 7.3, improve HHVM compatibility, - add forward compatibility with PHPUnit 7 and run tests on Windows via Travis CI. - (#66 and #71 by @clue) - -## 0.5.2 (2018-01-18) - -* Feature: Detect "exit" immediately if last process pipe is closed - (#58 by @clue) - - This introduces a simple check to see if the program is already known to be - closed when the last process pipe is closed instead of relying on a periodic - timer. This simple change improves "exit" detection significantly for most - programs and does not cause a noticeable penalty for more advanced use cases. - -* Fix forward compatibility with upcoming EventLoop releases - (#56 by @clue) - -## 0.5.1 (2017-12-22) - -* Fix: Update Stream dependency to work around SEGFAULT in legacy PHP < 5.4.28 - and PHP < 5.5.12 - (#50 and #52 by @clue) - -* Improve test suite by simplifying test bootstrapping logic via Composer and - adding forward compatibility with PHPUnit 6 - (#53, #54 and #55 by @clue) - -## 0.5.0 (2017-08-15) - -* Forward compatibility: react/event-loop 1.0 and 0.5, react/stream 0.7.2 and 1.0, and Événement 3.0 - (#38 and #44 by @WyriHaximus, and #46 by @clue) -* Windows compatibility: Documentate that windows isn't supported in 0.5 unless used from within WSL - (#41 and #47 by @WyriHaximus) -* Documentation: Termination examples - (#42 by @clue) -* BC: Throw LogicException in Process instanciating when on Windows or when proc_open is missing (was `RuntimeException`) - (#49 by @mdrost) - -## 0.4.3 (2017-03-14) - -* Ease getting started by improving documentation and adding examples - (#33 and #34 by @clue) - -* First class support for PHP 5.3 through PHP 7.1 and HHVM - (#29 by @clue and #32 by @WyriHaximus) - -## 0.4.2 (2017-03-10) - -* Feature: Forward compatibility with Stream v0.5 - (#26 by @clue) - -* Improve test suite by removing AppVeyor and adding PHPUnit to `require-dev` - (#27 and #28 by @clue) - -## 0.4.1 (2016-08-01) - -* Standalone component -* Test against PHP 7 and HHVM, report test coverage, AppVeyor tests -* Wait for stdout and stderr to close before watching for process exit - (#18 by @mbonneau) - -## 0.4.0 (2014-02-02) - -* Feature: Added ChildProcess to run async child processes within the event loop (@jmikola) diff --git a/v3_ci4/vendor/react/child-process/LICENSE b/v3_ci4/vendor/react/child-process/LICENSE deleted file mode 100644 index d6f8901..0000000 --- a/v3_ci4/vendor/react/child-process/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/react/child-process/README.md b/v3_ci4/vendor/react/child-process/README.md deleted file mode 100644 index 34db320..0000000 --- a/v3_ci4/vendor/react/child-process/README.md +++ /dev/null @@ -1,619 +0,0 @@ -# ChildProcess - -[![CI status](https://github.com/reactphp/child-process/actions/workflows/ci.yml/badge.svg)](https://github.com/reactphp/child-process/actions) -[![installs on Packagist](https://img.shields.io/packagist/dt/react/child-process?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/react/child-process) - -Event-driven library for executing child processes with -[ReactPHP](https://reactphp.org/). - -This library integrates [Program Execution](http://php.net/manual/en/book.exec.php) -with the [EventLoop](https://github.com/reactphp/event-loop). -Child processes launched may be signaled and will emit an -`exit` event upon termination. -Additionally, process I/O streams (i.e. STDIN, STDOUT, STDERR) are exposed -as [Streams](https://github.com/reactphp/stream). - -**Table of contents** - -* [Quickstart example](#quickstart-example) -* [Process](#process) - * [Stream Properties](#stream-properties) - * [Command](#command) - * [Termination](#termination) - * [Custom pipes](#custom-pipes) - * [Sigchild Compatibility](#sigchild-compatibility) - * [Windows Compatibility](#windows-compatibility) -* [Install](#install) -* [Tests](#tests) -* [License](#license) - -## Quickstart example - -```php -$process = new React\ChildProcess\Process('echo foo'); -$process->start(); - -$process->stdout->on('data', function ($chunk) { - echo $chunk; -}); - -$process->on('exit', function($exitCode, $termSignal) { - echo 'Process exited with code ' . $exitCode . PHP_EOL; -}); -``` - -See also the [examples](examples). - -## Process - -### Stream Properties - -Once a process is started, its I/O streams will be constructed as instances of -`React\Stream\ReadableStreamInterface` and `React\Stream\WritableStreamInterface`. -Before `start()` is called, these properties are not set. Once a process terminates, -the streams will become closed but not unset. - -Following common Unix conventions, this library will start each child process -with the three pipes matching the standard I/O streams as given below by default. -You can use the named references for common use cases or access these as an -array with all three pipes. - -* `$stdin` or `$pipes[0]` is a `WritableStreamInterface` -* `$stdout` or `$pipes[1]` is a `ReadableStreamInterface` -* `$stderr` or `$pipes[2]` is a `ReadableStreamInterface` - -Note that this default configuration may be overridden by explicitly passing -[custom pipes](#custom-pipes), in which case they may not be set or be assigned -different values. In particular, note that [Windows support](#windows-compatibility) -is limited in that it doesn't support non-blocking STDIO pipes. The `$pipes` -array will always contain references to all pipes as configured and the standard -I/O references will always be set to reference the pipes matching the above -conventions. See [custom pipes](#custom-pipes) for more details. - -Because each of these implement the underlying -[`ReadableStreamInterface`](https://github.com/reactphp/stream#readablestreaminterface) or -[`WritableStreamInterface`](https://github.com/reactphp/stream#writablestreaminterface), -you can use any of their events and methods as usual: - -```php -$process = new Process($command); -$process->start(); - -$process->stdout->on('data', function ($chunk) { - echo $chunk; -}); - -$process->stdout->on('end', function () { - echo 'ended'; -}); - -$process->stdout->on('error', function (Exception $e) { - echo 'error: ' . $e->getMessage(); -}); - -$process->stdout->on('close', function () { - echo 'closed'; -}); - -$process->stdin->write($data); -$process->stdin->end($data = null); -// … -``` - -For more details, see the -[`ReadableStreamInterface`](https://github.com/reactphp/stream#readablestreaminterface) and -[`WritableStreamInterface`](https://github.com/reactphp/stream#writablestreaminterface). - -### Command - -The `Process` class allows you to pass any kind of command line string: - -```php -$process = new Process('echo test'); -$process->start(); -``` - -The command line string usually consists of a whitespace-separated list with -your main executable bin and any number of arguments. Special care should be -taken to escape or quote any arguments, escpecially if you pass any user input -along. Likewise, keep in mind that especially on Windows, it is rather common to -have path names containing spaces and other special characters. If you want to -run a binary like this, you will have to ensure this is quoted as a single -argument using `escapeshellarg()` like this: - -```php -$bin = 'C:\\Program files (x86)\\PHP\\php.exe'; -$file = 'C:\\Users\\me\\Desktop\\Application\\main.php'; - -$process = new Process(escapeshellarg($bin) . ' ' . escapeshellarg($file)); -$process->start(); -``` - -By default, PHP will launch processes by wrapping the given command line string -in a `sh` command on Unix, so that the first example will actually execute -`sh -c echo test` under the hood on Unix. On Windows, it will not launch -processes by wrapping them in a shell. - -This is a very useful feature because it does not only allow you to pass single -commands, but actually allows you to pass any kind of shell command line and -launch multiple sub-commands using command chains (with `&&`, `||`, `;` and -others) and allows you to redirect STDIO streams (with `2>&1` and family). -This can be used to pass complete command lines and receive the resulting STDIO -streams from the wrapping shell command like this: - -```php -$process = new Process('echo run && demo || echo failed'); -$process->start(); -``` - -> Note that [Windows support](#windows-compatibility) is limited in that it - doesn't support STDIO streams at all and also that processes will not be run - in a wrapping shell by default. If you want to run a shell built-in function - such as `echo hello` or `sleep 10`, you may have to prefix your command line - with an explicit shell like `cmd /c echo hello`. - -In other words, the underlying shell is responsible for managing this command -line and launching the individual sub-commands and connecting their STDIO -streams as appropriate. -This implies that the `Process` class will only receive the resulting STDIO -streams from the wrapping shell, which will thus contain the complete -input/output with no way to discern the input/output of single sub-commands. - -If you want to discern the output of single sub-commands, you may want to -implement some higher-level protocol logic, such as printing an explicit -boundary between each sub-command like this: - -```php -$process = new Process('cat first && echo --- && cat second'); -$process->start(); -``` - -As an alternative, considering launching one process at a time and listening on -its `exit` event to conditionally start the next process in the chain. -This will give you an opportunity to configure the subsequent process I/O streams: - -```php -$first = new Process('cat first'); -$first->start(); - -$first->on('exit', function () { - $second = new Process('cat second'); - $second->start(); -}); -``` - -Keep in mind that PHP uses the shell wrapper for ALL command lines on Unix. -While this may seem reasonable for more complex command lines, this actually -also applies to running the most simple single command: - -```php -$process = new Process('yes'); -$process->start(); -``` - -This will actually spawn a command hierarchy similar to this on Unix: - -``` -5480 … \_ php example.php -5481 … \_ sh -c yes -5482 … \_ yes -``` - -This means that trying to get the underlying process PID or sending signals -will actually target the wrapping shell, which may not be the desired result -in many cases. - -If you do not want this wrapping shell process to show up, you can simply -prepend the command string with `exec` on Unix platforms, which will cause the -wrapping shell process to be replaced by our process: - -```php -$process = new Process('exec yes'); -$process->start(); -``` - -This will show a resulting command hierarchy similar to this: - -``` -5480 … \_ php example.php -5481 … \_ yes -``` - -This means that trying to get the underlying process PID and sending signals -will now target the actual command as expected. - -Note that in this case, the command line will not be run in a wrapping shell. -This implies that when using `exec`, there's no way to pass command lines such -as those containing command chains or redirected STDIO streams. - -As a rule of thumb, most commands will likely run just fine with the wrapping -shell. -If you pass a complete command line (or are unsure), you SHOULD most likely keep -the wrapping shell. -If you're running on Unix and you want to pass an invidual command only, you MAY -want to consider prepending the command string with `exec` to avoid the wrapping shell. - -### Termination - -The `exit` event will be emitted whenever the process is no longer running. -Event listeners will receive the exit code and termination signal as two -arguments: - -```php -$process = new Process('sleep 10'); -$process->start(); - -$process->on('exit', function ($code, $term) { - if ($term === null) { - echo 'exit with code ' . $code . PHP_EOL; - } else { - echo 'terminated with signal ' . $term . PHP_EOL; - } -}); -``` - -Note that `$code` is `null` if the process has terminated, but the exit -code could not be determined (for example -[sigchild compatibility](#sigchild-compatibility) was disabled). -Similarly, `$term` is `null` unless the process has terminated in response to -an uncaught signal sent to it. -This is not a limitation of this project, but actual how exit codes and signals -are exposed on POSIX systems, for more details see also -[here](https://unix.stackexchange.com/questions/99112/default-exit-code-when-process-is-terminated). - -It's also worth noting that process termination depends on all file descriptors -being closed beforehand. -This means that all [process pipes](#stream-properties) will emit a `close` -event before the `exit` event and that no more `data` events will arrive after -the `exit` event. -Accordingly, if either of these pipes is in a paused state (`pause()` method -or internally due to a `pipe()` call), this detection may not trigger. - -The `terminate(?int $signal = null): bool` method can be used to send the -process a signal (SIGTERM by default). -Depending on which signal you send to the process and whether it has a signal -handler registered, this can be used to either merely signal a process or even -forcefully terminate it. - -```php -$process->terminate(SIGUSR1); -``` - -Keep the above section in mind if you want to forcefully terminate a process. -If your process spawn sub-processes or implicitly uses the -[wrapping shell mentioned above](#command), its file descriptors may be -inherited to child processes and terminating the main process may not -necessarily terminate the whole process tree. -It is highly suggested that you explicitly `close()` all process pipes -accordingly when terminating a process: - -```php -$process = new Process('sleep 10'); -$process->start(); - -Loop::addTimer(2.0, function () use ($process) { - foreach ($process->pipes as $pipe) { - $pipe->close(); - } - $process->terminate(); -}); -``` - -For many simple programs these seamingly complicated steps can also be avoided -by prefixing the command line with `exec` to avoid the wrapping shell and its -inherited process pipes as [mentioned above](#command). - -```php -$process = new Process('exec sleep 10'); -$process->start(); - -Loop::addTimer(2.0, function () use ($process) { - $process->terminate(); -}); -``` - -Many command line programs also wait for data on `STDIN` and terminate cleanly -when this pipe is closed. -For example, the following can be used to "soft-close" a `cat` process: - -```php -$process = new Process('cat'); -$process->start(); - -Loop::addTimer(2.0, function () use ($process) { - $process->stdin->end(); -}); -``` - -While process pipes and termination may seem confusing to newcomers, the above -properties actually allow some fine grained control over process termination, -such as first trying a soft-close and then applying a force-close after a -timeout. - -### Custom pipes - -Following common Unix conventions, this library will start each child process -with the three pipes matching the standard I/O streams by default. For more -advanced use cases it may be useful to pass in custom pipes, such as explicitly -passing additional file descriptors (FDs) or overriding default process pipes. - -Note that passing custom pipes is considered advanced usage and requires a -more in-depth understanding of Unix file descriptors and how they are inherited -to child processes and shared in multi-processing applications. - -If you do not want to use the default standard I/O pipes, you can explicitly -pass an array containing the file descriptor specification to the constructor -like this: - -```php -$fds = array( - // standard I/O pipes for stdin/stdout/stderr - 0 => array('pipe', 'r'), - 1 => array('pipe', 'w'), - 2 => array('pipe', 'w'), - - // example FDs for files or open resources - 4 => array('file', '/dev/null', 'r'), - 6 => fopen('log.txt','a'), - 8 => STDERR, - - // example FDs for sockets - 10 => fsockopen('localhost', 8080), - 12 => stream_socket_server('tcp://0.0.0.0:4711') -); - -$process = new Process($cmd, null, null, $fds); -$process->start(); -``` - -Unless your use case has special requirements that demand otherwise, you're -highly recommended to (at least) pass in the standard I/O pipes as given above. -The file descriptor specification accepts arguments in the exact same format -as the underlying [`proc_open()`](http://php.net/proc_open) function. - -Once the process is started, the `$pipes` array will always contain references to -all pipes as configured and the standard I/O references will always be set to -reference the pipes matching common Unix conventions. This library supports any -number of pipes and additional file descriptors, but many common applications -being run as a child process will expect that the parent process properly -assigns these file descriptors. - -### Sigchild Compatibility - -Internally, this project uses a work-around to improve compatibility when PHP -has been compiled with the `--enable-sigchild` option. This should not affect most -installations as this configure option is not used by default and many -distributions (such as Debian and Ubuntu) are known to not use this by default. -Some installations that use [Oracle OCI8](http://php.net/manual/en/book.oci8.php) -may use this configure option to circumvent `defunct` processes. - -When PHP has been compiled with the `--enable-sigchild` option, a child process' -exit code cannot be reliably determined via `proc_close()` or `proc_get_status()`. -To work around this, we execute the child process with an additional pipe and -use that to retrieve its exit code. - -This work-around incurs some overhead, so we only trigger this when necessary -and when we detect that PHP has been compiled with the `--enable-sigchild` option. -Because PHP does not provide a way to reliably detect this option, we try to -inspect output of PHP's configure options from the `phpinfo()` function. - -The static `setSigchildEnabled(bool $sigchild): void` method can be used to -explicitly enable or disable this behavior like this: - -```php -// advanced: not recommended by default -Process::setSigchildEnabled(true); -``` - -Note that all processes instantiated after this method call will be affected. -If this work-around is disabled on an affected PHP installation, the `exit` -event may receive `null` instead of the actual exit code as described above. -Similarly, some distributions are known to omit the configure options from -`phpinfo()`, so automatic detection may fail to enable this work-around in some -cases. You may then enable this explicitly as given above. - -**Note:** The original functionality was taken from Symfony's -[Process](https://github.com/symfony/process) compoment. - -### Windows Compatibility - -Due to platform constraints, this library provides only limited support for -spawning child processes on Windows. In particular, PHP does not allow accessing -standard I/O pipes on Windows without blocking. As such, this project will not -allow constructing a child process with the default process pipes and will -instead throw a `LogicException` on Windows by default: - -```php -// throws LogicException on Windows -$process = new Process('ping example.com'); -$process->start(); -``` - -There are a number of alternatives and workarounds as detailed below if you want -to run a child process on Windows, each with its own set of pros and cons: - -* As of PHP 8, you can start the child process with `socket` pair descriptors - in place of normal standard I/O pipes like this: - - ```php - $process = new Process( - 'ping example.com', - null, - null, - [ - ['socket'], - ['socket'], - ['socket'] - ] - ); - $process->start(); - - $process->stdout->on('data', function ($chunk) { - echo $chunk; - }); - ``` - - These `socket` pairs support non-blocking process I/O on any platform, - including Windows. However, not all programs accept stdio sockets. - -* This package does work on - [`Windows Subsystem for Linux`](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux) - (or WSL) without issues. When you are in control over how your application is - deployed, we recommend [installing WSL](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide) - when you want to run this package on Windows. - -* If you only care about the exit code of a child process to check if its - execution was successful, you can use [custom pipes](#custom-pipes) to omit - any standard I/O pipes like this: - - ```php - $process = new Process('ping example.com', null, null, array()); - $process->start(); - - $process->on('exit', function ($exitcode) { - echo 'exit with ' . $exitcode . PHP_EOL; - }); - ``` - - Similarly, this is also useful if your child process communicates over - sockets with remote servers or even your parent process using the - [Socket component](https://github.com/reactphp/socket). This is usually - considered the best alternative if you have control over how your child - process communicates with the parent process. - -* If you only care about command output after the child process has been - executed, you can use [custom pipes](#custom-pipes) to configure file - handles to be passed to the child process instead of pipes like this: - - ```php - $process = new Process('ping example.com', null, null, array( - array('file', 'nul', 'r'), - $stdout = tmpfile(), - array('file', 'nul', 'w') - )); - $process->start(); - - $process->on('exit', function ($exitcode) use ($stdout) { - echo 'exit with ' . $exitcode . PHP_EOL; - - // rewind to start and then read full file (demo only, this is blocking). - // reading from shared file is only safe if you have some synchronization in place - // or after the child process has terminated. - rewind($stdout); - echo stream_get_contents($stdout); - fclose($stdout); - }); - ``` - - Note that this example uses `tmpfile()`/`fopen()` for illustration purposes only. - This should not be used in a truly async program because the filesystem is - inherently blocking and each call could potentially take several seconds. - See also the [Filesystem component](https://github.com/reactphp/filesystem) as an - alternative. - -* If you want to access command output as it happens in a streaming fashion, - you can use redirection to spawn an additional process to forward your - standard I/O streams to a socket and use [custom pipes](#custom-pipes) to - omit any actual standard I/O pipes like this: - - ```php - $server = new React\Socket\Server('127.0.0.1:0'); - $server->on('connection', function (React\Socket\ConnectionInterface $connection) { - $connection->on('data', function ($chunk) { - echo $chunk; - }); - }); - - $command = 'ping example.com | foobar ' . escapeshellarg($server->getAddress()); - $process = new Process($command, null, null, array()); - $process->start(); - - $process->on('exit', function ($exitcode) use ($server) { - $server->close(); - echo 'exit with ' . $exitcode . PHP_EOL; - }); - ``` - - Note how this will spawn another fictional `foobar` helper program to consume - the standard output from the actual child process. This is in fact similar - to the above recommendation of using socket connections in the child process, - but in this case does not require modification of the actual child process. - - In this example, the fictional `foobar` helper program can be implemented by - simply consuming all data from standard input and forwarding it to a socket - connection like this: - - ```php - $socket = stream_socket_client($argv[1]); - do { - fwrite($socket, $data = fread(STDIN, 8192)); - } while (isset($data[0])); - ``` - - Accordingly, this example can also be run with plain PHP without having to - rely on any external helper program like this: - - ```php - $code = '$s=stream_socket_client($argv[1]);do{fwrite($s,$d=fread(STDIN, 8192));}while(isset($d[0]));'; - $command = 'ping example.com | php -r ' . escapeshellarg($code) . ' ' . escapeshellarg($server->getAddress()); - $process = new Process($command, null, null, array()); - $process->start(); - ``` - - See also [example #23](examples/23-forward-socket.php). - - Note that this is for illustration purposes only and you may want to implement - some proper error checks and/or socket verification in actual production use - if you do not want to risk other processes connecting to the server socket. - In this case, we suggest looking at the excellent - [createprocess-windows](https://github.com/cubiclesoft/createprocess-windows). - -Additionally, note that the [command](#command) given to the `Process` will be -passed to the underlying Windows-API -([`CreateProcess`](https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa)) -as-is and the process will not be launched in a wrapping shell by default. In -particular, this means that shell built-in functions such as `echo hello` or -`sleep 10` may have to be prefixed with an explicit shell command like this: - -```php -$process = new Process('cmd /c echo hello', null, null, $pipes); -$process->start(); -``` - -## Install - -The recommended way to install this library is [through Composer](https://getcomposer.org/). -[New to Composer?](https://getcomposer.org/doc/00-intro.md) - -This will install the latest supported version: - -```bash -composer require react/child-process:^0.6.7 -``` - -See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades. - -This project aims to run on any platform and thus does not require any PHP -extensions and supports running on legacy PHP 5.3 through current PHP 8+ and HHVM. -It's *highly recommended to use the latest supported PHP version* for this project. - -See above note for limited [Windows Compatibility](#windows-compatibility). - -## Tests - -To run the test suite, you first need to clone this repo and then install all -dependencies [through Composer](https://getcomposer.org/): - -```bash -composer install -``` - -To run the test suite, go to the project root and run: - -```bash -vendor/bin/phpunit -``` - -## License - -MIT, see [LICENSE file](LICENSE). diff --git a/v3_ci4/vendor/react/child-process/composer.json b/v3_ci4/vendor/react/child-process/composer.json deleted file mode 100644 index fba70b8..0000000 --- a/v3_ci4/vendor/react/child-process/composer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "react/child-process", - "description": "Event-driven library for executing child processes with ReactPHP.", - "keywords": ["process", "event-driven", "ReactPHP"], - "license": "MIT", - "authors": [ - { - "name": "Christian Lück", - "homepage": "https://clue.engineering/", - "email": "christian@clue.engineering" - }, - { - "name": "Cees-Jan Kiewiet", - "homepage": "https://wyrihaximus.net/", - "email": "reactphp@ceesjankiewiet.nl" - }, - { - "name": "Jan Sorgalla", - "homepage": "https://sorgalla.com/", - "email": "jsorgalla@gmail.com" - }, - { - "name": "Chris Boden", - "homepage": "https://cboden.dev/", - "email": "cboden@gmail.com" - } - ], - "require": { - "php": ">=5.3.0", - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "react/event-loop": "^1.2", - "react/stream": "^1.4" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/socket": "^1.16", - "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" - }, - "autoload": { - "psr-4": { - "React\\ChildProcess\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "React\\Tests\\ChildProcess\\": "tests/" - } - } -} diff --git a/v3_ci4/vendor/react/child-process/src/Process.php b/v3_ci4/vendor/react/child-process/src/Process.php deleted file mode 100644 index aa172af..0000000 --- a/v3_ci4/vendor/react/child-process/src/Process.php +++ /dev/null @@ -1,585 +0,0 @@ -start(); - * - * $process->on('exit', function ($code, $term) { - * if ($term === null) { - * echo 'exit with code ' . $code . PHP_EOL; - * } else { - * echo 'terminated with signal ' . $term . PHP_EOL; - * } - * }); - * ``` - * - * Note that `$code` is `null` if the process has terminated, but the exit - * code could not be determined (for example - * [sigchild compatibility](#sigchild-compatibility) was disabled). - * Similarly, `$term` is `null` unless the process has terminated in response to - * an uncaught signal sent to it. - * This is not a limitation of this project, but actual how exit codes and signals - * are exposed on POSIX systems, for more details see also - * [here](https://unix.stackexchange.com/questions/99112/default-exit-code-when-process-is-terminated). - * - * It's also worth noting that process termination depends on all file descriptors - * being closed beforehand. - * This means that all [process pipes](#stream-properties) will emit a `close` - * event before the `exit` event and that no more `data` events will arrive after - * the `exit` event. - * Accordingly, if either of these pipes is in a paused state (`pause()` method - * or internally due to a `pipe()` call), this detection may not trigger. - */ -class Process extends EventEmitter -{ - /** - * @var WritableStreamInterface|null|DuplexStreamInterface|ReadableStreamInterface - */ - public $stdin; - - /** - * @var ReadableStreamInterface|null|DuplexStreamInterface|WritableStreamInterface - */ - public $stdout; - - /** - * @var ReadableStreamInterface|null|DuplexStreamInterface|WritableStreamInterface - */ - public $stderr; - - /** - * Array with all process pipes (once started) - * - * Unless explicitly configured otherwise during construction, the following - * standard I/O pipes will be assigned by default: - * - 0: STDIN (`WritableStreamInterface`) - * - 1: STDOUT (`ReadableStreamInterface`) - * - 2: STDERR (`ReadableStreamInterface`) - * - * @var array - */ - public $pipes = array(); - - private $cmd; - private $cwd; - private $env; - private $fds; - - private $enhanceSigchildCompatibility; - private $sigchildPipe; - - private $process; - private $status; - private $exitCode; - private $fallbackExitCode; - private $stopSignal; - private $termSignal; - - private static $sigchild; - - /** - * Constructor. - * - * @param string $cmd Command line to run - * @param null|string $cwd Current working directory or null to inherit - * @param null|array $env Environment variables or null to inherit - * @param null|array $fds File descriptors to allocate for this process (or null = default STDIO streams) - * @throws \LogicException On windows or when proc_open() is not installed - */ - public function __construct($cmd, $cwd = null, $env = null, $fds = null) - { - if ($env !== null && !\is_array($env)) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #3 ($env) expected null|array'); - } - if ($fds !== null && !\is_array($fds)) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #4 ($fds) expected null|array'); - } - if (!\function_exists('proc_open')) { - throw new \LogicException('The Process class relies on proc_open(), which is not available on your PHP installation.'); - } - - $this->cmd = $cmd; - $this->cwd = $cwd; - - if (null !== $env) { - $this->env = array(); - foreach ($env as $key => $value) { - $this->env[(string) $key] = (string) $value; - } - } - - if ($fds === null) { - $fds = array( - array('pipe', 'r'), // stdin - array('pipe', 'w'), // stdout - array('pipe', 'w'), // stderr - ); - } - - if (\DIRECTORY_SEPARATOR === '\\') { - foreach ($fds as $fd) { - if (isset($fd[0]) && $fd[0] === 'pipe') { - throw new \LogicException('Process pipes are not supported on Windows due to their blocking nature on Windows'); - } - } - } - - $this->fds = $fds; - $this->enhanceSigchildCompatibility = self::isSigchildEnabled(); - } - - /** - * Start the process. - * - * After the process is started, the standard I/O streams will be constructed - * and available via public properties. - * - * This method takes an optional `LoopInterface|null $loop` parameter that can be used to - * pass the event loop instance to use for this process. You can use a `null` value - * here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). - * This value SHOULD NOT be given unless you're sure you want to explicitly use a - * given event loop instance. - * - * @param ?LoopInterface $loop Loop interface for stream construction - * @param float $interval Interval to periodically monitor process state (seconds) - * @throws \RuntimeException If the process is already running or fails to start - */ - public function start($loop = null, $interval = 0.1) - { - if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #1 ($loop) expected null|React\EventLoop\LoopInterface'); - } - if ($this->isRunning()) { - throw new \RuntimeException('Process is already running'); - } - - $loop = $loop ?: Loop::get(); - $cmd = $this->cmd; - $fdSpec = $this->fds; - $sigchild = null; - - // Read exit code through fourth pipe to work around --enable-sigchild - if ($this->enhanceSigchildCompatibility) { - $fdSpec[] = array('pipe', 'w'); - \end($fdSpec); - $sigchild = \key($fdSpec); - - // make sure this is fourth or higher (do not mess with STDIO) - if ($sigchild < 3) { - $fdSpec[3] = $fdSpec[$sigchild]; - unset($fdSpec[$sigchild]); - $sigchild = 3; - } - - $cmd = \sprintf('(%s) ' . $sigchild . '>/dev/null; code=$?; echo $code >&' . $sigchild . '; exit $code', $cmd); - } - - // on Windows, we do not launch the given command line in a shell (cmd.exe) by default and omit any error dialogs - // the cmd.exe shell can explicitly be given as part of the command as detailed in both documentation and tests - $options = array(); - if (\DIRECTORY_SEPARATOR === '\\') { - $options['bypass_shell'] = true; - $options['suppress_errors'] = true; - } - - $errstr = ''; - \set_error_handler(function ($_, $error) use (&$errstr) { - // Match errstr from PHP's warning message. - // proc_open(/dev/does-not-exist): Failed to open stream: No such file or directory - $errstr = $error; - }); - - $pipes = array(); - $this->process = @\proc_open($cmd, $fdSpec, $pipes, $this->cwd, $this->env, $options); - - \restore_error_handler(); - - if (!\is_resource($this->process)) { - throw new \RuntimeException('Unable to launch a new process: ' . $errstr); - } - - // count open process pipes and await close event for each to drain buffers before detecting exit - $that = $this; - $closeCount = 0; - $streamCloseHandler = function () use (&$closeCount, $loop, $interval, $that) { - $closeCount--; - - if ($closeCount > 0) { - return; - } - - // process already closed => report immediately - if (!$that->isRunning()) { - $that->close(); - $that->emit('exit', array($that->getExitCode(), $that->getTermSignal())); - return; - } - - // close not detected immediately => check regularly - $loop->addPeriodicTimer($interval, function ($timer) use ($that, $loop) { - if (!$that->isRunning()) { - $loop->cancelTimer($timer); - $that->close(); - $that->emit('exit', array($that->getExitCode(), $that->getTermSignal())); - } - }); - }; - - if ($sigchild !== null) { - $this->sigchildPipe = $pipes[$sigchild]; - unset($pipes[$sigchild]); - } - - foreach ($pipes as $n => $fd) { - // use open mode from stream meta data or fall back to pipe open mode for legacy HHVM - $meta = \stream_get_meta_data($fd); - $mode = $meta['mode'] === '' ? ($this->fds[$n][1] === 'r' ? 'w' : 'r') : $meta['mode']; - - if ($mode === 'r+') { - $stream = new DuplexResourceStream($fd, $loop); - $stream->on('close', $streamCloseHandler); - $closeCount++; - } elseif ($mode === 'w') { - $stream = new WritableResourceStream($fd, $loop); - } else { - $stream = new ReadableResourceStream($fd, $loop); - $stream->on('close', $streamCloseHandler); - $closeCount++; - } - $this->pipes[$n] = $stream; - } - - $this->stdin = isset($this->pipes[0]) ? $this->pipes[0] : null; - $this->stdout = isset($this->pipes[1]) ? $this->pipes[1] : null; - $this->stderr = isset($this->pipes[2]) ? $this->pipes[2] : null; - - // immediately start checking for process exit when started without any I/O pipes - if (!$closeCount) { - $streamCloseHandler(); - } - } - - /** - * Close the process. - * - * This method should only be invoked via the periodic timer that monitors - * the process state. - */ - public function close() - { - if ($this->process === null) { - return; - } - - foreach ($this->pipes as $pipe) { - $pipe->close(); - } - - if ($this->enhanceSigchildCompatibility) { - $this->pollExitCodePipe(); - $this->closeExitCodePipe(); - } - - $exitCode = \proc_close($this->process); - $this->process = null; - - if ($this->exitCode === null && $exitCode !== -1) { - $this->exitCode = $exitCode; - } - - if ($this->exitCode === null && $this->status['exitcode'] !== -1) { - $this->exitCode = $this->status['exitcode']; - } - - if ($this->exitCode === null && $this->fallbackExitCode !== null) { - $this->exitCode = $this->fallbackExitCode; - $this->fallbackExitCode = null; - } - } - - /** - * Terminate the process with an optional signal. - * - * @param int $signal Optional signal (default: SIGTERM) - * @return bool Whether the signal was sent successfully - */ - public function terminate($signal = null) - { - if ($this->process === null) { - return false; - } - - if ($signal !== null) { - return \proc_terminate($this->process, $signal); - } - - return \proc_terminate($this->process); - } - - /** - * Get the command string used to launch the process. - * - * @return string - */ - public function getCommand() - { - return $this->cmd; - } - - /** - * Get the exit code returned by the process. - * - * This value is only meaningful if isRunning() has returned false. Null - * will be returned if the process is still running. - * - * Null may also be returned if the process has terminated, but the exit - * code could not be determined (e.g. sigchild compatibility was disabled). - * - * @return int|null - */ - public function getExitCode() - { - return $this->exitCode; - } - - /** - * Get the process ID. - * - * @return int|null - */ - public function getPid() - { - $status = $this->getCachedStatus(); - - return $status !== null ? $status['pid'] : null; - } - - /** - * Get the signal that caused the process to stop its execution. - * - * This value is only meaningful if isStopped() has returned true. Null will - * be returned if the process was never stopped. - * - * @return int|null - */ - public function getStopSignal() - { - return $this->stopSignal; - } - - /** - * Get the signal that caused the process to terminate its execution. - * - * This value is only meaningful if isTerminated() has returned true. Null - * will be returned if the process was never terminated. - * - * @return int|null - */ - public function getTermSignal() - { - return $this->termSignal; - } - - /** - * Return whether the process is still running. - * - * @return bool - */ - public function isRunning() - { - if ($this->process === null) { - return false; - } - - $status = $this->getFreshStatus(); - - return $status !== null ? $status['running'] : false; - } - - /** - * Return whether the process has been stopped by a signal. - * - * @return bool - */ - public function isStopped() - { - $status = $this->getFreshStatus(); - - return $status !== null ? $status['stopped'] : false; - } - - /** - * Return whether the process has been terminated by an uncaught signal. - * - * @return bool - */ - public function isTerminated() - { - $status = $this->getFreshStatus(); - - return $status !== null ? $status['signaled'] : false; - } - - /** - * Return whether PHP has been compiled with the '--enable-sigchild' option. - * - * @see \Symfony\Component\Process\Process::isSigchildEnabled() - * @return bool - */ - public final static function isSigchildEnabled() - { - if (null !== self::$sigchild) { - return self::$sigchild; - } - - if (!\function_exists('phpinfo')) { - return self::$sigchild = false; // @codeCoverageIgnore - } - - \ob_start(); - \phpinfo(INFO_GENERAL); - - return self::$sigchild = false !== \strpos(\ob_get_clean(), '--enable-sigchild'); - } - - /** - * Enable or disable sigchild compatibility mode. - * - * Sigchild compatibility mode is required to get the exit code and - * determine the success of a process when PHP has been compiled with - * the --enable-sigchild option. - * - * @param bool $sigchild - * @return void - */ - public final static function setSigchildEnabled($sigchild) - { - self::$sigchild = (bool) $sigchild; - } - - /** - * Check the fourth pipe for an exit code. - * - * This should only be used if --enable-sigchild compatibility was enabled. - */ - private function pollExitCodePipe() - { - if ($this->sigchildPipe === null) { - return; - } - - $r = array($this->sigchildPipe); - $w = $e = null; - - $n = @\stream_select($r, $w, $e, 0); - - if (1 !== $n) { - return; - } - - $data = \fread($r[0], 8192); - - if (\strlen($data) > 0) { - $this->fallbackExitCode = (int) $data; - } - } - - /** - * Close the fourth pipe used to relay an exit code. - * - * This should only be used if --enable-sigchild compatibility was enabled. - */ - private function closeExitCodePipe() - { - if ($this->sigchildPipe === null) { - return; - } - - \fclose($this->sigchildPipe); - $this->sigchildPipe = null; - } - - /** - * Return the cached process status. - * - * @return array - */ - private function getCachedStatus() - { - if ($this->status === null) { - $this->updateStatus(); - } - - return $this->status; - } - - /** - * Return the updated process status. - * - * @return array - */ - private function getFreshStatus() - { - $this->updateStatus(); - - return $this->status; - } - - /** - * Update the process status, stop/term signals, and exit code. - * - * Stop/term signals are only updated if the process is currently stopped or - * signaled, respectively. Otherwise, signal values will remain as-is so the - * corresponding getter methods may be used at a later point in time. - */ - private function updateStatus() - { - if ($this->process === null) { - return; - } - - $this->status = \proc_get_status($this->process); - - if ($this->status === false) { - throw new \UnexpectedValueException('proc_get_status() failed'); - } - - if ($this->status['stopped']) { - $this->stopSignal = $this->status['stopsig']; - } - - if ($this->status['signaled']) { - $this->termSignal = $this->status['termsig']; - } - - if (!$this->status['running'] && -1 !== $this->status['exitcode']) { - $this->exitCode = $this->status['exitcode']; - } - } -} diff --git a/v3_ci4/vendor/react/dns/CHANGELOG.md b/v3_ci4/vendor/react/dns/CHANGELOG.md deleted file mode 100644 index 3064849..0000000 --- a/v3_ci4/vendor/react/dns/CHANGELOG.md +++ /dev/null @@ -1,460 +0,0 @@ -# Changelog - -## 1.14.0 (2025-11-18) - -* Feature: Improve PHP 8.5+ support by avoiding deprecated `setAccessible()` calls. - (#238 by @W0rma and #243 by @WyriHaximus) - -* Improve test suite, update test environment and increase query count in excessive TCP query tests. - (#239 and #240 by @WyriHaximus) - -## 1.13.0 (2024-06-13) - -* Feature: Improve PHP 8.4+ support by avoiding implicitly nullable type declarations. - (#224 by @WyriHaximus) - -## 1.12.0 (2023-11-29) - -* Feature: Full PHP 8.3 compatibility. - (#217 by @sergiy-petrov) - -* Update test environment and avoid unhandled promise rejections. - (#215, #216 and #218 by @clue) - -## 1.11.0 (2023-06-02) - -* Feature: Include timeout logic to avoid dependency on reactphp/promise-timer. - (#213 by @clue) - -* Improve test suite and project setup and report failed assertions. - (#210 by @clue, #212 by @WyriHaximus and #209 and #211 by @SimonFrings) - -## 1.10.0 (2022-09-08) - -* Feature: Full support for PHP 8.2 release. - (#201 by @clue and #207 by @WyriHaximus) - -* Feature: Optimize forward compatibility with Promise v3, avoid hitting autoloader. - (#202 by @clue) - -* Feature / Fix: Improve error reporting when custom error handler is used. - (#197 by @clue) - -* Fix: Fix invalid references in exception stack trace. - (#191 by @clue) - -* Minor documentation improvements. - (#195 by @SimonFrings and #203 by @nhedger) - -* Improve test suite, update to use default loop and new reactphp/async package. - (#204, #205 and #206 by @clue and #196 by @SimonFrings) - -## 1.9.0 (2021-12-20) - -* Feature: Full support for PHP 8.1 release and prepare PHP 8.2 compatibility - by refactoring `Parser` to avoid assigning dynamic properties. - (#188 and #186 by @clue and #184 by @SimonFrings) - -* Feature: Avoid dependency on `ext-filter`. - (#185 by @clue) - -* Feature / Fix: Skip invalid nameserver entries from `resolv.conf` and ignore IPv6 zone IDs. - (#187 by @clue) - -* Feature / Fix: Reduce socket read chunk size for queries over TCP/IP. - (#189 by @clue) - -## 1.8.0 (2021-07-11) - -A major new feature release, see [**release announcement**](https://clue.engineering/2021/announcing-reactphp-default-loop). - -* Feature: Simplify usage by supporting new [default loop](https://reactphp.org/event-loop/#loop). - (#182 by @clue) - - ```php - // old (still supported) - $factory = new React\Dns\Resolver\Factory(); - $resolver = $factory->create($config, $loop); - - // new (using default loop) - $factory = new React\Dns\Resolver\Factory(); - $resolver = $factory->create($config); - ``` - -## 1.7.0 (2021-06-25) - -* Feature: Update DNS `Factory` to accept complete `Config` object. - Add new `FallbackExecutor` and use fallback DNS servers when `Config` lists multiple servers. - (#179 and #180 by @clue) - - ```php - // old (still supported) - $config = React\Dns\Config\Config::loadSystemConfigBlocking(); - $server = $config->nameservers ? reset($config->nameservers) : '8.8.8.8'; - $resolver = $factory->create($server, $loop); - - // new - $config = React\Dns\Config\Config::loadSystemConfigBlocking(); - if (!$config->nameservers) { - $config->nameservers[] = '8.8.8.8'; - } - $resolver = $factory->create($config, $loop); - ``` - -## 1.6.0 (2021-06-21) - -* Feature: Add support for legacy `SPF` record type. - (#178 by @akondas and @clue) - -* Fix: Fix integer overflow for TCP/IP chunk size on 32 bit platforms. - (#177 by @clue) - -## 1.5.0 (2021-03-05) - -* Feature: Improve error reporting when query fails, include domain and query type and DNS server address where applicable. - (#174 by @clue) - -* Feature: Improve error handling when sending data to DNS server fails (macOS). - (#171 and #172 by @clue) - -* Fix: Improve DNS response parser to limit recursion for compressed labels. - (#169 by @clue) - -* Improve test suite, use GitHub actions for continuous integration (CI). - (#170 by @SimonFrings) - -## 1.4.0 (2020-09-18) - -* Feature: Support upcoming PHP 8. - (#168 by @clue) - -* Improve test suite and update to PHPUnit 9.3. - (#164 by @clue, #165 and #166 by @SimonFrings and #167 by @WyriHaximus) - -## 1.3.0 (2020-07-10) - -* Feature: Forward compatibility with react/promise v3. - (#153 by @WyriHaximus) - -* Feature: Support parsing `OPT` records (EDNS0). - (#157 by @clue) - -* Fix: Avoid PHP warnings due to lack of args in exception trace on PHP 7.4. - (#160 by @clue) - -* Improve test suite and add `.gitattributes` to exclude dev files from exports. - Run tests on PHPUnit 9 and PHP 7.4 and clean up test suite. - (#154 by @reedy, #156 by @clue and #163 by @SimonFrings) - -## 1.2.0 (2019-08-15) - -* Feature: Add `TcpTransportExecutor` to send DNS queries over TCP/IP connection, - add `SelectiveTransportExecutor` to retry with TCP if UDP is truncated and - automatically select transport protocol when no explicit `udp://` or `tcp://` scheme is given in `Factory`. - (#145, #146, #147 and #148 by @clue) - -* Feature: Support escaping literal dots and special characters in domain names. - (#144 by @clue) - -## 1.1.0 (2019-07-18) - -* Feature: Support parsing `CAA` and `SSHFP` records. - (#141 and #142 by @clue) - -* Feature: Add `ResolverInterface` as common interface for `Resolver` class. - (#139 by @clue) - -* Fix: Add missing private property definitions and - remove unneeded dependency on `react/stream`. - (#140 and #143 by @clue) - -## 1.0.0 (2019-07-11) - -* First stable LTS release, now following [SemVer](https://semver.org/). - We'd like to emphasize that this component is production ready and battle-tested. - We plan to support all long-term support (LTS) releases for at least 24 months, - so you have a rock-solid foundation to build on top of. - -This update involves a number of BC breaks due to dropped support for -deprecated functionality and some internal API cleanup. We've tried hard to -avoid BC breaks where possible and minimize impact otherwise. We expect that -most consumers of this package will actually not be affected by any BC -breaks, see below for more details: - -* BC break: Delete all deprecated APIs, use `Query` objects for `Message` questions - instead of nested arrays and increase code coverage to 100%. - (#130 by @clue) - -* BC break: Move `$nameserver` from `ExecutorInterface` to `UdpTransportExecutor`, - remove advanced/internal `UdpTransportExecutor` args for `Parser`/`BinaryDumper` and - add API documentation for `ExecutorInterface`. - (#135, #137 and #138 by @clue) - -* BC break: Replace `HeaderBag` attributes with simple `Message` properties. - (#132 by @clue) - -* BC break: Mark all `Record` attributes as required, add documentation vs `Query`. - (#136 by @clue) - -* BC break: Mark all classes as final to discourage inheritance - (#134 by @WyriHaximus) - -## 0.4.19 (2019-07-10) - -* Feature: Avoid garbage references when DNS resolution rejects on legacy PHP <= 5.6. - (#133 by @clue) - -## 0.4.18 (2019-09-07) - -* Feature / Fix: Implement `CachingExecutor` using cache TTL, deprecate old `CachedExecutor`, - respect TTL from response records when caching and do not cache truncated responses. - (#129 by @clue) - -* Feature: Limit cache size to 256 last responses by default. - (#127 by @clue) - -* Feature: Cooperatively resolve hosts to avoid running same query concurrently. - (#125 by @clue) - -## 0.4.17 (2019-04-01) - -* Feature: Support parsing `authority` and `additional` records from DNS response. - (#123 by @clue) - -* Feature: Support dumping records as part of outgoing binary DNS message. - (#124 by @clue) - -* Feature: Forward compatibility with upcoming Cache v0.6 and Cache v1.0 - (#121 by @clue) - -* Improve test suite to add forward compatibility with PHPUnit 7, - test against PHP 7.3 and use legacy PHPUnit 5 on legacy HHVM. - (#122 by @clue) - -## 0.4.16 (2018-11-11) - -* Feature: Improve promise cancellation for DNS lookup retries and clean up any garbage references. - (#118 by @clue) - -* Fix: Reject parsing malformed DNS response messages such as incomplete DNS response messages, - malformed record data or malformed compressed domain name labels. - (#115 and #117 by @clue) - -* Fix: Fix interpretation of TTL as UINT32 with most significant bit unset. - (#116 by @clue) - -* Fix: Fix caching advanced MX/SRV/TXT/SOA structures. - (#112 by @clue) - -## 0.4.15 (2018-07-02) - -* Feature: Add `resolveAll()` method to support custom query types in `Resolver`. - (#110 by @clue and @WyriHaximus) - - ```php - $resolver->resolveAll('reactphp.org', Message::TYPE_AAAA)->then(function ($ips) { - echo 'IPv6 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL; - }); - ``` - -* Feature: Support parsing `NS`, `TXT`, `MX`, `SOA` and `SRV` records. - (#104, #105, #106, #107 and #108 by @clue) - -* Feature: Add support for `Message::TYPE_ANY` and parse unknown types as binary data. - (#104 by @clue) - -* Feature: Improve error messages for failed queries and improve documentation. - (#109 by @clue) - -* Feature: Add reverse DNS lookup example. - (#111 by @clue) - -## 0.4.14 (2018-06-26) - -* Feature: Add `UdpTransportExecutor`, validate incoming DNS response messages - to avoid cache poisoning attacks and deprecate legacy `Executor`. - (#101 and #103 by @clue) - -* Feature: Forward compatibility with Cache 0.5 - (#102 by @clue) - -* Deprecate legacy `Query::$currentTime` and binary parser data attributes to clean up and simplify API. - (#99 by @clue) - -## 0.4.13 (2018-02-27) - -* Add `Config::loadSystemConfigBlocking()` to load default system config - and support parsing DNS config on all supported platforms - (`/etc/resolv.conf` on Unix/Linux/Mac and WMIC on Windows) - (#92, #93, #94 and #95 by @clue) - - ```php - $config = Config::loadSystemConfigBlocking(); - $server = $config->nameservers ? reset($config->nameservers) : '8.8.8.8'; - ``` - -* Remove unneeded cyclic dependency on react/socket - (#96 by @clue) - -## 0.4.12 (2018-01-14) - -* Improve test suite by adding forward compatibility with PHPUnit 6, - test against PHP 7.2, fix forward compatibility with upcoming EventLoop releases, - add test group to skip integration tests relying on internet connection - and add minor documentation improvements. - (#85 and #87 by @carusogabriel, #88 and #89 by @clue and #83 by @jsor) - -## 0.4.11 (2017-08-25) - -* Feature: Support resolving from default hosts file - (#75, #76 and #77 by @clue) - - This means that resolving hosts such as `localhost` will now work as - expected across all platforms with no changes required: - - ```php - $resolver->resolve('localhost')->then(function ($ip) { - echo 'IP: ' . $ip; - }); - ``` - - The new `HostsExecutor` exists for advanced usage and is otherwise used - internally for this feature. - -## 0.4.10 (2017-08-10) - -* Feature: Forward compatibility with EventLoop v1.0 and v0.5 and - lock minimum dependencies and work around circular dependency for tests - (#70 and #71 by @clue) - -* Fix: Work around DNS timeout issues for Windows users - (#74 by @clue) - -* Documentation and examples for advanced usage - (#66 by @WyriHaximus) - -* Remove broken TCP code, do not retry with invalid TCP query - (#73 by @clue) - -* Improve test suite by fixing HHVM build for now again and ignore future HHVM build errors and - lock Travis distro so new defaults will not break the build and - fix failing tests for PHP 7.1 - (#68 by @WyriHaximus and #69 and #72 by @clue) - -## 0.4.9 (2017-05-01) - -* Feature: Forward compatibility with upcoming Socket v1.0 and v0.8 - (#61 by @clue) - -## 0.4.8 (2017-04-16) - -* Feature: Add support for the AAAA record type to the protocol parser - (#58 by @othillo) - -* Feature: Add support for the PTR record type to the protocol parser - (#59 by @othillo) - -## 0.4.7 (2017-03-31) - -* Feature: Forward compatibility with upcoming Socket v0.6 and v0.7 component - (#57 by @clue) - -## 0.4.6 (2017-03-11) - -* Fix: Fix DNS timeout issues for Windows users and add forward compatibility - with Stream v0.5 and upcoming v0.6 - (#53 by @clue) - -* Improve test suite by adding PHPUnit to `require-dev` - (#54 by @clue) - -## 0.4.5 (2017-03-02) - -* Fix: Ensure we ignore the case of the answer - (#51 by @WyriHaximus) - -* Feature: Add `TimeoutExecutor` and simplify internal APIs to allow internal - code re-use for upcoming versions. - (#48 and #49 by @clue) - -## 0.4.4 (2017-02-13) - -* Fix: Fix handling connection and stream errors - (#45 by @clue) - -* Feature: Add examples and forward compatibility with upcoming Socket v0.5 component - (#46 and #47 by @clue) - -## 0.4.3 (2016-07-31) - -* Feature: Allow for cache adapter injection (#38 by @WyriHaximus) - - ```php - $factory = new React\Dns\Resolver\Factory(); - - $cache = new MyCustomCacheInstance(); - $resolver = $factory->createCached('8.8.8.8', $loop, $cache); - ``` - -* Feature: Support Promise cancellation (#35 by @clue) - - ```php - $promise = $resolver->resolve('reactphp.org'); - - $promise->cancel(); - ``` - -## 0.4.2 (2016-02-24) - -* Repository maintenance, split off from main repo, improve test suite and documentation -* First class support for PHP7 and HHVM (#34 by @clue) -* Adjust compatibility to 5.3 (#30 by @clue) - -## 0.4.1 (2014-04-13) - -* Bug fix: Fixed PSR-4 autoload path (@marcj/WyriHaximus) - -## 0.4.0 (2014-02-02) - -* BC break: Bump minimum PHP version to PHP 5.4, remove 5.3 specific hacks -* BC break: Update to React/Promise 2.0 -* Bug fix: Properly resolve CNAME aliases -* Dependency: Autoloading and filesystem structure now PSR-4 instead of PSR-0 -* Bump React dependencies to v0.4 - -## 0.3.2 (2013-05-10) - -* Feature: Support default port for IPv6 addresses (@clue) - -## 0.3.0 (2013-04-14) - -* Bump React dependencies to v0.3 - -## 0.2.6 (2012-12-26) - -* Feature: New cache component, used by DNS - -## 0.2.5 (2012-11-26) - -* Version bump - -## 0.2.4 (2012-11-18) - -* Feature: Change to promise-based API (@jsor) - -## 0.2.3 (2012-11-14) - -* Version bump - -## 0.2.2 (2012-10-28) - -* Feature: DNS executor timeout handling (@arnaud-lb) -* Feature: DNS retry executor (@arnaud-lb) - -## 0.2.1 (2012-10-14) - -* Minor adjustments to DNS parser - -## 0.2.0 (2012-09-10) - -* Feature: DNS resolver diff --git a/v3_ci4/vendor/react/dns/LICENSE b/v3_ci4/vendor/react/dns/LICENSE deleted file mode 100644 index d6f8901..0000000 --- a/v3_ci4/vendor/react/dns/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/react/dns/README.md b/v3_ci4/vendor/react/dns/README.md deleted file mode 100644 index b6e8fe4..0000000 --- a/v3_ci4/vendor/react/dns/README.md +++ /dev/null @@ -1,453 +0,0 @@ -# DNS - -[![CI status](https://github.com/reactphp/dns/actions/workflows/ci.yml/badge.svg)](https://github.com/reactphp/dns/actions) -[![installs on Packagist](https://img.shields.io/packagist/dt/react/dns?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/react/dns) - -Async DNS resolver for [ReactPHP](https://reactphp.org/). - -The main point of the DNS component is to provide async DNS resolution. -However, it is really a toolkit for working with DNS messages, and could -easily be used to create a DNS server. - -**Table of contents** - -* [Basic usage](#basic-usage) -* [Caching](#caching) - * [Custom cache adapter](#custom-cache-adapter) -* [ResolverInterface](#resolverinterface) - * [resolve()](#resolve) - * [resolveAll()](#resolveall) -* [Advanced usage](#advanced-usage) - * [UdpTransportExecutor](#udptransportexecutor) - * [TcpTransportExecutor](#tcptransportexecutor) - * [SelectiveTransportExecutor](#selectivetransportexecutor) - * [HostsFileExecutor](#hostsfileexecutor) -* [Install](#install) -* [Tests](#tests) -* [License](#license) -* [References](#references) - -## Basic usage - -The most basic usage is to just create a resolver through the resolver -factory. All you need to give it is a nameserver, then you can start resolving -names, baby! - -```php -$config = React\Dns\Config\Config::loadSystemConfigBlocking(); -if (!$config->nameservers) { - $config->nameservers[] = '8.8.8.8'; -} - -$factory = new React\Dns\Resolver\Factory(); -$dns = $factory->create($config); - -$dns->resolve('igor.io')->then(function ($ip) { - echo "Host: $ip\n"; -}); -``` - -See also the [first example](examples). - -The `Config` class can be used to load the system default config. This is an -operation that may access the filesystem and block. Ideally, this method should -thus be executed only once before the loop starts and not repeatedly while it is -running. -Note that this class may return an *empty* configuration if the system config -can not be loaded. As such, you'll likely want to apply a default nameserver -as above if none can be found. - -> Note that the factory loads the hosts file from the filesystem once when - creating the resolver instance. - Ideally, this method should thus be executed only once before the loop starts - and not repeatedly while it is running. - -But there's more. - -## Caching - -You can cache results by configuring the resolver to use a `CachedExecutor`: - -```php -$config = React\Dns\Config\Config::loadSystemConfigBlocking(); -if (!$config->nameservers) { - $config->nameservers[] = '8.8.8.8'; -} - -$factory = new React\Dns\Resolver\Factory(); -$dns = $factory->createCached($config); - -$dns->resolve('igor.io')->then(function ($ip) { - echo "Host: $ip\n"; -}); - -... - -$dns->resolve('igor.io')->then(function ($ip) { - echo "Host: $ip\n"; -}); -``` - -If the first call returns before the second, only one query will be executed. -The second result will be served from an in memory cache. -This is particularly useful for long running scripts where the same hostnames -have to be looked up multiple times. - -See also the [third example](examples). - -### Custom cache adapter - -By default, the above will use an in memory cache. - -You can also specify a custom cache implementing [`CacheInterface`](https://github.com/reactphp/cache) to handle the record cache instead: - -```php -$cache = new React\Cache\ArrayCache(); -$factory = new React\Dns\Resolver\Factory(); -$dns = $factory->createCached('8.8.8.8', null, $cache); -``` - -See also the wiki for possible [cache implementations](https://github.com/reactphp/react/wiki/Users#cache-implementations). - -## ResolverInterface - - - -### resolve() - -The `resolve(string $domain): PromiseInterface` method can be used to -resolve the given $domain name to a single IPv4 address (type `A` query). - -```php -$resolver->resolve('reactphp.org')->then(function ($ip) { - echo 'IP for reactphp.org is ' . $ip . PHP_EOL; -}); -``` - -This is one of the main methods in this package. It sends a DNS query -for the given $domain name to your DNS server and returns a single IP -address on success. - -If the DNS server sends a DNS response message that contains more than -one IP address for this query, it will randomly pick one of the IP -addresses from the response. If you want the full list of IP addresses -or want to send a different type of query, you should use the -[`resolveAll()`](#resolveall) method instead. - -If the DNS server sends a DNS response message that indicates an error -code, this method will reject with a `RecordNotFoundException`. Its -message and code can be used to check for the response code. - -If the DNS communication fails and the server does not respond with a -valid response message, this message will reject with an `Exception`. - -Pending DNS queries can be cancelled by cancelling its pending promise like so: - -```php -$promise = $resolver->resolve('reactphp.org'); - -$promise->cancel(); -``` - -### resolveAll() - -The `resolveAll(string $host, int $type): PromiseInterface` method can be used to -resolve all record values for the given $domain name and query $type. - -```php -$resolver->resolveAll('reactphp.org', Message::TYPE_A)->then(function ($ips) { - echo 'IPv4 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL; -}); - -$resolver->resolveAll('reactphp.org', Message::TYPE_AAAA)->then(function ($ips) { - echo 'IPv6 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL; -}); -``` - -This is one of the main methods in this package. It sends a DNS query -for the given $domain name to your DNS server and returns a list with all -record values on success. - -If the DNS server sends a DNS response message that contains one or more -records for this query, it will return a list with all record values -from the response. You can use the `Message::TYPE_*` constants to control -which type of query will be sent. Note that this method always returns a -list of record values, but each record value type depends on the query -type. For example, it returns the IPv4 addresses for type `A` queries, -the IPv6 addresses for type `AAAA` queries, the hostname for type `NS`, -`CNAME` and `PTR` queries and structured data for other queries. See also -the `Record` documentation for more details. - -If the DNS server sends a DNS response message that indicates an error -code, this method will reject with a `RecordNotFoundException`. Its -message and code can be used to check for the response code. - -If the DNS communication fails and the server does not respond with a -valid response message, this message will reject with an `Exception`. - -Pending DNS queries can be cancelled by cancelling its pending promise like so: - -```php -$promise = $resolver->resolveAll('reactphp.org', Message::TYPE_AAAA); - -$promise->cancel(); -``` - -## Advanced Usage - -### UdpTransportExecutor - -The `UdpTransportExecutor` can be used to -send DNS queries over a UDP transport. - -This is the main class that sends a DNS query to your DNS server and is used -internally by the `Resolver` for the actual message transport. - -For more advanced usages one can utilize this class directly. -The following example looks up the `IPv6` address for `igor.io`. - -```php -$executor = new UdpTransportExecutor('8.8.8.8:53'); - -$executor->query( - new Query($name, Message::TYPE_AAAA, Message::CLASS_IN) -)->then(function (Message $message) { - foreach ($message->answers as $answer) { - echo 'IPv6: ' . $answer->data . PHP_EOL; - } -}, 'printf'); -``` - -See also the [fourth example](examples). - -Note that this executor does not implement a timeout, so you will very likely -want to use this in combination with a `TimeoutExecutor` like this: - -```php -$executor = new TimeoutExecutor( - new UdpTransportExecutor($nameserver), - 3.0 -); -``` - -Also note that this executor uses an unreliable UDP transport and that it -does not implement any retry logic, so you will likely want to use this in -combination with a `RetryExecutor` like this: - -```php -$executor = new RetryExecutor( - new TimeoutExecutor( - new UdpTransportExecutor($nameserver), - 3.0 - ) -); -``` - -Note that this executor is entirely async and as such allows you to execute -any number of queries concurrently. You should probably limit the number of -concurrent queries in your application or you're very likely going to face -rate limitations and bans on the resolver end. For many common applications, -you may want to avoid sending the same query multiple times when the first -one is still pending, so you will likely want to use this in combination with -a `CoopExecutor` like this: - -```php -$executor = new CoopExecutor( - new RetryExecutor( - new TimeoutExecutor( - new UdpTransportExecutor($nameserver), - 3.0 - ) - ) -); -``` - -> Internally, this class uses PHP's UDP sockets and does not take advantage - of [react/datagram](https://github.com/reactphp/datagram) purely for - organizational reasons to avoid a cyclic dependency between the two - packages. Higher-level components should take advantage of the Datagram - component instead of reimplementing this socket logic from scratch. - -### TcpTransportExecutor - -The `TcpTransportExecutor` class can be used to -send DNS queries over a TCP/IP stream transport. - -This is one of the main classes that send a DNS query to your DNS server. - -For more advanced usages one can utilize this class directly. -The following example looks up the `IPv6` address for `reactphp.org`. - -```php -$executor = new TcpTransportExecutor('8.8.8.8:53'); - -$executor->query( - new Query($name, Message::TYPE_AAAA, Message::CLASS_IN) -)->then(function (Message $message) { - foreach ($message->answers as $answer) { - echo 'IPv6: ' . $answer->data . PHP_EOL; - } -}, 'printf'); -``` - -See also [example #92](examples). - -Note that this executor does not implement a timeout, so you will very likely -want to use this in combination with a `TimeoutExecutor` like this: - -```php -$executor = new TimeoutExecutor( - new TcpTransportExecutor($nameserver), - 3.0 -); -``` - -Unlike the `UdpTransportExecutor`, this class uses a reliable TCP/IP -transport, so you do not necessarily have to implement any retry logic. - -Note that this executor is entirely async and as such allows you to execute -queries concurrently. The first query will establish a TCP/IP socket -connection to the DNS server which will be kept open for a short period. -Additional queries will automatically reuse this existing socket connection -to the DNS server, will pipeline multiple requests over this single -connection and will keep an idle connection open for a short period. The -initial TCP/IP connection overhead may incur a slight delay if you only send -occasional queries – when sending a larger number of concurrent queries over -an existing connection, it becomes increasingly more efficient and avoids -creating many concurrent sockets like the UDP-based executor. You may still -want to limit the number of (concurrent) queries in your application or you -may be facing rate limitations and bans on the resolver end. For many common -applications, you may want to avoid sending the same query multiple times -when the first one is still pending, so you will likely want to use this in -combination with a `CoopExecutor` like this: - -```php -$executor = new CoopExecutor( - new TimeoutExecutor( - new TcpTransportExecutor($nameserver), - 3.0 - ) -); -``` - -> Internally, this class uses PHP's TCP/IP sockets and does not take advantage - of [react/socket](https://github.com/reactphp/socket) purely for - organizational reasons to avoid a cyclic dependency between the two - packages. Higher-level components should take advantage of the Socket - component instead of reimplementing this socket logic from scratch. - -### SelectiveTransportExecutor - -The `SelectiveTransportExecutor` class can be used to -Send DNS queries over a UDP or TCP/IP stream transport. - -This class will automatically choose the correct transport protocol to send -a DNS query to your DNS server. It will always try to send it over the more -efficient UDP transport first. If this query yields a size related issue -(truncated messages), it will retry over a streaming TCP/IP transport. - -For more advanced usages one can utilize this class directly. -The following example looks up the `IPv6` address for `reactphp.org`. - -```php -$executor = new SelectiveTransportExecutor($udpExecutor, $tcpExecutor); - -$executor->query( - new Query($name, Message::TYPE_AAAA, Message::CLASS_IN) -)->then(function (Message $message) { - foreach ($message->answers as $answer) { - echo 'IPv6: ' . $answer->data . PHP_EOL; - } -}, 'printf'); -``` - -Note that this executor only implements the logic to select the correct -transport for the given DNS query. Implementing the correct transport logic, -implementing timeouts and any retry logic is left up to the given executors, -see also [`UdpTransportExecutor`](#udptransportexecutor) and -[`TcpTransportExecutor`](#tcptransportexecutor) for more details. - -Note that this executor is entirely async and as such allows you to execute -any number of queries concurrently. You should probably limit the number of -concurrent queries in your application or you're very likely going to face -rate limitations and bans on the resolver end. For many common applications, -you may want to avoid sending the same query multiple times when the first -one is still pending, so you will likely want to use this in combination with -a `CoopExecutor` like this: - -```php -$executor = new CoopExecutor( - new SelectiveTransportExecutor( - $datagramExecutor, - $streamExecutor - ) -); -``` - -### HostsFileExecutor - -Note that the above `UdpTransportExecutor` class always performs an actual DNS query. -If you also want to take entries from your hosts file into account, you may -use this code: - -```php -$hosts = \React\Dns\Config\HostsFile::loadFromPathBlocking(); - -$executor = new UdpTransportExecutor('8.8.8.8:53'); -$executor = new HostsFileExecutor($hosts, $executor); - -$executor->query( - new Query('localhost', Message::TYPE_A, Message::CLASS_IN) -); -``` - -## Install - -The recommended way to install this library is [through Composer](https://getcomposer.org/). -[New to Composer?](https://getcomposer.org/doc/00-intro.md) - -This project follows [SemVer](https://semver.org/). -This will install the latest supported version: - -```bash -composer require react/dns:^1.14 -``` - -See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades. - -This project aims to run on any platform and thus does not require any PHP -extensions and supports running on legacy PHP 5.3 through current PHP 8+ and -HHVM. -It's *highly recommended to use the latest supported PHP version* for this project. - -## Tests - -To run the test suite, you first need to clone this repo and then install all -dependencies [through Composer](https://getcomposer.org/): - -```bash -composer install -``` - -To run the test suite, go to the project root and run: - -```bash -vendor/bin/phpunit -``` - -The test suite also contains a number of functional integration tests that rely -on a stable internet connection. -If you do not want to run these, they can simply be skipped like this: - -```bash -vendor/bin/phpunit --exclude-group internet -``` - -## License - -MIT, see [LICENSE file](LICENSE). - -## References - -* [RFC 1034](https://tools.ietf.org/html/rfc1034) Domain Names - Concepts and Facilities -* [RFC 1035](https://tools.ietf.org/html/rfc1035) Domain Names - Implementation and Specification diff --git a/v3_ci4/vendor/react/dns/composer.json b/v3_ci4/vendor/react/dns/composer.json deleted file mode 100644 index 4fe5c0d..0000000 --- a/v3_ci4/vendor/react/dns/composer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "react/dns", - "description": "Async DNS resolver for ReactPHP", - "keywords": ["dns", "dns-resolver", "ReactPHP", "async"], - "license": "MIT", - "authors": [ - { - "name": "Christian Lück", - "homepage": "https://clue.engineering/", - "email": "christian@clue.engineering" - }, - { - "name": "Cees-Jan Kiewiet", - "homepage": "https://wyrihaximus.net/", - "email": "reactphp@ceesjankiewiet.nl" - }, - { - "name": "Jan Sorgalla", - "homepage": "https://sorgalla.com/", - "email": "jsorgalla@gmail.com" - }, - { - "name": "Chris Boden", - "homepage": "https://cboden.dev/", - "email": "cboden@gmail.com" - } - ], - "require": { - "php": ">=5.3.0", - "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.2", - "react/promise": "^3.2 || ^2.7 || ^1.2.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4.3 || ^3 || ^2", - "react/promise-timer": "^1.11" - }, - "autoload": { - "psr-4": { - "React\\Dns\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "React\\Tests\\Dns\\": "tests/" - } - } -} diff --git a/v3_ci4/vendor/react/dns/src/BadServerException.php b/v3_ci4/vendor/react/dns/src/BadServerException.php deleted file mode 100644 index 3d95213..0000000 --- a/v3_ci4/vendor/react/dns/src/BadServerException.php +++ /dev/null @@ -1,7 +0,0 @@ - `fe80:1`) - if (strpos($ip, ':') !== false && ($pos = strpos($ip, '%')) !== false) { - $ip = substr($ip, 0, $pos); - } - - if (@inet_pton($ip) !== false) { - $config->nameservers[] = $ip; - } - } - - return $config; - } - - /** - * Loads the DNS configurations from Windows's WMIC (from the given command or default command) - * - * Note that this method blocks while loading the given command and should - * thus be used with care! While this should be relatively fast for normal - * WMIC commands, it remains unknown if this may block under certain - * circumstances. In particular, this method should only be executed before - * the loop starts, not while it is running. - * - * Note that this method will only try to execute the given command try to - * parse its output, irrespective of whether this command exists. In - * particular, this command is only available on Windows. Currently, this - * will only parse valid nameserver entries from the command output and will - * ignore all other output without complaining. - * - * Note that the previous section implies that this may return an empty - * `Config` object if no valid nameserver entries can be found. - * - * @param ?string $command (advanced) should not be given (NULL) unless you know what you're doing - * @return self - * @link https://ss64.com/nt/wmic.html - */ - public static function loadWmicBlocking($command = null) - { - $contents = shell_exec($command === null ? 'wmic NICCONFIG get "DNSServerSearchOrder" /format:CSV' : $command); - preg_match_all('/(?<=[{;,"])([\da-f.:]{4,})(?=[};,"])/i', $contents, $matches); - - $config = new self(); - $config->nameservers = $matches[1]; - - return $config; - } - - public $nameservers = array(); -} diff --git a/v3_ci4/vendor/react/dns/src/Config/HostsFile.php b/v3_ci4/vendor/react/dns/src/Config/HostsFile.php deleted file mode 100644 index 1060231..0000000 --- a/v3_ci4/vendor/react/dns/src/Config/HostsFile.php +++ /dev/null @@ -1,153 +0,0 @@ -contents = $contents; - } - - /** - * Returns all IPs for the given hostname - * - * @param string $name - * @return string[] - */ - public function getIpsForHost($name) - { - $name = strtolower($name); - - $ips = array(); - foreach (preg_split('/\r?\n/', $this->contents) as $line) { - $parts = preg_split('/\s+/', $line); - $ip = array_shift($parts); - if ($parts && array_search($name, $parts) !== false) { - // remove IPv6 zone ID (`fe80::1%lo0` => `fe80:1`) - if (strpos($ip, ':') !== false && ($pos = strpos($ip, '%')) !== false) { - $ip = substr($ip, 0, $pos); - } - - if (@inet_pton($ip) !== false) { - $ips[] = $ip; - } - } - } - - return $ips; - } - - /** - * Returns all hostnames for the given IPv4 or IPv6 address - * - * @param string $ip - * @return string[] - */ - public function getHostsForIp($ip) - { - // check binary representation of IP to avoid string case and short notation - $ip = @inet_pton($ip); - if ($ip === false) { - return array(); - } - - $names = array(); - foreach (preg_split('/\r?\n/', $this->contents) as $line) { - $parts = preg_split('/\s+/', $line, -1, PREG_SPLIT_NO_EMPTY); - $addr = (string) array_shift($parts); - - // remove IPv6 zone ID (`fe80::1%lo0` => `fe80:1`) - if (strpos($addr, ':') !== false && ($pos = strpos($addr, '%')) !== false) { - $addr = substr($addr, 0, $pos); - } - - if (@inet_pton($addr) === $ip) { - foreach ($parts as $part) { - $names[] = $part; - } - } - } - - return $names; - } -} diff --git a/v3_ci4/vendor/react/dns/src/Model/Message.php b/v3_ci4/vendor/react/dns/src/Model/Message.php deleted file mode 100644 index bac2b10..0000000 --- a/v3_ci4/vendor/react/dns/src/Model/Message.php +++ /dev/null @@ -1,230 +0,0 @@ -id = self::generateId(); - $request->rd = true; - $request->questions[] = $query; - - return $request; - } - - /** - * Creates a new response message for the given query with the given answer records - * - * @param Query $query - * @param Record[] $answers - * @return self - */ - public static function createResponseWithAnswersForQuery(Query $query, array $answers) - { - $response = new Message(); - $response->id = self::generateId(); - $response->qr = true; - $response->rd = true; - - $response->questions[] = $query; - - foreach ($answers as $record) { - $response->answers[] = $record; - } - - return $response; - } - - /** - * generates a random 16 bit message ID - * - * This uses a CSPRNG so that an outside attacker that is sending spoofed - * DNS response messages can not guess the message ID to avoid possible - * cache poisoning attacks. - * - * The `random_int()` function is only available on PHP 7+ or when - * https://github.com/paragonie/random_compat is installed. As such, using - * the latest supported PHP version is highly recommended. This currently - * falls back to a less secure random number generator on older PHP versions - * in the hope that this system is properly protected against outside - * attackers, for example by using one of the common local DNS proxy stubs. - * - * @return int - * @see self::getId() - * @codeCoverageIgnore - */ - private static function generateId() - { - if (function_exists('random_int')) { - return random_int(0, 0xffff); - } - return mt_rand(0, 0xffff); - } - - /** - * The 16 bit message ID - * - * The response message ID has to match the request message ID. This allows - * the receiver to verify this is the correct response message. An outside - * attacker may try to inject fake responses by "guessing" the message ID, - * so this should use a proper CSPRNG to avoid possible cache poisoning. - * - * @var int 16 bit message ID - * @see self::generateId() - */ - public $id = 0; - - /** - * @var bool Query/Response flag, query=false or response=true - */ - public $qr = false; - - /** - * @var int specifies the kind of query (4 bit), see self::OPCODE_* constants - * @see self::OPCODE_QUERY - */ - public $opcode = self::OPCODE_QUERY; - - /** - * - * @var bool Authoritative Answer - */ - public $aa = false; - - /** - * @var bool TrunCation - */ - public $tc = false; - - /** - * @var bool Recursion Desired - */ - public $rd = false; - - /** - * @var bool Recursion Available - */ - public $ra = false; - - /** - * @var int response code (4 bit), see self::RCODE_* constants - * @see self::RCODE_OK - */ - public $rcode = Message::RCODE_OK; - - /** - * An array of Query objects - * - * ```php - * $questions = array( - * new Query( - * 'reactphp.org', - * Message::TYPE_A, - * Message::CLASS_IN - * ) - * ); - * ``` - * - * @var Query[] - */ - public $questions = array(); - - /** - * @var Record[] - */ - public $answers = array(); - - /** - * @var Record[] - */ - public $authority = array(); - - /** - * @var Record[] - */ - public $additional = array(); -} diff --git a/v3_ci4/vendor/react/dns/src/Model/Record.php b/v3_ci4/vendor/react/dns/src/Model/Record.php deleted file mode 100644 index c20403f..0000000 --- a/v3_ci4/vendor/react/dns/src/Model/Record.php +++ /dev/null @@ -1,153 +0,0 @@ -name = $name; - $this->type = $type; - $this->class = $class; - $this->ttl = $ttl; - $this->data = $data; - } -} diff --git a/v3_ci4/vendor/react/dns/src/Protocol/BinaryDumper.php b/v3_ci4/vendor/react/dns/src/Protocol/BinaryDumper.php deleted file mode 100644 index 6f4030f..0000000 --- a/v3_ci4/vendor/react/dns/src/Protocol/BinaryDumper.php +++ /dev/null @@ -1,199 +0,0 @@ -headerToBinary($message); - $data .= $this->questionToBinary($message->questions); - $data .= $this->recordsToBinary($message->answers); - $data .= $this->recordsToBinary($message->authority); - $data .= $this->recordsToBinary($message->additional); - - return $data; - } - - /** - * @param Message $message - * @return string - */ - private function headerToBinary(Message $message) - { - $data = ''; - - $data .= pack('n', $message->id); - - $flags = 0x00; - $flags = ($flags << 1) | ($message->qr ? 1 : 0); - $flags = ($flags << 4) | $message->opcode; - $flags = ($flags << 1) | ($message->aa ? 1 : 0); - $flags = ($flags << 1) | ($message->tc ? 1 : 0); - $flags = ($flags << 1) | ($message->rd ? 1 : 0); - $flags = ($flags << 1) | ($message->ra ? 1 : 0); - $flags = ($flags << 3) | 0; // skip unused zero bit - $flags = ($flags << 4) | $message->rcode; - - $data .= pack('n', $flags); - - $data .= pack('n', count($message->questions)); - $data .= pack('n', count($message->answers)); - $data .= pack('n', count($message->authority)); - $data .= pack('n', count($message->additional)); - - return $data; - } - - /** - * @param Query[] $questions - * @return string - */ - private function questionToBinary(array $questions) - { - $data = ''; - - foreach ($questions as $question) { - $data .= $this->domainNameToBinary($question->name); - $data .= pack('n*', $question->type, $question->class); - } - - return $data; - } - - /** - * @param Record[] $records - * @return string - */ - private function recordsToBinary(array $records) - { - $data = ''; - - foreach ($records as $record) { - /* @var $record Record */ - switch ($record->type) { - case Message::TYPE_A: - case Message::TYPE_AAAA: - $binary = \inet_pton($record->data); - break; - case Message::TYPE_CNAME: - case Message::TYPE_NS: - case Message::TYPE_PTR: - $binary = $this->domainNameToBinary($record->data); - break; - case Message::TYPE_TXT: - case Message::TYPE_SPF: - $binary = $this->textsToBinary($record->data); - break; - case Message::TYPE_MX: - $binary = \pack( - 'n', - $record->data['priority'] - ); - $binary .= $this->domainNameToBinary($record->data['target']); - break; - case Message::TYPE_SRV: - $binary = \pack( - 'n*', - $record->data['priority'], - $record->data['weight'], - $record->data['port'] - ); - $binary .= $this->domainNameToBinary($record->data['target']); - break; - case Message::TYPE_SOA: - $binary = $this->domainNameToBinary($record->data['mname']); - $binary .= $this->domainNameToBinary($record->data['rname']); - $binary .= \pack( - 'N*', - $record->data['serial'], - $record->data['refresh'], - $record->data['retry'], - $record->data['expire'], - $record->data['minimum'] - ); - break; - case Message::TYPE_CAA: - $binary = \pack( - 'C*', - $record->data['flag'], - \strlen($record->data['tag']) - ); - $binary .= $record->data['tag']; - $binary .= $record->data['value']; - break; - case Message::TYPE_SSHFP: - $binary = \pack( - 'CCH*', - $record->data['algorithm'], - $record->data['type'], - $record->data['fingerprint'] - ); - break; - case Message::TYPE_OPT: - $binary = ''; - foreach ($record->data as $opt => $value) { - if ($opt === Message::OPT_TCP_KEEPALIVE && $value !== null) { - $value = \pack('n', round($value * 10)); - } - $binary .= \pack('n*', $opt, \strlen((string) $value)) . $value; - } - break; - default: - // RDATA is already stored as binary value for unknown record types - $binary = $record->data; - } - - $data .= $this->domainNameToBinary($record->name); - $data .= \pack('nnNn', $record->type, $record->class, $record->ttl, \strlen($binary)); - $data .= $binary; - } - - return $data; - } - - /** - * @param string[] $texts - * @return string - */ - private function textsToBinary(array $texts) - { - $data = ''; - foreach ($texts as $text) { - $data .= \chr(\strlen($text)) . $text; - } - return $data; - } - - /** - * @param string $host - * @return string - */ - private function domainNameToBinary($host) - { - if ($host === '') { - return "\0"; - } - - // break up domain name at each dot that is not preceeded by a backslash (escaped notation) - return $this->textsToBinary( - \array_map( - 'stripcslashes', - \preg_split( - '/(?parse($data, 0); - if ($message === null) { - throw new InvalidArgumentException('Unable to parse binary message'); - } - - return $message; - } - - /** - * @param string $data - * @param int $consumed - * @return ?Message - */ - private function parse($data, $consumed) - { - if (!isset($data[12 - 1])) { - return null; - } - - list($id, $fields, $qdCount, $anCount, $nsCount, $arCount) = array_values(unpack('n*', substr($data, 0, 12))); - - $message = new Message(); - $message->id = $id; - $message->rcode = $fields & 0xf; - $message->ra = (($fields >> 7) & 1) === 1; - $message->rd = (($fields >> 8) & 1) === 1; - $message->tc = (($fields >> 9) & 1) === 1; - $message->aa = (($fields >> 10) & 1) === 1; - $message->opcode = ($fields >> 11) & 0xf; - $message->qr = (($fields >> 15) & 1) === 1; - $consumed += 12; - - // parse all questions - for ($i = $qdCount; $i > 0; --$i) { - list($question, $consumed) = $this->parseQuestion($data, $consumed); - if ($question === null) { - return null; - } else { - $message->questions[] = $question; - } - } - - // parse all answer records - for ($i = $anCount; $i > 0; --$i) { - list($record, $consumed) = $this->parseRecord($data, $consumed); - if ($record === null) { - return null; - } else { - $message->answers[] = $record; - } - } - - // parse all authority records - for ($i = $nsCount; $i > 0; --$i) { - list($record, $consumed) = $this->parseRecord($data, $consumed); - if ($record === null) { - return null; - } else { - $message->authority[] = $record; - } - } - - // parse all additional records - for ($i = $arCount; $i > 0; --$i) { - list($record, $consumed) = $this->parseRecord($data, $consumed); - if ($record === null) { - return null; - } else { - $message->additional[] = $record; - } - } - - return $message; - } - - /** - * @param string $data - * @param int $consumed - * @return array - */ - private function parseQuestion($data, $consumed) - { - list($labels, $consumed) = $this->readLabels($data, $consumed); - - if ($labels === null || !isset($data[$consumed + 4 - 1])) { - return array(null, null); - } - - list($type, $class) = array_values(unpack('n*', substr($data, $consumed, 4))); - $consumed += 4; - - return array( - new Query( - implode('.', $labels), - $type, - $class - ), - $consumed - ); - } - - /** - * @param string $data - * @param int $consumed - * @return array An array with a parsed Record on success or array with null if data is invalid/incomplete - */ - private function parseRecord($data, $consumed) - { - list($name, $consumed) = $this->readDomain($data, $consumed); - - if ($name === null || !isset($data[$consumed + 10 - 1])) { - return array(null, null); - } - - list($type, $class) = array_values(unpack('n*', substr($data, $consumed, 4))); - $consumed += 4; - - list($ttl) = array_values(unpack('N', substr($data, $consumed, 4))); - $consumed += 4; - - // TTL is a UINT32 that must not have most significant bit set for BC reasons - if ($ttl < 0 || $ttl >= 1 << 31) { - $ttl = 0; - } - - list($rdLength) = array_values(unpack('n', substr($data, $consumed, 2))); - $consumed += 2; - - if (!isset($data[$consumed + $rdLength - 1])) { - return array(null, null); - } - - $rdata = null; - $expected = $consumed + $rdLength; - - if (Message::TYPE_A === $type) { - if ($rdLength === 4) { - $rdata = inet_ntop(substr($data, $consumed, $rdLength)); - $consumed += $rdLength; - } - } elseif (Message::TYPE_AAAA === $type) { - if ($rdLength === 16) { - $rdata = inet_ntop(substr($data, $consumed, $rdLength)); - $consumed += $rdLength; - } - } elseif (Message::TYPE_CNAME === $type || Message::TYPE_PTR === $type || Message::TYPE_NS === $type) { - list($rdata, $consumed) = $this->readDomain($data, $consumed); - } elseif (Message::TYPE_TXT === $type || Message::TYPE_SPF === $type) { - $rdata = array(); - while ($consumed < $expected) { - $len = ord($data[$consumed]); - $rdata[] = (string)substr($data, $consumed + 1, $len); - $consumed += $len + 1; - } - } elseif (Message::TYPE_MX === $type) { - if ($rdLength > 2) { - list($priority) = array_values(unpack('n', substr($data, $consumed, 2))); - list($target, $consumed) = $this->readDomain($data, $consumed + 2); - - $rdata = array( - 'priority' => $priority, - 'target' => $target - ); - } - } elseif (Message::TYPE_SRV === $type) { - if ($rdLength > 6) { - list($priority, $weight, $port) = array_values(unpack('n*', substr($data, $consumed, 6))); - list($target, $consumed) = $this->readDomain($data, $consumed + 6); - - $rdata = array( - 'priority' => $priority, - 'weight' => $weight, - 'port' => $port, - 'target' => $target - ); - } - } elseif (Message::TYPE_SSHFP === $type) { - if ($rdLength > 2) { - list($algorithm, $hash) = \array_values(\unpack('C*', \substr($data, $consumed, 2))); - $fingerprint = \bin2hex(\substr($data, $consumed + 2, $rdLength - 2)); - $consumed += $rdLength; - - $rdata = array( - 'algorithm' => $algorithm, - 'type' => $hash, - 'fingerprint' => $fingerprint - ); - } - } elseif (Message::TYPE_SOA === $type) { - list($mname, $consumed) = $this->readDomain($data, $consumed); - list($rname, $consumed) = $this->readDomain($data, $consumed); - - if ($mname !== null && $rname !== null && isset($data[$consumed + 20 - 1])) { - list($serial, $refresh, $retry, $expire, $minimum) = array_values(unpack('N*', substr($data, $consumed, 20))); - $consumed += 20; - - $rdata = array( - 'mname' => $mname, - 'rname' => $rname, - 'serial' => $serial, - 'refresh' => $refresh, - 'retry' => $retry, - 'expire' => $expire, - 'minimum' => $minimum - ); - } - } elseif (Message::TYPE_OPT === $type) { - $rdata = array(); - while (isset($data[$consumed + 4 - 1])) { - list($code, $length) = array_values(unpack('n*', substr($data, $consumed, 4))); - $value = (string) substr($data, $consumed + 4, $length); - if ($code === Message::OPT_TCP_KEEPALIVE && $value === '') { - $value = null; - } elseif ($code === Message::OPT_TCP_KEEPALIVE && $length === 2) { - list($value) = array_values(unpack('n', $value)); - $value = round($value * 0.1, 1); - } elseif ($code === Message::OPT_TCP_KEEPALIVE) { - break; - } - $rdata[$code] = $value; - $consumed += 4 + $length; - } - } elseif (Message::TYPE_CAA === $type) { - if ($rdLength > 3) { - list($flag, $tagLength) = array_values(unpack('C*', substr($data, $consumed, 2))); - - if ($tagLength > 0 && $rdLength - 2 - $tagLength > 0) { - $tag = substr($data, $consumed + 2, $tagLength); - $value = substr($data, $consumed + 2 + $tagLength, $rdLength - 2 - $tagLength); - $consumed += $rdLength; - - $rdata = array( - 'flag' => $flag, - 'tag' => $tag, - 'value' => $value - ); - } - } - } else { - // unknown types simply parse rdata as an opaque binary string - $rdata = substr($data, $consumed, $rdLength); - $consumed += $rdLength; - } - - // ensure parsing record data consumes expact number of bytes indicated in record length - if ($consumed !== $expected || $rdata === null) { - return array(null, null); - } - - return array( - new Record($name, $type, $class, $ttl, $rdata), - $consumed - ); - } - - private function readDomain($data, $consumed) - { - list ($labels, $consumed) = $this->readLabels($data, $consumed); - - if ($labels === null) { - return array(null, null); - } - - // use escaped notation for each label part, then join using dots - return array( - \implode( - '.', - \array_map( - function ($label) { - return \addcslashes($label, "\0..\40.\177"); - }, - $labels - ) - ), - $consumed - ); - } - - /** - * @param string $data - * @param int $consumed - * @param int $compressionDepth maximum depth for compressed labels to avoid unreasonable recursion - * @return array - */ - private function readLabels($data, $consumed, $compressionDepth = 127) - { - $labels = array(); - - while (true) { - if (!isset($data[$consumed])) { - return array(null, null); - } - - $length = \ord($data[$consumed]); - - // end of labels reached - if ($length === 0) { - $consumed += 1; - break; - } - - // first two bits set? this is a compressed label (14 bit pointer offset) - if (($length & 0xc0) === 0xc0 && isset($data[$consumed + 1]) && $compressionDepth) { - $offset = ($length & ~0xc0) << 8 | \ord($data[$consumed + 1]); - if ($offset >= $consumed) { - return array(null, null); - } - - $consumed += 2; - list($newLabels) = $this->readLabels($data, $offset, $compressionDepth - 1); - - if ($newLabels === null) { - return array(null, null); - } - - $labels = array_merge($labels, $newLabels); - break; - } - - // length MUST be 0-63 (6 bits only) and data has to be large enough - if ($length & 0xc0 || !isset($data[$consumed + $length - 1])) { - return array(null, null); - } - - $labels[] = substr($data, $consumed + 1, $length); - $consumed += $length + 1; - } - - return array($labels, $consumed); - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/CachingExecutor.php b/v3_ci4/vendor/react/dns/src/Query/CachingExecutor.php deleted file mode 100644 index e530b24..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/CachingExecutor.php +++ /dev/null @@ -1,88 +0,0 @@ -executor = $executor; - $this->cache = $cache; - } - - public function query(Query $query) - { - $id = $query->name . ':' . $query->type . ':' . $query->class; - $cache = $this->cache; - $that = $this; - $executor = $this->executor; - - $pending = $cache->get($id); - return new Promise(function ($resolve, $reject) use ($query, $id, $cache, $executor, &$pending, $that) { - $pending->then( - function ($message) use ($query, $id, $cache, $executor, &$pending, $that) { - // return cached response message on cache hit - if ($message !== null) { - return $message; - } - - // perform DNS lookup if not already cached - return $pending = $executor->query($query)->then( - function (Message $message) use ($cache, $id, $that) { - // DNS response message received => store in cache when not truncated and return - if (!$message->tc) { - $cache->set($id, $message, $that->ttl($message)); - } - - return $message; - } - ); - } - )->then($resolve, function ($e) use ($reject, &$pending) { - $reject($e); - $pending = null; - }); - }, function ($_, $reject) use (&$pending, $query) { - $reject(new \RuntimeException('DNS query for ' . $query->describe() . ' has been cancelled')); - $pending->cancel(); - $pending = null; - }); - } - - /** - * @param Message $message - * @return int - * @internal - */ - public function ttl(Message $message) - { - // select TTL from answers (should all be the same), use smallest value if available - // @link https://tools.ietf.org/html/rfc2181#section-5.2 - $ttl = null; - foreach ($message->answers as $answer) { - if ($ttl === null || $answer->ttl < $ttl) { - $ttl = $answer->ttl; - } - } - - if ($ttl === null) { - $ttl = self::TTL; - } - - return $ttl; - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/CancellationException.php b/v3_ci4/vendor/react/dns/src/Query/CancellationException.php deleted file mode 100644 index 5432b36..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/CancellationException.php +++ /dev/null @@ -1,7 +0,0 @@ -executor = $base; - } - - public function query(Query $query) - { - $key = $this->serializeQueryToIdentity($query); - if (isset($this->pending[$key])) { - // same query is already pending, so use shared reference to pending query - $promise = $this->pending[$key]; - ++$this->counts[$key]; - } else { - // no such query pending, so start new query and keep reference until it's fulfilled or rejected - $promise = $this->executor->query($query); - $this->pending[$key] = $promise; - $this->counts[$key] = 1; - - $pending =& $this->pending; - $counts =& $this->counts; - $promise->then(function () use ($key, &$pending, &$counts) { - unset($pending[$key], $counts[$key]); - }, function () use ($key, &$pending, &$counts) { - unset($pending[$key], $counts[$key]); - }); - } - - // Return a child promise awaiting the pending query. - // Cancelling this child promise should only cancel the pending query - // when no other child promise is awaiting the same query. - $pending =& $this->pending; - $counts =& $this->counts; - return new Promise(function ($resolve, $reject) use ($promise) { - $promise->then($resolve, $reject); - }, function () use (&$promise, $key, $query, &$pending, &$counts) { - if (--$counts[$key] < 1) { - unset($pending[$key], $counts[$key]); - $promise->cancel(); - $promise = null; - } - throw new \RuntimeException('DNS query for ' . $query->describe() . ' has been cancelled'); - }); - } - - private function serializeQueryToIdentity(Query $query) - { - return sprintf('%s:%s:%s', $query->name, $query->type, $query->class); - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/ExecutorInterface.php b/v3_ci4/vendor/react/dns/src/Query/ExecutorInterface.php deleted file mode 100644 index 0bc3945..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/ExecutorInterface.php +++ /dev/null @@ -1,43 +0,0 @@ -query($query)->then( - * function (React\Dns\Model\Message $response) { - * // response message successfully received - * var_dump($response->rcode, $response->answers); - * }, - * function (Exception $error) { - * // failed to query due to $error - * } - * ); - * ``` - * - * The returned Promise MUST be implemented in such a way that it can be - * cancelled when it is still pending. Cancelling a pending promise MUST - * reject its value with an Exception. It SHOULD clean up any underlying - * resources and references as applicable. - * - * ```php - * $promise = $executor->query($query); - * - * $promise->cancel(); - * ``` - * - * @param Query $query - * @return \React\Promise\PromiseInterface<\React\Dns\Model\Message> - * resolves with response message on success or rejects with an Exception on error - */ - public function query(Query $query); -} diff --git a/v3_ci4/vendor/react/dns/src/Query/FallbackExecutor.php b/v3_ci4/vendor/react/dns/src/Query/FallbackExecutor.php deleted file mode 100644 index 83bd360..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/FallbackExecutor.php +++ /dev/null @@ -1,49 +0,0 @@ -executor = $executor; - $this->fallback = $fallback; - } - - public function query(Query $query) - { - $cancelled = false; - $fallback = $this->fallback; - $promise = $this->executor->query($query); - - return new Promise(function ($resolve, $reject) use (&$promise, $fallback, $query, &$cancelled) { - $promise->then($resolve, function (\Exception $e1) use ($fallback, $query, $resolve, $reject, &$cancelled, &$promise) { - // reject if primary resolution rejected due to cancellation - if ($cancelled) { - $reject($e1); - return; - } - - // start fallback query if primary query rejected - $promise = $fallback->query($query)->then($resolve, function (\Exception $e2) use ($e1, $reject) { - $append = $e2->getMessage(); - if (($pos = strpos($append, ':')) !== false) { - $append = substr($append, $pos + 2); - } - - // reject with combined error message if both queries fail - $reject(new \RuntimeException($e1->getMessage() . '. ' . $append)); - }); - }); - }, function () use (&$promise, &$cancelled) { - // cancel pending query (primary or fallback) - $cancelled = true; - $promise->cancel(); - }); - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/HostsFileExecutor.php b/v3_ci4/vendor/react/dns/src/Query/HostsFileExecutor.php deleted file mode 100644 index d6e2d93..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/HostsFileExecutor.php +++ /dev/null @@ -1,89 +0,0 @@ -hosts = $hosts; - $this->fallback = $fallback; - } - - public function query(Query $query) - { - if ($query->class === Message::CLASS_IN && ($query->type === Message::TYPE_A || $query->type === Message::TYPE_AAAA)) { - // forward lookup for type A or AAAA - $records = array(); - $expectsColon = $query->type === Message::TYPE_AAAA; - foreach ($this->hosts->getIpsForHost($query->name) as $ip) { - // ensure this is an IPv4/IPV6 address according to query type - if ((strpos($ip, ':') !== false) === $expectsColon) { - $records[] = new Record($query->name, $query->type, $query->class, 0, $ip); - } - } - - if ($records) { - return Promise\resolve( - Message::createResponseWithAnswersForQuery($query, $records) - ); - } - } elseif ($query->class === Message::CLASS_IN && $query->type === Message::TYPE_PTR) { - // reverse lookup: extract IPv4 or IPv6 from special `.arpa` domain - $ip = $this->getIpFromHost($query->name); - - if ($ip !== null) { - $records = array(); - foreach ($this->hosts->getHostsForIp($ip) as $host) { - $records[] = new Record($query->name, $query->type, $query->class, 0, $host); - } - - if ($records) { - return Promise\resolve( - Message::createResponseWithAnswersForQuery($query, $records) - ); - } - } - } - - return $this->fallback->query($query); - } - - private function getIpFromHost($host) - { - if (substr($host, -13) === '.in-addr.arpa') { - // IPv4: read as IP and reverse bytes - $ip = @inet_pton(substr($host, 0, -13)); - if ($ip === false || isset($ip[4])) { - return null; - } - - return inet_ntop(strrev($ip)); - } elseif (substr($host, -9) === '.ip6.arpa') { - // IPv6: replace dots, reverse nibbles and interpret as hexadecimal string - $ip = @inet_ntop(pack('H*', strrev(str_replace('.', '', substr($host, 0, -9))))); - if ($ip === false) { - return null; - } - - return $ip; - } else { - return null; - } - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/Query.php b/v3_ci4/vendor/react/dns/src/Query/Query.php deleted file mode 100644 index a3dcfb5..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/Query.php +++ /dev/null @@ -1,69 +0,0 @@ -name = $name; - $this->type = $type; - $this->class = $class; - } - - /** - * Describes the hostname and query type/class for this query - * - * The output format is supposed to be human readable and is subject to change. - * The format is inspired by RFC 3597 when handling unkown types/classes. - * - * @return string "example.com (A)" or "example.com (CLASS0 TYPE1234)" - * @link https://tools.ietf.org/html/rfc3597 - */ - public function describe() - { - $class = $this->class !== Message::CLASS_IN ? 'CLASS' . $this->class . ' ' : ''; - - $type = 'TYPE' . $this->type; - $ref = new \ReflectionClass('React\Dns\Model\Message'); - foreach ($ref->getConstants() as $name => $value) { - if ($value === $this->type && \strpos($name, 'TYPE_') === 0) { - $type = \substr($name, 5); - break; - } - } - - return $this->name . ' (' . $class . $type . ')'; - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/RetryExecutor.php b/v3_ci4/vendor/react/dns/src/Query/RetryExecutor.php deleted file mode 100644 index 11c123b..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/RetryExecutor.php +++ /dev/null @@ -1,87 +0,0 @@ -executor = $executor; - $this->retries = $retries; - } - - public function query(Query $query) - { - return $this->tryQuery($query, $this->retries); - } - - public function tryQuery(Query $query, $retries) - { - $deferred = new Deferred(function () use (&$promise) { - if ($promise instanceof PromiseInterface && \method_exists($promise, 'cancel')) { - $promise->cancel(); - } - }); - - $success = function ($value) use ($deferred, &$errorback) { - $errorback = null; - $deferred->resolve($value); - }; - - $executor = $this->executor; - $errorback = function ($e) use ($deferred, &$promise, $query, $success, &$errorback, &$retries, $executor) { - if (!$e instanceof TimeoutException) { - $errorback = null; - $deferred->reject($e); - } elseif ($retries <= 0) { - $errorback = null; - $deferred->reject($e = new \RuntimeException( - 'DNS query for ' . $query->describe() . ' failed: too many retries', - 0, - $e - )); - - // avoid garbage references by replacing all closures in call stack. - // what a lovely piece of code! - $r = new \ReflectionProperty('Exception', 'trace'); - if (\PHP_VERSION_ID < 80100) { - $r->setAccessible(true); - } - $trace = $r->getValue($e); - - // Exception trace arguments are not available on some PHP 7.4 installs - // @codeCoverageIgnoreStart - foreach ($trace as $ti => $one) { - if (isset($one['args'])) { - foreach ($one['args'] as $ai => $arg) { - if ($arg instanceof \Closure) { - $trace[$ti]['args'][$ai] = 'Object(' . \get_class($arg) . ')'; - } - } - } - } - // @codeCoverageIgnoreEnd - $r->setValue($e, $trace); - } else { - --$retries; - $promise = $executor->query($query)->then( - $success, - $errorback - ); - } - }; - - $promise = $this->executor->query($query)->then( - $success, - $errorback - ); - - return $deferred->promise(); - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/SelectiveTransportExecutor.php b/v3_ci4/vendor/react/dns/src/Query/SelectiveTransportExecutor.php deleted file mode 100644 index 0f0ca5d..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/SelectiveTransportExecutor.php +++ /dev/null @@ -1,85 +0,0 @@ -query( - * new Query($name, Message::TYPE_AAAA, Message::CLASS_IN) - * )->then(function (Message $message) { - * foreach ($message->answers as $answer) { - * echo 'IPv6: ' . $answer->data . PHP_EOL; - * } - * }, 'printf'); - * ``` - * - * Note that this executor only implements the logic to select the correct - * transport for the given DNS query. Implementing the correct transport logic, - * implementing timeouts and any retry logic is left up to the given executors, - * see also [`UdpTransportExecutor`](#udptransportexecutor) and - * [`TcpTransportExecutor`](#tcptransportexecutor) for more details. - * - * Note that this executor is entirely async and as such allows you to execute - * any number of queries concurrently. You should probably limit the number of - * concurrent queries in your application or you're very likely going to face - * rate limitations and bans on the resolver end. For many common applications, - * you may want to avoid sending the same query multiple times when the first - * one is still pending, so you will likely want to use this in combination with - * a `CoopExecutor` like this: - * - * ```php - * $executor = new CoopExecutor( - * new SelectiveTransportExecutor( - * $datagramExecutor, - * $streamExecutor - * ) - * ); - * ``` - */ -class SelectiveTransportExecutor implements ExecutorInterface -{ - private $datagramExecutor; - private $streamExecutor; - - public function __construct(ExecutorInterface $datagramExecutor, ExecutorInterface $streamExecutor) - { - $this->datagramExecutor = $datagramExecutor; - $this->streamExecutor = $streamExecutor; - } - - public function query(Query $query) - { - $stream = $this->streamExecutor; - $pending = $this->datagramExecutor->query($query); - - return new Promise(function ($resolve, $reject) use (&$pending, $stream, $query) { - $pending->then( - $resolve, - function ($e) use (&$pending, $stream, $query, $resolve, $reject) { - if ($e->getCode() === (\defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90)) { - $pending = $stream->query($query)->then($resolve, $reject); - } else { - $reject($e); - } - } - ); - }, function () use (&$pending) { - $pending->cancel(); - $pending = null; - }); - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/TcpTransportExecutor.php b/v3_ci4/vendor/react/dns/src/Query/TcpTransportExecutor.php deleted file mode 100644 index 669fd01..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/TcpTransportExecutor.php +++ /dev/null @@ -1,382 +0,0 @@ -query( - * new Query($name, Message::TYPE_AAAA, Message::CLASS_IN) - * )->then(function (Message $message) { - * foreach ($message->answers as $answer) { - * echo 'IPv6: ' . $answer->data . PHP_EOL; - * } - * }, 'printf'); - * ``` - * - * See also [example #92](examples). - * - * Note that this executor does not implement a timeout, so you will very likely - * want to use this in combination with a `TimeoutExecutor` like this: - * - * ```php - * $executor = new TimeoutExecutor( - * new TcpTransportExecutor($nameserver), - * 3.0 - * ); - * ``` - * - * Unlike the `UdpTransportExecutor`, this class uses a reliable TCP/IP - * transport, so you do not necessarily have to implement any retry logic. - * - * Note that this executor is entirely async and as such allows you to execute - * queries concurrently. The first query will establish a TCP/IP socket - * connection to the DNS server which will be kept open for a short period. - * Additional queries will automatically reuse this existing socket connection - * to the DNS server, will pipeline multiple requests over this single - * connection and will keep an idle connection open for a short period. The - * initial TCP/IP connection overhead may incur a slight delay if you only send - * occasional queries – when sending a larger number of concurrent queries over - * an existing connection, it becomes increasingly more efficient and avoids - * creating many concurrent sockets like the UDP-based executor. You may still - * want to limit the number of (concurrent) queries in your application or you - * may be facing rate limitations and bans on the resolver end. For many common - * applications, you may want to avoid sending the same query multiple times - * when the first one is still pending, so you will likely want to use this in - * combination with a `CoopExecutor` like this: - * - * ```php - * $executor = new CoopExecutor( - * new TimeoutExecutor( - * new TcpTransportExecutor($nameserver), - * 3.0 - * ) - * ); - * ``` - * - * > Internally, this class uses PHP's TCP/IP sockets and does not take advantage - * of [react/socket](https://github.com/reactphp/socket) purely for - * organizational reasons to avoid a cyclic dependency between the two - * packages. Higher-level components should take advantage of the Socket - * component instead of reimplementing this socket logic from scratch. - */ -class TcpTransportExecutor implements ExecutorInterface -{ - private $nameserver; - private $loop; - private $parser; - private $dumper; - - /** - * @var ?resource - */ - private $socket; - - /** - * @var Deferred[] - */ - private $pending = array(); - - /** - * @var string[] - */ - private $names = array(); - - /** - * Maximum idle time when socket is current unused (i.e. no pending queries outstanding) - * - * If a new query is to be sent during the idle period, we can reuse the - * existing socket without having to wait for a new socket connection. - * This uses a rather small, hard-coded value to not keep any unneeded - * sockets open and to not keep the loop busy longer than needed. - * - * A future implementation may take advantage of `edns-tcp-keepalive` to keep - * the socket open for longer periods. This will likely require explicit - * configuration because this may consume additional resources and also keep - * the loop busy for longer than expected in some applications. - * - * @var float - * @link https://tools.ietf.org/html/rfc7766#section-6.2.1 - * @link https://tools.ietf.org/html/rfc7828 - */ - private $idlePeriod = 0.001; - - /** - * @var ?\React\EventLoop\TimerInterface - */ - private $idleTimer; - - private $writeBuffer = ''; - private $writePending = false; - - private $readBuffer = ''; - private $readPending = false; - - /** @var string */ - private $readChunk = 0xffff; - - /** - * @param string $nameserver - * @param ?LoopInterface $loop - */ - public function __construct($nameserver, $loop = null) - { - if (\strpos($nameserver, '[') === false && \substr_count($nameserver, ':') >= 2 && \strpos($nameserver, '://') === false) { - // several colons, but not enclosed in square brackets => enclose IPv6 address in square brackets - $nameserver = '[' . $nameserver . ']'; - } - - $parts = \parse_url((\strpos($nameserver, '://') === false ? 'tcp://' : '') . $nameserver); - if (!isset($parts['scheme'], $parts['host']) || $parts['scheme'] !== 'tcp' || @\inet_pton(\trim($parts['host'], '[]')) === false) { - throw new \InvalidArgumentException('Invalid nameserver address given'); - } - - if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #2 ($loop) expected null|React\EventLoop\LoopInterface'); - } - - $this->nameserver = 'tcp://' . $parts['host'] . ':' . (isset($parts['port']) ? $parts['port'] : 53); - $this->loop = $loop ?: Loop::get(); - $this->parser = new Parser(); - $this->dumper = new BinaryDumper(); - } - - public function query(Query $query) - { - $request = Message::createRequestForQuery($query); - - // keep shuffing message ID to avoid using the same message ID for two pending queries at the same time - while (isset($this->pending[$request->id])) { - $request->id = \mt_rand(0, 0xffff); // @codeCoverageIgnore - } - - $queryData = $this->dumper->toBinary($request); - $length = \strlen($queryData); - if ($length > 0xffff) { - return \React\Promise\reject(new \RuntimeException( - 'DNS query for ' . $query->describe() . ' failed: Query too large for TCP transport' - )); - } - - $queryData = \pack('n', $length) . $queryData; - - if ($this->socket === null) { - // create async TCP/IP connection (may take a while) - $socket = @\stream_socket_client($this->nameserver, $errno, $errstr, 0, \STREAM_CLIENT_CONNECT | \STREAM_CLIENT_ASYNC_CONNECT); - if ($socket === false) { - return \React\Promise\reject(new \RuntimeException( - 'DNS query for ' . $query->describe() . ' failed: Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', - $errno - )); - } - - // set socket to non-blocking and wait for it to become writable (connection success/rejected) - \stream_set_blocking($socket, false); - if (\function_exists('stream_set_chunk_size')) { - \stream_set_chunk_size($socket, $this->readChunk); // @codeCoverageIgnore - } - $this->socket = $socket; - } - - if ($this->idleTimer !== null) { - $this->loop->cancelTimer($this->idleTimer); - $this->idleTimer = null; - } - - // wait for socket to become writable to actually write out data - $this->writeBuffer .= $queryData; - if (!$this->writePending) { - $this->writePending = true; - $this->loop->addWriteStream($this->socket, array($this, 'handleWritable')); - } - - $names =& $this->names; - $that = $this; - $deferred = new Deferred(function () use ($that, &$names, $request) { - // remove from list of pending names, but remember pending query - $name = $names[$request->id]; - unset($names[$request->id]); - $that->checkIdle(); - - throw new CancellationException('DNS query for ' . $name . ' has been cancelled'); - }); - - $this->pending[$request->id] = $deferred; - $this->names[$request->id] = $query->describe(); - - return $deferred->promise(); - } - - /** - * @internal - */ - public function handleWritable() - { - if ($this->readPending === false) { - $name = @\stream_socket_get_name($this->socket, true); - if ($name === false) { - // Connection failed? Check socket error if available for underlying errno/errstr. - // @codeCoverageIgnoreStart - if (\function_exists('socket_import_stream')) { - $socket = \socket_import_stream($this->socket); - $errno = \socket_get_option($socket, \SOL_SOCKET, \SO_ERROR); - $errstr = \socket_strerror($errno); - } else { - $errno = \defined('SOCKET_ECONNREFUSED') ? \SOCKET_ECONNREFUSED : 111; - $errstr = 'Connection refused'; - } - // @codeCoverageIgnoreEnd - - $this->closeError('Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno); - return; - } - - $this->readPending = true; - $this->loop->addReadStream($this->socket, array($this, 'handleRead')); - } - - $errno = 0; - $errstr = ''; - \set_error_handler(function ($_, $error) use (&$errno, &$errstr) { - // Match errstr from PHP's warning message. - // fwrite(): Send of 327712 bytes failed with errno=32 Broken pipe - \preg_match('/errno=(\d+) (.+)/', $error, $m); - $errno = isset($m[1]) ? (int) $m[1] : 0; - $errstr = isset($m[2]) ? $m[2] : $error; - }); - - $written = \fwrite($this->socket, $this->writeBuffer); - - \restore_error_handler(); - - if ($written === false || $written === 0) { - $this->closeError( - 'Unable to send query to DNS server ' . $this->nameserver . ' (' . $errstr . ')', - $errno - ); - return; - } - - if (isset($this->writeBuffer[$written])) { - $this->writeBuffer = \substr($this->writeBuffer, $written); - } else { - $this->loop->removeWriteStream($this->socket); - $this->writePending = false; - $this->writeBuffer = ''; - } - } - - /** - * @internal - */ - public function handleRead() - { - // read one chunk of data from the DNS server - // any error is fatal, this is a stream of TCP/IP data - $chunk = @\fread($this->socket, $this->readChunk); - if ($chunk === false || $chunk === '') { - $this->closeError('Connection to DNS server ' . $this->nameserver . ' lost'); - return; - } - - // reassemble complete message by concatenating all chunks. - $this->readBuffer .= $chunk; - - // response message header contains at least 12 bytes - while (isset($this->readBuffer[11])) { - // read response message length from first 2 bytes and ensure we have length + data in buffer - list(, $length) = \unpack('n', $this->readBuffer); - if (!isset($this->readBuffer[$length + 1])) { - return; - } - - $data = \substr($this->readBuffer, 2, $length); - $this->readBuffer = (string)substr($this->readBuffer, $length + 2); - - try { - $response = $this->parser->parseMessage($data); - } catch (\Exception $e) { - // reject all pending queries if we received an invalid message from remote server - $this->closeError('Invalid message received from DNS server ' . $this->nameserver); - return; - } - - // reject all pending queries if we received an unexpected response ID or truncated response - if (!isset($this->pending[$response->id]) || $response->tc) { - $this->closeError('Invalid response message received from DNS server ' . $this->nameserver); - return; - } - - $deferred = $this->pending[$response->id]; - unset($this->pending[$response->id], $this->names[$response->id]); - - $deferred->resolve($response); - - $this->checkIdle(); - } - } - - /** - * @internal - * @param string $reason - * @param int $code - */ - public function closeError($reason, $code = 0) - { - $this->readBuffer = ''; - if ($this->readPending) { - $this->loop->removeReadStream($this->socket); - $this->readPending = false; - } - - $this->writeBuffer = ''; - if ($this->writePending) { - $this->loop->removeWriteStream($this->socket); - $this->writePending = false; - } - - if ($this->idleTimer !== null) { - $this->loop->cancelTimer($this->idleTimer); - $this->idleTimer = null; - } - - @\fclose($this->socket); - $this->socket = null; - - foreach ($this->names as $id => $name) { - $this->pending[$id]->reject(new \RuntimeException( - 'DNS query for ' . $name . ' failed: ' . $reason, - $code - )); - } - $this->pending = $this->names = array(); - } - - /** - * @internal - */ - public function checkIdle() - { - if ($this->idleTimer === null && !$this->names) { - $that = $this; - $this->idleTimer = $this->loop->addTimer($this->idlePeriod, function () use ($that) { - $that->closeError('Idle timeout'); - }); - } - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/TimeoutException.php b/v3_ci4/vendor/react/dns/src/Query/TimeoutException.php deleted file mode 100644 index 109b0a9..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/TimeoutException.php +++ /dev/null @@ -1,7 +0,0 @@ -executor = $executor; - $this->loop = $loop ?: Loop::get(); - $this->timeout = $timeout; - } - - public function query(Query $query) - { - $promise = $this->executor->query($query); - - $loop = $this->loop; - $time = $this->timeout; - return new Promise(function ($resolve, $reject) use ($loop, $time, $promise, $query) { - $timer = null; - $promise = $promise->then(function ($v) use (&$timer, $loop, $resolve) { - if ($timer) { - $loop->cancelTimer($timer); - } - $timer = false; - $resolve($v); - }, function ($v) use (&$timer, $loop, $reject) { - if ($timer) { - $loop->cancelTimer($timer); - } - $timer = false; - $reject($v); - }); - - // promise already resolved => no need to start timer - if ($timer === false) { - return; - } - - // start timeout timer which will cancel the pending promise - $timer = $loop->addTimer($time, function () use ($time, &$promise, $reject, $query) { - $reject(new TimeoutException( - 'DNS query for ' . $query->describe() . ' timed out' - )); - - // Cancel pending query to clean up any underlying resources and references. - // Avoid garbage references in call stack by passing pending promise by reference. - assert(\method_exists($promise, 'cancel')); - $promise->cancel(); - $promise = null; - }); - }, function () use (&$promise) { - // Cancelling this promise will cancel the pending query, thus triggering the rejection logic above. - // Avoid garbage references in call stack by passing pending promise by reference. - assert(\method_exists($promise, 'cancel')); - $promise->cancel(); - $promise = null; - }); - } -} diff --git a/v3_ci4/vendor/react/dns/src/Query/UdpTransportExecutor.php b/v3_ci4/vendor/react/dns/src/Query/UdpTransportExecutor.php deleted file mode 100644 index a8cbfaf..0000000 --- a/v3_ci4/vendor/react/dns/src/Query/UdpTransportExecutor.php +++ /dev/null @@ -1,221 +0,0 @@ -query( - * new Query($name, Message::TYPE_AAAA, Message::CLASS_IN) - * )->then(function (Message $message) { - * foreach ($message->answers as $answer) { - * echo 'IPv6: ' . $answer->data . PHP_EOL; - * } - * }, 'printf'); - * ``` - * - * See also the [fourth example](examples). - * - * Note that this executor does not implement a timeout, so you will very likely - * want to use this in combination with a `TimeoutExecutor` like this: - * - * ```php - * $executor = new TimeoutExecutor( - * new UdpTransportExecutor($nameserver), - * 3.0 - * ); - * ``` - * - * Also note that this executor uses an unreliable UDP transport and that it - * does not implement any retry logic, so you will likely want to use this in - * combination with a `RetryExecutor` like this: - * - * ```php - * $executor = new RetryExecutor( - * new TimeoutExecutor( - * new UdpTransportExecutor($nameserver), - * 3.0 - * ) - * ); - * ``` - * - * Note that this executor is entirely async and as such allows you to execute - * any number of queries concurrently. You should probably limit the number of - * concurrent queries in your application or you're very likely going to face - * rate limitations and bans on the resolver end. For many common applications, - * you may want to avoid sending the same query multiple times when the first - * one is still pending, so you will likely want to use this in combination with - * a `CoopExecutor` like this: - * - * ```php - * $executor = new CoopExecutor( - * new RetryExecutor( - * new TimeoutExecutor( - * new UdpTransportExecutor($nameserver), - * 3.0 - * ) - * ) - * ); - * ``` - * - * > Internally, this class uses PHP's UDP sockets and does not take advantage - * of [react/datagram](https://github.com/reactphp/datagram) purely for - * organizational reasons to avoid a cyclic dependency between the two - * packages. Higher-level components should take advantage of the Datagram - * component instead of reimplementing this socket logic from scratch. - */ -final class UdpTransportExecutor implements ExecutorInterface -{ - private $nameserver; - private $loop; - private $parser; - private $dumper; - - /** - * maximum UDP packet size to send and receive - * - * @var int - */ - private $maxPacketSize = 512; - - /** - * @param string $nameserver - * @param ?LoopInterface $loop - */ - public function __construct($nameserver, $loop = null) - { - if (\strpos($nameserver, '[') === false && \substr_count($nameserver, ':') >= 2 && \strpos($nameserver, '://') === false) { - // several colons, but not enclosed in square brackets => enclose IPv6 address in square brackets - $nameserver = '[' . $nameserver . ']'; - } - - $parts = \parse_url((\strpos($nameserver, '://') === false ? 'udp://' : '') . $nameserver); - if (!isset($parts['scheme'], $parts['host']) || $parts['scheme'] !== 'udp' || @\inet_pton(\trim($parts['host'], '[]')) === false) { - throw new \InvalidArgumentException('Invalid nameserver address given'); - } - - if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #2 ($loop) expected null|React\EventLoop\LoopInterface'); - } - - $this->nameserver = 'udp://' . $parts['host'] . ':' . (isset($parts['port']) ? $parts['port'] : 53); - $this->loop = $loop ?: Loop::get(); - $this->parser = new Parser(); - $this->dumper = new BinaryDumper(); - } - - public function query(Query $query) - { - $request = Message::createRequestForQuery($query); - - $queryData = $this->dumper->toBinary($request); - if (isset($queryData[$this->maxPacketSize])) { - return \React\Promise\reject(new \RuntimeException( - 'DNS query for ' . $query->describe() . ' failed: Query too large for UDP transport', - \defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90 - )); - } - - // UDP connections are instant, so try connection without a loop or timeout - $errno = 0; - $errstr = ''; - $socket = @\stream_socket_client($this->nameserver, $errno, $errstr, 0); - if ($socket === false) { - return \React\Promise\reject(new \RuntimeException( - 'DNS query for ' . $query->describe() . ' failed: Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', - $errno - )); - } - - // set socket to non-blocking and immediately try to send (fill write buffer) - \stream_set_blocking($socket, false); - - \set_error_handler(function ($_, $error) use (&$errno, &$errstr) { - // Write may potentially fail, but most common errors are already caught by connection check above. - // Among others, macOS is known to report here when trying to send to broadcast address. - // This can also be reproduced by writing data exceeding `stream_set_chunk_size()` to a server refusing UDP data. - // fwrite(): send of 8192 bytes failed with errno=111 Connection refused - \preg_match('/errno=(\d+) (.+)/', $error, $m); - $errno = isset($m[1]) ? (int) $m[1] : 0; - $errstr = isset($m[2]) ? $m[2] : $error; - }); - - $written = \fwrite($socket, $queryData); - - \restore_error_handler(); - - if ($written !== \strlen($queryData)) { - return \React\Promise\reject(new \RuntimeException( - 'DNS query for ' . $query->describe() . ' failed: Unable to send query to DNS server ' . $this->nameserver . ' (' . $errstr . ')', - $errno - )); - } - - $loop = $this->loop; - $deferred = new Deferred(function () use ($loop, $socket, $query) { - // cancellation should remove socket from loop and close socket - $loop->removeReadStream($socket); - \fclose($socket); - - throw new CancellationException('DNS query for ' . $query->describe() . ' has been cancelled'); - }); - - $max = $this->maxPacketSize; - $parser = $this->parser; - $nameserver = $this->nameserver; - $loop->addReadStream($socket, function ($socket) use ($loop, $deferred, $query, $parser, $request, $max, $nameserver) { - // try to read a single data packet from the DNS server - // ignoring any errors, this is uses UDP packets and not a stream of data - $data = @\fread($socket, $max); - if ($data === false) { - return; - } - - try { - $response = $parser->parseMessage($data); - } catch (\Exception $e) { - // ignore and await next if we received an invalid message from remote server - // this may as well be a fake response from an attacker (possible DOS) - return; - } - - // ignore and await next if we received an unexpected response ID - // this may as well be a fake response from an attacker (possible cache poisoning) - if ($response->id !== $request->id) { - return; - } - - // we only react to the first valid message, so remove socket from loop and close - $loop->removeReadStream($socket); - \fclose($socket); - - if ($response->tc) { - $deferred->reject(new \RuntimeException( - 'DNS query for ' . $query->describe() . ' failed: The DNS server ' . $nameserver . ' returned a truncated result for a UDP query', - \defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90 - )); - return; - } - - $deferred->resolve($response); - }); - - return $deferred->promise(); - } -} diff --git a/v3_ci4/vendor/react/dns/src/RecordNotFoundException.php b/v3_ci4/vendor/react/dns/src/RecordNotFoundException.php deleted file mode 100644 index 3b70274..0000000 --- a/v3_ci4/vendor/react/dns/src/RecordNotFoundException.php +++ /dev/null @@ -1,7 +0,0 @@ -decorateHostsFileExecutor($this->createExecutor($config, $loop ?: Loop::get())); - - return new Resolver($executor); - } - - /** - * Creates a cached DNS resolver instance for the given DNS config and cache - * - * As of v1.7.0 it's recommended to pass a `Config` object instead of a - * single nameserver address. If the given config contains more than one DNS - * nameserver, all DNS nameservers will be used in order. The primary DNS - * server will always be used first before falling back to the secondary or - * tertiary DNS server. - * - * @param Config|string $config DNS Config object (recommended) or single nameserver address - * @param ?LoopInterface $loop - * @param ?CacheInterface $cache - * @return \React\Dns\Resolver\ResolverInterface - * @throws \InvalidArgumentException for invalid DNS server address - * @throws \UnderflowException when given DNS Config object has an empty list of nameservers - */ - public function createCached($config, $loop = null, $cache = null) - { - if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #2 ($loop) expected null|React\EventLoop\LoopInterface'); - } - - if ($cache !== null && !$cache instanceof CacheInterface) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #3 ($cache) expected null|React\Cache\CacheInterface'); - } - - // default to keeping maximum of 256 responses in cache unless explicitly given - if (!($cache instanceof CacheInterface)) { - $cache = new ArrayCache(256); - } - - $executor = $this->createExecutor($config, $loop ?: Loop::get()); - $executor = new CachingExecutor($executor, $cache); - $executor = $this->decorateHostsFileExecutor($executor); - - return new Resolver($executor); - } - - /** - * Tries to load the hosts file and decorates the given executor on success - * - * @param ExecutorInterface $executor - * @return ExecutorInterface - * @codeCoverageIgnore - */ - private function decorateHostsFileExecutor(ExecutorInterface $executor) - { - try { - $executor = new HostsFileExecutor( - HostsFile::loadFromPathBlocking(), - $executor - ); - } catch (\RuntimeException $e) { - // ignore this file if it can not be loaded - } - - // Windows does not store localhost in hosts file by default but handles this internally - // To compensate for this, we explicitly use hard-coded defaults for localhost - if (DIRECTORY_SEPARATOR === '\\') { - $executor = new HostsFileExecutor( - new HostsFile("127.0.0.1 localhost\n::1 localhost"), - $executor - ); - } - - return $executor; - } - - /** - * @param Config|string $nameserver - * @param LoopInterface $loop - * @return CoopExecutor - * @throws \InvalidArgumentException for invalid DNS server address - * @throws \UnderflowException when given DNS Config object has an empty list of nameservers - */ - private function createExecutor($nameserver, LoopInterface $loop) - { - if ($nameserver instanceof Config) { - if (!$nameserver->nameservers) { - throw new \UnderflowException('Empty config with no DNS servers'); - } - - // Hard-coded to check up to 3 DNS servers to match default limits in place in most systems (see MAXNS config). - // Note to future self: Recursion isn't too hard, but how deep do we really want to go? - $primary = reset($nameserver->nameservers); - $secondary = next($nameserver->nameservers); - $tertiary = next($nameserver->nameservers); - - if ($tertiary !== false) { - // 3 DNS servers given => nest first with fallback for second and third - return new CoopExecutor( - new RetryExecutor( - new FallbackExecutor( - $this->createSingleExecutor($primary, $loop), - new FallbackExecutor( - $this->createSingleExecutor($secondary, $loop), - $this->createSingleExecutor($tertiary, $loop) - ) - ) - ) - ); - } elseif ($secondary !== false) { - // 2 DNS servers given => fallback from first to second - return new CoopExecutor( - new RetryExecutor( - new FallbackExecutor( - $this->createSingleExecutor($primary, $loop), - $this->createSingleExecutor($secondary, $loop) - ) - ) - ); - } else { - // 1 DNS server given => use single executor - $nameserver = $primary; - } - } - - return new CoopExecutor(new RetryExecutor($this->createSingleExecutor($nameserver, $loop))); - } - - /** - * @param string $nameserver - * @param LoopInterface $loop - * @return ExecutorInterface - * @throws \InvalidArgumentException for invalid DNS server address - */ - private function createSingleExecutor($nameserver, LoopInterface $loop) - { - $parts = \parse_url($nameserver); - - if (isset($parts['scheme']) && $parts['scheme'] === 'tcp') { - $executor = $this->createTcpExecutor($nameserver, $loop); - } elseif (isset($parts['scheme']) && $parts['scheme'] === 'udp') { - $executor = $this->createUdpExecutor($nameserver, $loop); - } else { - $executor = new SelectiveTransportExecutor( - $this->createUdpExecutor($nameserver, $loop), - $this->createTcpExecutor($nameserver, $loop) - ); - } - - return $executor; - } - - /** - * @param string $nameserver - * @param LoopInterface $loop - * @return TimeoutExecutor - * @throws \InvalidArgumentException for invalid DNS server address - */ - private function createTcpExecutor($nameserver, LoopInterface $loop) - { - return new TimeoutExecutor( - new TcpTransportExecutor($nameserver, $loop), - 5.0, - $loop - ); - } - - /** - * @param string $nameserver - * @param LoopInterface $loop - * @return TimeoutExecutor - * @throws \InvalidArgumentException for invalid DNS server address - */ - private function createUdpExecutor($nameserver, LoopInterface $loop) - { - return new TimeoutExecutor( - new UdpTransportExecutor( - $nameserver, - $loop - ), - 5.0, - $loop - ); - } -} diff --git a/v3_ci4/vendor/react/dns/src/Resolver/Resolver.php b/v3_ci4/vendor/react/dns/src/Resolver/Resolver.php deleted file mode 100644 index 92926f3..0000000 --- a/v3_ci4/vendor/react/dns/src/Resolver/Resolver.php +++ /dev/null @@ -1,147 +0,0 @@ -executor = $executor; - } - - public function resolve($domain) - { - return $this->resolveAll($domain, Message::TYPE_A)->then(function (array $ips) { - return $ips[array_rand($ips)]; - }); - } - - public function resolveAll($domain, $type) - { - $query = new Query($domain, $type, Message::CLASS_IN); - $that = $this; - - return $this->executor->query( - $query - )->then(function (Message $response) use ($query, $that) { - return $that->extractValues($query, $response); - }); - } - - /** - * [Internal] extract all resource record values from response for this query - * - * @param Query $query - * @param Message $response - * @return array - * @throws RecordNotFoundException when response indicates an error or contains no data - * @internal - */ - public function extractValues(Query $query, Message $response) - { - // reject if response code indicates this is an error response message - $code = $response->rcode; - if ($code !== Message::RCODE_OK) { - switch ($code) { - case Message::RCODE_FORMAT_ERROR: - $message = 'Format Error'; - break; - case Message::RCODE_SERVER_FAILURE: - $message = 'Server Failure'; - break; - case Message::RCODE_NAME_ERROR: - $message = 'Non-Existent Domain / NXDOMAIN'; - break; - case Message::RCODE_NOT_IMPLEMENTED: - $message = 'Not Implemented'; - break; - case Message::RCODE_REFUSED: - $message = 'Refused'; - break; - default: - $message = 'Unknown error response code ' . $code; - } - throw new RecordNotFoundException( - 'DNS query for ' . $query->describe() . ' returned an error response (' . $message . ')', - $code - ); - } - - $answers = $response->answers; - $addresses = $this->valuesByNameAndType($answers, $query->name, $query->type); - - // reject if we did not receive a valid answer (domain is valid, but no record for this type could be found) - if (0 === count($addresses)) { - throw new RecordNotFoundException( - 'DNS query for ' . $query->describe() . ' did not return a valid answer (NOERROR / NODATA)' - ); - } - - return array_values($addresses); - } - - /** - * @param \React\Dns\Model\Record[] $answers - * @param string $name - * @param int $type - * @return array - */ - private function valuesByNameAndType(array $answers, $name, $type) - { - // return all record values for this name and type (if any) - $named = $this->filterByName($answers, $name); - $records = $this->filterByType($named, $type); - if ($records) { - return $this->mapRecordData($records); - } - - // no matching records found? check if there are any matching CNAMEs instead - $cnameRecords = $this->filterByType($named, Message::TYPE_CNAME); - if ($cnameRecords) { - $cnames = $this->mapRecordData($cnameRecords); - foreach ($cnames as $cname) { - $records = array_merge( - $records, - $this->valuesByNameAndType($answers, $cname, $type) - ); - } - } - - return $records; - } - - private function filterByName(array $answers, $name) - { - return $this->filterByField($answers, 'name', $name); - } - - private function filterByType(array $answers, $type) - { - return $this->filterByField($answers, 'type', $type); - } - - private function filterByField(array $answers, $field, $value) - { - $value = strtolower($value); - return array_filter($answers, function ($answer) use ($field, $value) { - return $value === strtolower($answer->$field); - }); - } - - private function mapRecordData(array $records) - { - return array_map(function ($record) { - return $record->data; - }, $records); - } -} diff --git a/v3_ci4/vendor/react/dns/src/Resolver/ResolverInterface.php b/v3_ci4/vendor/react/dns/src/Resolver/ResolverInterface.php deleted file mode 100644 index 555a1cb..0000000 --- a/v3_ci4/vendor/react/dns/src/Resolver/ResolverInterface.php +++ /dev/null @@ -1,94 +0,0 @@ -resolve('reactphp.org')->then(function ($ip) { - * echo 'IP for reactphp.org is ' . $ip . PHP_EOL; - * }); - * ``` - * - * This is one of the main methods in this package. It sends a DNS query - * for the given $domain name to your DNS server and returns a single IP - * address on success. - * - * If the DNS server sends a DNS response message that contains more than - * one IP address for this query, it will randomly pick one of the IP - * addresses from the response. If you want the full list of IP addresses - * or want to send a different type of query, you should use the - * [`resolveAll()`](#resolveall) method instead. - * - * If the DNS server sends a DNS response message that indicates an error - * code, this method will reject with a `RecordNotFoundException`. Its - * message and code can be used to check for the response code. - * - * If the DNS communication fails and the server does not respond with a - * valid response message, this message will reject with an `Exception`. - * - * Pending DNS queries can be cancelled by cancelling its pending promise like so: - * - * ```php - * $promise = $resolver->resolve('reactphp.org'); - * - * $promise->cancel(); - * ``` - * - * @param string $domain - * @return \React\Promise\PromiseInterface - * resolves with a single IP address on success or rejects with an Exception on error. - */ - public function resolve($domain); - - /** - * Resolves all record values for the given $domain name and query $type. - * - * ```php - * $resolver->resolveAll('reactphp.org', Message::TYPE_A)->then(function ($ips) { - * echo 'IPv4 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL; - * }); - * - * $resolver->resolveAll('reactphp.org', Message::TYPE_AAAA)->then(function ($ips) { - * echo 'IPv6 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL; - * }); - * ``` - * - * This is one of the main methods in this package. It sends a DNS query - * for the given $domain name to your DNS server and returns a list with all - * record values on success. - * - * If the DNS server sends a DNS response message that contains one or more - * records for this query, it will return a list with all record values - * from the response. You can use the `Message::TYPE_*` constants to control - * which type of query will be sent. Note that this method always returns a - * list of record values, but each record value type depends on the query - * type. For example, it returns the IPv4 addresses for type `A` queries, - * the IPv6 addresses for type `AAAA` queries, the hostname for type `NS`, - * `CNAME` and `PTR` queries and structured data for other queries. See also - * the `Record` documentation for more details. - * - * If the DNS server sends a DNS response message that indicates an error - * code, this method will reject with a `RecordNotFoundException`. Its - * message and code can be used to check for the response code. - * - * If the DNS communication fails and the server does not respond with a - * valid response message, this message will reject with an `Exception`. - * - * Pending DNS queries can be cancelled by cancelling its pending promise like so: - * - * ```php - * $promise = $resolver->resolveAll('reactphp.org', Message::TYPE_AAAA); - * - * $promise->cancel(); - * ``` - * - * @param string $domain - * @return \React\Promise\PromiseInterface - * Resolves with all record values on success or rejects with an Exception on error. - */ - public function resolveAll($domain, $type); -} diff --git a/v3_ci4/vendor/react/event-loop/CHANGELOG.md b/v3_ci4/vendor/react/event-loop/CHANGELOG.md deleted file mode 100644 index 7d41909..0000000 --- a/v3_ci4/vendor/react/event-loop/CHANGELOG.md +++ /dev/null @@ -1,473 +0,0 @@ -# Changelog - -## 1.6.0 (2025-11-17) - -* Feature: Improve PHP 8.5+ support by avoiding deprecated method calls. - (#280 and #282 by @WyriHaximus) - -## 1.5.0 (2023-11-13) - -* Feature: Improve performance by using `spl_object_id()` on PHP 7.2+. - (#267 by @samsonasik) - -* Feature: Full PHP 8.3 compatibility. - (#269 by @clue) - -* Update tests for `ext-uv` on PHP 8+ and legacy PHP. - (#270 by @clue and #268 by @SimonFrings) - -## 1.4.0 (2023-05-05) - -* Feature: Improve performance of `Loop` by avoiding unneeded method calls. - (#266 by @clue) - -* Feature: Support checking `EINTR` constant from `ext-pcntl` without `ext-sockets`. - (#265 by @clue) - -* Minor documentation improvements. - (#254 by @nhedger) - -* Improve test suite, run tests on PHP 8.2 and report failed assertions. - (#258 by @WyriHaximus, #264 by @clue and #251, #261 and #262 by @SimonFrings) - -## 1.3.0 (2022-03-17) - -* Feature: Improve default `StreamSelectLoop` to report any warnings for invalid streams. - (#245 by @clue) - -* Feature: Improve performance of `StreamSelectLoop` when no timers are scheduled. - (#246 by @clue) - -* Fix: Fix periodic timer with zero interval for `ExtEvLoop` and legacy `ExtLibevLoop`. - (#243 by @lucasnetau) - -* Minor documentation improvements, update PHP version references. - (#240, #248 and #250 by @SimonFrings, #241 by @dbu and #249 by @clue) - -* Improve test suite and test against PHP 8.1. - (#238 by @WyriHaximus and #242 by @clue) - -## 1.2.0 (2021-07-11) - -A major new feature release, see [**release announcement**](https://clue.engineering/2021/announcing-reactphp-default-loop). - -* Feature: Introduce new concept of default loop with the new `Loop` class. - (#226 by @WyriHaximus, #229, #231 and #232 by @clue) - - The `Loop` class exists as a convenient global accessor for the event loop. - It provides all methods that exist on the `LoopInterface` as static methods and - will automatically execute the loop at the end of the program: - - ```php - $timer = Loop::addPeriodicTimer(0.1, function () { - echo 'Tick' . PHP_EOL; - }); - - Loop::addTimer(1.0, function () use ($timer) { - Loop::cancelTimer($timer); - echo 'Done' . PHP_EOL; - }); - ``` - - The explicit loop instructions are still valid and may still be useful in some applications, - especially for a transition period towards the more concise style. - The `Loop::get()` method can be used to get the currently active event loop instance. - - ```php - // deprecated - $loop = React\EventLoop\Factory::create(); - - // new - $loop = React\EventLoop\Loop::get(); - ``` - -* Minor documentation improvements and mark legacy extensions as deprecated. - (#234 by @SimonFrings, #214 by @WyriHaximus and #233 and #235 by @nhedger) - -* Improve test suite, use GitHub actions for continuous integration (CI), - update PHPUnit config and run tests on PHP 8. - (#212 and #215 by @SimonFrings and #230 by @clue) - -## 1.1.1 (2020-01-01) - -* Fix: Fix reporting connection refused errors with `ExtUvLoop` on Linux and `StreamSelectLoop` on Windows. - (#207 and #208 by @clue) - -* Fix: Fix unsupported EventConfig and `SEGFAULT` on shutdown with `ExtEventLoop` on Windows. - (#205 by @clue) - -* Fix: Prevent interval overflow for timers very far in the future with `ExtUvLoop`. - (#196 by @PabloKowalczyk) - -* Fix: Check PCNTL functions for signal support instead of PCNTL extension with `StreamSelectLoop`. - (#195 by @clue) - -* Add `.gitattributes` to exclude dev files from exports. - (#201 by @reedy) - -* Improve test suite to fix testing `ExtUvLoop` on Travis, - fix Travis CI builds, do not install `libuv` on legacy PHP setups, - fix failing test cases due to inaccurate timers, - run tests on Windows via Travis CI and - run tests on PHP 7.4 and simplify test matrix and test setup. - (#197 by @WyriHaximus and #202, #203, #204 and #209 by @clue) - -## 1.1.0 (2019-02-07) - -* New UV based event loop (ext-uv). - (#112 by @WyriHaximus) - -* Use high resolution timer on PHP 7.3+. - (#182 by @clue) - -* Improve PCNTL signals by using async signal dispatching if available. - (#179 by @CharlotteDunois) - -* Improve test suite and test suite set up. - (#174 by @WyriHaximus, #181 by @clue) - -* Fix PCNTL signals edge case. - (#183 by @clue) - -## 1.0.0 (2018-07-11) - -* First stable LTS release, now following [SemVer](https://semver.org/). - We'd like to emphasize that this component is production ready and battle-tested. - We plan to support all long-term support (LTS) releases for at least 24 months, - so you have a rock-solid foundation to build on top of. - -> Contains no other changes, so it's actually fully compatible with the v0.5.3 release. - -## 0.5.3 (2018-07-09) - -* Improve performance by importing global functions. - (#167 by @Ocramius) - -* Improve test suite by simplifying test bootstrap by using dev autoloader. - (#169 by @lcobucci) - -* Minor internal changes to improved backward compatibility with PHP 5.3. - (#166 by @Donatello-za) - -## 0.5.2 (2018-04-24) - -* Feature: Improve memory consumption and runtime performance for `StreamSelectLoop` timers. - (#164 by @clue) - -* Improve test suite by removing I/O dependency at `StreamSelectLoopTest` to fix Mac OS X tests. - (#161 by @nawarian) - -## 0.5.1 (2018-04-09) - -* Feature: New `ExtEvLoop` (PECL ext-ev) (#148 by @kaduev13) - -## 0.5.0 (2018-04-05) - -A major feature release with a significant documentation overhaul and long overdue API cleanup! - -This update involves a number of BC breaks due to dropped support for deprecated -functionality. We've tried hard to avoid BC breaks where possible and minimize -impact otherwise. We expect that most consumers of this package will actually -not be affected by any BC breaks, see below for more details. - -We realize that the changes listed below may seem overwhelming, but we've tried -to be very clear about any possible BC breaks. Don't worry: In fact, all ReactPHP -components are already compatible and support both this new release as well as -providing backwards compatibility with the last release. - -* Feature / BC break: Add support for signal handling via new - `LoopInterface::addSignal()` and `LoopInterface::removeSignal()` methods. - (#104 by @WyriHaximus and #111 and #150 by @clue) - - ```php - $loop->addSignal(SIGINT, function () { - echo 'CTRL-C'; - }); - ``` - -* Feature: Significant documentation updates for `LoopInterface` and `Factory`. - (#100, #119, #126, #127, #159 and #160 by @clue, #113 by @WyriHaximus and #81 and #91 by @jsor) - -* Feature: Add examples to ease getting started - (#99, #100 and #125 by @clue, #59 by @WyriHaximus and #143 by @jsor) - -* Feature: Documentation for advanced timer concepts, such as monotonic time source vs wall-clock time - and high precision timers with millisecond accuracy or below. - (#130 and #157 by @clue) - -* Feature: Documentation for advanced stream concepts, such as edge-triggered event listeners - and stream buffers and allow throwing Exception if stream resource is not supported. - (#129 and #158 by @clue) - -* Feature: Throw `BadMethodCallException` on manual loop creation when required extension isn't installed. - (#153 by @WyriHaximus) - -* Feature / BC break: First class support for legacy PHP 5.3 through PHP 7.2 and HHVM - and remove all `callable` type hints for consistency reasons. - (#141 and #151 by @clue) - -* BC break: Documentation for timer API and clean up unneeded timer API. - (#102 by @clue) - - Remove `TimerInterface::cancel()`, use `LoopInterface::cancelTimer()` instead: - - ```php - // old (method invoked on timer instance) - $timer->cancel(); - - // already supported before: invoke method on loop instance - $loop->cancelTimer($timer); - ``` - - Remove unneeded `TimerInterface::setData()` and `TimerInterface::getData()`, - use closure binding to add arbitrary data to timer instead: - - ```php - // old (limited setData() and getData() only allows single variable) - $name = 'Tester'; - $timer = $loop->addTimer(1.0, function ($timer) { - echo 'Hello ' . $timer->getData() . PHP_EOL; - }); - $timer->setData($name); - - // already supported before: closure binding allows any number of variables - $name = 'Tester'; - $loop->addTimer(1.0, function () use ($name) { - echo 'Hello ' . $name . PHP_EOL; - }); - ``` - - Remove unneeded `TimerInterface::getLoop()`, use closure binding instead: - - ```php - // old (getLoop() called on timer instance) - $loop->addTimer(0.1, function ($timer) { - $timer->getLoop()->stop(); - }); - - // already supported before: use closure binding as usual - $loop->addTimer(0.1, function () use ($loop) { - $loop->stop(); - }); - ``` - -* BC break: Remove unneeded `LoopInterface::isTimerActive()` and - `TimerInterface::isActive()` to reduce API surface. - (#133 by @clue) - - ```php - // old (method on timer instance or on loop instance) - $timer->isActive(); - $loop->isTimerActive($timer); - ``` - -* BC break: Move `TimerInterface` one level up to `React\EventLoop\TimerInterface`. - (#138 by @WyriHaximus) - - ```php - // old (notice obsolete "Timer" namespace) - assert($timer instanceof React\EventLoop\Timer\TimerInterface); - - // new - assert($timer instanceof React\EventLoop\TimerInterface); - ``` - -* BC break: Remove unneeded `LoopInterface::nextTick()` (and internal `NextTickQueue`), - use `LoopInterface::futureTick()` instead. - (#30 by @clue) - - ```php - // old (removed) - $loop->nextTick(function () { - echo 'tick'; - }); - - // already supported before - $loop->futureTick(function () { - echo 'tick'; - }); - ``` - -* BC break: Remove unneeded `$loop` argument for `LoopInterface::futureTick()` - (and fix internal cyclic dependency). - (#103 by @clue) - - ```php - // old ($loop gets passed by default) - $loop->futureTick(function ($loop) { - $loop->stop(); - }); - - // already supported before: use closure binding as usual - $loop->futureTick(function () use ($loop) { - $loop->stop(); - }); - ``` - -* BC break: Remove unneeded `LoopInterface::tick()`. - (#72 by @jsor) - - ```php - // old (removed) - $loop->tick(); - - // suggested work around for testing purposes only - $loop->futureTick(function () use ($loop) { - $loop->stop(); - }); - ``` - -* BC break: Documentation for advanced stream API and clean up unneeded stream API. - (#110 by @clue) - - Remove unneeded `$loop` argument for `LoopInterface::addReadStream()` - and `LoopInterface::addWriteStream()`, use closure binding instead: - - ```php - // old ($loop gets passed by default) - $loop->addReadStream($stream, function ($stream, $loop) { - $loop->removeReadStream($stream); - }); - - // already supported before: use closure binding as usual - $loop->addReadStream($stream, function ($stream) use ($loop) { - $loop->removeReadStream($stream); - }); - ``` - -* BC break: Remove unneeded `LoopInterface::removeStream()` method, - use `LoopInterface::removeReadStream()` and `LoopInterface::removeWriteStream()` instead. - (#118 by @clue) - - ```php - // old - $loop->removeStream($stream); - - // already supported before - $loop->removeReadStream($stream); - $loop->removeWriteStream($stream); - ``` - -* BC break: Rename `LibEventLoop` to `ExtLibeventLoop` and `LibEvLoop` to `ExtLibevLoop` - for consistent naming for event loop implementations. - (#128 by @clue) - -* BC break: Remove optional `EventBaseConfig` argument from `ExtEventLoop` - and make its `FEATURE_FDS` enabled by default. - (#156 by @WyriHaximus) - -* BC break: Mark all classes as final to discourage inheritance. - (#131 by @clue) - -* Fix: Fix `ExtEventLoop` to keep track of stream resources (refcount) - (#123 by @clue) - -* Fix: Ensure large timer interval does not overflow on 32bit systems - (#132 by @clue) - -* Fix: Fix separately removing readable and writable side of stream when closing - (#139 by @clue) - -* Fix: Properly clean up event watchers for `ext-event` and `ext-libev` - (#149 by @clue) - -* Fix: Minor code cleanup and remove unneeded references - (#145 by @seregazhuk) - -* Fix: Discourage outdated `ext-libevent` on PHP 7 - (#62 by @cboden) - -* Improve test suite by adding forward compatibility with PHPUnit 6 and PHPUnit 5, - lock Travis distro so new defaults will not break the build, - improve test suite to be less fragile and increase test timeouts, - test against PHP 7.2 and reduce fwrite() call length to one chunk. - (#106 and #144 by @clue, #120 and #124 by @carusogabriel, #147 by nawarian and #92 by @kelunik) - -* A number of changes were originally planned for this release but have been backported - to the last `v0.4.3` already: #74, #76, #79, #81 (refs #65, #66, #67), #88 and #93 - -## 0.4.3 (2017-04-27) - -* Bug fix: Bugfix in the usage sample code #57 (@dandelionred) -* Improvement: Remove branch-alias definition #53 (@WyriHaximus) -* Improvement: StreamSelectLoop: Use fresh time so Timers added during stream events are accurate #51 (@andrewminerd) -* Improvement: Avoid deprecation warnings in test suite due to deprecation of getMock() in PHPUnit #68 (@martinschroeder) -* Improvement: Add PHPUnit 4.8 to require-dev #69 (@shaunbramley) -* Improvement: Increase test timeouts for HHVM and unify timeout handling #70 (@clue) -* Improvement: Travis improvements (backported from #74) #75 (@clue) -* Improvement: Test suite now uses socket pairs instead of memory streams #66 (@martinschroeder) -* Improvement: StreamSelectLoop: Test suite uses signal constant names in data provider #67 (@martinschroeder) -* Improvement: ExtEventLoop: No longer suppress all errors #65 (@mamciek) -* Improvement: Readme cleanup #89 (@jsor) -* Improvement: Restructure and improve README #90 (@jsor) -* Bug fix: StreamSelectLoop: Fix erroneous zero-time sleep (backport to 0.4) #94 (@jsor) - -## 0.4.2 (2016-03-07) - -* Bug fix: No longer error when signals sent to StreamSelectLoop -* Support HHVM and PHP7 (@ondrejmirtes, @cebe) -* Feature: Added support for EventConfig for ExtEventLoop (@steverhoades) -* Bug fix: Fixed an issue loading loop extension libs via autoloader (@czarpino) - -## 0.4.1 (2014-04-13) - -* Bug fix: null timeout in StreamSelectLoop causing 100% CPU usage (@clue) -* Bug fix: v0.3.4 changes merged for v0.4.1 - -## 0.4.0 (2014-02-02) - -* Feature: Added `EventLoopInterface::nextTick()`, implemented in all event loops (@jmalloc) -* Feature: Added `EventLoopInterface::futureTick()`, implemented in all event loops (@jmalloc) -* Feature: Added `ExtEventLoop` implementation using pecl/event (@jmalloc) -* BC break: Bump minimum PHP version to PHP 5.4, remove 5.3 specific hacks -* BC break: New method: `EventLoopInterface::nextTick()` -* BC break: New method: `EventLoopInterface::futureTick()` -* Dependency: Autoloading and filesystem structure now PSR-4 instead of PSR-0 - -## 0.3.5 (2016-12-28) - -This is a compatibility release that eases upgrading to the v0.4 release branch. -You should consider upgrading to the v0.4 release branch. - -* Feature: Cap min timer interval at 1µs, thus improving compatibility with v0.4 - (#47 by @clue) - -## 0.3.4 (2014-03-30) - -* Bug fix: Changed StreamSelectLoop to use non-blocking behavior on tick() (@astephens25) - -## 0.3.3 (2013-07-08) - -* Bug fix: No error on removing non-existent streams (@clue) -* Bug fix: Do not silently remove feof listeners in `LibEvLoop` - -## 0.3.0 (2013-04-14) - -* BC break: New timers API (@nrk) -* BC break: Remove check on return value from stream callbacks (@nrk) - -## 0.2.7 (2013-01-05) - -* Bug fix: Fix libevent timers with PHP 5.3 -* Bug fix: Fix libevent timer cancellation (@nrk) - -## 0.2.6 (2012-12-26) - -* Bug fix: Plug memory issue in libevent timers (@cameronjacobson) -* Bug fix: Correctly pause LibEvLoop on stop() - -## 0.2.3 (2012-11-14) - -* Feature: LibEvLoop, integration of `php-libev` - -## 0.2.0 (2012-09-10) - -* Version bump - -## 0.1.1 (2012-07-12) - -* Version bump - -## 0.1.0 (2012-07-11) - -* First tagged release diff --git a/v3_ci4/vendor/react/event-loop/LICENSE b/v3_ci4/vendor/react/event-loop/LICENSE deleted file mode 100644 index d6f8901..0000000 --- a/v3_ci4/vendor/react/event-loop/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/react/event-loop/README.md b/v3_ci4/vendor/react/event-loop/README.md deleted file mode 100644 index bbdf1cf..0000000 --- a/v3_ci4/vendor/react/event-loop/README.md +++ /dev/null @@ -1,930 +0,0 @@ -# EventLoop - -[![CI status](https://github.com/reactphp/event-loop/actions/workflows/ci.yml/badge.svg)](https://github.com/reactphp/event-loop/actions) -[![installs on Packagist](https://img.shields.io/packagist/dt/react/event-loop?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/react/event-loop) - -[ReactPHP](https://reactphp.org/)'s core reactor event loop that libraries can use for evented I/O. - -In order for async based libraries to be interoperable, they need to use the -same event loop. This component provides a common `LoopInterface` that any -library can target. This allows them to be used in the same loop, with one -single [`run()`](#run) call that is controlled by the user. - -**Table of contents** - -* [Quickstart example](#quickstart-example) -* [Usage](#usage) - * [Loop](#loop) - * [Loop methods](#loop-methods) - * [Loop autorun](#loop-autorun) - * [get()](#get) - * [~~Factory~~](#factory) - * [~~create()~~](#create) - * [Loop implementations](#loop-implementations) - * [StreamSelectLoop](#streamselectloop) - * [ExtEventLoop](#exteventloop) - * [ExtEvLoop](#extevloop) - * [ExtUvLoop](#extuvloop) - * [~~ExtLibeventLoop~~](#extlibeventloop) - * [~~ExtLibevLoop~~](#extlibevloop) - * [LoopInterface](#loopinterface) - * [run()](#run) - * [stop()](#stop) - * [addTimer()](#addtimer) - * [addPeriodicTimer()](#addperiodictimer) - * [cancelTimer()](#canceltimer) - * [futureTick()](#futuretick) - * [addSignal()](#addsignal) - * [removeSignal()](#removesignal) - * [addReadStream()](#addreadstream) - * [addWriteStream()](#addwritestream) - * [removeReadStream()](#removereadstream) - * [removeWriteStream()](#removewritestream) -* [Install](#install) -* [Tests](#tests) -* [License](#license) -* [More](#more) - -## Quickstart example - -Here is an async HTTP server built with just the event loop. - -```php -addPeriodicTimer(0.1, function () { - echo 'Tick' . PHP_EOL; -}); - -$loop->addTimer(1.0, function () use ($loop, $timer) { - $loop->cancelTimer($timer); - echo 'Done' . PHP_EOL; -}); - -$loop->run(); -``` - -While the former is more concise, the latter is more explicit. -In both cases, the program would perform the exact same steps. - -1. The event loop instance is created at the beginning of the program. This is - implicitly done the first time you call the [`Loop` class](#loop) or - explicitly when using the deprecated [`Factory::create()` method](#create) - (or manually instantiating any of the [loop implementations](#loop-implementations)). -2. The event loop is used directly or passed as an instance to library and - application code. In this example, a periodic timer is registered with the - event loop which simply outputs `Tick` every fraction of a second until another - timer stops the periodic timer after a second. -3. The event loop is run at the end of the program. This is automatically done - when using the [`Loop` class](#loop) or explicitly with a single [`run()`](#run) - call at the end of the program. - -As of `v1.2.0`, we highly recommend using the [`Loop` class](#loop). -The explicit loop instructions are still valid and may still be useful in some -applications, especially for a transition period towards the more concise style. - -### Loop - -The `Loop` class exists as a convenient global accessor for the event loop. - -#### Loop methods - -The `Loop` class provides all methods that exist on the [`LoopInterface`](#loopinterface) -as static methods: - -* [run()](#run) -* [stop()](#stop) -* [addTimer()](#addtimer) -* [addPeriodicTimer()](#addperiodictimer) -* [cancelTimer()](#canceltimer) -* [futureTick()](#futuretick) -* [addSignal()](#addsignal) -* [removeSignal()](#removesignal) -* [addReadStream()](#addreadstream) -* [addWriteStream()](#addwritestream) -* [removeReadStream()](#removereadstream) -* [removeWriteStream()](#removewritestream) - -If you're working with the event loop in your application code, it's often -easiest to directly interface with the static methods defined on the `Loop` class -like this: - -```php -use React\EventLoop\Loop; - -$timer = Loop::addPeriodicTimer(0.1, function () { - echo 'Tick' . PHP_EOL; -}); - -Loop::addTimer(1.0, function () use ($timer) { - Loop::cancelTimer($timer); - echo 'Done' . PHP_EOL; -}); -``` - -On the other hand, if you're familiar with object-oriented programming (OOP) and -dependency injection (DI), you may want to inject an event loop instance and -invoke instance methods on the `LoopInterface` like this: - -```php -use React\EventLoop\Loop; -use React\EventLoop\LoopInterface; - -class Greeter -{ - private $loop; - - public function __construct(LoopInterface $loop) - { - $this->loop = $loop; - } - - public function greet(string $name) - { - $this->loop->addTimer(1.0, function () use ($name) { - echo 'Hello ' . $name . '!' . PHP_EOL; - }); - } -} - -$greeter = new Greeter(Loop::get()); -$greeter->greet('Alice'); -$greeter->greet('Bob'); -``` - -Each static method call will be forwarded as-is to the underlying event loop -instance by using the [`Loop::get()`](#get) call internally. -See [`LoopInterface`](#loopinterface) for more details about available methods. - -#### Loop autorun - -When using the `Loop` class, it will automatically execute the loop at the end of -the program. This means the following example will schedule a timer and will -automatically execute the program until the timer event fires: - -```php -use React\EventLoop\Loop; - -Loop::addTimer(1.0, function () { - echo 'Hello' . PHP_EOL; -}); -``` - -As of `v1.2.0`, we highly recommend using the `Loop` class this way and omitting any -explicit [`run()`](#run) calls. For BC reasons, the explicit [`run()`](#run) -method is still valid and may still be useful in some applications, especially -for a transition period towards the more concise style. - -If you don't want the `Loop` to run automatically, you can either explicitly -[`run()`](#run) or [`stop()`](#stop) it. This can be useful if you're using -a global exception handler like this: - -```php -use React\EventLoop\Loop; - -Loop::addTimer(10.0, function () { - echo 'Never happens'; -}); - -set_exception_handler(function (Throwable $e) { - echo 'Error: ' . $e->getMessage() . PHP_EOL; - Loop::stop(); -}); - -throw new RuntimeException('Demo'); -``` - -#### get() - -The `get(): LoopInterface` method can be used to -get the currently active event loop instance. - -This method will always return the same event loop instance throughout the -lifetime of your application. - -```php -use React\EventLoop\Loop; -use React\EventLoop\LoopInterface; - -$loop = Loop::get(); - -assert($loop instanceof LoopInterface); -assert($loop === Loop::get()); -``` - -This is particularly useful if you're using object-oriented programming (OOP) -and dependency injection (DI). In this case, you may want to inject an event -loop instance and invoke instance methods on the `LoopInterface` like this: - -```php -use React\EventLoop\Loop; -use React\EventLoop\LoopInterface; - -class Greeter -{ - private $loop; - - public function __construct(LoopInterface $loop) - { - $this->loop = $loop; - } - - public function greet(string $name) - { - $this->loop->addTimer(1.0, function () use ($name) { - echo 'Hello ' . $name . '!' . PHP_EOL; - }); - } -} - -$greeter = new Greeter(Loop::get()); -$greeter->greet('Alice'); -$greeter->greet('Bob'); -``` - -See [`LoopInterface`](#loopinterface) for more details about available methods. - -### ~~Factory~~ - -> Deprecated since v1.2.0, see [`Loop` class](#loop) instead. - -The deprecated `Factory` class exists as a convenient way to pick the best available -[event loop implementation](#loop-implementations). - -#### ~~create()~~ - -> Deprecated since v1.2.0, see [`Loop::get()`](#get) instead. - -The deprecated `create(): LoopInterface` method can be used to -create a new event loop instance: - -```php -// deprecated -$loop = React\EventLoop\Factory::create(); - -// new -$loop = React\EventLoop\Loop::get(); -``` - -This method always returns an instance implementing [`LoopInterface`](#loopinterface), -the actual [event loop implementation](#loop-implementations) is an implementation detail. - -This method should usually only be called once at the beginning of the program. - -### Loop implementations - -In addition to the [`LoopInterface`](#loopinterface), there are a number of -event loop implementations provided. - -All of the event loops support these features: - -* File descriptor polling -* One-off timers -* Periodic timers -* Deferred execution on future loop tick - -For most consumers of this package, the underlying event loop implementation is -an implementation detail. -You should use the [`Loop` class](#loop) to automatically create a new instance. - -Advanced! If you explicitly need a certain event loop implementation, you can -manually instantiate one of the following classes. -Note that you may have to install the required PHP extensions for the respective -event loop implementation first or they will throw a `BadMethodCallException` on creation. - -#### StreamSelectLoop - -A `stream_select()` based event loop. - -This uses the [`stream_select()`](https://www.php.net/manual/en/function.stream-select.php) -function and is the only implementation that works out of the box with PHP. - -This event loop works out of the box on PHP 5.3 through PHP 8+ and HHVM. -This means that no installation is required and this library works on all -platforms and supported PHP versions. -Accordingly, the [`Loop` class](#loop) and the deprecated [`Factory`](#factory) -will use this event loop by default if you do not install any of the event loop -extensions listed below. - -Under the hood, it does a simple `select` system call. -This system call is limited to the maximum file descriptor number of -`FD_SETSIZE` (platform dependent, commonly 1024) and scales with `O(m)` -(`m` being the maximum file descriptor number passed). -This means that you may run into issues when handling thousands of streams -concurrently and you may want to look into using one of the alternative -event loop implementations listed below in this case. -If your use case is among the many common use cases that involve handling only -dozens or a few hundred streams at once, then this event loop implementation -performs really well. - -If you want to use signal handling (see also [`addSignal()`](#addsignal) below), -this event loop implementation requires `ext-pcntl`. -This extension is only available for Unix-like platforms and does not support -Windows. -It is commonly installed as part of many PHP distributions. -If this extension is missing (or you're running on Windows), signal handling is -not supported and throws a `BadMethodCallException` instead. - -This event loop is known to rely on wall-clock time to schedule future timers -when using any version before PHP 7.3, because a monotonic time source is -only available as of PHP 7.3 (`hrtime()`). -While this does not affect many common use cases, this is an important -distinction for programs that rely on a high time precision or on systems -that are subject to discontinuous time adjustments (time jumps). -This means that if you schedule a timer to trigger in 30s on PHP < 7.3 and -then adjust your system time forward by 20s, the timer may trigger in 10s. -See also [`addTimer()`](#addtimer) for more details. - -#### ExtEventLoop - -An `ext-event` based event loop. - -This uses the [`event` PECL extension](https://pecl.php.net/package/event), -that provides an interface to `libevent` library. -`libevent` itself supports a number of system-specific backends (epoll, kqueue). - -This loop is known to work with PHP 5.4 through PHP 8+. - -#### ExtEvLoop - -An `ext-ev` based event loop. - -This loop uses the [`ev` PECL extension](https://pecl.php.net/package/ev), -that provides an interface to `libev` library. -`libev` itself supports a number of system-specific backends (epoll, kqueue). - - -This loop is known to work with PHP 5.4 through PHP 8+. - -#### ExtUvLoop - -An `ext-uv` based event loop. - -This loop uses the [`uv` PECL extension](https://pecl.php.net/package/uv), -that provides an interface to `libuv` library. -`libuv` itself supports a number of system-specific backends (epoll, kqueue). - -This loop is known to work with PHP 7+. - -#### ~~ExtLibeventLoop~~ - -> Deprecated since v1.2.0, use [`ExtEventLoop`](#exteventloop) instead. - -An `ext-libevent` based event loop. - -This uses the [`libevent` PECL extension](https://pecl.php.net/package/libevent), -that provides an interface to `libevent` library. -`libevent` itself supports a number of system-specific backends (epoll, kqueue). - -This event loop does only work with PHP 5. -An [unofficial update](https://github.com/php/pecl-event-libevent/pull/2) for -PHP 7 does exist, but it is known to cause regular crashes due to `SEGFAULT`s. -To reiterate: Using this event loop on PHP 7 is not recommended. -Accordingly, neither the [`Loop` class](#loop) nor the deprecated -[`Factory` class](#factory) will try to use this event loop on PHP 7. - -This event loop is known to trigger a readable listener only if -the stream *becomes* readable (edge-triggered) and may not trigger if the -stream has already been readable from the beginning. -This also implies that a stream may not be recognized as readable when data -is still left in PHP's internal stream buffers. -As such, it's recommended to use `stream_set_read_buffer($stream, 0);` -to disable PHP's internal read buffer in this case. -See also [`addReadStream()`](#addreadstream) for more details. - -#### ~~ExtLibevLoop~~ - -> Deprecated since v1.2.0, use [`ExtEvLoop`](#extevloop) instead. - -An `ext-libev` based event loop. - -This uses an [unofficial `libev` extension](https://github.com/m4rw3r/php-libev), -that provides an interface to `libev` library. -`libev` itself supports a number of system-specific backends (epoll, kqueue). - -This loop does only work with PHP 5. -An update for PHP 7 is [unlikely](https://github.com/m4rw3r/php-libev/issues/8) -to happen any time soon. - -### LoopInterface - -#### run() - -The `run(): void` method can be used to -run the event loop until there are no more tasks to perform. - -For many applications, this method is the only directly visible -invocation on the event loop. -As a rule of thumb, it is usually recommended to attach everything to the -same loop instance and then run the loop once at the bottom end of the -application. - -```php -$loop->run(); -``` - -This method will keep the loop running until there are no more tasks -to perform. In other words: This method will block until the last -timer, stream and/or signal has been removed. - -Likewise, it is imperative to ensure the application actually invokes -this method once. Adding listeners to the loop and missing to actually -run it will result in the application exiting without actually waiting -for any of the attached listeners. - -This method MUST NOT be called while the loop is already running. -This method MAY be called more than once after it has explicitly been -[`stop()`ped](#stop) or after it automatically stopped because it -previously did no longer have anything to do. - -#### stop() - -The `stop(): void` method can be used to -instruct a running event loop to stop. - -This method is considered advanced usage and should be used with care. -As a rule of thumb, it is usually recommended to let the loop stop -only automatically when it no longer has anything to do. - -This method can be used to explicitly instruct the event loop to stop: - -```php -$loop->addTimer(3.0, function () use ($loop) { - $loop->stop(); -}); -``` - -Calling this method on a loop instance that is not currently running or -on a loop instance that has already been stopped has no effect. - -#### addTimer() - -The `addTimer(float $interval, callable $callback): TimerInterface` method can be used to -enqueue a callback to be invoked once after the given interval. - -The second parameter MUST be a timer callback function that accepts -the timer instance as its only parameter. -If you don't use the timer instance inside your timer callback function -you MAY use a function which has no parameters at all. - -The timer callback function MUST NOT throw an `Exception`. -The return value of the timer callback function will be ignored and has -no effect, so for performance reasons you're recommended to not return -any excessive data structures. - -This method returns a timer instance. The same timer instance will also be -passed into the timer callback function as described above. -You can invoke [`cancelTimer`](#canceltimer) to cancel a pending timer. -Unlike [`addPeriodicTimer()`](#addperiodictimer), this method will ensure -the callback will be invoked only once after the given interval. - -```php -$loop->addTimer(0.8, function () { - echo 'world!' . PHP_EOL; -}); - -$loop->addTimer(0.3, function () { - echo 'hello '; -}); -``` - -See also [example #1](examples). - -If you want to access any variables within your callback function, you -can bind arbitrary data to a callback closure like this: - -```php -function hello($name, LoopInterface $loop) -{ - $loop->addTimer(1.0, function () use ($name) { - echo "hello $name\n"; - }); -} - -hello('Tester', $loop); -``` - -This interface does not enforce any particular timer resolution, so -special care may have to be taken if you rely on very high precision with -millisecond accuracy or below. Event loop implementations SHOULD work on -a best effort basis and SHOULD provide at least millisecond accuracy -unless otherwise noted. Many existing event loop implementations are -known to provide microsecond accuracy, but it's generally not recommended -to rely on this high precision. - -Similarly, the execution order of timers scheduled to execute at the -same time (within its possible accuracy) is not guaranteed. - -This interface suggests that event loop implementations SHOULD use a -monotonic time source if available. Given that a monotonic time source is -only available as of PHP 7.3 by default, event loop implementations MAY -fall back to using wall-clock time. -While this does not affect many common use cases, this is an important -distinction for programs that rely on a high time precision or on systems -that are subject to discontinuous time adjustments (time jumps). -This means that if you schedule a timer to trigger in 30s and then adjust -your system time forward by 20s, the timer SHOULD still trigger in 30s. -See also [event loop implementations](#loop-implementations) for more details. - -#### addPeriodicTimer() - -The `addPeriodicTimer(float $interval, callable $callback): TimerInterface` method can be used to -enqueue a callback to be invoked repeatedly after the given interval. - -The second parameter MUST be a timer callback function that accepts -the timer instance as its only parameter. -If you don't use the timer instance inside your timer callback function -you MAY use a function which has no parameters at all. - -The timer callback function MUST NOT throw an `Exception`. -The return value of the timer callback function will be ignored and has -no effect, so for performance reasons you're recommended to not return -any excessive data structures. - -This method returns a timer instance. The same timer instance will also be -passed into the timer callback function as described above. -Unlike [`addTimer()`](#addtimer), this method will ensure the callback -will be invoked infinitely after the given interval or until you invoke -[`cancelTimer`](#canceltimer). - -```php -$timer = $loop->addPeriodicTimer(0.1, function () { - echo 'tick!' . PHP_EOL; -}); - -$loop->addTimer(1.0, function () use ($loop, $timer) { - $loop->cancelTimer($timer); - echo 'Done' . PHP_EOL; -}); -``` - -See also [example #2](examples). - -If you want to limit the number of executions, you can bind -arbitrary data to a callback closure like this: - -```php -function hello($name, LoopInterface $loop) -{ - $n = 3; - $loop->addPeriodicTimer(1.0, function ($timer) use ($name, $loop, &$n) { - if ($n > 0) { - --$n; - echo "hello $name\n"; - } else { - $loop->cancelTimer($timer); - } - }); -} - -hello('Tester', $loop); -``` - -This interface does not enforce any particular timer resolution, so -special care may have to be taken if you rely on very high precision with -millisecond accuracy or below. Event loop implementations SHOULD work on -a best effort basis and SHOULD provide at least millisecond accuracy -unless otherwise noted. Many existing event loop implementations are -known to provide microsecond accuracy, but it's generally not recommended -to rely on this high precision. - -Similarly, the execution order of timers scheduled to execute at the -same time (within its possible accuracy) is not guaranteed. - -This interface suggests that event loop implementations SHOULD use a -monotonic time source if available. Given that a monotonic time source is -only available as of PHP 7.3 by default, event loop implementations MAY -fall back to using wall-clock time. -While this does not affect many common use cases, this is an important -distinction for programs that rely on a high time precision or on systems -that are subject to discontinuous time adjustments (time jumps). -This means that if you schedule a timer to trigger in 30s and then adjust -your system time forward by 20s, the timer SHOULD still trigger in 30s. -See also [event loop implementations](#loop-implementations) for more details. - -Additionally, periodic timers may be subject to timer drift due to -re-scheduling after each invocation. As such, it's generally not -recommended to rely on this for high precision intervals with millisecond -accuracy or below. - -#### cancelTimer() - -The `cancelTimer(TimerInterface $timer): void` method can be used to -cancel a pending timer. - -See also [`addPeriodicTimer()`](#addperiodictimer) and [example #2](examples). - -Calling this method on a timer instance that has not been added to this -loop instance or on a timer that has already been cancelled has no effect. - -#### futureTick() - -The `futureTick(callable $listener): void` method can be used to -schedule a callback to be invoked on a future tick of the event loop. - -This works very much similar to timers with an interval of zero seconds, -but does not require the overhead of scheduling a timer queue. - -The tick callback function MUST be able to accept zero parameters. - -The tick callback function MUST NOT throw an `Exception`. -The return value of the tick callback function will be ignored and has -no effect, so for performance reasons you're recommended to not return -any excessive data structures. - -If you want to access any variables within your callback function, you -can bind arbitrary data to a callback closure like this: - -```php -function hello($name, LoopInterface $loop) -{ - $loop->futureTick(function () use ($name) { - echo "hello $name\n"; - }); -} - -hello('Tester', $loop); -``` - -Unlike timers, tick callbacks are guaranteed to be executed in the order -they are enqueued. -Also, once a callback is enqueued, there's no way to cancel this operation. - -This is often used to break down bigger tasks into smaller steps (a form -of cooperative multitasking). - -```php -$loop->futureTick(function () { - echo 'b'; -}); -$loop->futureTick(function () { - echo 'c'; -}); -echo 'a'; -``` - -See also [example #3](examples). - -#### addSignal() - -The `addSignal(int $signal, callable $listener): void` method can be used to -register a listener to be notified when a signal has been caught by this process. - -This is useful to catch user interrupt signals or shutdown signals from -tools like `supervisor` or `systemd`. - -The second parameter MUST be a listener callback function that accepts -the signal as its only parameter. -If you don't use the signal inside your listener callback function -you MAY use a function which has no parameters at all. - -The listener callback function MUST NOT throw an `Exception`. -The return value of the listener callback function will be ignored and has -no effect, so for performance reasons you're recommended to not return -any excessive data structures. - -```php -$loop->addSignal(SIGINT, function (int $signal) { - echo 'Caught user interrupt signal' . PHP_EOL; -}); -``` - -See also [example #4](examples). - -Signaling is only available on Unix-like platforms, Windows isn't -supported due to operating system limitations. -This method may throw a `BadMethodCallException` if signals aren't -supported on this platform, for example when required extensions are -missing. - -**Note: A listener can only be added once to the same signal, any -attempts to add it more than once will be ignored.** - -#### removeSignal() - -The `removeSignal(int $signal, callable $listener): void` method can be used to -remove a previously added signal listener. - -```php -$loop->removeSignal(SIGINT, $listener); -``` - -Any attempts to remove listeners that aren't registered will be ignored. - -#### addReadStream() - -> Advanced! Note that this low-level API is considered advanced usage. - Most use cases should probably use the higher-level - [readable Stream API](https://github.com/reactphp/stream#readablestreaminterface) - instead. - -The `addReadStream(resource $stream, callable $callback): void` method can be used to -register a listener to be notified when a stream is ready to read. - -The first parameter MUST be a valid stream resource that supports -checking whether it is ready to read by this loop implementation. -A single stream resource MUST NOT be added more than once. -Instead, either call [`removeReadStream()`](#removereadstream) first or -react to this event with a single listener and then dispatch from this -listener. This method MAY throw an `Exception` if the given resource type -is not supported by this loop implementation. - -The second parameter MUST be a listener callback function that accepts -the stream resource as its only parameter. -If you don't use the stream resource inside your listener callback function -you MAY use a function which has no parameters at all. - -The listener callback function MUST NOT throw an `Exception`. -The return value of the listener callback function will be ignored and has -no effect, so for performance reasons you're recommended to not return -any excessive data structures. - -If you want to access any variables within your callback function, you -can bind arbitrary data to a callback closure like this: - -```php -$loop->addReadStream($stream, function ($stream) use ($name) { - echo $name . ' said: ' . fread($stream); -}); -``` - -See also [example #11](examples). - -You can invoke [`removeReadStream()`](#removereadstream) to remove the -read event listener for this stream. - -The execution order of listeners when multiple streams become ready at -the same time is not guaranteed. - -Some event loop implementations are known to only trigger the listener if -the stream *becomes* readable (edge-triggered) and may not trigger if the -stream has already been readable from the beginning. -This also implies that a stream may not be recognized as readable when data -is still left in PHP's internal stream buffers. -As such, it's recommended to use `stream_set_read_buffer($stream, 0);` -to disable PHP's internal read buffer in this case. - -#### addWriteStream() - -> Advanced! Note that this low-level API is considered advanced usage. - Most use cases should probably use the higher-level - [writable Stream API](https://github.com/reactphp/stream#writablestreaminterface) - instead. - -The `addWriteStream(resource $stream, callable $callback): void` method can be used to -register a listener to be notified when a stream is ready to write. - -The first parameter MUST be a valid stream resource that supports -checking whether it is ready to write by this loop implementation. -A single stream resource MUST NOT be added more than once. -Instead, either call [`removeWriteStream()`](#removewritestream) first or -react to this event with a single listener and then dispatch from this -listener. This method MAY throw an `Exception` if the given resource type -is not supported by this loop implementation. - -The second parameter MUST be a listener callback function that accepts -the stream resource as its only parameter. -If you don't use the stream resource inside your listener callback function -you MAY use a function which has no parameters at all. - -The listener callback function MUST NOT throw an `Exception`. -The return value of the listener callback function will be ignored and has -no effect, so for performance reasons you're recommended to not return -any excessive data structures. - -If you want to access any variables within your callback function, you -can bind arbitrary data to a callback closure like this: - -```php -$loop->addWriteStream($stream, function ($stream) use ($name) { - fwrite($stream, 'Hello ' . $name); -}); -``` - -See also [example #12](examples). - -You can invoke [`removeWriteStream()`](#removewritestream) to remove the -write event listener for this stream. - -The execution order of listeners when multiple streams become ready at -the same time is not guaranteed. - -#### removeReadStream() - -The `removeReadStream(resource $stream): void` method can be used to -remove the read event listener for the given stream. - -Removing a stream from the loop that has already been removed or trying -to remove a stream that was never added or is invalid has no effect. - -#### removeWriteStream() - -The `removeWriteStream(resource $stream): void` method can be used to -remove the write event listener for the given stream. - -Removing a stream from the loop that has already been removed or trying -to remove a stream that was never added or is invalid has no effect. - -## Install - -The recommended way to install this library is [through Composer](https://getcomposer.org/). -[New to Composer?](https://getcomposer.org/doc/00-intro.md) - -This project follows [SemVer](https://semver.org/). -This will install the latest supported version: - -```bash -composer require react/event-loop:^1.6 -``` - -See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades. - -This project aims to run on any platform and thus does not require any PHP -extensions and supports running on legacy PHP 5.3 through current PHP 8+ and -HHVM. -It's *highly recommended to use the latest supported PHP version* for this project. - -Installing any of the event loop extensions is suggested, but entirely optional. -See also [event loop implementations](#loop-implementations) for more details. - -## Tests - -To run the test suite, you first need to clone this repo and then install all -dependencies [through Composer](https://getcomposer.org/): - -```bash -composer install -``` - -To run the test suite, go to the project root and run: - -```bash -vendor/bin/phpunit -``` - -## License - -MIT, see [LICENSE file](LICENSE). - -## More - -* See our [Stream component](https://github.com/reactphp/stream) for more - information on how streams are used in real-world applications. -* See our [users wiki](https://github.com/reactphp/react/wiki/Users) and the - [dependents on Packagist](https://packagist.org/packages/react/event-loop/dependents) - for a list of packages that use the EventLoop in real-world applications. diff --git a/v3_ci4/vendor/react/event-loop/composer.json b/v3_ci4/vendor/react/event-loop/composer.json deleted file mode 100644 index 25a41fe..0000000 --- a/v3_ci4/vendor/react/event-loop/composer.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "react/event-loop", - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": ["event-loop", "asynchronous"], - "license": "MIT", - "authors": [ - { - "name": "Christian Lück", - "homepage": "https://clue.engineering/", - "email": "christian@clue.engineering" - }, - { - "name": "Cees-Jan Kiewiet", - "homepage": "https://wyrihaximus.net/", - "email": "reactphp@ceesjankiewiet.nl" - }, - { - "name": "Jan Sorgalla", - "homepage": "https://sorgalla.com/", - "email": "jsorgalla@gmail.com" - }, - { - "name": "Chris Boden", - "homepage": "https://cboden.dev/", - "email": "cboden@gmail.com" - } - ], - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" - }, - "suggest": { - "ext-pcntl": "For signal handling support when using the StreamSelectLoop" - }, - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "React\\Tests\\EventLoop\\": "tests/" - } - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/ExtEvLoop.php b/v3_ci4/vendor/react/event-loop/src/ExtEvLoop.php deleted file mode 100644 index 7689ff5..0000000 --- a/v3_ci4/vendor/react/event-loop/src/ExtEvLoop.php +++ /dev/null @@ -1,253 +0,0 @@ -loop = new EvLoop(); - $this->futureTickQueue = new FutureTickQueue(); - $this->timers = new SplObjectStorage(); - $this->signals = new SignalsHandler(); - } - - public function addReadStream($stream, $listener) - { - $key = (int)$stream; - - if (isset($this->readStreams[$key])) { - return; - } - - $callback = $this->getStreamListenerClosure($stream, $listener); - $event = $this->loop->io($stream, Ev::READ, $callback); - $this->readStreams[$key] = $event; - } - - /** - * @param resource $stream - * @param callable $listener - * - * @return \Closure - */ - private function getStreamListenerClosure($stream, $listener) - { - return function () use ($stream, $listener) { - \call_user_func($listener, $stream); - }; - } - - public function addWriteStream($stream, $listener) - { - $key = (int)$stream; - - if (isset($this->writeStreams[$key])) { - return; - } - - $callback = $this->getStreamListenerClosure($stream, $listener); - $event = $this->loop->io($stream, Ev::WRITE, $callback); - $this->writeStreams[$key] = $event; - } - - public function removeReadStream($stream) - { - $key = (int)$stream; - - if (!isset($this->readStreams[$key])) { - return; - } - - $this->readStreams[$key]->stop(); - unset($this->readStreams[$key]); - } - - public function removeWriteStream($stream) - { - $key = (int)$stream; - - if (!isset($this->writeStreams[$key])) { - return; - } - - $this->writeStreams[$key]->stop(); - unset($this->writeStreams[$key]); - } - - public function addTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, false); - - $that = $this; - $timers = $this->timers; - $callback = function () use ($timer, $timers, $that) { - \call_user_func($timer->getCallback(), $timer); - - if ($timers->offsetExists($timer)) { - $that->cancelTimer($timer); - } - }; - - $event = $this->loop->timer($timer->getInterval(), 0.0, $callback); - $this->timers->offsetSet($timer, $event); - - return $timer; - } - - public function addPeriodicTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, true); - - $callback = function () use ($timer) { - \call_user_func($timer->getCallback(), $timer); - }; - - $event = $this->loop->timer($timer->getInterval(), $timer->getInterval(), $callback); - $this->timers->offsetSet($timer, $event); - - return $timer; - } - - public function cancelTimer(TimerInterface $timer) - { - if (!isset($this->timers[$timer])) { - return; - } - - $event = $this->timers[$timer]; - $event->stop(); - $this->timers->offsetUnset($timer); - } - - public function futureTick($listener) - { - $this->futureTickQueue->add($listener); - } - - public function run() - { - $this->running = true; - - while ($this->running) { - $this->futureTickQueue->tick(); - - $hasPendingCallbacks = !$this->futureTickQueue->isEmpty(); - $wasJustStopped = !$this->running; - $nothingLeftToDo = !$this->readStreams - && !$this->writeStreams - && !$this->timers->count() - && $this->signals->isEmpty(); - - $flags = Ev::RUN_ONCE; - if ($wasJustStopped || $hasPendingCallbacks) { - $flags |= Ev::RUN_NOWAIT; - } elseif ($nothingLeftToDo) { - break; - } - - $this->loop->run($flags); - } - } - - public function stop() - { - $this->running = false; - } - - public function __destruct() - { - /** @var TimerInterface $timer */ - foreach ($this->timers as $timer) { - $this->cancelTimer($timer); - } - - foreach ($this->readStreams as $key => $stream) { - $this->removeReadStream($key); - } - - foreach ($this->writeStreams as $key => $stream) { - $this->removeWriteStream($key); - } - } - - public function addSignal($signal, $listener) - { - $this->signals->add($signal, $listener); - - if (!isset($this->signalEvents[$signal])) { - $this->signalEvents[$signal] = $this->loop->signal($signal, function() use ($signal) { - $this->signals->call($signal); - }); - } - } - - public function removeSignal($signal, $listener) - { - $this->signals->remove($signal, $listener); - - if (isset($this->signalEvents[$signal])) { - $this->signalEvents[$signal]->stop(); - unset($this->signalEvents[$signal]); - } - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/ExtEventLoop.php b/v3_ci4/vendor/react/event-loop/src/ExtEventLoop.php deleted file mode 100644 index 2f26d74..0000000 --- a/v3_ci4/vendor/react/event-loop/src/ExtEventLoop.php +++ /dev/null @@ -1,275 +0,0 @@ -requireFeatures(\EventConfig::FEATURE_FDS); - } - - $this->eventBase = new EventBase($config); - $this->futureTickQueue = new FutureTickQueue(); - $this->timerEvents = new SplObjectStorage(); - $this->signals = new SignalsHandler(); - - $this->createTimerCallback(); - $this->createStreamCallback(); - } - - public function __destruct() - { - // explicitly clear all references to Event objects to prevent SEGFAULTs on Windows - foreach ($this->timerEvents as $timer) { - $this->timerEvents->offsetUnset($timer); - } - - $this->readEvents = array(); - $this->writeEvents = array(); - } - - public function addReadStream($stream, $listener) - { - $key = (int) $stream; - if (isset($this->readListeners[$key])) { - return; - } - - $event = new Event($this->eventBase, $stream, Event::PERSIST | Event::READ, $this->streamCallback); - $event->add(); - $this->readEvents[$key] = $event; - $this->readListeners[$key] = $listener; - - // ext-event does not increase refcount on stream resources for PHP 7+ - // manually keep track of stream resource to prevent premature garbage collection - if (\PHP_VERSION_ID >= 70000) { - $this->readRefs[$key] = $stream; - } - } - - public function addWriteStream($stream, $listener) - { - $key = (int) $stream; - if (isset($this->writeListeners[$key])) { - return; - } - - $event = new Event($this->eventBase, $stream, Event::PERSIST | Event::WRITE, $this->streamCallback); - $event->add(); - $this->writeEvents[$key] = $event; - $this->writeListeners[$key] = $listener; - - // ext-event does not increase refcount on stream resources for PHP 7+ - // manually keep track of stream resource to prevent premature garbage collection - if (\PHP_VERSION_ID >= 70000) { - $this->writeRefs[$key] = $stream; - } - } - - public function removeReadStream($stream) - { - $key = (int) $stream; - - if (isset($this->readEvents[$key])) { - $this->readEvents[$key]->free(); - unset( - $this->readEvents[$key], - $this->readListeners[$key], - $this->readRefs[$key] - ); - } - } - - public function removeWriteStream($stream) - { - $key = (int) $stream; - - if (isset($this->writeEvents[$key])) { - $this->writeEvents[$key]->free(); - unset( - $this->writeEvents[$key], - $this->writeListeners[$key], - $this->writeRefs[$key] - ); - } - } - - public function addTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, false); - - $this->scheduleTimer($timer); - - return $timer; - } - - public function addPeriodicTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, true); - - $this->scheduleTimer($timer); - - return $timer; - } - - public function cancelTimer(TimerInterface $timer) - { - if ($this->timerEvents->offsetExists($timer)) { - $this->timerEvents[$timer]->free(); - $this->timerEvents->offsetUnset($timer); - } - } - - public function futureTick($listener) - { - $this->futureTickQueue->add($listener); - } - - public function addSignal($signal, $listener) - { - $this->signals->add($signal, $listener); - - if (!isset($this->signalEvents[$signal])) { - $this->signalEvents[$signal] = Event::signal($this->eventBase, $signal, array($this->signals, 'call')); - $this->signalEvents[$signal]->add(); - } - } - - public function removeSignal($signal, $listener) - { - $this->signals->remove($signal, $listener); - - if (isset($this->signalEvents[$signal]) && $this->signals->count($signal) === 0) { - $this->signalEvents[$signal]->free(); - unset($this->signalEvents[$signal]); - } - } - - public function run() - { - $this->running = true; - - while ($this->running) { - $this->futureTickQueue->tick(); - - $flags = EventBase::LOOP_ONCE; - if (!$this->running || !$this->futureTickQueue->isEmpty()) { - $flags |= EventBase::LOOP_NONBLOCK; - } elseif (!$this->readEvents && !$this->writeEvents && !$this->timerEvents->count() && $this->signals->isEmpty()) { - break; - } - - $this->eventBase->loop($flags); - } - } - - public function stop() - { - $this->running = false; - } - - /** - * Schedule a timer for execution. - * - * @param TimerInterface $timer - */ - private function scheduleTimer(TimerInterface $timer) - { - $flags = Event::TIMEOUT; - - if ($timer->isPeriodic()) { - $flags |= Event::PERSIST; - } - - $event = new Event($this->eventBase, -1, $flags, $this->timerCallback, $timer); - $this->timerEvents[$timer] = $event; - - $event->add($timer->getInterval()); - } - - /** - * Create a callback used as the target of timer events. - * - * A reference is kept to the callback for the lifetime of the loop - * to prevent "Cannot destroy active lambda function" fatal error from - * the event extension. - */ - private function createTimerCallback() - { - $timers = $this->timerEvents; - $this->timerCallback = function ($_, $__, $timer) use ($timers) { - \call_user_func($timer->getCallback(), $timer); - - if (!$timer->isPeriodic() && $timers->offsetExists($timer)) { - $this->cancelTimer($timer); - } - }; - } - - /** - * Create a callback used as the target of stream events. - * - * A reference is kept to the callback for the lifetime of the loop - * to prevent "Cannot destroy active lambda function" fatal error from - * the event extension. - */ - private function createStreamCallback() - { - $read =& $this->readListeners; - $write =& $this->writeListeners; - $this->streamCallback = function ($stream, $flags) use (&$read, &$write) { - $key = (int) $stream; - - if (Event::READ === (Event::READ & $flags) && isset($read[$key])) { - \call_user_func($read[$key], $stream); - } - - if (Event::WRITE === (Event::WRITE & $flags) && isset($write[$key])) { - \call_user_func($write[$key], $stream); - } - }; - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/ExtLibevLoop.php b/v3_ci4/vendor/react/event-loop/src/ExtLibevLoop.php deleted file mode 100644 index c303fdd..0000000 --- a/v3_ci4/vendor/react/event-loop/src/ExtLibevLoop.php +++ /dev/null @@ -1,201 +0,0 @@ -loop = new EventLoop(); - $this->futureTickQueue = new FutureTickQueue(); - $this->timerEvents = new SplObjectStorage(); - $this->signals = new SignalsHandler(); - } - - public function addReadStream($stream, $listener) - { - if (isset($this->readEvents[(int) $stream])) { - return; - } - - $callback = function () use ($stream, $listener) { - \call_user_func($listener, $stream); - }; - - $event = new IOEvent($callback, $stream, IOEvent::READ); - $this->loop->add($event); - - $this->readEvents[(int) $stream] = $event; - } - - public function addWriteStream($stream, $listener) - { - if (isset($this->writeEvents[(int) $stream])) { - return; - } - - $callback = function () use ($stream, $listener) { - \call_user_func($listener, $stream); - }; - - $event = new IOEvent($callback, $stream, IOEvent::WRITE); - $this->loop->add($event); - - $this->writeEvents[(int) $stream] = $event; - } - - public function removeReadStream($stream) - { - $key = (int) $stream; - - if (isset($this->readEvents[$key])) { - $this->readEvents[$key]->stop(); - $this->loop->remove($this->readEvents[$key]); - unset($this->readEvents[$key]); - } - } - - public function removeWriteStream($stream) - { - $key = (int) $stream; - - if (isset($this->writeEvents[$key])) { - $this->writeEvents[$key]->stop(); - $this->loop->remove($this->writeEvents[$key]); - unset($this->writeEvents[$key]); - } - } - - public function addTimer($interval, $callback) - { - $timer = new Timer( $interval, $callback, false); - - $that = $this; - $timers = $this->timerEvents; - $callback = function () use ($timer, $timers, $that) { - \call_user_func($timer->getCallback(), $timer); - - if ($timers->contains($timer)) { - $that->cancelTimer($timer); - } - }; - - $event = new TimerEvent($callback, $timer->getInterval()); - $this->timerEvents->attach($timer, $event); - $this->loop->add($event); - - return $timer; - } - - public function addPeriodicTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, true); - - $callback = function () use ($timer) { - \call_user_func($timer->getCallback(), $timer); - }; - - $event = new TimerEvent($callback, $timer->getInterval(), $timer->getInterval()); - $this->timerEvents->attach($timer, $event); - $this->loop->add($event); - - return $timer; - } - - public function cancelTimer(TimerInterface $timer) - { - if (isset($this->timerEvents[$timer])) { - $this->loop->remove($this->timerEvents[$timer]); - $this->timerEvents->detach($timer); - } - } - - public function futureTick($listener) - { - $this->futureTickQueue->add($listener); - } - - public function addSignal($signal, $listener) - { - $this->signals->add($signal, $listener); - - if (!isset($this->signalEvents[$signal])) { - $signals = $this->signals; - $this->signalEvents[$signal] = new SignalEvent(function () use ($signals, $signal) { - $signals->call($signal); - }, $signal); - $this->loop->add($this->signalEvents[$signal]); - } - } - - public function removeSignal($signal, $listener) - { - $this->signals->remove($signal, $listener); - - if (isset($this->signalEvents[$signal]) && $this->signals->count($signal) === 0) { - $this->signalEvents[$signal]->stop(); - $this->loop->remove($this->signalEvents[$signal]); - unset($this->signalEvents[$signal]); - } - } - - public function run() - { - $this->running = true; - - while ($this->running) { - $this->futureTickQueue->tick(); - - $flags = EventLoop::RUN_ONCE; - if (!$this->running || !$this->futureTickQueue->isEmpty()) { - $flags |= EventLoop::RUN_NOWAIT; - } elseif (!$this->readEvents && !$this->writeEvents && !$this->timerEvents->count() && $this->signals->isEmpty()) { - break; - } - - $this->loop->run($flags); - } - } - - public function stop() - { - $this->running = false; - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/ExtLibeventLoop.php b/v3_ci4/vendor/react/event-loop/src/ExtLibeventLoop.php deleted file mode 100644 index 099293a..0000000 --- a/v3_ci4/vendor/react/event-loop/src/ExtLibeventLoop.php +++ /dev/null @@ -1,285 +0,0 @@ -eventBase = \event_base_new(); - $this->futureTickQueue = new FutureTickQueue(); - $this->timerEvents = new SplObjectStorage(); - $this->signals = new SignalsHandler(); - - $this->createTimerCallback(); - $this->createStreamCallback(); - } - - public function addReadStream($stream, $listener) - { - $key = (int) $stream; - if (isset($this->readListeners[$key])) { - return; - } - - $event = \event_new(); - \event_set($event, $stream, \EV_PERSIST | \EV_READ, $this->streamCallback); - \event_base_set($event, $this->eventBase); - \event_add($event); - - $this->readEvents[$key] = $event; - $this->readListeners[$key] = $listener; - } - - public function addWriteStream($stream, $listener) - { - $key = (int) $stream; - if (isset($this->writeListeners[$key])) { - return; - } - - $event = \event_new(); - \event_set($event, $stream, \EV_PERSIST | \EV_WRITE, $this->streamCallback); - \event_base_set($event, $this->eventBase); - \event_add($event); - - $this->writeEvents[$key] = $event; - $this->writeListeners[$key] = $listener; - } - - public function removeReadStream($stream) - { - $key = (int) $stream; - - if (isset($this->readListeners[$key])) { - $event = $this->readEvents[$key]; - \event_del($event); - \event_free($event); - - unset( - $this->readEvents[$key], - $this->readListeners[$key] - ); - } - } - - public function removeWriteStream($stream) - { - $key = (int) $stream; - - if (isset($this->writeListeners[$key])) { - $event = $this->writeEvents[$key]; - \event_del($event); - \event_free($event); - - unset( - $this->writeEvents[$key], - $this->writeListeners[$key] - ); - } - } - - public function addTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, false); - - $this->scheduleTimer($timer); - - return $timer; - } - - public function addPeriodicTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, true); - - $this->scheduleTimer($timer); - - return $timer; - } - - public function cancelTimer(TimerInterface $timer) - { - if ($this->timerEvents->contains($timer)) { - $event = $this->timerEvents[$timer]; - \event_del($event); - \event_free($event); - - $this->timerEvents->detach($timer); - } - } - - public function futureTick($listener) - { - $this->futureTickQueue->add($listener); - } - - public function addSignal($signal, $listener) - { - $this->signals->add($signal, $listener); - - if (!isset($this->signalEvents[$signal])) { - $this->signalEvents[$signal] = \event_new(); - \event_set($this->signalEvents[$signal], $signal, \EV_PERSIST | \EV_SIGNAL, array($this->signals, 'call')); - \event_base_set($this->signalEvents[$signal], $this->eventBase); - \event_add($this->signalEvents[$signal]); - } - } - - public function removeSignal($signal, $listener) - { - $this->signals->remove($signal, $listener); - - if (isset($this->signalEvents[$signal]) && $this->signals->count($signal) === 0) { - \event_del($this->signalEvents[$signal]); - \event_free($this->signalEvents[$signal]); - unset($this->signalEvents[$signal]); - } - } - - public function run() - { - $this->running = true; - - while ($this->running) { - $this->futureTickQueue->tick(); - - $flags = \EVLOOP_ONCE; - if (!$this->running || !$this->futureTickQueue->isEmpty()) { - $flags |= \EVLOOP_NONBLOCK; - } elseif (!$this->readEvents && !$this->writeEvents && !$this->timerEvents->count() && $this->signals->isEmpty()) { - break; - } - - \event_base_loop($this->eventBase, $flags); - } - } - - public function stop() - { - $this->running = false; - } - - /** - * Schedule a timer for execution. - * - * @param TimerInterface $timer - */ - private function scheduleTimer(TimerInterface $timer) - { - $this->timerEvents[$timer] = $event = \event_timer_new(); - - \event_timer_set($event, $this->timerCallback, $timer); - \event_base_set($event, $this->eventBase); - \event_add($event, $timer->getInterval() * self::MICROSECONDS_PER_SECOND); - } - - /** - * Create a callback used as the target of timer events. - * - * A reference is kept to the callback for the lifetime of the loop - * to prevent "Cannot destroy active lambda function" fatal error from - * the event extension. - */ - private function createTimerCallback() - { - $that = $this; - $timers = $this->timerEvents; - $this->timerCallback = function ($_, $__, $timer) use ($timers, $that) { - \call_user_func($timer->getCallback(), $timer); - - // Timer already cancelled ... - if (!$timers->contains($timer)) { - return; - } - - // Reschedule periodic timers ... - if ($timer->isPeriodic()) { - \event_add( - $timers[$timer], - $timer->getInterval() * ExtLibeventLoop::MICROSECONDS_PER_SECOND - ); - - // Clean-up one shot timers ... - } else { - $that->cancelTimer($timer); - } - }; - } - - /** - * Create a callback used as the target of stream events. - * - * A reference is kept to the callback for the lifetime of the loop - * to prevent "Cannot destroy active lambda function" fatal error from - * the event extension. - */ - private function createStreamCallback() - { - $read =& $this->readListeners; - $write =& $this->writeListeners; - $this->streamCallback = function ($stream, $flags) use (&$read, &$write) { - $key = (int) $stream; - - if (\EV_READ === (\EV_READ & $flags) && isset($read[$key])) { - \call_user_func($read[$key], $stream); - } - - if (\EV_WRITE === (\EV_WRITE & $flags) && isset($write[$key])) { - \call_user_func($write[$key], $stream); - } - }; - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/ExtUvLoop.php b/v3_ci4/vendor/react/event-loop/src/ExtUvLoop.php deleted file mode 100644 index 29aa86b..0000000 --- a/v3_ci4/vendor/react/event-loop/src/ExtUvLoop.php +++ /dev/null @@ -1,350 +0,0 @@ -uv = \uv_loop_new(); - $this->futureTickQueue = new FutureTickQueue(); - $this->timers = new SplObjectStorage(); - $this->streamListener = $this->createStreamListener(); - $this->signals = new SignalsHandler(); - } - - /** - * Returns the underlying ext-uv event loop. (Internal ReactPHP use only.) - * - * @internal - * - * @return resource - */ - public function getUvLoop() - { - return $this->uv; - } - - /** - * {@inheritdoc} - */ - public function addReadStream($stream, $listener) - { - if (isset($this->readStreams[(int) $stream])) { - return; - } - - $this->readStreams[(int) $stream] = $listener; - $this->addStream($stream); - } - - /** - * {@inheritdoc} - */ - public function addWriteStream($stream, $listener) - { - if (isset($this->writeStreams[(int) $stream])) { - return; - } - - $this->writeStreams[(int) $stream] = $listener; - $this->addStream($stream); - } - - /** - * {@inheritdoc} - */ - public function removeReadStream($stream) - { - if (!isset($this->streamEvents[(int) $stream])) { - return; - } - - unset($this->readStreams[(int) $stream]); - $this->removeStream($stream); - } - - /** - * {@inheritdoc} - */ - public function removeWriteStream($stream) - { - if (!isset($this->streamEvents[(int) $stream])) { - return; - } - - unset($this->writeStreams[(int) $stream]); - $this->removeStream($stream); - } - - /** - * {@inheritdoc} - */ - public function addTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, false); - - $that = $this; - $timers = $this->timers; - $callback = function () use ($timer, $timers, $that) { - \call_user_func($timer->getCallback(), $timer); - - if ($timers->offsetExists($timer)) { - $that->cancelTimer($timer); - } - }; - - $event = \uv_timer_init($this->uv); - $this->timers->offsetSet($timer, $event); - \uv_timer_start( - $event, - $this->convertFloatSecondsToMilliseconds($interval), - 0, - $callback - ); - - return $timer; - } - - /** - * {@inheritdoc} - */ - public function addPeriodicTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, true); - - $callback = function () use ($timer) { - \call_user_func($timer->getCallback(), $timer); - }; - - $interval = $this->convertFloatSecondsToMilliseconds($interval); - $event = \uv_timer_init($this->uv); - $this->timers->offsetSet($timer, $event); - \uv_timer_start( - $event, - $interval, - (int) $interval === 0 ? 1 : $interval, - $callback - ); - - return $timer; - } - - /** - * {@inheritdoc} - */ - public function cancelTimer(TimerInterface $timer) - { - if (isset($this->timers[$timer])) { - @\uv_timer_stop($this->timers[$timer]); - $this->timers->offsetUnset($timer); - } - } - - /** - * {@inheritdoc} - */ - public function futureTick($listener) - { - $this->futureTickQueue->add($listener); - } - - public function addSignal($signal, $listener) - { - $this->signals->add($signal, $listener); - - if (!isset($this->signalEvents[$signal])) { - $signals = $this->signals; - $this->signalEvents[$signal] = \uv_signal_init($this->uv); - \uv_signal_start($this->signalEvents[$signal], function () use ($signals, $signal) { - $signals->call($signal); - }, $signal); - } - } - - public function removeSignal($signal, $listener) - { - $this->signals->remove($signal, $listener); - - if (isset($this->signalEvents[$signal]) && $this->signals->count($signal) === 0) { - \uv_signal_stop($this->signalEvents[$signal]); - unset($this->signalEvents[$signal]); - } - } - - /** - * {@inheritdoc} - */ - public function run() - { - $this->running = true; - - while ($this->running) { - $this->futureTickQueue->tick(); - - $hasPendingCallbacks = !$this->futureTickQueue->isEmpty(); - $wasJustStopped = !$this->running; - $nothingLeftToDo = !$this->readStreams - && !$this->writeStreams - && !$this->timers->count() - && $this->signals->isEmpty(); - - // Use UV::RUN_ONCE when there are only I/O events active in the loop and block until one of those triggers, - // otherwise use UV::RUN_NOWAIT. - // @link http://docs.libuv.org/en/v1.x/loop.html#c.uv_run - $flags = \UV::RUN_ONCE; - if ($wasJustStopped || $hasPendingCallbacks) { - $flags = \UV::RUN_NOWAIT; - } elseif ($nothingLeftToDo) { - break; - } - - \uv_run($this->uv, $flags); - } - } - - /** - * {@inheritdoc} - */ - public function stop() - { - $this->running = false; - } - - private function addStream($stream) - { - if (!isset($this->streamEvents[(int) $stream])) { - $this->streamEvents[(int)$stream] = \uv_poll_init_socket($this->uv, $stream); - } - - if ($this->streamEvents[(int) $stream] !== false) { - $this->pollStream($stream); - } - } - - private function removeStream($stream) - { - if (!isset($this->streamEvents[(int) $stream])) { - return; - } - - if (!isset($this->readStreams[(int) $stream]) - && !isset($this->writeStreams[(int) $stream])) { - \uv_poll_stop($this->streamEvents[(int) $stream]); - \uv_close($this->streamEvents[(int) $stream]); - unset($this->streamEvents[(int) $stream]); - return; - } - - $this->pollStream($stream); - } - - private function pollStream($stream) - { - if (!isset($this->streamEvents[(int) $stream])) { - return; - } - - $flags = 0; - if (isset($this->readStreams[(int) $stream])) { - $flags |= \UV::READABLE; - } - - if (isset($this->writeStreams[(int) $stream])) { - $flags |= \UV::WRITABLE; - } - - \uv_poll_start($this->streamEvents[(int) $stream], $flags, $this->streamListener); - } - - /** - * Create a stream listener - * - * @return callable Returns a callback - */ - private function createStreamListener() - { - $callback = function ($event, $status, $events, $stream) { - // libuv automatically stops polling on error, re-enable polling to match other loop implementations - if ($status !== 0) { - $this->pollStream($stream); - - // libuv may report no events on error, but this should still invoke stream listeners to report closed connections - // re-enable both readable and writable, correct listeners will be checked below anyway - if ($events === 0) { - $events = \UV::READABLE | \UV::WRITABLE; - } - } - - if (isset($this->readStreams[(int) $stream]) && ($events & \UV::READABLE)) { - \call_user_func($this->readStreams[(int) $stream], $stream); - } - - if (isset($this->writeStreams[(int) $stream]) && ($events & \UV::WRITABLE)) { - \call_user_func($this->writeStreams[(int) $stream], $stream); - } - }; - - return $callback; - } - - /** - * @param float $interval - * @return int - */ - private function convertFloatSecondsToMilliseconds($interval) - { - if ($interval < 0) { - return 0; - } - - $maxValue = (int) (\PHP_INT_MAX / 1000); - $intervalOverflow = false; - if (PHP_VERSION_ID > 80499 && $interval >= \PHP_INT_MAX + 1) { - $intervalOverflow = true; - } else { - $intInterval = (int) $interval; - if (($intInterval <= 0 && $interval > 1) || $intInterval >= $maxValue) { - $intervalOverflow = true; - } - } - - if ($intervalOverflow) { - throw new \InvalidArgumentException( - "Interval overflow, value must be lower than '{$maxValue}', but '{$interval}' passed." - ); - } - - return (int) \floor($interval * 1000); - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/Factory.php b/v3_ci4/vendor/react/event-loop/src/Factory.php deleted file mode 100644 index 30bbfd7..0000000 --- a/v3_ci4/vendor/react/event-loop/src/Factory.php +++ /dev/null @@ -1,75 +0,0 @@ -futureTick(function () use (&$hasRun) { - $hasRun = true; - }); - - $stopped =& self::$stopped; - register_shutdown_function(function () use ($loop, &$hasRun, &$stopped) { - // Don't run if we're coming from a fatal error (uncaught exception). - $error = error_get_last(); - if ((isset($error['type']) ? $error['type'] : 0) & (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR)) { - return; - } - - if (!$hasRun && !$stopped) { - $loop->run(); - } - }); - // @codeCoverageIgnoreEnd - - return self::$instance; - } - - /** - * Internal undocumented method, behavior might change or throw in the - * future. Use with caution and at your own risk. - * - * @internal - * @return void - */ - public static function set(LoopInterface $loop) - { - self::$instance = $loop; - } - - /** - * [Advanced] Register a listener to be notified when a stream is ready to read. - * - * @param resource $stream - * @param callable $listener - * @return void - * @throws \Exception - * @see LoopInterface::addReadStream() - */ - public static function addReadStream($stream, $listener) - { - // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) - if (self::$instance === null) { - self::get(); - } - self::$instance->addReadStream($stream, $listener); - } - - /** - * [Advanced] Register a listener to be notified when a stream is ready to write. - * - * @param resource $stream - * @param callable $listener - * @return void - * @throws \Exception - * @see LoopInterface::addWriteStream() - */ - public static function addWriteStream($stream, $listener) - { - // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) - if (self::$instance === null) { - self::get(); - } - self::$instance->addWriteStream($stream, $listener); - } - - /** - * Remove the read event listener for the given stream. - * - * @param resource $stream - * @return void - * @see LoopInterface::removeReadStream() - */ - public static function removeReadStream($stream) - { - if (self::$instance !== null) { - self::$instance->removeReadStream($stream); - } - } - - /** - * Remove the write event listener for the given stream. - * - * @param resource $stream - * @return void - * @see LoopInterface::removeWriteStream() - */ - public static function removeWriteStream($stream) - { - if (self::$instance !== null) { - self::$instance->removeWriteStream($stream); - } - } - - /** - * Enqueue a callback to be invoked once after the given interval. - * - * @param float $interval - * @param callable $callback - * @return TimerInterface - * @see LoopInterface::addTimer() - */ - public static function addTimer($interval, $callback) - { - // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) - if (self::$instance === null) { - self::get(); - } - return self::$instance->addTimer($interval, $callback); - } - - /** - * Enqueue a callback to be invoked repeatedly after the given interval. - * - * @param float $interval - * @param callable $callback - * @return TimerInterface - * @see LoopInterface::addPeriodicTimer() - */ - public static function addPeriodicTimer($interval, $callback) - { - // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) - if (self::$instance === null) { - self::get(); - } - return self::$instance->addPeriodicTimer($interval, $callback); - } - - /** - * Cancel a pending timer. - * - * @param TimerInterface $timer - * @return void - * @see LoopInterface::cancelTimer() - */ - public static function cancelTimer(TimerInterface $timer) - { - if (self::$instance !== null) { - self::$instance->cancelTimer($timer); - } - } - - /** - * Schedule a callback to be invoked on a future tick of the event loop. - * - * @param callable $listener - * @return void - * @see LoopInterface::futureTick() - */ - public static function futureTick($listener) - { - // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) - if (self::$instance === null) { - self::get(); - } - - self::$instance->futureTick($listener); - } - - /** - * Register a listener to be notified when a signal has been caught by this process. - * - * @param int $signal - * @param callable $listener - * @return void - * @see LoopInterface::addSignal() - */ - public static function addSignal($signal, $listener) - { - // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) - if (self::$instance === null) { - self::get(); - } - - self::$instance->addSignal($signal, $listener); - } - - /** - * Removes a previously added signal listener. - * - * @param int $signal - * @param callable $listener - * @return void - * @see LoopInterface::removeSignal() - */ - public static function removeSignal($signal, $listener) - { - if (self::$instance !== null) { - self::$instance->removeSignal($signal, $listener); - } - } - - /** - * Run the event loop until there are no more tasks to perform. - * - * @return void - * @see LoopInterface::run() - */ - public static function run() - { - // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) - if (self::$instance === null) { - self::get(); - } - - self::$instance->run(); - } - - /** - * Instruct a running event loop to stop. - * - * @return void - * @see LoopInterface::stop() - */ - public static function stop() - { - self::$stopped = true; - if (self::$instance !== null) { - self::$instance->stop(); - } - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/LoopInterface.php b/v3_ci4/vendor/react/event-loop/src/LoopInterface.php deleted file mode 100644 index 9266f71..0000000 --- a/v3_ci4/vendor/react/event-loop/src/LoopInterface.php +++ /dev/null @@ -1,472 +0,0 @@ -addReadStream($stream, function ($stream) use ($name) { - * echo $name . ' said: ' . fread($stream); - * }); - * ``` - * - * See also [example #11](examples). - * - * You can invoke [`removeReadStream()`](#removereadstream) to remove the - * read event listener for this stream. - * - * The execution order of listeners when multiple streams become ready at - * the same time is not guaranteed. - * - * @param resource $stream The PHP stream resource to check. - * @param callable $listener Invoked when the stream is ready. - * @throws \Exception if the given resource type is not supported by this loop implementation - * @see self::removeReadStream() - */ - public function addReadStream($stream, $listener); - - /** - * [Advanced] Register a listener to be notified when a stream is ready to write. - * - * Note that this low-level API is considered advanced usage. - * Most use cases should probably use the higher-level - * [writable Stream API](https://github.com/reactphp/stream#writablestreaminterface) - * instead. - * - * The first parameter MUST be a valid stream resource that supports - * checking whether it is ready to write by this loop implementation. - * A single stream resource MUST NOT be added more than once. - * Instead, either call [`removeWriteStream()`](#removewritestream) first or - * react to this event with a single listener and then dispatch from this - * listener. This method MAY throw an `Exception` if the given resource type - * is not supported by this loop implementation. - * - * The second parameter MUST be a listener callback function that accepts - * the stream resource as its only parameter. - * If you don't use the stream resource inside your listener callback function - * you MAY use a function which has no parameters at all. - * - * The listener callback function MUST NOT throw an `Exception`. - * The return value of the listener callback function will be ignored and has - * no effect, so for performance reasons you're recommended to not return - * any excessive data structures. - * - * If you want to access any variables within your callback function, you - * can bind arbitrary data to a callback closure like this: - * - * ```php - * $loop->addWriteStream($stream, function ($stream) use ($name) { - * fwrite($stream, 'Hello ' . $name); - * }); - * ``` - * - * See also [example #12](examples). - * - * You can invoke [`removeWriteStream()`](#removewritestream) to remove the - * write event listener for this stream. - * - * The execution order of listeners when multiple streams become ready at - * the same time is not guaranteed. - * - * Some event loop implementations are known to only trigger the listener if - * the stream *becomes* readable (edge-triggered) and may not trigger if the - * stream has already been readable from the beginning. - * This also implies that a stream may not be recognized as readable when data - * is still left in PHP's internal stream buffers. - * As such, it's recommended to use `stream_set_read_buffer($stream, 0);` - * to disable PHP's internal read buffer in this case. - * - * @param resource $stream The PHP stream resource to check. - * @param callable $listener Invoked when the stream is ready. - * @throws \Exception if the given resource type is not supported by this loop implementation - * @see self::removeWriteStream() - */ - public function addWriteStream($stream, $listener); - - /** - * Remove the read event listener for the given stream. - * - * Removing a stream from the loop that has already been removed or trying - * to remove a stream that was never added or is invalid has no effect. - * - * @param resource $stream The PHP stream resource. - */ - public function removeReadStream($stream); - - /** - * Remove the write event listener for the given stream. - * - * Removing a stream from the loop that has already been removed or trying - * to remove a stream that was never added or is invalid has no effect. - * - * @param resource $stream The PHP stream resource. - */ - public function removeWriteStream($stream); - - /** - * Enqueue a callback to be invoked once after the given interval. - * - * The second parameter MUST be a timer callback function that accepts - * the timer instance as its only parameter. - * If you don't use the timer instance inside your timer callback function - * you MAY use a function which has no parameters at all. - * - * The timer callback function MUST NOT throw an `Exception`. - * The return value of the timer callback function will be ignored and has - * no effect, so for performance reasons you're recommended to not return - * any excessive data structures. - * - * This method returns a timer instance. The same timer instance will also be - * passed into the timer callback function as described above. - * You can invoke [`cancelTimer`](#canceltimer) to cancel a pending timer. - * Unlike [`addPeriodicTimer()`](#addperiodictimer), this method will ensure - * the callback will be invoked only once after the given interval. - * - * ```php - * $loop->addTimer(0.8, function () { - * echo 'world!' . PHP_EOL; - * }); - * - * $loop->addTimer(0.3, function () { - * echo 'hello '; - * }); - * ``` - * - * See also [example #1](examples). - * - * If you want to access any variables within your callback function, you - * can bind arbitrary data to a callback closure like this: - * - * ```php - * function hello($name, LoopInterface $loop) - * { - * $loop->addTimer(1.0, function () use ($name) { - * echo "hello $name\n"; - * }); - * } - * - * hello('Tester', $loop); - * ``` - * - * This interface does not enforce any particular timer resolution, so - * special care may have to be taken if you rely on very high precision with - * millisecond accuracy or below. Event loop implementations SHOULD work on - * a best effort basis and SHOULD provide at least millisecond accuracy - * unless otherwise noted. Many existing event loop implementations are - * known to provide microsecond accuracy, but it's generally not recommended - * to rely on this high precision. - * - * Similarly, the execution order of timers scheduled to execute at the - * same time (within its possible accuracy) is not guaranteed. - * - * This interface suggests that event loop implementations SHOULD use a - * monotonic time source if available. Given that a monotonic time source is - * only available as of PHP 7.3 by default, event loop implementations MAY - * fall back to using wall-clock time. - * While this does not affect many common use cases, this is an important - * distinction for programs that rely on a high time precision or on systems - * that are subject to discontinuous time adjustments (time jumps). - * This means that if you schedule a timer to trigger in 30s and then adjust - * your system time forward by 20s, the timer SHOULD still trigger in 30s. - * See also [event loop implementations](#loop-implementations) for more details. - * - * @param int|float $interval The number of seconds to wait before execution. - * @param callable $callback The callback to invoke. - * - * @return TimerInterface - */ - public function addTimer($interval, $callback); - - /** - * Enqueue a callback to be invoked repeatedly after the given interval. - * - * The second parameter MUST be a timer callback function that accepts - * the timer instance as its only parameter. - * If you don't use the timer instance inside your timer callback function - * you MAY use a function which has no parameters at all. - * - * The timer callback function MUST NOT throw an `Exception`. - * The return value of the timer callback function will be ignored and has - * no effect, so for performance reasons you're recommended to not return - * any excessive data structures. - * - * This method returns a timer instance. The same timer instance will also be - * passed into the timer callback function as described above. - * Unlike [`addTimer()`](#addtimer), this method will ensure the callback - * will be invoked infinitely after the given interval or until you invoke - * [`cancelTimer`](#canceltimer). - * - * ```php - * $timer = $loop->addPeriodicTimer(0.1, function () { - * echo 'tick!' . PHP_EOL; - * }); - * - * $loop->addTimer(1.0, function () use ($loop, $timer) { - * $loop->cancelTimer($timer); - * echo 'Done' . PHP_EOL; - * }); - * ``` - * - * See also [example #2](examples). - * - * If you want to limit the number of executions, you can bind - * arbitrary data to a callback closure like this: - * - * ```php - * function hello($name, LoopInterface $loop) - * { - * $n = 3; - * $loop->addPeriodicTimer(1.0, function ($timer) use ($name, $loop, &$n) { - * if ($n > 0) { - * --$n; - * echo "hello $name\n"; - * } else { - * $loop->cancelTimer($timer); - * } - * }); - * } - * - * hello('Tester', $loop); - * ``` - * - * This interface does not enforce any particular timer resolution, so - * special care may have to be taken if you rely on very high precision with - * millisecond accuracy or below. Event loop implementations SHOULD work on - * a best effort basis and SHOULD provide at least millisecond accuracy - * unless otherwise noted. Many existing event loop implementations are - * known to provide microsecond accuracy, but it's generally not recommended - * to rely on this high precision. - * - * Similarly, the execution order of timers scheduled to execute at the - * same time (within its possible accuracy) is not guaranteed. - * - * This interface suggests that event loop implementations SHOULD use a - * monotonic time source if available. Given that a monotonic time source is - * only available as of PHP 7.3 by default, event loop implementations MAY - * fall back to using wall-clock time. - * While this does not affect many common use cases, this is an important - * distinction for programs that rely on a high time precision or on systems - * that are subject to discontinuous time adjustments (time jumps). - * This means that if you schedule a timer to trigger in 30s and then adjust - * your system time forward by 20s, the timer SHOULD still trigger in 30s. - * See also [event loop implementations](#loop-implementations) for more details. - * - * Additionally, periodic timers may be subject to timer drift due to - * re-scheduling after each invocation. As such, it's generally not - * recommended to rely on this for high precision intervals with millisecond - * accuracy or below. - * - * @param int|float $interval The number of seconds to wait before execution. - * @param callable $callback The callback to invoke. - * - * @return TimerInterface - */ - public function addPeriodicTimer($interval, $callback); - - /** - * Cancel a pending timer. - * - * See also [`addPeriodicTimer()`](#addperiodictimer) and [example #2](examples). - * - * Calling this method on a timer instance that has not been added to this - * loop instance or on a timer that has already been cancelled has no effect. - * - * @param TimerInterface $timer The timer to cancel. - * - * @return void - */ - public function cancelTimer(TimerInterface $timer); - - /** - * Schedule a callback to be invoked on a future tick of the event loop. - * - * This works very much similar to timers with an interval of zero seconds, - * but does not require the overhead of scheduling a timer queue. - * - * The tick callback function MUST be able to accept zero parameters. - * - * The tick callback function MUST NOT throw an `Exception`. - * The return value of the tick callback function will be ignored and has - * no effect, so for performance reasons you're recommended to not return - * any excessive data structures. - * - * If you want to access any variables within your callback function, you - * can bind arbitrary data to a callback closure like this: - * - * ```php - * function hello($name, LoopInterface $loop) - * { - * $loop->futureTick(function () use ($name) { - * echo "hello $name\n"; - * }); - * } - * - * hello('Tester', $loop); - * ``` - * - * Unlike timers, tick callbacks are guaranteed to be executed in the order - * they are enqueued. - * Also, once a callback is enqueued, there's no way to cancel this operation. - * - * This is often used to break down bigger tasks into smaller steps (a form - * of cooperative multitasking). - * - * ```php - * $loop->futureTick(function () { - * echo 'b'; - * }); - * $loop->futureTick(function () { - * echo 'c'; - * }); - * echo 'a'; - * ``` - * - * See also [example #3](examples). - * - * @param callable $listener The callback to invoke. - * - * @return void - */ - public function futureTick($listener); - - /** - * Register a listener to be notified when a signal has been caught by this process. - * - * This is useful to catch user interrupt signals or shutdown signals from - * tools like `supervisor` or `systemd`. - * - * The second parameter MUST be a listener callback function that accepts - * the signal as its only parameter. - * If you don't use the signal inside your listener callback function - * you MAY use a function which has no parameters at all. - * - * The listener callback function MUST NOT throw an `Exception`. - * The return value of the listener callback function will be ignored and has - * no effect, so for performance reasons you're recommended to not return - * any excessive data structures. - * - * ```php - * $loop->addSignal(SIGINT, function (int $signal) { - * echo 'Caught user interrupt signal' . PHP_EOL; - * }); - * ``` - * - * See also [example #4](examples). - * - * Signaling is only available on Unix-like platforms, Windows isn't - * supported due to operating system limitations. - * This method may throw a `BadMethodCallException` if signals aren't - * supported on this platform, for example when required extensions are - * missing. - * - * **Note: A listener can only be added once to the same signal, any - * attempts to add it more than once will be ignored.** - * - * @param int $signal - * @param callable $listener - * - * @throws \BadMethodCallException when signals aren't supported on this - * platform, for example when required extensions are missing. - * - * @return void - */ - public function addSignal($signal, $listener); - - /** - * Removes a previously added signal listener. - * - * ```php - * $loop->removeSignal(SIGINT, $listener); - * ``` - * - * Any attempts to remove listeners that aren't registered will be ignored. - * - * @param int $signal - * @param callable $listener - * - * @return void - */ - public function removeSignal($signal, $listener); - - /** - * Run the event loop until there are no more tasks to perform. - * - * For many applications, this method is the only directly visible - * invocation on the event loop. - * As a rule of thumb, it is usually recommended to attach everything to the - * same loop instance and then run the loop once at the bottom end of the - * application. - * - * ```php - * $loop->run(); - * ``` - * - * This method will keep the loop running until there are no more tasks - * to perform. In other words: This method will block until the last - * timer, stream and/or signal has been removed. - * - * Likewise, it is imperative to ensure the application actually invokes - * this method once. Adding listeners to the loop and missing to actually - * run it will result in the application exiting without actually waiting - * for any of the attached listeners. - * - * This method MUST NOT be called while the loop is already running. - * This method MAY be called more than once after it has explicitly been - * [`stop()`ped](#stop) or after it automatically stopped because it - * previously did no longer have anything to do. - * - * @return void - */ - public function run(); - - /** - * Instruct a running event loop to stop. - * - * This method is considered advanced usage and should be used with care. - * As a rule of thumb, it is usually recommended to let the loop stop - * only automatically when it no longer has anything to do. - * - * This method can be used to explicitly instruct the event loop to stop: - * - * ```php - * $loop->addTimer(3.0, function () use ($loop) { - * $loop->stop(); - * }); - * ``` - * - * Calling this method on a loop instance that is not currently running or - * on a loop instance that has already been stopped has no effect. - * - * @return void - */ - public function stop(); -} diff --git a/v3_ci4/vendor/react/event-loop/src/SignalsHandler.php b/v3_ci4/vendor/react/event-loop/src/SignalsHandler.php deleted file mode 100644 index 10d125d..0000000 --- a/v3_ci4/vendor/react/event-loop/src/SignalsHandler.php +++ /dev/null @@ -1,63 +0,0 @@ -signals[$signal])) { - $this->signals[$signal] = array(); - } - - if (\in_array($listener, $this->signals[$signal])) { - return; - } - - $this->signals[$signal][] = $listener; - } - - public function remove($signal, $listener) - { - if (!isset($this->signals[$signal])) { - return; - } - - $index = \array_search($listener, $this->signals[$signal], true); - unset($this->signals[$signal][$index]); - - if (isset($this->signals[$signal]) && \count($this->signals[$signal]) === 0) { - unset($this->signals[$signal]); - } - } - - public function call($signal) - { - if (!isset($this->signals[$signal])) { - return; - } - - foreach ($this->signals[$signal] as $listener) { - \call_user_func($listener, $signal); - } - } - - public function count($signal) - { - if (!isset($this->signals[$signal])) { - return 0; - } - - return \count($this->signals[$signal]); - } - - public function isEmpty() - { - return !$this->signals; - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/StreamSelectLoop.php b/v3_ci4/vendor/react/event-loop/src/StreamSelectLoop.php deleted file mode 100644 index 1686fd7..0000000 --- a/v3_ci4/vendor/react/event-loop/src/StreamSelectLoop.php +++ /dev/null @@ -1,330 +0,0 @@ -futureTickQueue = new FutureTickQueue(); - $this->timers = new Timers(); - $this->pcntl = \function_exists('pcntl_signal') && \function_exists('pcntl_signal_dispatch'); - $this->pcntlPoll = $this->pcntl && !\function_exists('pcntl_async_signals'); - $this->signals = new SignalsHandler(); - - // prefer async signals if available (PHP 7.1+) or fall back to dispatching on each tick - if ($this->pcntl && !$this->pcntlPoll) { - \pcntl_async_signals(true); - } - } - - public function addReadStream($stream, $listener) - { - $key = (int) $stream; - - if (!isset($this->readStreams[$key])) { - $this->readStreams[$key] = $stream; - $this->readListeners[$key] = $listener; - } - } - - public function addWriteStream($stream, $listener) - { - $key = (int) $stream; - - if (!isset($this->writeStreams[$key])) { - $this->writeStreams[$key] = $stream; - $this->writeListeners[$key] = $listener; - } - } - - public function removeReadStream($stream) - { - $key = (int) $stream; - - unset( - $this->readStreams[$key], - $this->readListeners[$key] - ); - } - - public function removeWriteStream($stream) - { - $key = (int) $stream; - - unset( - $this->writeStreams[$key], - $this->writeListeners[$key] - ); - } - - public function addTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, false); - - $this->timers->add($timer); - - return $timer; - } - - public function addPeriodicTimer($interval, $callback) - { - $timer = new Timer($interval, $callback, true); - - $this->timers->add($timer); - - return $timer; - } - - public function cancelTimer(TimerInterface $timer) - { - $this->timers->cancel($timer); - } - - public function futureTick($listener) - { - $this->futureTickQueue->add($listener); - } - - public function addSignal($signal, $listener) - { - if ($this->pcntl === false) { - throw new \BadMethodCallException('Event loop feature "signals" isn\'t supported by the "StreamSelectLoop"'); - } - - $first = $this->signals->count($signal) === 0; - $this->signals->add($signal, $listener); - - if ($first) { - \pcntl_signal($signal, array($this->signals, 'call')); - } - } - - public function removeSignal($signal, $listener) - { - if (!$this->signals->count($signal)) { - return; - } - - $this->signals->remove($signal, $listener); - - if ($this->signals->count($signal) === 0) { - \pcntl_signal($signal, \SIG_DFL); - } - } - - public function run() - { - $this->running = true; - - while ($this->running) { - $this->futureTickQueue->tick(); - - $this->timers->tick(); - - // Future-tick queue has pending callbacks ... - if (!$this->running || !$this->futureTickQueue->isEmpty()) { - $timeout = 0; - - // There is a pending timer, only block until it is due ... - } elseif ($scheduledAt = $this->timers->getFirst()) { - $timeout = $scheduledAt - $this->timers->getTime(); - if ($timeout < 0) { - $timeout = 0; - } else { - // Convert float seconds to int microseconds. - // Ensure we do not exceed maximum integer size, which may - // cause the loop to tick once every ~35min on 32bit systems. - $timeout *= self::MICROSECONDS_PER_SECOND; - $timeout = $timeout > \PHP_INT_MAX ? \PHP_INT_MAX : (int)$timeout; - } - - // The only possible event is stream or signal activity, so wait forever ... - } elseif ($this->readStreams || $this->writeStreams || !$this->signals->isEmpty()) { - $timeout = null; - - // There's nothing left to do ... - } else { - break; - } - - $this->waitForStreamActivity($timeout); - } - } - - public function stop() - { - $this->running = false; - } - - /** - * Wait/check for stream activity, or until the next timer is due. - * - * @param integer|null $timeout Activity timeout in microseconds, or null to wait forever. - */ - private function waitForStreamActivity($timeout) - { - $read = $this->readStreams; - $write = $this->writeStreams; - - $available = $this->streamSelect($read, $write, $timeout); - if ($this->pcntlPoll) { - \pcntl_signal_dispatch(); - } - if (false === $available) { - // if a system call has been interrupted, - // we cannot rely on it's outcome - return; - } - - foreach ($read as $stream) { - $key = (int) $stream; - - if (isset($this->readListeners[$key])) { - \call_user_func($this->readListeners[$key], $stream); - } - } - - foreach ($write as $stream) { - $key = (int) $stream; - - if (isset($this->writeListeners[$key])) { - \call_user_func($this->writeListeners[$key], $stream); - } - } - } - - /** - * Emulate a stream_select() implementation that does not break when passed - * empty stream arrays. - * - * @param array $read An array of read streams to select upon. - * @param array $write An array of write streams to select upon. - * @param int|null $timeout Activity timeout in microseconds, or null to wait forever. - * - * @return int|false The total number of streams that are ready for read/write. - * Can return false if stream_select() is interrupted by a signal. - */ - private function streamSelect(array &$read, array &$write, $timeout) - { - if ($read || $write) { - // We do not usually use or expose the `exceptfds` parameter passed to the underlying `select`. - // However, Windows does not report failed connection attempts in `writefds` passed to `select` like most other platforms. - // Instead, it uses `writefds` only for successful connection attempts and `exceptfds` for failed connection attempts. - // We work around this by adding all sockets that look like a pending connection attempt to `exceptfds` automatically on Windows and merge it back later. - // This ensures the public API matches other loop implementations across all platforms (see also test suite or rather test matrix). - // Lacking better APIs, every write-only socket that has not yet read any data is assumed to be in a pending connection attempt state. - // @link https://docs.microsoft.com/de-de/windows/win32/api/winsock2/nf-winsock2-select - $except = null; - if (\DIRECTORY_SEPARATOR === '\\') { - $except = array(); - foreach ($write as $key => $socket) { - if (!isset($read[$key]) && @\ftell($socket) === 0) { - $except[$key] = $socket; - } - } - } - - /** @var ?callable $previous */ - $previous = \set_error_handler(function ($errno, $errstr) use (&$previous) { - // suppress warnings that occur when `stream_select()` is interrupted by a signal - // PHP defines `EINTR` through `ext-sockets` or `ext-pcntl`, otherwise use common default (Linux & Mac) - $eintr = \defined('SOCKET_EINTR') ? \SOCKET_EINTR : (\defined('PCNTL_EINTR') ? \PCNTL_EINTR : 4); - if ($errno === \E_WARNING && \strpos($errstr, '[' . $eintr .']: ') !== false) { - return; - } - - // forward any other error to registered error handler or print warning - return ($previous !== null) ? \call_user_func_array($previous, \func_get_args()) : false; - }); - - try { - $ret = \stream_select($read, $write, $except, $timeout === null ? null : 0, $timeout); - \restore_error_handler(); - } catch (\Throwable $e) { // @codeCoverageIgnoreStart - \restore_error_handler(); - throw $e; - } catch (\Exception $e) { - \restore_error_handler(); - throw $e; - } // @codeCoverageIgnoreEnd - - if ($except) { - $write = \array_merge($write, $except); - } - return $ret; - } - - if ($timeout > 0) { - \usleep($timeout); - } elseif ($timeout === null) { - // wait forever (we only reach this if we're only awaiting signals) - // this may be interrupted and return earlier when a signal is received - \sleep(PHP_INT_MAX); - } - - return 0; - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/Tick/FutureTickQueue.php b/v3_ci4/vendor/react/event-loop/src/Tick/FutureTickQueue.php deleted file mode 100644 index efabcbc..0000000 --- a/v3_ci4/vendor/react/event-loop/src/Tick/FutureTickQueue.php +++ /dev/null @@ -1,60 +0,0 @@ -queue = new SplQueue(); - } - - /** - * Add a callback to be invoked on a future tick of the event loop. - * - * Callbacks are guaranteed to be executed in the order they are enqueued. - * - * @param callable $listener The callback to invoke. - */ - public function add($listener) - { - $this->queue->enqueue($listener); - } - - /** - * Flush the callback queue. - */ - public function tick() - { - // Only invoke as many callbacks as were on the queue when tick() was called. - $count = $this->queue->count(); - - while ($count--) { - \call_user_func( - $this->queue->dequeue() - ); - } - } - - /** - * Check if the next tick queue is empty. - * - * @return boolean - */ - public function isEmpty() - { - return $this->queue->isEmpty(); - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/Timer/Timer.php b/v3_ci4/vendor/react/event-loop/src/Timer/Timer.php deleted file mode 100644 index da3602a..0000000 --- a/v3_ci4/vendor/react/event-loop/src/Timer/Timer.php +++ /dev/null @@ -1,55 +0,0 @@ -interval = (float) $interval; - $this->callback = $callback; - $this->periodic = (bool) $periodic; - } - - public function getInterval() - { - return $this->interval; - } - - public function getCallback() - { - return $this->callback; - } - - public function isPeriodic() - { - return $this->periodic; - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/Timer/Timers.php b/v3_ci4/vendor/react/event-loop/src/Timer/Timers.php deleted file mode 100644 index 53c46d0..0000000 --- a/v3_ci4/vendor/react/event-loop/src/Timer/Timers.php +++ /dev/null @@ -1,113 +0,0 @@ -useHighResolution = \function_exists('hrtime'); - } - - public function updateTime() - { - return $this->time = $this->useHighResolution ? \hrtime(true) * 1e-9 : \microtime(true); - } - - public function getTime() - { - return $this->time ?: $this->updateTime(); - } - - public function add(TimerInterface $timer) - { - $id = \PHP_VERSION_ID < 70200 ? \spl_object_hash($timer) : \spl_object_id($timer); - $this->timers[$id] = $timer; - $this->schedule[$id] = $timer->getInterval() + $this->updateTime(); - $this->sorted = false; - } - - public function contains(TimerInterface $timer) - { - $id = \PHP_VERSION_ID < 70200 ? \spl_object_hash($timer) : \spl_object_id($timer); - return isset($this->timers[$id]); - } - - public function cancel(TimerInterface $timer) - { - $id = \PHP_VERSION_ID < 70200 ? \spl_object_hash($timer) : \spl_object_id($timer); - unset($this->timers[$id], $this->schedule[$id]); - } - - public function getFirst() - { - // ensure timers are sorted to simply accessing next (first) one - if (!$this->sorted) { - $this->sorted = true; - \asort($this->schedule); - } - - return \reset($this->schedule); - } - - public function isEmpty() - { - return \count($this->timers) === 0; - } - - public function tick() - { - // hot path: skip timers if nothing is scheduled - if (!$this->schedule) { - return; - } - - // ensure timers are sorted so we can execute in order - if (!$this->sorted) { - $this->sorted = true; - \asort($this->schedule); - } - - $time = $this->updateTime(); - - foreach ($this->schedule as $id => $scheduled) { - // schedule is ordered, so loop until first timer that is not scheduled for execution now - if ($scheduled >= $time) { - break; - } - - // skip any timers that are removed while we process the current schedule - if (!isset($this->schedule[$id]) || $this->schedule[$id] !== $scheduled) { - continue; - } - - $timer = $this->timers[$id]; - \call_user_func($timer->getCallback(), $timer); - - // re-schedule if this is a periodic timer and it has not been cancelled explicitly already - if ($timer->isPeriodic() && isset($this->timers[$id])) { - $this->schedule[$id] = $timer->getInterval() + $time; - $this->sorted = false; - } else { - unset($this->timers[$id], $this->schedule[$id]); - } - } - } -} diff --git a/v3_ci4/vendor/react/event-loop/src/TimerInterface.php b/v3_ci4/vendor/react/event-loop/src/TimerInterface.php deleted file mode 100644 index cdcf773..0000000 --- a/v3_ci4/vendor/react/event-loop/src/TimerInterface.php +++ /dev/null @@ -1,27 +0,0 @@ -` and `reject(Throwable $reason): PromiseInterface`. - It is no longer possible to resolve a promise without a value (use `null` instead) or reject a promise without a reason (use `Throwable` instead). - (#93, #141 and #142 by @jsor, #138, #149 and #247 by @WyriHaximus and #213 and #246 by @clue) - - ```php - // old (arguments used to be optional) - $promise = resolve(); - $promise = reject(); - - // new (already supported before) - $promise = resolve(null); - $promise = reject(new RuntimeException()); - ``` - -* Feature / BC break: Report all unhandled rejections by default and remove ~~`done()`~~ method. - Add new `set_rejection_handler()` function to set the global rejection handler for unhandled promise rejections. - (#248, #249 and #224 by @clue) - - ```php - // Unhandled promise rejection with RuntimeException: Unhandled in example.php:2 - reject(new RuntimeException('Unhandled')); - ``` - -* BC break: Remove all deprecated APIs and reduce API surface. - Remove ~~`some()`~~, ~~`map()`~~, ~~`reduce()`~~ functions, use `any()` and `all()` functions instead. - Remove internal ~~`FulfilledPromise`~~ and ~~`RejectedPromise`~~ classes, use `resolve()` and `reject()` functions instead. - Remove legacy promise progress API (deprecated third argument to `then()` method) and deprecated ~~`LazyPromise`~~ class. - (#32 and #98 by @jsor and #164, #219 and #220 by @clue) - -* BC break: Make all classes final to encourage composition over inheritance. - (#80 by @jsor) - -* Feature / BC break: Require `array` (or `iterable`) type for `all()` + `race()` + `any()` functions and bring in line with ES6 specification. - These functions now require a single argument with a variable number of promises or values as input. - (#225 by @clue and #35 by @jsor) - -* Fix / BC break: Fix `race()` to return a forever pending promise when called with an empty `array` (or `iterable`) and bring in line with ES6 specification. - (#83 by @jsor and #225 by @clue) - -* Minor performance improvements by initializing `Deferred` in the constructor and avoiding `call_user_func()` calls. - (#151 by @WyriHaximus and #171 by @Kubo2) - -* Minor documentation improvements. - (#110 by @seregazhuk, #132 by @CharlotteDunois, #145 by @danielecr, #178 by @WyriHaximus, #189 by @srdante, #212 by @clue, #214, #239 and #243 by @SimonFrings and #231 by @nhedger) - -The following changes had to be ported to this release due to our branching -strategy, but also appeared in the [`2.x` branch](https://github.com/reactphp/promise/tree/2.x): - -* Feature: Support union types and address deprecation of `ReflectionType::getClass()` (PHP 8+). - (#197 by @cdosoftei and @SimonFrings) - -* Feature: Support intersection types (PHP 8.1+). - (#209 by @bzikarsky) - -* Feature: Support DNS types (PHP 8.2+). - (#236 by @nhedger) - -* Feature: Port all memory improvements from `2.x` to `3.x`. - (#150 by @clue and @WyriHaximus) - -* Fix: Fix checking whether cancellable promise is an object and avoid possible warning. - (#161 by @smscr) - -* Improve performance by prefixing all global functions calls with \ to skip the look up and resolve process and go straight to the global function. - (#134 by @WyriHaximus) - -* Improve test suite, update PHPUnit and PHP versions and add `.gitattributes` to exclude dev files from exports. - (#107 by @carusogabriel, #148 and #234 by @WyriHaximus, #153 by @reedy, #162, #230 and #240 by @clue, #173, #177, #185 and #199 by @SimonFrings, #193 by @woodongwong and #210 by @bzikarsky) - -The following changes were originally planned for this release but later reverted -and are not part of the final release: - -* Add iterative callback queue handler to avoid recursion (later removed to improve Fiber support). - (#28, #82 and #86 by @jsor, #158 by @WyriHaximus and #229 and #238 by @clue) - -* Trigger an `E_USER_ERROR` instead of throwing an exception from `done()` (later removed entire `done()` method to globally report unhandled rejections). - (#97 by @jsor and #224 and #248 by @clue) - -* Add type declarations for `some()` (later removed entire `some()` function). - (#172 by @WyriHaximus and #219 by @clue) - -## 2.0.0 (2013-12-10) - -See [`2.x` CHANGELOG](https://github.com/reactphp/promise/blob/2.x/CHANGELOG.md) for more details. - -## 1.0.0 (2012-11-07) - -See [`1.x` CHANGELOG](https://github.com/reactphp/promise/blob/1.x/CHANGELOG.md) for more details. diff --git a/v3_ci4/vendor/react/promise/LICENSE b/v3_ci4/vendor/react/promise/LICENSE deleted file mode 100644 index 21c1357..0000000 --- a/v3_ci4/vendor/react/promise/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Jan Sorgalla, Christian Lück, Cees-Jan Kiewiet, Chris Boden - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/v3_ci4/vendor/react/promise/README.md b/v3_ci4/vendor/react/promise/README.md deleted file mode 100644 index 2108d98..0000000 --- a/v3_ci4/vendor/react/promise/README.md +++ /dev/null @@ -1,722 +0,0 @@ -Promise -======= - -A lightweight implementation of -[CommonJS Promises/A](http://wiki.commonjs.org/wiki/Promises/A) for PHP. - -[![CI status](https://github.com/reactphp/promise/workflows/CI/badge.svg)](https://github.com/reactphp/promise/actions) -[![installs on Packagist](https://img.shields.io/packagist/dt/react/promise?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/react/promise) - -Table of Contents ------------------ - -1. [Introduction](#introduction) -2. [Concepts](#concepts) - * [Deferred](#deferred) - * [Promise](#promise-1) -3. [API](#api) - * [Deferred](#deferred-1) - * [Deferred::promise()](#deferredpromise) - * [Deferred::resolve()](#deferredresolve) - * [Deferred::reject()](#deferredreject) - * [PromiseInterface](#promiseinterface) - * [PromiseInterface::then()](#promiseinterfacethen) - * [PromiseInterface::catch()](#promiseinterfacecatch) - * [PromiseInterface::finally()](#promiseinterfacefinally) - * [PromiseInterface::cancel()](#promiseinterfacecancel) - * [~~PromiseInterface::otherwise()~~](#promiseinterfaceotherwise) - * [~~PromiseInterface::always()~~](#promiseinterfacealways) - * [Promise](#promise-2) - * [Functions](#functions) - * [resolve()](#resolve) - * [reject()](#reject) - * [all()](#all) - * [race()](#race) - * [any()](#any) - * [set_rejection_handler()](#set_rejection_handler) -4. [Examples](#examples) - * [How to use Deferred](#how-to-use-deferred) - * [How promise forwarding works](#how-promise-forwarding-works) - * [Resolution forwarding](#resolution-forwarding) - * [Rejection forwarding](#rejection-forwarding) - * [Mixed resolution and rejection forwarding](#mixed-resolution-and-rejection-forwarding) -5. [Install](#install) -6. [Tests](#tests) -7. [Credits](#credits) -8. [License](#license) - -Introduction ------------- - -Promise is a library implementing -[CommonJS Promises/A](http://wiki.commonjs.org/wiki/Promises/A) for PHP. - -It also provides several other useful promise-related concepts, such as joining -multiple promises and mapping and reducing collections of promises. - -If you've never heard about promises before, -[read this first](https://gist.github.com/domenic/3889970). - -Concepts --------- - -### Deferred - -A **Deferred** represents a computation or unit of work that may not have -completed yet. Typically (but not always), that computation will be something -that executes asynchronously and completes at some point in the future. - -### Promise - -While a deferred represents the computation itself, a **Promise** represents -the result of that computation. Thus, each deferred has a promise that acts as -a placeholder for its actual result. - -API ---- - -### Deferred - -A deferred represents an operation whose resolution is pending. It has separate -promise and resolver parts. - -```php -$deferred = new React\Promise\Deferred(); - -$promise = $deferred->promise(); - -$deferred->resolve(mixed $value); -$deferred->reject(\Throwable $reason); -``` - -The `promise` method returns the promise of the deferred. - -The `resolve` and `reject` methods control the state of the deferred. - -The constructor of the `Deferred` accepts an optional `$canceller` argument. -See [Promise](#promise-2) for more information. - -#### Deferred::promise() - -```php -$promise = $deferred->promise(); -``` - -Returns the promise of the deferred, which you can hand out to others while -keeping the authority to modify its state to yourself. - -#### Deferred::resolve() - -```php -$deferred->resolve(mixed $value); -``` - -Resolves the promise returned by `promise()`. All consumers are notified by -having `$onFulfilled` (which they registered via `$promise->then()`) called with -`$value`. - -If `$value` itself is a promise, the promise will transition to the state of -this promise once it is resolved. - -See also the [`resolve()` function](#resolve). - -#### Deferred::reject() - -```php -$deferred->reject(\Throwable $reason); -``` - -Rejects the promise returned by `promise()`, signalling that the deferred's -computation failed. -All consumers are notified by having `$onRejected` (which they registered via -`$promise->then()`) called with `$reason`. - -See also the [`reject()` function](#reject). - -### PromiseInterface - -The promise interface provides the common interface for all promise -implementations. -See [Promise](#promise-2) for the only public implementation exposed by this -package. - -A promise represents an eventual outcome, which is either fulfillment (success) -and an associated value, or rejection (failure) and an associated reason. - -Once in the fulfilled or rejected state, a promise becomes immutable. -Neither its state nor its result (or error) can be modified. - -#### PromiseInterface::then() - -```php -$transformedPromise = $promise->then(callable $onFulfilled = null, callable $onRejected = null); -``` - -Transforms a promise's value by applying a function to the promise's fulfillment -or rejection value. Returns a new promise for the transformed result. - -The `then()` method registers new fulfilled and rejection handlers with a promise -(all parameters are optional): - - * `$onFulfilled` will be invoked once the promise is fulfilled and passed - the result as the first argument. - * `$onRejected` will be invoked once the promise is rejected and passed the - reason as the first argument. - -It returns a new promise that will fulfill with the return value of either -`$onFulfilled` or `$onRejected`, whichever is called, or will reject with -the thrown exception if either throws. - -A promise makes the following guarantees about handlers registered in -the same call to `then()`: - - 1. Only one of `$onFulfilled` or `$onRejected` will be called, - never both. - 2. `$onFulfilled` and `$onRejected` will never be called more - than once. - -#### See also - -* [resolve()](#resolve) - Creating a resolved promise -* [reject()](#reject) - Creating a rejected promise - -#### PromiseInterface::catch() - -```php -$promise->catch(callable $onRejected); -``` - -Registers a rejection handler for promise. It is a shortcut for: - -```php -$promise->then(null, $onRejected); -``` - -Additionally, you can type hint the `$reason` argument of `$onRejected` to catch -only specific errors. - -```php -$promise - ->catch(function (\RuntimeException $reason) { - // Only catch \RuntimeException instances - // All other types of errors will propagate automatically - }) - ->catch(function (\Throwable $reason) { - // Catch other errors - }); -``` - -#### PromiseInterface::finally() - -```php -$newPromise = $promise->finally(callable $onFulfilledOrRejected); -``` - -Allows you to execute "cleanup" type tasks in a promise chain. - -It arranges for `$onFulfilledOrRejected` to be called, with no arguments, -when the promise is either fulfilled or rejected. - -* If `$promise` fulfills, and `$onFulfilledOrRejected` returns successfully, - `$newPromise` will fulfill with the same value as `$promise`. -* If `$promise` fulfills, and `$onFulfilledOrRejected` throws or returns a - rejected promise, `$newPromise` will reject with the thrown exception or - rejected promise's reason. -* If `$promise` rejects, and `$onFulfilledOrRejected` returns successfully, - `$newPromise` will reject with the same reason as `$promise`. -* If `$promise` rejects, and `$onFulfilledOrRejected` throws or returns a - rejected promise, `$newPromise` will reject with the thrown exception or - rejected promise's reason. - -`finally()` behaves similarly to the synchronous finally statement. When combined -with `catch()`, `finally()` allows you to write code that is similar to the familiar -synchronous catch/finally pair. - -Consider the following synchronous code: - -```php -try { - return doSomething(); -} catch (\Throwable $e) { - return handleError($e); -} finally { - cleanup(); -} -``` - -Similar asynchronous code (with `doSomething()` that returns a promise) can be -written: - -```php -return doSomething() - ->catch('handleError') - ->finally('cleanup'); -``` - -#### PromiseInterface::cancel() - -``` php -$promise->cancel(); -``` - -The `cancel()` method notifies the creator of the promise that there is no -further interest in the results of the operation. - -Once a promise is settled (either fulfilled or rejected), calling `cancel()` on -a promise has no effect. - -#### ~~PromiseInterface::otherwise()~~ - -> Deprecated since v3.0.0, see [`catch()`](#promiseinterfacecatch) instead. - -The `otherwise()` method registers a rejection handler for a promise. - -This method continues to exist only for BC reasons and to ease upgrading -between versions. It is an alias for: - -```php -$promise->catch($onRejected); -``` - -#### ~~PromiseInterface::always()~~ - -> Deprecated since v3.0.0, see [`finally()`](#promiseinterfacefinally) instead. - -The `always()` method allows you to execute "cleanup" type tasks in a promise chain. - -This method continues to exist only for BC reasons and to ease upgrading -between versions. It is an alias for: - -```php -$promise->finally($onFulfilledOrRejected); -``` - -### Promise - -Creates a promise whose state is controlled by the functions passed to -`$resolver`. - -```php -$resolver = function (callable $resolve, callable $reject) { - // Do some work, possibly asynchronously, and then - // resolve or reject. - - $resolve($awesomeResult); - // or throw new Exception('Promise rejected'); - // or $resolve($anotherPromise); - // or $reject($nastyError); -}; - -$canceller = function () { - // Cancel/abort any running operations like network connections, streams etc. - - // Reject promise by throwing an exception - throw new Exception('Promise cancelled'); -}; - -$promise = new React\Promise\Promise($resolver, $canceller); -``` - -The promise constructor receives a resolver function and an optional canceller -function which both will be called with two arguments: - - * `$resolve($value)` - Primary function that seals the fate of the - returned promise. Accepts either a non-promise value, or another promise. - When called with a non-promise value, fulfills promise with that value. - When called with another promise, e.g. `$resolve($otherPromise)`, promise's - fate will be equivalent to that of `$otherPromise`. - * `$reject($reason)` - Function that rejects the promise. It is recommended to - just throw an exception instead of using `$reject()`. - -If the resolver or canceller throw an exception, the promise will be rejected -with that thrown exception as the rejection reason. - -The resolver function will be called immediately, the canceller function only -once all consumers called the `cancel()` method of the promise. - -### Functions - -Useful functions for creating and joining collections of promises. - -All functions working on promise collections (like `all()`, `race()`, -etc.) support cancellation. This means, if you call `cancel()` on the returned -promise, all promises in the collection are cancelled. - -#### resolve() - -```php -$promise = React\Promise\resolve(mixed $promiseOrValue); -``` - -Creates a promise for the supplied `$promiseOrValue`. - -If `$promiseOrValue` is a value, it will be the resolution value of the -returned promise. - -If `$promiseOrValue` is a thenable (any object that provides a `then()` method), -a trusted promise that follows the state of the thenable is returned. - -If `$promiseOrValue` is a promise, it will be returned as is. - -The resulting `$promise` implements the [`PromiseInterface`](#promiseinterface) -and can be consumed like any other promise: - -```php -$promise = React\Promise\resolve(42); - -$promise->then(function (int $result): void { - var_dump($result); -}, function (\Throwable $e): void { - echo 'Error: ' . $e->getMessage() . PHP_EOL; -}); -``` - -#### reject() - -```php -$promise = React\Promise\reject(\Throwable $reason); -``` - -Creates a rejected promise for the supplied `$reason`. - -Note that the [`\Throwable`](https://www.php.net/manual/en/class.throwable.php) interface introduced in PHP 7 covers -both user land [`\Exception`](https://www.php.net/manual/en/class.exception.php)'s and -[`\Error`](https://www.php.net/manual/en/class.error.php) internal PHP errors. By enforcing `\Throwable` as reason to -reject a promise, any language error or user land exception can be used to reject a promise. - -The resulting `$promise` implements the [`PromiseInterface`](#promiseinterface) -and can be consumed like any other promise: - -```php -$promise = React\Promise\reject(new RuntimeException('Request failed')); - -$promise->then(function (int $result): void { - var_dump($result); -}, function (\Throwable $e): void { - echo 'Error: ' . $e->getMessage() . PHP_EOL; -}); -``` - -Note that rejected promises should always be handled similar to how any -exceptions should always be caught in a `try` + `catch` block. If you remove the -last reference to a rejected promise that has not been handled, it will -report an unhandled promise rejection: - -```php -function incorrect(): int -{ - $promise = React\Promise\reject(new RuntimeException('Request failed')); - - // Commented out: No rejection handler registered here. - // $promise->then(null, function (\Throwable $e): void { /* ignore */ }); - - // Returning from a function will remove all local variable references, hence why - // this will report an unhandled promise rejection here. - return 42; -} - -// Calling this function will log an error message plus its stack trace: -// Unhandled promise rejection with RuntimeException: Request failed in example.php:10 -incorrect(); -``` - -A rejected promise will be considered "handled" if you catch the rejection -reason with either the [`then()` method](#promiseinterfacethen), the -[`catch()` method](#promiseinterfacecatch), or the -[`finally()` method](#promiseinterfacefinally). Note that each of these methods -return a new promise that may again be rejected if you re-throw an exception. - -A rejected promise will also be considered "handled" if you abort the operation -with the [`cancel()` method](#promiseinterfacecancel) (which in turn would -usually reject the promise if it is still pending). - -See also the [`set_rejection_handler()` function](#set_rejection_handler). - -#### all() - -```php -$promise = React\Promise\all(iterable $promisesOrValues); -``` - -Returns a promise that will resolve only once all the items in -`$promisesOrValues` have resolved. The resolution value of the returned promise -will be an array containing the resolution values of each of the items in -`$promisesOrValues`. - -#### race() - -```php -$promise = React\Promise\race(iterable $promisesOrValues); -``` - -Initiates a competitive race that allows one winner. Returns a promise which is -resolved in the same way the first settled promise resolves. - -The returned promise will become **infinitely pending** if `$promisesOrValues` -contains 0 items. - -#### any() - -```php -$promise = React\Promise\any(iterable $promisesOrValues); -``` - -Returns a promise that will resolve when any one of the items in -`$promisesOrValues` resolves. The resolution value of the returned promise -will be the resolution value of the triggering item. - -The returned promise will only reject if *all* items in `$promisesOrValues` are -rejected. The rejection value will be a `React\Promise\Exception\CompositeException` -which holds all rejection reasons. The rejection reasons can be obtained with -`CompositeException::getThrowables()`. - -The returned promise will also reject with a `React\Promise\Exception\LengthException` -if `$promisesOrValues` contains 0 items. - -#### set_rejection_handler() - -```php -React\Promise\set_rejection_handler(?callable $callback): ?callable; -``` - -Sets the global rejection handler for unhandled promise rejections. - -Note that rejected promises should always be handled similar to how any -exceptions should always be caught in a `try` + `catch` block. If you remove -the last reference to a rejected promise that has not been handled, it will -report an unhandled promise rejection. See also the [`reject()` function](#reject) -for more details. - -The `?callable $callback` argument MUST be a valid callback function that -accepts a single `Throwable` argument or a `null` value to restore the -default promise rejection handler. The return value of the callback function -will be ignored and has no effect, so you SHOULD return a `void` value. The -callback function MUST NOT throw or the program will be terminated with a -fatal error. - -The function returns the previous rejection handler or `null` if using the -default promise rejection handler. - -The default promise rejection handler will log an error message plus its stack -trace: - -```php -// Unhandled promise rejection with RuntimeException: Unhandled in example.php:2 -React\Promise\reject(new RuntimeException('Unhandled')); -``` - -The promise rejection handler may be used to use customize the log message or -write to custom log targets. As a rule of thumb, this function should only be -used as a last resort and promise rejections are best handled with either the -[`then()` method](#promiseinterfacethen), the -[`catch()` method](#promiseinterfacecatch), or the -[`finally()` method](#promiseinterfacefinally). -See also the [`reject()` function](#reject) for more details. - -Examples --------- - -### How to use Deferred - -```php -function getAwesomeResultPromise() -{ - $deferred = new React\Promise\Deferred(); - - // Execute a Node.js-style function using the callback pattern - computeAwesomeResultAsynchronously(function (\Throwable $error, $result) use ($deferred) { - if ($error) { - $deferred->reject($error); - } else { - $deferred->resolve($result); - } - }); - - // Return the promise - return $deferred->promise(); -} - -getAwesomeResultPromise() - ->then( - function ($value) { - // Deferred resolved, do something with $value - }, - function (\Throwable $reason) { - // Deferred rejected, do something with $reason - } - ); -``` - -### How promise forwarding works - -A few simple examples to show how the mechanics of Promises/A forwarding works. -These examples are contrived, of course, and in real usage, promise chains will -typically be spread across several function calls, or even several levels of -your application architecture. - -#### Resolution forwarding - -Resolved promises forward resolution values to the next promise. -The first promise, `$deferred->promise()`, will resolve with the value passed -to `$deferred->resolve()` below. - -Each call to `then()` returns a new promise that will resolve with the return -value of the previous handler. This creates a promise "pipeline". - -```php -$deferred = new React\Promise\Deferred(); - -$deferred->promise() - ->then(function ($x) { - // $x will be the value passed to $deferred->resolve() below - // and returns a *new promise* for $x + 1 - return $x + 1; - }) - ->then(function ($x) { - // $x === 2 - // This handler receives the return value of the - // previous handler. - return $x + 1; - }) - ->then(function ($x) { - // $x === 3 - // This handler receives the return value of the - // previous handler. - return $x + 1; - }) - ->then(function ($x) { - // $x === 4 - // This handler receives the return value of the - // previous handler. - echo 'Resolve ' . $x; - }); - -$deferred->resolve(1); // Prints "Resolve 4" -``` - -#### Rejection forwarding - -Rejected promises behave similarly, and also work similarly to try/catch: -When you catch an exception, you must rethrow for it to propagate. - -Similarly, when you handle a rejected promise, to propagate the rejection, -"rethrow" it by either returning a rejected promise, or actually throwing -(since promise translates thrown exceptions into rejections) - -```php -$deferred = new React\Promise\Deferred(); - -$deferred->promise() - ->then(function ($x) { - throw new \Exception($x + 1); - }) - ->catch(function (\Exception $x) { - // Propagate the rejection - throw $x; - }) - ->catch(function (\Exception $x) { - // Can also propagate by returning another rejection - return React\Promise\reject( - new \Exception($x->getMessage() + 1) - ); - }) - ->catch(function ($x) { - echo 'Reject ' . $x->getMessage(); // 3 - }); - -$deferred->resolve(1); // Prints "Reject 3" -``` - -#### Mixed resolution and rejection forwarding - -Just like try/catch, you can choose to propagate or not. Mixing resolutions and -rejections will still forward handler results in a predictable way. - -```php -$deferred = new React\Promise\Deferred(); - -$deferred->promise() - ->then(function ($x) { - return $x + 1; - }) - ->then(function ($x) { - throw new \Exception($x + 1); - }) - ->catch(function (\Exception $x) { - // Handle the rejection, and don't propagate. - // This is like catch without a rethrow - return $x->getMessage() + 1; - }) - ->then(function ($x) { - echo 'Mixed ' . $x; // 4 - }); - -$deferred->resolve(1); // Prints "Mixed 4" -``` - -Install -------- - -The recommended way to install this library is [through Composer](https://getcomposer.org/). -[New to Composer?](https://getcomposer.org/doc/00-intro.md) - -This project follows [SemVer](https://semver.org/). -This will install the latest supported version from this branch: - -```bash -composer require react/promise:^3.2 -``` - -See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades. - -This project aims to run on any platform and thus does not require any PHP -extensions and supports running on PHP 7.1 through current PHP 8+. -It's *highly recommended to use the latest supported PHP version* for this project. - -We're committed to providing long-term support (LTS) options and to provide a -smooth upgrade path. If you're using an older PHP version, you may use the -[`2.x` branch](https://github.com/reactphp/promise/tree/2.x) (PHP 5.4+) or -[`1.x` branch](https://github.com/reactphp/promise/tree/1.x) (PHP 5.3+) which both -provide a compatible API but do not take advantage of newer language features. -You may target multiple versions at the same time to support a wider range of -PHP versions like this: - -```bash -composer require "react/promise:^3 || ^2 || ^1" -``` - -## Tests - -To run the test suite, you first need to clone this repo and then install all -dependencies [through Composer](https://getcomposer.org/): - -```bash -composer install -``` - -To run the test suite, go to the project root and run: - -```bash -vendor/bin/phpunit -``` - -On top of this, we use PHPStan on max level to ensure type safety across the project: - -```bash -vendor/bin/phpstan -``` - -Credits -------- - -Promise is a port of [when.js](https://github.com/cujojs/when) -by [Brian Cavalier](https://github.com/briancavalier). - -Also, large parts of the documentation have been ported from the when.js -[Wiki](https://github.com/cujojs/when/wiki) and the -[API docs](https://github.com/cujojs/when/blob/master/docs/api.md). - -License -------- - -Released under the [MIT](LICENSE) license. diff --git a/v3_ci4/vendor/react/promise/composer.json b/v3_ci4/vendor/react/promise/composer.json deleted file mode 100644 index 6bf687d..0000000 --- a/v3_ci4/vendor/react/promise/composer.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "react/promise", - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "license": "MIT", - "authors": [ - { - "name": "Jan Sorgalla", - "homepage": "https://sorgalla.com/", - "email": "jsorgalla@gmail.com" - }, - { - "name": "Christian Lück", - "homepage": "https://clue.engineering/", - "email": "christian@clue.engineering" - }, - { - "name": "Cees-Jan Kiewiet", - "homepage": "https://wyrihaximus.net/", - "email": "reactphp@ceesjankiewiet.nl" - }, - { - "name": "Chris Boden", - "homepage": "https://cboden.dev/", - "email": "cboden@gmail.com" - } - ], - "require": { - "php": ">=7.1.0" - }, - "require-dev": { - "phpstan/phpstan": "1.12.28 || 1.4.10", - "phpunit/phpunit": "^9.6 || ^7.5" - }, - "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "autoload-dev": { - "psr-4": { - "React\\Promise\\": [ - "tests/fixtures/", - "tests/" - ] - }, - "files": [ - "tests/Fiber.php" - ] - }, - "keywords": [ - "promise", - "promises" - ] -} diff --git a/v3_ci4/vendor/react/promise/src/Deferred.php b/v3_ci4/vendor/react/promise/src/Deferred.php deleted file mode 100644 index 80b8fcf..0000000 --- a/v3_ci4/vendor/react/promise/src/Deferred.php +++ /dev/null @@ -1,52 +0,0 @@ - - */ - private $promise; - - /** @var callable(T):void */ - private $resolveCallback; - - /** @var callable(\Throwable):void */ - private $rejectCallback; - - /** - * @param (callable(callable(T):void,callable(\Throwable):void):void)|null $canceller - */ - public function __construct(?callable $canceller = null) - { - $this->promise = new Promise(function ($resolve, $reject): void { - $this->resolveCallback = $resolve; - $this->rejectCallback = $reject; - }, $canceller); - } - - /** - * @return PromiseInterface - */ - public function promise(): PromiseInterface - { - return $this->promise; - } - - /** - * @param T $value - */ - public function resolve($value): void - { - ($this->resolveCallback)($value); - } - - public function reject(\Throwable $reason): void - { - ($this->rejectCallback)($reason); - } -} diff --git a/v3_ci4/vendor/react/promise/src/Exception/CompositeException.php b/v3_ci4/vendor/react/promise/src/Exception/CompositeException.php deleted file mode 100644 index 2e672a0..0000000 --- a/v3_ci4/vendor/react/promise/src/Exception/CompositeException.php +++ /dev/null @@ -1,32 +0,0 @@ -throwables = $throwables; - } - - /** - * @return \Throwable[] - */ - public function getThrowables(): array - { - return $this->throwables; - } -} diff --git a/v3_ci4/vendor/react/promise/src/Exception/LengthException.php b/v3_ci4/vendor/react/promise/src/Exception/LengthException.php deleted file mode 100644 index 775c48d..0000000 --- a/v3_ci4/vendor/react/promise/src/Exception/LengthException.php +++ /dev/null @@ -1,7 +0,0 @@ -started) { - return; - } - - $this->started = true; - $this->drain(); - } - - /** - * @param mixed $cancellable - */ - public function enqueue($cancellable): void - { - if (!\is_object($cancellable) || !\method_exists($cancellable, 'then') || !\method_exists($cancellable, 'cancel')) { - return; - } - - $length = \array_push($this->queue, $cancellable); - - if ($this->started && 1 === $length) { - $this->drain(); - } - } - - private function drain(): void - { - for ($i = \key($this->queue); isset($this->queue[$i]); $i++) { - $cancellable = $this->queue[$i]; - assert(\method_exists($cancellable, 'cancel')); - - $exception = null; - - try { - $cancellable->cancel(); - } catch (\Throwable $exception) { - } - - unset($this->queue[$i]); - - if ($exception) { - throw $exception; - } - } - - $this->queue = []; - } -} diff --git a/v3_ci4/vendor/react/promise/src/Internal/FulfilledPromise.php b/v3_ci4/vendor/react/promise/src/Internal/FulfilledPromise.php deleted file mode 100644 index 8a66cff..0000000 --- a/v3_ci4/vendor/react/promise/src/Internal/FulfilledPromise.php +++ /dev/null @@ -1,90 +0,0 @@ - - */ -final class FulfilledPromise implements PromiseInterface -{ - /** @var T */ - private $value; - - /** - * @param T $value - * @throws \InvalidArgumentException - */ - public function __construct($value = null) - { - if ($value instanceof PromiseInterface) { - throw new \InvalidArgumentException('You cannot create React\Promise\FulfilledPromise with a promise. Use React\Promise\resolve($promiseOrValue) instead.'); - } - - $this->value = $value; - } - - /** - * @template TFulfilled - * @param ?(callable((T is void ? null : T)): (PromiseInterface|TFulfilled)) $onFulfilled - * @return PromiseInterface<($onFulfilled is null ? T : TFulfilled)> - */ - public function then(?callable $onFulfilled = null, ?callable $onRejected = null): PromiseInterface - { - if (null === $onFulfilled) { - return $this; - } - - try { - /** - * @var PromiseInterface|T $result - */ - $result = $onFulfilled($this->value); - return resolve($result); - } catch (\Throwable $exception) { - return new RejectedPromise($exception); - } - } - - public function catch(callable $onRejected): PromiseInterface - { - return $this; - } - - public function finally(callable $onFulfilledOrRejected): PromiseInterface - { - return $this->then(function ($value) use ($onFulfilledOrRejected): PromiseInterface { - /** @var T $value */ - return resolve($onFulfilledOrRejected())->then(function () use ($value) { - return $value; - }); - }); - } - - public function cancel(): void - { - } - - /** - * @deprecated 3.0.0 Use `catch()` instead - * @see self::catch() - */ - public function otherwise(callable $onRejected): PromiseInterface - { - return $this->catch($onRejected); - } - - /** - * @deprecated 3.0.0 Use `finally()` instead - * @see self::finally() - */ - public function always(callable $onFulfilledOrRejected): PromiseInterface - { - return $this->finally($onFulfilledOrRejected); - } -} diff --git a/v3_ci4/vendor/react/promise/src/Internal/RejectedPromise.php b/v3_ci4/vendor/react/promise/src/Internal/RejectedPromise.php deleted file mode 100644 index aa1dff3..0000000 --- a/v3_ci4/vendor/react/promise/src/Internal/RejectedPromise.php +++ /dev/null @@ -1,128 +0,0 @@ - - */ -final class RejectedPromise implements PromiseInterface -{ - /** @var \Throwable */ - private $reason; - - /** @var bool */ - private $handled = false; - - /** - * @param \Throwable $reason - */ - public function __construct(\Throwable $reason) - { - $this->reason = $reason; - } - - /** @throws void */ - public function __destruct() - { - if ($this->handled) { - return; - } - - $handler = set_rejection_handler(null); - if ($handler === null) { - $message = 'Unhandled promise rejection with ' . $this->reason; - - \error_log($message); - return; - } - - try { - $handler($this->reason); - } catch (\Throwable $e) { - \preg_match('/^([^:\s]++)(.*+)$/sm', (string) $e, $match); - \assert(isset($match[1], $match[2])); - $message = 'Fatal error: Uncaught ' . $match[1] . ' from unhandled promise rejection handler' . $match[2]; - - \error_log($message); - exit(255); - } - } - - /** - * @template TRejected - * @param ?callable $onFulfilled - * @param ?(callable(\Throwable): (PromiseInterface|TRejected)) $onRejected - * @return PromiseInterface<($onRejected is null ? never : TRejected)> - */ - public function then(?callable $onFulfilled = null, ?callable $onRejected = null): PromiseInterface - { - if (null === $onRejected) { - return $this; - } - - $this->handled = true; - - try { - return resolve($onRejected($this->reason)); - } catch (\Throwable $exception) { - return new RejectedPromise($exception); - } - } - - /** - * @template TThrowable of \Throwable - * @template TRejected - * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected - * @return PromiseInterface - */ - public function catch(callable $onRejected): PromiseInterface - { - if (!_checkTypehint($onRejected, $this->reason)) { - return $this; - } - - /** - * @var callable(\Throwable):(PromiseInterface|TRejected) $onRejected - */ - return $this->then(null, $onRejected); - } - - public function finally(callable $onFulfilledOrRejected): PromiseInterface - { - return $this->then(null, function (\Throwable $reason) use ($onFulfilledOrRejected): PromiseInterface { - return resolve($onFulfilledOrRejected())->then(function () use ($reason): PromiseInterface { - return new RejectedPromise($reason); - }); - }); - } - - public function cancel(): void - { - $this->handled = true; - } - - /** - * @deprecated 3.0.0 Use `catch()` instead - * @see self::catch() - */ - public function otherwise(callable $onRejected): PromiseInterface - { - return $this->catch($onRejected); - } - - /** - * @deprecated 3.0.0 Use `always()` instead - * @see self::always() - */ - public function always(callable $onFulfilledOrRejected): PromiseInterface - { - return $this->finally($onFulfilledOrRejected); - } -} diff --git a/v3_ci4/vendor/react/promise/src/Promise.php b/v3_ci4/vendor/react/promise/src/Promise.php deleted file mode 100644 index 0828674..0000000 --- a/v3_ci4/vendor/react/promise/src/Promise.php +++ /dev/null @@ -1,304 +0,0 @@ - - */ -final class Promise implements PromiseInterface -{ - /** @var (callable(callable(T):void,callable(\Throwable):void):void)|null */ - private $canceller; - - /** @var ?PromiseInterface */ - private $result; - - /** @var list):void> */ - private $handlers = []; - - /** @var int */ - private $requiredCancelRequests = 0; - - /** @var bool */ - private $cancelled = false; - - /** - * @param callable(callable(T):void,callable(\Throwable):void):void $resolver - * @param (callable(callable(T):void,callable(\Throwable):void):void)|null $canceller - */ - public function __construct(callable $resolver, ?callable $canceller = null) - { - $this->canceller = $canceller; - - // Explicitly overwrite arguments with null values before invoking - // resolver function. This ensure that these arguments do not show up - // in the stack trace in PHP 7+ only. - $cb = $resolver; - $resolver = $canceller = null; - $this->call($cb); - } - - public function then(?callable $onFulfilled = null, ?callable $onRejected = null): PromiseInterface - { - if (null !== $this->result) { - return $this->result->then($onFulfilled, $onRejected); - } - - if (null === $this->canceller) { - return new static($this->resolver($onFulfilled, $onRejected)); - } - - // This promise has a canceller, so we create a new child promise which - // has a canceller that invokes the parent canceller if all other - // followers are also cancelled. We keep a reference to this promise - // instance for the static canceller function and clear this to avoid - // keeping a cyclic reference between parent and follower. - $parent = $this; - ++$parent->requiredCancelRequests; - - return new static( - $this->resolver($onFulfilled, $onRejected), - static function () use (&$parent): void { - assert($parent instanceof self); - --$parent->requiredCancelRequests; - - if ($parent->requiredCancelRequests <= 0) { - $parent->cancel(); - } - - $parent = null; - } - ); - } - - /** - * @template TThrowable of \Throwable - * @template TRejected - * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected - * @return PromiseInterface - */ - public function catch(callable $onRejected): PromiseInterface - { - return $this->then(null, static function (\Throwable $reason) use ($onRejected) { - if (!_checkTypehint($onRejected, $reason)) { - return new RejectedPromise($reason); - } - - /** - * @var callable(\Throwable):(PromiseInterface|TRejected) $onRejected - */ - return $onRejected($reason); - }); - } - - public function finally(callable $onFulfilledOrRejected): PromiseInterface - { - return $this->then(static function ($value) use ($onFulfilledOrRejected): PromiseInterface { - /** @var T $value */ - return resolve($onFulfilledOrRejected())->then(function () use ($value) { - return $value; - }); - }, static function (\Throwable $reason) use ($onFulfilledOrRejected): PromiseInterface { - return resolve($onFulfilledOrRejected())->then(function () use ($reason): RejectedPromise { - return new RejectedPromise($reason); - }); - }); - } - - public function cancel(): void - { - $this->cancelled = true; - $canceller = $this->canceller; - $this->canceller = null; - - $parentCanceller = null; - - if (null !== $this->result) { - // Forward cancellation to rejected promise to avoid reporting unhandled rejection - if ($this->result instanceof RejectedPromise) { - $this->result->cancel(); - } - - // Go up the promise chain and reach the top most promise which is - // itself not following another promise - $root = $this->unwrap($this->result); - - // Return if the root promise is already resolved or a - // FulfilledPromise or RejectedPromise - if (!$root instanceof self || null !== $root->result) { - return; - } - - $root->requiredCancelRequests--; - - if ($root->requiredCancelRequests <= 0) { - $parentCanceller = [$root, 'cancel']; - } - } - - if (null !== $canceller) { - $this->call($canceller); - } - - // For BC, we call the parent canceller after our own canceller - if ($parentCanceller) { - $parentCanceller(); - } - } - - /** - * @deprecated 3.0.0 Use `catch()` instead - * @see self::catch() - */ - public function otherwise(callable $onRejected): PromiseInterface - { - return $this->catch($onRejected); - } - - /** - * @deprecated 3.0.0 Use `finally()` instead - * @see self::finally() - */ - public function always(callable $onFulfilledOrRejected): PromiseInterface - { - return $this->finally($onFulfilledOrRejected); - } - - private function resolver(?callable $onFulfilled = null, ?callable $onRejected = null): callable - { - return function (callable $resolve, callable $reject) use ($onFulfilled, $onRejected): void { - $this->handlers[] = static function (PromiseInterface $promise) use ($onFulfilled, $onRejected, $resolve, $reject): void { - $promise = $promise->then($onFulfilled, $onRejected); - - if ($promise instanceof self && $promise->result === null) { - $promise->handlers[] = static function (PromiseInterface $promise) use ($resolve, $reject): void { - $promise->then($resolve, $reject); - }; - } else { - $promise->then($resolve, $reject); - } - }; - }; - } - - private function reject(\Throwable $reason): void - { - if (null !== $this->result) { - return; - } - - $this->settle(reject($reason)); - } - - /** - * @param PromiseInterface $result - */ - private function settle(PromiseInterface $result): void - { - $result = $this->unwrap($result); - - if ($result === $this) { - $result = new RejectedPromise( - new \LogicException('Cannot resolve a promise with itself.') - ); - } - - if ($result instanceof self) { - $result->requiredCancelRequests++; - } else { - // Unset canceller only when not following a pending promise - $this->canceller = null; - } - - $handlers = $this->handlers; - - $this->handlers = []; - $this->result = $result; - - foreach ($handlers as $handler) { - $handler($result); - } - - // Forward cancellation to rejected promise to avoid reporting unhandled rejection - if ($this->cancelled && $result instanceof RejectedPromise) { - $result->cancel(); - } - } - - /** - * @param PromiseInterface $promise - * @return PromiseInterface - */ - private function unwrap(PromiseInterface $promise): PromiseInterface - { - while ($promise instanceof self && null !== $promise->result) { - /** @var PromiseInterface $promise */ - $promise = $promise->result; - } - - return $promise; - } - - /** - * @param callable(callable(mixed):void,callable(\Throwable):void):void $cb - */ - private function call(callable $cb): void - { - // Explicitly overwrite argument with null value. This ensure that this - // argument does not show up in the stack trace in PHP 7+ only. - $callback = $cb; - $cb = null; - - // Use reflection to inspect number of arguments expected by this callback. - // We did some careful benchmarking here: Using reflection to avoid unneeded - // function arguments is actually faster than blindly passing them. - // Also, this helps avoiding unnecessary function arguments in the call stack - // if the callback creates an Exception (creating garbage cycles). - if (\is_array($callback)) { - $ref = new \ReflectionMethod($callback[0], $callback[1]); - } elseif (\is_object($callback) && !$callback instanceof \Closure) { - $ref = new \ReflectionMethod($callback, '__invoke'); - } else { - assert($callback instanceof \Closure || \is_string($callback)); - $ref = new \ReflectionFunction($callback); - } - $args = $ref->getNumberOfParameters(); - - try { - if ($args === 0) { - $callback(); - } else { - // Keep references to this promise instance for the static resolve/reject functions. - // By using static callbacks that are not bound to this instance - // and passing the target promise instance by reference, we can - // still execute its resolving logic and still clear this - // reference when settling the promise. This helps avoiding - // garbage cycles if any callback creates an Exception. - // These assumptions are covered by the test suite, so if you ever feel like - // refactoring this, go ahead, any alternative suggestions are welcome! - $target =& $this; - - $callback( - static function ($value) use (&$target): void { - if ($target !== null) { - $target->settle(resolve($value)); - $target = null; - } - }, - static function (\Throwable $reason) use (&$target): void { - if ($target !== null) { - $target->reject($reason); - $target = null; - } - } - ); - } - } catch (\Throwable $e) { - $target = null; - $this->reject($e); - } - } -} diff --git a/v3_ci4/vendor/react/promise/src/PromiseInterface.php b/v3_ci4/vendor/react/promise/src/PromiseInterface.php deleted file mode 100644 index 5869f76..0000000 --- a/v3_ci4/vendor/react/promise/src/PromiseInterface.php +++ /dev/null @@ -1,152 +0,0 @@ -|TFulfilled)) $onFulfilled - * @param ?(callable(\Throwable): (PromiseInterface|TRejected)) $onRejected - * @return PromiseInterface<($onRejected is null ? ($onFulfilled is null ? T : TFulfilled) : ($onFulfilled is null ? T|TRejected : TFulfilled|TRejected))> - */ - public function then(?callable $onFulfilled = null, ?callable $onRejected = null): PromiseInterface; - - /** - * Registers a rejection handler for promise. It is a shortcut for: - * - * ```php - * $promise->then(null, $onRejected); - * ``` - * - * Additionally, you can type hint the `$reason` argument of `$onRejected` to catch - * only specific errors. - * - * @template TThrowable of \Throwable - * @template TRejected - * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected - * @return PromiseInterface - */ - public function catch(callable $onRejected): PromiseInterface; - - /** - * Allows you to execute "cleanup" type tasks in a promise chain. - * - * It arranges for `$onFulfilledOrRejected` to be called, with no arguments, - * when the promise is either fulfilled or rejected. - * - * * If `$promise` fulfills, and `$onFulfilledOrRejected` returns successfully, - * `$newPromise` will fulfill with the same value as `$promise`. - * * If `$promise` fulfills, and `$onFulfilledOrRejected` throws or returns a - * rejected promise, `$newPromise` will reject with the thrown exception or - * rejected promise's reason. - * * If `$promise` rejects, and `$onFulfilledOrRejected` returns successfully, - * `$newPromise` will reject with the same reason as `$promise`. - * * If `$promise` rejects, and `$onFulfilledOrRejected` throws or returns a - * rejected promise, `$newPromise` will reject with the thrown exception or - * rejected promise's reason. - * - * `finally()` behaves similarly to the synchronous finally statement. When combined - * with `catch()`, `finally()` allows you to write code that is similar to the familiar - * synchronous catch/finally pair. - * - * Consider the following synchronous code: - * - * ```php - * try { - * return doSomething(); - * } catch(\Exception $e) { - * return handleError($e); - * } finally { - * cleanup(); - * } - * ``` - * - * Similar asynchronous code (with `doSomething()` that returns a promise) can be - * written: - * - * ```php - * return doSomething() - * ->catch('handleError') - * ->finally('cleanup'); - * ``` - * - * @param callable(): (void|PromiseInterface) $onFulfilledOrRejected - * @return PromiseInterface - */ - public function finally(callable $onFulfilledOrRejected): PromiseInterface; - - /** - * The `cancel()` method notifies the creator of the promise that there is no - * further interest in the results of the operation. - * - * Once a promise is settled (either fulfilled or rejected), calling `cancel()` on - * a promise has no effect. - * - * @return void - */ - public function cancel(): void; - - /** - * [Deprecated] Registers a rejection handler for a promise. - * - * This method continues to exist only for BC reasons and to ease upgrading - * between versions. It is an alias for: - * - * ```php - * $promise->catch($onRejected); - * ``` - * - * @template TThrowable of \Throwable - * @template TRejected - * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected - * @return PromiseInterface - * @deprecated 3.0.0 Use catch() instead - * @see self::catch() - */ - public function otherwise(callable $onRejected): PromiseInterface; - - /** - * [Deprecated] Allows you to execute "cleanup" type tasks in a promise chain. - * - * This method continues to exist only for BC reasons and to ease upgrading - * between versions. It is an alias for: - * - * ```php - * $promise->finally($onFulfilledOrRejected); - * ``` - * - * @param callable(): (void|PromiseInterface) $onFulfilledOrRejected - * @return PromiseInterface - * @deprecated 3.0.0 Use finally() instead - * @see self::finally() - */ - public function always(callable $onFulfilledOrRejected): PromiseInterface; -} diff --git a/v3_ci4/vendor/react/promise/src/functions.php b/v3_ci4/vendor/react/promise/src/functions.php deleted file mode 100644 index 214aad6..0000000 --- a/v3_ci4/vendor/react/promise/src/functions.php +++ /dev/null @@ -1,345 +0,0 @@ -|T $promiseOrValue - * @return PromiseInterface - */ -function resolve($promiseOrValue): PromiseInterface -{ - if ($promiseOrValue instanceof PromiseInterface) { - return $promiseOrValue; - } - - if (\is_object($promiseOrValue) && \method_exists($promiseOrValue, 'then')) { - $canceller = null; - - if (\method_exists($promiseOrValue, 'cancel')) { - $canceller = [$promiseOrValue, 'cancel']; - assert(\is_callable($canceller)); - } - - /** @var Promise */ - return new Promise(function (callable $resolve, callable $reject) use ($promiseOrValue): void { - $promiseOrValue->then($resolve, $reject); - }, $canceller); - } - - return new FulfilledPromise($promiseOrValue); -} - -/** - * Creates a rejected promise for the supplied `$reason`. - * - * If `$reason` is a value, it will be the rejection value of the - * returned promise. - * - * If `$reason` is a promise, its completion value will be the rejected - * value of the returned promise. - * - * This can be useful in situations where you need to reject a promise without - * throwing an exception. For example, it allows you to propagate a rejection with - * the value of another promise. - * - * @return PromiseInterface - */ -function reject(\Throwable $reason): PromiseInterface -{ - return new RejectedPromise($reason); -} - -/** - * Returns a promise that will resolve only once all the items in - * `$promisesOrValues` have resolved. The resolution value of the returned promise - * will be an array containing the resolution values of each of the items in - * `$promisesOrValues`. - * - * @template T - * @param iterable|T> $promisesOrValues - * @return PromiseInterface> - */ -function all(iterable $promisesOrValues): PromiseInterface -{ - $cancellationQueue = new Internal\CancellationQueue(); - - /** @var Promise> */ - return new Promise(function (callable $resolve, callable $reject) use ($promisesOrValues, $cancellationQueue): void { - $toResolve = 0; - /** @var bool */ - $continue = true; - $values = []; - - foreach ($promisesOrValues as $i => $promiseOrValue) { - $cancellationQueue->enqueue($promiseOrValue); - $values[$i] = null; - ++$toResolve; - - resolve($promiseOrValue)->then( - function ($value) use ($i, &$values, &$toResolve, &$continue, $resolve): void { - $values[$i] = $value; - - if (0 === --$toResolve && !$continue) { - $resolve($values); - } - }, - function (\Throwable $reason) use (&$continue, $reject): void { - $continue = false; - $reject($reason); - } - ); - - if (!$continue && !\is_array($promisesOrValues)) { - break; - } - } - - $continue = false; - if ($toResolve === 0) { - $resolve($values); - } - }, $cancellationQueue); -} - -/** - * Initiates a competitive race that allows one winner. Returns a promise which is - * resolved in the same way the first settled promise resolves. - * - * The returned promise will become **infinitely pending** if `$promisesOrValues` - * contains 0 items. - * - * @template T - * @param iterable|T> $promisesOrValues - * @return PromiseInterface - */ -function race(iterable $promisesOrValues): PromiseInterface -{ - $cancellationQueue = new Internal\CancellationQueue(); - - /** @var Promise */ - return new Promise(function (callable $resolve, callable $reject) use ($promisesOrValues, $cancellationQueue): void { - $continue = true; - - foreach ($promisesOrValues as $promiseOrValue) { - $cancellationQueue->enqueue($promiseOrValue); - - resolve($promiseOrValue)->then($resolve, $reject)->finally(function () use (&$continue): void { - $continue = false; - }); - - if (!$continue && !\is_array($promisesOrValues)) { - break; - } - } - }, $cancellationQueue); -} - -/** - * Returns a promise that will resolve when any one of the items in - * `$promisesOrValues` resolves. The resolution value of the returned promise - * will be the resolution value of the triggering item. - * - * The returned promise will only reject if *all* items in `$promisesOrValues` are - * rejected. The rejection value will be an array of all rejection reasons. - * - * The returned promise will also reject with a `React\Promise\Exception\LengthException` - * if `$promisesOrValues` contains 0 items. - * - * @template T - * @param iterable|T> $promisesOrValues - * @return PromiseInterface - */ -function any(iterable $promisesOrValues): PromiseInterface -{ - $cancellationQueue = new Internal\CancellationQueue(); - - /** @var Promise */ - return new Promise(function (callable $resolve, callable $reject) use ($promisesOrValues, $cancellationQueue): void { - $toReject = 0; - $continue = true; - $reasons = []; - - foreach ($promisesOrValues as $i => $promiseOrValue) { - $cancellationQueue->enqueue($promiseOrValue); - ++$toReject; - - resolve($promiseOrValue)->then( - function ($value) use ($resolve, &$continue): void { - $continue = false; - $resolve($value); - }, - function (\Throwable $reason) use ($i, &$reasons, &$toReject, $reject, &$continue): void { - $reasons[$i] = $reason; - - if (0 === --$toReject && !$continue) { - $reject(new CompositeException( - $reasons, - 'All promises rejected.' - )); - } - } - ); - - if (!$continue && !\is_array($promisesOrValues)) { - break; - } - } - - $continue = false; - if ($toReject === 0 && !$reasons) { - $reject(new Exception\LengthException( - 'Must contain at least 1 item but contains only 0 items.' - )); - } elseif ($toReject === 0) { - $reject(new CompositeException( - $reasons, - 'All promises rejected.' - )); - } - }, $cancellationQueue); -} - -/** - * Sets the global rejection handler for unhandled promise rejections. - * - * Note that rejected promises should always be handled similar to how any - * exceptions should always be caught in a `try` + `catch` block. If you remove - * the last reference to a rejected promise that has not been handled, it will - * report an unhandled promise rejection. See also the [`reject()` function](#reject) - * for more details. - * - * The `?callable $callback` argument MUST be a valid callback function that - * accepts a single `Throwable` argument or a `null` value to restore the - * default promise rejection handler. The return value of the callback function - * will be ignored and has no effect, so you SHOULD return a `void` value. The - * callback function MUST NOT throw or the program will be terminated with a - * fatal error. - * - * The function returns the previous rejection handler or `null` if using the - * default promise rejection handler. - * - * The default promise rejection handler will log an error message plus its - * stack trace: - * - * ```php - * // Unhandled promise rejection with RuntimeException: Unhandled in example.php:2 - * React\Promise\reject(new RuntimeException('Unhandled')); - * ``` - * - * The promise rejection handler may be used to use customize the log message or - * write to custom log targets. As a rule of thumb, this function should only be - * used as a last resort and promise rejections are best handled with either the - * [`then()` method](#promiseinterfacethen), the - * [`catch()` method](#promiseinterfacecatch), or the - * [`finally()` method](#promiseinterfacefinally). - * See also the [`reject()` function](#reject) for more details. - * - * @param callable(\Throwable):void|null $callback - * @return callable(\Throwable):void|null - */ -function set_rejection_handler(?callable $callback): ?callable -{ - static $current = null; - $previous = $current; - $current = $callback; - - return $previous; -} - -/** - * @internal - */ -function _checkTypehint(callable $callback, \Throwable $reason): bool -{ - if (\is_array($callback)) { - $callbackReflection = new \ReflectionMethod($callback[0], $callback[1]); - } elseif (\is_object($callback) && !$callback instanceof \Closure) { - $callbackReflection = new \ReflectionMethod($callback, '__invoke'); - } else { - assert($callback instanceof \Closure || \is_string($callback)); - $callbackReflection = new \ReflectionFunction($callback); - } - - $parameters = $callbackReflection->getParameters(); - - if (!isset($parameters[0])) { - return true; - } - - $expectedException = $parameters[0]; - - // Extract the type of the argument and handle different possibilities - $type = $expectedException->getType(); - - $isTypeUnion = true; - $types = []; - - switch (true) { - case $type === null: - break; - case $type instanceof \ReflectionNamedType: - $types = [$type]; - break; - case $type instanceof \ReflectionIntersectionType: - $isTypeUnion = false; - case $type instanceof \ReflectionUnionType: - $types = $type->getTypes(); - break; - default: - throw new \LogicException('Unexpected return value of ReflectionParameter::getType'); - } - - // If there is no type restriction, it matches - if (empty($types)) { - return true; - } - - foreach ($types as $type) { - - if ($type instanceof \ReflectionIntersectionType) { - foreach ($type->getTypes() as $typeToMatch) { - assert($typeToMatch instanceof \ReflectionNamedType); - $name = $typeToMatch->getName(); - if (!($matches = (!$typeToMatch->isBuiltin() && $reason instanceof $name))) { - break; - } - } - assert(isset($matches)); - } else { - assert($type instanceof \ReflectionNamedType); - $name = $type->getName(); - $matches = !$type->isBuiltin() && $reason instanceof $name; - } - - // If we look for a single match (union), we can return early on match - // If we look for a full match (intersection), we can return early on mismatch - if ($matches) { - if ($isTypeUnion) { - return true; - } - } else { - if (!$isTypeUnion) { - return false; - } - } - } - - // If we look for a single match (union) and did not return early, we matched no type and are false - // If we look for a full match (intersection) and did not return early, we matched all types and are true - return $isTypeUnion ? false : true; -} diff --git a/v3_ci4/vendor/react/promise/src/functions_include.php b/v3_ci4/vendor/react/promise/src/functions_include.php deleted file mode 100644 index bd0c54f..0000000 --- a/v3_ci4/vendor/react/promise/src/functions_include.php +++ /dev/null @@ -1,5 +0,0 @@ -connect($uri)->then(function (React\Socket\ConnectionInterface $conn) { - // … - }, function (Exception $e) { - echo 'Error:' . $e->getMessage() . PHP_EOL; - }); - ``` - -* Improve test suite, test against PHP 8.1 release. - (#274 by @SimonFrings) - -## 1.9.0 (2021-08-03) - -* Feature: Add new `SocketServer` and deprecate `Server` to avoid class name collisions. - (#263 by @clue) - - The new `SocketServer` class has been added with an improved constructor signature - as a replacement for the previous `Server` class in order to avoid any ambiguities. - The previous name has been deprecated and should not be used anymore. - In its most basic form, the deprecated `Server` can now be considered an alias for new `SocketServer`. - - ```php - // deprecated - $socket = new React\Socket\Server(0); - $socket = new React\Socket\Server('127.0.0.1:8000'); - $socket = new React\Socket\Server('127.0.0.1:8000', null, $context); - $socket = new React\Socket\Server('127.0.0.1:8000', $loop, $context); - - // new - $socket = new React\Socket\SocketServer('127.0.0.1:0'); - $socket = new React\Socket\SocketServer('127.0.0.1:8000'); - $socket = new React\Socket\SocketServer('127.0.0.1:8000', $context); - $socket = new React\Socket\SocketServer('127.0.0.1:8000', $context, $loop); - ``` - -* Feature: Update `Connector` signature to take optional `$context` as first argument. - (#264 by @clue) - - The new signature has been added to match the new `SocketServer` and - consistently move the now commonly unneeded loop argument to the last argument. - The previous signature has been deprecated and should not be used anymore. - In its most basic form, both signatures are compatible. - - ```php - // deprecated - $connector = new React\Socket\Connector(null, $context); - $connector = new React\Socket\Connector($loop, $context); - - // new - $connector = new React\Socket\Connector($context); - $connector = new React\Socket\Connector($context, $loop); - ``` - -## 1.8.0 (2021-07-11) - -A major new feature release, see [**release announcement**](https://clue.engineering/2021/announcing-reactphp-default-loop). - -* Feature: Simplify usage by supporting new [default loop](https://reactphp.org/event-loop/#loop). - (#260 by @clue) - - ```php - // old (still supported) - $socket = new React\Socket\Server('127.0.0.1:8080', $loop); - $connector = new React\Socket\Connector($loop); - - // new (using default loop) - $socket = new React\Socket\Server('127.0.0.1:8080'); - $connector = new React\Socket\Connector(); - ``` - -## 1.7.0 (2021-06-25) - -* Feature: Support falling back to multiple DNS servers from DNS config. - (#257 by @clue) - - If you're using the default `Connector`, it will now use all DNS servers - configured on your system. If you have multiple DNS servers configured and - connectivity to the primary DNS server is broken, it will now fall back to - your other DNS servers, thus providing improved connectivity and redundancy - for broken DNS configurations. - -* Feature: Use round robin for happy eyeballs DNS responses (load balancing). - (#247 by @clue) - - If you're using the default `Connector`, it will now randomize the order of - the IP addresses resolved via DNS when connecting. This allows the load to - be distributed more evenly across all returned IP addresses. This can be - used as a very basic DNS load balancing mechanism. - -* Internal improvement to avoid unhandled rejection for future Promise API. - (#258 by @clue) - -* Improve test suite, use GitHub actions for continuous integration (CI). - (#254 by @SimonFrings) - -## 1.6.0 (2020-08-28) - -* Feature: Support upcoming PHP 8 release. - (#246 by @clue) - -* Feature: Change default socket backlog size to 511. - (#242 by @clue) - -* Fix: Fix closing connection when cancelling during TLS handshake. - (#241 by @clue) - -* Fix: Fix blocking during possible `accept()` race condition - when multiple socket servers listen on same socket address. - (#244 by @clue) - -* Improve test suite, update PHPUnit config and add full core team to the license. - (#243 by @SimonFrings and #245 by @WyriHaximus) - -## 1.5.0 (2020-07-01) - -* Feature / Fix: Improve error handling and reporting for happy eyeballs and - immediately try next connection when one connection attempt fails. - (#230, #231, #232 and #233 by @clue) - - Error messages for failed connection attempts now include more details to - ease debugging. Additionally, the happy eyeballs algorithm has been improved - to avoid having to wait for some timers to expire which significantly - improves connection setup times (in particular when IPv6 isn't available). - -* Improve test suite, minor code cleanup and improve code coverage to 100%. - Update to PHPUnit 9 and skip legacy TLS 1.0 / TLS 1.1 tests if disabled by - system. Run tests on Windows and simplify Travis CI test matrix for Mac OS X - setup and skip all TLS tests on legacy HHVM. - (#229, #235, #236 and #238 by @clue and #239 by @SimonFrings) - -## 1.4.0 (2020-03-12) - -A major new feature release, see [**release announcement**](https://clue.engineering/2020/introducing-ipv6-for-reactphp). - -* Feature: Add IPv6 support to `Connector` (implement "Happy Eyeballs" algorithm to support IPv6 probing). - IPv6 support is turned on by default, use new `happy_eyeballs` option in `Connector` to toggle behavior. - (#196, #224 and #225 by @WyriHaximus and @clue) - -* Feature: Default to using DNS cache (with max 256 entries) for `Connector`. - (#226 by @clue) - -* Add `.gitattributes` to exclude dev files from exports and some minor code style fixes. - (#219 by @reedy and #218 by @mmoreram) - -* Improve test suite to fix failing test cases when using new DNS component, - significantly improve test performance by awaiting events instead of sleeping, - exclude TLS 1.3 test on PHP 7.3, run tests on PHP 7.4 and simplify test matrix. - (#208, #209, #210, #217 and #223 by @clue) - -## 1.3.0 (2019-07-10) - -* Feature: Forward compatibility with upcoming stable DNS component. - (#206 by @clue) - -## 1.2.1 (2019-06-03) - -* Avoid uneeded fragmented TLS work around for PHP 7.3.3+ and - work around failing test case detecting EOF on TLS 1.3 socket streams. - (#201 and #202 by @clue) - -* Improve TLS certificate/passphrase example. - (#190 by @jsor) - -## 1.2.0 (2019-01-07) - -* Feature / Fix: Improve TLS 1.3 support. - (#186 by @clue) - - TLS 1.3 is now an official standard as of August 2018! :tada: - The protocol has major improvements in the areas of security, performance, and privacy. - TLS 1.3 is supported by default as of [OpenSSL 1.1.1](https://www.openssl.org/blog/blog/2018/09/11/release111/). - For example, this version ships with Ubuntu 18.10 (and newer) by default, meaning that recent installations support TLS 1.3 out of the box :shipit: - -* Fix: Avoid possibility of missing remote address when TLS handshake fails. - (#188 by @clue) - -* Improve performance by prefixing all global functions calls with `\` to skip the look up and resolve process and go straight to the global function. - (#183 by @WyriHaximus) - -* Update documentation to use full class names with namespaces. - (#187 by @clue) - -* Improve test suite to avoid some possible race conditions, - test against PHP 7.3 on Travis and - use dedicated `assertInstanceOf()` assertions. - (#185 by @clue, #178 by @WyriHaximus and #181 by @carusogabriel) - -## 1.1.0 (2018-10-01) - -* Feature: Improve error reporting for failed connection attempts and improve - cancellation forwarding during DNS lookup, TCP/IP connection or TLS handshake. - (#168, #169, #170, #171, #176 and #177 by @clue) - - All error messages now always contain a reference to the remote URI to give - more details which connection actually failed and the reason for this error. - Accordingly, failures during DNS lookup will now mention both the remote URI - as well as the DNS error reason. TCP/IP connection issues and errors during - a secure TLS handshake will both mention the remote URI as well as the - underlying socket error. Similarly, lost/dropped connections during a TLS - handshake will now report a lost connection instead of an empty error reason. - - For most common use cases this means that simply reporting the `Exception` - message should give the most relevant details for any connection issues: - - ```php - $promise = $connector->connect('tls://example.com:443'); - $promise->then(function (ConnectionInterface $conn) use ($loop) { - // … - }, function (Exception $e) { - echo $e->getMessage(); - }); - ``` - -## 1.0.0 (2018-07-11) - -* First stable LTS release, now following [SemVer](https://semver.org/). - We'd like to emphasize that this component is production ready and battle-tested. - We plan to support all long-term support (LTS) releases for at least 24 months, - so you have a rock-solid foundation to build on top of. - -> Contains no other changes, so it's actually fully compatible with the v0.8.12 release. - -## 0.8.12 (2018-06-11) - -* Feature: Improve memory consumption for failed and cancelled connection attempts. - (#161 by @clue) - -* Improve test suite to fix Travis config to test against legacy PHP 5.3 again. - (#162 by @clue) - -## 0.8.11 (2018-04-24) - -* Feature: Improve memory consumption for cancelled connection attempts and - simplify skipping DNS lookup when connecting to IP addresses. - (#159 and #160 by @clue) - -## 0.8.10 (2018-02-28) - -* Feature: Update DNS dependency to support loading system default DNS - nameserver config on all supported platforms - (`/etc/resolv.conf` on Unix/Linux/Mac/Docker/WSL and WMIC on Windows) - (#152 by @clue) - - This means that connecting to hosts that are managed by a local DNS server, - such as a corporate DNS server or when using Docker containers, will now - work as expected across all platforms with no changes required: - - ```php - $connector = new Connector($loop); - $connector->connect('intranet.example:80')->then(function ($connection) { - // … - }); - ``` - -## 0.8.9 (2018-01-18) - -* Feature: Support explicitly choosing TLS version to negotiate with remote side - by respecting `crypto_method` context parameter for all classes. - (#149 by @clue) - - By default, all connector and server classes support TLSv1.0+ and exclude - support for legacy SSLv2/SSLv3. As of PHP 5.6+ you can also explicitly - choose the TLS version you want to negotiate with the remote side: - - ```php - // new: now supports 'crypto_method` context parameter for all classes - $connector = new Connector($loop, array( - 'tls' => array( - 'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT - ) - )); - ``` - -* Minor internal clean up to unify class imports - (#148 by @clue) - -## 0.8.8 (2018-01-06) - -* Improve test suite by adding test group to skip integration tests relying on - internet connection and fix minor documentation typo. - (#146 by @clue and #145 by @cn007b) - -## 0.8.7 (2017-12-24) - -* Fix: Fix closing socket resource before removing from loop - (#141 by @clue) - - This fixes the root cause of an uncaught `Exception` that only manifested - itself after the recent Stream v0.7.4 component update and only if you're - using `ext-event` (`ExtEventLoop`). - -* Improve test suite by testing against PHP 7.2 - (#140 by @carusogabriel) - -## 0.8.6 (2017-11-18) - -* Feature: Add Unix domain socket (UDS) support to `Server` with `unix://` URI scheme - and add advanced `UnixServer` class. - (#120 by @andig) - - ```php - // new: Server now supports "unix://" scheme - $server = new Server('unix:///tmp/server.sock', $loop); - - // new: advanced usage - $server = new UnixServer('/tmp/server.sock', $loop); - ``` - -* Restructure examples to ease getting started - (#136 by @clue) - -* Improve test suite by adding forward compatibility with PHPUnit 6 and - ignore Mac OS X test failures for now until Travis tests work again - (#133 by @gabriel-caruso and #134 by @clue) - -## 0.8.5 (2017-10-23) - -* Fix: Work around PHP bug with Unix domain socket (UDS) paths for Mac OS X - (#123 by @andig) - -* Fix: Fix `SecureServer` to return `null` URI if server socket is already closed - (#129 by @clue) - -* Improve test suite by adding forward compatibility with PHPUnit v5 and - forward compatibility with upcoming EventLoop releases in tests and - test Mac OS X on Travis - (#122 by @andig and #125, #127 and #130 by @clue) - -* Readme improvements - (#118 by @jsor) - -## 0.8.4 (2017-09-16) - -* Feature: Add `FixedUriConnector` decorator to use fixed, preconfigured URI instead - (#117 by @clue) - - This can be useful for consumers that do not support certain URIs, such as - when you want to explicitly connect to a Unix domain socket (UDS) path - instead of connecting to a default address assumed by an higher-level API: - - ```php - $connector = new FixedUriConnector( - 'unix:///var/run/docker.sock', - new UnixConnector($loop) - ); - - // destination will be ignored, actually connects to Unix domain socket - $promise = $connector->connect('localhost:80'); - ``` - -## 0.8.3 (2017-09-08) - -* Feature: Reduce memory consumption for failed connections - (#113 by @valga) - -* Fix: Work around write chunk size for TLS streams for PHP < 7.1.14 - (#114 by @clue) - -## 0.8.2 (2017-08-25) - -* Feature: Update DNS dependency to support hosts file on all platforms - (#112 by @clue) - - This means that connecting to hosts such as `localhost` will now work as - expected across all platforms with no changes required: - - ```php - $connector = new Connector($loop); - $connector->connect('localhost:8080')->then(function ($connection) { - // … - }); - ``` - -## 0.8.1 (2017-08-15) - -* Feature: Forward compatibility with upcoming EventLoop v1.0 and v0.5 and - target evenement 3.0 a long side 2.0 and 1.0 - (#104 by @clue and #111 by @WyriHaximus) - -* Improve test suite by locking Travis distro so new defaults will not break the build and - fix HHVM build for now again and ignore future HHVM build errors - (#109 and #110 by @clue) - -* Minor documentation fixes - (#103 by @christiaan and #108 by @hansott) - -## 0.8.0 (2017-05-09) - -* Feature: New `Server` class now acts as a facade for existing server classes - and renamed old `Server` to `TcpServer` for advanced usage. - (#96 and #97 by @clue) - - The `Server` class is now the main class in this package that implements the - `ServerInterface` and allows you to accept incoming streaming connections, - such as plaintext TCP/IP or secure TLS connection streams. - - > This is not a BC break and consumer code does not have to be updated. - -* Feature / BC break: All addresses are now URIs that include the URI scheme - (#98 by @clue) - - ```diff - - $parts = parse_url('tcp://' . $conn->getRemoteAddress()); - + $parts = parse_url($conn->getRemoteAddress()); - ``` - -* Fix: Fix `unix://` addresses for Unix domain socket (UDS) paths - (#100 by @clue) - -* Feature: Forward compatibility with Stream v1.0 and v0.7 - (#99 by @clue) - -## 0.7.2 (2017-04-24) - -* Fix: Work around latest PHP 7.0.18 and 7.1.4 no longer accepting full URIs - (#94 by @clue) - -## 0.7.1 (2017-04-10) - -* Fix: Ignore HHVM errors when closing connection that is already closing - (#91 by @clue) - -## 0.7.0 (2017-04-10) - -* Feature: Merge SocketClient component into this component - (#87 by @clue) - - This means that this package now provides async, streaming plaintext TCP/IP - and secure TLS socket server and client connections for ReactPHP. - - ``` - $connector = new React\Socket\Connector($loop); - $connector->connect('google.com:80')->then(function (ConnectionInterface $conn) { - $connection->write('…'); - }); - ``` - - Accordingly, the `ConnectionInterface` is now used to represent both incoming - server side connections as well as outgoing client side connections. - - If you've previously used the SocketClient component to establish outgoing - client connections, upgrading should take no longer than a few minutes. - All classes have been merged as-is from the latest `v0.7.0` release with no - other changes, so you can simply update your code to use the updated namespace - like this: - - ```php - // old from SocketClient component and namespace - $connector = new React\SocketClient\Connector($loop); - $connector->connect('google.com:80')->then(function (ConnectionInterface $conn) { - $connection->write('…'); - }); - - // new - $connector = new React\Socket\Connector($loop); - $connector->connect('google.com:80')->then(function (ConnectionInterface $conn) { - $connection->write('…'); - }); - ``` - -## 0.6.0 (2017-04-04) - -* Feature: Add `LimitingServer` to limit and keep track of open connections - (#86 by @clue) - - ```php - $server = new Server(0, $loop); - $server = new LimitingServer($server, 100); - - $server->on('connection', function (ConnectionInterface $connection) { - $connection->write('hello there!' . PHP_EOL); - … - }); - ``` - -* Feature / BC break: Add `pause()` and `resume()` methods to limit active - connections - (#84 by @clue) - - ```php - $server = new Server(0, $loop); - $server->pause(); - - $loop->addTimer(1.0, function() use ($server) { - $server->resume(); - }); - ``` - -## 0.5.1 (2017-03-09) - -* Feature: Forward compatibility with Stream v0.5 and upcoming v0.6 - (#79 by @clue) - -## 0.5.0 (2017-02-14) - -* Feature / BC break: Replace `listen()` call with URIs passed to constructor - and reject listening on hostnames with `InvalidArgumentException` - and replace `ConnectionException` with `RuntimeException` for consistency - (#61, #66 and #72 by @clue) - - ```php - // old - $server = new Server($loop); - $server->listen(8080); - - // new - $server = new Server(8080, $loop); - ``` - - Similarly, you can now pass a full listening URI to the constructor to change - the listening host: - - ```php - // old - $server = new Server($loop); - $server->listen(8080, '127.0.0.1'); - - // new - $server = new Server('127.0.0.1:8080', $loop); - ``` - - Trying to start listening on (DNS) host names will now throw an - `InvalidArgumentException`, use IP addresses instead: - - ```php - // old - $server = new Server($loop); - $server->listen(8080, 'localhost'); - - // new - $server = new Server('127.0.0.1:8080', $loop); - ``` - - If trying to listen fails (such as if port is already in use or port below - 1024 may require root access etc.), it will now throw a `RuntimeException`, - the `ConnectionException` class has been removed: - - ```php - // old: throws React\Socket\ConnectionException - $server = new Server($loop); - $server->listen(80); - - // new: throws RuntimeException - $server = new Server(80, $loop); - ``` - -* Feature / BC break: Rename `shutdown()` to `close()` for consistency throughout React - (#62 by @clue) - - ```php - // old - $server->shutdown(); - - // new - $server->close(); - ``` - -* Feature / BC break: Replace `getPort()` with `getAddress()` - (#67 by @clue) - - ```php - // old - echo $server->getPort(); // 8080 - - // new - echo $server->getAddress(); // 127.0.0.1:8080 - ``` - -* Feature / BC break: `getRemoteAddress()` returns full address instead of only IP - (#65 by @clue) - - ```php - // old - echo $connection->getRemoteAddress(); // 192.168.0.1 - - // new - echo $connection->getRemoteAddress(); // 192.168.0.1:51743 - ``` - -* Feature / BC break: Add `getLocalAddress()` method - (#68 by @clue) - - ```php - echo $connection->getLocalAddress(); // 127.0.0.1:8080 - ``` - -* BC break: The `Server` and `SecureServer` class are now marked `final` - and you can no longer `extend` them - (which was never documented or recommended anyway). - Public properties and event handlers are now internal only. - Please use composition instead of extension. - (#71, #70 and #69 by @clue) - -## 0.4.6 (2017-01-26) - -* Feature: Support socket context options passed to `Server` - (#64 by @clue) - -* Fix: Properly return `null` for unknown addresses - (#63 by @clue) - -* Improve documentation for `ServerInterface` and lock test suite requirements - (#60 by @clue, #57 by @shaunbramley) - -## 0.4.5 (2017-01-08) - -* Feature: Add `SecureServer` for secure TLS connections - (#55 by @clue) - -* Add functional integration tests - (#54 by @clue) - -## 0.4.4 (2016-12-19) - -* Feature / Fix: `ConnectionInterface` should extend `DuplexStreamInterface` + documentation - (#50 by @clue) - -* Feature / Fix: Improve test suite and switch to normal stream handler - (#51 by @clue) - -* Feature: Add examples - (#49 by @clue) - -## 0.4.3 (2016-03-01) - -* Bug fix: Suppress errors on stream_socket_accept to prevent PHP from crashing -* Support for PHP7 and HHVM -* Support PHP 5.3 again - -## 0.4.2 (2014-05-25) - -* Verify stream is a valid resource in Connection - -## 0.4.1 (2014-04-13) - -* Bug fix: Check read buffer for data before shutdown signal and end emit (@ArtyDev) -* Bug fix: v0.3.4 changes merged for v0.4.1 - -## 0.3.4 (2014-03-30) - -* Bug fix: Reset socket to non-blocking after shutting down (PHP bug) - -## 0.4.0 (2014-02-02) - -* BC break: Bump minimum PHP version to PHP 5.4, remove 5.3 specific hacks -* BC break: Update to React/Promise 2.0 -* BC break: Update to Evenement 2.0 -* Dependency: Autoloading and filesystem structure now PSR-4 instead of PSR-0 -* Bump React dependencies to v0.4 - -## 0.3.3 (2013-07-08) - -* Version bump - -## 0.3.2 (2013-05-10) - -* Version bump - -## 0.3.1 (2013-04-21) - -* Feature: Support binding to IPv6 addresses (@clue) - -## 0.3.0 (2013-04-14) - -* Bump React dependencies to v0.3 - -## 0.2.6 (2012-12-26) - -* Version bump - -## 0.2.3 (2012-11-14) - -* Version bump - -## 0.2.0 (2012-09-10) - -* Bump React dependencies to v0.2 - -## 0.1.1 (2012-07-12) - -* Version bump - -## 0.1.0 (2012-07-11) - -* First tagged release diff --git a/v3_ci4/vendor/react/socket/LICENSE b/v3_ci4/vendor/react/socket/LICENSE deleted file mode 100644 index d6f8901..0000000 --- a/v3_ci4/vendor/react/socket/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/react/socket/README.md b/v3_ci4/vendor/react/socket/README.md deleted file mode 100644 index 092590a..0000000 --- a/v3_ci4/vendor/react/socket/README.md +++ /dev/null @@ -1,1564 +0,0 @@ -# Socket - -[![CI status](https://github.com/reactphp/socket/workflows/CI/badge.svg)](https://github.com/reactphp/socket/actions) -[![installs on Packagist](https://img.shields.io/packagist/dt/react/socket?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/react/socket) - -Async, streaming plaintext TCP/IP and secure TLS socket server and client -connections for [ReactPHP](https://reactphp.org/). - -The socket library provides re-usable interfaces for a socket-layer -server and client based on the [`EventLoop`](https://github.com/reactphp/event-loop) -and [`Stream`](https://github.com/reactphp/stream) components. -Its server component allows you to build networking servers that accept incoming -connections from networking clients (such as an HTTP server). -Its client component allows you to build networking clients that establish -outgoing connections to networking servers (such as an HTTP or database client). -This library provides async, streaming means for all of this, so you can -handle multiple concurrent connections without blocking. - -**Table of Contents** - -* [Quickstart example](#quickstart-example) -* [Connection usage](#connection-usage) - * [ConnectionInterface](#connectioninterface) - * [getRemoteAddress()](#getremoteaddress) - * [getLocalAddress()](#getlocaladdress) -* [Server usage](#server-usage) - * [ServerInterface](#serverinterface) - * [connection event](#connection-event) - * [error event](#error-event) - * [getAddress()](#getaddress) - * [pause()](#pause) - * [resume()](#resume) - * [close()](#close) - * [SocketServer](#socketserver) - * [Advanced server usage](#advanced-server-usage) - * [TcpServer](#tcpserver) - * [SecureServer](#secureserver) - * [UnixServer](#unixserver) - * [LimitingServer](#limitingserver) - * [getConnections()](#getconnections) -* [Client usage](#client-usage) - * [ConnectorInterface](#connectorinterface) - * [connect()](#connect) - * [Connector](#connector) - * [Advanced client usage](#advanced-client-usage) - * [TcpConnector](#tcpconnector) - * [HappyEyeBallsConnector](#happyeyeballsconnector) - * [DnsConnector](#dnsconnector) - * [SecureConnector](#secureconnector) - * [TimeoutConnector](#timeoutconnector) - * [UnixConnector](#unixconnector) - * [FixUriConnector](#fixeduriconnector) -* [Install](#install) -* [Tests](#tests) -* [License](#license) - -## Quickstart example - -Here is a server that closes the connection if you send it anything: - -```php -$socket = new React\Socket\SocketServer('127.0.0.1:8080'); - -$socket->on('connection', function (React\Socket\ConnectionInterface $connection) { - $connection->write("Hello " . $connection->getRemoteAddress() . "!\n"); - $connection->write("Welcome to this amazing server!\n"); - $connection->write("Here's a tip: don't say anything.\n"); - - $connection->on('data', function ($data) use ($connection) { - $connection->close(); - }); -}); -``` - -See also the [examples](examples). - -Here's a client that outputs the output of said server and then attempts to -send it a string: - -```php -$connector = new React\Socket\Connector(); - -$connector->connect('127.0.0.1:8080')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->pipe(new React\Stream\WritableResourceStream(STDOUT)); - $connection->write("Hello World!\n"); -}, function (Exception $e) { - echo 'Error: ' . $e->getMessage() . PHP_EOL; -}); -``` - -## Connection usage - -### ConnectionInterface - -The `ConnectionInterface` is used to represent any incoming and outgoing -connection, such as a normal TCP/IP connection. - -An incoming or outgoing connection is a duplex stream (both readable and -writable) that implements React's -[`DuplexStreamInterface`](https://github.com/reactphp/stream#duplexstreaminterface). -It contains additional properties for the local and remote address (client IP) -where this connection has been established to/from. - -Most commonly, instances implementing this `ConnectionInterface` are emitted -by all classes implementing the [`ServerInterface`](#serverinterface) and -used by all classes implementing the [`ConnectorInterface`](#connectorinterface). - -Because the `ConnectionInterface` implements the underlying -[`DuplexStreamInterface`](https://github.com/reactphp/stream#duplexstreaminterface) -you can use any of its events and methods as usual: - -```php -$connection->on('data', function ($chunk) { - echo $chunk; -}); - -$connection->on('end', function () { - echo 'ended'; -}); - -$connection->on('error', function (Exception $e) { - echo 'error: ' . $e->getMessage(); -}); - -$connection->on('close', function () { - echo 'closed'; -}); - -$connection->write($data); -$connection->end($data = null); -$connection->close(); -// … -``` - -For more details, see the -[`DuplexStreamInterface`](https://github.com/reactphp/stream#duplexstreaminterface). - -#### getRemoteAddress() - -The `getRemoteAddress(): ?string` method returns the full remote address -(URI) where this connection has been established with. - -```php -$address = $connection->getRemoteAddress(); -echo 'Connection with ' . $address . PHP_EOL; -``` - -If the remote address can not be determined or is unknown at this time (such as -after the connection has been closed), it MAY return a `NULL` value instead. - -Otherwise, it will return the full address (URI) as a string value, such -as `tcp://127.0.0.1:8080`, `tcp://[::1]:80`, `tls://127.0.0.1:443`, -`unix://example.sock` or `unix:///path/to/example.sock`. -Note that individual URI components are application specific and depend -on the underlying transport protocol. - -If this is a TCP/IP based connection and you only want the remote IP, you may -use something like this: - -```php -$address = $connection->getRemoteAddress(); -$ip = trim(parse_url($address, PHP_URL_HOST), '[]'); -echo 'Connection with ' . $ip . PHP_EOL; -``` - -#### getLocalAddress() - -The `getLocalAddress(): ?string` method returns the full local address -(URI) where this connection has been established with. - -```php -$address = $connection->getLocalAddress(); -echo 'Connection with ' . $address . PHP_EOL; -``` - -If the local address can not be determined or is unknown at this time (such as -after the connection has been closed), it MAY return a `NULL` value instead. - -Otherwise, it will return the full address (URI) as a string value, such -as `tcp://127.0.0.1:8080`, `tcp://[::1]:80`, `tls://127.0.0.1:443`, -`unix://example.sock` or `unix:///path/to/example.sock`. -Note that individual URI components are application specific and depend -on the underlying transport protocol. - -This method complements the [`getRemoteAddress()`](#getremoteaddress) method, -so they should not be confused. - -If your `TcpServer` instance is listening on multiple interfaces (e.g. using -the address `0.0.0.0`), you can use this method to find out which interface -actually accepted this connection (such as a public or local interface). - -If your system has multiple interfaces (e.g. a WAN and a LAN interface), -you can use this method to find out which interface was actually -used for this connection. - -## Server usage - -### ServerInterface - -The `ServerInterface` is responsible for providing an interface for accepting -incoming streaming connections, such as a normal TCP/IP connection. - -Most higher-level components (such as a HTTP server) accept an instance -implementing this interface to accept incoming streaming connections. -This is usually done via dependency injection, so it's fairly simple to actually -swap this implementation against any other implementation of this interface. -This means that you SHOULD typehint against this interface instead of a concrete -implementation of this interface. - -Besides defining a few methods, this interface also implements the -[`EventEmitterInterface`](https://github.com/igorw/evenement) -which allows you to react to certain events. - -#### connection event - -The `connection` event will be emitted whenever a new connection has been -established, i.e. a new client connects to this server socket: - -```php -$socket->on('connection', function (React\Socket\ConnectionInterface $connection) { - echo 'new connection' . PHP_EOL; -}); -``` - -See also the [`ConnectionInterface`](#connectioninterface) for more details -about handling the incoming connection. - -#### error event - -The `error` event will be emitted whenever there's an error accepting a new -connection from a client. - -```php -$socket->on('error', function (Exception $e) { - echo 'error: ' . $e->getMessage() . PHP_EOL; -}); -``` - -Note that this is not a fatal error event, i.e. the server keeps listening for -new connections even after this event. - -#### getAddress() - -The `getAddress(): ?string` method can be used to -return the full address (URI) this server is currently listening on. - -```php -$address = $socket->getAddress(); -echo 'Server listening on ' . $address . PHP_EOL; -``` - -If the address can not be determined or is unknown at this time (such as -after the socket has been closed), it MAY return a `NULL` value instead. - -Otherwise, it will return the full address (URI) as a string value, such -as `tcp://127.0.0.1:8080`, `tcp://[::1]:80`, `tls://127.0.0.1:443` -`unix://example.sock` or `unix:///path/to/example.sock`. -Note that individual URI components are application specific and depend -on the underlying transport protocol. - -If this is a TCP/IP based server and you only want the local port, you may -use something like this: - -```php -$address = $socket->getAddress(); -$port = parse_url($address, PHP_URL_PORT); -echo 'Server listening on port ' . $port . PHP_EOL; -``` - -#### pause() - -The `pause(): void` method can be used to -pause accepting new incoming connections. - -Removes the socket resource from the EventLoop and thus stop accepting -new connections. Note that the listening socket stays active and is not -closed. - -This means that new incoming connections will stay pending in the -operating system backlog until its configurable backlog is filled. -Once the backlog is filled, the operating system may reject further -incoming connections until the backlog is drained again by resuming -to accept new connections. - -Once the server is paused, no futher `connection` events SHOULD -be emitted. - -```php -$socket->pause(); - -$socket->on('connection', assertShouldNeverCalled()); -``` - -This method is advisory-only, though generally not recommended, the -server MAY continue emitting `connection` events. - -Unless otherwise noted, a successfully opened server SHOULD NOT start -in paused state. - -You can continue processing events by calling `resume()` again. - -Note that both methods can be called any number of times, in particular -calling `pause()` more than once SHOULD NOT have any effect. -Similarly, calling this after `close()` is a NO-OP. - -#### resume() - -The `resume(): void` method can be used to -resume accepting new incoming connections. - -Re-attach the socket resource to the EventLoop after a previous `pause()`. - -```php -$socket->pause(); - -Loop::addTimer(1.0, function () use ($socket) { - $socket->resume(); -}); -``` - -Note that both methods can be called any number of times, in particular -calling `resume()` without a prior `pause()` SHOULD NOT have any effect. -Similarly, calling this after `close()` is a NO-OP. - -#### close() - -The `close(): void` method can be used to -shut down this listening socket. - -This will stop listening for new incoming connections on this socket. - -```php -echo 'Shutting down server socket' . PHP_EOL; -$socket->close(); -``` - -Calling this method more than once on the same instance is a NO-OP. - -### SocketServer - - - -The `SocketServer` class is the main class in this package that implements the -[`ServerInterface`](#serverinterface) and allows you to accept incoming -streaming connections, such as plaintext TCP/IP or secure TLS connection streams. - -In order to accept plaintext TCP/IP connections, you can simply pass a host -and port combination like this: - -```php -$socket = new React\Socket\SocketServer('127.0.0.1:8080'); -``` - -Listening on the localhost address `127.0.0.1` means it will not be reachable from -outside of this system. -In order to change the host the socket is listening on, you can provide an IP -address of an interface or use the special `0.0.0.0` address to listen on all -interfaces: - -```php -$socket = new React\Socket\SocketServer('0.0.0.0:8080'); -``` - -If you want to listen on an IPv6 address, you MUST enclose the host in square -brackets: - -```php -$socket = new React\Socket\SocketServer('[::1]:8080'); -``` - -In order to use a random port assignment, you can use the port `0`: - -```php -$socket = new React\Socket\SocketServer('127.0.0.1:0'); -$address = $socket->getAddress(); -``` - -To listen on a Unix domain socket (UDS) path, you MUST prefix the URI with the -`unix://` scheme: - -```php -$socket = new React\Socket\SocketServer('unix:///tmp/server.sock'); -``` - -In order to listen on an existing file descriptor (FD) number, you MUST prefix -the URI with `php://fd/` like this: - -```php -$socket = new React\Socket\SocketServer('php://fd/3'); -``` - -If the given URI is invalid, does not contain a port, any other scheme or if it -contains a hostname, it will throw an `InvalidArgumentException`: - -```php -// throws InvalidArgumentException due to missing port -$socket = new React\Socket\SocketServer('127.0.0.1'); -``` - -If the given URI appears to be valid, but listening on it fails (such as if port -is already in use or port below 1024 may require root access etc.), it will -throw a `RuntimeException`: - -```php -$first = new React\Socket\SocketServer('127.0.0.1:8080'); - -// throws RuntimeException because port is already in use -$second = new React\Socket\SocketServer('127.0.0.1:8080'); -``` - -> Note that these error conditions may vary depending on your system and/or - configuration. - See the exception message and code for more details about the actual error - condition. - -Optionally, you can specify [TCP socket context options](https://www.php.net/manual/en/context.socket.php) -for the underlying stream socket resource like this: - -```php -$socket = new React\Socket\SocketServer('[::1]:8080', array( - 'tcp' => array( - 'backlog' => 200, - 'so_reuseport' => true, - 'ipv6_v6only' => true - ) -)); -``` - -> Note that available [socket context options](https://www.php.net/manual/en/context.socket.php), - their defaults and effects of changing these may vary depending on your system - and/or PHP version. - Passing unknown context options has no effect. - The `backlog` context option defaults to `511` unless given explicitly. - -You can start a secure TLS (formerly known as SSL) server by simply prepending -the `tls://` URI scheme. -Internally, it will wait for plaintext TCP/IP connections and then performs a -TLS handshake for each connection. -It thus requires valid [TLS context options](https://www.php.net/manual/en/context.ssl.php), -which in its most basic form may look something like this if you're using a -PEM encoded certificate file: - -```php -$socket = new React\Socket\SocketServer('tls://127.0.0.1:8080', array( - 'tls' => array( - 'local_cert' => 'server.pem' - ) -)); -``` - -> Note that the certificate file will not be loaded on instantiation but when an - incoming connection initializes its TLS context. - This implies that any invalid certificate file paths or contents will only cause - an `error` event at a later time. - -If your private key is encrypted with a passphrase, you have to specify it -like this: - -```php -$socket = new React\Socket\SocketServer('tls://127.0.0.1:8000', array( - 'tls' => array( - 'local_cert' => 'server.pem', - 'passphrase' => 'secret' - ) -)); -``` - -By default, this server supports TLSv1.0+ and excludes support for legacy -SSLv2/SSLv3. As of PHP 5.6+ you can also explicitly choose the TLS version you -want to negotiate with the remote side: - -```php -$socket = new React\Socket\SocketServer('tls://127.0.0.1:8000', array( - 'tls' => array( - 'local_cert' => 'server.pem', - 'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_SERVER - ) -)); -``` - -> Note that available [TLS context options](https://www.php.net/manual/en/context.ssl.php), - their defaults and effects of changing these may vary depending on your system - and/or PHP version. - The outer context array allows you to also use `tcp` (and possibly more) - context options at the same time. - Passing unknown context options has no effect. - If you do not use the `tls://` scheme, then passing `tls` context options - has no effect. - -Whenever a client connects, it will emit a `connection` event with a connection -instance implementing [`ConnectionInterface`](#connectioninterface): - -```php -$socket->on('connection', function (React\Socket\ConnectionInterface $connection) { - echo 'Plaintext connection from ' . $connection->getRemoteAddress() . PHP_EOL; - - $connection->write('hello there!' . PHP_EOL); - … -}); -``` - -See also the [`ServerInterface`](#serverinterface) for more details. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -> Note that the `SocketServer` class is a concrete implementation for TCP/IP sockets. - If you want to typehint in your higher-level protocol implementation, you SHOULD - use the generic [`ServerInterface`](#serverinterface) instead. - -> Changelog v1.9.0: This class has been added with an improved constructor signature - as a replacement for the previous `Server` class in order to avoid any ambiguities. - The previous name has been deprecated and should not be used anymore. - -### Advanced server usage - -#### TcpServer - -The `TcpServer` class implements the [`ServerInterface`](#serverinterface) and -is responsible for accepting plaintext TCP/IP connections. - -```php -$server = new React\Socket\TcpServer(8080); -``` - -As above, the `$uri` parameter can consist of only a port, in which case the -server will default to listening on the localhost address `127.0.0.1`, -which means it will not be reachable from outside of this system. - -In order to use a random port assignment, you can use the port `0`: - -```php -$server = new React\Socket\TcpServer(0); -$address = $server->getAddress(); -``` - -In order to change the host the socket is listening on, you can provide an IP -address through the first parameter provided to the constructor, optionally -preceded by the `tcp://` scheme: - -```php -$server = new React\Socket\TcpServer('192.168.0.1:8080'); -``` - -If you want to listen on an IPv6 address, you MUST enclose the host in square -brackets: - -```php -$server = new React\Socket\TcpServer('[::1]:8080'); -``` - -If the given URI is invalid, does not contain a port, any other scheme or if it -contains a hostname, it will throw an `InvalidArgumentException`: - -```php -// throws InvalidArgumentException due to missing port -$server = new React\Socket\TcpServer('127.0.0.1'); -``` - -If the given URI appears to be valid, but listening on it fails (such as if port -is already in use or port below 1024 may require root access etc.), it will -throw a `RuntimeException`: - -```php -$first = new React\Socket\TcpServer(8080); - -// throws RuntimeException because port is already in use -$second = new React\Socket\TcpServer(8080); -``` - -> Note that these error conditions may vary depending on your system and/or -configuration. -See the exception message and code for more details about the actual error -condition. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -Optionally, you can specify [socket context options](https://www.php.net/manual/en/context.socket.php) -for the underlying stream socket resource like this: - -```php -$server = new React\Socket\TcpServer('[::1]:8080', null, array( - 'backlog' => 200, - 'so_reuseport' => true, - 'ipv6_v6only' => true -)); -``` - -> Note that available [socket context options](https://www.php.net/manual/en/context.socket.php), -their defaults and effects of changing these may vary depending on your system -and/or PHP version. -Passing unknown context options has no effect. -The `backlog` context option defaults to `511` unless given explicitly. - -Whenever a client connects, it will emit a `connection` event with a connection -instance implementing [`ConnectionInterface`](#connectioninterface): - -```php -$server->on('connection', function (React\Socket\ConnectionInterface $connection) { - echo 'Plaintext connection from ' . $connection->getRemoteAddress() . PHP_EOL; - - $connection->write('hello there!' . PHP_EOL); - … -}); -``` - -See also the [`ServerInterface`](#serverinterface) for more details. - -#### SecureServer - -The `SecureServer` class implements the [`ServerInterface`](#serverinterface) -and is responsible for providing a secure TLS (formerly known as SSL) server. - -It does so by wrapping a [`TcpServer`](#tcpserver) instance which waits for plaintext -TCP/IP connections and then performs a TLS handshake for each connection. -It thus requires valid [TLS context options](https://www.php.net/manual/en/context.ssl.php), -which in its most basic form may look something like this if you're using a -PEM encoded certificate file: - -```php -$server = new React\Socket\TcpServer(8000); -$server = new React\Socket\SecureServer($server, null, array( - 'local_cert' => 'server.pem' -)); -``` - -> Note that the certificate file will not be loaded on instantiation but when an -incoming connection initializes its TLS context. -This implies that any invalid certificate file paths or contents will only cause -an `error` event at a later time. - -If your private key is encrypted with a passphrase, you have to specify it -like this: - -```php -$server = new React\Socket\TcpServer(8000); -$server = new React\Socket\SecureServer($server, null, array( - 'local_cert' => 'server.pem', - 'passphrase' => 'secret' -)); -``` - -By default, this server supports TLSv1.0+ and excludes support for legacy -SSLv2/SSLv3. As of PHP 5.6+ you can also explicitly choose the TLS version you -want to negotiate with the remote side: - -```php -$server = new React\Socket\TcpServer(8000); -$server = new React\Socket\SecureServer($server, null, array( - 'local_cert' => 'server.pem', - 'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_SERVER -)); -``` - -> Note that available [TLS context options](https://www.php.net/manual/en/context.ssl.php), -their defaults and effects of changing these may vary depending on your system -and/or PHP version. -Passing unknown context options has no effect. - -Whenever a client completes the TLS handshake, it will emit a `connection` event -with a connection instance implementing [`ConnectionInterface`](#connectioninterface): - -```php -$server->on('connection', function (React\Socket\ConnectionInterface $connection) { - echo 'Secure connection from' . $connection->getRemoteAddress() . PHP_EOL; - - $connection->write('hello there!' . PHP_EOL); - … -}); -``` - -Whenever a client fails to perform a successful TLS handshake, it will emit an -`error` event and then close the underlying TCP/IP connection: - -```php -$server->on('error', function (Exception $e) { - echo 'Error' . $e->getMessage() . PHP_EOL; -}); -``` - -See also the [`ServerInterface`](#serverinterface) for more details. - -Note that the `SecureServer` class is a concrete implementation for TLS sockets. -If you want to typehint in your higher-level protocol implementation, you SHOULD -use the generic [`ServerInterface`](#serverinterface) instead. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -> Advanced usage: Despite allowing any `ServerInterface` as first parameter, -you SHOULD pass a `TcpServer` instance as first parameter, unless you -know what you're doing. -Internally, the `SecureServer` has to set the required TLS context options on -the underlying stream resources. -These resources are not exposed through any of the interfaces defined in this -package, but only through the internal `Connection` class. -The `TcpServer` class is guaranteed to emit connections that implement -the `ConnectionInterface` and uses the internal `Connection` class in order to -expose these underlying resources. -If you use a custom `ServerInterface` and its `connection` event does not -meet this requirement, the `SecureServer` will emit an `error` event and -then close the underlying connection. - -#### UnixServer - -The `UnixServer` class implements the [`ServerInterface`](#serverinterface) and -is responsible for accepting connections on Unix domain sockets (UDS). - -```php -$server = new React\Socket\UnixServer('/tmp/server.sock'); -``` - -As above, the `$uri` parameter can consist of only a socket path or socket path -prefixed by the `unix://` scheme. - -If the given URI appears to be valid, but listening on it fails (such as if the -socket is already in use or the file not accessible etc.), it will throw a -`RuntimeException`: - -```php -$first = new React\Socket\UnixServer('/tmp/same.sock'); - -// throws RuntimeException because socket is already in use -$second = new React\Socket\UnixServer('/tmp/same.sock'); -``` - -> Note that these error conditions may vary depending on your system and/or - configuration. - In particular, Zend PHP does only report "Unknown error" when the UDS path - already exists and can not be bound. You may want to check `is_file()` on the - given UDS path to report a more user-friendly error message in this case. - See the exception message and code for more details about the actual error - condition. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -Whenever a client connects, it will emit a `connection` event with a connection -instance implementing [`ConnectionInterface`](#connectioninterface): - -```php -$server->on('connection', function (React\Socket\ConnectionInterface $connection) { - echo 'New connection' . PHP_EOL; - - $connection->write('hello there!' . PHP_EOL); - … -}); -``` - -See also the [`ServerInterface`](#serverinterface) for more details. - -#### LimitingServer - -The `LimitingServer` decorator wraps a given `ServerInterface` and is responsible -for limiting and keeping track of open connections to this server instance. - -Whenever the underlying server emits a `connection` event, it will check its -limits and then either - - keep track of this connection by adding it to the list of - open connections and then forward the `connection` event - - or reject (close) the connection when its limits are exceeded and will - forward an `error` event instead. - -Whenever a connection closes, it will remove this connection from the list of -open connections. - -```php -$server = new React\Socket\LimitingServer($server, 100); -$server->on('connection', function (React\Socket\ConnectionInterface $connection) { - $connection->write('hello there!' . PHP_EOL); - … -}); -``` - -See also the [second example](examples) for more details. - -You have to pass a maximum number of open connections to ensure -the server will automatically reject (close) connections once this limit -is exceeded. In this case, it will emit an `error` event to inform about -this and no `connection` event will be emitted. - -```php -$server = new React\Socket\LimitingServer($server, 100); -$server->on('connection', function (React\Socket\ConnectionInterface $connection) { - $connection->write('hello there!' . PHP_EOL); - … -}); -``` - -You MAY pass a `null` limit in order to put no limit on the number of -open connections and keep accepting new connection until you run out of -operating system resources (such as open file handles). This may be -useful if you do not want to take care of applying a limit but still want -to use the `getConnections()` method. - -You can optionally configure the server to pause accepting new -connections once the connection limit is reached. In this case, it will -pause the underlying server and no longer process any new connections at -all, thus also no longer closing any excessive connections. -The underlying operating system is responsible for keeping a backlog of -pending connections until its limit is reached, at which point it will -start rejecting further connections. -Once the server is below the connection limit, it will continue consuming -connections from the backlog and will process any outstanding data on -each connection. -This mode may be useful for some protocols that are designed to wait for -a response message (such as HTTP), but may be less useful for other -protocols that demand immediate responses (such as a "welcome" message in -an interactive chat). - -```php -$server = new React\Socket\LimitingServer($server, 100, true); -$server->on('connection', function (React\Socket\ConnectionInterface $connection) { - $connection->write('hello there!' . PHP_EOL); - … -}); -``` - -##### getConnections() - -The `getConnections(): ConnectionInterface[]` method can be used to -return an array with all currently active connections. - -```php -foreach ($server->getConnection() as $connection) { - $connection->write('Hi!'); -} -``` - -## Client usage - -### ConnectorInterface - -The `ConnectorInterface` is responsible for providing an interface for -establishing streaming connections, such as a normal TCP/IP connection. - -This is the main interface defined in this package and it is used throughout -React's vast ecosystem. - -Most higher-level components (such as HTTP, database or other networking -service clients) accept an instance implementing this interface to create their -TCP/IP connection to the underlying networking service. -This is usually done via dependency injection, so it's fairly simple to actually -swap this implementation against any other implementation of this interface. - -The interface only offers a single method: - -#### connect() - -The `connect(string $uri): PromiseInterface` method can be used to -create a streaming connection to the given remote address. - -It returns a [Promise](https://github.com/reactphp/promise) which either -fulfills with a stream implementing [`ConnectionInterface`](#connectioninterface) -on success or rejects with an `Exception` if the connection is not successful: - -```php -$connector->connect('google.com:443')->then( - function (React\Socket\ConnectionInterface $connection) { - // connection successfully established - }, - function (Exception $error) { - // failed to connect due to $error - } -); -``` - -See also [`ConnectionInterface`](#connectioninterface) for more details. - -The returned Promise MUST be implemented in such a way that it can be -cancelled when it is still pending. Cancelling a pending promise MUST -reject its value with an `Exception`. It SHOULD clean up any underlying -resources and references as applicable: - -```php -$promise = $connector->connect($uri); - -$promise->cancel(); -``` - -### Connector - -The `Connector` class is the main class in this package that implements the -[`ConnectorInterface`](#connectorinterface) and allows you to create streaming connections. - -You can use this connector to create any kind of streaming connections, such -as plaintext TCP/IP, secure TLS or local Unix connection streams. - -It binds to the main event loop and can be used like this: - -```php -$connector = new React\Socket\Connector(); - -$connector->connect($uri)->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}, function (Exception $e) { - echo 'Error: ' . $e->getMessage() . PHP_EOL; -}); -``` - -In order to create a plaintext TCP/IP connection, you can simply pass a host -and port combination like this: - -```php -$connector->connect('www.google.com:80')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -> If you do no specify a URI scheme in the destination URI, it will assume - `tcp://` as a default and establish a plaintext TCP/IP connection. - Note that TCP/IP connections require a host and port part in the destination - URI like above, all other URI components are optional. - -In order to create a secure TLS connection, you can use the `tls://` URI scheme -like this: - -```php -$connector->connect('tls://www.google.com:443')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -In order to create a local Unix domain socket connection, you can use the -`unix://` URI scheme like this: - -```php -$connector->connect('unix:///tmp/demo.sock')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -> The [`getRemoteAddress()`](#getremoteaddress) method will return the target - Unix domain socket (UDS) path as given to the `connect()` method, including - the `unix://` scheme, for example `unix:///tmp/demo.sock`. - The [`getLocalAddress()`](#getlocaladdress) method will most likely return a - `null` value as this value is not applicable to UDS connections here. - -Under the hood, the `Connector` is implemented as a *higher-level facade* -for the lower-level connectors implemented in this package. This means it -also shares all of their features and implementation details. -If you want to typehint in your higher-level protocol implementation, you SHOULD -use the generic [`ConnectorInterface`](#connectorinterface) instead. - -As of `v1.4.0`, the `Connector` class defaults to using the -[happy eyeballs algorithm](https://en.wikipedia.org/wiki/Happy_Eyeballs) to -automatically connect over IPv4 or IPv6 when a hostname is given. -This automatically attempts to connect using both IPv4 and IPv6 at the same time -(preferring IPv6), thus avoiding the usual problems faced by users with imperfect -IPv6 connections or setups. -If you want to revert to the old behavior of only doing an IPv4 lookup and -only attempt a single IPv4 connection, you can set up the `Connector` like this: - -```php -$connector = new React\Socket\Connector(array( - 'happy_eyeballs' => false -)); -``` - -Similarly, you can also affect the default DNS behavior as follows. -The `Connector` class will try to detect your system DNS settings (and uses -Google's public DNS server `8.8.8.8` as a fallback if unable to determine your -system settings) to resolve all public hostnames into underlying IP addresses by -default. -If you explicitly want to use a custom DNS server (such as a local DNS relay or -a company wide DNS server), you can set up the `Connector` like this: - -```php -$connector = new React\Socket\Connector(array( - 'dns' => '127.0.1.1' -)); - -$connector->connect('localhost:80')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -If you do not want to use a DNS resolver at all and want to connect to IP -addresses only, you can also set up your `Connector` like this: - -```php -$connector = new React\Socket\Connector(array( - 'dns' => false -)); - -$connector->connect('127.0.0.1:80')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -Advanced: If you need a custom DNS `React\Dns\Resolver\ResolverInterface` instance, you -can also set up your `Connector` like this: - -```php -$dnsResolverFactory = new React\Dns\Resolver\Factory(); -$resolver = $dnsResolverFactory->createCached('127.0.1.1'); - -$connector = new React\Socket\Connector(array( - 'dns' => $resolver -)); - -$connector->connect('localhost:80')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -By default, the `tcp://` and `tls://` URI schemes will use timeout value that -respects your `default_socket_timeout` ini setting (which defaults to 60s). -If you want a custom timeout value, you can simply pass this like this: - -```php -$connector = new React\Socket\Connector(array( - 'timeout' => 10.0 -)); -``` - -Similarly, if you do not want to apply a timeout at all and let the operating -system handle this, you can pass a boolean flag like this: - -```php -$connector = new React\Socket\Connector(array( - 'timeout' => false -)); -``` - -By default, the `Connector` supports the `tcp://`, `tls://` and `unix://` -URI schemes. If you want to explicitly prohibit any of these, you can simply -pass boolean flags like this: - -```php -// only allow secure TLS connections -$connector = new React\Socket\Connector(array( - 'tcp' => false, - 'tls' => true, - 'unix' => false, -)); - -$connector->connect('tls://google.com:443')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -The `tcp://` and `tls://` also accept additional context options passed to -the underlying connectors. -If you want to explicitly pass additional context options, you can simply -pass arrays of context options like this: - -```php -// allow insecure TLS connections -$connector = new React\Socket\Connector(array( - 'tcp' => array( - 'bindto' => '192.168.0.1:0' - ), - 'tls' => array( - 'verify_peer' => false, - 'verify_peer_name' => false - ), -)); - -$connector->connect('tls://localhost:443')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -By default, this connector supports TLSv1.0+ and excludes support for legacy -SSLv2/SSLv3. As of PHP 5.6+ you can also explicitly choose the TLS version you -want to negotiate with the remote side: - -```php -$connector = new React\Socket\Connector(array( - 'tls' => array( - 'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT - ) -)); -``` - -> For more details about context options, please refer to the PHP documentation - about [socket context options](https://www.php.net/manual/en/context.socket.php) - and [SSL context options](https://www.php.net/manual/en/context.ssl.php). - -Advanced: By default, the `Connector` supports the `tcp://`, `tls://` and -`unix://` URI schemes. -For this, it sets up the required connector classes automatically. -If you want to explicitly pass custom connectors for any of these, you can simply -pass an instance implementing the `ConnectorInterface` like this: - -```php -$dnsResolverFactory = new React\Dns\Resolver\Factory(); -$resolver = $dnsResolverFactory->createCached('127.0.1.1'); -$tcp = new React\Socket\HappyEyeBallsConnector(null, new React\Socket\TcpConnector(), $resolver); - -$tls = new React\Socket\SecureConnector($tcp); - -$unix = new React\Socket\UnixConnector(); - -$connector = new React\Socket\Connector(array( - 'tcp' => $tcp, - 'tls' => $tls, - 'unix' => $unix, - - 'dns' => false, - 'timeout' => false, -)); - -$connector->connect('google.com:80')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -> Internally, the `tcp://` connector will always be wrapped by the DNS resolver, - unless you disable DNS like in the above example. In this case, the `tcp://` - connector receives the actual hostname instead of only the resolved IP address - and is thus responsible for performing the lookup. - Internally, the automatically created `tls://` connector will always wrap the - underlying `tcp://` connector for establishing the underlying plaintext - TCP/IP connection before enabling secure TLS mode. If you want to use a custom - underlying `tcp://` connector for secure TLS connections only, you may - explicitly pass a `tls://` connector like above instead. - Internally, the `tcp://` and `tls://` connectors will always be wrapped by - `TimeoutConnector`, unless you disable timeouts like in the above example. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -> Changelog v1.9.0: The constructur signature has been updated to take the -> optional `$context` as the first parameter and the optional `$loop` as a second -> argument. The previous signature has been deprecated and should not be used anymore. -> -> ```php -> // constructor signature as of v1.9.0 -> $connector = new React\Socket\Connector(array $context = [], ?LoopInterface $loop = null); -> -> // legacy constructor signature before v1.9.0 -> $connector = new React\Socket\Connector(?LoopInterface $loop = null, array $context = []); -> ``` - -### Advanced client usage - -#### TcpConnector - -The `TcpConnector` class implements the -[`ConnectorInterface`](#connectorinterface) and allows you to create plaintext -TCP/IP connections to any IP-port-combination: - -```php -$tcpConnector = new React\Socket\TcpConnector(); - -$tcpConnector->connect('127.0.0.1:80')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -See also the [examples](examples). - -Pending connection attempts can be cancelled by cancelling its pending promise like so: - -```php -$promise = $tcpConnector->connect('127.0.0.1:80'); - -$promise->cancel(); -``` - -Calling `cancel()` on a pending promise will close the underlying socket -resource, thus cancelling the pending TCP/IP connection, and reject the -resulting promise. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -You can optionally pass additional -[socket context options](https://www.php.net/manual/en/context.socket.php) -to the constructor like this: - -```php -$tcpConnector = new React\Socket\TcpConnector(null, array( - 'bindto' => '192.168.0.1:0' -)); -``` - -Note that this class only allows you to connect to IP-port-combinations. -If the given URI is invalid, does not contain a valid IP address and port -or contains any other scheme, it will reject with an -`InvalidArgumentException`: - -If the given URI appears to be valid, but connecting to it fails (such as if -the remote host rejects the connection etc.), it will reject with a -`RuntimeException`. - -If you want to connect to hostname-port-combinations, see also the following chapter. - -> Advanced usage: Internally, the `TcpConnector` allocates an empty *context* -resource for each stream resource. -If the destination URI contains a `hostname` query parameter, its value will -be used to set up the TLS peer name. -This is used by the `SecureConnector` and `DnsConnector` to verify the peer -name and can also be used if you want a custom TLS peer name. - -#### HappyEyeBallsConnector - -The `HappyEyeBallsConnector` class implements the -[`ConnectorInterface`](#connectorinterface) and allows you to create plaintext -TCP/IP connections to any hostname-port-combination. Internally it implements the -happy eyeballs algorithm from [`RFC6555`](https://tools.ietf.org/html/rfc6555) and -[`RFC8305`](https://tools.ietf.org/html/rfc8305) to support IPv6 and IPv4 hostnames. - -It does so by decorating a given `TcpConnector` instance so that it first -looks up the given domain name via DNS (if applicable) and then establishes the -underlying TCP/IP connection to the resolved target IP address. - -Make sure to set up your DNS resolver and underlying TCP connector like this: - -```php -$dnsResolverFactory = new React\Dns\Resolver\Factory(); -$dns = $dnsResolverFactory->createCached('8.8.8.8'); - -$dnsConnector = new React\Socket\HappyEyeBallsConnector(null, $tcpConnector, $dns); - -$dnsConnector->connect('www.google.com:80')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -See also the [examples](examples). - -Pending connection attempts can be cancelled by cancelling its pending promise like so: - -```php -$promise = $dnsConnector->connect('www.google.com:80'); - -$promise->cancel(); -``` - -Calling `cancel()` on a pending promise will cancel the underlying DNS lookups -and/or the underlying TCP/IP connection(s) and reject the resulting promise. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -> Advanced usage: Internally, the `HappyEyeBallsConnector` relies on a `Resolver` to -look up the IP addresses for the given hostname. -It will then replace the hostname in the destination URI with this IP's and -append a `hostname` query parameter and pass this updated URI to the underlying -connector. -The Happy Eye Balls algorithm describes looking the IPv6 and IPv4 address for -the given hostname so this connector sends out two DNS lookups for the A and -AAAA records. It then uses all IP addresses (both v6 and v4) and tries to -connect to all of them with a 50ms interval in between. Alterating between IPv6 -and IPv4 addresses. When a connection is established all the other DNS lookups -and connection attempts are cancelled. - -#### DnsConnector - -The `DnsConnector` class implements the -[`ConnectorInterface`](#connectorinterface) and allows you to create plaintext -TCP/IP connections to any hostname-port-combination. - -It does so by decorating a given `TcpConnector` instance so that it first -looks up the given domain name via DNS (if applicable) and then establishes the -underlying TCP/IP connection to the resolved target IP address. - -Make sure to set up your DNS resolver and underlying TCP connector like this: - -```php -$dnsResolverFactory = new React\Dns\Resolver\Factory(); -$dns = $dnsResolverFactory->createCached('8.8.8.8'); - -$dnsConnector = new React\Socket\DnsConnector($tcpConnector, $dns); - -$dnsConnector->connect('www.google.com:80')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write('...'); - $connection->end(); -}); -``` - -See also the [examples](examples). - -Pending connection attempts can be cancelled by cancelling its pending promise like so: - -```php -$promise = $dnsConnector->connect('www.google.com:80'); - -$promise->cancel(); -``` - -Calling `cancel()` on a pending promise will cancel the underlying DNS lookup -and/or the underlying TCP/IP connection and reject the resulting promise. - -> Advanced usage: Internally, the `DnsConnector` relies on a `React\Dns\Resolver\ResolverInterface` -to look up the IP address for the given hostname. -It will then replace the hostname in the destination URI with this IP and -append a `hostname` query parameter and pass this updated URI to the underlying -connector. -The underlying connector is thus responsible for creating a connection to the -target IP address, while this query parameter can be used to check the original -hostname and is used by the `TcpConnector` to set up the TLS peer name. -If a `hostname` is given explicitly, this query parameter will not be modified, -which can be useful if you want a custom TLS peer name. - -#### SecureConnector - -The `SecureConnector` class implements the -[`ConnectorInterface`](#connectorinterface) and allows you to create secure -TLS (formerly known as SSL) connections to any hostname-port-combination. - -It does so by decorating a given `DnsConnector` instance so that it first -creates a plaintext TCP/IP connection and then enables TLS encryption on this -stream. - -```php -$secureConnector = new React\Socket\SecureConnector($dnsConnector); - -$secureConnector->connect('www.google.com:443')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write("GET / HTTP/1.0\r\nHost: www.google.com\r\n\r\n"); - ... -}); -``` - -See also the [examples](examples). - -Pending connection attempts can be cancelled by cancelling its pending promise like so: - -```php -$promise = $secureConnector->connect('www.google.com:443'); - -$promise->cancel(); -``` - -Calling `cancel()` on a pending promise will cancel the underlying TCP/IP -connection and/or the SSL/TLS negotiation and reject the resulting promise. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -You can optionally pass additional -[SSL context options](https://www.php.net/manual/en/context.ssl.php) -to the constructor like this: - -```php -$secureConnector = new React\Socket\SecureConnector($dnsConnector, null, array( - 'verify_peer' => false, - 'verify_peer_name' => false -)); -``` - -By default, this connector supports TLSv1.0+ and excludes support for legacy -SSLv2/SSLv3. As of PHP 5.6+ you can also explicitly choose the TLS version you -want to negotiate with the remote side: - -```php -$secureConnector = new React\Socket\SecureConnector($dnsConnector, null, array( - 'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT -)); -``` - -> Advanced usage: Internally, the `SecureConnector` relies on setting up the -required *context options* on the underlying stream resource. -It should therefor be used with a `TcpConnector` somewhere in the connector -stack so that it can allocate an empty *context* resource for each stream -resource and verify the peer name. -Failing to do so may result in a TLS peer name mismatch error or some hard to -trace race conditions, because all stream resources will use a single, shared -*default context* resource otherwise. - -#### TimeoutConnector - -The `TimeoutConnector` class implements the -[`ConnectorInterface`](#connectorinterface) and allows you to add timeout -handling to any existing connector instance. - -It does so by decorating any given [`ConnectorInterface`](#connectorinterface) -instance and starting a timer that will automatically reject and abort any -underlying connection attempt if it takes too long. - -```php -$timeoutConnector = new React\Socket\TimeoutConnector($connector, 3.0); - -$timeoutConnector->connect('google.com:80')->then(function (React\Socket\ConnectionInterface $connection) { - // connection succeeded within 3.0 seconds -}); -``` - -See also any of the [examples](examples). - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -Pending connection attempts can be cancelled by cancelling its pending promise like so: - -```php -$promise = $timeoutConnector->connect('google.com:80'); - -$promise->cancel(); -``` - -Calling `cancel()` on a pending promise will cancel the underlying connection -attempt, abort the timer and reject the resulting promise. - -#### UnixConnector - -The `UnixConnector` class implements the -[`ConnectorInterface`](#connectorinterface) and allows you to connect to -Unix domain socket (UDS) paths like this: - -```php -$connector = new React\Socket\UnixConnector(); - -$connector->connect('/tmp/demo.sock')->then(function (React\Socket\ConnectionInterface $connection) { - $connection->write("HELLO\n"); -}); -``` - -Connecting to Unix domain sockets is an atomic operation, i.e. its promise will -settle (either resolve or reject) immediately. -As such, calling `cancel()` on the resulting promise has no effect. - -> The [`getRemoteAddress()`](#getremoteaddress) method will return the target - Unix domain socket (UDS) path as given to the `connect()` method, prepended - with the `unix://` scheme, for example `unix:///tmp/demo.sock`. - The [`getLocalAddress()`](#getlocaladdress) method will most likely return a - `null` value as this value is not applicable to UDS connections here. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -#### FixedUriConnector - -The `FixedUriConnector` class implements the -[`ConnectorInterface`](#connectorinterface) and decorates an existing Connector -to always use a fixed, preconfigured URI. - -This can be useful for consumers that do not support certain URIs, such as -when you want to explicitly connect to a Unix domain socket (UDS) path -instead of connecting to a default address assumed by an higher-level API: - -```php -$connector = new React\Socket\FixedUriConnector( - 'unix:///var/run/docker.sock', - new React\Socket\UnixConnector() -); - -// destination will be ignored, actually connects to Unix domain socket -$promise = $connector->connect('localhost:80'); -``` - -## Install - -The recommended way to install this library is [through Composer](https://getcomposer.org/). -[New to Composer?](https://getcomposer.org/doc/00-intro.md) - -This project follows [SemVer](https://semver.org/). -This will install the latest supported version: - -```bash -composer require react/socket:^1.17 -``` - -See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades. - -This project aims to run on any platform and thus does not require any PHP -extensions and supports running on legacy PHP 5.3 through current PHP 8+ and HHVM. -It's *highly recommended to use the latest supported PHP version* for this project, -partly due to its vast performance improvements and partly because legacy PHP -versions require several workarounds as described below. - -Secure TLS connections received some major upgrades starting with PHP 5.6, with -the defaults now being more secure, while older versions required explicit -context options. -This library does not take responsibility over these context options, so it's -up to consumers of this library to take care of setting appropriate context -options as described above. - -PHP < 7.3.3 (and PHP < 7.2.15) suffers from a bug where feof() might -block with 100% CPU usage on fragmented TLS records. -We try to work around this by always consuming the complete receive -buffer at once to avoid stale data in TLS buffers. This is known to -work around high CPU usage for well-behaving peers, but this may -cause very large data chunks for high throughput scenarios. The buggy -behavior can still be triggered due to network I/O buffers or -malicious peers on affected versions, upgrading is highly recommended. - -PHP < 7.1.4 (and PHP < 7.0.18) suffers from a bug when writing big -chunks of data over TLS streams at once. -We try to work around this by limiting the write chunk size to 8192 -bytes for older PHP versions only. -This is only a work-around and has a noticable performance penalty on -affected versions. - -This project also supports running on HHVM. -Note that really old HHVM < 3.8 does not support secure TLS connections, as it -lacks the required `stream_socket_enable_crypto()` function. -As such, trying to create a secure TLS connections on affected versions will -return a rejected promise instead. -This issue is also covered by our test suite, which will skip related tests -on affected versions. - -## Tests - -To run the test suite, you first need to clone this repo and then install all -dependencies [through Composer](https://getcomposer.org/): - -```bash -composer install -``` - -To run the test suite, go to the project root and run: - -```bash -vendor/bin/phpunit -``` - -The test suite also contains a number of functional integration tests that rely -on a stable internet connection. -If you do not want to run these, they can simply be skipped like this: - -```bash -vendor/bin/phpunit --exclude-group internet -``` - -## License - -MIT, see [LICENSE file](LICENSE). diff --git a/v3_ci4/vendor/react/socket/composer.json b/v3_ci4/vendor/react/socket/composer.json deleted file mode 100644 index b1e1d25..0000000 --- a/v3_ci4/vendor/react/socket/composer.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "react/socket", - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", - "keywords": ["async", "socket", "stream", "connection", "ReactPHP"], - "license": "MIT", - "authors": [ - { - "name": "Christian Lück", - "homepage": "https://clue.engineering/", - "email": "christian@clue.engineering" - }, - { - "name": "Cees-Jan Kiewiet", - "homepage": "https://wyrihaximus.net/", - "email": "reactphp@ceesjankiewiet.nl" - }, - { - "name": "Jan Sorgalla", - "homepage": "https://sorgalla.com/", - "email": "jsorgalla@gmail.com" - }, - { - "name": "Chris Boden", - "homepage": "https://cboden.dev/", - "email": "cboden@gmail.com" - } - ], - "require": { - "php": ">=5.3.0", - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "react/dns": "^1.13", - "react/event-loop": "^1.2", - "react/promise": "^3.2 || ^2.6 || ^1.2.1", - "react/stream": "^1.4" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4.3 || ^3.3 || ^2", - "react/promise-stream": "^1.4", - "react/promise-timer": "^1.11" - }, - "autoload": { - "psr-4": { - "React\\Socket\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "React\\Tests\\Socket\\": "tests/" - } - } -} diff --git a/v3_ci4/vendor/react/socket/src/Connection.php b/v3_ci4/vendor/react/socket/src/Connection.php deleted file mode 100644 index 65ae26b..0000000 --- a/v3_ci4/vendor/react/socket/src/Connection.php +++ /dev/null @@ -1,183 +0,0 @@ -= 70300 && \PHP_VERSION_ID < 70303); - - // PHP < 7.1.4 (and PHP < 7.0.18) suffers from a bug when writing big - // chunks of data over TLS streams at once. - // We try to work around this by limiting the write chunk size to 8192 - // bytes for older PHP versions only. - // This is only a work-around and has a noticable performance penalty on - // affected versions. Please update your PHP version. - // This applies to all streams because TLS may be enabled later on. - // See https://github.com/reactphp/socket/issues/105 - $limitWriteChunks = (\PHP_VERSION_ID < 70018 || (\PHP_VERSION_ID >= 70100 && \PHP_VERSION_ID < 70104)); - - $this->input = new DuplexResourceStream( - $resource, - $loop, - $clearCompleteBuffer ? -1 : null, - new WritableResourceStream($resource, $loop, null, $limitWriteChunks ? 8192 : null) - ); - - $this->stream = $resource; - - Util::forwardEvents($this->input, $this, array('data', 'end', 'error', 'close', 'pipe', 'drain')); - - $this->input->on('close', array($this, 'close')); - } - - public function isReadable() - { - return $this->input->isReadable(); - } - - public function isWritable() - { - return $this->input->isWritable(); - } - - public function pause() - { - $this->input->pause(); - } - - public function resume() - { - $this->input->resume(); - } - - public function pipe(WritableStreamInterface $dest, array $options = array()) - { - return $this->input->pipe($dest, $options); - } - - public function write($data) - { - return $this->input->write($data); - } - - public function end($data = null) - { - $this->input->end($data); - } - - public function close() - { - $this->input->close(); - $this->handleClose(); - $this->removeAllListeners(); - } - - public function handleClose() - { - if (!\is_resource($this->stream)) { - return; - } - - // Try to cleanly shut down socket and ignore any errors in case other - // side already closed. Underlying Stream implementation will take care - // of closing stream resource, so we otherwise keep this open here. - @\stream_socket_shutdown($this->stream, \STREAM_SHUT_RDWR); - } - - public function getRemoteAddress() - { - if (!\is_resource($this->stream)) { - return null; - } - - return $this->parseAddress(\stream_socket_get_name($this->stream, true)); - } - - public function getLocalAddress() - { - if (!\is_resource($this->stream)) { - return null; - } - - return $this->parseAddress(\stream_socket_get_name($this->stream, false)); - } - - private function parseAddress($address) - { - if ($address === false) { - return null; - } - - if ($this->unix) { - // remove trailing colon from address for HHVM < 3.19: https://3v4l.org/5C1lo - // note that technically ":" is a valid address, so keep this in place otherwise - if (\substr($address, -1) === ':' && \defined('HHVM_VERSION_ID') && \HHVM_VERSION_ID < 31900) { - $address = (string)\substr($address, 0, -1); // @codeCoverageIgnore - } - - // work around unknown addresses should return null value: https://3v4l.org/5C1lo and https://bugs.php.net/bug.php?id=74556 - // PHP uses "\0" string and HHVM uses empty string (colon removed above) - if ($address === '' || $address[0] === "\x00" ) { - return null; // @codeCoverageIgnore - } - - return 'unix://' . $address; - } - - // check if this is an IPv6 address which includes multiple colons but no square brackets - $pos = \strrpos($address, ':'); - if ($pos !== false && \strpos($address, ':') < $pos && \substr($address, 0, 1) !== '[') { - $address = '[' . \substr($address, 0, $pos) . ']:' . \substr($address, $pos + 1); // @codeCoverageIgnore - } - - return ($this->encryptionEnabled ? 'tls' : 'tcp') . '://' . $address; - } -} diff --git a/v3_ci4/vendor/react/socket/src/ConnectionInterface.php b/v3_ci4/vendor/react/socket/src/ConnectionInterface.php deleted file mode 100644 index 64613b5..0000000 --- a/v3_ci4/vendor/react/socket/src/ConnectionInterface.php +++ /dev/null @@ -1,119 +0,0 @@ -on('data', function ($chunk) { - * echo $chunk; - * }); - * - * $connection->on('end', function () { - * echo 'ended'; - * }); - * - * $connection->on('error', function (Exception $e) { - * echo 'error: ' . $e->getMessage(); - * }); - * - * $connection->on('close', function () { - * echo 'closed'; - * }); - * - * $connection->write($data); - * $connection->end($data = null); - * $connection->close(); - * // … - * ``` - * - * For more details, see the - * [`DuplexStreamInterface`](https://github.com/reactphp/stream#duplexstreaminterface). - * - * @see DuplexStreamInterface - * @see ServerInterface - * @see ConnectorInterface - */ -interface ConnectionInterface extends DuplexStreamInterface -{ - /** - * Returns the full remote address (URI) where this connection has been established with - * - * ```php - * $address = $connection->getRemoteAddress(); - * echo 'Connection with ' . $address . PHP_EOL; - * ``` - * - * If the remote address can not be determined or is unknown at this time (such as - * after the connection has been closed), it MAY return a `NULL` value instead. - * - * Otherwise, it will return the full address (URI) as a string value, such - * as `tcp://127.0.0.1:8080`, `tcp://[::1]:80`, `tls://127.0.0.1:443`, - * `unix://example.sock` or `unix:///path/to/example.sock`. - * Note that individual URI components are application specific and depend - * on the underlying transport protocol. - * - * If this is a TCP/IP based connection and you only want the remote IP, you may - * use something like this: - * - * ```php - * $address = $connection->getRemoteAddress(); - * $ip = trim(parse_url($address, PHP_URL_HOST), '[]'); - * echo 'Connection with ' . $ip . PHP_EOL; - * ``` - * - * @return ?string remote address (URI) or null if unknown - */ - public function getRemoteAddress(); - - /** - * Returns the full local address (full URI with scheme, IP and port) where this connection has been established with - * - * ```php - * $address = $connection->getLocalAddress(); - * echo 'Connection with ' . $address . PHP_EOL; - * ``` - * - * If the local address can not be determined or is unknown at this time (such as - * after the connection has been closed), it MAY return a `NULL` value instead. - * - * Otherwise, it will return the full address (URI) as a string value, such - * as `tcp://127.0.0.1:8080`, `tcp://[::1]:80`, `tls://127.0.0.1:443`, - * `unix://example.sock` or `unix:///path/to/example.sock`. - * Note that individual URI components are application specific and depend - * on the underlying transport protocol. - * - * This method complements the [`getRemoteAddress()`](#getremoteaddress) method, - * so they should not be confused. - * - * If your `TcpServer` instance is listening on multiple interfaces (e.g. using - * the address `0.0.0.0`), you can use this method to find out which interface - * actually accepted this connection (such as a public or local interface). - * - * If your system has multiple interfaces (e.g. a WAN and a LAN interface), - * you can use this method to find out which interface was actually - * used for this connection. - * - * @return ?string local address (URI) or null if unknown - * @see self::getRemoteAddress() - */ - public function getLocalAddress(); -} diff --git a/v3_ci4/vendor/react/socket/src/Connector.php b/v3_ci4/vendor/react/socket/src/Connector.php deleted file mode 100644 index 15faa46..0000000 --- a/v3_ci4/vendor/react/socket/src/Connector.php +++ /dev/null @@ -1,236 +0,0 @@ - true, - 'tls' => true, - 'unix' => true, - - 'dns' => true, - 'timeout' => true, - 'happy_eyeballs' => true, - ); - - if ($context['timeout'] === true) { - $context['timeout'] = (float)\ini_get("default_socket_timeout"); - } - - if ($context['tcp'] instanceof ConnectorInterface) { - $tcp = $context['tcp']; - } else { - $tcp = new TcpConnector( - $loop, - \is_array($context['tcp']) ? $context['tcp'] : array() - ); - } - - if ($context['dns'] !== false) { - if ($context['dns'] instanceof ResolverInterface) { - $resolver = $context['dns']; - } else { - if ($context['dns'] !== true) { - $config = $context['dns']; - } else { - // try to load nameservers from system config or default to Google's public DNS - $config = DnsConfig::loadSystemConfigBlocking(); - if (!$config->nameservers) { - $config->nameservers[] = '8.8.8.8'; // @codeCoverageIgnore - } - } - - $factory = new DnsFactory(); - $resolver = $factory->createCached( - $config, - $loop - ); - } - - if ($context['happy_eyeballs'] === true) { - $tcp = new HappyEyeBallsConnector($loop, $tcp, $resolver); - } else { - $tcp = new DnsConnector($tcp, $resolver); - } - } - - if ($context['tcp'] !== false) { - $context['tcp'] = $tcp; - - if ($context['timeout'] !== false) { - $context['tcp'] = new TimeoutConnector( - $context['tcp'], - $context['timeout'], - $loop - ); - } - - $this->connectors['tcp'] = $context['tcp']; - } - - if ($context['tls'] !== false) { - if (!$context['tls'] instanceof ConnectorInterface) { - $context['tls'] = new SecureConnector( - $tcp, - $loop, - \is_array($context['tls']) ? $context['tls'] : array() - ); - } - - if ($context['timeout'] !== false) { - $context['tls'] = new TimeoutConnector( - $context['tls'], - $context['timeout'], - $loop - ); - } - - $this->connectors['tls'] = $context['tls']; - } - - if ($context['unix'] !== false) { - if (!$context['unix'] instanceof ConnectorInterface) { - $context['unix'] = new UnixConnector($loop); - } - $this->connectors['unix'] = $context['unix']; - } - } - - public function connect($uri) - { - $scheme = 'tcp'; - if (\strpos($uri, '://') !== false) { - $scheme = (string)\substr($uri, 0, \strpos($uri, '://')); - } - - if (!isset($this->connectors[$scheme])) { - return \React\Promise\reject(new \RuntimeException( - 'No connector available for URI scheme "' . $scheme . '" (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - )); - } - - return $this->connectors[$scheme]->connect($uri); - } - - - /** - * [internal] Builds on URI from the given URI parts and ip address with original hostname as query - * - * @param array $parts - * @param string $host - * @param string $ip - * @return string - * @internal - */ - public static function uri(array $parts, $host, $ip) - { - $uri = ''; - - // prepend original scheme if known - if (isset($parts['scheme'])) { - $uri .= $parts['scheme'] . '://'; - } - - if (\strpos($ip, ':') !== false) { - // enclose IPv6 addresses in square brackets before appending port - $uri .= '[' . $ip . ']'; - } else { - $uri .= $ip; - } - - // append original port if known - if (isset($parts['port'])) { - $uri .= ':' . $parts['port']; - } - - // append orignal path if known - if (isset($parts['path'])) { - $uri .= $parts['path']; - } - - // append original query if known - if (isset($parts['query'])) { - $uri .= '?' . $parts['query']; - } - - // append original hostname as query if resolved via DNS and if - // destination URI does not contain "hostname" query param already - $args = array(); - \parse_str(isset($parts['query']) ? $parts['query'] : '', $args); - if ($host !== $ip && !isset($args['hostname'])) { - $uri .= (isset($parts['query']) ? '&' : '?') . 'hostname=' . \rawurlencode($host); - } - - // append original fragment if known - if (isset($parts['fragment'])) { - $uri .= '#' . $parts['fragment']; - } - - return $uri; - } -} diff --git a/v3_ci4/vendor/react/socket/src/ConnectorInterface.php b/v3_ci4/vendor/react/socket/src/ConnectorInterface.php deleted file mode 100644 index 1f07b75..0000000 --- a/v3_ci4/vendor/react/socket/src/ConnectorInterface.php +++ /dev/null @@ -1,59 +0,0 @@ -connect('google.com:443')->then( - * function (React\Socket\ConnectionInterface $connection) { - * // connection successfully established - * }, - * function (Exception $error) { - * // failed to connect due to $error - * } - * ); - * ``` - * - * The returned Promise MUST be implemented in such a way that it can be - * cancelled when it is still pending. Cancelling a pending promise MUST - * reject its value with an Exception. It SHOULD clean up any underlying - * resources and references as applicable. - * - * ```php - * $promise = $connector->connect($uri); - * - * $promise->cancel(); - * ``` - * - * @param string $uri - * @return \React\Promise\PromiseInterface - * Resolves with a `ConnectionInterface` on success or rejects with an `Exception` on error. - * @see ConnectionInterface - */ - public function connect($uri); -} diff --git a/v3_ci4/vendor/react/socket/src/DnsConnector.php b/v3_ci4/vendor/react/socket/src/DnsConnector.php deleted file mode 100644 index e5fd238..0000000 --- a/v3_ci4/vendor/react/socket/src/DnsConnector.php +++ /dev/null @@ -1,119 +0,0 @@ -connector = $connector; - $this->resolver = $resolver; - } - - public function connect($uri) - { - $original = $uri; - if (\strpos($uri, '://') === false) { - $uri = 'tcp://' . $uri; - $parts = \parse_url($uri); - if (isset($parts['scheme'])) { - unset($parts['scheme']); - } - } else { - $parts = \parse_url($uri); - } - - if (!$parts || !isset($parts['host'])) { - return Promise\reject(new \InvalidArgumentException( - 'Given URI "' . $original . '" is invalid (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - )); - } - - $host = \trim($parts['host'], '[]'); - $connector = $this->connector; - - // skip DNS lookup / URI manipulation if this URI already contains an IP - if (@\inet_pton($host) !== false) { - return $connector->connect($original); - } - - $promise = $this->resolver->resolve($host); - $resolved = null; - - return new Promise\Promise( - function ($resolve, $reject) use (&$promise, &$resolved, $uri, $connector, $host, $parts) { - // resolve/reject with result of DNS lookup - $promise->then(function ($ip) use (&$promise, &$resolved, $uri, $connector, $host, $parts) { - $resolved = $ip; - - return $promise = $connector->connect( - Connector::uri($parts, $host, $ip) - )->then(null, function (\Exception $e) use ($uri) { - if ($e instanceof \RuntimeException) { - $message = \preg_replace('/^(Connection to [^ ]+)[&?]hostname=[^ &]+/', '$1', $e->getMessage()); - $e = new \RuntimeException( - 'Connection to ' . $uri . ' failed: ' . $message, - $e->getCode(), - $e - ); - - // avoid garbage references by replacing all closures in call stack. - // what a lovely piece of code! - $r = new \ReflectionProperty('Exception', 'trace'); - if (\PHP_VERSION_ID < 80100) { - $r->setAccessible(true); - } - $trace = $r->getValue($e); - - // Exception trace arguments are not available on some PHP 7.4 installs - // @codeCoverageIgnoreStart - foreach ($trace as $ti => $one) { - if (isset($one['args'])) { - foreach ($one['args'] as $ai => $arg) { - if ($arg instanceof \Closure) { - $trace[$ti]['args'][$ai] = 'Object(' . \get_class($arg) . ')'; - } - } - } - } - // @codeCoverageIgnoreEnd - $r->setValue($e, $trace); - } - - throw $e; - }); - }, function ($e) use ($uri, $reject) { - $reject(new \RuntimeException('Connection to ' . $uri .' failed during DNS lookup: ' . $e->getMessage(), 0, $e)); - })->then($resolve, $reject); - }, - function ($_, $reject) use (&$promise, &$resolved, $uri) { - // cancellation should reject connection attempt - // reject DNS resolution with custom reason, otherwise rely on connection cancellation below - if ($resolved === null) { - $reject(new \RuntimeException( - 'Connection to ' . $uri . ' cancelled during DNS lookup (ECONNABORTED)', - \defined('SOCKET_ECONNABORTED') ? \SOCKET_ECONNABORTED : 103 - )); - } - - // (try to) cancel pending DNS lookup / connection attempt - if ($promise instanceof PromiseInterface && \method_exists($promise, 'cancel')) { - // overwrite callback arguments for PHP7+ only, so they do not show - // up in the Exception trace and do not cause a possible cyclic reference. - $_ = $reject = null; - - $promise->cancel(); - $promise = null; - } - } - ); - } -} diff --git a/v3_ci4/vendor/react/socket/src/FdServer.php b/v3_ci4/vendor/react/socket/src/FdServer.php deleted file mode 100644 index 8e46719..0000000 --- a/v3_ci4/vendor/react/socket/src/FdServer.php +++ /dev/null @@ -1,222 +0,0 @@ -on('connection', function (ConnectionInterface $connection) { - * echo 'Plaintext connection from ' . $connection->getRemoteAddress() . PHP_EOL; - * $connection->write('hello there!' . PHP_EOL); - * … - * }); - * ``` - * - * See also the `ServerInterface` for more details. - * - * @see ServerInterface - * @see ConnectionInterface - * @internal - */ -final class FdServer extends EventEmitter implements ServerInterface -{ - private $master; - private $loop; - private $unix = false; - private $listening = false; - - /** - * Creates a socket server and starts listening on the given file descriptor - * - * This starts accepting new incoming connections on the given file descriptor. - * See also the `connection event` documented in the `ServerInterface` - * for more details. - * - * ```php - * $socket = new React\Socket\FdServer(3); - * ``` - * - * If the given FD is invalid or out of range, it will throw an `InvalidArgumentException`: - * - * ```php - * // throws InvalidArgumentException - * $socket = new React\Socket\FdServer(-1); - * ``` - * - * If the given FD appears to be valid, but listening on it fails (such as - * if the FD does not exist or does not refer to a socket server), it will - * throw a `RuntimeException`: - * - * ```php - * // throws RuntimeException because FD does not reference a socket server - * $socket = new React\Socket\FdServer(0, $loop); - * ``` - * - * Note that these error conditions may vary depending on your system and/or - * configuration. - * See the exception message and code for more details about the actual error - * condition. - * - * @param int|string $fd FD number such as `3` or as URL in the form of `php://fd/3` - * @param ?LoopInterface $loop - * @throws \InvalidArgumentException if the listening address is invalid - * @throws \RuntimeException if listening on this address fails (already in use etc.) - */ - public function __construct($fd, $loop = null) - { - if (\preg_match('#^php://fd/(\d+)$#', $fd, $m)) { - $fd = (int) $m[1]; - } - if (!\is_int($fd) || $fd < 0 || $fd >= \PHP_INT_MAX) { - throw new \InvalidArgumentException( - 'Invalid FD number given (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - ); - } - - if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #2 ($loop) expected null|React\EventLoop\LoopInterface'); - } - - $this->loop = $loop ?: Loop::get(); - - $errno = 0; - $errstr = ''; - \set_error_handler(function ($_, $error) use (&$errno, &$errstr) { - // Match errstr from PHP's warning message. - // fopen(php://fd/3): Failed to open stream: Error duping file descriptor 3; possibly it doesn't exist: [9]: Bad file descriptor - \preg_match('/\[(\d+)\]: (.*)/', $error, $m); - $errno = isset($m[1]) ? (int) $m[1] : 0; - $errstr = isset($m[2]) ? $m[2] : $error; - }); - - $this->master = \fopen('php://fd/' . $fd, 'r+'); - - \restore_error_handler(); - - if (false === $this->master) { - throw new \RuntimeException( - 'Failed to listen on FD ' . $fd . ': ' . $errstr . SocketServer::errconst($errno), - $errno - ); - } - - $meta = \stream_get_meta_data($this->master); - if (!isset($meta['stream_type']) || $meta['stream_type'] !== 'tcp_socket') { - \fclose($this->master); - - $errno = \defined('SOCKET_ENOTSOCK') ? \SOCKET_ENOTSOCK : 88; - $errstr = \function_exists('socket_strerror') ? \socket_strerror($errno) : 'Not a socket'; - - throw new \RuntimeException( - 'Failed to listen on FD ' . $fd . ': ' . $errstr . ' (ENOTSOCK)', - $errno - ); - } - - // Socket should not have a peer address if this is a listening socket. - // Looks like this work-around is the closest we can get because PHP doesn't expose SO_ACCEPTCONN even with ext-sockets. - if (\stream_socket_get_name($this->master, true) !== false) { - \fclose($this->master); - - $errno = \defined('SOCKET_EISCONN') ? \SOCKET_EISCONN : 106; - $errstr = \function_exists('socket_strerror') ? \socket_strerror($errno) : 'Socket is connected'; - - throw new \RuntimeException( - 'Failed to listen on FD ' . $fd . ': ' . $errstr . ' (EISCONN)', - $errno - ); - } - - // Assume this is a Unix domain socket (UDS) when its listening address doesn't parse as a valid URL with a port. - // Looks like this work-around is the closest we can get because PHP doesn't expose SO_DOMAIN even with ext-sockets. - $this->unix = \parse_url($this->getAddress(), \PHP_URL_PORT) === false; - - \stream_set_blocking($this->master, false); - - $this->resume(); - } - - public function getAddress() - { - if (!\is_resource($this->master)) { - return null; - } - - $address = \stream_socket_get_name($this->master, false); - - if ($this->unix === true) { - return 'unix://' . $address; - } - - // check if this is an IPv6 address which includes multiple colons but no square brackets - $pos = \strrpos($address, ':'); - if ($pos !== false && \strpos($address, ':') < $pos && \substr($address, 0, 1) !== '[') { - $address = '[' . \substr($address, 0, $pos) . ']:' . \substr($address, $pos + 1); // @codeCoverageIgnore - } - - return 'tcp://' . $address; - } - - public function pause() - { - if (!$this->listening) { - return; - } - - $this->loop->removeReadStream($this->master); - $this->listening = false; - } - - public function resume() - { - if ($this->listening || !\is_resource($this->master)) { - return; - } - - $that = $this; - $this->loop->addReadStream($this->master, function ($master) use ($that) { - try { - $newSocket = SocketServer::accept($master); - } catch (\RuntimeException $e) { - $that->emit('error', array($e)); - return; - } - $that->handleConnection($newSocket); - }); - $this->listening = true; - } - - public function close() - { - if (!\is_resource($this->master)) { - return; - } - - $this->pause(); - \fclose($this->master); - $this->removeAllListeners(); - } - - /** @internal */ - public function handleConnection($socket) - { - $connection = new Connection($socket, $this->loop); - $connection->unix = $this->unix; - - $this->emit('connection', array($connection)); - } -} diff --git a/v3_ci4/vendor/react/socket/src/FixedUriConnector.php b/v3_ci4/vendor/react/socket/src/FixedUriConnector.php deleted file mode 100644 index f83241d..0000000 --- a/v3_ci4/vendor/react/socket/src/FixedUriConnector.php +++ /dev/null @@ -1,41 +0,0 @@ -connect('localhost:80'); - * ``` - */ -class FixedUriConnector implements ConnectorInterface -{ - private $uri; - private $connector; - - /** - * @param string $uri - * @param ConnectorInterface $connector - */ - public function __construct($uri, ConnectorInterface $connector) - { - $this->uri = $uri; - $this->connector = $connector; - } - - public function connect($_) - { - return $this->connector->connect($this->uri); - } -} diff --git a/v3_ci4/vendor/react/socket/src/HappyEyeBallsConnectionBuilder.php b/v3_ci4/vendor/react/socket/src/HappyEyeBallsConnectionBuilder.php deleted file mode 100644 index d4f05e8..0000000 --- a/v3_ci4/vendor/react/socket/src/HappyEyeBallsConnectionBuilder.php +++ /dev/null @@ -1,334 +0,0 @@ - false, - Message::TYPE_AAAA => false, - ); - public $resolverPromises = array(); - public $connectionPromises = array(); - public $connectQueue = array(); - public $nextAttemptTimer; - public $parts; - public $ipsCount = 0; - public $failureCount = 0; - public $resolve; - public $reject; - - public $lastErrorFamily; - public $lastError6; - public $lastError4; - - public function __construct(LoopInterface $loop, ConnectorInterface $connector, ResolverInterface $resolver, $uri, $host, $parts) - { - $this->loop = $loop; - $this->connector = $connector; - $this->resolver = $resolver; - $this->uri = $uri; - $this->host = $host; - $this->parts = $parts; - } - - public function connect() - { - $that = $this; - return new Promise\Promise(function ($resolve, $reject) use ($that) { - $lookupResolve = function ($type) use ($that, $resolve, $reject) { - return function (array $ips) use ($that, $type, $resolve, $reject) { - unset($that->resolverPromises[$type]); - $that->resolved[$type] = true; - - $that->mixIpsIntoConnectQueue($ips); - - // start next connection attempt if not already awaiting next - if ($that->nextAttemptTimer === null && $that->connectQueue) { - $that->check($resolve, $reject); - } - }; - }; - - $that->resolverPromises[Message::TYPE_AAAA] = $that->resolve(Message::TYPE_AAAA, $reject)->then($lookupResolve(Message::TYPE_AAAA)); - $that->resolverPromises[Message::TYPE_A] = $that->resolve(Message::TYPE_A, $reject)->then(function (array $ips) use ($that) { - // happy path: IPv6 has resolved already (or could not resolve), continue with IPv4 addresses - if ($that->resolved[Message::TYPE_AAAA] === true || !$ips) { - return $ips; - } - - // Otherwise delay processing IPv4 lookup until short timer passes or IPv6 resolves in the meantime - $deferred = new Promise\Deferred(function () use (&$ips) { - // discard all IPv4 addresses if cancelled - $ips = array(); - }); - $timer = $that->loop->addTimer($that::RESOLUTION_DELAY, function () use ($deferred, $ips) { - $deferred->resolve($ips); - }); - - $that->resolverPromises[Message::TYPE_AAAA]->then(function () use ($that, $timer, $deferred, &$ips) { - $that->loop->cancelTimer($timer); - $deferred->resolve($ips); - }); - - return $deferred->promise(); - })->then($lookupResolve(Message::TYPE_A)); - }, function ($_, $reject) use ($that) { - $reject(new \RuntimeException( - 'Connection to ' . $that->uri . ' cancelled' . (!$that->connectionPromises ? ' during DNS lookup' : '') . ' (ECONNABORTED)', - \defined('SOCKET_ECONNABORTED') ? \SOCKET_ECONNABORTED : 103 - )); - $_ = $reject = null; - - $that->cleanUp(); - }); - } - - /** - * @internal - * @param int $type DNS query type - * @param callable $reject - * @return \React\Promise\PromiseInterface Returns a promise that - * always resolves with a list of IP addresses on success or an empty - * list on error. - */ - public function resolve($type, $reject) - { - $that = $this; - return $that->resolver->resolveAll($that->host, $type)->then(null, function (\Exception $e) use ($type, $reject, $that) { - unset($that->resolverPromises[$type]); - $that->resolved[$type] = true; - - if ($type === Message::TYPE_A) { - $that->lastError4 = $e->getMessage(); - $that->lastErrorFamily = 4; - } else { - $that->lastError6 = $e->getMessage(); - $that->lastErrorFamily = 6; - } - - // cancel next attempt timer when there are no more IPs to connect to anymore - if ($that->nextAttemptTimer !== null && !$that->connectQueue) { - $that->loop->cancelTimer($that->nextAttemptTimer); - $that->nextAttemptTimer = null; - } - - if ($that->hasBeenResolved() && $that->ipsCount === 0) { - $reject(new \RuntimeException( - $that->error(), - 0, - $e - )); - } - - // Exception already handled above, so don't throw an unhandled rejection here - return array(); - }); - } - - /** - * @internal - */ - public function check($resolve, $reject) - { - $ip = \array_shift($this->connectQueue); - - // start connection attempt and remember array position to later unset again - $this->connectionPromises[] = $this->attemptConnection($ip); - \end($this->connectionPromises); - $index = \key($this->connectionPromises); - - $that = $this; - $that->connectionPromises[$index]->then(function ($connection) use ($that, $index, $resolve) { - unset($that->connectionPromises[$index]); - - $that->cleanUp(); - - $resolve($connection); - }, function (\Exception $e) use ($that, $index, $ip, $resolve, $reject) { - unset($that->connectionPromises[$index]); - - $that->failureCount++; - - $message = \preg_replace('/^(Connection to [^ ]+)[&?]hostname=[^ &]+/', '$1', $e->getMessage()); - if (\strpos($ip, ':') === false) { - $that->lastError4 = $message; - $that->lastErrorFamily = 4; - } else { - $that->lastError6 = $message; - $that->lastErrorFamily = 6; - } - - // start next connection attempt immediately on error - if ($that->connectQueue) { - if ($that->nextAttemptTimer !== null) { - $that->loop->cancelTimer($that->nextAttemptTimer); - $that->nextAttemptTimer = null; - } - - $that->check($resolve, $reject); - } - - if ($that->hasBeenResolved() === false) { - return; - } - - if ($that->ipsCount === $that->failureCount) { - $that->cleanUp(); - - $reject(new \RuntimeException( - $that->error(), - $e->getCode(), - $e - )); - } - }); - - // Allow next connection attempt in 100ms: https://tools.ietf.org/html/rfc8305#section-5 - // Only start timer when more IPs are queued or when DNS query is still pending (might add more IPs) - if ($this->nextAttemptTimer === null && (\count($this->connectQueue) > 0 || $this->resolved[Message::TYPE_A] === false || $this->resolved[Message::TYPE_AAAA] === false)) { - $this->nextAttemptTimer = $this->loop->addTimer(self::CONNECTION_ATTEMPT_DELAY, function () use ($that, $resolve, $reject) { - $that->nextAttemptTimer = null; - - if ($that->connectQueue) { - $that->check($resolve, $reject); - } - }); - } - } - - /** - * @internal - */ - public function attemptConnection($ip) - { - $uri = Connector::uri($this->parts, $this->host, $ip); - - return $this->connector->connect($uri); - } - - /** - * @internal - */ - public function cleanUp() - { - // clear list of outstanding IPs to avoid creating new connections - $this->connectQueue = array(); - - // cancel pending connection attempts - foreach ($this->connectionPromises as $connectionPromise) { - if ($connectionPromise instanceof PromiseInterface && \method_exists($connectionPromise, 'cancel')) { - $connectionPromise->cancel(); - } - } - - // cancel pending DNS resolution (cancel IPv4 first in case it is awaiting IPv6 resolution delay) - foreach (\array_reverse($this->resolverPromises) as $resolverPromise) { - if ($resolverPromise instanceof PromiseInterface && \method_exists($resolverPromise, 'cancel')) { - $resolverPromise->cancel(); - } - } - - if ($this->nextAttemptTimer instanceof TimerInterface) { - $this->loop->cancelTimer($this->nextAttemptTimer); - $this->nextAttemptTimer = null; - } - } - - /** - * @internal - */ - public function hasBeenResolved() - { - foreach ($this->resolved as $typeHasBeenResolved) { - if ($typeHasBeenResolved === false) { - return false; - } - } - - return true; - } - - /** - * Mixes an array of IP addresses into the connect queue in such a way they alternate when attempting to connect. - * The goal behind it is first attempt to connect to IPv6, then to IPv4, then to IPv6 again until one of those - * attempts succeeds. - * - * @link https://tools.ietf.org/html/rfc8305#section-4 - * - * @internal - */ - public function mixIpsIntoConnectQueue(array $ips) - { - \shuffle($ips); - $this->ipsCount += \count($ips); - $connectQueueStash = $this->connectQueue; - $this->connectQueue = array(); - while (\count($connectQueueStash) > 0 || \count($ips) > 0) { - if (\count($ips) > 0) { - $this->connectQueue[] = \array_shift($ips); - } - if (\count($connectQueueStash) > 0) { - $this->connectQueue[] = \array_shift($connectQueueStash); - } - } - } - - /** - * @internal - * @return string - */ - public function error() - { - if ($this->lastError4 === $this->lastError6) { - $message = $this->lastError6; - } elseif ($this->lastErrorFamily === 6) { - $message = 'Last error for IPv6: ' . $this->lastError6 . '. Previous error for IPv4: ' . $this->lastError4; - } else { - $message = 'Last error for IPv4: ' . $this->lastError4 . '. Previous error for IPv6: ' . $this->lastError6; - } - - if ($this->hasBeenResolved() && $this->ipsCount === 0) { - if ($this->lastError6 === $this->lastError4) { - $message = ' during DNS lookup: ' . $this->lastError6; - } else { - $message = ' during DNS lookup. ' . $message; - } - } else { - $message = ': ' . $message; - } - - return 'Connection to ' . $this->uri . ' failed' . $message; - } -} diff --git a/v3_ci4/vendor/react/socket/src/HappyEyeBallsConnector.php b/v3_ci4/vendor/react/socket/src/HappyEyeBallsConnector.php deleted file mode 100644 index a5511ac..0000000 --- a/v3_ci4/vendor/react/socket/src/HappyEyeBallsConnector.php +++ /dev/null @@ -1,80 +0,0 @@ -loop = $loop ?: Loop::get(); - $this->connector = $connector; - $this->resolver = $resolver; - } - - public function connect($uri) - { - $original = $uri; - if (\strpos($uri, '://') === false) { - $uri = 'tcp://' . $uri; - $parts = \parse_url($uri); - if (isset($parts['scheme'])) { - unset($parts['scheme']); - } - } else { - $parts = \parse_url($uri); - } - - if (!$parts || !isset($parts['host'])) { - return Promise\reject(new \InvalidArgumentException( - 'Given URI "' . $original . '" is invalid (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - )); - } - - $host = \trim($parts['host'], '[]'); - - // skip DNS lookup / URI manipulation if this URI already contains an IP - if (@\inet_pton($host) !== false) { - return $this->connector->connect($original); - } - - $builder = new HappyEyeBallsConnectionBuilder( - $this->loop, - $this->connector, - $this->resolver, - $uri, - $host, - $parts - ); - return $builder->connect(); - } -} diff --git a/v3_ci4/vendor/react/socket/src/LimitingServer.php b/v3_ci4/vendor/react/socket/src/LimitingServer.php deleted file mode 100644 index d19000b..0000000 --- a/v3_ci4/vendor/react/socket/src/LimitingServer.php +++ /dev/null @@ -1,203 +0,0 @@ -on('connection', function (React\Socket\ConnectionInterface $connection) { - * $connection->write('hello there!' . PHP_EOL); - * … - * }); - * ``` - * - * See also the `ServerInterface` for more details. - * - * @see ServerInterface - * @see ConnectionInterface - */ -class LimitingServer extends EventEmitter implements ServerInterface -{ - private $connections = array(); - private $server; - private $limit; - - private $pauseOnLimit = false; - private $autoPaused = false; - private $manuPaused = false; - - /** - * Instantiates a new LimitingServer. - * - * You have to pass a maximum number of open connections to ensure - * the server will automatically reject (close) connections once this limit - * is exceeded. In this case, it will emit an `error` event to inform about - * this and no `connection` event will be emitted. - * - * ```php - * $server = new React\Socket\LimitingServer($server, 100); - * $server->on('connection', function (React\Socket\ConnectionInterface $connection) { - * $connection->write('hello there!' . PHP_EOL); - * … - * }); - * ``` - * - * You MAY pass a `null` limit in order to put no limit on the number of - * open connections and keep accepting new connection until you run out of - * operating system resources (such as open file handles). This may be - * useful if you do not want to take care of applying a limit but still want - * to use the `getConnections()` method. - * - * You can optionally configure the server to pause accepting new - * connections once the connection limit is reached. In this case, it will - * pause the underlying server and no longer process any new connections at - * all, thus also no longer closing any excessive connections. - * The underlying operating system is responsible for keeping a backlog of - * pending connections until its limit is reached, at which point it will - * start rejecting further connections. - * Once the server is below the connection limit, it will continue consuming - * connections from the backlog and will process any outstanding data on - * each connection. - * This mode may be useful for some protocols that are designed to wait for - * a response message (such as HTTP), but may be less useful for other - * protocols that demand immediate responses (such as a "welcome" message in - * an interactive chat). - * - * ```php - * $server = new React\Socket\LimitingServer($server, 100, true); - * $server->on('connection', function (React\Socket\ConnectionInterface $connection) { - * $connection->write('hello there!' . PHP_EOL); - * … - * }); - * ``` - * - * @param ServerInterface $server - * @param int|null $connectionLimit - * @param bool $pauseOnLimit - */ - public function __construct(ServerInterface $server, $connectionLimit, $pauseOnLimit = false) - { - $this->server = $server; - $this->limit = $connectionLimit; - if ($connectionLimit !== null) { - $this->pauseOnLimit = $pauseOnLimit; - } - - $this->server->on('connection', array($this, 'handleConnection')); - $this->server->on('error', array($this, 'handleError')); - } - - /** - * Returns an array with all currently active connections - * - * ```php - * foreach ($server->getConnection() as $connection) { - * $connection->write('Hi!'); - * } - * ``` - * - * @return ConnectionInterface[] - */ - public function getConnections() - { - return $this->connections; - } - - public function getAddress() - { - return $this->server->getAddress(); - } - - public function pause() - { - if (!$this->manuPaused) { - $this->manuPaused = true; - - if (!$this->autoPaused) { - $this->server->pause(); - } - } - } - - public function resume() - { - if ($this->manuPaused) { - $this->manuPaused = false; - - if (!$this->autoPaused) { - $this->server->resume(); - } - } - } - - public function close() - { - $this->server->close(); - } - - /** @internal */ - public function handleConnection(ConnectionInterface $connection) - { - // close connection if limit exceeded - if ($this->limit !== null && \count($this->connections) >= $this->limit) { - $this->handleError(new \OverflowException('Connection closed because server reached connection limit')); - $connection->close(); - return; - } - - $this->connections[] = $connection; - $that = $this; - $connection->on('close', function () use ($that, $connection) { - $that->handleDisconnection($connection); - }); - - // pause accepting new connections if limit exceeded - if ($this->pauseOnLimit && !$this->autoPaused && \count($this->connections) >= $this->limit) { - $this->autoPaused = true; - - if (!$this->manuPaused) { - $this->server->pause(); - } - } - - $this->emit('connection', array($connection)); - } - - /** @internal */ - public function handleDisconnection(ConnectionInterface $connection) - { - unset($this->connections[\array_search($connection, $this->connections)]); - - // continue accepting new connection if below limit - if ($this->autoPaused && \count($this->connections) < $this->limit) { - $this->autoPaused = false; - - if (!$this->manuPaused) { - $this->server->resume(); - } - } - } - - /** @internal */ - public function handleError(\Exception $error) - { - $this->emit('error', array($error)); - } -} diff --git a/v3_ci4/vendor/react/socket/src/SecureConnector.php b/v3_ci4/vendor/react/socket/src/SecureConnector.php deleted file mode 100644 index 98cc46a..0000000 --- a/v3_ci4/vendor/react/socket/src/SecureConnector.php +++ /dev/null @@ -1,134 +0,0 @@ -connector = $connector; - $this->streamEncryption = new StreamEncryption($loop ?: Loop::get(), false); - $this->context = $context; - } - - public function connect($uri) - { - if (!\function_exists('stream_socket_enable_crypto')) { - return Promise\reject(new \BadMethodCallException('Encryption not supported on your platform (HHVM < 3.8?)')); // @codeCoverageIgnore - } - - if (\strpos($uri, '://') === false) { - $uri = 'tls://' . $uri; - } - - $parts = \parse_url($uri); - if (!$parts || !isset($parts['scheme']) || $parts['scheme'] !== 'tls') { - return Promise\reject(new \InvalidArgumentException( - 'Given URI "' . $uri . '" is invalid (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - )); - } - - $context = $this->context; - $encryption = $this->streamEncryption; - $connected = false; - /** @var \React\Promise\PromiseInterface $promise */ - $promise = $this->connector->connect( - \str_replace('tls://', '', $uri) - )->then(function (ConnectionInterface $connection) use ($context, $encryption, $uri, &$promise, &$connected) { - // (unencrypted) TCP/IP connection succeeded - $connected = true; - - if (!$connection instanceof Connection) { - $connection->close(); - throw new \UnexpectedValueException('Base connector does not use internal Connection class exposing stream resource'); - } - - // set required SSL/TLS context options - foreach ($context as $name => $value) { - \stream_context_set_option($connection->stream, 'ssl', $name, $value); - } - - // try to enable encryption - return $promise = $encryption->enable($connection)->then(null, function ($error) use ($connection, $uri) { - // establishing encryption failed => close invalid connection and return error - $connection->close(); - - throw new \RuntimeException( - 'Connection to ' . $uri . ' failed during TLS handshake: ' . $error->getMessage(), - $error->getCode() - ); - }); - }, function (\Exception $e) use ($uri) { - if ($e instanceof \RuntimeException) { - $message = \preg_replace('/^Connection to [^ ]+/', '', $e->getMessage()); - $e = new \RuntimeException( - 'Connection to ' . $uri . $message, - $e->getCode(), - $e - ); - - // avoid garbage references by replacing all closures in call stack. - // what a lovely piece of code! - $r = new \ReflectionProperty('Exception', 'trace'); - if (\PHP_VERSION_ID < 80100) { - $r->setAccessible(true); - } - $trace = $r->getValue($e); - - // Exception trace arguments are not available on some PHP 7.4 installs - // @codeCoverageIgnoreStart - foreach ($trace as $ti => $one) { - if (isset($one['args'])) { - foreach ($one['args'] as $ai => $arg) { - if ($arg instanceof \Closure) { - $trace[$ti]['args'][$ai] = 'Object(' . \get_class($arg) . ')'; - } - } - } - } - // @codeCoverageIgnoreEnd - $r->setValue($e, $trace); - } - - throw $e; - }); - - return new \React\Promise\Promise( - function ($resolve, $reject) use ($promise) { - $promise->then($resolve, $reject); - }, - function ($_, $reject) use (&$promise, $uri, &$connected) { - if ($connected) { - $reject(new \RuntimeException( - 'Connection to ' . $uri . ' cancelled during TLS handshake (ECONNABORTED)', - \defined('SOCKET_ECONNABORTED') ? \SOCKET_ECONNABORTED : 103 - )); - } - - $promise->cancel(); - $promise = null; - } - ); - } -} diff --git a/v3_ci4/vendor/react/socket/src/SecureServer.php b/v3_ci4/vendor/react/socket/src/SecureServer.php deleted file mode 100644 index 5a202d2..0000000 --- a/v3_ci4/vendor/react/socket/src/SecureServer.php +++ /dev/null @@ -1,210 +0,0 @@ -on('connection', function (React\Socket\ConnectionInterface $connection) { - * echo 'Secure connection from' . $connection->getRemoteAddress() . PHP_EOL; - * - * $connection->write('hello there!' . PHP_EOL); - * … - * }); - * ``` - * - * Whenever a client fails to perform a successful TLS handshake, it will emit an - * `error` event and then close the underlying TCP/IP connection: - * - * ```php - * $server->on('error', function (Exception $e) { - * echo 'Error' . $e->getMessage() . PHP_EOL; - * }); - * ``` - * - * See also the `ServerInterface` for more details. - * - * Note that the `SecureServer` class is a concrete implementation for TLS sockets. - * If you want to typehint in your higher-level protocol implementation, you SHOULD - * use the generic `ServerInterface` instead. - * - * @see ServerInterface - * @see ConnectionInterface - */ -final class SecureServer extends EventEmitter implements ServerInterface -{ - private $tcp; - private $encryption; - private $context; - - /** - * Creates a secure TLS server and starts waiting for incoming connections - * - * It does so by wrapping a `TcpServer` instance which waits for plaintext - * TCP/IP connections and then performs a TLS handshake for each connection. - * It thus requires valid [TLS context options], - * which in its most basic form may look something like this if you're using a - * PEM encoded certificate file: - * - * ```php - * $server = new React\Socket\TcpServer(8000); - * $server = new React\Socket\SecureServer($server, null, array( - * 'local_cert' => 'server.pem' - * )); - * ``` - * - * Note that the certificate file will not be loaded on instantiation but when an - * incoming connection initializes its TLS context. - * This implies that any invalid certificate file paths or contents will only cause - * an `error` event at a later time. - * - * If your private key is encrypted with a passphrase, you have to specify it - * like this: - * - * ```php - * $server = new React\Socket\TcpServer(8000); - * $server = new React\Socket\SecureServer($server, null, array( - * 'local_cert' => 'server.pem', - * 'passphrase' => 'secret' - * )); - * ``` - * - * Note that available [TLS context options], - * their defaults and effects of changing these may vary depending on your system - * and/or PHP version. - * Passing unknown context options has no effect. - * - * This class takes an optional `LoopInterface|null $loop` parameter that can be used to - * pass the event loop instance to use for this object. You can use a `null` value - * here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). - * This value SHOULD NOT be given unless you're sure you want to explicitly use a - * given event loop instance. - * - * Advanced usage: Despite allowing any `ServerInterface` as first parameter, - * you SHOULD pass a `TcpServer` instance as first parameter, unless you - * know what you're doing. - * Internally, the `SecureServer` has to set the required TLS context options on - * the underlying stream resources. - * These resources are not exposed through any of the interfaces defined in this - * package, but only through the internal `Connection` class. - * The `TcpServer` class is guaranteed to emit connections that implement - * the `ConnectionInterface` and uses the internal `Connection` class in order to - * expose these underlying resources. - * If you use a custom `ServerInterface` and its `connection` event does not - * meet this requirement, the `SecureServer` will emit an `error` event and - * then close the underlying connection. - * - * @param ServerInterface|TcpServer $tcp - * @param ?LoopInterface $loop - * @param array $context - * @throws BadMethodCallException for legacy HHVM < 3.8 due to lack of support - * @see TcpServer - * @link https://www.php.net/manual/en/context.ssl.php for TLS context options - */ - public function __construct(ServerInterface $tcp, $loop = null, array $context = array()) - { - if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #2 ($loop) expected null|React\EventLoop\LoopInterface'); - } - - if (!\function_exists('stream_socket_enable_crypto')) { - throw new \BadMethodCallException('Encryption not supported on your platform (HHVM < 3.8?)'); // @codeCoverageIgnore - } - - // default to empty passphrase to suppress blocking passphrase prompt - $context += array( - 'passphrase' => '' - ); - - $this->tcp = $tcp; - $this->encryption = new StreamEncryption($loop ?: Loop::get()); - $this->context = $context; - - $that = $this; - $this->tcp->on('connection', function ($connection) use ($that) { - $that->handleConnection($connection); - }); - $this->tcp->on('error', function ($error) use ($that) { - $that->emit('error', array($error)); - }); - } - - public function getAddress() - { - $address = $this->tcp->getAddress(); - if ($address === null) { - return null; - } - - return \str_replace('tcp://' , 'tls://', $address); - } - - public function pause() - { - $this->tcp->pause(); - } - - public function resume() - { - $this->tcp->resume(); - } - - public function close() - { - return $this->tcp->close(); - } - - /** @internal */ - public function handleConnection(ConnectionInterface $connection) - { - if (!$connection instanceof Connection) { - $this->emit('error', array(new \UnexpectedValueException('Base server does not use internal Connection class exposing stream resource'))); - $connection->close(); - return; - } - - foreach ($this->context as $name => $value) { - \stream_context_set_option($connection->stream, 'ssl', $name, $value); - } - - // get remote address before starting TLS handshake in case connection closes during handshake - $remote = $connection->getRemoteAddress(); - $that = $this; - - $this->encryption->enable($connection)->then( - function ($conn) use ($that) { - $that->emit('connection', array($conn)); - }, - function ($error) use ($that, $connection, $remote) { - $error = new \RuntimeException( - 'Connection from ' . $remote . ' failed during TLS handshake: ' . $error->getMessage(), - $error->getCode() - ); - - $that->emit('error', array($error)); - $connection->close(); - } - ); - } -} diff --git a/v3_ci4/vendor/react/socket/src/Server.php b/v3_ci4/vendor/react/socket/src/Server.php deleted file mode 100644 index b24c556..0000000 --- a/v3_ci4/vendor/react/socket/src/Server.php +++ /dev/null @@ -1,118 +0,0 @@ - $context); - } - - // apply default options if not explicitly given - $context += array( - 'tcp' => array(), - 'tls' => array(), - 'unix' => array() - ); - - $scheme = 'tcp'; - $pos = \strpos($uri, '://'); - if ($pos !== false) { - $scheme = \substr($uri, 0, $pos); - } - - if ($scheme === 'unix') { - $server = new UnixServer($uri, $loop, $context['unix']); - } else { - $server = new TcpServer(str_replace('tls://', '', $uri), $loop, $context['tcp']); - - if ($scheme === 'tls') { - $server = new SecureServer($server, $loop, $context['tls']); - } - } - - $this->server = $server; - - $that = $this; - $server->on('connection', function (ConnectionInterface $conn) use ($that) { - $that->emit('connection', array($conn)); - }); - $server->on('error', function (Exception $error) use ($that) { - $that->emit('error', array($error)); - }); - } - - public function getAddress() - { - return $this->server->getAddress(); - } - - public function pause() - { - $this->server->pause(); - } - - public function resume() - { - $this->server->resume(); - } - - public function close() - { - $this->server->close(); - } -} diff --git a/v3_ci4/vendor/react/socket/src/ServerInterface.php b/v3_ci4/vendor/react/socket/src/ServerInterface.php deleted file mode 100644 index aa79fa1..0000000 --- a/v3_ci4/vendor/react/socket/src/ServerInterface.php +++ /dev/null @@ -1,151 +0,0 @@ -on('connection', function (React\Socket\ConnectionInterface $connection) { - * echo 'new connection' . PHP_EOL; - * }); - * ``` - * - * See also the `ConnectionInterface` for more details about handling the - * incoming connection. - * - * error event: - * The `error` event will be emitted whenever there's an error accepting a new - * connection from a client. - * - * ```php - * $socket->on('error', function (Exception $e) { - * echo 'error: ' . $e->getMessage() . PHP_EOL; - * }); - * ``` - * - * Note that this is not a fatal error event, i.e. the server keeps listening for - * new connections even after this event. - * - * @see ConnectionInterface - */ -interface ServerInterface extends EventEmitterInterface -{ - /** - * Returns the full address (URI) this server is currently listening on - * - * ```php - * $address = $socket->getAddress(); - * echo 'Server listening on ' . $address . PHP_EOL; - * ``` - * - * If the address can not be determined or is unknown at this time (such as - * after the socket has been closed), it MAY return a `NULL` value instead. - * - * Otherwise, it will return the full address (URI) as a string value, such - * as `tcp://127.0.0.1:8080`, `tcp://[::1]:80` or `tls://127.0.0.1:443`. - * Note that individual URI components are application specific and depend - * on the underlying transport protocol. - * - * If this is a TCP/IP based server and you only want the local port, you may - * use something like this: - * - * ```php - * $address = $socket->getAddress(); - * $port = parse_url($address, PHP_URL_PORT); - * echo 'Server listening on port ' . $port . PHP_EOL; - * ``` - * - * @return ?string the full listening address (URI) or NULL if it is unknown (not applicable to this server socket or already closed) - */ - public function getAddress(); - - /** - * Pauses accepting new incoming connections. - * - * Removes the socket resource from the EventLoop and thus stop accepting - * new connections. Note that the listening socket stays active and is not - * closed. - * - * This means that new incoming connections will stay pending in the - * operating system backlog until its configurable backlog is filled. - * Once the backlog is filled, the operating system may reject further - * incoming connections until the backlog is drained again by resuming - * to accept new connections. - * - * Once the server is paused, no futher `connection` events SHOULD - * be emitted. - * - * ```php - * $socket->pause(); - * - * $socket->on('connection', assertShouldNeverCalled()); - * ``` - * - * This method is advisory-only, though generally not recommended, the - * server MAY continue emitting `connection` events. - * - * Unless otherwise noted, a successfully opened server SHOULD NOT start - * in paused state. - * - * You can continue processing events by calling `resume()` again. - * - * Note that both methods can be called any number of times, in particular - * calling `pause()` more than once SHOULD NOT have any effect. - * Similarly, calling this after `close()` is a NO-OP. - * - * @see self::resume() - * @return void - */ - public function pause(); - - /** - * Resumes accepting new incoming connections. - * - * Re-attach the socket resource to the EventLoop after a previous `pause()`. - * - * ```php - * $socket->pause(); - * - * Loop::addTimer(1.0, function () use ($socket) { - * $socket->resume(); - * }); - * ``` - * - * Note that both methods can be called any number of times, in particular - * calling `resume()` without a prior `pause()` SHOULD NOT have any effect. - * Similarly, calling this after `close()` is a NO-OP. - * - * @see self::pause() - * @return void - */ - public function resume(); - - /** - * Shuts down this listening socket - * - * This will stop listening for new incoming connections on this socket. - * - * Calling this method more than once on the same instance is a NO-OP. - * - * @return void - */ - public function close(); -} diff --git a/v3_ci4/vendor/react/socket/src/SocketServer.php b/v3_ci4/vendor/react/socket/src/SocketServer.php deleted file mode 100644 index e987f5f..0000000 --- a/v3_ci4/vendor/react/socket/src/SocketServer.php +++ /dev/null @@ -1,215 +0,0 @@ - array(), - 'tls' => array(), - 'unix' => array() - ); - - $scheme = 'tcp'; - $pos = \strpos($uri, '://'); - if ($pos !== false) { - $scheme = \substr($uri, 0, $pos); - } - - if ($scheme === 'unix') { - $server = new UnixServer($uri, $loop, $context['unix']); - } elseif ($scheme === 'php') { - $server = new FdServer($uri, $loop); - } else { - if (preg_match('#^(?:\w+://)?\d+$#', $uri)) { - throw new \InvalidArgumentException( - 'Invalid URI given (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - ); - } - - $server = new TcpServer(str_replace('tls://', '', $uri), $loop, $context['tcp']); - - if ($scheme === 'tls') { - $server = new SecureServer($server, $loop, $context['tls']); - } - } - - $this->server = $server; - - $that = $this; - $server->on('connection', function (ConnectionInterface $conn) use ($that) { - $that->emit('connection', array($conn)); - }); - $server->on('error', function (\Exception $error) use ($that) { - $that->emit('error', array($error)); - }); - } - - public function getAddress() - { - return $this->server->getAddress(); - } - - public function pause() - { - $this->server->pause(); - } - - public function resume() - { - $this->server->resume(); - } - - public function close() - { - $this->server->close(); - } - - /** - * [internal] Internal helper method to accept new connection from given server socket - * - * @param resource $socket server socket to accept connection from - * @return resource new client socket if any - * @throws \RuntimeException if accepting fails - * @internal - */ - public static function accept($socket) - { - $errno = 0; - $errstr = ''; - \set_error_handler(function ($_, $error) use (&$errno, &$errstr) { - // Match errstr from PHP's warning message. - // stream_socket_accept(): accept failed: Connection timed out - $errstr = \preg_replace('#.*: #', '', $error); - $errno = SocketServer::errno($errstr); - }); - - $newSocket = \stream_socket_accept($socket, 0); - - \restore_error_handler(); - - if (false === $newSocket) { - throw new \RuntimeException( - 'Unable to accept new connection: ' . $errstr . self::errconst($errno), - $errno - ); - } - - return $newSocket; - } - - /** - * [Internal] Returns errno value for given errstr - * - * The errno and errstr values describes the type of error that has been - * encountered. This method tries to look up the given errstr and find a - * matching errno value which can be useful to provide more context to error - * messages. It goes through the list of known errno constants when either - * `ext-sockets`, `ext-posix` or `ext-pcntl` is available to find an errno - * matching the given errstr. - * - * @param string $errstr - * @return int errno value (e.g. value of `SOCKET_ECONNREFUSED`) or 0 if not found - * @internal - * @copyright Copyright (c) 2023 Christian Lück, taken from https://github.com/clue/errno with permission - * @codeCoverageIgnore - */ - public static function errno($errstr) - { - // PHP defines the required `strerror()` function through either `ext-sockets`, `ext-posix` or `ext-pcntl` - $strerror = \function_exists('socket_strerror') ? 'socket_strerror' : (\function_exists('posix_strerror') ? 'posix_strerror' : (\function_exists('pcntl_strerror') ? 'pcntl_strerror' : null)); - if ($strerror !== null) { - assert(\is_string($strerror) && \is_callable($strerror)); - - // PHP defines most useful errno constants like `ECONNREFUSED` through constants in `ext-sockets` like `SOCKET_ECONNREFUSED` - // PHP also defines a hand full of errno constants like `EMFILE` through constants in `ext-pcntl` like `PCNTL_EMFILE` - // go through list of all defined constants like `SOCKET_E*` and `PCNTL_E*` and see if they match the given `$errstr` - foreach (\get_defined_constants(false) as $name => $value) { - if (\is_int($value) && (\strpos($name, 'SOCKET_E') === 0 || \strpos($name, 'PCNTL_E') === 0) && $strerror($value) === $errstr) { - return $value; - } - } - - // if we reach this, no matching errno constant could be found (unlikely when `ext-sockets` is available) - // go through list of all possible errno values from 1 to `MAX_ERRNO` and see if they match the given `$errstr` - for ($errno = 1, $max = \defined('MAX_ERRNO') ? \MAX_ERRNO : 4095; $errno <= $max; ++$errno) { - if ($strerror($errno) === $errstr) { - return $errno; - } - } - } - - // if we reach this, no matching errno value could be found (unlikely when either `ext-sockets`, `ext-posix` or `ext-pcntl` is available) - return 0; - } - - /** - * [Internal] Returns errno constant name for given errno value - * - * The errno value describes the type of error that has been encountered. - * This method tries to look up the given errno value and find a matching - * errno constant name which can be useful to provide more context and more - * descriptive error messages. It goes through the list of known errno - * constants when either `ext-sockets` or `ext-pcntl` is available to find - * the matching errno constant name. - * - * Because this method is used to append more context to error messages, the - * constant name will be prefixed with a space and put between parenthesis - * when found. - * - * @param int $errno - * @return string e.g. ` (ECONNREFUSED)` or empty string if no matching const for the given errno could be found - * @internal - * @copyright Copyright (c) 2023 Christian Lück, taken from https://github.com/clue/errno with permission - * @codeCoverageIgnore - */ - public static function errconst($errno) - { - // PHP defines most useful errno constants like `ECONNREFUSED` through constants in `ext-sockets` like `SOCKET_ECONNREFUSED` - // PHP also defines a hand full of errno constants like `EMFILE` through constants in `ext-pcntl` like `PCNTL_EMFILE` - // go through list of all defined constants like `SOCKET_E*` and `PCNTL_E*` and see if they match the given `$errno` - foreach (\get_defined_constants(false) as $name => $value) { - if ($value === $errno && (\strpos($name, 'SOCKET_E') === 0 || \strpos($name, 'PCNTL_E') === 0)) { - return ' (' . \substr($name, \strpos($name, '_') + 1) . ')'; - } - } - - // if we reach this, no matching errno constant could be found (unlikely when `ext-sockets` is available) - return ''; - } -} diff --git a/v3_ci4/vendor/react/socket/src/StreamEncryption.php b/v3_ci4/vendor/react/socket/src/StreamEncryption.php deleted file mode 100644 index f91a359..0000000 --- a/v3_ci4/vendor/react/socket/src/StreamEncryption.php +++ /dev/null @@ -1,158 +0,0 @@ -loop = $loop; - $this->server = $server; - - // support TLSv1.0+ by default and exclude legacy SSLv2/SSLv3. - // As of PHP 7.2+ the main crypto method constant includes all TLS versions. - // As of PHP 5.6+ the crypto method is a bitmask, so we explicitly include all TLS versions. - // For legacy PHP < 5.6 the crypto method is a single value only and this constant includes all TLS versions. - // @link https://3v4l.org/9PSST - if ($server) { - $this->method = \STREAM_CRYPTO_METHOD_TLS_SERVER; - - if (\PHP_VERSION_ID < 70200 && \PHP_VERSION_ID >= 50600) { - $this->method |= \STREAM_CRYPTO_METHOD_TLSv1_0_SERVER | \STREAM_CRYPTO_METHOD_TLSv1_1_SERVER | \STREAM_CRYPTO_METHOD_TLSv1_2_SERVER; // @codeCoverageIgnore - } - } else { - $this->method = \STREAM_CRYPTO_METHOD_TLS_CLIENT; - - if (\PHP_VERSION_ID < 70200 && \PHP_VERSION_ID >= 50600) { - $this->method |= \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT | \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; // @codeCoverageIgnore - } - } - } - - /** - * @param Connection $stream - * @return \React\Promise\PromiseInterface - */ - public function enable(Connection $stream) - { - return $this->toggle($stream, true); - } - - /** - * @param Connection $stream - * @param bool $toggle - * @return \React\Promise\PromiseInterface - */ - public function toggle(Connection $stream, $toggle) - { - // pause actual stream instance to continue operation on raw stream socket - $stream->pause(); - - // TODO: add write() event to make sure we're not sending any excessive data - - // cancelling this leaves this stream in an inconsistent state… - $deferred = new Deferred(function () { - throw new \RuntimeException(); - }); - - // get actual stream socket from stream instance - $socket = $stream->stream; - - // get crypto method from context options or use global setting from constructor - $method = $this->method; - $context = \stream_context_get_options($socket); - if (isset($context['ssl']['crypto_method'])) { - $method = $context['ssl']['crypto_method']; - } - - $that = $this; - $toggleCrypto = function () use ($socket, $deferred, $toggle, $method, $that) { - $that->toggleCrypto($socket, $deferred, $toggle, $method); - }; - - $this->loop->addReadStream($socket, $toggleCrypto); - - if (!$this->server) { - $toggleCrypto(); - } - - $loop = $this->loop; - - return $deferred->promise()->then(function () use ($stream, $socket, $loop, $toggle) { - $loop->removeReadStream($socket); - - $stream->encryptionEnabled = $toggle; - $stream->resume(); - - return $stream; - }, function($error) use ($stream, $socket, $loop) { - $loop->removeReadStream($socket); - $stream->resume(); - throw $error; - }); - } - - /** - * @internal - * @param resource $socket - * @param Deferred $deferred - * @param bool $toggle - * @param int $method - * @return void - */ - public function toggleCrypto($socket, Deferred $deferred, $toggle, $method) - { - $error = null; - \set_error_handler(function ($_, $errstr) use (&$error) { - $error = \str_replace(array("\r", "\n"), ' ', $errstr); - - // remove useless function name from error message - if (($pos = \strpos($error, "): ")) !== false) { - $error = \substr($error, $pos + 3); - } - }); - - $result = \stream_socket_enable_crypto($socket, $toggle, $method); - - \restore_error_handler(); - - if (true === $result) { - $deferred->resolve(null); - } else if (false === $result) { - // overwrite callback arguments for PHP7+ only, so they do not show - // up in the Exception trace and do not cause a possible cyclic reference. - $d = $deferred; - $deferred = null; - - if (\feof($socket) || $error === null) { - // EOF or failed without error => connection closed during handshake - $d->reject(new \UnexpectedValueException( - 'Connection lost during TLS handshake (ECONNRESET)', - \defined('SOCKET_ECONNRESET') ? \SOCKET_ECONNRESET : 104 - )); - } else { - // handshake failed with error message - $d->reject(new \UnexpectedValueException( - $error - )); - } - } else { - // need more data, will retry - } - } -} diff --git a/v3_ci4/vendor/react/socket/src/TcpConnector.php b/v3_ci4/vendor/react/socket/src/TcpConnector.php deleted file mode 100644 index 9d2599e..0000000 --- a/v3_ci4/vendor/react/socket/src/TcpConnector.php +++ /dev/null @@ -1,173 +0,0 @@ -loop = $loop ?: Loop::get(); - $this->context = $context; - } - - public function connect($uri) - { - if (\strpos($uri, '://') === false) { - $uri = 'tcp://' . $uri; - } - - $parts = \parse_url($uri); - if (!$parts || !isset($parts['scheme'], $parts['host'], $parts['port']) || $parts['scheme'] !== 'tcp') { - return Promise\reject(new \InvalidArgumentException( - 'Given URI "' . $uri . '" is invalid (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - )); - } - - $ip = \trim($parts['host'], '[]'); - if (@\inet_pton($ip) === false) { - return Promise\reject(new \InvalidArgumentException( - 'Given URI "' . $uri . '" does not contain a valid host IP (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - )); - } - - // use context given in constructor - $context = array( - 'socket' => $this->context - ); - - // parse arguments from query component of URI - $args = array(); - if (isset($parts['query'])) { - \parse_str($parts['query'], $args); - } - - // If an original hostname has been given, use this for TLS setup. - // This can happen due to layers of nested connectors, such as a - // DnsConnector reporting its original hostname. - // These context options are here in case TLS is enabled later on this stream. - // If TLS is not enabled later, this doesn't hurt either. - if (isset($args['hostname'])) { - $context['ssl'] = array( - 'SNI_enabled' => true, - 'peer_name' => $args['hostname'] - ); - - // Legacy PHP < 5.6 ignores peer_name and requires legacy context options instead. - // The SNI_server_name context option has to be set here during construction, - // as legacy PHP ignores any values set later. - // @codeCoverageIgnoreStart - if (\PHP_VERSION_ID < 50600) { - $context['ssl'] += array( - 'SNI_server_name' => $args['hostname'], - 'CN_match' => $args['hostname'] - ); - } - // @codeCoverageIgnoreEnd - } - - // latest versions of PHP no longer accept any other URI components and - // HHVM fails to parse URIs with a query but no path, so let's simplify our URI here - $remote = 'tcp://' . $parts['host'] . ':' . $parts['port']; - - $stream = @\stream_socket_client( - $remote, - $errno, - $errstr, - 0, - \STREAM_CLIENT_CONNECT | \STREAM_CLIENT_ASYNC_CONNECT, - \stream_context_create($context) - ); - - if (false === $stream) { - return Promise\reject(new \RuntimeException( - 'Connection to ' . $uri . ' failed: ' . $errstr . SocketServer::errconst($errno), - $errno - )); - } - - // wait for connection - $loop = $this->loop; - return new Promise\Promise(function ($resolve, $reject) use ($loop, $stream, $uri) { - $loop->addWriteStream($stream, function ($stream) use ($loop, $resolve, $reject, $uri) { - $loop->removeWriteStream($stream); - - // The following hack looks like the only way to - // detect connection refused errors with PHP's stream sockets. - if (false === \stream_socket_get_name($stream, true)) { - // If we reach this point, we know the connection is dead, but we don't know the underlying error condition. - // @codeCoverageIgnoreStart - if (\function_exists('socket_import_stream')) { - // actual socket errno and errstr can be retrieved with ext-sockets on PHP 5.4+ - $socket = \socket_import_stream($stream); - $errno = \socket_get_option($socket, \SOL_SOCKET, \SO_ERROR); - $errstr = \socket_strerror($errno); - } elseif (\PHP_OS === 'Linux') { - // Linux reports socket errno and errstr again when trying to write to the dead socket. - // Suppress error reporting to get error message below and close dead socket before rejecting. - // This is only known to work on Linux, Mac and Windows are known to not support this. - $errno = 0; - $errstr = ''; - \set_error_handler(function ($_, $error) use (&$errno, &$errstr) { - // Match errstr from PHP's warning message. - // fwrite(): send of 1 bytes failed with errno=111 Connection refused - \preg_match('/errno=(\d+) (.+)/', $error, $m); - $errno = isset($m[1]) ? (int) $m[1] : 0; - $errstr = isset($m[2]) ? $m[2] : $error; - }); - - \fwrite($stream, \PHP_EOL); - - \restore_error_handler(); - } else { - // Not on Linux and ext-sockets not available? Too bad. - $errno = \defined('SOCKET_ECONNREFUSED') ? \SOCKET_ECONNREFUSED : 111; - $errstr = 'Connection refused?'; - } - // @codeCoverageIgnoreEnd - - \fclose($stream); - $reject(new \RuntimeException( - 'Connection to ' . $uri . ' failed: ' . $errstr . SocketServer::errconst($errno), - $errno - )); - } else { - $resolve(new Connection($stream, $loop)); - } - }); - }, function () use ($loop, $stream, $uri) { - $loop->removeWriteStream($stream); - \fclose($stream); - - // @codeCoverageIgnoreStart - // legacy PHP 5.3 sometimes requires a second close call (see tests) - if (\PHP_VERSION_ID < 50400 && \is_resource($stream)) { - \fclose($stream); - } - // @codeCoverageIgnoreEnd - - throw new \RuntimeException( - 'Connection to ' . $uri . ' cancelled during TCP/IP handshake (ECONNABORTED)', - \defined('SOCKET_ECONNABORTED') ? \SOCKET_ECONNABORTED : 103 - ); - }); - } -} diff --git a/v3_ci4/vendor/react/socket/src/TcpServer.php b/v3_ci4/vendor/react/socket/src/TcpServer.php deleted file mode 100644 index 01b2b46..0000000 --- a/v3_ci4/vendor/react/socket/src/TcpServer.php +++ /dev/null @@ -1,262 +0,0 @@ -on('connection', function (React\Socket\ConnectionInterface $connection) { - * echo 'Plaintext connection from ' . $connection->getRemoteAddress() . PHP_EOL; - * $connection->write('hello there!' . PHP_EOL); - * … - * }); - * ``` - * - * See also the `ServerInterface` for more details. - * - * @see ServerInterface - * @see ConnectionInterface - */ -final class TcpServer extends EventEmitter implements ServerInterface -{ - private $master; - private $loop; - private $listening = false; - - /** - * Creates a plaintext TCP/IP socket server and starts listening on the given address - * - * This starts accepting new incoming connections on the given address. - * See also the `connection event` documented in the `ServerInterface` - * for more details. - * - * ```php - * $server = new React\Socket\TcpServer(8080); - * ``` - * - * As above, the `$uri` parameter can consist of only a port, in which case the - * server will default to listening on the localhost address `127.0.0.1`, - * which means it will not be reachable from outside of this system. - * - * In order to use a random port assignment, you can use the port `0`: - * - * ```php - * $server = new React\Socket\TcpServer(0); - * $address = $server->getAddress(); - * ``` - * - * In order to change the host the socket is listening on, you can provide an IP - * address through the first parameter provided to the constructor, optionally - * preceded by the `tcp://` scheme: - * - * ```php - * $server = new React\Socket\TcpServer('192.168.0.1:8080'); - * ``` - * - * If you want to listen on an IPv6 address, you MUST enclose the host in square - * brackets: - * - * ```php - * $server = new React\Socket\TcpServer('[::1]:8080'); - * ``` - * - * If the given URI is invalid, does not contain a port, any other scheme or if it - * contains a hostname, it will throw an `InvalidArgumentException`: - * - * ```php - * // throws InvalidArgumentException due to missing port - * $server = new React\Socket\TcpServer('127.0.0.1'); - * ``` - * - * If the given URI appears to be valid, but listening on it fails (such as if port - * is already in use or port below 1024 may require root access etc.), it will - * throw a `RuntimeException`: - * - * ```php - * $first = new React\Socket\TcpServer(8080); - * - * // throws RuntimeException because port is already in use - * $second = new React\Socket\TcpServer(8080); - * ``` - * - * Note that these error conditions may vary depending on your system and/or - * configuration. - * See the exception message and code for more details about the actual error - * condition. - * - * This class takes an optional `LoopInterface|null $loop` parameter that can be used to - * pass the event loop instance to use for this object. You can use a `null` value - * here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). - * This value SHOULD NOT be given unless you're sure you want to explicitly use a - * given event loop instance. - * - * Optionally, you can specify [socket context options](https://www.php.net/manual/en/context.socket.php) - * for the underlying stream socket resource like this: - * - * ```php - * $server = new React\Socket\TcpServer('[::1]:8080', null, array( - * 'backlog' => 200, - * 'so_reuseport' => true, - * 'ipv6_v6only' => true - * )); - * ``` - * - * Note that available [socket context options](https://www.php.net/manual/en/context.socket.php), - * their defaults and effects of changing these may vary depending on your system - * and/or PHP version. - * Passing unknown context options has no effect. - * The `backlog` context option defaults to `511` unless given explicitly. - * - * @param string|int $uri - * @param ?LoopInterface $loop - * @param array $context - * @throws InvalidArgumentException if the listening address is invalid - * @throws RuntimeException if listening on this address fails (already in use etc.) - */ - public function __construct($uri, $loop = null, array $context = array()) - { - if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 - throw new \InvalidArgumentException('Argument #2 ($loop) expected null|React\EventLoop\LoopInterface'); - } - - $this->loop = $loop ?: Loop::get(); - - // a single port has been given => assume localhost - if ((string)(int)$uri === (string)$uri) { - $uri = '127.0.0.1:' . $uri; - } - - // assume default scheme if none has been given - if (\strpos($uri, '://') === false) { - $uri = 'tcp://' . $uri; - } - - // parse_url() does not accept null ports (random port assignment) => manually remove - if (\substr($uri, -2) === ':0') { - $parts = \parse_url(\substr($uri, 0, -2)); - if ($parts) { - $parts['port'] = 0; - } - } else { - $parts = \parse_url($uri); - } - - // ensure URI contains TCP scheme, host and port - if (!$parts || !isset($parts['scheme'], $parts['host'], $parts['port']) || $parts['scheme'] !== 'tcp') { - throw new \InvalidArgumentException( - 'Invalid URI "' . $uri . '" given (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - ); - } - - if (@\inet_pton(\trim($parts['host'], '[]')) === false) { - throw new \InvalidArgumentException( - 'Given URI "' . $uri . '" does not contain a valid host IP (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - ); - } - - $this->master = @\stream_socket_server( - $uri, - $errno, - $errstr, - \STREAM_SERVER_BIND | \STREAM_SERVER_LISTEN, - \stream_context_create(array('socket' => $context + array('backlog' => 511))) - ); - if (false === $this->master) { - if ($errno === 0) { - // PHP does not seem to report errno, so match errno from errstr - // @link https://3v4l.org/3qOBl - $errno = SocketServer::errno($errstr); - } - - throw new \RuntimeException( - 'Failed to listen on "' . $uri . '": ' . $errstr . SocketServer::errconst($errno), - $errno - ); - } - \stream_set_blocking($this->master, false); - - $this->resume(); - } - - public function getAddress() - { - if (!\is_resource($this->master)) { - return null; - } - - $address = \stream_socket_get_name($this->master, false); - - // check if this is an IPv6 address which includes multiple colons but no square brackets - $pos = \strrpos($address, ':'); - if ($pos !== false && \strpos($address, ':') < $pos && \substr($address, 0, 1) !== '[') { - $address = '[' . \substr($address, 0, $pos) . ']:' . \substr($address, $pos + 1); // @codeCoverageIgnore - } - - return 'tcp://' . $address; - } - - public function pause() - { - if (!$this->listening) { - return; - } - - $this->loop->removeReadStream($this->master); - $this->listening = false; - } - - public function resume() - { - if ($this->listening || !\is_resource($this->master)) { - return; - } - - $that = $this; - $this->loop->addReadStream($this->master, function ($master) use ($that) { - try { - $newSocket = SocketServer::accept($master); - } catch (\RuntimeException $e) { - $that->emit('error', array($e)); - return; - } - $that->handleConnection($newSocket); - }); - $this->listening = true; - } - - public function close() - { - if (!\is_resource($this->master)) { - return; - } - - $this->pause(); - \fclose($this->master); - $this->removeAllListeners(); - } - - /** @internal */ - public function handleConnection($socket) - { - $this->emit('connection', array( - new Connection($socket, $this->loop) - )); - } -} diff --git a/v3_ci4/vendor/react/socket/src/TimeoutConnector.php b/v3_ci4/vendor/react/socket/src/TimeoutConnector.php deleted file mode 100644 index 9ef252f..0000000 --- a/v3_ci4/vendor/react/socket/src/TimeoutConnector.php +++ /dev/null @@ -1,79 +0,0 @@ -connector = $connector; - $this->timeout = $timeout; - $this->loop = $loop ?: Loop::get(); - } - - public function connect($uri) - { - $promise = $this->connector->connect($uri); - - $loop = $this->loop; - $time = $this->timeout; - return new Promise(function ($resolve, $reject) use ($loop, $time, $promise, $uri) { - $timer = null; - $promise = $promise->then(function ($v) use (&$timer, $loop, $resolve) { - if ($timer) { - $loop->cancelTimer($timer); - } - $timer = false; - $resolve($v); - }, function ($v) use (&$timer, $loop, $reject) { - if ($timer) { - $loop->cancelTimer($timer); - } - $timer = false; - $reject($v); - }); - - // promise already resolved => no need to start timer - if ($timer === false) { - return; - } - - // start timeout timer which will cancel the pending promise - $timer = $loop->addTimer($time, function () use ($time, &$promise, $reject, $uri) { - $reject(new \RuntimeException( - 'Connection to ' . $uri . ' timed out after ' . $time . ' seconds (ETIMEDOUT)', - \defined('SOCKET_ETIMEDOUT') ? \SOCKET_ETIMEDOUT : 110 - )); - - // Cancel pending connection to clean up any underlying resources and references. - // Avoid garbage references in call stack by passing pending promise by reference. - assert(\method_exists($promise, 'cancel')); - $promise->cancel(); - $promise = null; - }); - }, function () use (&$promise) { - // Cancelling this promise will cancel the pending connection, thus triggering the rejection logic above. - // Avoid garbage references in call stack by passing pending promise by reference. - assert(\method_exists($promise, 'cancel')); - $promise->cancel(); - $promise = null; - }); - } -} diff --git a/v3_ci4/vendor/react/socket/src/UnixConnector.php b/v3_ci4/vendor/react/socket/src/UnixConnector.php deleted file mode 100644 index 95f932c..0000000 --- a/v3_ci4/vendor/react/socket/src/UnixConnector.php +++ /dev/null @@ -1,58 +0,0 @@ -loop = $loop ?: Loop::get(); - } - - public function connect($path) - { - if (\strpos($path, '://') === false) { - $path = 'unix://' . $path; - } elseif (\substr($path, 0, 7) !== 'unix://') { - return Promise\reject(new \InvalidArgumentException( - 'Given URI "' . $path . '" is invalid (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - )); - } - - $resource = @\stream_socket_client($path, $errno, $errstr, 1.0); - - if (!$resource) { - return Promise\reject(new \RuntimeException( - 'Unable to connect to unix domain socket "' . $path . '": ' . $errstr . SocketServer::errconst($errno), - $errno - )); - } - - $connection = new Connection($resource, $this->loop); - $connection->unix = true; - - return Promise\resolve($connection); - } -} diff --git a/v3_ci4/vendor/react/socket/src/UnixServer.php b/v3_ci4/vendor/react/socket/src/UnixServer.php deleted file mode 100644 index 27b014d..0000000 --- a/v3_ci4/vendor/react/socket/src/UnixServer.php +++ /dev/null @@ -1,162 +0,0 @@ -loop = $loop ?: Loop::get(); - - if (\strpos($path, '://') === false) { - $path = 'unix://' . $path; - } elseif (\substr($path, 0, 7) !== 'unix://') { - throw new \InvalidArgumentException( - 'Given URI "' . $path . '" is invalid (EINVAL)', - \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22) - ); - } - - $errno = 0; - $errstr = ''; - \set_error_handler(function ($_, $error) use (&$errno, &$errstr) { - // PHP does not seem to report errno/errstr for Unix domain sockets (UDS) right now. - // This only applies to UDS server sockets, see also https://3v4l.org/NAhpr. - // Parse PHP warning message containing unknown error, HHVM reports proper info at least. - if (\preg_match('/\(([^\)]+)\)|\[(\d+)\]: (.*)/', $error, $match)) { - $errstr = isset($match[3]) ? $match['3'] : $match[1]; - $errno = isset($match[2]) ? (int)$match[2] : 0; - } - }); - - $this->master = \stream_socket_server( - $path, - $errno, - $errstr, - \STREAM_SERVER_BIND | \STREAM_SERVER_LISTEN, - \stream_context_create(array('socket' => $context)) - ); - - \restore_error_handler(); - - if (false === $this->master) { - throw new \RuntimeException( - 'Failed to listen on Unix domain socket "' . $path . '": ' . $errstr . SocketServer::errconst($errno), - $errno - ); - } - \stream_set_blocking($this->master, 0); - - $this->resume(); - } - - public function getAddress() - { - if (!\is_resource($this->master)) { - return null; - } - - return 'unix://' . \stream_socket_get_name($this->master, false); - } - - public function pause() - { - if (!$this->listening) { - return; - } - - $this->loop->removeReadStream($this->master); - $this->listening = false; - } - - public function resume() - { - if ($this->listening || !is_resource($this->master)) { - return; - } - - $that = $this; - $this->loop->addReadStream($this->master, function ($master) use ($that) { - try { - $newSocket = SocketServer::accept($master); - } catch (\RuntimeException $e) { - $that->emit('error', array($e)); - return; - } - $that->handleConnection($newSocket); - }); - $this->listening = true; - } - - public function close() - { - if (!\is_resource($this->master)) { - return; - } - - $this->pause(); - \fclose($this->master); - $this->removeAllListeners(); - } - - /** @internal */ - public function handleConnection($socket) - { - $connection = new Connection($socket, $this->loop); - $connection->unix = true; - - $this->emit('connection', array( - $connection - )); - } -} diff --git a/v3_ci4/vendor/react/stream/CHANGELOG.md b/v3_ci4/vendor/react/stream/CHANGELOG.md deleted file mode 100644 index 639db65..0000000 --- a/v3_ci4/vendor/react/stream/CHANGELOG.md +++ /dev/null @@ -1,460 +0,0 @@ -# Changelog - -## 1.4.0 (2024-06-11) - -* Feature: Improve PHP 8.4+ support by avoiding implicitly nullable type declarations. - (#179 by @clue) - -* Feature: Full PHP 8.3 compatibility. - (#172 by @clue) - -* Fix: Fix `drain` event of `ThroughStream` to handle potential race condition. - (#171 by @clue) - -## 1.3.0 (2023-06-16) - -* Feature: Full PHP 8.1 and PHP 8.2 compatibility. - (#160 by @SimonFrings, #165 by @clue and #169 by @WyriHaximus) - -* Feature: Avoid unneeded syscall when creating non-blocking `DuplexResourceStream`. - (#164 by @clue) - -* Minor documentation improvements. - (#161 by @mrsimonbennett, #162 by @SimonFrings and #166 by @nhedger) - -* Improve test suite and project setup and report failed assertions. - (#168 and #170 by @clue and #163 by @SimonFrings) - -## 1.2.0 (2021-07-11) - -A major new feature release, see [**release announcement**](https://clue.engineering/2021/announcing-reactphp-default-loop). - -* Feature: Simplify usage by supporting new [default loop](https://reactphp.org/event-loop/#loop). - (#159 by @clue) - - ```php - // old (still supported) - $stream = new ReadableResourceStream($resource, $loop); - $stream = new WritabeResourceStream($resource, $loop); - $stream = new DuplexResourceStream($resource, $loop); - - // new (using default loop) - $stream = new ReadableResourceStream($resource); - $stream = new WritabeResourceStream($resource); - $stream = new DuplexResourceStream($resource); - ``` - -* Improve test suite, use GitHub actions for continuous integration (CI), - update PHPUnit config, run tests on PHP 8 and add full core team to the license. - (#153, #156 and #157 by @SimonFrings and #154 by @WyriHaximus) - -## 1.1.1 (2020-05-04) - -* Fix: Fix faulty write buffer behavior when sending large data chunks over TLS (Mac OS X only). - (#150 by @clue) - -* Minor code style improvements to fix phpstan analysis warnings and - add `.gitattributes` to exclude dev files from exports. - (#140 by @flow-control and #144 by @reedy) - -* Improve test suite to run tests on PHP 7.4 and simplify test matrix. - (#147 by @clue) - -## 1.1.0 (2019-01-01) - -* Improvement: Increase performance by optimizing global function and constant look ups. - (#137 by @WyriHaximus) - -* Travis: Test against PHP 7.3. - (#138 by @WyriHaximus) - -* Fix: Ignore empty reads. - (#139 by @WyriHaximus) - -## 1.0.0 (2018-07-11) - -* First stable LTS release, now following [SemVer](https://semver.org/). - We'd like to emphasize that this component is production ready and battle-tested. - We plan to support all long-term support (LTS) releases for at least 24 months, - so you have a rock-solid foundation to build on top of. - -> Contains no other changes, so it's actually fully compatible with the v0.7.7 release. - -## 0.7.7 (2018-01-19) - -* Improve test suite by fixing forward compatibility with upcoming EventLoop - releases, avoid risky tests and add test group to skip integration tests - relying on internet connection and apply appropriate test timeouts. - (#128, #131 and #132 by @clue) - -## 0.7.6 (2017-12-21) - -* Fix: Work around reading from unbuffered pipe stream in legacy PHP < 5.4.28 and PHP < 5.5.12 - (#126 by @clue) - -* Improve test suite by simplifying test bootstrapping logic via Composer and - test against PHP 7.2 - (#127 by @clue and #124 by @carusogabriel) - -## 0.7.5 (2017-11-20) - -* Fix: Igore excessive `fopen()` mode flags for `WritableResourceStream` - (#119 by @clue) - -* Fix: Fix forward compatibility with upcoming EventLoop releases - (#121 by @clue) - -* Restructure examples to ease getting started - (#123 by @clue) - -* Improve test suite by adding forward compatibility with PHPUnit 6 and - ignore Mac OS X test failures for now until Travis tests work again - (#122 by @gabriel-caruso and #120 by @clue) - -## 0.7.4 (2017-10-11) - -* Fix: Remove event listeners from `CompositeStream` once closed and - remove undocumented left-over `close` event argument - (#116 by @clue) - -* Minor documentation improvements: Fix wrong class name in example, - fix typos in README and - fix forward compatibility with upcoming EventLoop releases in example - (#113 by @docteurklein and #114 and #115 by @clue) - -* Improve test suite by running against Mac OS X on Travis - (#112 by @clue) - -## 0.7.3 (2017-08-05) - -* Improvement: Support Événement 3.0 a long side 2.0 and 1.0 - (#108 by @WyriHaximus) - -* Readme: Corrected loop initialization in usage example - (#109 by @pulyavin) - -* Travis: Lock linux distribution preventing future builds from breaking - (#110 by @clue) - -## 0.7.2 (2017-06-15) - -* Bug fix: WritableResourceStream: Close the underlying stream when closing the stream. - (#107 by @WyriHaximus) - -## 0.7.1 (2017-05-20) - -* Feature: Add optional `$writeChunkSize` parameter to limit maximum number of - bytes to write at once. - (#105 by @clue) - - ```php - $stream = new WritableResourceStream(STDOUT, $loop, null, 8192); - ``` - -* Ignore HHVM test failures for now until Travis tests work again - (#106 by @clue) - -## 0.7.0 (2017-05-04) - -* Removed / BC break: Remove deprecated and unneeded functionality - (#45, #87, #90, #91 and #93 by @clue) - - * Remove deprecated `Stream` class, use `DuplexResourceStream` instead - (#87 by @clue) - - * Remove public `$buffer` property, use new constructor parameters instead - (#91 by @clue) - - * Remove public `$stream` property from all resource streams - (#90 by @clue) - - * Remove undocumented and now unused `ReadableStream` and `WritableStream` - (#93 by @clue) - - * Remove `BufferedSink` - (#45 by @clue) - -* Feature / BC break: Simplify `ThroughStream` by using data callback instead of - inheritance. It is now a direct implementation of `DuplexStreamInterface`. - (#88 and #89 by @clue) - - ```php - $through = new ThroughStream(function ($data) { - return json_encode($data) . PHP_EOL; - }); - $through->on('data', $this->expectCallableOnceWith("[2, true]\n")); - - $through->write(array(2, true)); - ``` - -* Feature / BC break: The `CompositeStream` starts closed if either side is - already closed and forwards pause to pipe source on first write attempt. - (#96 and #103 by @clue) - - If either side of the composite stream closes, it will also close the other - side. We now also ensure that if either side is already closed during - instantiation, it will also close the other side. - -* BC break: Mark all classes as `final` and - mark internal API as `private` to discourage inheritance - (#95 and #99 by @clue) - -* Feature / BC break: Only emit `error` event for fatal errors - (#92 by @clue) - - > The `error` event was previously also allowed to be emitted for non-fatal - errors, but our implementations actually only ever emitted this as a fatal - error and then closed the stream. - -* Feature: Explicitly allow custom events and exclude any semantics - (#97 by @clue) - -* Strict definition for event callback functions - (#101 by @clue) - -* Support legacy PHP 5.3 through PHP 7.1 and HHVM and improve usage documentation - (#100 and #102 by @clue) - -* Actually require all dependencies so this is self-contained and improve - forward compatibility with EventLoop v1.0 and v0.5 - (#94 and #98 by @clue) - -## 0.6.0 (2017-03-26) - -* Feature / Fix / BC break: Add `DuplexResourceStream` and deprecate `Stream` - (#85 by @clue) - - ```php - // old (does still work for BC reasons) - $stream = new Stream($connection, $loop); - - // new - $stream = new DuplexResourceStream($connection, $loop); - ``` - - Note that the `DuplexResourceStream` now rejects read-only or write-only - streams, so this may affect BC. If you want a read-only or write-only - resource, use `ReadableResourceStream` or `WritableResourceStream` instead of - `DuplexResourceStream`. - - > BC note: This class was previously called `Stream`. The `Stream` class still - exists for BC reasons and will be removed in future versions of this package. - -* Feature / BC break: Add `WritableResourceStream` (previously called `Buffer`) - (#84 by @clue) - - ```php - // old - $stream = new Buffer(STDOUT, $loop); - - // new - $stream = new WritableResourceStream(STDOUT, $loop); - ``` - -* Feature: Add `ReadableResourceStream` - (#83 by @clue) - - ```php - $stream = new ReadableResourceStream(STDIN, $loop); - ``` - -* Fix / BC Break: Enforce using non-blocking I/O - (#46 by @clue) - - > BC note: This is known to affect process pipes on Windows which do not - support non-blocking I/O and could thus block the whole EventLoop previously. - -* Feature / Fix / BC break: Consistent semantics for - `DuplexStreamInterface::end()` to ensure it SHOULD also end readable side - (#86 by @clue) - -* Fix: Do not use unbuffered reads on pipe streams for legacy PHP < 5.4 - (#80 by @clue) - -## 0.5.0 (2017-03-08) - -* Feature / BC break: Consistent `end` event semantics (EOF) - (#70 by @clue) - - The `end` event will now only be emitted for a *successful* end, not if the - stream closes due to an unrecoverable `error` event or if you call `close()` - explicitly. - If you want to detect when the stream closes (terminates), use the `close` - event instead. - -* BC break: Remove custom (undocumented) `full-drain` event from `Buffer` - (#63 and #68 by @clue) - - > The `full-drain` event was undocumented and mostly used internally. - Relying on this event has attracted some low-quality code in the past, so - we've removed this from the public API in order to work out a better - solution instead. - If you want to detect when the buffer finishes flushing data to the stream, - you may want to look into its `end()` method or the `close` event instead. - -* Feature / BC break: Consistent event semantics and documentation, - explicitly state *when* events will be emitted and *which* arguments they - receive. - (#73 and #69 by @clue) - - The documentation now explicitly defines each event and its arguments. - Custom events and event arguments are still supported. - Most notably, all defined events only receive inherently required event - arguments and no longer transmit the instance they are emitted on for - consistency and performance reasons. - - ```php - // old (inconsistent and not supported by all implementations) - $stream->on('data', function ($data, $stream) { - // process $data - }); - - // new (consistent throughout the whole ecosystem) - $stream->on('data', function ($data) use ($stream) { - // process $data - }); - ``` - - > This mostly adds documentation (and thus some stricter, consistent - definitions) for the existing behavior, it does NOT define any major - changes otherwise. - Most existing code should be compatible with these changes, unless - it relied on some undocumented/unintended semantics. - -* Feature / BC break: Consistent method semantics and documentation - (#72 by @clue) - - > This mostly adds documentation (and thus some stricter, consistent - definitions) for the existing behavior, it does NOT define any major - changes otherwise. - Most existing code should be compatible with these changes, unless - it relied on some undocumented/unintended semantics. - -* Feature: Consistent `pipe()` semantics for closed and closing streams - (#71 from @clue) - - The source stream will now always be paused via `pause()` when the - destination stream closes. Also, properly stop piping if the source - stream closes and remove all event forwarding. - -* Improve test suite by adding PHPUnit to `require-dev` and improving coverage. - (#74 and #75 by @clue, #66 by @nawarian) - -## 0.4.6 (2017-01-25) - -* Feature: The `Buffer` can now be injected into the `Stream` (or be used standalone) - (#62 by @clue) - -* Fix: Forward `close` event only once for `CompositeStream` and `ThroughStream` - (#60 by @clue) - -* Fix: Consistent `close` event behavior for `Buffer` - (#61 by @clue) - -## 0.4.5 (2016-11-13) - -* Feature: Support setting read buffer size to `null` (infinite) - (#42 by @clue) - -* Fix: Do not emit `full-drain` event if `Buffer` is closed during `drain` event - (#55 by @clue) - -* Vastly improved performance by factor of 10x to 20x. - Raise default buffer sizes to 64 KiB and simplify and improve error handling - and unneeded function calls. - (#53, #55, #56 by @clue) - -## 0.4.4 (2016-08-22) - -* Bug fix: Emit `error` event and close `Stream` when accessing the underlying - stream resource fails with a permanent error. - (#52 and #40 by @clue, #25 by @lysenkobv) - -* Bug fix: Do not emit empty `data` event if nothing has been read (stream reached EOF) - (#39 by @clue) - -* Bug fix: Ignore empty writes to `Buffer` - (#51 by @clue) - -* Add benchmarking script to measure throughput in CI - (#41 by @clue) - -## 0.4.3 (2015-10-07) - -* Bug fix: Read buffer to 0 fixes error with libevent and large quantity of I/O (@mbonneau) -* Bug fix: No double-write during drain call (@arnaud-lb) -* Bug fix: Support HHVM (@clue) -* Adjust compatibility to 5.3 (@clue) - -## 0.4.2 (2014-09-09) - -* Added DuplexStreamInterface -* Stream sets stream resources to non-blocking -* Fixed potential race condition in pipe - -## 0.4.1 (2014-04-13) - -* Bug fix: v0.3.4 changes merged for v0.4.1 - -## 0.3.4 (2014-03-30) - -* Bug fix: [Stream] Fixed 100% CPU spike from non-empty write buffer on closed stream - -## 0.4.0 (2014-02-02) - -* BC break: Bump minimum PHP version to PHP 5.4, remove 5.3 specific hacks -* BC break: Update to Evenement 2.0 -* Dependency: Autoloading and filesystem structure now PSR-4 instead of PSR-0 - -## 0.3.3 (2013-07-08) - -* Bug fix: [Stream] Correctly detect closed connections - -## 0.3.2 (2013-05-10) - -* Bug fix: [Stream] Make sure CompositeStream is closed properly - -## 0.3.1 (2013-04-21) - -* Bug fix: [Stream] Allow any `ReadableStreamInterface` on `BufferedSink::createPromise()` - -## 0.3.0 (2013-04-14) - -* Feature: [Stream] Factory method for BufferedSink - -## 0.2.6 (2012-12-26) - -* Version bump - -## 0.2.5 (2012-11-26) - -* Feature: Make BufferedSink trigger progress events on the promise (@jsor) - -## 0.2.4 (2012-11-18) - -* Feature: Added ThroughStream, CompositeStream, ReadableStream and WritableStream -* Feature: Added BufferedSink - -## 0.2.3 (2012-11-14) - -* Version bump - -## 0.2.2 (2012-10-28) - -* Version bump - -## 0.2.1 (2012-10-14) - -* Bug fix: Check for EOF in `Buffer::write()` - -## 0.2.0 (2012-09-10) - -* Version bump - -## 0.1.1 (2012-07-12) - -* Bug fix: Testing and functional against PHP >= 5.3.3 and <= 5.3.8 - -## 0.1.0 (2012-07-11) - -* First tagged release diff --git a/v3_ci4/vendor/react/stream/LICENSE b/v3_ci4/vendor/react/stream/LICENSE deleted file mode 100644 index d6f8901..0000000 --- a/v3_ci4/vendor/react/stream/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/v3_ci4/vendor/react/stream/README.md b/v3_ci4/vendor/react/stream/README.md deleted file mode 100644 index 9c0468a..0000000 --- a/v3_ci4/vendor/react/stream/README.md +++ /dev/null @@ -1,1249 +0,0 @@ -# Stream - -[![CI status](https://github.com/reactphp/stream/actions/workflows/ci.yml/badge.svg)](https://github.com/reactphp/stream/actions) -[![installs on Packagist](https://img.shields.io/packagist/dt/react/stream?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/react/stream) - -Event-driven readable and writable streams for non-blocking I/O in [ReactPHP](https://reactphp.org/). - -In order to make the [EventLoop](https://github.com/reactphp/event-loop) -easier to use, this component introduces the powerful concept of "streams". -Streams allow you to efficiently process huge amounts of data (such as a multi -Gigabyte file download) in small chunks without having to store everything in -memory at once. -They are very similar to the streams found in PHP itself, -but have an interface more suited for async, non-blocking I/O. - -**Table of contents** - -* [Stream usage](#stream-usage) - * [ReadableStreamInterface](#readablestreaminterface) - * [data event](#data-event) - * [end event](#end-event) - * [error event](#error-event) - * [close event](#close-event) - * [isReadable()](#isreadable) - * [pause()](#pause) - * [resume()](#resume) - * [pipe()](#pipe) - * [close()](#close) - * [WritableStreamInterface](#writablestreaminterface) - * [drain event](#drain-event) - * [pipe event](#pipe-event) - * [error event](#error-event-1) - * [close event](#close-event-1) - * [isWritable()](#iswritable) - * [write()](#write) - * [end()](#end) - * [close()](#close-1) - * [DuplexStreamInterface](#duplexstreaminterface) -* [Creating streams](#creating-streams) - * [ReadableResourceStream](#readableresourcestream) - * [WritableResourceStream](#writableresourcestream) - * [DuplexResourceStream](#duplexresourcestream) - * [ThroughStream](#throughstream) - * [CompositeStream](#compositestream) -* [Usage](#usage) -* [Install](#install) -* [Tests](#tests) -* [License](#license) -* [More](#more) - -## Stream usage - -ReactPHP uses the concept of "streams" throughout its ecosystem to provide a -consistent higher-level abstraction for processing streams of arbitrary data -contents and size. -While a stream itself is a quite low-level concept, it can be used as a powerful -abstraction to build higher-level components and protocols on top. - -If you're new to this concept, it helps to think of them as a water pipe: -You can consume water from a source or you can produce water and forward (pipe) -it to any destination (sink). - -Similarly, streams can either be - -* readable (such as `STDIN` terminal input) or -* writable (such as `STDOUT` terminal output) or -* duplex (both readable *and* writable, such as a TCP/IP connection) - -Accordingly, this package defines the following three interfaces - -* [`ReadableStreamInterface`](#readablestreaminterface) -* [`WritableStreamInterface`](#writablestreaminterface) -* [`DuplexStreamInterface`](#duplexstreaminterface) - -### ReadableStreamInterface - -The `ReadableStreamInterface` is responsible for providing an interface for -read-only streams and the readable side of duplex streams. - -Besides defining a few methods, this interface also implements the -`EventEmitterInterface` which allows you to react to certain events. - -The event callback functions MUST be a valid `callable` that obeys strict -parameter definitions and MUST accept event parameters exactly as documented. -The event callback functions MUST NOT throw an `Exception`. -The return value of the event callback functions will be ignored and has no -effect, so for performance reasons you're recommended to not return any -excessive data structures. - -Every implementation of this interface MUST follow these event semantics in -order to be considered a well-behaving stream. - -> Note that higher-level implementations of this interface may choose to - define additional events with dedicated semantics not defined as part of - this low-level stream specification. Conformance with these event semantics - is out of scope for this interface, so you may also have to refer to the - documentation of such a higher-level implementation. - -#### data event - -The `data` event will be emitted whenever some data was read/received -from this source stream. -The event receives a single mixed argument for incoming data. - -```php -$stream->on('data', function ($data) { - echo $data; -}); -``` - -This event MAY be emitted any number of times, which may be zero times if -this stream does not send any data at all. -It SHOULD not be emitted after an `end` or `close` event. - -The given `$data` argument may be of mixed type, but it's usually -recommended it SHOULD be a `string` value or MAY use a type that allows -representation as a `string` for maximum compatibility. - -Many common streams (such as a TCP/IP connection or a file-based stream) -will emit the raw (binary) payload data that is received over the wire as -chunks of `string` values. - -Due to the stream-based nature of this, the sender may send any number -of chunks with varying sizes. There are no guarantees that these chunks -will be received with the exact same framing the sender intended to send. -In other words, many lower-level protocols (such as TCP/IP) transfer the -data in chunks that may be anywhere between single-byte values to several -dozens of kilobytes. You may want to apply a higher-level protocol to -these low-level data chunks in order to achieve proper message framing. - -#### end event - -The `end` event will be emitted once the source stream has successfully -reached the end of the stream (EOF). - -```php -$stream->on('end', function () { - echo 'END'; -}); -``` - -This event SHOULD be emitted once or never at all, depending on whether -a successful end was detected. -It SHOULD NOT be emitted after a previous `end` or `close` event. -It MUST NOT be emitted if the stream closes due to a non-successful -end, such as after a previous `error` event. - -After the stream is ended, it MUST switch to non-readable mode, -see also `isReadable()`. - -This event will only be emitted if the *end* was reached successfully, -not if the stream was interrupted by an unrecoverable error or explicitly -closed. Not all streams know this concept of a "successful end". -Many use-cases involve detecting when the stream closes (terminates) -instead, in this case you should use the `close` event. -After the stream emits an `end` event, it SHOULD usually be followed by a -`close` event. - -Many common streams (such as a TCP/IP connection or a file-based stream) -will emit this event if either the remote side closes the connection or -a file handle was successfully read until reaching its end (EOF). - -Note that this event should not be confused with the `end()` method. -This event defines a successful end *reading* from a source stream, while -the `end()` method defines *writing* a successful end to a destination -stream. - -#### error event - -The `error` event will be emitted once a fatal error occurs, usually while -trying to read from this stream. -The event receives a single `Exception` argument for the error instance. - -```php -$server->on('error', function (Exception $e) { - echo 'Error: ' . $e->getMessage() . PHP_EOL; -}); -``` - -This event SHOULD be emitted once the stream detects a fatal error, such -as a fatal transmission error or after an unexpected `data` or premature -`end` event. -It SHOULD NOT be emitted after a previous `error`, `end` or `close` event. -It MUST NOT be emitted if this is not a fatal error condition, such as -a temporary network issue that did not cause any data to be lost. - -After the stream errors, it MUST close the stream and SHOULD thus be -followed by a `close` event and then switch to non-readable mode, see -also `close()` and `isReadable()`. - -Many common streams (such as a TCP/IP connection or a file-based stream) -only deal with data transmission and do not make assumption about data -boundaries (such as unexpected `data` or premature `end` events). -In other words, many lower-level protocols (such as TCP/IP) may choose -to only emit this for a fatal transmission error once and will then -close (terminate) the stream in response. - -If this stream is a `DuplexStreamInterface`, you should also notice -how the writable side of the stream also implements an `error` event. -In other words, an error may occur while either reading or writing the -stream which should result in the same error processing. - -#### close event - -The `close` event will be emitted once the stream closes (terminates). - -```php -$stream->on('close', function () { - echo 'CLOSED'; -}); -``` - -This event SHOULD be emitted once or never at all, depending on whether -the stream ever terminates. -It SHOULD NOT be emitted after a previous `close` event. - -After the stream is closed, it MUST switch to non-readable mode, -see also `isReadable()`. - -Unlike the `end` event, this event SHOULD be emitted whenever the stream -closes, irrespective of whether this happens implicitly due to an -unrecoverable error or explicitly when either side closes the stream. -If you only want to detect a *successful* end, you should use the `end` -event instead. - -Many common streams (such as a TCP/IP connection or a file-based stream) -will likely choose to emit this event after reading a *successful* `end` -event or after a fatal transmission `error` event. - -If this stream is a `DuplexStreamInterface`, you should also notice -how the writable side of the stream also implements a `close` event. -In other words, after receiving this event, the stream MUST switch into -non-writable AND non-readable mode, see also `isWritable()`. -Note that this event should not be confused with the `end` event. - -#### isReadable() - -The `isReadable(): bool` method can be used to -check whether this stream is in a readable state (not closed already). - -This method can be used to check if the stream still accepts incoming -data events or if it is ended or closed already. -Once the stream is non-readable, no further `data` or `end` events SHOULD -be emitted. - -```php -assert($stream->isReadable() === false); - -$stream->on('data', assertNeverCalled()); -$stream->on('end', assertNeverCalled()); -``` - -A successfully opened stream always MUST start in readable mode. - -Once the stream ends or closes, it MUST switch to non-readable mode. -This can happen any time, explicitly through `close()` or -implicitly due to a remote close or an unrecoverable transmission error. -Once a stream has switched to non-readable mode, it MUST NOT transition -back to readable mode. - -If this stream is a `DuplexStreamInterface`, you should also notice -how the writable side of the stream also implements an `isWritable()` -method. Unless this is a half-open duplex stream, they SHOULD usually -have the same return value. - -#### pause() - -The `pause(): void` method can be used to -pause reading incoming data events. - -Removes the data source file descriptor from the event loop. This -allows you to throttle incoming data. - -Unless otherwise noted, a successfully opened stream SHOULD NOT start -in paused state. - -Once the stream is paused, no futher `data` or `end` events SHOULD -be emitted. - -```php -$stream->pause(); - -$stream->on('data', assertShouldNeverCalled()); -$stream->on('end', assertShouldNeverCalled()); -``` - -This method is advisory-only, though generally not recommended, the -stream MAY continue emitting `data` events. - -You can continue processing events by calling `resume()` again. - -Note that both methods can be called any number of times, in particular -calling `pause()` more than once SHOULD NOT have any effect. - -See also `resume()`. - -#### resume() - -The `resume(): void` method can be used to -resume reading incoming data events. - -Re-attach the data source after a previous `pause()`. - -```php -$stream->pause(); - -Loop::addTimer(1.0, function () use ($stream) { - $stream->resume(); -}); -``` - -Note that both methods can be called any number of times, in particular -calling `resume()` without a prior `pause()` SHOULD NOT have any effect. - -See also `pause()`. - -#### pipe() - -The `pipe(WritableStreamInterface $dest, array $options = [])` method can be used to -pipe all the data from this readable source into the given writable destination. - -Automatically sends all incoming data to the destination. -Automatically throttles the source based on what the destination can handle. - -```php -$source->pipe($dest); -``` - -Similarly, you can also pipe an instance implementing `DuplexStreamInterface` -into itself in order to write back all the data that is received. -This may be a useful feature for a TCP/IP echo service: - -```php -$connection->pipe($connection); -``` - -This method returns the destination stream as-is, which can be used to -set up chains of piped streams: - -```php -$source->pipe($decodeGzip)->pipe($filterBadWords)->pipe($dest); -``` - -By default, this will call `end()` on the destination stream once the -source stream emits an `end` event. This can be disabled like this: - -```php -$source->pipe($dest, array('end' => false)); -``` - -Note that this only applies to the `end` event. -If an `error` or explicit `close` event happens on the source stream, -you'll have to manually close the destination stream: - -```php -$source->pipe($dest); -$source->on('close', function () use ($dest) { - $dest->end('BYE!'); -}); -``` - -If the source stream is not readable (closed state), then this is a NO-OP. - -```php -$source->close(); -$source->pipe($dest); // NO-OP -``` - -If the destinantion stream is not writable (closed state), then this will simply -throttle (pause) the source stream: - -```php -$dest->close(); -$source->pipe($dest); // calls $source->pause() -``` - -Similarly, if the destination stream is closed while the pipe is still -active, it will also throttle (pause) the source stream: - -```php -$source->pipe($dest); -$dest->close(); // calls $source->pause() -``` - -Once the pipe is set up successfully, the destination stream MUST emit -a `pipe` event with this source stream an event argument. - -#### close() - -The `close(): void` method can be used to -close the stream (forcefully). - -This method can be used to (forcefully) close the stream. - -```php -$stream->close(); -``` - -Once the stream is closed, it SHOULD emit a `close` event. -Note that this event SHOULD NOT be emitted more than once, in particular -if this method is called multiple times. - -After calling this method, the stream MUST switch into a non-readable -mode, see also `isReadable()`. -This means that no further `data` or `end` events SHOULD be emitted. - -```php -$stream->close(); -assert($stream->isReadable() === false); - -$stream->on('data', assertNeverCalled()); -$stream->on('end', assertNeverCalled()); -``` - -If this stream is a `DuplexStreamInterface`, you should also notice -how the writable side of the stream also implements a `close()` method. -In other words, after calling this method, the stream MUST switch into -non-writable AND non-readable mode, see also `isWritable()`. -Note that this method should not be confused with the `end()` method. - -### WritableStreamInterface - -The `WritableStreamInterface` is responsible for providing an interface for -write-only streams and the writable side of duplex streams. - -Besides defining a few methods, this interface also implements the -`EventEmitterInterface` which allows you to react to certain events. - -The event callback functions MUST be a valid `callable` that obeys strict -parameter definitions and MUST accept event parameters exactly as documented. -The event callback functions MUST NOT throw an `Exception`. -The return value of the event callback functions will be ignored and has no -effect, so for performance reasons you're recommended to not return any -excessive data structures. - -Every implementation of this interface MUST follow these event semantics in -order to be considered a well-behaving stream. - -> Note that higher-level implementations of this interface may choose to - define additional events with dedicated semantics not defined as part of - this low-level stream specification. Conformance with these event semantics - is out of scope for this interface, so you may also have to refer to the - documentation of such a higher-level implementation. - -#### drain event - -The `drain` event will be emitted whenever the write buffer became full -previously and is now ready to accept more data. - -```php -$stream->on('drain', function () use ($stream) { - echo 'Stream is now ready to accept more data'; -}); -``` - -This event SHOULD be emitted once every time the buffer became full -previously and is now ready to accept more data. -In other words, this event MAY be emitted any number of times, which may -be zero times if the buffer never became full in the first place. -This event SHOULD NOT be emitted if the buffer has not become full -previously. - -This event is mostly used internally, see also `write()` for more details. - -#### pipe event - -The `pipe` event will be emitted whenever a readable stream is `pipe()`d -into this stream. -The event receives a single `ReadableStreamInterface` argument for the -source stream. - -```php -$stream->on('pipe', function (ReadableStreamInterface $source) use ($stream) { - echo 'Now receiving piped data'; - - // explicitly close target if source emits an error - $source->on('error', function () use ($stream) { - $stream->close(); - }); -}); - -$source->pipe($stream); -``` - -This event MUST be emitted once for each readable stream that is -successfully piped into this destination stream. -In other words, this event MAY be emitted any number of times, which may -be zero times if no stream is ever piped into this stream. -This event MUST NOT be emitted if either the source is not readable -(closed already) or this destination is not writable (closed already). - -This event is mostly used internally, see also `pipe()` for more details. - -#### error event - -The `error` event will be emitted once a fatal error occurs, usually while -trying to write to this stream. -The event receives a single `Exception` argument for the error instance. - -```php -$stream->on('error', function (Exception $e) { - echo 'Error: ' . $e->getMessage() . PHP_EOL; -}); -``` - -This event SHOULD be emitted once the stream detects a fatal error, such -as a fatal transmission error. -It SHOULD NOT be emitted after a previous `error` or `close` event. -It MUST NOT be emitted if this is not a fatal error condition, such as -a temporary network issue that did not cause any data to be lost. - -After the stream errors, it MUST close the stream and SHOULD thus be -followed by a `close` event and then switch to non-writable mode, see -also `close()` and `isWritable()`. - -Many common streams (such as a TCP/IP connection or a file-based stream) -only deal with data transmission and may choose -to only emit this for a fatal transmission error once and will then -close (terminate) the stream in response. - -If this stream is a `DuplexStreamInterface`, you should also notice -how the readable side of the stream also implements an `error` event. -In other words, an error may occur while either reading or writing the -stream which should result in the same error processing. - -#### close event - -The `close` event will be emitted once the stream closes (terminates). - -```php -$stream->on('close', function () { - echo 'CLOSED'; -}); -``` - -This event SHOULD be emitted once or never at all, depending on whether -the stream ever terminates. -It SHOULD NOT be emitted after a previous `close` event. - -After the stream is closed, it MUST switch to non-writable mode, -see also `isWritable()`. - -This event SHOULD be emitted whenever the stream closes, irrespective of -whether this happens implicitly due to an unrecoverable error or -explicitly when either side closes the stream. - -Many common streams (such as a TCP/IP connection or a file-based stream) -will likely choose to emit this event after flushing the buffer from -the `end()` method, after receiving a *successful* `end` event or after -a fatal transmission `error` event. - -If this stream is a `DuplexStreamInterface`, you should also notice -how the readable side of the stream also implements a `close` event. -In other words, after receiving this event, the stream MUST switch into -non-writable AND non-readable mode, see also `isReadable()`. -Note that this event should not be confused with the `end` event. - -#### isWritable() - -The `isWritable(): bool` method can be used to -check whether this stream is in a writable state (not closed already). - -This method can be used to check if the stream still accepts writing -any data or if it is ended or closed already. -Writing any data to a non-writable stream is a NO-OP: - -```php -assert($stream->isWritable() === false); - -$stream->write('end'); // NO-OP -$stream->end('end'); // NO-OP -``` - -A successfully opened stream always MUST start in writable mode. - -Once the stream ends or closes, it MUST switch to non-writable mode. -This can happen any time, explicitly through `end()` or `close()` or -implicitly due to a remote close or an unrecoverable transmission error. -Once a stream has switched to non-writable mode, it MUST NOT transition -back to writable mode. - -If this stream is a `DuplexStreamInterface`, you should also notice -how the readable side of the stream also implements an `isReadable()` -method. Unless this is a half-open duplex stream, they SHOULD usually -have the same return value. - -#### write() - -The `write(mixed $data): bool` method can be used to -write some data into the stream. - -A successful write MUST be confirmed with a boolean `true`, which means -that either the data was written (flushed) immediately or is buffered and -scheduled for a future write. Note that this interface gives you no -control over explicitly flushing the buffered data, as finding the -appropriate time for this is beyond the scope of this interface and left -up to the implementation of this interface. - -Many common streams (such as a TCP/IP connection or file-based stream) -may choose to buffer all given data and schedule a future flush by using -an underlying EventLoop to check when the resource is actually writable. - -If a stream cannot handle writing (or flushing) the data, it SHOULD emit -an `error` event and MAY `close()` the stream if it can not recover from -this error. - -If the internal buffer is full after adding `$data`, then `write()` -SHOULD return `false`, indicating that the caller should stop sending -data until the buffer drains. -The stream SHOULD send a `drain` event once the buffer is ready to accept -more data. - -Similarly, if the stream is not writable (already in a closed state) -it MUST NOT process the given `$data` and SHOULD return `false`, -indicating that the caller should stop sending data. - -The given `$data` argument MAY be of mixed type, but it's usually -recommended it SHOULD be a `string` value or MAY use a type that allows -representation as a `string` for maximum compatibility. - -Many common streams (such as a TCP/IP connection or a file-based stream) -will only accept the raw (binary) payload data that is transferred over -the wire as chunks of `string` values. - -Due to the stream-based nature of this, the sender may send any number -of chunks with varying sizes. There are no guarantees that these chunks -will be received with the exact same framing the sender intended to send. -In other words, many lower-level protocols (such as TCP/IP) transfer the -data in chunks that may be anywhere between single-byte values to several -dozens of kilobytes. You may want to apply a higher-level protocol to -these low-level data chunks in order to achieve proper message framing. - -#### end() - -The `end(mixed $data = null): void` method can be used to -successfully end the stream (after optionally sending some final data). - -This method can be used to successfully end the stream, i.e. close -the stream after sending out all data that is currently buffered. - -```php -$stream->write('hello'); -$stream->write('world'); -$stream->end(); -``` - -If there's no data currently buffered and nothing to be flushed, then -this method MAY `close()` the stream immediately. - -If there's still data in the buffer that needs to be flushed first, then -this method SHOULD try to write out this data and only then `close()` -the stream. -Once the stream is closed, it SHOULD emit a `close` event. - -Note that this interface gives you no control over explicitly flushing -the buffered data, as finding the appropriate time for this is beyond the -scope of this interface and left up to the implementation of this -interface. - -Many common streams (such as a TCP/IP connection or file-based stream) -may choose to buffer all given data and schedule a future flush by using -an underlying EventLoop to check when the resource is actually writable. - -You can optionally pass some final data that is written to the stream -before ending the stream. If a non-`null` value is given as `$data`, then -this method will behave just like calling `write($data)` before ending -with no data. - -```php -// shorter version -$stream->end('bye'); - -// same as longer version -$stream->write('bye'); -$stream->end(); -``` - -After calling this method, the stream MUST switch into a non-writable -mode, see also `isWritable()`. -This means that no further writes are possible, so any additional -`write()` or `end()` calls have no effect. - -```php -$stream->end(); -assert($stream->isWritable() === false); - -$stream->write('nope'); // NO-OP -$stream->end(); // NO-OP -``` - -If this stream is a `DuplexStreamInterface`, calling this method SHOULD -also end its readable side, unless the stream supports half-open mode. -In other words, after calling this method, these streams SHOULD switch -into non-writable AND non-readable mode, see also `isReadable()`. -This implies that in this case, the stream SHOULD NOT emit any `data` -or `end` events anymore. -Streams MAY choose to use the `pause()` method logic for this, but -special care may have to be taken to ensure a following call to the -`resume()` method SHOULD NOT continue emitting readable events. - -Note that this method should not be confused with the `close()` method. - -#### close() - -The `close(): void` method can be used to -close the stream (forcefully). - -This method can be used to forcefully close the stream, i.e. close -the stream without waiting for any buffered data to be flushed. -If there's still data in the buffer, this data SHOULD be discarded. - -```php -$stream->close(); -``` - -Once the stream is closed, it SHOULD emit a `close` event. -Note that this event SHOULD NOT be emitted more than once, in particular -if this method is called multiple times. - -After calling this method, the stream MUST switch into a non-writable -mode, see also `isWritable()`. -This means that no further writes are possible, so any additional -`write()` or `end()` calls have no effect. - -```php -$stream->close(); -assert($stream->isWritable() === false); - -$stream->write('nope'); // NO-OP -$stream->end(); // NO-OP -``` - -Note that this method should not be confused with the `end()` method. -Unlike the `end()` method, this method does not take care of any existing -buffers and simply discards any buffer contents. -Likewise, this method may also be called after calling `end()` on a -stream in order to stop waiting for the stream to flush its final data. - -```php -$stream->end(); -Loop::addTimer(1.0, function () use ($stream) { - $stream->close(); -}); -``` - -If this stream is a `DuplexStreamInterface`, you should also notice -how the readable side of the stream also implements a `close()` method. -In other words, after calling this method, the stream MUST switch into -non-writable AND non-readable mode, see also `isReadable()`. - -### DuplexStreamInterface - -The `DuplexStreamInterface` is responsible for providing an interface for -duplex streams (both readable and writable). - -It builds on top of the existing interfaces for readable and writable streams -and follows the exact same method and event semantics. -If you're new to this concept, you should look into the -`ReadableStreamInterface` and `WritableStreamInterface` first. - -Besides defining a few methods, this interface also implements the -`EventEmitterInterface` which allows you to react to the same events defined -on the `ReadbleStreamInterface` and `WritableStreamInterface`. - -The event callback functions MUST be a valid `callable` that obeys strict -parameter definitions and MUST accept event parameters exactly as documented. -The event callback functions MUST NOT throw an `Exception`. -The return value of the event callback functions will be ignored and has no -effect, so for performance reasons you're recommended to not return any -excessive data structures. - -Every implementation of this interface MUST follow these event semantics in -order to be considered a well-behaving stream. - -> Note that higher-level implementations of this interface may choose to - define additional events with dedicated semantics not defined as part of - this low-level stream specification. Conformance with these event semantics - is out of scope for this interface, so you may also have to refer to the - documentation of such a higher-level implementation. - -See also [`ReadableStreamInterface`](#readablestreaminterface) and -[`WritableStreamInterface`](#writablestreaminterface) for more details. - -## Creating streams - -ReactPHP uses the concept of "streams" throughout its ecosystem, so that -many higher-level consumers of this package only deal with -[stream usage](#stream-usage). -This implies that stream instances are most often created within some -higher-level components and many consumers never actually have to deal with -creating a stream instance. - -* Use [react/socket](https://github.com/reactphp/socket) - if you want to accept incoming or establish outgoing plaintext TCP/IP or - secure TLS socket connection streams. -* Use [react/http](https://github.com/reactphp/http) - if you want to receive an incoming HTTP request body streams. -* Use [react/child-process](https://github.com/reactphp/child-process) - if you want to communicate with child processes via process pipes such as - STDIN, STDOUT, STDERR etc. -* Use experimental [react/filesystem](https://github.com/reactphp/filesystem) - if you want to read from / write to the filesystem. -* See also the last chapter for [more real-world applications](#more). - -However, if you are writing a lower-level component or want to create a stream -instance from a stream resource, then the following chapter is for you. - -> Note that the following examples use `fopen()` and `stream_socket_client()` - for illustration purposes only. - These functions SHOULD NOT be used in a truly async program because each call - may take several seconds to complete and would block the EventLoop otherwise. - Additionally, the `fopen()` call will return a file handle on some platforms - which may or may not be supported by all EventLoop implementations. - As an alternative, you may want to use higher-level libraries listed above. - -### ReadableResourceStream - -The `ReadableResourceStream` is a concrete implementation of the -[`ReadableStreamInterface`](#readablestreaminterface) for PHP's stream resources. - -This can be used to represent a read-only resource like a file stream opened in -readable mode or a stream such as `STDIN`: - -```php -$stream = new ReadableResourceStream(STDIN); -$stream->on('data', function ($chunk) { - echo $chunk; -}); -$stream->on('end', function () { - echo 'END'; -}); -``` - -See also [`ReadableStreamInterface`](#readablestreaminterface) for more details. - -The first parameter given to the constructor MUST be a valid stream resource -that is opened in reading mode (e.g. `fopen()` mode `r`). -Otherwise, it will throw an `InvalidArgumentException`: - -```php -// throws InvalidArgumentException -$stream = new ReadableResourceStream(false); -``` - -See also the [`DuplexResourceStream`](#readableresourcestream) for read-and-write -stream resources otherwise. - -Internally, this class tries to enable non-blocking mode on the stream resource -which may not be supported for all stream resources. -Most notably, this is not supported by pipes on Windows (STDIN etc.). -If this fails, it will throw a `RuntimeException`: - -```php -// throws RuntimeException on Windows -$stream = new ReadableResourceStream(STDIN); -``` - -Once the constructor is called with a valid stream resource, this class will -take care of the underlying stream resource. -You SHOULD only use its public API and SHOULD NOT interfere with the underlying -stream resource manually. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -This class takes an optional `int|null $readChunkSize` parameter that controls -the maximum buffer size in bytes to read at once from the stream. -You can use a `null` value here in order to apply its default value. -This value SHOULD NOT be changed unless you know what you're doing. -This can be a positive number which means that up to X bytes will be read -at once from the underlying stream resource. Note that the actual number -of bytes read may be lower if the stream resource has less than X bytes -currently available. -This can be `-1` which means "read everything available" from the -underlying stream resource. -This should read until the stream resource is not readable anymore -(i.e. underlying buffer drained), note that this does not neccessarily -mean it reached EOF. - -```php -$stream = new ReadableResourceStream(STDIN, null, 8192); -``` - -> PHP bug warning: If the PHP process has explicitly been started without a - `STDIN` stream, then trying to read from `STDIN` may return data from - another stream resource. This does not happen if you start this with an empty - stream like `php test.php < /dev/null` instead of `php test.php <&-`. - See [#81](https://github.com/reactphp/stream/issues/81) for more details. - -> Changelog: As of v1.2.0 the `$loop` parameter can be omitted (or skipped with a - `null` value) to use the [default loop](https://github.com/reactphp/event-loop#loop). - -### WritableResourceStream - -The `WritableResourceStream` is a concrete implementation of the -[`WritableStreamInterface`](#writablestreaminterface) for PHP's stream resources. - -This can be used to represent a write-only resource like a file stream opened in -writable mode or a stream such as `STDOUT` or `STDERR`: - -```php -$stream = new WritableResourceStream(STDOUT); -$stream->write('hello!'); -$stream->end(); -``` - -See also [`WritableStreamInterface`](#writablestreaminterface) for more details. - -The first parameter given to the constructor MUST be a valid stream resource -that is opened for writing. -Otherwise, it will throw an `InvalidArgumentException`: - -```php -// throws InvalidArgumentException -$stream = new WritableResourceStream(false); -``` - -See also the [`DuplexResourceStream`](#readableresourcestream) for read-and-write -stream resources otherwise. - -Internally, this class tries to enable non-blocking mode on the stream resource -which may not be supported for all stream resources. -Most notably, this is not supported by pipes on Windows (STDOUT, STDERR etc.). -If this fails, it will throw a `RuntimeException`: - -```php -// throws RuntimeException on Windows -$stream = new WritableResourceStream(STDOUT); -``` - -Once the constructor is called with a valid stream resource, this class will -take care of the underlying stream resource. -You SHOULD only use its public API and SHOULD NOT interfere with the underlying -stream resource manually. - -Any `write()` calls to this class will not be performed instantly, but will -be performed asynchronously, once the EventLoop reports the stream resource is -ready to accept data. -For this, it uses an in-memory buffer string to collect all outstanding writes. -This buffer has a soft-limit applied which defines how much data it is willing -to accept before the caller SHOULD stop sending further data. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -This class takes an optional `int|null $writeBufferSoftLimit` parameter that controls -this maximum buffer size in bytes. -You can use a `null` value here in order to apply its default value. -This value SHOULD NOT be changed unless you know what you're doing. - -```php -$stream = new WritableResourceStream(STDOUT, null, 8192); -``` - -This class takes an optional `int|null $writeChunkSize` parameter that controls -this maximum buffer size in bytes to write at once to the stream. -You can use a `null` value here in order to apply its default value. -This value SHOULD NOT be changed unless you know what you're doing. -This can be a positive number which means that up to X bytes will be written -at once to the underlying stream resource. Note that the actual number -of bytes written may be lower if the stream resource has less than X bytes -currently available. -This can be `-1` which means "write everything available" to the -underlying stream resource. - -```php -$stream = new WritableResourceStream(STDOUT, null, null, 8192); -``` - -See also [`write()`](#write) for more details. - -> Changelog: As of v1.2.0 the `$loop` parameter can be omitted (or skipped with a - `null` value) to use the [default loop](https://github.com/reactphp/event-loop#loop). - -### DuplexResourceStream - -The `DuplexResourceStream` is a concrete implementation of the -[`DuplexStreamInterface`](#duplexstreaminterface) for PHP's stream resources. - -This can be used to represent a read-and-write resource like a file stream opened -in read and write mode mode or a stream such as a TCP/IP connection: - -```php -$conn = stream_socket_client('tcp://google.com:80'); -$stream = new DuplexResourceStream($conn); -$stream->write('hello!'); -$stream->end(); -``` - -See also [`DuplexStreamInterface`](#duplexstreaminterface) for more details. - -The first parameter given to the constructor MUST be a valid stream resource -that is opened for reading *and* writing. -Otherwise, it will throw an `InvalidArgumentException`: - -```php -// throws InvalidArgumentException -$stream = new DuplexResourceStream(false); -``` - -See also the [`ReadableResourceStream`](#readableresourcestream) for read-only -and the [`WritableResourceStream`](#writableresourcestream) for write-only -stream resources otherwise. - -Internally, this class tries to enable non-blocking mode on the stream resource -which may not be supported for all stream resources. -Most notably, this is not supported by pipes on Windows (STDOUT, STDERR etc.). -If this fails, it will throw a `RuntimeException`: - -```php -// throws RuntimeException on Windows -$stream = new DuplexResourceStream(STDOUT); -``` - -Once the constructor is called with a valid stream resource, this class will -take care of the underlying stream resource. -You SHOULD only use its public API and SHOULD NOT interfere with the underlying -stream resource manually. - -This class takes an optional `LoopInterface|null $loop` parameter that can be used to -pass the event loop instance to use for this object. You can use a `null` value -here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). -This value SHOULD NOT be given unless you're sure you want to explicitly use a -given event loop instance. - -This class takes an optional `int|null $readChunkSize` parameter that controls -the maximum buffer size in bytes to read at once from the stream. -You can use a `null` value here in order to apply its default value. -This value SHOULD NOT be changed unless you know what you're doing. -This can be a positive number which means that up to X bytes will be read -at once from the underlying stream resource. Note that the actual number -of bytes read may be lower if the stream resource has less than X bytes -currently available. -This can be `-1` which means "read everything available" from the -underlying stream resource. -This should read until the stream resource is not readable anymore -(i.e. underlying buffer drained), note that this does not neccessarily -mean it reached EOF. - -```php -$conn = stream_socket_client('tcp://google.com:80'); -$stream = new DuplexResourceStream($conn, null, 8192); -``` - -Any `write()` calls to this class will not be performed instantly, but will -be performed asynchronously, once the EventLoop reports the stream resource is -ready to accept data. -For this, it uses an in-memory buffer string to collect all outstanding writes. -This buffer has a soft-limit applied which defines how much data it is willing -to accept before the caller SHOULD stop sending further data. - -This class takes another optional `WritableStreamInterface|null $buffer` parameter -that controls this write behavior of this stream. -You can use a `null` value here in order to apply its default value. -This value SHOULD NOT be changed unless you know what you're doing. - -If you want to change the write buffer soft limit, you can pass an instance of -[`WritableResourceStream`](#writableresourcestream) like this: - -```php -$conn = stream_socket_client('tcp://google.com:80'); -$buffer = new WritableResourceStream($conn, null, 8192); -$stream = new DuplexResourceStream($conn, null, null, $buffer); -``` - -See also [`WritableResourceStream`](#writableresourcestream) for more details. - -> Changelog: As of v1.2.0 the `$loop` parameter can be omitted (or skipped with a - `null` value) to use the [default loop](https://github.com/reactphp/event-loop#loop). - -### ThroughStream - -The `ThroughStream` implements the -[`DuplexStreamInterface`](#duplexstreaminterface) and will simply pass any data -you write to it through to its readable end. - -```php -$through = new ThroughStream(); -$through->on('data', $this->expectCallableOnceWith('hello')); - -$through->write('hello'); -``` - -Similarly, the [`end()` method](#end) will end the stream and emit an -[`end` event](#end-event) and then [`close()`](#close-1) the stream. -The [`close()` method](#close-1) will close the stream and emit a -[`close` event](#close-event). -Accordingly, this is can also be used in a [`pipe()`](#pipe) context like this: - -```php -$through = new ThroughStream(); -$source->pipe($through)->pipe($dest); -``` - -Optionally, its constructor accepts any callable function which will then be -used to *filter* any data written to it. This function receives a single data -argument as passed to the writable side and must return the data as it will be -passed to its readable end: - -```php -$through = new ThroughStream('strtoupper'); -$source->pipe($through)->pipe($dest); -``` - -Note that this class makes no assumptions about any data types. This can be -used to convert data, for example for transforming any structured data into -a newline-delimited JSON (NDJSON) stream like this: - -```php -$through = new ThroughStream(function ($data) { - return json_encode($data) . PHP_EOL; -}); -$through->on('data', $this->expectCallableOnceWith("[2, true]\n")); - -$through->write(array(2, true)); -``` - -The callback function is allowed to throw an `Exception`. In this case, -the stream will emit an `error` event and then [`close()`](#close-1) the stream. - -```php -$through = new ThroughStream(function ($data) { - if (!is_string($data)) { - throw new \UnexpectedValueException('Only strings allowed'); - } - return $data; -}); -$through->on('error', $this->expectCallableOnce())); -$through->on('close', $this->expectCallableOnce())); -$through->on('data', $this->expectCallableNever())); - -$through->write(2); -``` - -### CompositeStream - -The `CompositeStream` implements the -[`DuplexStreamInterface`](#duplexstreaminterface) and can be used to create a -single duplex stream from two individual streams implementing -[`ReadableStreamInterface`](#readablestreaminterface) and -[`WritableStreamInterface`](#writablestreaminterface) respectively. - -This is useful for some APIs which may require a single -[`DuplexStreamInterface`](#duplexstreaminterface) or simply because it's often -more convenient to work with a single stream instance like this: - -```php -$stdin = new ReadableResourceStream(STDIN); -$stdout = new WritableResourceStream(STDOUT); - -$stdio = new CompositeStream($stdin, $stdout); - -$stdio->on('data', function ($chunk) use ($stdio) { - $stdio->write('You said: ' . $chunk); -}); -``` - -This is a well-behaving stream which forwards all stream events from the -underlying streams and forwards all streams calls to the underlying streams. - -If you `write()` to the duplex stream, it will simply `write()` to the -writable side and return its status. - -If you `end()` the duplex stream, it will `end()` the writable side and will -`pause()` the readable side. - -If you `close()` the duplex stream, both input streams will be closed. -If either of the two input streams emits a `close` event, the duplex stream -will also close. -If either of the two input streams is already closed while constructing the -duplex stream, it will `close()` the other side and return a closed stream. - -## Usage - -The following example can be used to pipe the contents of a source file into -a destination file without having to ever read the whole file into memory: - -```php -$source = new React\Stream\ReadableResourceStream(fopen('source.txt', 'r')); -$dest = new React\Stream\WritableResourceStream(fopen('destination.txt', 'w')); - -$source->pipe($dest); -``` - -> Note that this example uses `fopen()` for illustration purposes only. - This should not be used in a truly async program because the filesystem is - inherently blocking and each call could potentially take several seconds. - See also [creating streams](#creating-streams) for more sophisticated - examples. - -## Install - -The recommended way to install this library is [through Composer](https://getcomposer.org). -[New to Composer?](https://getcomposer.org/doc/00-intro.md) - -This project follows [SemVer](https://semver.org/). -This will install the latest supported version: - -```bash -composer require react/stream:^1.4 -``` - -See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades. - -This project aims to run on any platform and thus does not require any PHP -extensions and supports running on legacy PHP 5.3 through current PHP 8+ and HHVM. -It's *highly recommended to use PHP 7+* for this project due to its vast -performance improvements. - -## Tests - -To run the test suite, you first need to clone this repo and then install all -dependencies [through Composer](https://getcomposer.org): - -```bash -composer install -``` - -To run the test suite, go to the project root and run: - -```bash -vendor/bin/phpunit -``` - -The test suite also contains a number of functional integration tests that rely -on a stable internet connection. -If you do not want to run these, they can simply be skipped like this: - -```bash -vendor/bin/phpunit --exclude-group internet -``` - -## License - -MIT, see [LICENSE file](LICENSE). - -## More - -* See [creating streams](#creating-streams) for more information on how streams - are created in real-world applications. -* See our [users wiki](https://github.com/reactphp/react/wiki/Users) and the - [dependents on Packagist](https://packagist.org/packages/react/stream/dependents) - for a list of packages that use streams in real-world applications. diff --git a/v3_ci4/vendor/react/stream/composer.json b/v3_ci4/vendor/react/stream/composer.json deleted file mode 100644 index 09d8b71..0000000 --- a/v3_ci4/vendor/react/stream/composer.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "react/stream", - "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", - "keywords": ["event-driven", "readable", "writable", "stream", "non-blocking", "io", "pipe", "ReactPHP"], - "license": "MIT", - "authors": [ - { - "name": "Christian Lück", - "homepage": "https://clue.engineering/", - "email": "christian@clue.engineering" - }, - { - "name": "Cees-Jan Kiewiet", - "homepage": "https://wyrihaximus.net/", - "email": "reactphp@ceesjankiewiet.nl" - }, - { - "name": "Jan Sorgalla", - "homepage": "https://sorgalla.com/", - "email": "jsorgalla@gmail.com" - }, - { - "name": "Chris Boden", - "homepage": "https://cboden.dev/", - "email": "cboden@gmail.com" - } - ], - "require": { - "php": ">=5.3.8", - "react/event-loop": "^1.2", - "evenement/evenement": "^3.0 || ^2.0 || ^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "clue/stream-filter": "~1.2" - }, - "autoload": { - "psr-4": { - "React\\Stream\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "React\\Tests\\Stream\\": "tests/" - } - } -} diff --git a/v3_ci4/vendor/react/stream/src/CompositeStream.php b/v3_ci4/vendor/react/stream/src/CompositeStream.php deleted file mode 100644 index dde091d..0000000 --- a/v3_ci4/vendor/react/stream/src/CompositeStream.php +++ /dev/null @@ -1,83 +0,0 @@ -readable = $readable; - $this->writable = $writable; - - if (!$readable->isReadable() || !$writable->isWritable()) { - $this->close(); - return; - } - - Util::forwardEvents($this->readable, $this, array('data', 'end', 'error')); - Util::forwardEvents($this->writable, $this, array('drain', 'error', 'pipe')); - - $this->readable->on('close', array($this, 'close')); - $this->writable->on('close', array($this, 'close')); - } - - public function isReadable() - { - return $this->readable->isReadable(); - } - - public function pause() - { - $this->readable->pause(); - } - - public function resume() - { - if (!$this->writable->isWritable()) { - return; - } - - $this->readable->resume(); - } - - public function pipe(WritableStreamInterface $dest, array $options = array()) - { - return Util::pipe($this, $dest, $options); - } - - public function isWritable() - { - return $this->writable->isWritable(); - } - - public function write($data) - { - return $this->writable->write($data); - } - - public function end($data = null) - { - $this->readable->pause(); - $this->writable->end($data); - } - - public function close() - { - if ($this->closed) { - return; - } - - $this->closed = true; - $this->readable->close(); - $this->writable->close(); - - $this->emit('close'); - $this->removeAllListeners(); - } -} diff --git a/v3_ci4/vendor/react/stream/src/DuplexResourceStream.php b/v3_ci4/vendor/react/stream/src/DuplexResourceStream.php deleted file mode 100644 index d6de55c..0000000 --- a/v3_ci4/vendor/react/stream/src/DuplexResourceStream.php +++ /dev/null @@ -1,240 +0,0 @@ -isLegacyPipe($stream)) { - \stream_set_read_buffer($stream, 0); - } - - if ($buffer === null) { - $buffer = new WritableResourceStream($stream, $loop); - } - - $this->stream = $stream; - $this->loop = $loop ?: Loop::get(); - $this->bufferSize = ($readChunkSize === null) ? 65536 : (int)$readChunkSize; - $this->buffer = $buffer; - - $that = $this; - - $this->buffer->on('error', function ($error) use ($that) { - $that->emit('error', array($error)); - }); - - $this->buffer->on('close', array($this, 'close')); - - $this->buffer->on('drain', function () use ($that) { - $that->emit('drain'); - }); - - $this->resume(); - } - - public function isReadable() - { - return $this->readable; - } - - public function isWritable() - { - return $this->writable; - } - - public function pause() - { - if ($this->listening) { - $this->loop->removeReadStream($this->stream); - $this->listening = false; - } - } - - public function resume() - { - if (!$this->listening && $this->readable) { - $this->loop->addReadStream($this->stream, array($this, 'handleData')); - $this->listening = true; - } - } - - public function write($data) - { - if (!$this->writable) { - return false; - } - - return $this->buffer->write($data); - } - - public function close() - { - if (!$this->writable && !$this->closing) { - return; - } - - $this->closing = false; - - $this->readable = false; - $this->writable = false; - - $this->emit('close'); - $this->pause(); - $this->buffer->close(); - $this->removeAllListeners(); - - if (\is_resource($this->stream)) { - \fclose($this->stream); - } - } - - public function end($data = null) - { - if (!$this->writable) { - return; - } - - $this->closing = true; - - $this->readable = false; - $this->writable = false; - $this->pause(); - - $this->buffer->end($data); - } - - public function pipe(WritableStreamInterface $dest, array $options = array()) - { - return Util::pipe($this, $dest, $options); - } - - /** @internal */ - public function handleData($stream) - { - $error = null; - \set_error_handler(function ($errno, $errstr, $errfile, $errline) use (&$error) { - $error = new \ErrorException( - $errstr, - 0, - $errno, - $errfile, - $errline - ); - }); - - $data = \stream_get_contents($stream, $this->bufferSize); - - \restore_error_handler(); - - if ($error !== null) { - $this->emit('error', array(new \RuntimeException('Unable to read from stream: ' . $error->getMessage(), 0, $error))); - $this->close(); - return; - } - - if ($data !== '') { - $this->emit('data', array($data)); - } elseif (\feof($this->stream)) { - // no data read => we reached the end and close the stream - $this->emit('end'); - $this->close(); - } - } - - /** - * Returns whether this is a pipe resource in a legacy environment - * - * This works around a legacy PHP bug (#61019) that was fixed in PHP 5.4.28+ - * and PHP 5.5.12+ and newer. - * - * @param resource $resource - * @return bool - * @link https://github.com/reactphp/child-process/issues/40 - * - * @codeCoverageIgnore - */ - private function isLegacyPipe($resource) - { - if (\PHP_VERSION_ID < 50428 || (\PHP_VERSION_ID >= 50500 && \PHP_VERSION_ID < 50512)) { - $meta = \stream_get_meta_data($resource); - - if (isset($meta['stream_type']) && $meta['stream_type'] === 'STDIO') { - return true; - } - } - return false; - } -} diff --git a/v3_ci4/vendor/react/stream/src/DuplexStreamInterface.php b/v3_ci4/vendor/react/stream/src/DuplexStreamInterface.php deleted file mode 100644 index 631ce31..0000000 --- a/v3_ci4/vendor/react/stream/src/DuplexStreamInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - Note that higher-level implementations of this interface may choose to - * define additional events with dedicated semantics not defined as part of - * this low-level stream specification. Conformance with these event semantics - * is out of scope for this interface, so you may also have to refer to the - * documentation of such a higher-level implementation. - * - * @see ReadableStreamInterface - * @see WritableStreamInterface - */ -interface DuplexStreamInterface extends ReadableStreamInterface, WritableStreamInterface -{ -} diff --git a/v3_ci4/vendor/react/stream/src/ReadableResourceStream.php b/v3_ci4/vendor/react/stream/src/ReadableResourceStream.php deleted file mode 100644 index 823360a..0000000 --- a/v3_ci4/vendor/react/stream/src/ReadableResourceStream.php +++ /dev/null @@ -1,188 +0,0 @@ -isLegacyPipe($stream)) { - \stream_set_read_buffer($stream, 0); - } - - $this->stream = $stream; - $this->loop = $loop ?: Loop::get(); - $this->bufferSize = ($readChunkSize === null) ? 65536 : (int)$readChunkSize; - - $this->resume(); - } - - public function isReadable() - { - return !$this->closed; - } - - public function pause() - { - if ($this->listening) { - $this->loop->removeReadStream($this->stream); - $this->listening = false; - } - } - - public function resume() - { - if (!$this->listening && !$this->closed) { - $this->loop->addReadStream($this->stream, array($this, 'handleData')); - $this->listening = true; - } - } - - public function pipe(WritableStreamInterface $dest, array $options = array()) - { - return Util::pipe($this, $dest, $options); - } - - public function close() - { - if ($this->closed) { - return; - } - - $this->closed = true; - - $this->emit('close'); - $this->pause(); - $this->removeAllListeners(); - - if (\is_resource($this->stream)) { - \fclose($this->stream); - } - } - - /** @internal */ - public function handleData() - { - $error = null; - \set_error_handler(function ($errno, $errstr, $errfile, $errline) use (&$error) { - $error = new \ErrorException( - $errstr, - 0, - $errno, - $errfile, - $errline - ); - }); - - $data = \stream_get_contents($this->stream, $this->bufferSize); - - \restore_error_handler(); - - if ($error !== null) { - $this->emit('error', array(new \RuntimeException('Unable to read from stream: ' . $error->getMessage(), 0, $error))); - $this->close(); - return; - } - - if ($data !== '') { - $this->emit('data', array($data)); - } elseif (\feof($this->stream)) { - // no data read => we reached the end and close the stream - $this->emit('end'); - $this->close(); - } - } - - /** - * Returns whether this is a pipe resource in a legacy environment - * - * This works around a legacy PHP bug (#61019) that was fixed in PHP 5.4.28+ - * and PHP 5.5.12+ and newer. - * - * @param resource $resource - * @return bool - * @link https://github.com/reactphp/child-process/issues/40 - * - * @codeCoverageIgnore - */ - private function isLegacyPipe($resource) - { - if (\PHP_VERSION_ID < 50428 || (\PHP_VERSION_ID >= 50500 && \PHP_VERSION_ID < 50512)) { - $meta = \stream_get_meta_data($resource); - - if (isset($meta['stream_type']) && $meta['stream_type'] === 'STDIO') { - return true; - } - } - return false; - } -} diff --git a/v3_ci4/vendor/react/stream/src/ReadableStreamInterface.php b/v3_ci4/vendor/react/stream/src/ReadableStreamInterface.php deleted file mode 100644 index fa3d59c..0000000 --- a/v3_ci4/vendor/react/stream/src/ReadableStreamInterface.php +++ /dev/null @@ -1,362 +0,0 @@ -on('data', function ($data) { - * echo $data; - * }); - * ``` - * - * This event MAY be emitted any number of times, which may be zero times if - * this stream does not send any data at all. - * It SHOULD not be emitted after an `end` or `close` event. - * - * The given `$data` argument may be of mixed type, but it's usually - * recommended it SHOULD be a `string` value or MAY use a type that allows - * representation as a `string` for maximum compatibility. - * - * Many common streams (such as a TCP/IP connection or a file-based stream) - * will emit the raw (binary) payload data that is received over the wire as - * chunks of `string` values. - * - * Due to the stream-based nature of this, the sender may send any number - * of chunks with varying sizes. There are no guarantees that these chunks - * will be received with the exact same framing the sender intended to send. - * In other words, many lower-level protocols (such as TCP/IP) transfer the - * data in chunks that may be anywhere between single-byte values to several - * dozens of kilobytes. You may want to apply a higher-level protocol to - * these low-level data chunks in order to achieve proper message framing. - * - * end event: - * The `end` event will be emitted once the source stream has successfully - * reached the end of the stream (EOF). - * - * ```php - * $stream->on('end', function () { - * echo 'END'; - * }); - * ``` - * - * This event SHOULD be emitted once or never at all, depending on whether - * a successful end was detected. - * It SHOULD NOT be emitted after a previous `end` or `close` event. - * It MUST NOT be emitted if the stream closes due to a non-successful - * end, such as after a previous `error` event. - * - * After the stream is ended, it MUST switch to non-readable mode, - * see also `isReadable()`. - * - * This event will only be emitted if the *end* was reached successfully, - * not if the stream was interrupted by an unrecoverable error or explicitly - * closed. Not all streams know this concept of a "successful end". - * Many use-cases involve detecting when the stream closes (terminates) - * instead, in this case you should use the `close` event. - * After the stream emits an `end` event, it SHOULD usually be followed by a - * `close` event. - * - * Many common streams (such as a TCP/IP connection or a file-based stream) - * will emit this event if either the remote side closes the connection or - * a file handle was successfully read until reaching its end (EOF). - * - * Note that this event should not be confused with the `end()` method. - * This event defines a successful end *reading* from a source stream, while - * the `end()` method defines *writing* a successful end to a destination - * stream. - * - * error event: - * The `error` event will be emitted once a fatal error occurs, usually while - * trying to read from this stream. - * The event receives a single `Exception` argument for the error instance. - * - * ```php - * $stream->on('error', function (Exception $e) { - * echo 'Error: ' . $e->getMessage() . PHP_EOL; - * }); - * ``` - * - * This event SHOULD be emitted once the stream detects a fatal error, such - * as a fatal transmission error or after an unexpected `data` or premature - * `end` event. - * It SHOULD NOT be emitted after a previous `error`, `end` or `close` event. - * It MUST NOT be emitted if this is not a fatal error condition, such as - * a temporary network issue that did not cause any data to be lost. - * - * After the stream errors, it MUST close the stream and SHOULD thus be - * followed by a `close` event and then switch to non-readable mode, see - * also `close()` and `isReadable()`. - * - * Many common streams (such as a TCP/IP connection or a file-based stream) - * only deal with data transmission and do not make assumption about data - * boundaries (such as unexpected `data` or premature `end` events). - * In other words, many lower-level protocols (such as TCP/IP) may choose - * to only emit this for a fatal transmission error once and will then - * close (terminate) the stream in response. - * - * If this stream is a `DuplexStreamInterface`, you should also notice - * how the writable side of the stream also implements an `error` event. - * In other words, an error may occur while either reading or writing the - * stream which should result in the same error processing. - * - * close event: - * The `close` event will be emitted once the stream closes (terminates). - * - * ```php - * $stream->on('close', function () { - * echo 'CLOSED'; - * }); - * ``` - * - * This event SHOULD be emitted once or never at all, depending on whether - * the stream ever terminates. - * It SHOULD NOT be emitted after a previous `close` event. - * - * After the stream is closed, it MUST switch to non-readable mode, - * see also `isReadable()`. - * - * Unlike the `end` event, this event SHOULD be emitted whenever the stream - * closes, irrespective of whether this happens implicitly due to an - * unrecoverable error or explicitly when either side closes the stream. - * If you only want to detect a *successful* end, you should use the `end` - * event instead. - * - * Many common streams (such as a TCP/IP connection or a file-based stream) - * will likely choose to emit this event after reading a *successful* `end` - * event or after a fatal transmission `error` event. - * - * If this stream is a `DuplexStreamInterface`, you should also notice - * how the writable side of the stream also implements a `close` event. - * In other words, after receiving this event, the stream MUST switch into - * non-writable AND non-readable mode, see also `isWritable()`. - * Note that this event should not be confused with the `end` event. - * - * The event callback functions MUST be a valid `callable` that obeys strict - * parameter definitions and MUST accept event parameters exactly as documented. - * The event callback functions MUST NOT throw an `Exception`. - * The return value of the event callback functions will be ignored and has no - * effect, so for performance reasons you're recommended to not return any - * excessive data structures. - * - * Every implementation of this interface MUST follow these event semantics in - * order to be considered a well-behaving stream. - * - * > Note that higher-level implementations of this interface may choose to - * define additional events with dedicated semantics not defined as part of - * this low-level stream specification. Conformance with these event semantics - * is out of scope for this interface, so you may also have to refer to the - * documentation of such a higher-level implementation. - * - * @see EventEmitterInterface - */ -interface ReadableStreamInterface extends EventEmitterInterface -{ - /** - * Checks whether this stream is in a readable state (not closed already). - * - * This method can be used to check if the stream still accepts incoming - * data events or if it is ended or closed already. - * Once the stream is non-readable, no further `data` or `end` events SHOULD - * be emitted. - * - * ```php - * assert($stream->isReadable() === false); - * - * $stream->on('data', assertNeverCalled()); - * $stream->on('end', assertNeverCalled()); - * ``` - * - * A successfully opened stream always MUST start in readable mode. - * - * Once the stream ends or closes, it MUST switch to non-readable mode. - * This can happen any time, explicitly through `close()` or - * implicitly due to a remote close or an unrecoverable transmission error. - * Once a stream has switched to non-readable mode, it MUST NOT transition - * back to readable mode. - * - * If this stream is a `DuplexStreamInterface`, you should also notice - * how the writable side of the stream also implements an `isWritable()` - * method. Unless this is a half-open duplex stream, they SHOULD usually - * have the same return value. - * - * @return bool - */ - public function isReadable(); - - /** - * Pauses reading incoming data events. - * - * Removes the data source file descriptor from the event loop. This - * allows you to throttle incoming data. - * - * Unless otherwise noted, a successfully opened stream SHOULD NOT start - * in paused state. - * - * Once the stream is paused, no futher `data` or `end` events SHOULD - * be emitted. - * - * ```php - * $stream->pause(); - * - * $stream->on('data', assertShouldNeverCalled()); - * $stream->on('end', assertShouldNeverCalled()); - * ``` - * - * This method is advisory-only, though generally not recommended, the - * stream MAY continue emitting `data` events. - * - * You can continue processing events by calling `resume()` again. - * - * Note that both methods can be called any number of times, in particular - * calling `pause()` more than once SHOULD NOT have any effect. - * - * @see self::resume() - * @return void - */ - public function pause(); - - /** - * Resumes reading incoming data events. - * - * Re-attach the data source after a previous `pause()`. - * - * ```php - * $stream->pause(); - * - * Loop::addTimer(1.0, function () use ($stream) { - * $stream->resume(); - * }); - * ``` - * - * Note that both methods can be called any number of times, in particular - * calling `resume()` without a prior `pause()` SHOULD NOT have any effect. - * - * @see self::pause() - * @return void - */ - public function resume(); - - /** - * Pipes all the data from this readable source into the given writable destination. - * - * Automatically sends all incoming data to the destination. - * Automatically throttles the source based on what the destination can handle. - * - * ```php - * $source->pipe($dest); - * ``` - * - * Similarly, you can also pipe an instance implementing `DuplexStreamInterface` - * into itself in order to write back all the data that is received. - * This may be a useful feature for a TCP/IP echo service: - * - * ```php - * $connection->pipe($connection); - * ``` - * - * This method returns the destination stream as-is, which can be used to - * set up chains of piped streams: - * - * ```php - * $source->pipe($decodeGzip)->pipe($filterBadWords)->pipe($dest); - * ``` - * - * By default, this will call `end()` on the destination stream once the - * source stream emits an `end` event. This can be disabled like this: - * - * ```php - * $source->pipe($dest, array('end' => false)); - * ``` - * - * Note that this only applies to the `end` event. - * If an `error` or explicit `close` event happens on the source stream, - * you'll have to manually close the destination stream: - * - * ```php - * $source->pipe($dest); - * $source->on('close', function () use ($dest) { - * $dest->end('BYE!'); - * }); - * ``` - * - * If the source stream is not readable (closed state), then this is a NO-OP. - * - * ```php - * $source->close(); - * $source->pipe($dest); // NO-OP - * ``` - * - * If the destinantion stream is not writable (closed state), then this will simply - * throttle (pause) the source stream: - * - * ```php - * $dest->close(); - * $source->pipe($dest); // calls $source->pause() - * ``` - * - * Similarly, if the destination stream is closed while the pipe is still - * active, it will also throttle (pause) the source stream: - * - * ```php - * $source->pipe($dest); - * $dest->close(); // calls $source->pause() - * ``` - * - * Once the pipe is set up successfully, the destination stream MUST emit - * a `pipe` event with this source stream an event argument. - * - * @param WritableStreamInterface $dest - * @param array $options - * @return WritableStreamInterface $dest stream as-is - */ - public function pipe(WritableStreamInterface $dest, array $options = array()); - - /** - * Closes the stream (forcefully). - * - * This method can be used to (forcefully) close the stream. - * - * ```php - * $stream->close(); - * ``` - * - * Once the stream is closed, it SHOULD emit a `close` event. - * Note that this event SHOULD NOT be emitted more than once, in particular - * if this method is called multiple times. - * - * After calling this method, the stream MUST switch into a non-readable - * mode, see also `isReadable()`. - * This means that no further `data` or `end` events SHOULD be emitted. - * - * ```php - * $stream->close(); - * assert($stream->isReadable() === false); - * - * $stream->on('data', assertNeverCalled()); - * $stream->on('end', assertNeverCalled()); - * ``` - * - * If this stream is a `DuplexStreamInterface`, you should also notice - * how the writable side of the stream also implements a `close()` method. - * In other words, after calling this method, the stream MUST switch into - * non-writable AND non-readable mode, see also `isWritable()`. - * Note that this method should not be confused with the `end()` method. - * - * @return void - * @see WritableStreamInterface::close() - */ - public function close(); -} diff --git a/v3_ci4/vendor/react/stream/src/ThroughStream.php b/v3_ci4/vendor/react/stream/src/ThroughStream.php deleted file mode 100644 index 3b4fbb7..0000000 --- a/v3_ci4/vendor/react/stream/src/ThroughStream.php +++ /dev/null @@ -1,195 +0,0 @@ -on('data', $this->expectCallableOnceWith('hello')); - * - * $through->write('hello'); - * ``` - * - * Similarly, the [`end()` method](#end) will end the stream and emit an - * [`end` event](#end-event) and then [`close()`](#close-1) the stream. - * The [`close()` method](#close-1) will close the stream and emit a - * [`close` event](#close-event). - * Accordingly, this is can also be used in a [`pipe()`](#pipe) context like this: - * - * ```php - * $through = new ThroughStream(); - * $source->pipe($through)->pipe($dest); - * ``` - * - * Optionally, its constructor accepts any callable function which will then be - * used to *filter* any data written to it. This function receives a single data - * argument as passed to the writable side and must return the data as it will be - * passed to its readable end: - * - * ```php - * $through = new ThroughStream('strtoupper'); - * $source->pipe($through)->pipe($dest); - * ``` - * - * Note that this class makes no assumptions about any data types. This can be - * used to convert data, for example for transforming any structured data into - * a newline-delimited JSON (NDJSON) stream like this: - * - * ```php - * $through = new ThroughStream(function ($data) { - * return json_encode($data) . PHP_EOL; - * }); - * $through->on('data', $this->expectCallableOnceWith("[2, true]\n")); - * - * $through->write(array(2, true)); - * ``` - * - * The callback function is allowed to throw an `Exception`. In this case, - * the stream will emit an `error` event and then [`close()`](#close-1) the stream. - * - * ```php - * $through = new ThroughStream(function ($data) { - * if (!is_string($data)) { - * throw new \UnexpectedValueException('Only strings allowed'); - * } - * return $data; - * }); - * $through->on('error', $this->expectCallableOnce())); - * $through->on('close', $this->expectCallableOnce())); - * $through->on('data', $this->expectCallableNever())); - * - * $through->write(2); - * ``` - * - * @see WritableStreamInterface::write() - * @see WritableStreamInterface::end() - * @see DuplexStreamInterface::close() - * @see WritableStreamInterface::pipe() - */ -final class ThroughStream extends EventEmitter implements DuplexStreamInterface -{ - private $readable = true; - private $writable = true; - private $closed = false; - private $paused = false; - private $drain = false; - private $callback; - - public function __construct($callback = null) - { - if ($callback !== null && !\is_callable($callback)) { - throw new InvalidArgumentException('Invalid transformation callback given'); - } - - $this->callback = $callback; - } - - public function pause() - { - // only allow pause if still readable, false otherwise - $this->paused = $this->readable; - } - - public function resume() - { - $this->paused = false; - - // emit drain event if previous write was paused (throttled) - if ($this->drain) { - $this->drain = false; - $this->emit('drain'); - } - } - - public function pipe(WritableStreamInterface $dest, array $options = array()) - { - return Util::pipe($this, $dest, $options); - } - - public function isReadable() - { - return $this->readable; - } - - public function isWritable() - { - return $this->writable; - } - - public function write($data) - { - if (!$this->writable) { - return false; - } - - if ($this->callback !== null) { - try { - $data = \call_user_func($this->callback, $data); - } catch (\Exception $e) { - $this->emit('error', array($e)); - $this->close(); - - return false; - } - } - - $this->emit('data', array($data)); - - // emit drain event on next resume if currently paused (throttled) - if ($this->paused) { - $this->drain = true; - } - - // continue writing if still writable and not paused (throttled), false otherwise - return $this->writable && !$this->paused; - } - - public function end($data = null) - { - if (!$this->writable) { - return; - } - - if (null !== $data) { - $this->write($data); - - // return if write() already caused the stream to close - if (!$this->writable) { - return; - } - } - - $this->readable = false; - $this->writable = false; - $this->paused = false; - $this->drain = false; - - $this->emit('end'); - $this->close(); - } - - public function close() - { - if ($this->closed) { - return; - } - - $this->readable = false; - $this->writable = false; - $this->paused = false; - $this->drain = false; - - $this->closed = true; - $this->callback = null; - - $this->emit('close'); - $this->removeAllListeners(); - } -} diff --git a/v3_ci4/vendor/react/stream/src/Util.php b/v3_ci4/vendor/react/stream/src/Util.php deleted file mode 100644 index 056b037..0000000 --- a/v3_ci4/vendor/react/stream/src/Util.php +++ /dev/null @@ -1,75 +0,0 @@ - NO-OP - if (!$source->isReadable()) { - return $dest; - } - - // destination not writable => just pause() source - if (!$dest->isWritable()) { - $source->pause(); - - return $dest; - } - - $dest->emit('pipe', array($source)); - - // forward all source data events as $dest->write() - $source->on('data', $dataer = function ($data) use ($source, $dest) { - $feedMore = $dest->write($data); - - if (false === $feedMore) { - $source->pause(); - } - }); - $dest->on('close', function () use ($source, $dataer) { - $source->removeListener('data', $dataer); - $source->pause(); - }); - - // forward destination drain as $source->resume() - $dest->on('drain', $drainer = function () use ($source) { - $source->resume(); - }); - $source->on('close', function () use ($dest, $drainer) { - $dest->removeListener('drain', $drainer); - }); - - // forward end event from source as $dest->end() - $end = isset($options['end']) ? $options['end'] : true; - if ($end) { - $source->on('end', $ender = function () use ($dest) { - $dest->end(); - }); - $dest->on('close', function () use ($source, $ender) { - $source->removeListener('end', $ender); - }); - } - - return $dest; - } - - public static function forwardEvents($source, $target, array $events) - { - foreach ($events as $event) { - $source->on($event, function () use ($event, $target) { - $target->emit($event, \func_get_args()); - }); - } - } -} diff --git a/v3_ci4/vendor/react/stream/src/WritableResourceStream.php b/v3_ci4/vendor/react/stream/src/WritableResourceStream.php deleted file mode 100644 index e3a7e74..0000000 --- a/v3_ci4/vendor/react/stream/src/WritableResourceStream.php +++ /dev/null @@ -1,178 +0,0 @@ -stream = $stream; - $this->loop = $loop ?: Loop::get(); - $this->softLimit = ($writeBufferSoftLimit === null) ? 65536 : (int)$writeBufferSoftLimit; - $this->writeChunkSize = ($writeChunkSize === null) ? -1 : (int)$writeChunkSize; - } - - public function isWritable() - { - return $this->writable; - } - - public function write($data) - { - if (!$this->writable) { - return false; - } - - $this->data .= $data; - - if (!$this->listening && $this->data !== '') { - $this->listening = true; - - $this->loop->addWriteStream($this->stream, array($this, 'handleWrite')); - } - - return !isset($this->data[$this->softLimit - 1]); - } - - public function end($data = null) - { - if (null !== $data) { - $this->write($data); - } - - $this->writable = false; - - // close immediately if buffer is already empty - // otherwise wait for buffer to flush first - if ($this->data === '') { - $this->close(); - } - } - - public function close() - { - if ($this->closed) { - return; - } - - if ($this->listening) { - $this->listening = false; - $this->loop->removeWriteStream($this->stream); - } - - $this->closed = true; - $this->writable = false; - $this->data = ''; - - $this->emit('close'); - $this->removeAllListeners(); - - if (\is_resource($this->stream)) { - \fclose($this->stream); - } - } - - /** @internal */ - public function handleWrite() - { - $error = null; - \set_error_handler(function ($_, $errstr) use (&$error) { - $error = $errstr; - }); - - if ($this->writeChunkSize === -1) { - $sent = \fwrite($this->stream, $this->data); - } else { - $sent = \fwrite($this->stream, $this->data, $this->writeChunkSize); - } - - \restore_error_handler(); - - // Only report errors if *nothing* could be sent and an error has been raised. - // Ignore non-fatal warnings if *some* data could be sent. - // Any hard (permanent) error will fail to send any data at all. - // Sending excessive amounts of data will only flush *some* data and then - // report a temporary error (EAGAIN) which we do not raise here in order - // to keep the stream open for further tries to write. - // Should this turn out to be a permanent error later, it will eventually - // send *nothing* and we can detect this. - if (($sent === 0 || $sent === false) && $error !== null) { - $this->emit('error', array(new \RuntimeException('Unable to write to stream: ' . $error))); - $this->close(); - - return; - } - - $exceeded = isset($this->data[$this->softLimit - 1]); - $this->data = (string) \substr($this->data, $sent); - - // buffer has been above limit and is now below limit - if ($exceeded && !isset($this->data[$this->softLimit - 1])) { - $this->emit('drain'); - } - - // buffer is now completely empty => stop trying to write - if ($this->data === '') { - // stop waiting for resource to be writable - if ($this->listening) { - $this->loop->removeWriteStream($this->stream); - $this->listening = false; - } - - // buffer is end()ing and now completely empty => close buffer - if (!$this->writable) { - $this->close(); - } - } - } -} diff --git a/v3_ci4/vendor/react/stream/src/WritableStreamInterface.php b/v3_ci4/vendor/react/stream/src/WritableStreamInterface.php deleted file mode 100644 index e262592..0000000 --- a/v3_ci4/vendor/react/stream/src/WritableStreamInterface.php +++ /dev/null @@ -1,347 +0,0 @@ -on('drain', function () use ($stream) { - * echo 'Stream is now ready to accept more data'; - * }); - * ``` - * - * This event SHOULD be emitted once every time the buffer became full - * previously and is now ready to accept more data. - * In other words, this event MAY be emitted any number of times, which may - * be zero times if the buffer never became full in the first place. - * This event SHOULD NOT be emitted if the buffer has not become full - * previously. - * - * This event is mostly used internally, see also `write()` for more details. - * - * pipe event: - * The `pipe` event will be emitted whenever a readable stream is `pipe()`d - * into this stream. - * The event receives a single `ReadableStreamInterface` argument for the - * source stream. - * - * ```php - * $stream->on('pipe', function (ReadableStreamInterface $source) use ($stream) { - * echo 'Now receiving piped data'; - * - * // explicitly close target if source emits an error - * $source->on('error', function () use ($stream) { - * $stream->close(); - * }); - * }); - * - * $source->pipe($stream); - * ``` - * - * This event MUST be emitted once for each readable stream that is - * successfully piped into this destination stream. - * In other words, this event MAY be emitted any number of times, which may - * be zero times if no stream is ever piped into this stream. - * This event MUST NOT be emitted if either the source is not readable - * (closed already) or this destination is not writable (closed already). - * - * This event is mostly used internally, see also `pipe()` for more details. - * - * error event: - * The `error` event will be emitted once a fatal error occurs, usually while - * trying to write to this stream. - * The event receives a single `Exception` argument for the error instance. - * - * ```php - * $stream->on('error', function (Exception $e) { - * echo 'Error: ' . $e->getMessage() . PHP_EOL; - * }); - * ``` - * - * This event SHOULD be emitted once the stream detects a fatal error, such - * as a fatal transmission error. - * It SHOULD NOT be emitted after a previous `error` or `close` event. - * It MUST NOT be emitted if this is not a fatal error condition, such as - * a temporary network issue that did not cause any data to be lost. - * - * After the stream errors, it MUST close the stream and SHOULD thus be - * followed by a `close` event and then switch to non-writable mode, see - * also `close()` and `isWritable()`. - * - * Many common streams (such as a TCP/IP connection or a file-based stream) - * only deal with data transmission and may choose - * to only emit this for a fatal transmission error once and will then - * close (terminate) the stream in response. - * - * If this stream is a `DuplexStreamInterface`, you should also notice - * how the readable side of the stream also implements an `error` event. - * In other words, an error may occur while either reading or writing the - * stream which should result in the same error processing. - * - * close event: - * The `close` event will be emitted once the stream closes (terminates). - * - * ```php - * $stream->on('close', function () { - * echo 'CLOSED'; - * }); - * ``` - * - * This event SHOULD be emitted once or never at all, depending on whether - * the stream ever terminates. - * It SHOULD NOT be emitted after a previous `close` event. - * - * After the stream is closed, it MUST switch to non-writable mode, - * see also `isWritable()`. - * - * This event SHOULD be emitted whenever the stream closes, irrespective of - * whether this happens implicitly due to an unrecoverable error or - * explicitly when either side closes the stream. - * - * Many common streams (such as a TCP/IP connection or a file-based stream) - * will likely choose to emit this event after flushing the buffer from - * the `end()` method, after receiving a *successful* `end` event or after - * a fatal transmission `error` event. - * - * If this stream is a `DuplexStreamInterface`, you should also notice - * how the readable side of the stream also implements a `close` event. - * In other words, after receiving this event, the stream MUST switch into - * non-writable AND non-readable mode, see also `isReadable()`. - * Note that this event should not be confused with the `end` event. - * - * The event callback functions MUST be a valid `callable` that obeys strict - * parameter definitions and MUST accept event parameters exactly as documented. - * The event callback functions MUST NOT throw an `Exception`. - * The return value of the event callback functions will be ignored and has no - * effect, so for performance reasons you're recommended to not return any - * excessive data structures. - * - * Every implementation of this interface MUST follow these event semantics in - * order to be considered a well-behaving stream. - * - * > Note that higher-level implementations of this interface may choose to - * define additional events with dedicated semantics not defined as part of - * this low-level stream specification. Conformance with these event semantics - * is out of scope for this interface, so you may also have to refer to the - * documentation of such a higher-level implementation. - * - * @see EventEmitterInterface - * @see DuplexStreamInterface - */ -interface WritableStreamInterface extends EventEmitterInterface -{ - /** - * Checks whether this stream is in a writable state (not closed already). - * - * This method can be used to check if the stream still accepts writing - * any data or if it is ended or closed already. - * Writing any data to a non-writable stream is a NO-OP: - * - * ```php - * assert($stream->isWritable() === false); - * - * $stream->write('end'); // NO-OP - * $stream->end('end'); // NO-OP - * ``` - * - * A successfully opened stream always MUST start in writable mode. - * - * Once the stream ends or closes, it MUST switch to non-writable mode. - * This can happen any time, explicitly through `end()` or `close()` or - * implicitly due to a remote close or an unrecoverable transmission error. - * Once a stream has switched to non-writable mode, it MUST NOT transition - * back to writable mode. - * - * If this stream is a `DuplexStreamInterface`, you should also notice - * how the readable side of the stream also implements an `isReadable()` - * method. Unless this is a half-open duplex stream, they SHOULD usually - * have the same return value. - * - * @return bool - */ - public function isWritable(); - - /** - * Write some data into the stream. - * - * A successful write MUST be confirmed with a boolean `true`, which means - * that either the data was written (flushed) immediately or is buffered and - * scheduled for a future write. Note that this interface gives you no - * control over explicitly flushing the buffered data, as finding the - * appropriate time for this is beyond the scope of this interface and left - * up to the implementation of this interface. - * - * Many common streams (such as a TCP/IP connection or file-based stream) - * may choose to buffer all given data and schedule a future flush by using - * an underlying EventLoop to check when the resource is actually writable. - * - * If a stream cannot handle writing (or flushing) the data, it SHOULD emit - * an `error` event and MAY `close()` the stream if it can not recover from - * this error. - * - * If the internal buffer is full after adding `$data`, then `write()` - * SHOULD return `false`, indicating that the caller should stop sending - * data until the buffer drains. - * The stream SHOULD send a `drain` event once the buffer is ready to accept - * more data. - * - * Similarly, if the stream is not writable (already in a closed state) - * it MUST NOT process the given `$data` and SHOULD return `false`, - * indicating that the caller should stop sending data. - * - * The given `$data` argument MAY be of mixed type, but it's usually - * recommended it SHOULD be a `string` value or MAY use a type that allows - * representation as a `string` for maximum compatibility. - * - * Many common streams (such as a TCP/IP connection or a file-based stream) - * will only accept the raw (binary) payload data that is transferred over - * the wire as chunks of `string` values. - * - * Due to the stream-based nature of this, the sender may send any number - * of chunks with varying sizes. There are no guarantees that these chunks - * will be received with the exact same framing the sender intended to send. - * In other words, many lower-level protocols (such as TCP/IP) transfer the - * data in chunks that may be anywhere between single-byte values to several - * dozens of kilobytes. You may want to apply a higher-level protocol to - * these low-level data chunks in order to achieve proper message framing. - * - * @param mixed|string $data - * @return bool - */ - public function write($data); - - /** - * Successfully ends the stream (after optionally sending some final data). - * - * This method can be used to successfully end the stream, i.e. close - * the stream after sending out all data that is currently buffered. - * - * ```php - * $stream->write('hello'); - * $stream->write('world'); - * $stream->end(); - * ``` - * - * If there's no data currently buffered and nothing to be flushed, then - * this method MAY `close()` the stream immediately. - * - * If there's still data in the buffer that needs to be flushed first, then - * this method SHOULD try to write out this data and only then `close()` - * the stream. - * Once the stream is closed, it SHOULD emit a `close` event. - * - * Note that this interface gives you no control over explicitly flushing - * the buffered data, as finding the appropriate time for this is beyond the - * scope of this interface and left up to the implementation of this - * interface. - * - * Many common streams (such as a TCP/IP connection or file-based stream) - * may choose to buffer all given data and schedule a future flush by using - * an underlying EventLoop to check when the resource is actually writable. - * - * You can optionally pass some final data that is written to the stream - * before ending the stream. If a non-`null` value is given as `$data`, then - * this method will behave just like calling `write($data)` before ending - * with no data. - * - * ```php - * // shorter version - * $stream->end('bye'); - * - * // same as longer version - * $stream->write('bye'); - * $stream->end(); - * ``` - * - * After calling this method, the stream MUST switch into a non-writable - * mode, see also `isWritable()`. - * This means that no further writes are possible, so any additional - * `write()` or `end()` calls have no effect. - * - * ```php - * $stream->end(); - * assert($stream->isWritable() === false); - * - * $stream->write('nope'); // NO-OP - * $stream->end(); // NO-OP - * ``` - * - * If this stream is a `DuplexStreamInterface`, calling this method SHOULD - * also end its readable side, unless the stream supports half-open mode. - * In other words, after calling this method, these streams SHOULD switch - * into non-writable AND non-readable mode, see also `isReadable()`. - * This implies that in this case, the stream SHOULD NOT emit any `data` - * or `end` events anymore. - * Streams MAY choose to use the `pause()` method logic for this, but - * special care may have to be taken to ensure a following call to the - * `resume()` method SHOULD NOT continue emitting readable events. - * - * Note that this method should not be confused with the `close()` method. - * - * @param mixed|string|null $data - * @return void - */ - public function end($data = null); - - /** - * Closes the stream (forcefully). - * - * This method can be used to forcefully close the stream, i.e. close - * the stream without waiting for any buffered data to be flushed. - * If there's still data in the buffer, this data SHOULD be discarded. - * - * ```php - * $stream->close(); - * ``` - * - * Once the stream is closed, it SHOULD emit a `close` event. - * Note that this event SHOULD NOT be emitted more than once, in particular - * if this method is called multiple times. - * - * After calling this method, the stream MUST switch into a non-writable - * mode, see also `isWritable()`. - * This means that no further writes are possible, so any additional - * `write()` or `end()` calls have no effect. - * - * ```php - * $stream->close(); - * assert($stream->isWritable() === false); - * - * $stream->write('nope'); // NO-OP - * $stream->end(); // NO-OP - * ``` - * - * Note that this method should not be confused with the `end()` method. - * Unlike the `end()` method, this method does not take care of any existing - * buffers and simply discards any buffer contents. - * Likewise, this method may also be called after calling `end()` on a - * stream in order to stop waiting for the stream to flush its final data. - * - * ```php - * $stream->end(); - * Loop::addTimer(1.0, function () use ($stream) { - * $stream->close(); - * }); - * ``` - * - * If this stream is a `DuplexStreamInterface`, you should also notice - * how the readable side of the stream also implements a `close()` method. - * In other words, after calling this method, the stream MUST switch into - * non-writable AND non-readable mode, see also `isReadable()`. - * - * @return void - * @see ReadableStreamInterface::close() - */ - public function close(); -} diff --git a/v3_ci4/vendor/sebastian/cli-parser/ChangeLog.md b/v3_ci4/vendor/sebastian/cli-parser/ChangeLog.md deleted file mode 100644 index 29582e9..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/ChangeLog.md +++ /dev/null @@ -1,51 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [3.0.2] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [3.0.1] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [3.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [2.0.1] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [2.0.0] - 2023-02-03 - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4, and PHP 8.0 - -## [1.0.1] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [1.0.0] - 2020-08-12 - -* Initial release - -[3.0.2]: https://github.com/sebastianbergmann/cli-parser/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/cli-parser/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/cli-parser/compare/2.0...3.0.0 -[2.0.1]: https://github.com/sebastianbergmann/cli-parser/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/cli-parser/compare/1.0.1...2.0.0 -[1.0.1]: https://github.com/sebastianbergmann/cli-parser/compare/1.0.0...1.0.1 -[1.0.0]: https://github.com/sebastianbergmann/cli-parser/compare/bb7bb3297957927962b0a3335befe7b66f7462e9...1.0.0 diff --git a/v3_ci4/vendor/sebastian/cli-parser/LICENSE b/v3_ci4/vendor/sebastian/cli-parser/LICENSE deleted file mode 100644 index edaedf6..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2020-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/cli-parser/README.md b/v3_ci4/vendor/sebastian/cli-parser/README.md deleted file mode 100644 index 205cfe1..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/README.md +++ /dev/null @@ -1,21 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/cli-parser/v/stable.png)](https://packagist.org/packages/sebastian/cli-parser) -[![CI Status](https://github.com/sebastianbergmann/cli-parser/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/cli-parser/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/cli-parser/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/cli-parser) - -# sebastian/cli-parser - -Library for parsing `$_SERVER['argv']`, extracted from `phpunit/phpunit`. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/cli-parser -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/cli-parser -``` diff --git a/v3_ci4/vendor/sebastian/cli-parser/SECURITY.md b/v3_ci4/vendor/sebastian/cli-parser/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/cli-parser/composer.json b/v3_ci4/vendor/sebastian/cli-parser/composer.json deleted file mode 100644 index efb0df1..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/composer.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "sebastian/cli-parser", - "description": "Library for parsing CLI options", - "type": "library", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy" - }, - "prefer-stable": true, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/cli-parser/src/Parser.php b/v3_ci4/vendor/sebastian/cli-parser/src/Parser.php deleted file mode 100644 index 324d7e7..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/src/Parser.php +++ /dev/null @@ -1,211 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function array_map; -use function array_merge; -use function array_shift; -use function array_slice; -use function assert; -use function count; -use function current; -use function explode; -use function is_array; -use function is_int; -use function is_string; -use function key; -use function next; -use function preg_replace; -use function reset; -use function sort; -use function str_ends_with; -use function str_starts_with; -use function strlen; -use function strstr; -use function substr; - -final class Parser -{ - /** - * @param list $argv - * @param list $longOptions - * - * @throws AmbiguousOptionException - * @throws OptionDoesNotAllowArgumentException - * @throws RequiredOptionArgumentMissingException - * @throws UnknownOptionException - * - * @return array{0: list, 1: list} - */ - public function parse(array $argv, string $shortOptions, ?array $longOptions = null): array - { - if (empty($argv)) { - return [[], []]; - } - - $options = []; - $nonOptions = []; - - if ($longOptions !== null) { - sort($longOptions); - } - - if (isset($argv[0][0]) && $argv[0][0] !== '-') { - array_shift($argv); - } - - reset($argv); - - $argv = array_map('trim', $argv); - - while (false !== $arg = current($argv)) { - $i = key($argv); - - assert(is_int($i)); - - next($argv); - - if ($arg === '') { - continue; - } - - if ($arg === '--') { - $nonOptions = array_merge($nonOptions, array_slice($argv, $i + 1)); - - break; - } - - if ($arg[0] !== '-' || (strlen($arg) > 1 && $arg[1] === '-' && $longOptions === null)) { - $nonOptions[] = $arg; - - continue; - } - - if (strlen($arg) > 1 && $arg[1] === '-' && is_array($longOptions)) { - $this->parseLongOption( - substr($arg, 2), - $longOptions, - $options, - $argv, - ); - - continue; - } - - $this->parseShortOption( - substr($arg, 1), - $shortOptions, - $options, - $argv, - ); - } - - return [$options, $nonOptions]; - } - - /** - * @param list $options - * @param list $argv - * - * @throws RequiredOptionArgumentMissingException - */ - private function parseShortOption(string $argument, string $shortOptions, array &$options, array &$argv): void - { - $argumentLength = strlen($argument); - - for ($i = 0; $i < $argumentLength; $i++) { - $option = $argument[$i]; - $optionArgument = null; - - if ($argument[$i] === ':' || ($spec = strstr($shortOptions, $option)) === false) { - throw new UnknownOptionException('-' . $option); - } - - if (strlen($spec) > 1 && $spec[1] === ':') { - if ($i + 1 < $argumentLength) { - $options[] = [$option, substr($argument, $i + 1)]; - - break; - } - - if (!(strlen($spec) > 2 && $spec[2] === ':')) { - $optionArgument = current($argv); - - if ($optionArgument === false) { - throw new RequiredOptionArgumentMissingException('-' . $option); - } - - assert(is_string($optionArgument)); - - next($argv); - } - } - - $options[] = [$option, $optionArgument]; - } - } - - /** - * @param list $longOptions - * @param list $options - * @param list $argv - * - * @throws AmbiguousOptionException - * @throws OptionDoesNotAllowArgumentException - * @throws RequiredOptionArgumentMissingException - * @throws UnknownOptionException - */ - private function parseLongOption(string $argument, array $longOptions, array &$options, array &$argv): void - { - $count = count($longOptions); - $list = explode('=', $argument); - $option = $list[0]; - $optionArgument = null; - - if (count($list) > 1) { - $optionArgument = $list[1]; - } - - $optionLength = strlen($option); - - foreach ($longOptions as $i => $longOption) { - $opt_start = substr($longOption, 0, $optionLength); - - if ($opt_start !== $option) { - continue; - } - - $opt_rest = substr($longOption, $optionLength); - - if ($opt_rest !== '' && $i + 1 < $count && $option[0] !== '=' && str_starts_with($longOptions[$i + 1], $option)) { - throw new AmbiguousOptionException('--' . $option); - } - - if (str_ends_with($longOption, '=')) { - if (!str_ends_with($longOption, '==') && !strlen((string) $optionArgument)) { - if (false === $optionArgument = current($argv)) { - throw new RequiredOptionArgumentMissingException('--' . $option); - } - - next($argv); - } - } elseif ($optionArgument !== null) { - throw new OptionDoesNotAllowArgumentException('--' . $option); - } - - $fullOption = '--' . preg_replace('/={1,2}$/', '', $longOption); - $options[] = [$fullOption, $optionArgument]; - - return; - } - - throw new UnknownOptionException('--' . $option); - } -} diff --git a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php b/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php deleted file mode 100644 index 99eb625..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function sprintf; -use RuntimeException; - -final class AmbiguousOptionException extends RuntimeException implements Exception -{ - public function __construct(string $option) - { - parent::__construct( - sprintf( - 'Option "%s" is ambiguous', - $option, - ), - ); - } -} diff --git a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/Exception.php b/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/Exception.php deleted file mode 100644 index f35ad24..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/Exception.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use Throwable; - -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php b/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php deleted file mode 100644 index 7fea616..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function sprintf; -use RuntimeException; - -final class OptionDoesNotAllowArgumentException extends RuntimeException implements Exception -{ - public function __construct(string $option) - { - parent::__construct( - sprintf( - 'Option "%s" does not allow an argument', - $option, - ), - ); - } -} diff --git a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php b/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php deleted file mode 100644 index 9add49a..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function sprintf; -use RuntimeException; - -final class RequiredOptionArgumentMissingException extends RuntimeException implements Exception -{ - public function __construct(string $option) - { - parent::__construct( - sprintf( - 'Required argument for option "%s" is missing', - $option, - ), - ); - } -} diff --git a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php b/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php deleted file mode 100644 index 560c7ad..0000000 --- a/v3_ci4/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CliParser; - -use function sprintf; -use RuntimeException; - -final class UnknownOptionException extends RuntimeException implements Exception -{ - public function __construct(string $option) - { - parent::__construct( - sprintf( - 'Unknown option "%s"', - $option, - ), - ); - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md b/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md deleted file mode 100644 index 2169ce6..0000000 --- a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md +++ /dev/null @@ -1,59 +0,0 @@ -# Change Log - -All notable changes to `sebastianbergmann/code-unit-reverse-lookup` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.0.1] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [4.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [3.0.0] - 2023-02-03 - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4, and PHP 8.0 - -## [2.0.3] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [2.0.2] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [2.0.1] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -## 2.0.0 - 2020-02-07 - -### Removed - -* This component is no longer supported on PHP 5.6, PHP 7.0, PHP 7.1, and PHP 7.2 - -## 1.0.0 - 2016-02-13 - -### Added - -* Initial release - -[4.0.1]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/3.0...4.0.0 -[3.0.0]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.3...3.0.0 -[2.0.3]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.2...2.0.3 -[2.0.2]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/1.0.0...2.0.0 diff --git a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/LICENSE b/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/LICENSE deleted file mode 100644 index 86c455d..0000000 --- a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2016-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/README.md b/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/README.md deleted file mode 100644 index 331c238..0000000 --- a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/README.md +++ /dev/null @@ -1,21 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/code-unit-reverse-lookup/v/stable.png)](https://packagist.org/packages/sebastian/code-unit-reverse-lookup) -[![CI Status](https://github.com/sebastianbergmann/code-unit-reverse-lookup/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/code-unit-reverse-lookup/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/code-unit-reverse-lookup/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/code-unit-reverse-lookup) - -# sebastian/code-unit-reverse-lookup - -Looks up which function or method a line of code belongs to. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/code-unit-reverse-lookup -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/code-unit-reverse-lookup -``` diff --git a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/SECURITY.md b/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/composer.json b/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/composer.json deleted file mode 100644 index bf05a9e..0000000 --- a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/composer.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "sebastian/code-unit-reverse-lookup", - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy" - }, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "prefer-stable": true, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php b/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php deleted file mode 100644 index c4780ef..0000000 --- a/v3_ci4/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php +++ /dev/null @@ -1,132 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnitReverseLookup; - -use function array_merge; -use function assert; -use function class_exists; -use function function_exists; -use function get_declared_classes; -use function get_declared_traits; -use function get_defined_functions; -use function is_array; -use function is_int; -use function is_string; -use function range; -use function trait_exists; -use ReflectionClass; -use ReflectionFunction; -use ReflectionMethod; - -final class Wizard -{ - /** - * @var array> - */ - private array $lookupTable = []; - - /** - * @var array - */ - private array $processedClasses = []; - - /** - * @var array - */ - private array $processedFunctions = []; - - public function lookup(string $filename, int $lineNumber): string - { - if (!isset($this->lookupTable[$filename][$lineNumber])) { - $this->updateLookupTable(); - } - - if (isset($this->lookupTable[$filename][$lineNumber])) { - return $this->lookupTable[$filename][$lineNumber]; - } - - return $filename . ':' . $lineNumber; - } - - private function updateLookupTable(): void - { - $this->processClassesAndTraits(); - $this->processFunctions(); - } - - private function processClassesAndTraits(): void - { - $classes = get_declared_classes(); - $traits = get_declared_traits(); - - assert(is_array($traits)); - - foreach (array_merge($classes, $traits) as $classOrTrait) { - assert(class_exists($classOrTrait) || trait_exists($classOrTrait)); - - if (isset($this->processedClasses[$classOrTrait])) { - continue; - } - - foreach ((new ReflectionClass($classOrTrait))->getMethods() as $method) { - $this->processFunctionOrMethod($method); - } - - $this->processedClasses[$classOrTrait] = true; - } - } - - private function processFunctions(): void - { - foreach (get_defined_functions()['user'] as $function) { - assert(function_exists($function)); - - if (isset($this->processedFunctions[$function])) { - continue; - } - - $this->processFunctionOrMethod(new ReflectionFunction($function)); - - $this->processedFunctions[$function] = true; - } - } - - private function processFunctionOrMethod(ReflectionFunction|ReflectionMethod $functionOrMethod): void - { - if ($functionOrMethod->isInternal()) { - return; - } - - $name = $functionOrMethod->getName(); - - if ($functionOrMethod instanceof ReflectionMethod) { - $name = $functionOrMethod->getDeclaringClass()->getName() . '::' . $name; - } - - $fileName = $functionOrMethod->getFileName(); - - assert(is_string($fileName)); - - if (!isset($this->lookupTable[$fileName])) { - $this->lookupTable[$fileName] = []; - } - - $startLine = $functionOrMethod->getStartLine(); - $endLine = $functionOrMethod->getEndLine(); - - assert(is_int($startLine)); - assert(is_int($endLine)); - assert($endLine >= $startLine); - - foreach (range($startLine, $endLine) as $line) { - $this->lookupTable[$fileName][$line] = $name; - } - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/ChangeLog.md b/v3_ci4/vendor/sebastian/code-unit/ChangeLog.md deleted file mode 100644 index 45ad421..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/ChangeLog.md +++ /dev/null @@ -1,106 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [3.0.3] - 2025-03-19 - -### Fixed - -* [#9](https://github.com/sebastianbergmann/code-unit/issues/9): `Mapper::stringToCodeUnits('Foo::bar')` does not find method `Foo::bar` when a function named `\bar` is defined - -## [3.0.2] - 2024-12-12 - -### Fixed - -* [#8](https://github.com/sebastianbergmann/code-unit/issues/8): `Mapper::stringToCodeUnits()` does not consider "inheritance" between traits - -## [3.0.1] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [3.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [2.0.0] - 2023-02-03 - -### Added - -* Added `SebastianBergmann\CodeUnit\FileUnit` value object that represents a sourcecode file - -### Removed - -* `SebastianBergmann\CodeUnit\CodeUnitCollection::fromArray()` has been removed -* `SebastianBergmann\CodeUnit\Mapper::stringToCodeUnits()` no longer supports `ClassName<*>` -* This component is no longer supported on PHP 7.3, PHP 7.4, and PHP 8.0 - -## [1.0.8] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\CodeUnit\Exception` now correctly extends `\Throwable` - -## [1.0.7] - 2020-10-02 - -### Fixed - -* `SebastianBergmann\CodeUnit\Mapper::stringToCodeUnits()` no longer attempts to create `CodeUnit` objects for code units that are not declared in userland - -## [1.0.6] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [1.0.5] - 2020-06-26 - -### Fixed - -* [#3](https://github.com/sebastianbergmann/code-unit/issues/3): Regression in 1.0.4 - -## [1.0.4] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [1.0.3] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -## [1.0.2] - 2020-04-30 - -### Fixed - -* `Mapper::stringToCodeUnits()` raised the wrong exception for `Class::method` when a class named `Class` exists but does not have a method named `method` - -## [1.0.1] - 2020-04-27 - -### Fixed - -* [#2](https://github.com/sebastianbergmann/code-unit/issues/2): `Mapper::stringToCodeUnits()` breaks when `ClassName` is used for class that extends built-in class - -## [1.0.0] - 2020-03-30 - -* Initial release - -[3.0.3]: https://github.com/sebastianbergmann/code-unit/compare/3.0.2...3.0.3 -[3.0.2]: https://github.com/sebastianbergmann/code-unit/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/code-unit/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/code-unit/compare/2.0...3.0.0 -[2.0.0]: https://github.com/sebastianbergmann/code-unit/compare/1.0.8...2.0.0 -[1.0.8]: https://github.com/sebastianbergmann/code-unit/compare/1.0.7...1.0.8 -[1.0.7]: https://github.com/sebastianbergmann/code-unit/compare/1.0.6...1.0.7 -[1.0.6]: https://github.com/sebastianbergmann/code-unit/compare/1.0.5...1.0.6 -[1.0.5]: https://github.com/sebastianbergmann/code-unit/compare/1.0.4...1.0.5 -[1.0.4]: https://github.com/sebastianbergmann/code-unit/compare/1.0.3...1.0.4 -[1.0.3]: https://github.com/sebastianbergmann/code-unit/compare/1.0.2...1.0.3 -[1.0.2]: https://github.com/sebastianbergmann/code-unit/compare/1.0.1...1.0.2 -[1.0.1]: https://github.com/sebastianbergmann/code-unit/compare/1.0.0...1.0.1 -[1.0.0]: https://github.com/sebastianbergmann/code-unit/compare/530c3900e5db9bcb8516da545bef0d62536cedaa...1.0.0 diff --git a/v3_ci4/vendor/sebastian/code-unit/LICENSE b/v3_ci4/vendor/sebastian/code-unit/LICENSE deleted file mode 100644 index 0d534da..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2020-2025, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/code-unit/README.md b/v3_ci4/vendor/sebastian/code-unit/README.md deleted file mode 100644 index f5b8a49..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/README.md +++ /dev/null @@ -1,24 +0,0 @@ -[![No Maintenance Intended](https://unmaintained.tech/badge.svg)](https://unmaintained.tech/) -[![Latest Stable Version](https://poser.pugx.org/sebastian/code-unit/v)](https://packagist.org/packages/sebastian/code-unit) -[![CI Status](https://github.com/sebastianbergmann/code-unit/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/code-unit/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/code-unit/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/code-unit) - -# sebastian/code-unit - -Collection of value objects that represent the PHP code units. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/code-unit -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/code-unit -``` - -Please note that this is now a [low maintenance project](https://github.com/sebastianbergmann/code-unit/blob/main/.github/CONTRIBUTING.md#low-maintenance-project). diff --git a/v3_ci4/vendor/sebastian/code-unit/SECURITY.md b/v3_ci4/vendor/sebastian/code-unit/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/code-unit/composer.json b/v3_ci4/vendor/sebastian/code-unit/composer.json deleted file mode 100644 index 29859cb..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/composer.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "sebastian/code-unit", - "description": "Collection of value objects that represent the PHP code units", - "type": "library", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "security": "https://github.com/sebastianbergmann/code-unit/security/policy" - }, - "prefer-stable": true, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.5" - }, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_fixture" - ], - "files": [ - "tests/_fixture/file_with_multiple_code_units.php", - "tests/_fixture/function.php", - "tests/_fixture/issue_9.php" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/ClassMethodUnit.php b/v3_ci4/vendor/sebastian/code-unit/src/ClassMethodUnit.php deleted file mode 100644 index 082c01e..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/ClassMethodUnit.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -/** - * @immutable - */ -final readonly class ClassMethodUnit extends CodeUnit -{ - public function isClassMethod(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/ClassUnit.php b/v3_ci4/vendor/sebastian/code-unit/src/ClassUnit.php deleted file mode 100644 index d9bc49d..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/ClassUnit.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -/** - * @immutable - */ -final readonly class ClassUnit extends CodeUnit -{ - public function isClass(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/CodeUnit.php b/v3_ci4/vendor/sebastian/code-unit/src/CodeUnit.php deleted file mode 100644 index e4e3b43..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/CodeUnit.php +++ /dev/null @@ -1,528 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -use function assert; -use function count; -use function file; -use function file_exists; -use function is_readable; -use function range; -use function sprintf; -use ReflectionClass; -use ReflectionFunction; -use ReflectionMethod; - -/** - * @immutable - */ -abstract readonly class CodeUnit -{ - /** - * @var non-empty-string - */ - private string $name; - - /** - * @var non-empty-string - */ - private string $sourceFileName; - - /** - * @var list - */ - private array $sourceLines; - - /** - * @param class-string $className - * - * @throws InvalidCodeUnitException - * @throws ReflectionException - */ - public static function forClass(string $className): ClassUnit - { - self::ensureUserDefinedClass($className); - - $reflector = new ReflectionClass($className); - - return new ClassUnit( - $className, - // @phpstan-ignore argument.type - $reflector->getFileName(), - range( - // @phpstan-ignore argument.type - $reflector->getStartLine(), - // @phpstan-ignore argument.type - $reflector->getEndLine(), - ), - ); - } - - /** - * @param class-string $className - * - * @throws InvalidCodeUnitException - * @throws ReflectionException - */ - public static function forClassMethod(string $className, string $methodName): ClassMethodUnit - { - self::ensureUserDefinedClass($className); - - $reflector = self::reflectorForClassMethod($className, $methodName); - - return new ClassMethodUnit( - $className . '::' . $methodName, - // @phpstan-ignore argument.type - $reflector->getFileName(), - range( - // @phpstan-ignore argument.type - $reflector->getStartLine(), - // @phpstan-ignore argument.type - $reflector->getEndLine(), - ), - ); - } - - /** - * @param non-empty-string $path - * - * @throws InvalidCodeUnitException - */ - public static function forFileWithAbsolutePath(string $path): FileUnit - { - self::ensureFileExistsAndIsReadable($path); - - $lines = file($path); - - assert($lines !== false); - - return new FileUnit( - $path, - $path, - range( - 1, - count($lines), - ), - ); - } - - /** - * @param class-string $interfaceName - * - * @throws InvalidCodeUnitException - * @throws ReflectionException - */ - public static function forInterface(string $interfaceName): InterfaceUnit - { - self::ensureUserDefinedInterface($interfaceName); - - $reflector = new ReflectionClass($interfaceName); - - return new InterfaceUnit( - $interfaceName, - // @phpstan-ignore argument.type - $reflector->getFileName(), - range( - // @phpstan-ignore argument.type - $reflector->getStartLine(), - // @phpstan-ignore argument.type - $reflector->getEndLine(), - ), - ); - } - - /** - * @param class-string $interfaceName - * - * @throws InvalidCodeUnitException - * @throws ReflectionException - */ - public static function forInterfaceMethod(string $interfaceName, string $methodName): InterfaceMethodUnit - { - self::ensureUserDefinedInterface($interfaceName); - - $reflector = self::reflectorForClassMethod($interfaceName, $methodName); - - return new InterfaceMethodUnit( - $interfaceName . '::' . $methodName, - // @phpstan-ignore argument.type - $reflector->getFileName(), - range( - // @phpstan-ignore argument.type - $reflector->getStartLine(), - // @phpstan-ignore argument.type - $reflector->getEndLine(), - ), - ); - } - - /** - * @param class-string $traitName - * - * @throws InvalidCodeUnitException - * @throws ReflectionException - */ - public static function forTrait(string $traitName): TraitUnit - { - self::ensureUserDefinedTrait($traitName); - - $reflector = new ReflectionClass($traitName); - - return new TraitUnit( - $traitName, - // @phpstan-ignore argument.type - $reflector->getFileName(), - range( - // @phpstan-ignore argument.type - $reflector->getStartLine(), - // @phpstan-ignore argument.type - $reflector->getEndLine(), - ), - ); - } - - /** - * @param class-string $traitName - * - * @throws InvalidCodeUnitException - * @throws ReflectionException - */ - public static function forTraitMethod(string $traitName, string $methodName): TraitMethodUnit - { - self::ensureUserDefinedTrait($traitName); - - $reflector = self::reflectorForClassMethod($traitName, $methodName); - - return new TraitMethodUnit( - $traitName . '::' . $methodName, - // @phpstan-ignore argument.type - $reflector->getFileName(), - range( - // @phpstan-ignore argument.type - $reflector->getStartLine(), - // @phpstan-ignore argument.type - $reflector->getEndLine(), - ), - ); - } - - /** - * @param callable-string $functionName - * - * @throws InvalidCodeUnitException - * @throws ReflectionException - */ - public static function forFunction(string $functionName): FunctionUnit - { - $reflector = self::reflectorForFunction($functionName); - - if (!$reflector->isUserDefined()) { - throw new InvalidCodeUnitException( - sprintf( - '"%s" is not a user-defined function', - $functionName, - ), - ); - } - - return new FunctionUnit( - // @phpstan-ignore argument.type - $functionName, - // @phpstan-ignore argument.type - $reflector->getFileName(), - range( - // @phpstan-ignore argument.type - $reflector->getStartLine(), - // @phpstan-ignore argument.type - $reflector->getEndLine(), - ), - ); - } - - /** - * @param non-empty-string $name - * @param non-empty-string $sourceFileName - * @param list $sourceLines - */ - private function __construct(string $name, string $sourceFileName, array $sourceLines) - { - $this->name = $name; - $this->sourceFileName = $sourceFileName; - $this->sourceLines = $sourceLines; - } - - /** - * @return non-empty-string - */ - public function name(): string - { - return $this->name; - } - - /** - * @return non-empty-string - */ - public function sourceFileName(): string - { - return $this->sourceFileName; - } - - /** - * @return list - */ - public function sourceLines(): array - { - return $this->sourceLines; - } - - /** - * @phpstan-assert-if-true ClassUnit $this - */ - public function isClass(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true ClassMethodUnit $this - */ - public function isClassMethod(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true InterfaceUnit $this - */ - public function isInterface(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true InterfaceMethodUnit $this - */ - public function isInterfaceMethod(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true TraitUnit $this - */ - public function isTrait(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true TraitMethodUnit $this - */ - public function isTraitMethod(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true FunctionUnit $this - */ - public function isFunction(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true FileUnit $this - */ - public function isFile(): bool - { - return false; - } - - /** - * @param non-empty-string $path - * - * @throws InvalidCodeUnitException - */ - private static function ensureFileExistsAndIsReadable(string $path): void - { - if (!(file_exists($path) && is_readable($path))) { - throw new InvalidCodeUnitException( - sprintf( - 'File "%s" does not exist or is not readable', - $path, - ), - ); - } - } - - /** - * @param class-string $className - * - * @throws InvalidCodeUnitException - */ - private static function ensureUserDefinedClass(string $className): void - { - try { - $reflector = new ReflectionClass($className); - - if ($reflector->isInterface()) { - throw new InvalidCodeUnitException( - sprintf( - '"%s" is an interface and not a class', - $className, - ), - ); - } - - if ($reflector->isTrait()) { - throw new InvalidCodeUnitException( - sprintf( - '"%s" is a trait and not a class', - $className, - ), - ); - } - - if (!$reflector->isUserDefined()) { - throw new InvalidCodeUnitException( - sprintf( - '"%s" is not a user-defined class', - $className, - ), - ); - } - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - - /** - * @param class-string $interfaceName - * - * @throws InvalidCodeUnitException - */ - private static function ensureUserDefinedInterface(string $interfaceName): void - { - try { - $reflector = new ReflectionClass($interfaceName); - - if (!$reflector->isInterface()) { - throw new InvalidCodeUnitException( - sprintf( - '"%s" is not an interface', - $interfaceName, - ), - ); - } - - if (!$reflector->isUserDefined()) { - throw new InvalidCodeUnitException( - sprintf( - '"%s" is not a user-defined interface', - $interfaceName, - ), - ); - } - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - - /** - * @param class-string $traitName - * - * @throws InvalidCodeUnitException - */ - private static function ensureUserDefinedTrait(string $traitName): void - { - try { - $reflector = new ReflectionClass($traitName); - - if (!$reflector->isTrait()) { - throw new InvalidCodeUnitException( - sprintf( - '"%s" is not a trait', - $traitName, - ), - ); - } - - // @codeCoverageIgnoreStart - if (!$reflector->isUserDefined()) { - throw new InvalidCodeUnitException( - sprintf( - '"%s" is not a user-defined trait', - $traitName, - ), - ); - } - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - - /** - * @param class-string $className - * - * @throws ReflectionException - */ - private static function reflectorForClassMethod(string $className, string $methodName): ReflectionMethod - { - try { - return new ReflectionMethod($className, $methodName); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } - - /** - * @param callable-string $functionName - * - * @throws ReflectionException - */ - private static function reflectorForFunction(string $functionName): ReflectionFunction - { - try { - return new ReflectionFunction($functionName); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new ReflectionException( - $e->getMessage(), - $e->getCode(), - $e, - ); - } - // @codeCoverageIgnoreEnd - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/CodeUnitCollection.php b/v3_ci4/vendor/sebastian/code-unit/src/CodeUnitCollection.php deleted file mode 100644 index 5c92542..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/CodeUnitCollection.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -use function array_merge; -use function count; -use Countable; -use IteratorAggregate; - -/** - * @template-implements IteratorAggregate - * - * @immutable - */ -final readonly class CodeUnitCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $codeUnits; - - public static function fromList(CodeUnit ...$codeUnits): self - { - // @phpstan-ignore argument.type - return new self($codeUnits); - } - - /** - * @param list $codeUnits - */ - private function __construct(array $codeUnits) - { - $this->codeUnits = $codeUnits; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->codeUnits; - } - - public function getIterator(): CodeUnitCollectionIterator - { - return new CodeUnitCollectionIterator($this); - } - - public function count(): int - { - return count($this->codeUnits); - } - - public function isEmpty(): bool - { - return $this->codeUnits === []; - } - - public function mergeWith(self $other): self - { - return new self( - array_merge( - $this->asArray(), - $other->asArray(), - ), - ); - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php b/v3_ci4/vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php deleted file mode 100644 index c63fe08..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -use Iterator; - -/** - * @template-implements Iterator - */ -final class CodeUnitCollectionIterator implements Iterator -{ - /** - * @var list - */ - private array $codeUnits; - private int $position = 0; - - public function __construct(CodeUnitCollection $collection) - { - $this->codeUnits = $collection->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return isset($this->codeUnits[$this->position]); - } - - public function key(): int - { - return $this->position; - } - - public function current(): CodeUnit - { - return $this->codeUnits[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/FileUnit.php b/v3_ci4/vendor/sebastian/code-unit/src/FileUnit.php deleted file mode 100644 index cea630c..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/FileUnit.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -/** - * @immutable - */ -final readonly class FileUnit extends CodeUnit -{ - public function isFile(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/FunctionUnit.php b/v3_ci4/vendor/sebastian/code-unit/src/FunctionUnit.php deleted file mode 100644 index 203ded3..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/FunctionUnit.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -/** - * @immutable - */ -final readonly class FunctionUnit extends CodeUnit -{ - public function isFunction(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/InterfaceMethodUnit.php b/v3_ci4/vendor/sebastian/code-unit/src/InterfaceMethodUnit.php deleted file mode 100644 index 4322f86..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/InterfaceMethodUnit.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -/** - * @immutable - */ -final readonly class InterfaceMethodUnit extends CodeUnit -{ - public function isInterfaceMethod(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/InterfaceUnit.php b/v3_ci4/vendor/sebastian/code-unit/src/InterfaceUnit.php deleted file mode 100644 index 33b3d7e..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/InterfaceUnit.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -/** - * @immutable - */ -final readonly class InterfaceUnit extends CodeUnit -{ - public function isInterface(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/Mapper.php b/v3_ci4/vendor/sebastian/code-unit/src/Mapper.php deleted file mode 100644 index e2f99cd..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/Mapper.php +++ /dev/null @@ -1,202 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -use function array_keys; -use function array_merge; -use function array_unique; -use function array_values; -use function class_exists; -use function explode; -use function function_exists; -use function interface_exists; -use function ksort; -use function method_exists; -use function sort; -use function sprintf; -use function str_contains; -use function trait_exists; -use ReflectionClass; -use ReflectionFunction; -use ReflectionMethod; - -final class Mapper -{ - /** - * @return array> - */ - public function codeUnitsToSourceLines(CodeUnitCollection $codeUnits): array - { - $result = []; - - foreach ($codeUnits as $codeUnit) { - $sourceFileName = $codeUnit->sourceFileName(); - - if (!isset($result[$sourceFileName])) { - $result[$sourceFileName] = []; - } - - $result[$sourceFileName] = array_merge($result[$sourceFileName], $codeUnit->sourceLines()); - } - - foreach (array_keys($result) as $sourceFileName) { - $result[$sourceFileName] = array_values(array_unique($result[$sourceFileName])); - - sort($result[$sourceFileName]); - } - - ksort($result); - - return $result; - } - - /** - * @throws InvalidCodeUnitException - * @throws ReflectionException - */ - public function stringToCodeUnits(string $unit): CodeUnitCollection - { - if (str_contains($unit, '::')) { - [$firstPart, $secondPart] = explode('::', $unit); - - if ($this->isUserDefinedMethod($firstPart, $secondPart)) { - return CodeUnitCollection::fromList(CodeUnit::forClassMethod($firstPart, $secondPart)); - } - - if ($this->isUserDefinedFunction($secondPart)) { - return CodeUnitCollection::fromList(CodeUnit::forFunction($secondPart)); - } - - if ($this->isUserDefinedInterface($firstPart)) { - return CodeUnitCollection::fromList(CodeUnit::forInterfaceMethod($firstPart, $secondPart)); - } - - if ($this->isUserDefinedTrait($firstPart)) { - return CodeUnitCollection::fromList(CodeUnit::forTraitMethod($firstPart, $secondPart)); - } - } else { - if ($this->isUserDefinedClass($unit)) { - return CodeUnitCollection::fromList( - ...array_merge( - [CodeUnit::forClass($unit)], - $this->traits(new ReflectionClass($unit)), - ), - ); - } - - if ($this->isUserDefinedInterface($unit)) { - return CodeUnitCollection::fromList(CodeUnit::forInterface($unit)); - } - - if ($this->isUserDefinedTrait($unit)) { - return CodeUnitCollection::fromList(CodeUnit::forTrait($unit)); - } - - if ($this->isUserDefinedFunction($unit)) { - return CodeUnitCollection::fromList(CodeUnit::forFunction($unit)); - } - } - - throw new InvalidCodeUnitException( - sprintf( - '"%s" is not a valid code unit', - $unit, - ), - ); - } - - /** - * @phpstan-assert-if-true callable-string $functionName - */ - private function isUserDefinedFunction(string $functionName): bool - { - if (!function_exists($functionName)) { - return false; - } - - return (new ReflectionFunction($functionName))->isUserDefined(); - } - - /** - * @phpstan-assert-if-true class-string $className - */ - private function isUserDefinedClass(string $className): bool - { - if (!class_exists($className)) { - return false; - } - - return (new ReflectionClass($className))->isUserDefined(); - } - - /** - * @phpstan-assert-if-true interface-string $interfaceName - */ - private function isUserDefinedInterface(string $interfaceName): bool - { - if (!interface_exists($interfaceName)) { - return false; - } - - return (new ReflectionClass($interfaceName))->isUserDefined(); - } - - /** - * @phpstan-assert-if-true trait-string $traitName - */ - private function isUserDefinedTrait(string $traitName): bool - { - if (!trait_exists($traitName)) { - return false; - } - - return (new ReflectionClass($traitName))->isUserDefined(); - } - - /** - * @phpstan-assert-if-true class-string $className - */ - private function isUserDefinedMethod(string $className, string $methodName): bool - { - if (!class_exists($className)) { - return false; - } - - if (!method_exists($className, $methodName)) { - return false; - } - - return (new ReflectionMethod($className, $methodName))->isUserDefined(); - } - - /** - * @param ReflectionClass $class - * - * @return list - */ - private function traits(ReflectionClass $class): array - { - $result = []; - - foreach ($class->getTraits() as $trait) { - if (!$trait->isUserDefined()) { - // @codeCoverageIgnoreStart - continue; - // @codeCoverageIgnoreEnd - } - - $result[] = CodeUnit::forTrait($trait->getName()); - - $result = array_merge($result, $this->traits($trait)); - } - - return $result; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/TraitMethodUnit.php b/v3_ci4/vendor/sebastian/code-unit/src/TraitMethodUnit.php deleted file mode 100644 index b96c620..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/TraitMethodUnit.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -/** - * @immutable - */ -final readonly class TraitMethodUnit extends CodeUnit -{ - public function isTraitMethod(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/TraitUnit.php b/v3_ci4/vendor/sebastian/code-unit/src/TraitUnit.php deleted file mode 100644 index baaf17c..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/TraitUnit.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -/** - * @immutable - */ -final readonly class TraitUnit extends CodeUnit -{ - public function isTrait(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/exceptions/Exception.php b/v3_ci4/vendor/sebastian/code-unit/src/exceptions/Exception.php deleted file mode 100644 index 74d0eee..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/exceptions/Exception.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -use Throwable; - -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php b/v3_ci4/vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php deleted file mode 100644 index 60a3da8..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -use RuntimeException; - -final class InvalidCodeUnitException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/exceptions/NoTraitException.php b/v3_ci4/vendor/sebastian/code-unit/src/exceptions/NoTraitException.php deleted file mode 100644 index e9b9b9c..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/exceptions/NoTraitException.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -use RuntimeException; - -final class NoTraitException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/code-unit/src/exceptions/ReflectionException.php b/v3_ci4/vendor/sebastian/code-unit/src/exceptions/ReflectionException.php deleted file mode 100644 index 2320127..0000000 --- a/v3_ci4/vendor/sebastian/code-unit/src/exceptions/ReflectionException.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeUnit; - -use RuntimeException; - -final class ReflectionException extends RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/comparator/ChangeLog.md b/v3_ci4/vendor/sebastian/comparator/ChangeLog.md deleted file mode 100644 index 86015fb..0000000 --- a/v3_ci4/vendor/sebastian/comparator/ChangeLog.md +++ /dev/null @@ -1,270 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [6.3.3] - 2026-01-24 - -### Changed - -* [#134](https://github.com/sebastianbergmann/comparator/issues/134): Suppress warning introduced in PHP 8.5 - -## [6.3.2] - 2025-08-10 - -### Changed - -* Do not use `SplObjectStorage` methods that will be deprecated in PHP 8.5 - -## [6.3.1] - 2025-03-07 - -### Fixed - -* [#122](https://github.com/sebastianbergmann/comparator/issues/122): `INF` is considered equal to `-INF` - -## [6.3.0] - 2025-01-06 - -### Added - -* [#121](https://github.com/sebastianbergmann/comparator/pull/121): Support for `BcMath\Number` objects - -## [6.2.1] - 2024-10-31 - -### Fixed - -* [#119](https://github.com/sebastianbergmann/comparator/pull/119): `Uninitialized string offset -1` warning - -## [6.2.0] - 2024-10-30 - -### Changed - -* [#117](https://github.com/sebastianbergmann/comparator/pull/117): Remove common prefixes and suffixes from actual and expected single-line strings - -## [6.1.1] - 2024-10-18 - -### Fixed - -* Reverted [#113](https://github.com/sebastianbergmann/comparator/pull/113) as it broke backward compatibility - -## [6.1.0] - 2024-09-11 - -### Added - -* Specialized comparator for enumerations - -## [6.0.2] - 2024-08-12 - -### Fixed - -* [#112](https://github.com/sebastianbergmann/comparator/issues/112): Arrays with different keys and the same values are considered equal in canonicalize mode - -## [6.0.1] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [6.0.0] - 2024-02-02 - -### Removed - -* Removed support for PHP 8.1 - -## [5.0.4] - 2025-09-07 - -### Changed - -* Do not use `SplObjectStorage` methods that will be deprecated in PHP 8.5 - -## [5.0.3] - 2024-10-18 - -### Fixed - -* Reverted [#113](https://github.com/sebastianbergmann/comparator/pull/113) as it broke backward compatibility - -## [5.0.2] - 2024-08-12 - -### Fixed - -* [#112](https://github.com/sebastianbergmann/comparator/issues/112): Arrays with different keys and the same values are considered equal in canonicalize mode - -## [5.0.1] - 2023-08-14 - -### Fixed - -* `MockObjectComparator` only works on instances of `PHPUnit\Framework\MockObject\MockObject`, but not on instances of `PHPUnit\Framework\MockObject\Stub` -* `MockObjectComparator` only ignores the `$__phpunit_invocationMocker` property, but not other properties with names prefixed with `__phpunit_` - -## [5.0.0] - 2023-02-03 - -### Changed - -* Methods now have parameter and return type declarations -* `Comparator::$factory` is now private, use `Comparator::factory()` instead -* `ComparisonFailure`, `DOMNodeComparator`, `DateTimeComparator`, `ExceptionComparator`, `MockObjectComparator`, `NumericComparator`, `ResourceComparator`, `SplObjectStorageComparator`, and `TypeComparator` are now `final` -* `ScalarComparator` and `DOMNodeComparator` now use `mb_strtolower($string, 'UTF-8')` instead of `strtolower($string)` - -### Removed - -* Removed `$identical` parameter from `ComparisonFailure::__construct()` -* Removed `Comparator::$exporter` -* Removed support for PHP 7.3, PHP 7.4, and PHP 8.0 - -## [4.0.8] - 2022-09-14 - -### Fixed - -* [#102](https://github.com/sebastianbergmann/comparator/pull/102): Fix `float` comparison precision - -## [4.0.7] - 2022-09-14 - -### Fixed - -* [#99](https://github.com/sebastianbergmann/comparator/pull/99): Fix weak comparison between `'0'` and `false` - -## [4.0.6] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\Comparator\Exception` now correctly extends `\Throwable` - -## [4.0.5] - 2020-09-30 - -### Fixed - -* [#89](https://github.com/sebastianbergmann/comparator/pull/89): Handle PHP 8 `ValueError` - -## [4.0.4] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [4.0.3] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [4.0.2] - 2020-06-15 - -### Fixed - -* [#85](https://github.com/sebastianbergmann/comparator/issues/85): Version 4.0.1 breaks backward compatibility - -## [4.0.1] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -## [4.0.0] - 2020-02-07 - -### Removed - -* Removed support for PHP 7.1 and PHP 7.2 - -## [3.0.5] - 2022-09-14 - -### Fixed - -* [#102](https://github.com/sebastianbergmann/comparator/pull/102): Fix `float` comparison precision - -## [3.0.4] - 2022-09-14 - -### Fixed - -* [#99](https://github.com/sebastianbergmann/comparator/pull/99): Fix weak comparison between `'0'` and `false` - -## [3.0.3] - 2020-11-30 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.1` to `>=7.1` - -## [3.0.2] - 2018-07-12 - -### Changed - -* By default, `MockObjectComparator` is now tried before all other (default) comparators - -## [3.0.1] - 2018-06-14 - -### Fixed - -* [#53](https://github.com/sebastianbergmann/comparator/pull/53): `DOMNodeComparator` ignores `$ignoreCase` parameter -* [#58](https://github.com/sebastianbergmann/comparator/pull/58): `ScalarComparator` does not handle extremely ugly string comparison edge cases - -## [3.0.0] - 2018-04-18 - -### Fixed - -* [#48](https://github.com/sebastianbergmann/comparator/issues/48): `DateTimeComparator` does not support fractional second deltas - -### Removed - -* Removed support for PHP 7.0 - -## [2.1.3] - 2018-02-01 - -### Changed - -* This component is now compatible with version 3 of `sebastian/diff` - -## [2.1.2] - 2018-01-12 - -### Fixed - -* Fix comparison of `DateTimeImmutable` objects - -## [2.1.1] - 2017-12-22 - -### Fixed - -* [phpunit/#2923](https://github.com/sebastianbergmann/phpunit/issues/2923): Unexpected failed date matching - -## [2.1.0] - 2017-11-03 - -### Added - -* Added `SebastianBergmann\Comparator\Factory::reset()` to unregister all non-default comparators -* Added support for `phpunit/phpunit-mock-objects` version `^5.0` - -[6.3.3]: https://github.com/sebastianbergmann/comparator/compare/6.3.2...6.3.3 -[6.3.2]: https://github.com/sebastianbergmann/comparator/compare/6.3.1...6.3.2 -[6.3.1]: https://github.com/sebastianbergmann/comparator/compare/6.3.0...6.3.1 -[6.3.0]: https://github.com/sebastianbergmann/comparator/compare/6.2.1...6.3.0 -[6.2.1]: https://github.com/sebastianbergmann/comparator/compare/6.2.0...6.2.1 -[6.2.0]: https://github.com/sebastianbergmann/comparator/compare/6.1.1...6.2.0 -[6.1.1]: https://github.com/sebastianbergmann/comparator/compare/6.1.0...6.1.1 -[6.1.0]: https://github.com/sebastianbergmann/comparator/compare/6.0.2...6.1.0 -[6.0.2]: https://github.com/sebastianbergmann/comparator/compare/6.0.1...6.0.2 -[6.0.1]: https://github.com/sebastianbergmann/comparator/compare/6.0.0...6.0.1 -[6.0.0]: https://github.com/sebastianbergmann/comparator/compare/5.0...6.0.0 -[5.0.5]: https://github.com/sebastianbergmann/comparator/compare/5.0.4...5.0.5 -[5.0.4]: https://github.com/sebastianbergmann/comparator/compare/5.0.3...5.0.4 -[5.0.3]: https://github.com/sebastianbergmann/comparator/compare/5.0.2...5.0.3 -[5.0.2]: https://github.com/sebastianbergmann/comparator/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/comparator/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/comparator/compare/4.0...5.0.0 -[4.0.10]: https://github.com/sebastianbergmann/comparator/compare/4.0.9...4.0.10 -[4.0.9]: https://github.com/sebastianbergmann/comparator/compare/4.0.8...4.0.9 -[4.0.8]: https://github.com/sebastianbergmann/comparator/compare/4.0.7...4.0.8 -[4.0.7]: https://github.com/sebastianbergmann/comparator/compare/4.0.6...4.0.7 -[4.0.6]: https://github.com/sebastianbergmann/comparator/compare/4.0.5...4.0.6 -[4.0.5]: https://github.com/sebastianbergmann/comparator/compare/4.0.4...4.0.5 -[4.0.4]: https://github.com/sebastianbergmann/comparator/compare/4.0.3...4.0.4 -[4.0.3]: https://github.com/sebastianbergmann/comparator/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/sebastianbergmann/comparator/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/comparator/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/comparator/compare/3.0...4.0.0 -[3.0.7]: https://github.com/sebastianbergmann/comparator/compare/3.0.6...3.0.7 -[3.0.6]: https://github.com/sebastianbergmann/comparator/compare/3.0.5...3.0.6 -[3.0.5]: https://github.com/sebastianbergmann/comparator/compare/3.0.4...3.0.5 -[3.0.4]: https://github.com/sebastianbergmann/comparator/compare/3.0.3...3.0.4 -[3.0.3]: https://github.com/sebastianbergmann/comparator/compare/3.0.2...3.0.3 -[3.0.2]: https://github.com/sebastianbergmann/comparator/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/comparator/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/comparator/compare/2.1.3...3.0.0 -[2.1.3]: https://github.com/sebastianbergmann/comparator/compare/2.1.2...2.1.3 -[2.1.2]: https://github.com/sebastianbergmann/comparator/compare/2.1.1...2.1.2 -[2.1.1]: https://github.com/sebastianbergmann/comparator/compare/2.1.0...2.1.1 -[2.1.0]: https://github.com/sebastianbergmann/comparator/compare/2.0.2...2.1.0 diff --git a/v3_ci4/vendor/sebastian/comparator/LICENSE b/v3_ci4/vendor/sebastian/comparator/LICENSE deleted file mode 100644 index c5268a9..0000000 --- a/v3_ci4/vendor/sebastian/comparator/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2002-2025, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/comparator/README.md b/v3_ci4/vendor/sebastian/comparator/README.md deleted file mode 100644 index 50971ad..0000000 --- a/v3_ci4/vendor/sebastian/comparator/README.md +++ /dev/null @@ -1,42 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/comparator/v)](https://packagist.org/packages/sebastian/comparator) -[![CI Status](https://github.com/sebastianbergmann/comparator/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/comparator/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/comparator/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/comparator) - -# sebastian/comparator - -This component provides the functionality to compare PHP values for equality. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/comparator -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/comparator -``` - -## Usage - -```php -getComparatorFor($date1, $date2); - -try { - $comparator->assertEquals($date1, $date2); - print "Dates match"; -} catch (ComparisonFailure $failure) { - print "Dates don't match"; -} -``` diff --git a/v3_ci4/vendor/sebastian/comparator/SECURITY.md b/v3_ci4/vendor/sebastian/comparator/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/comparator/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/comparator/composer.json b/v3_ci4/vendor/sebastian/comparator/composer.json deleted file mode 100644 index 12e2b7c..0000000 --- a/v3_ci4/vendor/sebastian/comparator/composer.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "sebastian/comparator", - "description": "Provides the functionality to compare PHP values for equality", - "keywords": ["comparator","compare","equality"], - "homepage": "https://github.com/sebastianbergmann/comparator", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy" - }, - "prefer-stable": true, - "require": { - "php": ">=8.2", - "sebastian/diff": "^6.0", - "sebastian/exporter": "^6.0", - "ext-dom": "*", - "ext-mbstring": "*" - }, - "suggest": { - "ext-bcmath": "For comparing BcMath\\Number objects" - }, - "require-dev": { - "phpunit/phpunit": "^11.4" - }, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_fixture" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "6.3-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/ArrayComparator.php b/v3_ci4/vendor/sebastian/comparator/src/ArrayComparator.php deleted file mode 100644 index 5af5a43..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/ArrayComparator.php +++ /dev/null @@ -1,131 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function array_key_exists; -use function assert; -use function is_array; -use function sort; -use function sprintf; -use function str_replace; -use function trim; -use SebastianBergmann\Exporter\Exporter; - -/** - * Arrays are equal if they contain the same key-value pairs. - * The order of the keys does not matter. - * The types of key-value pairs do not matter. - */ -class ArrayComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return is_array($expected) && is_array($actual); - } - - /** - * @param array $processed - * - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []): void - { - assert(is_array($expected)); - assert(is_array($actual)); - - if ($canonicalize) { - sort($expected); - sort($actual); - } - - $remaining = $actual; - $actualAsString = "Array (\n"; - $expectedAsString = "Array (\n"; - $equal = true; - $exporter = new Exporter; - - foreach ($expected as $key => $value) { - unset($remaining[$key]); - - if (!array_key_exists($key, $actual)) { - $expectedAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $exporter->shortenedExport($value), - ); - - $equal = false; - - continue; - } - - try { - $comparator = $this->factory()->getComparatorFor($value, $actual[$key]); - - /** @phpstan-ignore arguments.count */ - $comparator->assertEquals($value, $actual[$key], $delta, $canonicalize, $ignoreCase, $processed); - - $expectedAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $exporter->shortenedExport($value), - ); - - $actualAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $exporter->shortenedExport($actual[$key]), - ); - } catch (ComparisonFailure $e) { - $expectedAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $e->getExpectedAsString() ? $this->indent($e->getExpectedAsString()) : $exporter->shortenedExport($e->getExpected()), - ); - - $actualAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $e->getActualAsString() ? $this->indent($e->getActualAsString()) : $exporter->shortenedExport($e->getActual()), - ); - - $equal = false; - } - } - - foreach ($remaining as $key => $value) { - $actualAsString .= sprintf( - " %s => %s\n", - $exporter->export($key), - $exporter->shortenedExport($value), - ); - - $equal = false; - } - - $expectedAsString .= ')'; - $actualAsString .= ')'; - - if (!$equal) { - throw new ComparisonFailure( - $expected, - $actual, - $expectedAsString, - $actualAsString, - 'Failed asserting that two arrays are equal.', - ); - } - } - - private function indent(string $lines): string - { - return trim(str_replace("\n", "\n ", $lines)); - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/Comparator.php b/v3_ci4/vendor/sebastian/comparator/src/Comparator.php deleted file mode 100644 index 69347ef..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/Comparator.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -abstract class Comparator -{ - private Factory $factory; - - public function setFactory(Factory $factory): void - { - $this->factory = $factory; - } - - abstract public function accepts(mixed $expected, mixed $actual): bool; - - /** - * @throws ComparisonFailure - */ - abstract public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void; - - protected function factory(): Factory - { - return $this->factory; - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/ComparisonFailure.php b/v3_ci4/vendor/sebastian/comparator/src/ComparisonFailure.php deleted file mode 100644 index b5c2ac2..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/ComparisonFailure.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use RuntimeException; -use SebastianBergmann\Diff\Differ; -use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder; - -final class ComparisonFailure extends RuntimeException -{ - private mixed $expected; - private mixed $actual; - private string $expectedAsString; - private string $actualAsString; - - public function __construct(mixed $expected, mixed $actual, string $expectedAsString, string $actualAsString, string $message = '') - { - parent::__construct($message); - - $this->expected = $expected; - $this->actual = $actual; - $this->expectedAsString = $expectedAsString; - $this->actualAsString = $actualAsString; - } - - public function getActual(): mixed - { - return $this->actual; - } - - public function getExpected(): mixed - { - return $this->expected; - } - - public function getActualAsString(): string - { - return $this->actualAsString; - } - - public function getExpectedAsString(): string - { - return $this->expectedAsString; - } - - public function getDiff(): string - { - if (!$this->actualAsString && !$this->expectedAsString) { - return ''; - } - - $differ = new Differ(new UnifiedDiffOutputBuilder("\n--- Expected\n+++ Actual\n")); - - return $differ->diff($this->expectedAsString, $this->actualAsString); - } - - public function toString(): string - { - return $this->getMessage() . $this->getDiff(); - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/DOMNodeComparator.php b/v3_ci4/vendor/sebastian/comparator/src/DOMNodeComparator.php deleted file mode 100644 index 32232d0..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/DOMNodeComparator.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use function mb_strtolower; -use function sprintf; -use DOMDocument; -use DOMNode; -use ValueError; - -final class DOMNodeComparator extends ObjectComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return $expected instanceof DOMNode && $actual instanceof DOMNode; - } - - /** - * @param array $processed - * - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []): void - { - assert($expected instanceof DOMNode); - assert($actual instanceof DOMNode); - - $expectedAsString = $this->nodeToText($expected, true, $ignoreCase); - $actualAsString = $this->nodeToText($actual, true, $ignoreCase); - - if ($expectedAsString !== $actualAsString) { - $type = $expected instanceof DOMDocument ? 'documents' : 'nodes'; - - throw new ComparisonFailure( - $expected, - $actual, - $expectedAsString, - $actualAsString, - sprintf("Failed asserting that two DOM %s are equal.\n", $type), - ); - } - } - - /** - * Returns the normalized, whitespace-cleaned, and indented textual - * representation of a DOMNode. - */ - private function nodeToText(DOMNode $node, bool $canonicalize, bool $ignoreCase): string - { - if ($canonicalize) { - $document = new DOMDocument; - - try { - $c14n = $node->C14N(); - - assert(!empty($c14n)); - - @$document->loadXML($c14n); - } catch (ValueError) { - } - - $node = $document; - } - - if ($node instanceof DOMDocument) { - $document = $node; - } else { - $document = $node->ownerDocument; - } - - assert($document instanceof DOMDocument); - - $document->formatOutput = true; - $document->normalizeDocument(); - - if ($node instanceof DOMDocument) { - $text = $node->saveXML(); - } else { - $text = $document->saveXML($node); - } - - assert($text !== false); - - if ($ignoreCase) { - return mb_strtolower($text, 'UTF-8'); - } - - return $text; - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/DateTimeComparator.php b/v3_ci4/vendor/sebastian/comparator/src/DateTimeComparator.php deleted file mode 100644 index 60f3beb..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/DateTimeComparator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function abs; -use function assert; -use function floor; -use function sprintf; -use DateInterval; -use DateTime; -use DateTimeImmutable; -use DateTimeZone; - -final class DateTimeComparator extends ObjectComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return ($expected instanceof DateTime || $expected instanceof DateTimeImmutable) && - ($actual instanceof DateTime || $actual instanceof DateTimeImmutable); - } - - /** - * @param array $processed - * - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []): void - { - assert($expected instanceof DateTime || $expected instanceof DateTimeImmutable); - assert($actual instanceof DateTime || $actual instanceof DateTimeImmutable); - - $absDelta = abs($delta); - $delta = new DateInterval(sprintf('PT%dS', $absDelta)); - $delta->f = $absDelta - floor($absDelta); - - $actualClone = (clone $actual) - ->setTimezone(new DateTimeZone('UTC')); - - $expectedLower = (clone $expected) - ->setTimezone(new DateTimeZone('UTC')) - ->sub($delta); - - $expectedUpper = (clone $expected) - ->setTimezone(new DateTimeZone('UTC')) - ->add($delta); - - if ($actualClone < $expectedLower || $actualClone > $expectedUpper) { - throw new ComparisonFailure( - $expected, - $actual, - $expected->format('Y-m-d\TH:i:s.uO'), - $actual->format('Y-m-d\TH:i:s.uO'), - 'Failed asserting that two DateTime objects are equal.', - ); - } - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/EnumerationComparator.php b/v3_ci4/vendor/sebastian/comparator/src/EnumerationComparator.php deleted file mode 100644 index 2f0ed13..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/EnumerationComparator.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use function sprintf; -use UnitEnum; - -final class EnumerationComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return $expected instanceof UnitEnum && - $actual instanceof UnitEnum && - $expected::class === $actual::class; - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - assert($expected instanceof UnitEnum); - assert($actual instanceof UnitEnum); - - if ($expected === $actual) { - return; - } - - throw new ComparisonFailure( - $expected, - $actual, - '', - '', - sprintf( - 'Failed asserting that two values of enumeration %s are equal, %s does not match expected %s.', - $expected::class, - $actual->name, - $expected->name, - ), - ); - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/ExceptionComparator.php b/v3_ci4/vendor/sebastian/comparator/src/ExceptionComparator.php deleted file mode 100644 index 46c86ca..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/ExceptionComparator.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use Exception; - -/** - * Compares Exception instances for equality. - */ -final class ExceptionComparator extends ObjectComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return $expected instanceof Exception && $actual instanceof Exception; - } - - /** - * @return array - */ - protected function toArray(object $object): array - { - assert($object instanceof Exception); - - $array = parent::toArray($object); - - unset( - $array['file'], - $array['line'], - $array['trace'], - $array['string'], - $array['xdebug_message'], - ); - - return $array; - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/Factory.php b/v3_ci4/vendor/sebastian/comparator/src/Factory.php deleted file mode 100644 index 0a0d03f..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/Factory.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use const PHP_VERSION; -use function array_unshift; -use function extension_loaded; -use function version_compare; - -final class Factory -{ - private static ?Factory $instance = null; - - /** - * @var array - */ - private array $customComparators = []; - - /** - * @var list - */ - private array $defaultComparators = []; - - public static function getInstance(): self - { - if (self::$instance === null) { - self::$instance = new self; // @codeCoverageIgnore - } - - return self::$instance; - } - - public function __construct() - { - $this->registerDefaultComparators(); - } - - public function getComparatorFor(mixed $expected, mixed $actual): Comparator - { - foreach ($this->customComparators as $comparator) { - if ($comparator->accepts($expected, $actual)) { - return $comparator; - } - } - - foreach ($this->defaultComparators as $comparator) { - if ($comparator->accepts($expected, $actual)) { - return $comparator; - } - } - - throw new RuntimeException('No suitable Comparator implementation found'); - } - - /** - * Registers a new comparator. - * - * This comparator will be returned by getComparatorFor() if its accept() method - * returns TRUE for the compared values. It has higher priority than the - * existing comparators, meaning that its accept() method will be invoked - * before those of the other comparators. - */ - public function register(Comparator $comparator): void - { - array_unshift($this->customComparators, $comparator); - - $comparator->setFactory($this); - } - - /** - * Unregisters a comparator. - * - * This comparator will no longer be considered by getComparatorFor(). - */ - public function unregister(Comparator $comparator): void - { - foreach ($this->customComparators as $key => $_comparator) { - if ($comparator === $_comparator) { - unset($this->customComparators[$key]); - } - } - } - - public function reset(): void - { - $this->customComparators = []; - } - - private function registerDefaultComparators(): void - { - $this->registerDefaultComparator(new MockObjectComparator); - $this->registerDefaultComparator(new DateTimeComparator); - $this->registerDefaultComparator(new DOMNodeComparator); - $this->registerDefaultComparator(new SplObjectStorageComparator); - $this->registerDefaultComparator(new ExceptionComparator); - $this->registerDefaultComparator(new EnumerationComparator); - - if (extension_loaded('bcmath') && version_compare(PHP_VERSION, '8.4.0', '>=')) { - $this->registerDefaultComparator(new NumberComparator); - } - - $this->registerDefaultComparator(new ObjectComparator); - $this->registerDefaultComparator(new ResourceComparator); - $this->registerDefaultComparator(new ArrayComparator); - $this->registerDefaultComparator(new NumericComparator); - $this->registerDefaultComparator(new ScalarComparator); - $this->registerDefaultComparator(new TypeComparator); - } - - private function registerDefaultComparator(Comparator $comparator): void - { - $this->defaultComparators[] = $comparator; - - $comparator->setFactory($this); - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/MockObjectComparator.php b/v3_ci4/vendor/sebastian/comparator/src/MockObjectComparator.php deleted file mode 100644 index 819c4fe..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/MockObjectComparator.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function array_keys; -use function assert; -use function str_starts_with; -use PHPUnit\Framework\MockObject\Stub; - -/** - * Compares PHPUnit\Framework\MockObject\MockObject instances for equality. - */ -final class MockObjectComparator extends ObjectComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return $expected instanceof Stub && $actual instanceof Stub; - } - - /** - * @return array - */ - protected function toArray(object $object): array - { - assert($object instanceof Stub); - - $array = parent::toArray($object); - - foreach (array_keys($array) as $key) { - if (!str_starts_with($key, '__phpunit_')) { - continue; - } - - unset($array[$key]); - } - - return $array; - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/NumberComparator.php b/v3_ci4/vendor/sebastian/comparator/src/NumberComparator.php deleted file mode 100644 index 9d8389a..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/NumberComparator.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use function is_int; -use function is_numeric; -use function is_string; -use function max; -use function number_format; -use BcMath\Number; - -final class NumberComparator extends ObjectComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return ($expected instanceof Number || $actual instanceof Number) && - ($expected instanceof Number || is_int($expected) || is_string($expected) && is_numeric($expected)) && - ($actual instanceof Number || is_int($actual) || is_string($actual) && is_numeric($actual)); - } - - /** - * @param array $processed - * - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []): void - { - if (!$expected instanceof Number) { - assert(is_string($expected) || is_int($expected)); - - $expected = new Number($expected); - } - - if (!$actual instanceof Number) { - assert(is_string($actual) || is_int($actual)); - - $actual = new Number($actual); - } - - $deltaNumber = new Number(number_format($delta, max($expected->scale, $actual->scale))); - - if ($actual < $expected - $deltaNumber || $actual > $expected + $deltaNumber) { - throw new ComparisonFailure( - $expected, - $actual, - (string) $expected, - (string) $actual, - 'Failed asserting that two Number objects are equal.', - ); - } - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/NumericComparator.php b/v3_ci4/vendor/sebastian/comparator/src/NumericComparator.php deleted file mode 100644 index 8547ce5..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/NumericComparator.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function abs; -use function assert; -use function is_float; -use function is_infinite; -use function is_nan; -use function is_numeric; -use function is_string; -use function sprintf; -use SebastianBergmann\Exporter\Exporter; - -final class NumericComparator extends ScalarComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - // all numerical values, but not if both of them are strings - return is_numeric($expected) && is_numeric($actual) && - !(is_string($expected) && is_string($actual)); - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - assert(is_numeric($expected)); - assert(is_numeric($actual)); - - if ($this->isInfinite($expected) && $this->isInfinite($actual)) { - if ($expected < 0 && $actual < 0) { - return; - } - - if ($expected > 0 && $actual > 0) { - return; - } - } - - if (($this->isInfinite($actual) xor $this->isInfinite($expected)) || - ($this->isNan($actual) || $this->isNan($expected)) || - abs($actual - $expected) > $delta) { - $exporter = new Exporter; - - throw new ComparisonFailure( - $expected, - $actual, - '', - '', - sprintf( - 'Failed asserting that %s matches expected %s.', - $exporter->export($actual), - $exporter->export($expected), - ), - ); - } - } - - private function isInfinite(mixed $value): bool - { - return is_float($value) && is_infinite($value); - } - - private function isNan(mixed $value): bool - { - return is_float($value) && is_nan($value); - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/ObjectComparator.php b/v3_ci4/vendor/sebastian/comparator/src/ObjectComparator.php deleted file mode 100644 index fa08193..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/ObjectComparator.php +++ /dev/null @@ -1,93 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use function in_array; -use function is_object; -use function sprintf; -use function substr_replace; -use SebastianBergmann\Exporter\Exporter; - -class ObjectComparator extends ArrayComparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return is_object($expected) && is_object($actual); - } - - /** - * @param array $processed - * - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []): void - { - assert(is_object($expected)); - assert(is_object($actual)); - - if ($actual::class !== $expected::class) { - $exporter = new Exporter; - - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($expected), - $exporter->export($actual), - sprintf( - '%s is not instance of expected class "%s".', - $exporter->export($actual), - $expected::class, - ), - ); - } - - // don't compare twice to allow for cyclic dependencies - if (in_array([$actual, $expected], $processed, true) || - in_array([$expected, $actual], $processed, true)) { - return; - } - - $processed[] = [$actual, $expected]; - - // don't compare objects if they are identical - // this helps to avoid the error "maximum function nesting level reached" - // CAUTION: this conditional clause is not tested - if ($actual !== $expected) { - try { - parent::assertEquals( - $this->toArray($expected), - $this->toArray($actual), - $delta, - $canonicalize, - $ignoreCase, - $processed, - ); - } catch (ComparisonFailure $e) { - throw new ComparisonFailure( - $expected, - $actual, - // replace "Array" with "MyClass object" - substr_replace($e->getExpectedAsString(), $expected::class . ' Object', 0, 5), - substr_replace($e->getActualAsString(), $actual::class . ' Object', 0, 5), - 'Failed asserting that two objects are equal.', - ); - } - } - } - - /** - * @return array - */ - protected function toArray(object $object): array - { - return (new Exporter)->toArray($object); - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/ResourceComparator.php b/v3_ci4/vendor/sebastian/comparator/src/ResourceComparator.php deleted file mode 100644 index 1699562..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/ResourceComparator.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use function is_resource; -use SebastianBergmann\Exporter\Exporter; - -final class ResourceComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return is_resource($expected) && is_resource($actual); - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - assert(is_resource($expected)); - assert(is_resource($actual)); - - $exporter = new Exporter; - - if ($actual != $expected) { - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($expected), - $exporter->export($actual), - ); - } - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/ScalarComparator.php b/v3_ci4/vendor/sebastian/comparator/src/ScalarComparator.php deleted file mode 100644 index 1cf7d42..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/ScalarComparator.php +++ /dev/null @@ -1,158 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function is_bool; -use function is_object; -use function is_scalar; -use function is_string; -use function mb_strtolower; -use function method_exists; -use function sprintf; -use function strlen; -use function substr; -use SebastianBergmann\Exporter\Exporter; - -/** - * Compares scalar or NULL values for equality. - */ -class ScalarComparator extends Comparator -{ - private const OVERLONG_THRESHOLD = 40; - private const KEEP_CONTEXT_CHARS = 25; - - public function accepts(mixed $expected, mixed $actual): bool - { - return ((is_scalar($expected) xor null === $expected) && - (is_scalar($actual) xor null === $actual)) || - // allow comparison between strings and objects featuring __toString() - (is_string($expected) && is_object($actual) && method_exists($actual, '__toString')) || - (is_object($expected) && method_exists($expected, '__toString') && is_string($actual)); - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - $expectedToCompare = $expected; - $actualToCompare = $actual; - $exporter = new Exporter; - - // always compare as strings to avoid strange behaviour - // otherwise 0 == 'Foobar' - if ((is_string($expected) && !is_bool($actual)) || (is_string($actual) && !is_bool($expected))) { - /** @phpstan-ignore cast.string */ - $expectedToCompare = @(string) $expectedToCompare; - - /** @phpstan-ignore cast.string */ - $actualToCompare = @(string) $actualToCompare; - - if ($ignoreCase) { - $expectedToCompare = mb_strtolower($expectedToCompare, 'UTF-8'); - $actualToCompare = mb_strtolower($actualToCompare, 'UTF-8'); - } - } - - if ($expectedToCompare !== $actualToCompare && is_string($expected) && is_string($actual)) { - [$cutExpected, $cutActual] = self::removeOverlongCommonPrefix($expected, $actual); - [$cutExpected, $cutActual] = self::removeOverlongCommonSuffix($cutExpected, $cutActual); - - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($cutExpected), - $exporter->export($cutActual), - 'Failed asserting that two strings are equal.', - ); - } - - if ($expectedToCompare != $actualToCompare) { - throw new ComparisonFailure( - $expected, - $actual, - // no diff is required - '', - '', - sprintf( - 'Failed asserting that %s matches expected %s.', - $exporter->export($actual), - $exporter->export($expected), - ), - ); - } - } - - /** - * @return array{string, string} - */ - private static function removeOverlongCommonPrefix(string $string1, string $string2): array - { - $commonPrefix = self::findCommonPrefix($string1, $string2); - - if (strlen($commonPrefix) > self::OVERLONG_THRESHOLD) { - $string1 = '...' . substr($string1, strlen($commonPrefix) - self::KEEP_CONTEXT_CHARS); - $string2 = '...' . substr($string2, strlen($commonPrefix) - self::KEEP_CONTEXT_CHARS); - } - - return [$string1, $string2]; - } - - private static function findCommonPrefix(string $string1, string $string2): string - { - for ($i = 0; $i < strlen($string1); $i++) { - if (!isset($string2[$i]) || $string1[$i] != $string2[$i]) { - break; - } - } - - return substr($string1, 0, $i); - } - - /** - * @return array{string, string} - */ - private static function removeOverlongCommonSuffix(string $string1, string $string2): array - { - $commonSuffix = self::findCommonSuffix($string1, $string2); - - if (strlen($commonSuffix) > self::OVERLONG_THRESHOLD) { - $string1 = substr($string1, 0, -(strlen($commonSuffix) - self::KEEP_CONTEXT_CHARS)) . '...'; - $string2 = substr($string2, 0, -(strlen($commonSuffix) - self::KEEP_CONTEXT_CHARS)) . '...'; - } - - return [$string1, $string2]; - } - - private static function findCommonSuffix(string $string1, string $string2): string - { - if ($string1 === '' || $string2 === '') { - return ''; - } - - $lastCharIndex1 = strlen($string1) - 1; - $lastCharIndex2 = strlen($string2) - 1; - - if ($string1[$lastCharIndex1] != $string2[$lastCharIndex2]) { - return ''; - } - - while ( - $lastCharIndex1 > 0 && - $lastCharIndex2 > 0 && - $string1[$lastCharIndex1] == $string2[$lastCharIndex2] - ) { - $lastCharIndex1--; - $lastCharIndex2--; - } - - return substr($string1, $lastCharIndex1 - strlen($string1) + 1); - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/SplObjectStorageComparator.php b/v3_ci4/vendor/sebastian/comparator/src/SplObjectStorageComparator.php deleted file mode 100644 index ee37f4f..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/SplObjectStorageComparator.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function assert; -use SebastianBergmann\Exporter\Exporter; -use SplObjectStorage; - -final class SplObjectStorageComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return $expected instanceof SplObjectStorage && $actual instanceof SplObjectStorage; - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - assert($expected instanceof SplObjectStorage); - assert($actual instanceof SplObjectStorage); - - $exporter = new Exporter; - - foreach ($actual as $object) { - if (!$expected->offsetExists($object)) { - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($expected), - $exporter->export($actual), - 'Failed asserting that two objects are equal.', - ); - } - } - - foreach ($expected as $object) { - if (!$actual->offsetExists($object)) { - throw new ComparisonFailure( - $expected, - $actual, - $exporter->export($expected), - $exporter->export($actual), - 'Failed asserting that two objects are equal.', - ); - } - } - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/TypeComparator.php b/v3_ci4/vendor/sebastian/comparator/src/TypeComparator.php deleted file mode 100644 index 67994e9..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/TypeComparator.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use function gettype; -use function sprintf; -use SebastianBergmann\Exporter\Exporter; - -final class TypeComparator extends Comparator -{ - public function accepts(mixed $expected, mixed $actual): bool - { - return true; - } - - /** - * @throws ComparisonFailure - */ - public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false): void - { - if (gettype($expected) != gettype($actual)) { - throw new ComparisonFailure( - $expected, - $actual, - // we don't need a diff - '', - '', - sprintf( - '%s does not match expected type "%s".', - (new Exporter)->shortenedExport($actual), - gettype($expected), - ), - ); - } - } -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/exceptions/Exception.php b/v3_ci4/vendor/sebastian/comparator/src/exceptions/Exception.php deleted file mode 100644 index 8975aaf..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/exceptions/Exception.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -use Throwable; - -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/sebastian/comparator/src/exceptions/RuntimeException.php b/v3_ci4/vendor/sebastian/comparator/src/exceptions/RuntimeException.php deleted file mode 100644 index ca72608..0000000 --- a/v3_ci4/vendor/sebastian/comparator/src/exceptions/RuntimeException.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Comparator; - -final class RuntimeException extends \RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/complexity/ChangeLog.md b/v3_ci4/vendor/sebastian/complexity/ChangeLog.md deleted file mode 100644 index b71d4df..0000000 --- a/v3_ci4/vendor/sebastian/complexity/ChangeLog.md +++ /dev/null @@ -1,84 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [4.0.1] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [4.0.0] - 2024-02-02 - -### Removed - -* This component now requires PHP-Parser 5 -* This component is no longer supported on PHP 8.1 - -## [3.2.0] - 2023-12-21 - -### Added - -* `ComplexityCollection::sortByDescendingCyclomaticComplexity()` -* Support for `match` arms - -### Changed - -* This component is now compatible with `nikic/php-parser` 5.0 - -## [3.1.0] - 2023-09-28 - -### Added - -* `Complexity::isFunction()` and `Complexity::isMethod()` -* `ComplexityCollection::isFunction()` and `ComplexityCollection::isMethod()` -* `ComplexityCollection::mergeWith()` - -### Fixed - -* Anonymous classes are not processed correctly - -## [3.0.1] - 2023-08-31 - -### Fixed - -* [#7](https://github.com/sebastianbergmann/complexity/pull/7): `ComplexityCalculatingVisitor` tries to process interface methods - -## [3.0.0] - 2023-02-03 - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0 - -## [2.0.2] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\Complexity\Exception` now correctly extends `\Throwable` - -## [2.0.1] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [2.0.0] - 2020-07-25 - -### Removed - -* The `ParentConnectingVisitor` has been removed (it should have been marked as `@internal`) - -## [1.0.0] - 2020-07-22 - -* Initial release - -[4.0.1]: https://github.com/sebastianbergmann/complexity/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/complexity/compare/3.2...4.0.0 -[3.2.0]: https://github.com/sebastianbergmann/complexity/compare/3.1.0...3.2.0 -[3.1.0]: https://github.com/sebastianbergmann/complexity/compare/3.0.1...3.1.0 -[3.0.1]: https://github.com/sebastianbergmann/complexity/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/complexity/compare/2.0.2...3.0.0 -[2.0.2]: https://github.com/sebastianbergmann/complexity/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/sebastianbergmann/complexity/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/complexity/compare/1.0.0...2.0.0 -[1.0.0]: https://github.com/sebastianbergmann/complexity/compare/70ee0ad32d9e2be3f85beffa3e2eb474193f2487...1.0.0 diff --git a/v3_ci4/vendor/sebastian/complexity/LICENSE b/v3_ci4/vendor/sebastian/complexity/LICENSE deleted file mode 100644 index edaedf6..0000000 --- a/v3_ci4/vendor/sebastian/complexity/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2020-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/complexity/README.md b/v3_ci4/vendor/sebastian/complexity/README.md deleted file mode 100644 index 3c2e263..0000000 --- a/v3_ci4/vendor/sebastian/complexity/README.md +++ /dev/null @@ -1,21 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/complexity/v/stable.png)](https://packagist.org/packages/sebastian/complexity) -[![CI Status](https://github.com/sebastianbergmann/complexity/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/complexity/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/complexity/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/complexity) - -# sebastian/complexity - -Library for calculating the complexity of PHP code units. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/complexity -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/complexity -``` diff --git a/v3_ci4/vendor/sebastian/complexity/SECURITY.md b/v3_ci4/vendor/sebastian/complexity/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/complexity/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/complexity/composer.json b/v3_ci4/vendor/sebastian/complexity/composer.json deleted file mode 100644 index 55ebd47..0000000 --- a/v3_ci4/vendor/sebastian/complexity/composer.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "sebastian/complexity", - "description": "Library for calculating the complexity of PHP code units", - "type": "library", - "homepage": "https://github.com/sebastianbergmann/complexity", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy" - }, - "prefer-stable": true, - "require": { - "php": ">=8.2", - "nikic/php-parser": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/complexity/src/Calculator.php b/v3_ci4/vendor/sebastian/complexity/src/Calculator.php deleted file mode 100644 index 66af339..0000000 --- a/v3_ci4/vendor/sebastian/complexity/src/Calculator.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Complexity; - -use function assert; -use function file_exists; -use function file_get_contents; -use function is_readable; -use function is_string; -use PhpParser\Error; -use PhpParser\Node; -use PhpParser\NodeTraverser; -use PhpParser\NodeVisitor\NameResolver; -use PhpParser\NodeVisitor\ParentConnectingVisitor; -use PhpParser\ParserFactory; - -final class Calculator -{ - /** - * @param non-empty-string $sourceFile - * - * @throws RuntimeException - */ - public function calculateForSourceFile(string $sourceFile): ComplexityCollection - { - assert(file_exists($sourceFile)); - assert(is_readable($sourceFile)); - - $source = file_get_contents($sourceFile); - - assert(is_string($source)); - - return $this->calculateForSourceString($source); - } - - /** - * @throws RuntimeException - */ - public function calculateForSourceString(string $source): ComplexityCollection - { - try { - $nodes = (new ParserFactory)->createForHostVersion()->parse($source); - - assert($nodes !== null); - - return $this->calculateForAbstractSyntaxTree($nodes); - - // @codeCoverageIgnoreStart - } catch (Error $error) { - throw new RuntimeException( - $error->getMessage(), - $error->getCode(), - $error, - ); - } - // @codeCoverageIgnoreEnd - } - - /** - * @param Node[] $nodes - * - * @throws RuntimeException - */ - public function calculateForAbstractSyntaxTree(array $nodes): ComplexityCollection - { - $traverser = new NodeTraverser; - $complexityCalculatingVisitor = new ComplexityCalculatingVisitor(true); - - $traverser->addVisitor(new NameResolver); - $traverser->addVisitor(new ParentConnectingVisitor); - $traverser->addVisitor($complexityCalculatingVisitor); - - try { - /* @noinspection UnusedFunctionResultInspection */ - $traverser->traverse($nodes); - // @codeCoverageIgnoreStart - } catch (Error $error) { - throw new RuntimeException( - $error->getMessage(), - $error->getCode(), - $error, - ); - } - // @codeCoverageIgnoreEnd - - return $complexityCalculatingVisitor->result(); - } -} diff --git a/v3_ci4/vendor/sebastian/complexity/src/Complexity/Complexity.php b/v3_ci4/vendor/sebastian/complexity/src/Complexity/Complexity.php deleted file mode 100644 index 554a15d..0000000 --- a/v3_ci4/vendor/sebastian/complexity/src/Complexity/Complexity.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Complexity; - -use function str_contains; - -/** - * @immutable - */ -final readonly class Complexity -{ - /** - * @var non-empty-string - */ - private string $name; - - /** - * @var positive-int - */ - private int $cyclomaticComplexity; - - /** - * @param non-empty-string $name - * @param positive-int $cyclomaticComplexity - */ - public function __construct(string $name, int $cyclomaticComplexity) - { - $this->name = $name; - $this->cyclomaticComplexity = $cyclomaticComplexity; - } - - /** - * @return non-empty-string - */ - public function name(): string - { - return $this->name; - } - - /** - * @return positive-int - */ - public function cyclomaticComplexity(): int - { - return $this->cyclomaticComplexity; - } - - public function isFunction(): bool - { - return !$this->isMethod(); - } - - public function isMethod(): bool - { - return str_contains($this->name, '::'); - } -} diff --git a/v3_ci4/vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php b/v3_ci4/vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php deleted file mode 100644 index 99326c6..0000000 --- a/v3_ci4/vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php +++ /dev/null @@ -1,134 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Complexity; - -use function array_filter; -use function array_merge; -use function array_reverse; -use function array_values; -use function count; -use function usort; -use Countable; -use IteratorAggregate; - -/** - * @template-implements IteratorAggregate - * - * @psalm-immutable - */ -final readonly class ComplexityCollection implements Countable, IteratorAggregate -{ - /** - * @var list - */ - private array $items; - - public static function fromList(Complexity ...$items): self - { - return new self($items); - } - - /** - * @param list $items - */ - private function __construct(array $items) - { - $this->items = $items; - } - - /** - * @return list - */ - public function asArray(): array - { - return $this->items; - } - - public function getIterator(): ComplexityCollectionIterator - { - return new ComplexityCollectionIterator($this); - } - - /** - * @return non-negative-int - */ - public function count(): int - { - return count($this->items); - } - - public function isEmpty(): bool - { - return empty($this->items); - } - - /** - * @return non-negative-int - */ - public function cyclomaticComplexity(): int - { - $cyclomaticComplexity = 0; - - foreach ($this as $item) { - $cyclomaticComplexity += $item->cyclomaticComplexity(); - } - - return $cyclomaticComplexity; - } - - public function isFunction(): self - { - return new self( - array_values( - array_filter( - $this->items, - static fn (Complexity $complexity): bool => $complexity->isFunction(), - ), - ), - ); - } - - public function isMethod(): self - { - return new self( - array_values( - array_filter( - $this->items, - static fn (Complexity $complexity): bool => $complexity->isMethod(), - ), - ), - ); - } - - public function mergeWith(self $other): self - { - return new self( - array_merge( - $this->asArray(), - $other->asArray(), - ), - ); - } - - public function sortByDescendingCyclomaticComplexity(): self - { - $items = $this->items; - - usort( - $items, - static function (Complexity $a, Complexity $b): int - { - return $a->cyclomaticComplexity() <=> $b->cyclomaticComplexity(); - }, - ); - - return new self(array_reverse($items)); - } -} diff --git a/v3_ci4/vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php b/v3_ci4/vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php deleted file mode 100644 index 6415ce6..0000000 --- a/v3_ci4/vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Complexity; - -use Iterator; - -/** - * @template-implements Iterator - */ -final class ComplexityCollectionIterator implements Iterator -{ - /** - * @var list - */ - private readonly array $items; - private int $position = 0; - - public function __construct(ComplexityCollection $items) - { - $this->items = $items->asArray(); - } - - public function rewind(): void - { - $this->position = 0; - } - - public function valid(): bool - { - return isset($this->items[$this->position]); - } - - public function key(): int - { - return $this->position; - } - - public function current(): Complexity - { - return $this->items[$this->position]; - } - - public function next(): void - { - $this->position++; - } -} diff --git a/v3_ci4/vendor/sebastian/complexity/src/Exception/Exception.php b/v3_ci4/vendor/sebastian/complexity/src/Exception/Exception.php deleted file mode 100644 index 897ecdc..0000000 --- a/v3_ci4/vendor/sebastian/complexity/src/Exception/Exception.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Complexity; - -use Throwable; - -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/sebastian/complexity/src/Exception/RuntimeException.php b/v3_ci4/vendor/sebastian/complexity/src/Exception/RuntimeException.php deleted file mode 100644 index 6c68a6f..0000000 --- a/v3_ci4/vendor/sebastian/complexity/src/Exception/RuntimeException.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Complexity; - -final class RuntimeException extends \RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php b/v3_ci4/vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php deleted file mode 100644 index 1db93e2..0000000 --- a/v3_ci4/vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php +++ /dev/null @@ -1,133 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Complexity; - -use function assert; -use function is_array; -use PhpParser\Node; -use PhpParser\Node\Expr\New_; -use PhpParser\Node\Name; -use PhpParser\Node\Stmt; -use PhpParser\Node\Stmt\Class_; -use PhpParser\Node\Stmt\ClassMethod; -use PhpParser\Node\Stmt\Function_; -use PhpParser\Node\Stmt\Interface_; -use PhpParser\Node\Stmt\Trait_; -use PhpParser\NodeTraverser; -use PhpParser\NodeVisitor; -use PhpParser\NodeVisitorAbstract; - -final class ComplexityCalculatingVisitor extends NodeVisitorAbstract -{ - /** - * @var list - */ - private array $result = []; - private bool $shortCircuitTraversal; - - public function __construct(bool $shortCircuitTraversal) - { - $this->shortCircuitTraversal = $shortCircuitTraversal; - } - - public function enterNode(Node $node): ?int - { - if (!$node instanceof ClassMethod && !$node instanceof Function_) { - return null; - } - - if ($node instanceof ClassMethod) { - if ($node->getAttribute('parent') instanceof Interface_) { - return null; - } - - if ($node->isAbstract()) { - return null; - } - - $name = $this->classMethodName($node); - } else { - $name = $this->functionName($node); - } - - $statements = $node->getStmts(); - - assert(is_array($statements)); - - $this->result[] = new Complexity( - $name, - $this->cyclomaticComplexity($statements), - ); - - if ($this->shortCircuitTraversal) { - return NodeVisitor::DONT_TRAVERSE_CHILDREN; - } - - return null; - } - - public function result(): ComplexityCollection - { - return ComplexityCollection::fromList(...$this->result); - } - - /** - * @param Stmt[] $statements - * - * @return positive-int - */ - private function cyclomaticComplexity(array $statements): int - { - $traverser = new NodeTraverser; - - $cyclomaticComplexityCalculatingVisitor = new CyclomaticComplexityCalculatingVisitor; - - $traverser->addVisitor($cyclomaticComplexityCalculatingVisitor); - - /* @noinspection UnusedFunctionResultInspection */ - $traverser->traverse($statements); - - return $cyclomaticComplexityCalculatingVisitor->cyclomaticComplexity(); - } - - /** - * @return non-empty-string - */ - private function classMethodName(ClassMethod $node): string - { - $parent = $node->getAttribute('parent'); - - assert($parent instanceof Class_ || $parent instanceof Trait_); - - if ($parent->getAttribute('parent') instanceof New_) { - return 'anonymous class'; - } - - assert(isset($parent->namespacedName)); - assert($parent->namespacedName instanceof Name); - - return $parent->namespacedName->toString() . '::' . $node->name->toString(); - } - - /** - * @return non-empty-string - */ - private function functionName(Function_ $node): string - { - assert(isset($node->namespacedName)); - assert($node->namespacedName instanceof Name); - - $functionName = $node->namespacedName->toString(); - - assert($functionName !== ''); - - return $functionName; - } -} diff --git a/v3_ci4/vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php b/v3_ci4/vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php deleted file mode 100644 index 3e5d26d..0000000 --- a/v3_ci4/vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Complexity; - -use PhpParser\Node; -use PhpParser\Node\Expr\BinaryOp\BooleanAnd; -use PhpParser\Node\Expr\BinaryOp\BooleanOr; -use PhpParser\Node\Expr\BinaryOp\LogicalAnd; -use PhpParser\Node\Expr\BinaryOp\LogicalOr; -use PhpParser\Node\Expr\Ternary; -use PhpParser\Node\Stmt\Case_; -use PhpParser\Node\Stmt\Catch_; -use PhpParser\Node\Stmt\ElseIf_; -use PhpParser\Node\Stmt\For_; -use PhpParser\Node\Stmt\Foreach_; -use PhpParser\Node\Stmt\If_; -use PhpParser\Node\Stmt\While_; -use PhpParser\NodeVisitorAbstract; - -final class CyclomaticComplexityCalculatingVisitor extends NodeVisitorAbstract -{ - /** - * @var positive-int - */ - private int $cyclomaticComplexity = 1; - - public function enterNode(Node $node): void - { - switch ($node::class) { - case BooleanAnd::class: - case BooleanOr::class: - case Case_::class: - case Catch_::class: - case ElseIf_::class: - case For_::class: - case Foreach_::class: - case If_::class: - case LogicalAnd::class: - case LogicalOr::class: - case Node\MatchArm::class: - case Ternary::class: - case While_::class: - $this->cyclomaticComplexity++; - } - } - - /** - * @return positive-int - */ - public function cyclomaticComplexity(): int - { - return $this->cyclomaticComplexity; - } -} diff --git a/v3_ci4/vendor/sebastian/diff/ChangeLog.md b/v3_ci4/vendor/sebastian/diff/ChangeLog.md deleted file mode 100644 index b12b993..0000000 --- a/v3_ci4/vendor/sebastian/diff/ChangeLog.md +++ /dev/null @@ -1,172 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [6.0.2] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [6.0.1] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [6.0.0] - 2024-02-02 - -### Removed - -* `SebastianBergmann\Diff\Chunk::getStart()`, `SebastianBergmann\Diff\Chunk::getStartRange()`, `SebastianBergmann\Diff\Chunk::getEnd()`, `SebastianBergmann\Diff\Chunk::getEndRange()`, and `SebastianBergmann\Diff\Chunk::getLines()` -* `SebastianBergmann\Diff\Diff::getFrom()`, `SebastianBergmann\Diff\Diff::getTo()`, and `SebastianBergmann\Diff\Diff::getChunks()` -* `SebastianBergmann\Diff\Line::getContent()` and `SebastianBergmann\Diff\Diff::getType()` -* Removed support for PHP 8.1 - -## [5.1.1] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [5.1.0] - 2023-12-22 - -### Added - -* `SebastianBergmann\Diff\Chunk::start()`, `SebastianBergmann\Diff\Chunk::startRange()`, `SebastianBergmann\Diff\Chunk::end()`, `SebastianBergmann\Diff\Chunk::endRange()`, and `SebastianBergmann\Diff\Chunk::lines()` -* `SebastianBergmann\Diff\Diff::from()`, `SebastianBergmann\Diff\Diff::to()`, and `SebastianBergmann\Diff\Diff::chunks()` -* `SebastianBergmann\Diff\Line::content()` and `SebastianBergmann\Diff\Diff::type()` -* `SebastianBergmann\Diff\Line::isAdded()`,`SebastianBergmann\Diff\Line::isRemoved()`, and `SebastianBergmann\Diff\Line::isUnchanged()` - -### Changed - -* `SebastianBergmann\Diff\Diff` now implements `IteratorAggregate`, iterating over it yields the aggregated `SebastianBergmann\Diff\Chunk` objects -* `SebastianBergmann\Diff\Chunk` now implements `IteratorAggregate`, iterating over it yields the aggregated `SebastianBergmann\Diff\Line` objects - -### Deprecated - -* `SebastianBergmann\Diff\Chunk::getStart()`, `SebastianBergmann\Diff\Chunk::getStartRange()`, `SebastianBergmann\Diff\Chunk::getEnd()`, `SebastianBergmann\Diff\Chunk::getEndRange()`, and `SebastianBergmann\Diff\Chunk::getLines()` -* `SebastianBergmann\Diff\Diff::getFrom()`, `SebastianBergmann\Diff\Diff::getTo()`, and `SebastianBergmann\Diff\Diff::getChunks()` -* `SebastianBergmann\Diff\Line::getContent()` and `SebastianBergmann\Diff\Diff::getType()` - -## [5.0.3] - 2023-05-01 - -### Changed - -* [#119](https://github.com/sebastianbergmann/diff/pull/119): Improve performance of `TimeEfficientLongestCommonSubsequenceCalculator` - -## [5.0.2] - 2023-05-01 - -### Changed - -* [#118](https://github.com/sebastianbergmann/diff/pull/118): Improve performance of `MemoryEfficientLongestCommonSubsequenceCalculator` - -## [5.0.1] - 2023-03-23 - -### Fixed - -* [#115](https://github.com/sebastianbergmann/diff/pull/115): `Parser::parseFileDiff()` does not handle diffs correctly that only add lines or only remove lines - -## [5.0.0] - 2023-02-03 - -### Changed - -* Passing a `DiffOutputBuilderInterface` instance to `Differ::__construct()` is no longer optional - -### Removed - -* Removed support for PHP 7.3, PHP 7.4, and PHP 8.0 - -## [4.0.4] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\Diff\Exception` now correctly extends `\Throwable` - -## [4.0.3] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [4.0.2] - 2020-06-30 - -### Added - -* This component is now supported on PHP 8 - -## [4.0.1] - 2020-05-08 - -### Fixed - -* [#99](https://github.com/sebastianbergmann/diff/pull/99): Regression in unified diff output of identical strings - -## [4.0.0] - 2020-02-07 - -### Removed - -* Removed support for PHP 7.1 and PHP 7.2 - -## [3.0.2] - 2019-02-04 - -### Changed - -* `Chunk::setLines()` now ensures that the `$lines` array only contains `Line` objects - -## [3.0.1] - 2018-06-10 - -### Fixed - -* Removed `"minimum-stability": "dev",` from `composer.json` - -## [3.0.0] - 2018-02-01 - -* The `StrictUnifiedDiffOutputBuilder` implementation of the `DiffOutputBuilderInterface` was added - -### Changed - -* The default `DiffOutputBuilderInterface` implementation now generates context lines (unchanged lines) - -### Removed - -* Removed support for PHP 7.0 - -### Fixed - -* [#70](https://github.com/sebastianbergmann/diff/issues/70): Diffing of arrays no longer works - -## [2.0.1] - 2017-08-03 - -### Fixed - -* [#66](https://github.com/sebastianbergmann/diff/pull/66): Restored backwards compatibility for PHPUnit 6.1.4, 6.2.0, 6.2.1, 6.2.2, and 6.2.3 - -## [2.0.0] - 2017-07-11 [YANKED] - -### Added - -* [#64](https://github.com/sebastianbergmann/diff/pull/64): Show line numbers for chunks of a diff - -### Removed - -* This component is no longer supported on PHP 5.6 - -[6.0.2]: https://github.com/sebastianbergmann/diff/compare/6.0.1...6.0.2 -[6.0.1]: https://github.com/sebastianbergmann/diff/compare/6.0.0...6.0.1 -[6.0.0]: https://github.com/sebastianbergmann/diff/compare/5.1...6.0.0 -[5.1.1]: https://github.com/sebastianbergmann/diff/compare/5.1.0...5.1.1 -[5.1.0]: https://github.com/sebastianbergmann/diff/compare/5.0.3...5.1.0 -[5.0.3]: https://github.com/sebastianbergmann/diff/compare/5.0.2...5.0.3 -[5.0.2]: https://github.com/sebastianbergmann/diff/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/diff/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/diff/compare/4.0.4...5.0.0 -[4.0.4]: https://github.com/sebastianbergmann/diff/compare/4.0.3...4.0.4 -[4.0.3]: https://github.com/sebastianbergmann/diff/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/sebastianbergmann/diff/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/diff/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/diff/compare/3.0.2...4.0.0 -[3.0.2]: https://github.com/sebastianbergmann/diff/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/diff/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/diff/compare/2.0...3.0.0 -[2.0.1]: https://github.com/sebastianbergmann/diff/compare/c341c98ce083db77f896a0aa64f5ee7652915970...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/diff/compare/1.4...c341c98ce083db77f896a0aa64f5ee7652915970 diff --git a/v3_ci4/vendor/sebastian/diff/LICENSE b/v3_ci4/vendor/sebastian/diff/LICENSE deleted file mode 100644 index 5b4705a..0000000 --- a/v3_ci4/vendor/sebastian/diff/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2002-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/diff/README.md b/v3_ci4/vendor/sebastian/diff/README.md deleted file mode 100644 index 7b71024..0000000 --- a/v3_ci4/vendor/sebastian/diff/README.md +++ /dev/null @@ -1,205 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/diff/v/stable.png)](https://packagist.org/packages/sebastian/diff) -[![CI Status](https://github.com/sebastianbergmann/diff/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/diff/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/diff/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/diff) - -# sebastian/diff - -Diff implementation for PHP, factored out of PHPUnit into a stand-alone component. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/diff -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/diff -``` - -### Usage - -#### Generating diff - -The `Differ` class can be used to generate a textual representation of the difference between two strings: - -```php -diff('foo', 'bar'); -``` - -The code above yields the output below: -```diff ---- Original -+++ New -@@ @@ --foo -+bar -``` - -There are three output builders available in this package: - -#### UnifiedDiffOutputBuilder - -This is default builder, which generates the output close to udiff and is used by PHPUnit. - -```php -diff('foo', 'bar'); -``` - -#### StrictUnifiedDiffOutputBuilder - -Generates (strict) Unified diff's (unidiffs) with hunks, -similar to `diff -u` and compatible with `patch` and `git apply`. - -```php - true, // ranges of length one are rendered with the trailing `,1` - 'commonLineThreshold' => 6, // number of same lines before ending a new hunk and creating a new one (if needed) - 'contextLines' => 3, // like `diff: -u, -U NUM, --unified[=NUM]`, for patch/git apply compatibility best to keep at least @ 3 - 'fromFile' => '', - 'fromFileDate' => null, - 'toFile' => '', - 'toFileDate' => null, -]); - -$differ = new Differ($builder); -print $differ->diff('foo', 'bar'); -``` - -#### DiffOnlyOutputBuilder - -Output only the lines that differ. - -```php -diff('foo', 'bar'); -``` - -#### DiffOutputBuilderInterface - -You can pass any output builder to the `Differ` class as longs as it implements the `DiffOutputBuilderInterface`. - -#### Parsing diff - -The `Parser` class can be used to parse a unified diff into an object graph: - -```php -use SebastianBergmann\Diff\Parser; -use SebastianBergmann\Git; - -$git = new Git('/usr/local/src/money'); - -$diff = $git->getDiff( - '948a1a07768d8edd10dcefa8315c1cbeffb31833', - 'c07a373d2399f3e686234c4f7f088d635eb9641b' -); - -$parser = new Parser; - -print_r($parser->parse($diff)); -``` - -The code above yields the output below: - - Array - ( - [0] => SebastianBergmann\Diff\Diff Object - ( - [from:SebastianBergmann\Diff\Diff:private] => a/tests/MoneyTest.php - [to:SebastianBergmann\Diff\Diff:private] => b/tests/MoneyTest.php - [chunks:SebastianBergmann\Diff\Diff:private] => Array - ( - [0] => SebastianBergmann\Diff\Chunk Object - ( - [start:SebastianBergmann\Diff\Chunk:private] => 87 - [startRange:SebastianBergmann\Diff\Chunk:private] => 7 - [end:SebastianBergmann\Diff\Chunk:private] => 87 - [endRange:SebastianBergmann\Diff\Chunk:private] => 7 - [lines:SebastianBergmann\Diff\Chunk:private] => Array - ( - [0] => SebastianBergmann\Diff\Line Object - ( - [type:SebastianBergmann\Diff\Line:private] => 3 - [content:SebastianBergmann\Diff\Line:private] => * @covers SebastianBergmann\Money\Money::add - ) - - [1] => SebastianBergmann\Diff\Line Object - ( - [type:SebastianBergmann\Diff\Line:private] => 3 - [content:SebastianBergmann\Diff\Line:private] => * @covers SebastianBergmann\Money\Money::newMoney - ) - - [2] => SebastianBergmann\Diff\Line Object - ( - [type:SebastianBergmann\Diff\Line:private] => 3 - [content:SebastianBergmann\Diff\Line:private] => */ - ) - - [3] => SebastianBergmann\Diff\Line Object - ( - [type:SebastianBergmann\Diff\Line:private] => 2 - [content:SebastianBergmann\Diff\Line:private] => public function testAnotherMoneyWithSameCurrencyObjectCanBeAdded() - ) - - [4] => SebastianBergmann\Diff\Line Object - ( - [type:SebastianBergmann\Diff\Line:private] => 1 - [content:SebastianBergmann\Diff\Line:private] => public function testAnotherMoneyObjectWithSameCurrencyCanBeAdded() - ) - - [5] => SebastianBergmann\Diff\Line Object - ( - [type:SebastianBergmann\Diff\Line:private] => 3 - [content:SebastianBergmann\Diff\Line:private] => { - ) - - [6] => SebastianBergmann\Diff\Line Object - ( - [type:SebastianBergmann\Diff\Line:private] => 3 - [content:SebastianBergmann\Diff\Line:private] => $a = new Money(1, new Currency('EUR')); - ) - - [7] => SebastianBergmann\Diff\Line Object - ( - [type:SebastianBergmann\Diff\Line:private] => 3 - [content:SebastianBergmann\Diff\Line:private] => $b = new Money(2, new Currency('EUR')); - ) - ) - ) - ) - ) - ) - -Note: If the chunk size is 0 lines, i.e., `getStartRange()` or `getEndRange()` return 0, the number of line returned by `getStart()` or `getEnd()` is one lower than one would expect. It is the line number after which the chunk should be inserted or deleted; in all other cases, it gives the first line number of the replaced range of lines. diff --git a/v3_ci4/vendor/sebastian/diff/SECURITY.md b/v3_ci4/vendor/sebastian/diff/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/diff/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/diff/composer.json b/v3_ci4/vendor/sebastian/diff/composer.json deleted file mode 100644 index 7e19a7d..0000000 --- a/v3_ci4/vendor/sebastian/diff/composer.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "sebastian/diff", - "description": "Diff implementation", - "keywords": ["diff", "udiff", "unidiff", "unified diff"], - "homepage": "https://github.com/sebastianbergmann/diff", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy" - }, - "prefer-stable": true, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0", - "symfony/process": "^4.2 || ^5" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Chunk.php b/v3_ci4/vendor/sebastian/diff/src/Chunk.php deleted file mode 100644 index 8d1854e..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Chunk.php +++ /dev/null @@ -1,89 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use ArrayIterator; -use IteratorAggregate; -use Traversable; - -/** - * @template-implements IteratorAggregate - */ -final class Chunk implements IteratorAggregate -{ - private int $start; - private int $startRange; - private int $end; - private int $endRange; - - /** - * @var list - */ - private array $lines; - - /** - * @param list $lines - */ - public function __construct(int $start = 0, int $startRange = 1, int $end = 0, int $endRange = 1, array $lines = []) - { - $this->start = $start; - $this->startRange = $startRange; - $this->end = $end; - $this->endRange = $endRange; - $this->lines = $lines; - } - - public function start(): int - { - return $this->start; - } - - public function startRange(): int - { - return $this->startRange; - } - - public function end(): int - { - return $this->end; - } - - public function endRange(): int - { - return $this->endRange; - } - - /** - * @return list - */ - public function lines(): array - { - return $this->lines; - } - - /** - * @param list $lines - */ - public function setLines(array $lines): void - { - foreach ($lines as $line) { - if (!$line instanceof Line) { - throw new InvalidArgumentException; - } - } - - $this->lines = $lines; - } - - public function getIterator(): Traversable - { - return new ArrayIterator($this->lines); - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Diff.php b/v3_ci4/vendor/sebastian/diff/src/Diff.php deleted file mode 100644 index 372eb3d..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Diff.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use ArrayIterator; -use IteratorAggregate; -use Traversable; - -/** - * @template-implements IteratorAggregate - */ -final class Diff implements IteratorAggregate -{ - /** - * @var non-empty-string - */ - private string $from; - - /** - * @var non-empty-string - */ - private string $to; - - /** - * @var list - */ - private array $chunks; - - /** - * @param non-empty-string $from - * @param non-empty-string $to - * @param list $chunks - */ - public function __construct(string $from, string $to, array $chunks = []) - { - $this->from = $from; - $this->to = $to; - $this->chunks = $chunks; - } - - /** - * @return non-empty-string - */ - public function from(): string - { - return $this->from; - } - - /** - * @return non-empty-string - */ - public function to(): string - { - return $this->to; - } - - /** - * @return list - */ - public function chunks(): array - { - return $this->chunks; - } - - /** - * @param list $chunks - */ - public function setChunks(array $chunks): void - { - $this->chunks = $chunks; - } - - public function getIterator(): Traversable - { - return new ArrayIterator($this->chunks); - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Differ.php b/v3_ci4/vendor/sebastian/diff/src/Differ.php deleted file mode 100644 index 86bd96c..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Differ.php +++ /dev/null @@ -1,247 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use const PHP_INT_SIZE; -use const PREG_SPLIT_DELIM_CAPTURE; -use const PREG_SPLIT_NO_EMPTY; -use function array_shift; -use function array_unshift; -use function array_values; -use function count; -use function current; -use function end; -use function is_string; -use function key; -use function min; -use function preg_split; -use function prev; -use function reset; -use function str_ends_with; -use function substr; -use SebastianBergmann\Diff\Output\DiffOutputBuilderInterface; - -final class Differ -{ - public const OLD = 0; - public const ADDED = 1; - public const REMOVED = 2; - public const DIFF_LINE_END_WARNING = 3; - public const NO_LINE_END_EOF_WARNING = 4; - private DiffOutputBuilderInterface $outputBuilder; - - public function __construct(DiffOutputBuilderInterface $outputBuilder) - { - $this->outputBuilder = $outputBuilder; - } - - /** - * @param list|string $from - * @param list|string $to - */ - public function diff(array|string $from, array|string $to, ?LongestCommonSubsequenceCalculator $lcs = null): string - { - $diff = $this->diffToArray($from, $to, $lcs); - - return $this->outputBuilder->getDiff($diff); - } - - /** - * @param list|string $from - * @param list|string $to - */ - public function diffToArray(array|string $from, array|string $to, ?LongestCommonSubsequenceCalculator $lcs = null): array - { - if (is_string($from)) { - $from = $this->splitStringByLines($from); - } - - if (is_string($to)) { - $to = $this->splitStringByLines($to); - } - - [$from, $to, $start, $end] = self::getArrayDiffParted($from, $to); - - if ($lcs === null) { - $lcs = $this->selectLcsImplementation($from, $to); - } - - $common = $lcs->calculate(array_values($from), array_values($to)); - $diff = []; - - foreach ($start as $token) { - $diff[] = [$token, self::OLD]; - } - - reset($from); - reset($to); - - foreach ($common as $token) { - while (($fromToken = reset($from)) !== $token) { - $diff[] = [array_shift($from), self::REMOVED]; - } - - while (($toToken = reset($to)) !== $token) { - $diff[] = [array_shift($to), self::ADDED]; - } - - $diff[] = [$token, self::OLD]; - - array_shift($from); - array_shift($to); - } - - while (($token = array_shift($from)) !== null) { - $diff[] = [$token, self::REMOVED]; - } - - while (($token = array_shift($to)) !== null) { - $diff[] = [$token, self::ADDED]; - } - - foreach ($end as $token) { - $diff[] = [$token, self::OLD]; - } - - if ($this->detectUnmatchedLineEndings($diff)) { - array_unshift($diff, ["#Warning: Strings contain different line endings!\n", self::DIFF_LINE_END_WARNING]); - } - - return $diff; - } - - private function splitStringByLines(string $input): array - { - return preg_split('/(.*\R)/', $input, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - } - - private function selectLcsImplementation(array $from, array $to): LongestCommonSubsequenceCalculator - { - // We do not want to use the time-efficient implementation if its memory - // footprint will probably exceed this value. Note that the footprint - // calculation is only an estimation for the matrix and the LCS method - // will typically allocate a bit more memory than this. - $memoryLimit = 100 * 1024 * 1024; - - if ($this->calculateEstimatedFootprint($from, $to) > $memoryLimit) { - return new MemoryEfficientLongestCommonSubsequenceCalculator; - } - - return new TimeEfficientLongestCommonSubsequenceCalculator; - } - - private function calculateEstimatedFootprint(array $from, array $to): float|int - { - $itemSize = PHP_INT_SIZE === 4 ? 76 : 144; - - return $itemSize * min(count($from), count($to)) ** 2; - } - - private function detectUnmatchedLineEndings(array $diff): bool - { - $newLineBreaks = ['' => true]; - $oldLineBreaks = ['' => true]; - - foreach ($diff as $entry) { - if (self::OLD === $entry[1]) { - $ln = $this->getLinebreak($entry[0]); - $oldLineBreaks[$ln] = true; - $newLineBreaks[$ln] = true; - } elseif (self::ADDED === $entry[1]) { - $newLineBreaks[$this->getLinebreak($entry[0])] = true; - } elseif (self::REMOVED === $entry[1]) { - $oldLineBreaks[$this->getLinebreak($entry[0])] = true; - } - } - - // if either input or output is a single line without breaks than no warning should be raised - if (['' => true] === $newLineBreaks || ['' => true] === $oldLineBreaks) { - return false; - } - - // two-way compare - foreach ($newLineBreaks as $break => $set) { - if (!isset($oldLineBreaks[$break])) { - return true; - } - } - - foreach ($oldLineBreaks as $break => $set) { - if (!isset($newLineBreaks[$break])) { - return true; - } - } - - return false; - } - - private function getLinebreak($line): string - { - if (!is_string($line)) { - return ''; - } - - $lc = substr($line, -1); - - if ("\r" === $lc) { - return "\r"; - } - - if ("\n" !== $lc) { - return ''; - } - - if (str_ends_with($line, "\r\n")) { - return "\r\n"; - } - - return "\n"; - } - - private static function getArrayDiffParted(array &$from, array &$to): array - { - $start = []; - $end = []; - - reset($to); - - foreach ($from as $k => $v) { - $toK = key($to); - - if ($toK === $k && $v === $to[$k]) { - $start[$k] = $v; - - unset($from[$k], $to[$k]); - } else { - break; - } - } - - end($from); - end($to); - - do { - $fromK = key($from); - $toK = key($to); - - if (null === $fromK || null === $toK || current($from) !== current($to)) { - break; - } - - prev($from); - prev($to); - - $end = [$fromK => $from[$fromK]] + $end; - unset($from[$fromK], $to[$toK]); - } while (true); - - return [$from, $to, $start, $end]; - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Exception/ConfigurationException.php b/v3_ci4/vendor/sebastian/diff/src/Exception/ConfigurationException.php deleted file mode 100644 index 4bd25d8..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Exception/ConfigurationException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use function gettype; -use function is_object; -use function sprintf; -use Exception; - -final class ConfigurationException extends InvalidArgumentException -{ - public function __construct(string $option, string $expected, mixed $value, int $code = 0, ?Exception $previous = null) - { - parent::__construct( - sprintf( - 'Option "%s" must be %s, got "%s".', - $option, - $expected, - is_object($value) ? $value::class : (null === $value ? '' : gettype($value) . '#' . $value), - ), - $code, - $previous, - ); - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Exception/Exception.php b/v3_ci4/vendor/sebastian/diff/src/Exception/Exception.php deleted file mode 100644 index e20d320..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Exception/Exception.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use Throwable; - -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php b/v3_ci4/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php deleted file mode 100644 index 846ac3f..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -class InvalidArgumentException extends \InvalidArgumentException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Line.php b/v3_ci4/vendor/sebastian/diff/src/Line.php deleted file mode 100644 index be544f0..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Line.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -final class Line -{ - public const ADDED = 1; - public const REMOVED = 2; - public const UNCHANGED = 3; - private int $type; - private string $content; - - public function __construct(int $type = self::UNCHANGED, string $content = '') - { - $this->type = $type; - $this->content = $content; - } - - public function content(): string - { - return $this->content; - } - - public function type(): int - { - return $this->type; - } - - public function isAdded(): bool - { - return $this->type === self::ADDED; - } - - public function isRemoved(): bool - { - return $this->type === self::REMOVED; - } - - public function isUnchanged(): bool - { - return $this->type === self::UNCHANGED; - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php b/v3_ci4/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php deleted file mode 100644 index dea8fe1..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -interface LongestCommonSubsequenceCalculator -{ - /** - * Calculates the longest common subsequence of two arrays. - */ - public function calculate(array $from, array $to): array; -} diff --git a/v3_ci4/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php b/v3_ci4/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php deleted file mode 100644 index b9846c3..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use function array_fill; -use function array_merge; -use function array_reverse; -use function array_slice; -use function count; -use function in_array; -use function max; - -final class MemoryEfficientLongestCommonSubsequenceCalculator implements LongestCommonSubsequenceCalculator -{ - /** - * @inheritDoc - */ - public function calculate(array $from, array $to): array - { - $cFrom = count($from); - $cTo = count($to); - - if ($cFrom === 0) { - return []; - } - - if ($cFrom === 1) { - if (in_array($from[0], $to, true)) { - return [$from[0]]; - } - - return []; - } - - $i = (int) ($cFrom / 2); - $fromStart = array_slice($from, 0, $i); - $fromEnd = array_slice($from, $i); - $llB = $this->length($fromStart, $to); - $llE = $this->length(array_reverse($fromEnd), array_reverse($to)); - $jMax = 0; - $max = 0; - - for ($j = 0; $j <= $cTo; $j++) { - $m = $llB[$j] + $llE[$cTo - $j]; - - if ($m >= $max) { - $max = $m; - $jMax = $j; - } - } - - $toStart = array_slice($to, 0, $jMax); - $toEnd = array_slice($to, $jMax); - - return array_merge( - $this->calculate($fromStart, $toStart), - $this->calculate($fromEnd, $toEnd), - ); - } - - private function length(array $from, array $to): array - { - $current = array_fill(0, count($to) + 1, 0); - $cFrom = count($from); - $cTo = count($to); - - for ($i = 0; $i < $cFrom; $i++) { - $prev = $current; - - for ($j = 0; $j < $cTo; $j++) { - if ($from[$i] === $to[$j]) { - $current[$j + 1] = $prev[$j] + 1; - } else { - /** - * @noinspection PhpConditionCanBeReplacedWithMinMaxCallInspection - * - * We do not use max() here to avoid the function call overhead - */ - if ($current[$j] > $prev[$j + 1]) { - $current[$j + 1] = $current[$j]; - } else { - $current[$j + 1] = $prev[$j + 1]; - } - } - } - } - - return $current; - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php b/v3_ci4/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php deleted file mode 100644 index 6c70683..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff\Output; - -use function count; - -abstract class AbstractChunkOutputBuilder implements DiffOutputBuilderInterface -{ - /** - * Takes input of the diff array and returns the common parts. - * Iterates through diff line by line. - */ - protected function getCommonChunks(array $diff, int $lineThreshold = 5): array - { - $diffSize = count($diff); - $capturing = false; - $chunkStart = 0; - $chunkSize = 0; - $commonChunks = []; - - for ($i = 0; $i < $diffSize; $i++) { - if ($diff[$i][1] === 0 /* OLD */) { - if ($capturing === false) { - $capturing = true; - $chunkStart = $i; - $chunkSize = 0; - } else { - $chunkSize++; - } - } elseif ($capturing !== false) { - if ($chunkSize >= $lineThreshold) { - $commonChunks[$chunkStart] = $chunkStart + $chunkSize; - } - - $capturing = false; - } - } - - if ($capturing !== false && $chunkSize >= $lineThreshold) { - $commonChunks[$chunkStart] = $chunkStart + $chunkSize; - } - - return $commonChunks; - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php b/v3_ci4/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php deleted file mode 100644 index fd6ce76..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff\Output; - -use function fclose; -use function fopen; -use function fwrite; -use function str_ends_with; -use function stream_get_contents; -use function substr; -use SebastianBergmann\Diff\Differ; - -/** - * Builds a diff string representation in a loose unified diff format - * listing only changes lines. Does not include line numbers. - */ -final class DiffOnlyOutputBuilder implements DiffOutputBuilderInterface -{ - private string $header; - - public function __construct(string $header = "--- Original\n+++ New\n") - { - $this->header = $header; - } - - public function getDiff(array $diff): string - { - $buffer = fopen('php://memory', 'r+b'); - - if ('' !== $this->header) { - fwrite($buffer, $this->header); - - if (!str_ends_with($this->header, "\n")) { - fwrite($buffer, "\n"); - } - } - - foreach ($diff as $diffEntry) { - if ($diffEntry[1] === Differ::ADDED) { - fwrite($buffer, '+' . $diffEntry[0]); - } elseif ($diffEntry[1] === Differ::REMOVED) { - fwrite($buffer, '-' . $diffEntry[0]); - } elseif ($diffEntry[1] === Differ::DIFF_LINE_END_WARNING) { - fwrite($buffer, ' ' . $diffEntry[0]); - - continue; // Warnings should not be tested for line break, it will always be there - } else { /* Not changed (old) 0 */ - continue; // we didn't write the not-changed line, so do not add a line break either - } - - $lc = substr($diffEntry[0], -1); - - if ($lc !== "\n" && $lc !== "\r") { - fwrite($buffer, "\n"); // \No newline at end of file - } - } - - $diff = stream_get_contents($buffer, -1, 0); - fclose($buffer); - - return $diff; - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php b/v3_ci4/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php deleted file mode 100644 index 0e18f9f..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff\Output; - -/** - * Defines how an output builder should take a generated - * diff array and return a string representation of that diff. - */ -interface DiffOutputBuilderInterface -{ - public function getDiff(array $diff): string; -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php b/v3_ci4/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php deleted file mode 100644 index 3bb5e0d..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php +++ /dev/null @@ -1,326 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff\Output; - -use function array_merge; -use function array_splice; -use function count; -use function fclose; -use function fopen; -use function fwrite; -use function is_bool; -use function is_int; -use function is_string; -use function max; -use function min; -use function sprintf; -use function stream_get_contents; -use function substr; -use SebastianBergmann\Diff\ConfigurationException; -use SebastianBergmann\Diff\Differ; - -/** - * Strict Unified diff output builder. - * - * Generates (strict) Unified diff's (unidiffs) with hunks. - */ -final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface -{ - private static array $default = [ - 'collapseRanges' => true, // ranges of length one are rendered with the trailing `,1` - 'commonLineThreshold' => 6, // number of same lines before ending a new hunk and creating a new one (if needed) - 'contextLines' => 3, // like `diff: -u, -U NUM, --unified[=NUM]`, for patch/git apply compatibility best to keep at least @ 3 - 'fromFile' => null, - 'fromFileDate' => null, - 'toFile' => null, - 'toFileDate' => null, - ]; - private bool $changed; - private bool $collapseRanges; - - /** - * @var positive-int - */ - private int $commonLineThreshold; - private string $header; - - /** - * @var positive-int - */ - private int $contextLines; - - public function __construct(array $options = []) - { - $options = array_merge(self::$default, $options); - - if (!is_bool($options['collapseRanges'])) { - throw new ConfigurationException('collapseRanges', 'a bool', $options['collapseRanges']); - } - - if (!is_int($options['contextLines']) || $options['contextLines'] < 0) { - throw new ConfigurationException('contextLines', 'an int >= 0', $options['contextLines']); - } - - if (!is_int($options['commonLineThreshold']) || $options['commonLineThreshold'] <= 0) { - throw new ConfigurationException('commonLineThreshold', 'an int > 0', $options['commonLineThreshold']); - } - - $this->assertString($options, 'fromFile'); - $this->assertString($options, 'toFile'); - $this->assertStringOrNull($options, 'fromFileDate'); - $this->assertStringOrNull($options, 'toFileDate'); - - $this->header = sprintf( - "--- %s%s\n+++ %s%s\n", - $options['fromFile'], - null === $options['fromFileDate'] ? '' : "\t" . $options['fromFileDate'], - $options['toFile'], - null === $options['toFileDate'] ? '' : "\t" . $options['toFileDate'], - ); - - $this->collapseRanges = $options['collapseRanges']; - $this->commonLineThreshold = $options['commonLineThreshold']; - $this->contextLines = $options['contextLines']; - } - - public function getDiff(array $diff): string - { - if (0 === count($diff)) { - return ''; - } - - $this->changed = false; - - $buffer = fopen('php://memory', 'r+b'); - fwrite($buffer, $this->header); - - $this->writeDiffHunks($buffer, $diff); - - if (!$this->changed) { - fclose($buffer); - - return ''; - } - - $diff = stream_get_contents($buffer, -1, 0); - - fclose($buffer); - - // If the last char is not a linebreak: add it. - // This might happen when both the `from` and `to` do not have a trailing linebreak - $last = substr($diff, -1); - - return "\n" !== $last && "\r" !== $last - ? $diff . "\n" - : $diff; - } - - private function writeDiffHunks($output, array $diff): void - { - // detect "No newline at end of file" and insert into `$diff` if needed - - $upperLimit = count($diff); - - if (0 === $diff[$upperLimit - 1][1]) { - $lc = substr($diff[$upperLimit - 1][0], -1); - - if ("\n" !== $lc) { - array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); - } - } else { - // search back for the last `+` and `-` line, - // check if it has a trailing linebreak, else add a warning under it - $toFind = [1 => true, 2 => true]; - - for ($i = $upperLimit - 1; $i >= 0; $i--) { - if (isset($toFind[$diff[$i][1]])) { - unset($toFind[$diff[$i][1]]); - $lc = substr($diff[$i][0], -1); - - if ("\n" !== $lc) { - array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); - } - - if (!count($toFind)) { - break; - } - } - } - } - - // write hunks to output buffer - - $cutOff = max($this->commonLineThreshold, $this->contextLines); - $hunkCapture = false; - $sameCount = $toRange = $fromRange = 0; - $toStart = $fromStart = 1; - $i = 0; - - /** @var int $i */ - foreach ($diff as $i => $entry) { - if (0 === $entry[1]) { // same - if (false === $hunkCapture) { - $fromStart++; - $toStart++; - - continue; - } - - $sameCount++; - $toRange++; - $fromRange++; - - if ($sameCount === $cutOff) { - $contextStartOffset = ($hunkCapture - $this->contextLines) < 0 - ? $hunkCapture - : $this->contextLines; - - // note: $contextEndOffset = $this->contextLines; - // - // because we never go beyond the end of the diff. - // with the cutoff/contextlines here the follow is never true; - // - // if ($i - $cutOff + $this->contextLines + 1 > \count($diff)) { - // $contextEndOffset = count($diff) - 1; - // } - // - // ; that would be true for a trailing incomplete hunk case which is dealt with after this loop - - $this->writeHunk( - $diff, - $hunkCapture - $contextStartOffset, - $i - $cutOff + $this->contextLines + 1, - $fromStart - $contextStartOffset, - $fromRange - $cutOff + $contextStartOffset + $this->contextLines, - $toStart - $contextStartOffset, - $toRange - $cutOff + $contextStartOffset + $this->contextLines, - $output, - ); - - $fromStart += $fromRange; - $toStart += $toRange; - - $hunkCapture = false; - $sameCount = $toRange = $fromRange = 0; - } - - continue; - } - - $sameCount = 0; - - if ($entry[1] === Differ::NO_LINE_END_EOF_WARNING) { - continue; - } - - $this->changed = true; - - if (false === $hunkCapture) { - $hunkCapture = $i; - } - - if (Differ::ADDED === $entry[1]) { // added - $toRange++; - } - - if (Differ::REMOVED === $entry[1]) { // removed - $fromRange++; - } - } - - if (false === $hunkCapture) { - return; - } - - // we end here when cutoff (commonLineThreshold) was not reached, but we were capturing a hunk, - // do not render hunk till end automatically because the number of context lines might be less than the commonLineThreshold - - $contextStartOffset = $hunkCapture - $this->contextLines < 0 - ? $hunkCapture - : $this->contextLines; - - // prevent trying to write out more common lines than there are in the diff _and_ - // do not write more than configured through the context lines - $contextEndOffset = min($sameCount, $this->contextLines); - - $fromRange -= $sameCount; - $toRange -= $sameCount; - - $this->writeHunk( - $diff, - $hunkCapture - $contextStartOffset, - $i - $sameCount + $contextEndOffset + 1, - $fromStart - $contextStartOffset, - $fromRange + $contextStartOffset + $contextEndOffset, - $toStart - $contextStartOffset, - $toRange + $contextStartOffset + $contextEndOffset, - $output, - ); - } - - private function writeHunk( - array $diff, - int $diffStartIndex, - int $diffEndIndex, - int $fromStart, - int $fromRange, - int $toStart, - int $toRange, - $output - ): void { - fwrite($output, '@@ -' . $fromStart); - - if (!$this->collapseRanges || 1 !== $fromRange) { - fwrite($output, ',' . $fromRange); - } - - fwrite($output, ' +' . $toStart); - - if (!$this->collapseRanges || 1 !== $toRange) { - fwrite($output, ',' . $toRange); - } - - fwrite($output, " @@\n"); - - for ($i = $diffStartIndex; $i < $diffEndIndex; $i++) { - if ($diff[$i][1] === Differ::ADDED) { - $this->changed = true; - fwrite($output, '+' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::REMOVED) { - $this->changed = true; - fwrite($output, '-' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::OLD) { - fwrite($output, ' ' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::NO_LINE_END_EOF_WARNING) { - $this->changed = true; - fwrite($output, $diff[$i][0]); - } - // } elseif ($diff[$i][1] === Differ::DIFF_LINE_END_WARNING) { // custom comment inserted by PHPUnit/diff package - // skip - // } else { - // unknown/invalid - // } - } - } - - private function assertString(array $options, string $option): void - { - if (!is_string($options[$option])) { - throw new ConfigurationException($option, 'a string', $options[$option]); - } - } - - private function assertStringOrNull(array $options, string $option): void - { - if (null !== $options[$option] && !is_string($options[$option])) { - throw new ConfigurationException($option, 'a string or ', $options[$option]); - } - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php b/v3_ci4/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php deleted file mode 100644 index fa6ae7a..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php +++ /dev/null @@ -1,257 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff\Output; - -use function array_splice; -use function count; -use function fclose; -use function fopen; -use function fwrite; -use function max; -use function min; -use function str_ends_with; -use function stream_get_contents; -use function substr; -use SebastianBergmann\Diff\Differ; - -/** - * Builds a diff string representation in unified diff format in chunks. - */ -final class UnifiedDiffOutputBuilder extends AbstractChunkOutputBuilder -{ - private bool $collapseRanges = true; - private int $commonLineThreshold = 6; - - /** - * @var positive-int - */ - private int $contextLines = 3; - private string $header; - private bool $addLineNumbers; - - public function __construct(string $header = "--- Original\n+++ New\n", bool $addLineNumbers = false) - { - $this->header = $header; - $this->addLineNumbers = $addLineNumbers; - } - - public function getDiff(array $diff): string - { - $buffer = fopen('php://memory', 'r+b'); - - if ('' !== $this->header) { - fwrite($buffer, $this->header); - - if (!str_ends_with($this->header, "\n")) { - fwrite($buffer, "\n"); - } - } - - if (0 !== count($diff)) { - $this->writeDiffHunks($buffer, $diff); - } - - $diff = stream_get_contents($buffer, -1, 0); - - fclose($buffer); - - // If the diff is non-empty and last char is not a linebreak: add it. - // This might happen when both the `from` and `to` do not have a trailing linebreak - $last = substr($diff, -1); - - return '' !== $diff && "\n" !== $last && "\r" !== $last - ? $diff . "\n" - : $diff; - } - - private function writeDiffHunks($output, array $diff): void - { - // detect "No newline at end of file" and insert into `$diff` if needed - - $upperLimit = count($diff); - - if (0 === $diff[$upperLimit - 1][1]) { - $lc = substr($diff[$upperLimit - 1][0], -1); - - if ("\n" !== $lc) { - array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); - } - } else { - // search back for the last `+` and `-` line, - // check if it has trailing linebreak, else add a warning under it - $toFind = [1 => true, 2 => true]; - - for ($i = $upperLimit - 1; $i >= 0; $i--) { - if (isset($toFind[$diff[$i][1]])) { - unset($toFind[$diff[$i][1]]); - $lc = substr($diff[$i][0], -1); - - if ("\n" !== $lc) { - array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); - } - - if (!count($toFind)) { - break; - } - } - } - } - - // write hunks to output buffer - - $cutOff = max($this->commonLineThreshold, $this->contextLines); - $hunkCapture = false; - $sameCount = $toRange = $fromRange = 0; - $toStart = $fromStart = 1; - $i = 0; - - /** @var int $i */ - foreach ($diff as $i => $entry) { - if (0 === $entry[1]) { // same - if (false === $hunkCapture) { - $fromStart++; - $toStart++; - - continue; - } - - $sameCount++; - $toRange++; - $fromRange++; - - if ($sameCount === $cutOff) { - $contextStartOffset = ($hunkCapture - $this->contextLines) < 0 - ? $hunkCapture - : $this->contextLines; - - // note: $contextEndOffset = $this->contextLines; - // - // because we never go beyond the end of the diff. - // with the cutoff/contextlines here the follow is never true; - // - // if ($i - $cutOff + $this->contextLines + 1 > \count($diff)) { - // $contextEndOffset = count($diff) - 1; - // } - // - // ; that would be true for a trailing incomplete hunk case which is dealt with after this loop - - $this->writeHunk( - $diff, - $hunkCapture - $contextStartOffset, - $i - $cutOff + $this->contextLines + 1, - $fromStart - $contextStartOffset, - $fromRange - $cutOff + $contextStartOffset + $this->contextLines, - $toStart - $contextStartOffset, - $toRange - $cutOff + $contextStartOffset + $this->contextLines, - $output, - ); - - $fromStart += $fromRange; - $toStart += $toRange; - - $hunkCapture = false; - $sameCount = $toRange = $fromRange = 0; - } - - continue; - } - - $sameCount = 0; - - if ($entry[1] === Differ::NO_LINE_END_EOF_WARNING) { - continue; - } - - if (false === $hunkCapture) { - $hunkCapture = $i; - } - - if (Differ::ADDED === $entry[1]) { - $toRange++; - } - - if (Differ::REMOVED === $entry[1]) { - $fromRange++; - } - } - - if (false === $hunkCapture) { - return; - } - - // we end here when cutoff (commonLineThreshold) was not reached, but we were capturing a hunk, - // do not render hunk till end automatically because the number of context lines might be less than the commonLineThreshold - - $contextStartOffset = $hunkCapture - $this->contextLines < 0 - ? $hunkCapture - : $this->contextLines; - - // prevent trying to write out more common lines than there are in the diff _and_ - // do not write more than configured through the context lines - $contextEndOffset = min($sameCount, $this->contextLines); - - $fromRange -= $sameCount; - $toRange -= $sameCount; - - $this->writeHunk( - $diff, - $hunkCapture - $contextStartOffset, - $i - $sameCount + $contextEndOffset + 1, - $fromStart - $contextStartOffset, - $fromRange + $contextStartOffset + $contextEndOffset, - $toStart - $contextStartOffset, - $toRange + $contextStartOffset + $contextEndOffset, - $output, - ); - } - - private function writeHunk( - array $diff, - int $diffStartIndex, - int $diffEndIndex, - int $fromStart, - int $fromRange, - int $toStart, - int $toRange, - $output - ): void { - if ($this->addLineNumbers) { - fwrite($output, '@@ -' . $fromStart); - - if (!$this->collapseRanges || 1 !== $fromRange) { - fwrite($output, ',' . $fromRange); - } - - fwrite($output, ' +' . $toStart); - - if (!$this->collapseRanges || 1 !== $toRange) { - fwrite($output, ',' . $toRange); - } - - fwrite($output, " @@\n"); - } else { - fwrite($output, "@@ @@\n"); - } - - for ($i = $diffStartIndex; $i < $diffEndIndex; $i++) { - if ($diff[$i][1] === Differ::ADDED) { - fwrite($output, '+' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::REMOVED) { - fwrite($output, '-' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::OLD) { - fwrite($output, ' ' . $diff[$i][0]); - } elseif ($diff[$i][1] === Differ::NO_LINE_END_EOF_WARNING) { - fwrite($output, "\n"); // $diff[$i][0] - } else { /* Not changed (old) Differ::OLD or Warning Differ::DIFF_LINE_END_WARNING */ - fwrite($output, ' ' . $diff[$i][0]); - } - } - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/Parser.php b/v3_ci4/vendor/sebastian/diff/src/Parser.php deleted file mode 100644 index 9293fc9..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/Parser.php +++ /dev/null @@ -1,112 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use function array_pop; -use function assert; -use function count; -use function max; -use function preg_match; -use function preg_split; - -/** - * Unified diff parser. - */ -final class Parser -{ - /** - * @return Diff[] - */ - public function parse(string $string): array - { - $lines = preg_split('(\r\n|\r|\n)', $string); - - if (!empty($lines) && $lines[count($lines) - 1] === '') { - array_pop($lines); - } - - $lineCount = count($lines); - $diffs = []; - $diff = null; - $collected = []; - - for ($i = 0; $i < $lineCount; $i++) { - if (preg_match('#^---\h+"?(?P[^\\v\\t"]+)#', $lines[$i], $fromMatch) && - preg_match('#^\\+\\+\\+\\h+"?(?P[^\\v\\t"]+)#', $lines[$i + 1], $toMatch)) { - if ($diff !== null) { - $this->parseFileDiff($diff, $collected); - - $diffs[] = $diff; - $collected = []; - } - - assert(!empty($fromMatch['file'])); - assert(!empty($toMatch['file'])); - - $diff = new Diff($fromMatch['file'], $toMatch['file']); - - $i++; - } else { - if (preg_match('/^(?:diff --git |index [\da-f.]+|[+-]{3} [ab])/', $lines[$i])) { - continue; - } - - $collected[] = $lines[$i]; - } - } - - if ($diff !== null && count($collected)) { - $this->parseFileDiff($diff, $collected); - - $diffs[] = $diff; - } - - return $diffs; - } - - private function parseFileDiff(Diff $diff, array $lines): void - { - $chunks = []; - $chunk = null; - $diffLines = []; - - foreach ($lines as $line) { - if (preg_match('/^@@\s+-(?P\d+)(?:,\s*(?P\d+))?\s+\+(?P\d+)(?:,\s*(?P\d+))?\s+@@/', $line, $match, PREG_UNMATCHED_AS_NULL)) { - $chunk = new Chunk( - (int) $match['start'], - isset($match['startrange']) ? max(0, (int) $match['startrange']) : 1, - (int) $match['end'], - isset($match['endrange']) ? max(0, (int) $match['endrange']) : 1, - ); - - $chunks[] = $chunk; - $diffLines = []; - - continue; - } - - if (preg_match('/^(?P[+ -])?(?P.*)/', $line, $match)) { - $type = Line::UNCHANGED; - - if ($match['type'] === '+') { - $type = Line::ADDED; - } elseif ($match['type'] === '-') { - $type = Line::REMOVED; - } - - $diffLines[] = new Line($type, $match['line']); - - $chunk?->setLines($diffLines); - } - } - - $diff->setChunks($chunks); - } -} diff --git a/v3_ci4/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php b/v3_ci4/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php deleted file mode 100644 index 93b7628..0000000 --- a/v3_ci4/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Diff; - -use function array_reverse; -use function count; -use function max; -use SplFixedArray; - -final class TimeEfficientLongestCommonSubsequenceCalculator implements LongestCommonSubsequenceCalculator -{ - /** - * @inheritDoc - */ - public function calculate(array $from, array $to): array - { - $common = []; - $fromLength = count($from); - $toLength = count($to); - $width = $fromLength + 1; - $matrix = new SplFixedArray($width * ($toLength + 1)); - - for ($i = 0; $i <= $fromLength; $i++) { - $matrix[$i] = 0; - } - - for ($j = 0; $j <= $toLength; $j++) { - $matrix[$j * $width] = 0; - } - - for ($i = 1; $i <= $fromLength; $i++) { - for ($j = 1; $j <= $toLength; $j++) { - $o = ($j * $width) + $i; - - // don't use max() to avoid function call overhead - $firstOrLast = $from[$i - 1] === $to[$j - 1] ? $matrix[$o - $width - 1] + 1 : 0; - - if ($matrix[$o - 1] > $matrix[$o - $width]) { - if ($firstOrLast > $matrix[$o - 1]) { - $matrix[$o] = $firstOrLast; - } else { - $matrix[$o] = $matrix[$o - 1]; - } - } else { - if ($firstOrLast > $matrix[$o - $width]) { - $matrix[$o] = $firstOrLast; - } else { - $matrix[$o] = $matrix[$o - $width]; - } - } - } - } - - $i = $fromLength; - $j = $toLength; - - while ($i > 0 && $j > 0) { - if ($from[$i - 1] === $to[$j - 1]) { - $common[] = $from[$i - 1]; - $i--; - $j--; - } else { - $o = ($j * $width) + $i; - - if ($matrix[$o - $width] > $matrix[$o - 1]) { - $j--; - } else { - $i--; - } - } - } - - return array_reverse($common); - } -} diff --git a/v3_ci4/vendor/sebastian/environment/ChangeLog.md b/v3_ci4/vendor/sebastian/environment/ChangeLog.md deleted file mode 100644 index 1e52739..0000000 --- a/v3_ci4/vendor/sebastian/environment/ChangeLog.md +++ /dev/null @@ -1,249 +0,0 @@ -# Changes in sebastianbergmann/environment - -All notable changes in `sebastianbergmann/environment` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [7.2.1] - 2025-05-21 - -### Fixed - -* Take Xdebug mode into account for `Runtime::canCollectCodeCoverage()` - -## [7.2.0] - 2024-07-03 - -### Changed - -* Synced `Console::hasColorSupport()` with Symfony's `StreamOutput::hasColorSupport()` implementation -* Removed code left over from a time before PHP 5.4 and when HHVM was still supported -* This project now uses PHPStan instead of Psalm for static analysis - -### Deprecated - -* The `Runtime::getBinary()` method is now deprecated, use `escapeshellarg(PHP_BINARY)` instead -* The `Runtime::getRawBinary()` method is now deprecated, use the `PHP_BINARY` constant instead - -## [7.1.0] - 2024-03-23 - -### Added - -* [#72](https://github.com/sebastianbergmann/environment/pull/72): `Runtime::getRawBinary()` - -## [7.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [6.1.1] - 2024-MM-DD - -### Changed - -* Synced `Console::hasColorSupport()` with Symfony's `StreamOutput::hasColorSupport()` implementation - -## [6.1.0] - 2024-03-23 - -### Added - -* [#72](https://github.com/sebastianbergmann/environment/pull/72): `Runtime::getRawBinary()` - -## [6.0.1] - 2023-04-11 - -### Fixed - -* [#68](https://github.com/sebastianbergmann/environment/pull/68): The Just-in-Time compiler is disabled when `opcache.jit_buffer_size` is set to `0` -* [#70](https://github.com/sebastianbergmann/environment/pull/70): The first `0` of `opcache.jit` only disables CPU-specific optimizations, not the Just-in-Time compiler itself - -## [6.0.0] - 2023-02-03 - -### Removed - -* Removed `SebastianBergmann\Environment\OperatingSystem::getFamily()` because this component is no longer supported on PHP versions that do not have `PHP_OS_FAMILY` -* Removed `SebastianBergmann\Environment\Runtime::isHHVM()` -* This component is no longer supported on PHP 7.3, PHP 7.4, and PHP 8.0 - -## [5.1.5] - 2022-MM-DD - -### Fixed - -* [#59](https://github.com/sebastianbergmann/environment/issues/59): Wrong usage of `stream_isatty()`, `fstat()` used without checking whether the function is available - -## [5.1.4] - 2022-04-03 - -### Fixed - -* [#63](https://github.com/sebastianbergmann/environment/pull/63): `Runtime::getCurrentSettings()` does not correctly process INI settings - -## [5.1.3] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [5.1.2] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [5.1.1] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -## [5.1.0] - 2020-04-14 - -### Added - -* `Runtime::performsJustInTimeCompilation()` returns `true` if PHP 8's JIT is active, `false` otherwise - -## [5.0.2] - 2020-03-31 - -### Fixed - -* [#55](https://github.com/sebastianbergmann/environment/issues/55): `stty` command is executed even if no tty is available - -## [5.0.1] - 2020-02-19 - -### Changed - -* `Runtime::getNameWithVersionAndCodeCoverageDriver()` now prioritizes PCOV over Xdebug when both extensions are loaded (just like php-code-coverage does) - -## [5.0.0] - 2020-02-07 - -### Removed - -* This component is no longer supported on PHP 7.1 and PHP 7.2 - -## [4.2.3] - 2019-11-20 - -### Changed - -* [#50](https://github.com/sebastianbergmann/environment/pull/50): Windows improvements to console capabilities - -### Fixed - -* [#49](https://github.com/sebastianbergmann/environment/issues/49): Detection how OpCache handles docblocks does not work correctly when PHPDBG is used - -## [4.2.2] - 2019-05-05 - -### Fixed - -* [#44](https://github.com/sebastianbergmann/environment/pull/44): `TypeError` in `Console::getNumberOfColumnsInteractive()` - -## [4.2.1] - 2019-04-25 - -### Fixed - -* Fixed an issue in `Runtime::getCurrentSettings()` - -## [4.2.0] - 2019-04-25 - -### Added - -* [#36](https://github.com/sebastianbergmann/environment/pull/36): `Runtime::getCurrentSettings()` - -## [4.1.0] - 2019-02-01 - -### Added - -* Implemented `Runtime::getNameWithVersionAndCodeCoverageDriver()` method -* [#34](https://github.com/sebastianbergmann/environment/pull/34): Support for PCOV extension - -## [4.0.2] - 2019-01-28 - -### Fixed - -* [#33](https://github.com/sebastianbergmann/environment/issues/33): `Runtime::discardsComments()` returns true too eagerly - -### Removed - -* Removed support for Zend Optimizer+ in `Runtime::discardsComments()` - -## [4.0.1] - 2018-11-25 - -### Fixed - -* [#31](https://github.com/sebastianbergmann/environment/issues/31): Regressions in `Console` class - -## [4.0.0] - 2018-10-23 [YANKED] - -### Fixed - -* [#25](https://github.com/sebastianbergmann/environment/pull/25): `Console::hasColorSupport()` does not work on Windows - -### Removed - -* This component is no longer supported on PHP 7.0 - -## [3.1.0] - 2017-07-01 - -### Added - -* [#21](https://github.com/sebastianbergmann/environment/issues/21): Equivalent of `PHP_OS_FAMILY` (for PHP < 7.2) - -## [3.0.4] - 2017-06-20 - -### Fixed - -* [#20](https://github.com/sebastianbergmann/environment/pull/20): PHP 7 mode of HHVM not forced - -## [3.0.3] - 2017-05-18 - -### Fixed - -* [#18](https://github.com/sebastianbergmann/environment/issues/18): `Uncaught TypeError: preg_match() expects parameter 2 to be string, null given` - -## [3.0.2] - 2017-04-21 - -### Fixed - -* [#17](https://github.com/sebastianbergmann/environment/issues/17): `Uncaught TypeError: trim() expects parameter 1 to be string, boolean given` - -## [3.0.1] - 2017-04-21 - -### Fixed - -* Fixed inverted logic in `Runtime::discardsComments()` - -## [3.0.0] - 2017-04-21 - -### Added - -* Implemented `Runtime::discardsComments()` for querying whether the PHP runtime discards annotations - -### Removed - -* This component is no longer supported on PHP 5.6 - -[7.2.1]: https://github.com/sebastianbergmann/environment/compare/7.2.0...7.2.1 -[7.2.0]: https://github.com/sebastianbergmann/environment/compare/7.1.0...7.2.0 -[7.1.0]: https://github.com/sebastianbergmann/environment/compare/7.0.0...7.1.0 -[7.0.0]: https://github.com/sebastianbergmann/environment/compare/6.1...7.0.0 -[6.1.1]: https://github.com/sebastianbergmann/environment/compare/6.1.0...6.1 -[6.1.0]: https://github.com/sebastianbergmann/environment/compare/6.0.1...6.1.0 -[6.0.1]: https://github.com/sebastianbergmann/environment/compare/6.0.0...6.0.1 -[6.0.0]: https://github.com/sebastianbergmann/environment/compare/5.1.5...6.0.0 -[5.1.5]: https://github.com/sebastianbergmann/environment/compare/5.1.4...5.1.5 -[5.1.4]: https://github.com/sebastianbergmann/environment/compare/5.1.3...5.1.4 -[5.1.3]: https://github.com/sebastianbergmann/environment/compare/5.1.2...5.1.3 -[5.1.2]: https://github.com/sebastianbergmann/environment/compare/5.1.1...5.1.2 -[5.1.1]: https://github.com/sebastianbergmann/environment/compare/5.1.0...5.1.1 -[5.1.0]: https://github.com/sebastianbergmann/environment/compare/5.0.2...5.1.0 -[5.0.2]: https://github.com/sebastianbergmann/environment/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/environment/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/environment/compare/4.2.3...5.0.0 -[4.2.3]: https://github.com/sebastianbergmann/environment/compare/4.2.2...4.2.3 -[4.2.2]: https://github.com/sebastianbergmann/environment/compare/4.2.1...4.2.2 -[4.2.1]: https://github.com/sebastianbergmann/environment/compare/4.2.0...4.2.1 -[4.2.0]: https://github.com/sebastianbergmann/environment/compare/4.1.0...4.2.0 -[4.1.0]: https://github.com/sebastianbergmann/environment/compare/4.0.2...4.1.0 -[4.0.2]: https://github.com/sebastianbergmann/environment/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/environment/compare/66691f8e2dc4641909166b275a9a4f45c0e89092...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/environment/compare/3.1.0...66691f8e2dc4641909166b275a9a4f45c0e89092 -[3.1.0]: https://github.com/sebastianbergmann/environment/compare/3.0...3.1.0 -[3.0.4]: https://github.com/sebastianbergmann/environment/compare/3.0.3...3.0.4 -[3.0.3]: https://github.com/sebastianbergmann/environment/compare/3.0.2...3.0.3 -[3.0.2]: https://github.com/sebastianbergmann/environment/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/environment/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/environment/compare/2.0...3.0.0 - diff --git a/v3_ci4/vendor/sebastian/environment/LICENSE b/v3_ci4/vendor/sebastian/environment/LICENSE deleted file mode 100644 index 845fd0b..0000000 --- a/v3_ci4/vendor/sebastian/environment/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2014-2025, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/environment/README.md b/v3_ci4/vendor/sebastian/environment/README.md deleted file mode 100644 index f91287e..0000000 --- a/v3_ci4/vendor/sebastian/environment/README.md +++ /dev/null @@ -1,21 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/environment/v)](https://packagist.org/packages/sebastian/environment) -[![CI Status](https://github.com/sebastianbergmann/environment/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/environment/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/environment/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/environment) - -# sebastian/environment - -This component provides functionality that helps writing PHP code that has runtime-specific (PHP / HHVM) execution paths. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/environment -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/environment -``` diff --git a/v3_ci4/vendor/sebastian/environment/SECURITY.md b/v3_ci4/vendor/sebastian/environment/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/environment/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/environment/composer.json b/v3_ci4/vendor/sebastian/environment/composer.json deleted file mode 100644 index 0616519..0000000 --- a/v3_ci4/vendor/sebastian/environment/composer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "sebastian/environment", - "description": "Provides functionality to handle HHVM/PHP environments", - "keywords": ["environment","hhvm","xdebug"], - "homepage": "https://github.com/sebastianbergmann/environment", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy" - }, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "prefer-stable": true, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "suggest": { - "ext-posix": "*" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "7.2-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/environment/src/Console.php b/v3_ci4/vendor/sebastian/environment/src/Console.php deleted file mode 100644 index 17b392e..0000000 --- a/v3_ci4/vendor/sebastian/environment/src/Console.php +++ /dev/null @@ -1,206 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Environment; - -use const DIRECTORY_SEPARATOR; -use const STDIN; -use const STDOUT; -use function assert; -use function defined; -use function fclose; -use function fstat; -use function function_exists; -use function getenv; -use function in_array; -use function is_array; -use function is_resource; -use function is_string; -use function posix_isatty; -use function preg_match; -use function proc_close; -use function proc_open; -use function sapi_windows_vt100_support; -use function shell_exec; -use function stream_get_contents; -use function stream_isatty; -use function strtoupper; -use function trim; - -final class Console -{ - /** - * @var int - */ - public const STDIN = 0; - - /** - * @var int - */ - public const STDOUT = 1; - - /** - * @var int - */ - public const STDERR = 2; - - /** - * Returns true if STDOUT supports colorization. - * - * This code has been copied and adapted from - * Symfony\Component\Console\Output\StreamOutput. - */ - public function hasColorSupport(): bool - { - if (!defined('STDOUT')) { - return false; - } - - if (isset($_SERVER['NO_COLOR']) || false !== getenv('NO_COLOR')) { - return false; - } - - if (!@stream_isatty(STDOUT) && - !in_array(strtoupper((string) getenv('MSYSTEM')), ['MINGW32', 'MINGW64'], true)) { - return false; - } - - if ($this->isWindows() && - function_exists('sapi_windows_vt100_support') && - @sapi_windows_vt100_support(STDOUT)) { - return true; - } - - if ('Hyper' === getenv('TERM_PROGRAM') || - false !== getenv('COLORTERM') || - false !== getenv('ANSICON') || - 'ON' === getenv('ConEmuANSI')) { - return true; - } - - if ('dumb' === $term = (string) getenv('TERM')) { - return false; - } - - return (bool) preg_match('/^((screen|xterm|vt100|vt220|putty|rxvt|ansi|cygwin|linux).*)|(.*-256(color)?(-bce)?)$/', $term); - } - - /** - * Returns the number of columns of the terminal. - * - * @codeCoverageIgnore - */ - public function getNumberOfColumns(): int - { - if (!$this->isInteractive(defined('STDIN') ? STDIN : self::STDIN)) { - return 80; - } - - if ($this->isWindows()) { - return $this->getNumberOfColumnsWindows(); - } - - return $this->getNumberOfColumnsInteractive(); - } - - /** - * Returns if the file descriptor is an interactive terminal or not. - * - * Normally, we want to use a resource as a parameter, yet sadly it's not always available, - * eg when running code in interactive console (`php -a`), STDIN/STDOUT/STDERR constants are not defined. - * - * @param int|resource $fileDescriptor - */ - public function isInteractive($fileDescriptor = self::STDOUT): bool - { - if (is_resource($fileDescriptor)) { - if (function_exists('stream_isatty') && @stream_isatty($fileDescriptor)) { - return true; - } - - if (function_exists('fstat')) { - $stat = @fstat(STDOUT); - - return $stat && 0o020000 === ($stat['mode'] & 0o170000); - } - - return false; - } - - return function_exists('posix_isatty') && @posix_isatty($fileDescriptor); - } - - private function isWindows(): bool - { - return DIRECTORY_SEPARATOR === '\\'; - } - - /** - * @codeCoverageIgnore - */ - private function getNumberOfColumnsInteractive(): int - { - if (function_exists('shell_exec') && preg_match('#\d+ (\d+)#', shell_exec('stty size') ?: '', $match) === 1) { - if ((int) $match[1] > 0) { - return (int) $match[1]; - } - } - - if (function_exists('shell_exec') && preg_match('#columns = (\d+);#', shell_exec('stty') ?: '', $match) === 1) { - if ((int) $match[1] > 0) { - return (int) $match[1]; - } - } - - return 80; - } - - /** - * @codeCoverageIgnore - */ - private function getNumberOfColumnsWindows(): int - { - $ansicon = getenv('ANSICON'); - $columns = 80; - - if (is_string($ansicon) && preg_match('/^(\d+)x\d+ \(\d+x(\d+)\)$/', trim($ansicon), $matches)) { - $columns = (int) $matches[1]; - } elseif (function_exists('proc_open')) { - $process = proc_open( - 'mode CON', - [ - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ], - $pipes, - null, - null, - ['suppress_errors' => true], - ); - - assert(is_array($pipes)); - assert(isset($pipes[1]) && is_resource($pipes[1])); - assert(isset($pipes[2]) && is_resource($pipes[2])); - - if (is_resource($process)) { - $info = stream_get_contents($pipes[1]); - - fclose($pipes[1]); - fclose($pipes[2]); - proc_close($process); - - if (preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', (string) $info, $matches)) { - $columns = (int) $matches[2]; - } - } - } - - return $columns - 1; - } -} diff --git a/v3_ci4/vendor/sebastian/environment/src/Runtime.php b/v3_ci4/vendor/sebastian/environment/src/Runtime.php deleted file mode 100644 index e711933..0000000 --- a/v3_ci4/vendor/sebastian/environment/src/Runtime.php +++ /dev/null @@ -1,292 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Environment; - -use const PHP_BINARY; -use const PHP_SAPI; -use const PHP_VERSION; -use function array_map; -use function array_merge; -use function assert; -use function escapeshellarg; -use function explode; -use function extension_loaded; -use function in_array; -use function ini_get; -use function is_array; -use function parse_ini_file; -use function php_ini_loaded_file; -use function php_ini_scanned_files; -use function phpversion; -use function sprintf; -use function strrpos; -use function version_compare; -use function xdebug_info; - -final class Runtime -{ - /** - * Returns true when Xdebug or PCOV is available or - * the runtime used is PHPDBG. - */ - public function canCollectCodeCoverage(): bool - { - if ($this->hasPHPDBGCodeCoverage()) { - return true; - } - - if ($this->hasPCOV()) { - return true; - } - - if (!$this->hasXdebug()) { - return false; - } - - $xdebugVersion = phpversion('xdebug'); - - assert($xdebugVersion !== false); - - if (version_compare($xdebugVersion, '3', '<')) { - return true; - } - - $xdebugMode = xdebug_info('mode'); - - assert(is_array($xdebugMode)); - - if (in_array('coverage', $xdebugMode, true)) { - return true; - } - - return false; - } - - /** - * Returns true when Zend OPcache is loaded, enabled, - * and is configured to discard comments. - */ - public function discardsComments(): bool - { - if (!$this->isOpcacheActive()) { - return false; - } - - if (ini_get('opcache.save_comments') !== '0') { - return false; - } - - return true; - } - - /** - * Returns true when Zend OPcache is loaded, enabled, - * and is configured to perform just-in-time compilation. - */ - public function performsJustInTimeCompilation(): bool - { - if (!$this->isOpcacheActive()) { - return false; - } - - if (ini_get('opcache.jit_buffer_size') === '0') { - return false; - } - - $jit = (string) ini_get('opcache.jit'); - - if (($jit === 'disable') || ($jit === 'off')) { - return false; - } - - if (strrpos($jit, '0') === 3) { - return false; - } - - return true; - } - - /** - * Returns the raw path to the binary of the current runtime. - * - * @deprecated - */ - public function getRawBinary(): string - { - return PHP_BINARY; - } - - /** - * Returns the escaped path to the binary of the current runtime. - * - * @deprecated - */ - public function getBinary(): string - { - return escapeshellarg(PHP_BINARY); - } - - public function getNameWithVersion(): string - { - return $this->getName() . ' ' . $this->getVersion(); - } - - public function getNameWithVersionAndCodeCoverageDriver(): string - { - if ($this->hasPCOV()) { - return sprintf( - '%s with PCOV %s', - $this->getNameWithVersion(), - phpversion('pcov'), - ); - } - - if ($this->hasXdebug()) { - return sprintf( - '%s with Xdebug %s', - $this->getNameWithVersion(), - phpversion('xdebug'), - ); - } - - return $this->getNameWithVersion(); - } - - public function getName(): string - { - if ($this->isPHPDBG()) { - // @codeCoverageIgnoreStart - return 'PHPDBG'; - // @codeCoverageIgnoreEnd - } - - return 'PHP'; - } - - public function getVendorUrl(): string - { - return 'https://www.php.net/'; - } - - public function getVersion(): string - { - return PHP_VERSION; - } - - /** - * Returns true when the runtime used is PHP and Xdebug is loaded. - */ - public function hasXdebug(): bool - { - return $this->isPHP() && extension_loaded('xdebug'); - } - - /** - * Returns true when the runtime used is PHP without the PHPDBG SAPI. - */ - public function isPHP(): bool - { - return !$this->isPHPDBG(); - } - - /** - * Returns true when the runtime used is PHP with the PHPDBG SAPI. - */ - public function isPHPDBG(): bool - { - return PHP_SAPI === 'phpdbg'; - } - - /** - * Returns true when the runtime used is PHP with the PHPDBG SAPI - * and the phpdbg_*_oplog() functions are available (PHP >= 7.0). - */ - public function hasPHPDBGCodeCoverage(): bool - { - return $this->isPHPDBG(); - } - - /** - * Returns true when the runtime used is PHP with PCOV loaded and enabled. - */ - public function hasPCOV(): bool - { - return $this->isPHP() && extension_loaded('pcov') && ini_get('pcov.enabled'); - } - - /** - * Parses the loaded php.ini file (if any) as well as all - * additional php.ini files from the additional ini dir for - * a list of all configuration settings loaded from files - * at startup. Then checks for each php.ini setting passed - * via the `$values` parameter whether this setting has - * been changed at runtime. Returns an array of strings - * where each string has the format `key=value` denoting - * the name of a changed php.ini setting with its new value. - * - * @param list $values - * - * @return array - */ - public function getCurrentSettings(array $values): array - { - $diff = []; - $files = []; - - if ($file = php_ini_loaded_file()) { - $files[] = $file; - } - - if ($scanned = php_ini_scanned_files()) { - $files = array_merge( - $files, - array_map( - 'trim', - explode(",\n", $scanned), - ), - ); - } - - foreach ($files as $ini) { - $config = parse_ini_file($ini, true); - - foreach ($values as $value) { - $set = ini_get($value); - - if (empty($set)) { - continue; - } - - if ((!isset($config[$value]) || ($set !== $config[$value]))) { - $diff[$value] = sprintf('%s=%s', $value, $set); - } - } - } - - return $diff; - } - - private function isOpcacheActive(): bool - { - if (!extension_loaded('Zend OPcache')) { - return false; - } - - if ((PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') && ini_get('opcache.enable_cli') === '1') { - return true; - } - - if (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg' && ini_get('opcache.enable') === '1') { - return true; - } - - return false; - } -} diff --git a/v3_ci4/vendor/sebastian/exporter/ChangeLog.md b/v3_ci4/vendor/sebastian/exporter/ChangeLog.md deleted file mode 100644 index aede7ce..0000000 --- a/v3_ci4/vendor/sebastian/exporter/ChangeLog.md +++ /dev/null @@ -1,29 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [6.3.2] - 2025-09-24 - -### Changed - -* Suppress `unexpected NAN value was coerced to string` warning triggered on PHP 8.5 - -## [6.3.1] - 2025-09-22 - -### Changed - -* Suppress `not representable as an int, cast occurred` warning triggered on PHP 8.5 - -## [6.3.0] - 2024-12-05 - -### Added - -* Optional constructor argument to control maximum string length - -### Deprecated - -* Optional argument for `shortenedRecursiveExport()` and `shortenedExport()` to control maximum string length - -[6.3.2]: https://github.com/sebastianbergmann/exporter/compare/6.3.1...6.3.2 -[6.3.1]: https://github.com/sebastianbergmann/exporter/compare/6.3.0...6.3.1 -[6.3.0]: https://github.com/sebastianbergmann/exporter/compare/6.2.0...6.3.0 diff --git a/v3_ci4/vendor/sebastian/exporter/LICENSE b/v3_ci4/vendor/sebastian/exporter/LICENSE deleted file mode 100644 index c5268a9..0000000 --- a/v3_ci4/vendor/sebastian/exporter/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2002-2025, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/exporter/README.md b/v3_ci4/vendor/sebastian/exporter/README.md deleted file mode 100644 index 08319df..0000000 --- a/v3_ci4/vendor/sebastian/exporter/README.md +++ /dev/null @@ -1,175 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/exporter/v)](https://packagist.org/packages/sebastian/exporter) -[![CI Status](https://github.com/sebastianbergmann/exporter/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/exporter/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/exporter/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/exporter) - -# sebastian/exporter - -This component provides the functionality to export PHP variables for visualization. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/exporter -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/exporter -``` - -## Usage - -Exporting: - -```php - '' - 'string' => '' - 'code' => 0 - 'file' => '/home/sebastianbergmann/test.php' - 'line' => 34 - 'previous' => null -) -*/ - -print $exporter->export(new Exception); -``` - -## Data Types - -Exporting simple types: - -```php -export(46); - -// 4.0 -print $exporter->export(4.0); - -// 'hello, world!' -print $exporter->export('hello, world!'); - -// false -print $exporter->export(false); - -// NAN -print $exporter->export(acos(8)); - -// -INF -print $exporter->export(log(0)); - -// null -print $exporter->export(null); - -// resource(13) of type (stream) -print $exporter->export(fopen('php://stderr', 'w')); - -// Binary String: 0x000102030405 -print $exporter->export(chr(0) . chr(1) . chr(2) . chr(3) . chr(4) . chr(5)); -``` - -Exporting complex types: - -```php - Array &1 ( - 0 => 1 - 1 => 2 - 2 => 3 - ) - 1 => Array &2 ( - 0 => '' - 1 => 0 - 2 => false - ) -) -*/ - -print $exporter->export(array(array(1,2,3), array("",0,FALSE))); - -/* -Array &0 ( - 'self' => Array &1 ( - 'self' => Array &1 - ) -) -*/ - -$array = array(); -$array['self'] = &$array; -print $exporter->export($array); - -/* -stdClass Object &0000000003a66dcc0000000025e723e2 ( - 'self' => stdClass Object &0000000003a66dcc0000000025e723e2 -) -*/ - -$obj = new stdClass(); -$obj->self = $obj; -print $exporter->export($obj); -``` - -Compact exports: - -```php -shortenedExport(array()); - -// Array (...) -print $exporter->shortenedExport(array(1,2,3,4,5)); - -// stdClass Object () -print $exporter->shortenedExport(new stdClass); - -// Exception Object (...) -print $exporter->shortenedExport(new Exception); - -// this\nis\na\nsuper\nlong\nstring\nt...\nspace -print $exporter->shortenedExport( -<<=8.2", - "ext-mbstring": "*", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_fixture" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "6.3-dev" - } - } -} - diff --git a/v3_ci4/vendor/sebastian/exporter/src/Exporter.php b/v3_ci4/vendor/sebastian/exporter/src/Exporter.php deleted file mode 100644 index e131c5c..0000000 --- a/v3_ci4/vendor/sebastian/exporter/src/Exporter.php +++ /dev/null @@ -1,461 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Exporter; - -use const COUNT_RECURSIVE; -use function assert; -use function bin2hex; -use function count; -use function get_resource_type; -use function gettype; -use function implode; -use function ini_get; -use function ini_set; -use function is_array; -use function is_bool; -use function is_float; -use function is_object; -use function is_resource; -use function is_string; -use function mb_strlen; -use function mb_substr; -use function preg_match; -use function spl_object_id; -use function sprintf; -use function str_repeat; -use function str_replace; -use function strtr; -use function var_export; -use BackedEnum; -use Google\Protobuf\Internal\Message; -use ReflectionClass; -use ReflectionObject; -use SebastianBergmann\RecursionContext\Context as RecursionContext; -use SplObjectStorage; -use stdClass; -use UnitEnum; - -final readonly class Exporter -{ - /** - * @var non-negative-int - */ - private int $shortenArraysLongerThan; - - /** - * @var positive-int - */ - private int $maxLengthForStrings; - - /** - * @param non-negative-int $shortenArraysLongerThan - * @param positive-int $maxLengthForStrings - */ - public function __construct(int $shortenArraysLongerThan = 0, int $maxLengthForStrings = 40) - { - $this->shortenArraysLongerThan = $shortenArraysLongerThan; - $this->maxLengthForStrings = $maxLengthForStrings; - } - - /** - * Exports a value as a string. - * - * The output of this method is similar to the output of print_r(), but - * improved in various aspects: - * - * - NULL is rendered as "null" (instead of "") - * - TRUE is rendered as "true" (instead of "1") - * - FALSE is rendered as "false" (instead of "") - * - Strings are always quoted with single quotes - * - Carriage returns and newlines are normalized to \n - * - Recursion and repeated rendering is treated properly - */ - public function export(mixed $value, int $indentation = 0): string - { - return $this->recursiveExport($value, $indentation); - } - - /** - * @param array $data - * @param positive-int $maxLengthForStrings - */ - public function shortenedRecursiveExport(array &$data, int $maxLengthForStrings = 40, ?RecursionContext $processed = null): string - { - if ($maxLengthForStrings === 40) { - $maxLengthForStrings = $this->maxLengthForStrings; - } - - if (!$processed) { - $processed = new RecursionContext; - } - - $overallCount = @count($data, COUNT_RECURSIVE); - $counter = 0; - - $export = $this->shortenedCountedRecursiveExport($data, $processed, $counter, $maxLengthForStrings); - - if ($this->shortenArraysLongerThan > 0 && - $overallCount > $this->shortenArraysLongerThan) { - $export .= sprintf(', ...%d more elements', $overallCount - $this->shortenArraysLongerThan); - } - - return $export; - } - - /** - * Exports a value into a single-line string. - * - * The output of this method is similar to the output of - * SebastianBergmann\Exporter\Exporter::export(). - * - * Newlines are replaced by the visible string '\n'. - * Contents of arrays and objects (if any) are replaced by '...'. - * - * @param positive-int $maxLengthForStrings - */ - public function shortenedExport(mixed $value, int $maxLengthForStrings = 40): string - { - if ($maxLengthForStrings === 40) { - $maxLengthForStrings = $this->maxLengthForStrings; - } - - if (is_string($value)) { - $string = str_replace("\n", '', $this->exportString($value)); - - if (mb_strlen($string) > $maxLengthForStrings) { - return mb_substr($string, 0, $maxLengthForStrings - 10) . '...' . mb_substr($string, -7); - } - - return $string; - } - - if ($value instanceof BackedEnum) { - return sprintf( - '%s Enum (%s, %s)', - $value::class, - $value->name, - $this->export($value->value), - ); - } - - if ($value instanceof UnitEnum) { - return sprintf( - '%s Enum (%s)', - $value::class, - $value->name, - ); - } - - if (is_object($value)) { - return sprintf( - '%s Object (%s)', - $value::class, - $this->countProperties($value) > 0 ? '...' : '', - ); - } - - if (is_array($value)) { - return sprintf( - '[%s]', - count($value) > 0 ? '...' : '', - ); - } - - return $this->export($value); - } - - /** - * Converts an object to an array containing all of its private, protected - * and public properties. - * - * @return array - */ - public function toArray(mixed $value): array - { - if (!is_object($value)) { - return (array) $value; - } - - $array = []; - - foreach ((array) $value as $key => $val) { - // Exception traces commonly reference hundreds to thousands of - // objects currently loaded in memory. Including them in the result - // has a severe negative performance impact. - if ("\0Error\0trace" === $key || "\0Exception\0trace" === $key) { - continue; - } - - // properties are transformed to keys in the following way: - // private $propertyName => "\0ClassName\0propertyName" - // protected $propertyName => "\0*\0propertyName" - // public $propertyName => "propertyName" - if (preg_match('/\0.+\0(.+)/', (string) $key, $matches)) { - $key = $matches[1]; - } - - // See https://github.com/php/php-src/commit/5721132 - if ($key === "\0gcdata") { - continue; - } - - $array[$key] = $val; - } - - // Some internal classes like SplObjectStorage do not work with the - // above (fast) mechanism nor with reflection in Zend. - // Format the output similarly to print_r() in this case - if ($value instanceof SplObjectStorage) { - foreach ($value as $_value) { - $array['Object #' . spl_object_id($_value)] = [ - 'obj' => $_value, - 'inf' => $value->getInfo(), - ]; - } - - $value->rewind(); - } - - return $array; - } - - public function countProperties(object $value): int - { - if (!$this->canBeReflected($value)) { - // @codeCoverageIgnoreStart - return count($this->toArray($value)); - // @codeCoverageIgnoreEnd - } - - if (!$value instanceof stdClass) { - // using ReflectionClass prevents initialization of potential lazy objects - return count((new ReflectionClass($value))->getProperties()); - } - - return count((new ReflectionObject($value))->getProperties()); - } - - /** - * @param array $data - * @param positive-int $maxLengthForStrings - */ - private function shortenedCountedRecursiveExport(array &$data, RecursionContext $processed, int &$counter, int $maxLengthForStrings): string - { - $result = []; - - $array = $data; - - /* @noinspection UnusedFunctionResultInspection */ - $processed->add($data); - - foreach ($array as $key => $value) { - if ($this->shortenArraysLongerThan > 0 && - $counter > $this->shortenArraysLongerThan) { - break; - } - - if (is_array($value)) { - assert(is_array($data[$key]) || is_object($data[$key])); - - if ($processed->contains($data[$key]) !== false) { - $result[] = '*RECURSION*'; - } else { - assert(is_array($data[$key])); - - $result[] = '[' . $this->shortenedCountedRecursiveExport($data[$key], $processed, $counter, $maxLengthForStrings) . ']'; - } - } else { - $result[] = $this->shortenedExport($value, $maxLengthForStrings); - } - - $counter++; - } - - return implode(', ', $result); - } - - private function recursiveExport(mixed &$value, int $indentation = 0, ?RecursionContext $processed = null): string - { - if ($value === null) { - return 'null'; - } - - if (is_bool($value)) { - return $value ? 'true' : 'false'; - } - - if (is_float($value)) { - return $this->exportFloat($value); - } - - if (gettype($value) === 'resource (closed)') { - return 'resource (closed)'; - } - - if (is_resource($value)) { - return sprintf( - 'resource(%d) of type (%s)', - (int) $value, - get_resource_type($value), - ); - } - - if ($value instanceof BackedEnum) { - return sprintf( - '%s Enum #%d (%s, %s)', - $value::class, - spl_object_id($value), - $value->name, - $this->export($value->value), - ); - } - - if ($value instanceof UnitEnum) { - return sprintf( - '%s Enum #%d (%s)', - $value::class, - spl_object_id($value), - $value->name, - ); - } - - if (is_string($value)) { - return $this->exportString($value); - } - - if (!$processed) { - $processed = new RecursionContext; - } - - if (is_array($value)) { - return $this->exportArray($value, $processed, $indentation); - } - - if (is_object($value)) { - return $this->exportObject($value, $processed, $indentation); - } - - return var_export($value, true); - } - - private function exportFloat(float $value): string - { - $precisionBackup = ini_get('precision'); - - ini_set('precision', '-1'); - - $valueAsString = @(string) $value; - - ini_set('precision', $precisionBackup); - - if ((string) @(int) $value === $valueAsString) { - return $valueAsString . '.0'; - } - - return $valueAsString; - } - - private function exportString(string $value): string - { - // Match for most non-printable chars somewhat taking multibyte chars into account - if (preg_match('/[^\x09-\x0d\x1b\x20-\xff]/', $value)) { - return 'Binary String: 0x' . bin2hex($value); - } - - return "'" . - strtr( - $value, - [ - "\r\n" => '\r\n' . "\n", - "\n\r" => '\n\r' . "\n", - "\r" => '\r' . "\n", - "\n" => '\n' . "\n", - ], - ) . - "'"; - } - - /** - * @param array $value - */ - private function exportArray(array &$value, RecursionContext $processed, int $indentation): string - { - if (($key = $processed->contains($value)) !== false) { - return 'Array &' . $key; - } - - $array = $value; - $key = $processed->add($value); - $values = ''; - - if (count($array) > 0) { - $whitespace = str_repeat(' ', 4 * $indentation); - - foreach ($array as $k => $v) { - $values .= - $whitespace - . ' ' . - $this->recursiveExport($k, $indentation) - . ' => ' . - /** @phpstan-ignore offsetAccess.invalidOffset */ - $this->recursiveExport($value[$k], $indentation + 1, $processed) - . ",\n"; - } - - $values = "\n" . $values . $whitespace; - } - - return 'Array &' . (string) $key . ' [' . $values . ']'; - } - - private function exportObject(object $value, RecursionContext $processed, int $indentation): string - { - $class = $value::class; - - if ($processed->contains($value) !== false) { - return $class . ' Object #' . spl_object_id($value); - } - - $processed->add($value); - - $array = $this->toArray($value); - $buffer = ''; - - if (count($array) > 0) { - $whitespace = str_repeat(' ', 4 * $indentation); - - foreach ($array as $k => $v) { - $buffer .= - $whitespace - . ' ' . - $this->recursiveExport($k, $indentation) - . ' => ' . - $this->recursiveExport($v, $indentation + 1, $processed) - . ",\n"; - } - - $buffer = "\n" . $buffer . $whitespace; - } - - return $class . ' Object #' . spl_object_id($value) . ' (' . $buffer . ')'; - } - - private function canBeReflected(object $object): bool - { - /** @phpstan-ignore class.notFound */ - if ($object instanceof Message) { - // @codeCoverageIgnoreStart - return false; - // @codeCoverageIgnoreEnd - } - - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/global-state/ChangeLog.md b/v3_ci4/vendor/sebastian/global-state/ChangeLog.md deleted file mode 100644 index fc9f976..0000000 --- a/v3_ci4/vendor/sebastian/global-state/ChangeLog.md +++ /dev/null @@ -1,129 +0,0 @@ -# Changes in sebastian/global-state - -All notable changes in `sebastian/global-state` are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [7.0.2] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [7.0.1] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [7.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [6.0.2] - 2024-03-02 - -### Changed - -* Do not use implicitly nullable parameters - -## [6.0.1] - 2023-07-19 - -### Changed - -* Changed usage of `ReflectionProperty::setValue()` to be compatible with PHP 8.3 - -## [6.0.0] - 2023-02-03 - -### Changed - -* Renamed `SebastianBergmann\GlobalState\ExcludeList::addStaticAttribute()` to `SebastianBergmann\GlobalState\ExcludeList::addStaticProperty()` -* Renamed `SebastianBergmann\GlobalState\ExcludeList::isStaticAttributeExcluded()` to `SebastianBergmann\GlobalState\ExcludeList::isStaticPropertyExcluded()` -* Renamed `SebastianBergmann\GlobalState\Restorer::restoreStaticAttributes()` to `SebastianBergmann\GlobalState\Restorer::restoreStaticProperties()` -* Renamed `SebastianBergmann\GlobalState\Snapshot::staticAttributes()` to `SebastianBergmann\GlobalState\Snapshot::staticProperties()` - -### Removed - -* Removed `SebastianBergmann\GlobalState\Restorer::restoreFunctions()` -* This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0 - -## [5.0.5] - 2022-02-14 - -### Fixed - -* [#34](https://github.com/sebastianbergmann/global-state/pull/34): Uninitialised typed static properties are not handled correctly - -## [5.0.4] - 2022-02-10 - -### Fixed - -* The `$includeTraits` parameter of `SebastianBergmann\GlobalState\Snapshot::__construct()` is not respected - -## [5.0.3] - 2021-06-11 - -### Changed - -* `SebastianBergmann\GlobalState\CodeExporter::globalVariables()` now generates code that is compatible with PHP 8.1 - -## [5.0.2] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\GlobalState\Exception` now correctly extends `\Throwable` - -## [5.0.1] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [5.0.0] - 2020-08-07 - -### Changed - -* The `SebastianBergmann\GlobalState\Blacklist` class has been renamed to `SebastianBergmann\GlobalState\ExcludeList` - -## [4.0.0] - 2020-02-07 - -### Removed - -* This component is no longer supported on PHP 7.2 - -## [3.0.2] - 2022-02-10 - -### Fixed - -* The `$includeTraits` parameter of `SebastianBergmann\GlobalState\Snapshot::__construct()` is not respected - -## [3.0.1] - 2020-11-30 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.2` to `>=7.2` - -## [3.0.0] - 2019-02-01 - -### Changed - -* `Snapshot::canBeSerialized()` now recursively checks arrays and object graphs for variables that cannot be serialized - -### Removed - -* This component is no longer supported on PHP 7.0 and PHP 7.1 - -[7.0.2]: https://github.com/sebastianbergmann/global-state/compare/7.0.1...7.0.2 -[7.0.1]: https://github.com/sebastianbergmann/global-state/compare/7.0.0...7.0.1 -[7.0.0]: https://github.com/sebastianbergmann/global-state/compare/6.0...7.0.0 -[6.0.2]: https://github.com/sebastianbergmann/global-state/compare/6.0.1...6.0.2 -[6.0.1]: https://github.com/sebastianbergmann/global-state/compare/6.0.0...6.0.1 -[6.0.0]: https://github.com/sebastianbergmann/global-state/compare/5.0.5...6.0.0 -[5.0.5]: https://github.com/sebastianbergmann/global-state/compare/5.0.4...5.0.5 -[5.0.4]: https://github.com/sebastianbergmann/global-state/compare/5.0.3...5.0.4 -[5.0.3]: https://github.com/sebastianbergmann/global-state/compare/5.0.2...5.0.3 -[5.0.2]: https://github.com/sebastianbergmann/global-state/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/global-state/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/global-state/compare/4.0.0...5.0.0 -[4.0.0]: https://github.com/sebastianbergmann/global-state/compare/3.0.2...4.0.0 -[3.0.2]: https://github.com/sebastianbergmann/phpunit/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/phpunit/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/phpunit/compare/2.0.0...3.0.0 - diff --git a/v3_ci4/vendor/sebastian/global-state/LICENSE b/v3_ci4/vendor/sebastian/global-state/LICENSE deleted file mode 100644 index bdb57ec..0000000 --- a/v3_ci4/vendor/sebastian/global-state/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2001-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/global-state/README.md b/v3_ci4/vendor/sebastian/global-state/README.md deleted file mode 100644 index 4e6b081..0000000 --- a/v3_ci4/vendor/sebastian/global-state/README.md +++ /dev/null @@ -1,21 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/global-state/v/stable.png)](https://packagist.org/packages/sebastian/global-state) -[![CI Status](https://github.com/sebastianbergmann/global-state/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/global-state/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/global-state/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/global-state) - -# sebastian/global-state - -Snapshotting of global state, factored out of PHPUnit into a stand-alone component. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/global-state -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/global-state -``` diff --git a/v3_ci4/vendor/sebastian/global-state/SECURITY.md b/v3_ci4/vendor/sebastian/global-state/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/global-state/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/global-state/composer.json b/v3_ci4/vendor/sebastian/global-state/composer.json deleted file mode 100644 index 95fb1f0..0000000 --- a/v3_ci4/vendor/sebastian/global-state/composer.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "sebastian/global-state", - "description": "Snapshotting of global state", - "keywords": ["global state"], - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy" - }, - "prefer-stable": true, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^11.0" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_fixture/" - ], - "files": [ - "tests/_fixture/SnapshotFunctions.php" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/global-state/src/CodeExporter.php b/v3_ci4/vendor/sebastian/global-state/src/CodeExporter.php deleted file mode 100644 index d3238e5..0000000 --- a/v3_ci4/vendor/sebastian/global-state/src/CodeExporter.php +++ /dev/null @@ -1,109 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use const PHP_EOL; -use function is_array; -use function is_scalar; -use function serialize; -use function sprintf; -use function var_export; - -final class CodeExporter -{ - public function constants(Snapshot $snapshot): string - { - $result = ''; - - foreach ($snapshot->constants() as $name => $value) { - $result .= sprintf( - 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n", - $name, - $name, - $this->exportVariable($value), - ); - } - - return $result; - } - - public function globalVariables(Snapshot $snapshot): string - { - $result = <<<'EOT' -call_user_func( - function () - { - foreach (array_keys($GLOBALS) as $key) { - unset($GLOBALS[$key]); - } - } -); - - -EOT; - - foreach ($snapshot->globalVariables() as $name => $value) { - $result .= sprintf( - '$GLOBALS[%s] = %s;' . PHP_EOL, - $this->exportVariable($name), - $this->exportVariable($value), - ); - } - - return $result; - } - - public function iniSettings(Snapshot $snapshot): string - { - $result = ''; - - foreach ($snapshot->iniSettings() as $key => $value) { - $result .= sprintf( - '@ini_set(%s, %s);' . "\n", - $this->exportVariable($key), - $this->exportVariable($value), - ); - } - - return $result; - } - - private function exportVariable(mixed $variable): string - { - if (is_scalar($variable) || null === $variable || - (is_array($variable) && $this->arrayOnlyContainsScalars($variable))) { - return var_export($variable, true); - } - - return 'unserialize(' . var_export(serialize($variable), true) . ')'; - } - - /** - * @param array $array - */ - private function arrayOnlyContainsScalars(array $array): bool - { - $result = true; - - foreach ($array as $element) { - if (is_array($element)) { - $result = $this->arrayOnlyContainsScalars($element); - } elseif (!is_scalar($element) && null !== $element) { - $result = false; - } - - if ($result === false) { - break; - } - } - - return $result; - } -} diff --git a/v3_ci4/vendor/sebastian/global-state/src/ExcludeList.php b/v3_ci4/vendor/sebastian/global-state/src/ExcludeList.php deleted file mode 100644 index 07c29a0..0000000 --- a/v3_ci4/vendor/sebastian/global-state/src/ExcludeList.php +++ /dev/null @@ -1,138 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use function in_array; -use function str_starts_with; -use ReflectionClass; - -final class ExcludeList -{ - /** - * @var array - */ - private array $globalVariables = []; - - /** - * @var list - */ - private array $classes = []; - - /** - * @var list - */ - private array $classNamePrefixes = []; - - /** - * @var list - */ - private array $parentClasses = []; - - /** - * @var list - */ - private array $interfaces = []; - - /** - * @var array> - */ - private array $staticProperties = []; - - /** - * @param non-empty-string $variableName - */ - public function addGlobalVariable(string $variableName): void - { - $this->globalVariables[$variableName] = true; - } - - /** - * @param non-empty-string $className - */ - public function addClass(string $className): void - { - $this->classes[] = $className; - } - - /** - * @param non-empty-string $className - */ - public function addSubclassesOf(string $className): void - { - $this->parentClasses[] = $className; - } - - /** - * @param non-empty-string $interfaceName - */ - public function addImplementorsOf(string $interfaceName): void - { - $this->interfaces[] = $interfaceName; - } - - /** - * @param non-empty-string $classNamePrefix - */ - public function addClassNamePrefix(string $classNamePrefix): void - { - $this->classNamePrefixes[] = $classNamePrefix; - } - - /** - * @param non-empty-string $className - * @param non-empty-string $propertyName - */ - public function addStaticProperty(string $className, string $propertyName): void - { - if (!isset($this->staticProperties[$className])) { - $this->staticProperties[$className] = []; - } - - $this->staticProperties[$className][$propertyName] = true; - } - - public function isGlobalVariableExcluded(string $variableName): bool - { - return isset($this->globalVariables[$variableName]); - } - - /** - * @param class-string $className - * @param non-empty-string $propertyName - */ - public function isStaticPropertyExcluded(string $className, string $propertyName): bool - { - if (in_array($className, $this->classes, true)) { - return true; - } - - foreach ($this->classNamePrefixes as $prefix) { - if (str_starts_with($className, $prefix)) { - return true; - } - } - - $class = new ReflectionClass($className); - - foreach ($this->parentClasses as $type) { - if ($class->isSubclassOf($type)) { - return true; - } - } - - foreach ($this->interfaces as $type) { - if ($class->implementsInterface($type)) { - return true; - } - } - - return isset($this->staticProperties[$className][$propertyName]); - } -} diff --git a/v3_ci4/vendor/sebastian/global-state/src/Restorer.php b/v3_ci4/vendor/sebastian/global-state/src/Restorer.php deleted file mode 100644 index 2a08a5e..0000000 --- a/v3_ci4/vendor/sebastian/global-state/src/Restorer.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use function array_diff; -use function array_key_exists; -use function array_keys; -use function array_merge; -use function in_array; -use function is_array; -use ReflectionClass; -use ReflectionProperty; - -final class Restorer -{ - public function restoreGlobalVariables(Snapshot $snapshot): void - { - $superGlobalArrays = $snapshot->superGlobalArrays(); - - foreach ($superGlobalArrays as $superGlobalArray) { - $this->restoreSuperGlobalArray($snapshot, $superGlobalArray); - } - - $globalVariables = $snapshot->globalVariables(); - - foreach (array_keys($GLOBALS) as $key) { - if ($key !== 'GLOBALS' && - !in_array($key, $superGlobalArrays, true) && - !$snapshot->excludeList()->isGlobalVariableExcluded((string) $key)) { - if (array_key_exists($key, $globalVariables)) { - $GLOBALS[$key] = $globalVariables[$key]; - } else { - unset($GLOBALS[$key]); - } - } - } - } - - public function restoreStaticProperties(Snapshot $snapshot): void - { - $current = new Snapshot($snapshot->excludeList(), false, false, false, false, true, false, false, false, false); - $newClasses = array_diff($current->classes(), $snapshot->classes()); - - unset($current); - - foreach ($snapshot->staticProperties() as $className => $staticProperties) { - foreach ($staticProperties as $name => $value) { - $reflector = new ReflectionProperty($className, $name); - $reflector->setValue(null, $value); - } - } - - foreach ($newClasses as $className) { - $class = new ReflectionClass($className); - $defaults = $class->getDefaultProperties(); - - foreach ($class->getProperties() as $property) { - if (!$property->isStatic()) { - continue; - } - - $name = $property->getName(); - - if ($snapshot->excludeList()->isStaticPropertyExcluded($className, $name)) { - continue; - } - - if (!isset($defaults[$name])) { - continue; - } - - $property->setValue(null, $defaults[$name]); - } - } - } - - private function restoreSuperGlobalArray(Snapshot $snapshot, string $superGlobalArray): void - { - $superGlobalVariables = $snapshot->superGlobalVariables(); - - if (isset($GLOBALS[$superGlobalArray], $superGlobalVariables[$superGlobalArray]) && - is_array($GLOBALS[$superGlobalArray])) { - $keys = array_keys( - array_merge( - $GLOBALS[$superGlobalArray], - $superGlobalVariables[$superGlobalArray], - ), - ); - - foreach ($keys as $key) { - if (isset($superGlobalVariables[$superGlobalArray][$key])) { - $GLOBALS[$superGlobalArray][$key] = $superGlobalVariables[$superGlobalArray][$key]; - } else { - unset($GLOBALS[$superGlobalArray][$key]); - } - } - } - } -} diff --git a/v3_ci4/vendor/sebastian/global-state/src/Snapshot.php b/v3_ci4/vendor/sebastian/global-state/src/Snapshot.php deleted file mode 100644 index e8b7a16..0000000 --- a/v3_ci4/vendor/sebastian/global-state/src/Snapshot.php +++ /dev/null @@ -1,447 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use function array_keys; -use function array_merge; -use function array_reverse; -use function assert; -use function get_declared_classes; -use function get_declared_interfaces; -use function get_declared_traits; -use function get_defined_constants; -use function get_defined_functions; -use function get_included_files; -use function in_array; -use function ini_get_all; -use function is_array; -use function is_object; -use function is_resource; -use function is_scalar; -use function serialize; -use function unserialize; -use ReflectionClass; -use SebastianBergmann\ObjectReflector\ObjectReflector; -use SebastianBergmann\RecursionContext\Context; -use Throwable; - -/** - * A snapshot of global state. - */ -final class Snapshot -{ - private ExcludeList $excludeList; - - /** - * @var array - */ - private array $globalVariables = []; - - /** - * @var list - */ - private array $superGlobalArrays = []; - - /** - * @var array> - */ - private array $superGlobalVariables = []; - - /** - * @var array> - */ - private array $staticProperties = []; - - /** - * @var array - */ - private array $iniSettings = []; - - /** - * @var list - */ - private array $includedFiles = []; - - /** - * @var array - */ - private array $constants = []; - - /** - * @var list - */ - private array $functions = []; - - /** - * @var list - */ - private array $interfaces = []; - - /** - * @var list - */ - private array $classes = []; - - /** - * @var list - */ - private array $traits = []; - - public function __construct(?ExcludeList $excludeList = null, bool $includeGlobalVariables = true, bool $includeStaticProperties = true, bool $includeConstants = true, bool $includeFunctions = true, bool $includeClasses = true, bool $includeInterfaces = true, bool $includeTraits = true, bool $includeIniSettings = true, bool $includeIncludedFiles = true) - { - $this->excludeList = $excludeList ?: new ExcludeList; - - if ($includeConstants) { - $this->snapshotConstants(); - } - - if ($includeFunctions) { - $this->snapshotFunctions(); - } - - if ($includeClasses || $includeStaticProperties) { - $this->snapshotClasses(); - } - - if ($includeInterfaces) { - $this->snapshotInterfaces(); - } - - if ($includeGlobalVariables) { - $this->setupSuperGlobalArrays(); - $this->snapshotGlobals(); - } - - if ($includeStaticProperties) { - $this->snapshotStaticProperties(); - } - - if ($includeIniSettings) { - $iniSettings = ini_get_all(null, false); - - assert($iniSettings !== false); - - $this->iniSettings = $iniSettings; - } - - if ($includeIncludedFiles) { - $this->includedFiles = get_included_files(); - } - - if ($includeTraits) { - $this->traits = get_declared_traits(); - } - } - - public function excludeList(): ExcludeList - { - return $this->excludeList; - } - - /** - * @return array - */ - public function globalVariables(): array - { - return $this->globalVariables; - } - - /** - * @return array> - */ - public function superGlobalVariables(): array - { - return $this->superGlobalVariables; - } - - /** - * @return list - */ - public function superGlobalArrays(): array - { - return $this->superGlobalArrays; - } - - /** - * @return array> - */ - public function staticProperties(): array - { - return $this->staticProperties; - } - - /** - * @return array - */ - public function iniSettings(): array - { - return $this->iniSettings; - } - - /** - * @return list - */ - public function includedFiles(): array - { - return $this->includedFiles; - } - - /** - * @return array - */ - public function constants(): array - { - return $this->constants; - } - - /** - * @return list - */ - public function functions(): array - { - return $this->functions; - } - - /** - * @return list - */ - public function interfaces(): array - { - return $this->interfaces; - } - - /** - * @return list - */ - public function classes(): array - { - return $this->classes; - } - - /** - * @return list - */ - public function traits(): array - { - return $this->traits; - } - - private function snapshotConstants(): void - { - $constants = get_defined_constants(true); - - if (isset($constants['user'])) { - $this->constants = $constants['user']; - } - } - - private function snapshotFunctions(): void - { - $functions = get_defined_functions(); - - $this->functions = $functions['user']; - } - - private function snapshotClasses(): void - { - foreach (array_reverse(get_declared_classes()) as $className) { - $class = new ReflectionClass($className); - - if (!$class->isUserDefined()) { - break; - } - - $this->classes[] = $className; - } - - $this->classes = array_reverse($this->classes); - } - - private function snapshotInterfaces(): void - { - foreach (array_reverse(get_declared_interfaces()) as $interfaceName) { - $class = new ReflectionClass($interfaceName); - - if (!$class->isUserDefined()) { - break; - } - - $this->interfaces[] = $interfaceName; - } - - $this->interfaces = array_reverse($this->interfaces); - } - - private function snapshotGlobals(): void - { - $superGlobalArrays = $this->superGlobalArrays(); - - foreach ($superGlobalArrays as $superGlobalArray) { - $this->snapshotSuperGlobalArray($superGlobalArray); - } - - foreach (array_keys($GLOBALS) as $key) { - if ($key !== 'GLOBALS' && - !in_array($key, $superGlobalArrays, true) && - $this->canBeSerialized($GLOBALS[$key]) && - !$this->excludeList->isGlobalVariableExcluded($key)) { - /* @noinspection UnserializeExploitsInspection */ - $this->globalVariables[$key] = unserialize(serialize($GLOBALS[$key])); - } - } - } - - private function snapshotSuperGlobalArray(string $superGlobalArray): void - { - $this->superGlobalVariables[$superGlobalArray] = []; - - if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray])) { - foreach ($GLOBALS[$superGlobalArray] as $key => $value) { - /* @noinspection UnserializeExploitsInspection */ - $this->superGlobalVariables[$superGlobalArray][$key] = unserialize(serialize($value)); - } - } - } - - private function snapshotStaticProperties(): void - { - foreach ($this->classes as $className) { - $class = new ReflectionClass($className); - $snapshot = []; - - foreach ($class->getProperties() as $property) { - if ($property->isStatic()) { - $name = $property->getName(); - - if ($this->excludeList->isStaticPropertyExcluded($className, $name)) { - continue; - } - - if (!$property->isInitialized()) { - continue; - } - - $value = $property->getValue(); - - if ($this->canBeSerialized($value)) { - /* @noinspection UnserializeExploitsInspection */ - $snapshot[$name] = unserialize(serialize($value)); - } - } - } - - if (!empty($snapshot)) { - $this->staticProperties[$className] = $snapshot; - } - } - } - - private function setupSuperGlobalArrays(): void - { - $this->superGlobalArrays = [ - '_ENV', - '_POST', - '_GET', - '_COOKIE', - '_SERVER', - '_FILES', - '_REQUEST', - ]; - } - - private function canBeSerialized(mixed $variable): bool - { - if (is_scalar($variable) || $variable === null) { - return true; - } - - if (is_resource($variable)) { - return false; - } - - foreach ($this->enumerateObjectsAndResources($variable) as $value) { - if (is_resource($value)) { - return false; - } - - if (is_object($value)) { - $class = new ReflectionClass($value); - - if ($class->isAnonymous()) { - return false; - } - - try { - @serialize($value); - } catch (Throwable $t) { - return false; - } - } - } - - return true; - } - - /** - * @return array - */ - private function enumerateObjectsAndResources(mixed $variable, Context $processed = new Context): array - { - $result = []; - - if ($processed->contains($variable)) { - return $result; - } - - $array = $variable; - - /* @noinspection UnusedFunctionResultInspection */ - $processed->add($variable); - - if (is_array($variable)) { - /** @phpstan-ignore foreach.nonIterable */ - foreach ($array as $element) { - if (!is_array($element) && !is_object($element) && !is_resource($element)) { - continue; - } - - if (!is_resource($element)) { - /** @noinspection SlowArrayOperationsInLoopInspection */ - $result = array_merge( - $result, - $this->enumerateObjectsAndResources($element, $processed), - ); - } else { - $result[] = $element; - } - } - } else { - $result[] = $variable; - - foreach ((new ObjectReflector)->getProperties($variable) as $value) { - if (!is_array($value) && !is_object($value) && !is_resource($value)) { - continue; - } - - if (!is_resource($value)) { - /** @noinspection SlowArrayOperationsInLoopInspection */ - $result = array_merge( - $result, - $this->enumerateObjectsAndResources($value, $processed), - ); - } else { - $result[] = $value; - } - } - } - - return $result; - } -} diff --git a/v3_ci4/vendor/sebastian/global-state/src/exceptions/Exception.php b/v3_ci4/vendor/sebastian/global-state/src/exceptions/Exception.php deleted file mode 100644 index 9443200..0000000 --- a/v3_ci4/vendor/sebastian/global-state/src/exceptions/Exception.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use Throwable; - -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/sebastian/global-state/src/exceptions/RuntimeException.php b/v3_ci4/vendor/sebastian/global-state/src/exceptions/RuntimeException.php deleted file mode 100644 index 79f02a1..0000000 --- a/v3_ci4/vendor/sebastian/global-state/src/exceptions/RuntimeException.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -final class RuntimeException extends \RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/lines-of-code/ChangeLog.md b/v3_ci4/vendor/sebastian/lines-of-code/ChangeLog.md deleted file mode 100644 index d4e0905..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/ChangeLog.md +++ /dev/null @@ -1,70 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [3.0.1] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [3.0.0] - 2024-02-02 - -### Removed - -* This component now requires PHP-Parser 5 -* This component is no longer supported on PHP 8.1 - -## [2.0.2] - 2023-12-21 - -### Changed - -* This component is now compatible with `nikic/php-parser` 5.0 - -## [2.0.1] - 2023-08-31 - -### Changed - -* Improved type information - -## [2.0.0] - 2023-02-03 - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0 - -## [1.0.3] - 2020-11-28 - -### Fixed - -* Files that do not contain a newline were not handled correctly - -### Changed - -* A line of code is no longer considered to be a Logical Line of Code if it does not contain an `Expr` node - -## [1.0.2] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\LinesOfCode\Exception` now correctly extends `\Throwable` - -## [1.0.1] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [1.0.0] - 2020-07-22 - -* Initial release - -[3.0.1]: https://github.com/sebastianbergmann/lines-of-code/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/lines-of-code/compare/2.0...3.0.0 -[2.0.2]: https://github.com/sebastianbergmann/lines-of-code/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/sebastianbergmann/lines-of-code/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.3...2.0.0 -[1.0.3]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.2...1.0.3 -[1.0.2]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.1...1.0.2 -[1.0.1]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.0...1.0.1 -[1.0.0]: https://github.com/sebastianbergmann/lines-of-code/compare/f959e71f00e591288acc024afe9cb966c6cf9bd6...1.0.0 diff --git a/v3_ci4/vendor/sebastian/lines-of-code/LICENSE b/v3_ci4/vendor/sebastian/lines-of-code/LICENSE deleted file mode 100644 index edaedf6..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2020-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/lines-of-code/README.md b/v3_ci4/vendor/sebastian/lines-of-code/README.md deleted file mode 100644 index d98eab4..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/README.md +++ /dev/null @@ -1,21 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/lines-of-code/v/stable.png)](https://packagist.org/packages/sebastian/lines-of-code) -[![CI Status](https://github.com/sebastianbergmann/lines-of-code/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/lines-of-code/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/lines-of-code/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/lines-of-code) - -# sebastian/lines-of-code - -Library for counting the lines of code in PHP source code. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/lines-of-code -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/lines-of-code -``` diff --git a/v3_ci4/vendor/sebastian/lines-of-code/SECURITY.md b/v3_ci4/vendor/sebastian/lines-of-code/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/lines-of-code/composer.json b/v3_ci4/vendor/sebastian/lines-of-code/composer.json deleted file mode 100644 index 46f1243..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/composer.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "sebastian/lines-of-code", - "description": "Library for counting the lines of code in PHP source code", - "type": "library", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy" - }, - "prefer-stable": true, - "require": { - "php": ">=8.2", - "nikic/php-parser": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "config": { - "platform": { - "php": "8.2" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/lines-of-code/src/Counter.php b/v3_ci4/vendor/sebastian/lines-of-code/src/Counter.php deleted file mode 100644 index 2baed4b..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/src/Counter.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\LinesOfCode; - -use function assert; -use function file_get_contents; -use function substr_count; -use PhpParser\Error; -use PhpParser\Node; -use PhpParser\NodeTraverser; -use PhpParser\ParserFactory; - -final class Counter -{ - /** - * @throws RuntimeException - */ - public function countInSourceFile(string $sourceFile): LinesOfCode - { - $source = file_get_contents($sourceFile); - - assert($source !== false); - - return $this->countInSourceString($source); - } - - /** - * @throws RuntimeException - */ - public function countInSourceString(string $source): LinesOfCode - { - $linesOfCode = substr_count($source, "\n"); - - if ($linesOfCode === 0 && !empty($source)) { - $linesOfCode = 1; - } - - try { - $nodes = (new ParserFactory)->createForHostVersion()->parse($source); - - assert($nodes !== null); - - return $this->countInAbstractSyntaxTree($linesOfCode, $nodes); - - // @codeCoverageIgnoreStart - } catch (Error $error) { - throw new RuntimeException( - $error->getMessage(), - $error->getCode(), - $error, - ); - } - // @codeCoverageIgnoreEnd - } - - /** - * @param non-negative-int $linesOfCode - * @param Node[] $nodes - * - * @throws RuntimeException - */ - public function countInAbstractSyntaxTree(int $linesOfCode, array $nodes): LinesOfCode - { - $traverser = new NodeTraverser; - $visitor = new LineCountingVisitor($linesOfCode); - - $traverser->addVisitor($visitor); - - try { - /* @noinspection UnusedFunctionResultInspection */ - $traverser->traverse($nodes); - // @codeCoverageIgnoreStart - } catch (Error $error) { - throw new RuntimeException( - $error->getMessage(), - $error->getCode(), - $error, - ); - } - // @codeCoverageIgnoreEnd - - return $visitor->result(); - } -} diff --git a/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/Exception.php b/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/Exception.php deleted file mode 100644 index 11d543a..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/Exception.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\LinesOfCode; - -use Throwable; - -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php b/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php deleted file mode 100644 index 46a5c1b..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\LinesOfCode; - -use LogicException; - -final class IllogicalValuesException extends LogicException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php b/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php deleted file mode 100644 index 40d27e1..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\LinesOfCode; - -use InvalidArgumentException; - -final class NegativeValueException extends InvalidArgumentException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php b/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php deleted file mode 100644 index 4e6d66d..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\LinesOfCode; - -final class RuntimeException extends \RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/lines-of-code/src/LineCountingVisitor.php b/v3_ci4/vendor/sebastian/lines-of-code/src/LineCountingVisitor.php deleted file mode 100644 index fd36675..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/src/LineCountingVisitor.php +++ /dev/null @@ -1,92 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\LinesOfCode; - -use function array_merge; -use function array_unique; -use function assert; -use function count; -use PhpParser\Comment; -use PhpParser\Node; -use PhpParser\Node\Expr; -use PhpParser\NodeVisitorAbstract; - -final class LineCountingVisitor extends NodeVisitorAbstract -{ - /** - * @var non-negative-int - */ - private readonly int $linesOfCode; - - /** - * @var Comment[] - */ - private array $comments = []; - - /** - * @var int[] - */ - private array $linesWithStatements = []; - - /** - * @param non-negative-int $linesOfCode - */ - public function __construct(int $linesOfCode) - { - $this->linesOfCode = $linesOfCode; - } - - public function enterNode(Node $node): void - { - $this->comments = array_merge($this->comments, $node->getComments()); - - if (!$node instanceof Expr) { - return; - } - - $this->linesWithStatements[] = $node->getStartLine(); - } - - public function result(): LinesOfCode - { - $commentLinesOfCode = 0; - - foreach ($this->comments() as $comment) { - $commentLinesOfCode += ($comment->getEndLine() - $comment->getStartLine() + 1); - } - - $nonCommentLinesOfCode = $this->linesOfCode - $commentLinesOfCode; - $logicalLinesOfCode = count(array_unique($this->linesWithStatements)); - - assert($commentLinesOfCode >= 0); - assert($nonCommentLinesOfCode >= 0); - - return new LinesOfCode( - $this->linesOfCode, - $commentLinesOfCode, - $nonCommentLinesOfCode, - $logicalLinesOfCode, - ); - } - - /** - * @return Comment[] - */ - private function comments(): array - { - $comments = []; - - foreach ($this->comments as $comment) { - $comments[$comment->getStartLine() . '_' . $comment->getStartTokenPos() . '_' . $comment->getEndLine() . '_' . $comment->getEndTokenPos()] = $comment; - } - - return $comments; - } -} diff --git a/v3_ci4/vendor/sebastian/lines-of-code/src/LinesOfCode.php b/v3_ci4/vendor/sebastian/lines-of-code/src/LinesOfCode.php deleted file mode 100644 index 890d961..0000000 --- a/v3_ci4/vendor/sebastian/lines-of-code/src/LinesOfCode.php +++ /dev/null @@ -1,119 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\LinesOfCode; - -/** - * @immutable - */ -final readonly class LinesOfCode -{ - /** - * @var non-negative-int - */ - private int $linesOfCode; - - /** - * @var non-negative-int - */ - private int $commentLinesOfCode; - - /** - * @var non-negative-int - */ - private int $nonCommentLinesOfCode; - - /** - * @var non-negative-int - */ - private int $logicalLinesOfCode; - - /** - * @param non-negative-int $linesOfCode - * @param non-negative-int $commentLinesOfCode - * @param non-negative-int $nonCommentLinesOfCode - * @param non-negative-int $logicalLinesOfCode - * - * @throws IllogicalValuesException - * @throws NegativeValueException - */ - public function __construct(int $linesOfCode, int $commentLinesOfCode, int $nonCommentLinesOfCode, int $logicalLinesOfCode) - { - /** @phpstan-ignore smaller.alwaysFalse */ - if ($linesOfCode < 0) { - throw new NegativeValueException('$linesOfCode must not be negative'); - } - - /** @phpstan-ignore smaller.alwaysFalse */ - if ($commentLinesOfCode < 0) { - throw new NegativeValueException('$commentLinesOfCode must not be negative'); - } - - /** @phpstan-ignore smaller.alwaysFalse */ - if ($nonCommentLinesOfCode < 0) { - throw new NegativeValueException('$nonCommentLinesOfCode must not be negative'); - } - - /** @phpstan-ignore smaller.alwaysFalse */ - if ($logicalLinesOfCode < 0) { - throw new NegativeValueException('$logicalLinesOfCode must not be negative'); - } - - if ($linesOfCode - $commentLinesOfCode !== $nonCommentLinesOfCode) { - throw new IllogicalValuesException('$linesOfCode !== $commentLinesOfCode + $nonCommentLinesOfCode'); - } - - $this->linesOfCode = $linesOfCode; - $this->commentLinesOfCode = $commentLinesOfCode; - $this->nonCommentLinesOfCode = $nonCommentLinesOfCode; - $this->logicalLinesOfCode = $logicalLinesOfCode; - } - - /** - * @return non-negative-int - */ - public function linesOfCode(): int - { - return $this->linesOfCode; - } - - /** - * @return non-negative-int - */ - public function commentLinesOfCode(): int - { - return $this->commentLinesOfCode; - } - - /** - * @return non-negative-int - */ - public function nonCommentLinesOfCode(): int - { - return $this->nonCommentLinesOfCode; - } - - /** - * @return non-negative-int - */ - public function logicalLinesOfCode(): int - { - return $this->logicalLinesOfCode; - } - - public function plus(self $other): self - { - return new self( - $this->linesOfCode() + $other->linesOfCode(), - $this->commentLinesOfCode() + $other->commentLinesOfCode(), - $this->nonCommentLinesOfCode() + $other->nonCommentLinesOfCode(), - $this->logicalLinesOfCode() + $other->logicalLinesOfCode(), - ); - } -} diff --git a/v3_ci4/vendor/sebastian/object-enumerator/ChangeLog.md b/v3_ci4/vendor/sebastian/object-enumerator/ChangeLog.md deleted file mode 100644 index a407f12..0000000 --- a/v3_ci4/vendor/sebastian/object-enumerator/ChangeLog.md +++ /dev/null @@ -1,109 +0,0 @@ -# Change Log - -All notable changes to `sebastianbergmann/object-enumerator` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [6.0.1] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [6.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [5.0.0] - 2023-02-03 - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0 - -## [4.0.4] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\ObjectEnumerator\Exception` now correctly extends `\Throwable` - -## [4.0.3] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [4.0.2] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [4.0.1] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -## [4.0.0] - 2020-02-07 - -### Removed - -* This component is no longer supported on PHP 7.0, PHP 7.1, and PHP 7.2 - -## [3.0.3] - 2017-08-03 - -### Changed - -* Bumped required version of `sebastian/object-reflector` - -## [3.0.2] - 2017-03-12 - -### Changed - -* `sebastian/object-reflector` is now a dependency - -## [3.0.1] - 2017-03-12 - -### Fixed - -* Objects aggregated in inherited attributes are not enumerated - -## [3.0.0] - 2017-03-03 - -### Removed - -* This component is no longer supported on PHP 5.6 - -## [2.0.1] - 2017-02-18 - -### Fixed - -* Fixed [#2](https://github.com/sebastianbergmann/phpunit/pull/2): Exceptions in `ReflectionProperty::getValue()` are not handled - -## [2.0.0] - 2016-11-19 - -### Changed - -* This component is now compatible with `sebastian/recursion-context: ~1.0.4` - -## 1.0.0 - 2016-02-04 - -### Added - -* Initial release - -[6.0.1]: https://github.com/sebastianbergmann/object-enumerator/compare/6.0.0...6.0.1 -[6.0.0]: https://github.com/sebastianbergmann/object-enumerator/compare/5.0...6.0.0 -[5.0.0]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.4...5.0.0 -[4.0.4]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.3...4.0.4 -[4.0.3]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.3...4.0.0 -[3.0.3]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.2...3.0.3 -[3.0.2]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/object-enumerator/compare/2.0...3.0.0 -[2.0.1]: https://github.com/sebastianbergmann/object-enumerator/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/object-enumerator/compare/1.0...2.0.0 - diff --git a/v3_ci4/vendor/sebastian/object-enumerator/LICENSE b/v3_ci4/vendor/sebastian/object-enumerator/LICENSE deleted file mode 100644 index 86c455d..0000000 --- a/v3_ci4/vendor/sebastian/object-enumerator/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2016-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/object-enumerator/README.md b/v3_ci4/vendor/sebastian/object-enumerator/README.md deleted file mode 100644 index 2dab157..0000000 --- a/v3_ci4/vendor/sebastian/object-enumerator/README.md +++ /dev/null @@ -1,21 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/object-enumerator/v/stable.png)](https://packagist.org/packages/sebastian/object-enumerator) -[![CI Status](https://github.com/sebastianbergmann/object-enumerator/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/object-enumerator/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/object-enumerator/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/object-enumerator) - -# sebastian/object-enumerator - -Traverses array structures and object graphs to enumerate all referenced objects. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/object-enumerator -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/object-enumerator -``` diff --git a/v3_ci4/vendor/sebastian/object-enumerator/SECURITY.md b/v3_ci4/vendor/sebastian/object-enumerator/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/object-enumerator/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/object-enumerator/composer.json b/v3_ci4/vendor/sebastian/object-enumerator/composer.json deleted file mode 100644 index 333d744..0000000 --- a/v3_ci4/vendor/sebastian/object-enumerator/composer.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "sebastian/object-enumerator", - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy" - }, - "prefer-stable": true, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_fixture/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/object-enumerator/src/Enumerator.php b/v3_ci4/vendor/sebastian/object-enumerator/src/Enumerator.php deleted file mode 100644 index d67d863..0000000 --- a/v3_ci4/vendor/sebastian/object-enumerator/src/Enumerator.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\ObjectEnumerator; - -use function array_merge; -use function is_array; -use function is_object; -use SebastianBergmann\ObjectReflector\ObjectReflector; -use SebastianBergmann\RecursionContext\Context; - -final class Enumerator -{ - /** - * @param array|object $variable - * - * @return list - */ - public function enumerate(array|object $variable, Context $processed = new Context): array - { - $objects = []; - - if ($processed->contains($variable)) { - return $objects; - } - - $array = $variable; - - /* @noinspection UnusedFunctionResultInspection */ - $processed->add($variable); - - if (is_array($variable)) { - /** @phpstan-ignore foreach.nonIterable */ - foreach ($array as $element) { - if (!is_array($element) && !is_object($element)) { - continue; - } - - /** @noinspection SlowArrayOperationsInLoopInspection */ - $objects = array_merge( - $objects, - $this->enumerate($element, $processed), - ); - } - - return $objects; - } - - $objects[] = $variable; - - foreach ((new ObjectReflector)->getProperties($variable) as $value) { - if (!is_array($value) && !is_object($value)) { - continue; - } - - /** @noinspection SlowArrayOperationsInLoopInspection */ - $objects = array_merge( - $objects, - $this->enumerate($value, $processed), - ); - } - - return $objects; - } -} diff --git a/v3_ci4/vendor/sebastian/object-reflector/ChangeLog.md b/v3_ci4/vendor/sebastian/object-reflector/ChangeLog.md deleted file mode 100644 index 8d328cf..0000000 --- a/v3_ci4/vendor/sebastian/object-reflector/ChangeLog.md +++ /dev/null @@ -1,80 +0,0 @@ -# Change Log - -All notable changes to `sebastianbergmann/object-reflector` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.0.1] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [4.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [3.0.0] - 2023-02-03 - -### Changed - -* `ObjectReflector::getAttributes()` has been renamed to `ObjectReflector::getProperties()` - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0 - -## [2.0.4] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\ObjectReflector\Exception` now correctly extends `\Throwable` - -## [2.0.3] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [2.0.2] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [2.0.1] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -## [2.0.0] - 2020-02-07 - -### Removed - -* This component is no longer supported on PHP 7.0, PHP 7.1, and PHP 7.2 - -## [1.1.1] - 2017-03-29 - -* Fixed [#1](https://github.com/sebastianbergmann/object-reflector/issues/1): Attributes with non-string names are not handled correctly - -## [1.1.0] - 2017-03-16 - -### Changed - -* Changed implementation of `ObjectReflector::getattributes()` to use `(array)` cast instead of `ReflectionObject` - -## 1.0.0 - 2017-03-12 - -* Initial release - -[4.0.1]: https://github.com/sebastianbergmann/object-reflector/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/object-reflector/compare/3.0...4.0.0 -[3.0.0]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.4...3.0.0 -[2.0.4]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.3...2.0.4 -[2.0.3]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.2...2.0.3 -[2.0.2]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/object-reflector/compare/1.1.1...2.0.0 -[1.1.1]: https://github.com/sebastianbergmann/object-reflector/compare/1.1.0...1.1.1 -[1.1.0]: https://github.com/sebastianbergmann/object-reflector/compare/1.0.0...1.1.0 diff --git a/v3_ci4/vendor/sebastian/object-reflector/LICENSE b/v3_ci4/vendor/sebastian/object-reflector/LICENSE deleted file mode 100644 index d719088..0000000 --- a/v3_ci4/vendor/sebastian/object-reflector/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2017-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/object-reflector/README.md b/v3_ci4/vendor/sebastian/object-reflector/README.md deleted file mode 100644 index 5db9dde..0000000 --- a/v3_ci4/vendor/sebastian/object-reflector/README.md +++ /dev/null @@ -1,21 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/object-reflector/v/stable.png)](https://packagist.org/packages/sebastian/object-reflector) -[![CI Status](https://github.com/sebastianbergmann/object-reflector/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/object-reflector/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/object-reflector/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/object-reflector) - -# sebastian/object-reflector - -Allows reflection of object properties, including inherited and private as well as protected ones. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/object-reflector -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/object-reflector -``` diff --git a/v3_ci4/vendor/sebastian/object-reflector/SECURITY.md b/v3_ci4/vendor/sebastian/object-reflector/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/object-reflector/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/object-reflector/composer.json b/v3_ci4/vendor/sebastian/object-reflector/composer.json deleted file mode 100644 index 2f3a06f..0000000 --- a/v3_ci4/vendor/sebastian/object-reflector/composer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "sebastian/object-reflector", - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "security": "https://github.com/sebastianbergmann/object-reflector/security/policy" - }, - "prefer-stable": true, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_fixture/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/object-reflector/src/ObjectReflector.php b/v3_ci4/vendor/sebastian/object-reflector/src/ObjectReflector.php deleted file mode 100644 index 919118f..0000000 --- a/v3_ci4/vendor/sebastian/object-reflector/src/ObjectReflector.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\ObjectReflector; - -use function count; -use function explode; - -final class ObjectReflector -{ - /** - * @return array - */ - public function getProperties(object $object): array - { - $properties = []; - $className = $object::class; - - foreach ((array) $object as $name => $value) { - $name = explode("\0", (string) $name); - - if (count($name) === 1) { - $name = $name[0]; - } elseif ($name[1] !== $className) { - $name = $name[1] . '::' . $name[2]; - } else { - $name = $name[2]; - } - - $properties[$name] = $value; - } - - return $properties; - } -} diff --git a/v3_ci4/vendor/sebastian/recursion-context/ChangeLog.md b/v3_ci4/vendor/sebastian/recursion-context/ChangeLog.md deleted file mode 100644 index 35f7006..0000000 --- a/v3_ci4/vendor/sebastian/recursion-context/ChangeLog.md +++ /dev/null @@ -1,82 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [6.0.3] - 2025-08-13 - -### Changed - -* Do not use `SplObjectStorage` methods that will be deprecated in PHP 8.5 - -## [6.0.2] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [6.0.1] - 2024-06-17 - -### Changed - -* [#30](https://github.com/sebastianbergmann/recursion-context/pull/30): Use more efficient `spl_object_id()` over `spl_object_hash()` - -## [6.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [5.0.1] - 2025-08-10 - -### Changed - -* Do not use `SplObjectStorage` methods that will be deprecated in PHP 8.5 - -## [5.0.0] - 2023-02-03 - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0 - -## [4.0.5] - 2023-02-03 - -### Fixed - -* [#26](https://github.com/sebastianbergmann/recursion-context/pull/26): Don't clobber `null` values if `array_key_exists(PHP_INT_MAX, $array)` - -## [4.0.4] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\RecursionContext\Exception` now correctly extends `\Throwable` - -## [4.0.3] - 2020-09-28 - -### Changed - -* [#21](https://github.com/sebastianbergmann/recursion-context/pull/21): Add type annotations for in/out parameters -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [4.0.2] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [4.0.1] - 2020-06-15 - -### Changed - -* Tests etc. are now ignored for archive exports - -[6.0.3]: https://github.com/sebastianbergmann/recursion-context/compare/6.0.2...6.0.3 -[6.0.2]: https://github.com/sebastianbergmann/recursion-context/compare/6.0.1...6.0.2 -[6.0.1]: https://github.com/sebastianbergmann/recursion-context/compare/6.0.0...6.0.1 -[6.0.0]: https://github.com/sebastianbergmann/recursion-context/compare/5.0...6.0.0 -[5.0.1]: https://github.com/sebastianbergmann/recursion-context/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.5...5.0.0 -[4.0.5]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.4...4.0.5 -[4.0.4]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.3...4.0.4 -[4.0.3]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.0...4.0.1 diff --git a/v3_ci4/vendor/sebastian/recursion-context/LICENSE b/v3_ci4/vendor/sebastian/recursion-context/LICENSE deleted file mode 100644 index c5268a9..0000000 --- a/v3_ci4/vendor/sebastian/recursion-context/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2002-2025, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/recursion-context/README.md b/v3_ci4/vendor/sebastian/recursion-context/README.md deleted file mode 100644 index f1d87b6..0000000 --- a/v3_ci4/vendor/sebastian/recursion-context/README.md +++ /dev/null @@ -1,19 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/recursion-context/v)](https://packagist.org/packages/sebastian/recursion-context) -[![CI Status](https://github.com/sebastianbergmann/recursion-context/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/recursion-context/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/recursion-context/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/recursion-context) - -# sebastian/recursion-context - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/recursion-context -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/recursion-context -``` diff --git a/v3_ci4/vendor/sebastian/recursion-context/SECURITY.md b/v3_ci4/vendor/sebastian/recursion-context/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/recursion-context/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/recursion-context/composer.json b/v3_ci4/vendor/sebastian/recursion-context/composer.json deleted file mode 100644 index ecc2504..0000000 --- a/v3_ci4/vendor/sebastian/recursion-context/composer.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "sebastian/recursion-context", - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "security": "https://github.com/sebastianbergmann/recursion-context/security/policy" - }, - "prefer-stable": true, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/recursion-context/src/Context.php b/v3_ci4/vendor/sebastian/recursion-context/src/Context.php deleted file mode 100644 index 8c04174..0000000 --- a/v3_ci4/vendor/sebastian/recursion-context/src/Context.php +++ /dev/null @@ -1,163 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\RecursionContext; - -use const PHP_INT_MAX; -use const PHP_INT_MIN; -use function array_key_exists; -use function array_pop; -use function array_slice; -use function count; -use function is_array; -use function is_int; -use function random_int; -use function spl_object_id; -use SplObjectStorage; - -final class Context -{ - /** - * @var list> - */ - private array $arrays = []; - - /** - * @var SplObjectStorage - */ - private SplObjectStorage $objects; - - public function __construct() - { - $this->objects = new SplObjectStorage; - } - - /** - * @codeCoverageIgnore - */ - public function __destruct() - { - foreach ($this->arrays as &$array) { - /* @phpstan-ignore function.alreadyNarrowedType */ - if (is_array($array)) { - array_pop($array); - array_pop($array); - } - } - } - - /** - * @template T of object|array - * - * @param T $value - * - * @param-out T $value - */ - public function add(array|object &$value): int - { - if (is_array($value)) { - /* @phpstan-ignore paramOut.type */ - return $this->addArray($value); - } - - return $this->addObject($value); - } - - /** - * @template T of object|array - * - * @param T $value - * - * @param-out T $value - */ - public function contains(array|object &$value): false|int - { - if (is_array($value)) { - return $this->containsArray($value); - } - - return $this->containsObject($value); - } - - /** - * @param array $array - */ - private function addArray(array &$array): int - { - $key = $this->containsArray($array); - - if ($key !== false) { - return $key; - } - - $key = count($this->arrays); - $this->arrays[] = &$array; - - if (!array_key_exists(PHP_INT_MAX, $array) && !array_key_exists(PHP_INT_MAX - 1, $array)) { - $array[] = $key; - $array[] = $this->objects; - } else { - /* Cover the improbable case, too. - * - * Note that array_slice() (used in containsArray()) will return the - * last two values added, *not necessarily* the highest integer keys - * in the array. Therefore, the order of these writes to $array is - * important, but the actual keys used is not. */ - do { - /** @noinspection PhpUnhandledExceptionInspection */ - $key = random_int(PHP_INT_MIN, PHP_INT_MAX); - } while (array_key_exists($key, $array)); - - $array[$key] = $key; - - do { - /** @noinspection PhpUnhandledExceptionInspection */ - $key = random_int(PHP_INT_MIN, PHP_INT_MAX); - } while (array_key_exists($key, $array)); - - $array[$key] = $this->objects; - } - - return $key; - } - - private function addObject(object $object): int - { - if (!$this->objects->offsetExists($object)) { - $this->objects->offsetSet($object); - } - - return spl_object_id($object); - } - - /** - * @param array $array - */ - private function containsArray(array $array): false|int - { - $end = array_slice($array, -2); - - if (isset($end[1]) && - $end[1] === $this->objects && - is_int($end[0])) { - return $end[0]; - } - - return false; - } - - private function containsObject(object $value): false|int - { - if ($this->objects->offsetExists($value)) { - return spl_object_id($value); - } - - return false; - } -} diff --git a/v3_ci4/vendor/sebastian/type/ChangeLog.md b/v3_ci4/vendor/sebastian/type/ChangeLog.md deleted file mode 100644 index 0ce2c50..0000000 --- a/v3_ci4/vendor/sebastian/type/ChangeLog.md +++ /dev/null @@ -1,218 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [5.1.3] - 2025-08-09 - -### Fixed - -* [#34](https://github.com/sebastianbergmann/type/pull/34): `infection.json` is missing from `.gitattributes` - -## [5.1.2] - 2025-03-18 - -### Fixed - -* [#33](https://github.com/sebastianbergmann/type/issues/33): `ReflectionMapper` does not handle unions that contain `iterable` correctly - -## [5.1.1] - 2025-03-18 - -### Fixed - -* [#33](https://github.com/sebastianbergmann/type/issues/33): `ReflectionMapper` does not handle unions that contain `iterable` correctly - -## [5.1.0] - 2024-09-17 - -### Added - -* Added `ReflectionMapper::fromPropertyType()` for mapping `\ReflectionProperty` to a `Type` object - -## [5.0.1] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [5.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [4.0.0] - 2023-02-03 - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0 - -## [3.2.1] - 2023-02-03 - -### Fixed - -* [#28](https://github.com/sebastianbergmann/type/pull/28): Potential undefined offset warning/notice - -## [3.2.0] - 2022-09-12 - -### Added - -* [#25](https://github.com/sebastianbergmann/type/issues/25): Support Disjunctive Normal Form types -* Added `ReflectionMapper::fromParameterTypes()` -* Added `IntersectionType::types()` and `UnionType::types()` -* Added `UnionType::containsIntersectionTypes()` - -## [3.1.0] - 2022-08-29 - -### Added - -* [#21](https://github.com/sebastianbergmann/type/issues/21): Support `true` as stand-alone type - -## [3.0.0] - 2022-03-15 - -### Added - -* Support for intersection types introduced in PHP 8.1 -* Support for the `never` return type introduced in PHP 8.1 -* Added `Type::isCallable()`, `Type::isGenericObject()`, `Type::isIterable()`, `Type::isMixed()`, `Type::isNever()`, `Type::isNull()`, `Type::isObject()`, `Type::isSimple()`, `Type::isStatic()`, `Type::isUnion()`, `Type::isUnknown()`, and `Type::isVoid()` - -### Changed - -* Renamed `ReflectionMapper::fromMethodReturnType(ReflectionMethod $method)` to `ReflectionMapper::fromReturnType(ReflectionFunctionAbstract $functionOrMethod)` - -### Removed - -* Removed `Type::getReturnTypeDeclaration()` (use `Type::asString()` instead and prefix its result with `': '`) -* Removed `TypeName::getNamespaceName()` (use `TypeName::namespaceName()` instead) -* Removed `TypeName::getSimpleName()` (use `TypeName::simpleName()` instead) -* Removed `TypeName::getQualifiedName()` (use `TypeName::qualifiedName()` instead) - -## [2.3.4] - 2021-06-15 - -### Fixed - -* Fixed regression introduced in 2.3.3 - -## [2.3.3] - 2021-06-15 [YANKED] - -### Fixed - -* [#15](https://github.com/sebastianbergmann/type/issues/15): "false" pseudo type is not handled properly - -## [2.3.2] - 2021-06-04 - -### Fixed - -* Fixed handling of tentatively declared return types - -## [2.3.1] - 2020-10-26 - -### Fixed - -* `SebastianBergmann\Type\Exception` now correctly extends `\Throwable` - -## [2.3.0] - 2020-10-06 - -### Added - -* [#14](https://github.com/sebastianbergmann/type/issues/14): Support for `static` return type that is introduced in PHP 8 - -## [2.2.2] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [2.2.1] - 2020-07-05 - -### Fixed - -* Fixed handling of `mixed` type in `ReflectionMapper::fromMethodReturnType()` - -## [2.2.0] - 2020-07-05 - -### Added - -* Added `MixedType` object for representing PHP 8's `mixed` type - -## [2.1.1] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [2.1.0] - 2020-06-01 - -### Added - -* Added `UnionType` object for representing PHP 8's Union Types -* Added `ReflectionMapper::fromMethodReturnType()` for mapping `\ReflectionMethod::getReturnType()` to a `Type` object -* Added `Type::name()` for retrieving the name of a type -* Added `Type::asString()` for retrieving a textual representation of a type - -### Changed - -* Deprecated `Type::getReturnTypeDeclaration()` (use `Type::asString()` instead and prefix its result with `': '`) -* Deprecated `TypeName::getNamespaceName()` (use `TypeName::namespaceName()` instead) -* Deprecated `TypeName::getSimpleName()` (use `TypeName::simpleName()` instead) -* Deprecated `TypeName::getQualifiedName()` (use `TypeName::qualifiedName()` instead) - -## [2.0.0] - 2020-02-07 - -### Removed - -* This component is no longer supported on PHP 7.2 - -## [1.1.3] - 2019-07-02 - -### Fixed - -* Fixed class name comparison in `ObjectType` to be case-insensitive - -## [1.1.2] - 2019-06-19 - -### Fixed - -* Fixed handling of `object` type - -## [1.1.1] - 2019-06-08 - -### Fixed - -* Fixed autoloading of `callback_function.php` fixture file - -## [1.1.0] - 2019-06-07 - -### Added - -* Added support for `callable` type -* Added support for `iterable` type - -## [1.0.0] - 2019-06-06 - -* Initial release based on [code contributed by Michel Hartmann to PHPUnit](https://github.com/sebastianbergmann/phpunit/pull/3673) - -[5.1.3]: https://github.com/sebastianbergmann/type/compare/5.1.2...5.1.3 -[5.1.2]: https://github.com/sebastianbergmann/type/compare/5.1.1...5.1.2 -[5.1.1]: https://github.com/sebastianbergmann/type/compare/5.1.0...5.1.1 -[5.1.0]: https://github.com/sebastianbergmann/type/compare/5.0.1...5.1.0 -[5.0.1]: https://github.com/sebastianbergmann/type/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/type/compare/4.0...5.0.0 -[4.0.0]: https://github.com/sebastianbergmann/type/compare/3.2.1...4.0.0 -[3.2.1]: https://github.com/sebastianbergmann/type/compare/3.2.0...3.2.1 -[3.2.0]: https://github.com/sebastianbergmann/type/compare/3.1.0...3.2.0 -[3.1.0]: https://github.com/sebastianbergmann/type/compare/3.0.0...3.1.0 -[3.0.0]: https://github.com/sebastianbergmann/type/compare/2.3.4...3.0.0 -[2.3.4]: https://github.com/sebastianbergmann/type/compare/ca39369c41313ed12c071ed38ecda8fcdb248859...2.3.4 -[2.3.3]: https://github.com/sebastianbergmann/type/compare/2.3.2...ca39369c41313ed12c071ed38ecda8fcdb248859 -[2.3.2]: https://github.com/sebastianbergmann/type/compare/2.3.1...2.3.2 -[2.3.1]: https://github.com/sebastianbergmann/type/compare/2.3.0...2.3.1 -[2.3.0]: https://github.com/sebastianbergmann/type/compare/2.2.2...2.3.0 -[2.2.2]: https://github.com/sebastianbergmann/type/compare/2.2.1...2.2.2 -[2.2.1]: https://github.com/sebastianbergmann/type/compare/2.2.0...2.2.1 -[2.2.0]: https://github.com/sebastianbergmann/type/compare/2.1.1...2.2.0 -[2.1.1]: https://github.com/sebastianbergmann/type/compare/2.1.0...2.1.1 -[2.1.0]: https://github.com/sebastianbergmann/type/compare/2.0.0...2.1.0 -[2.0.0]: https://github.com/sebastianbergmann/type/compare/1.1.3...2.0.0 -[1.1.3]: https://github.com/sebastianbergmann/type/compare/1.1.2...1.1.3 -[1.1.2]: https://github.com/sebastianbergmann/type/compare/1.1.1...1.1.2 -[1.1.1]: https://github.com/sebastianbergmann/type/compare/1.1.0...1.1.1 -[1.1.0]: https://github.com/sebastianbergmann/type/compare/1.0.0...1.1.0 -[1.0.0]: https://github.com/sebastianbergmann/type/compare/ff74aa41746bd8d10e931843ebf37d42da513ede...1.0.0 diff --git a/v3_ci4/vendor/sebastian/type/LICENSE b/v3_ci4/vendor/sebastian/type/LICENSE deleted file mode 100644 index 84a8322..0000000 --- a/v3_ci4/vendor/sebastian/type/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2019-2025, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/type/README.md b/v3_ci4/vendor/sebastian/type/README.md deleted file mode 100644 index e9c8f0a..0000000 --- a/v3_ci4/vendor/sebastian/type/README.md +++ /dev/null @@ -1,21 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/type/v)](https://packagist.org/packages/sebastian/type) -[![CI Status](https://github.com/sebastianbergmann/type/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/type/actions) -[![codecov](https://codecov.io/gh/sebastianbergmann/type/branch/main/graph/badge.svg)](https://codecov.io/gh/sebastianbergmann/type) - -# sebastian/type - -Collection of value objects that represent the types of the PHP type system. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/type -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/type -``` diff --git a/v3_ci4/vendor/sebastian/type/SECURITY.md b/v3_ci4/vendor/sebastian/type/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/type/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/type/composer.json b/v3_ci4/vendor/sebastian/type/composer.json deleted file mode 100644 index 2c3cc10..0000000 --- a/v3_ci4/vendor/sebastian/type/composer.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "sebastian/type", - "description": "Collection of value objects that represent the types of the PHP type system", - "type": "library", - "homepage": "https://github.com/sebastianbergmann/type", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "security": "https://github.com/sebastianbergmann/type/security/policy" - }, - "prefer-stable": true, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "autoload-dev": { - "classmap": [ - "tests/_fixture" - ], - "files": [ - "tests/_fixture/callback_function.php", - "tests/_fixture/functions_that_declare_return_types.php" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/Parameter.php b/v3_ci4/vendor/sebastian/type/src/Parameter.php deleted file mode 100644 index 7898cef..0000000 --- a/v3_ci4/vendor/sebastian/type/src/Parameter.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final readonly class Parameter -{ - /** - * @var non-empty-string - */ - private string $name; - private Type $type; - - /** - * @param non-empty-string $name - */ - public function __construct(string $name, Type $type) - { - $this->name = $name; - $this->type = $type; - } - - /** - * @return non-empty-string - */ - public function name(): string - { - return $this->name; - } - - public function type(): Type - { - return $this->type; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/ReflectionMapper.php b/v3_ci4/vendor/sebastian/type/src/ReflectionMapper.php deleted file mode 100644 index 45db7fb..0000000 --- a/v3_ci4/vendor/sebastian/type/src/ReflectionMapper.php +++ /dev/null @@ -1,229 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function array_filter; -use function assert; -use ReflectionFunction; -use ReflectionIntersectionType; -use ReflectionMethod; -use ReflectionNamedType; -use ReflectionProperty; -use ReflectionType; -use ReflectionUnionType; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class ReflectionMapper -{ - /** - * @return list - */ - public function fromParameterTypes(ReflectionFunction|ReflectionMethod $reflector): array - { - $parameters = []; - - foreach ($reflector->getParameters() as $parameter) { - $name = $parameter->getName(); - - if (!$parameter->hasType()) { - $parameters[] = new Parameter($name, new UnknownType); - - continue; - } - - $type = $parameter->getType(); - - if ($type instanceof ReflectionNamedType) { - $parameters[] = new Parameter( - $name, - $this->mapNamedType($type, $reflector), - ); - - continue; - } - - if ($type instanceof ReflectionUnionType) { - $parameters[] = new Parameter( - $name, - $this->mapUnionType($type, $reflector), - ); - - continue; - } - - if ($type instanceof ReflectionIntersectionType) { - $parameters[] = new Parameter( - $name, - $this->mapIntersectionType($type, $reflector), - ); - } - } - - return $parameters; - } - - public function fromReturnType(ReflectionFunction|ReflectionMethod $reflector): Type - { - if (!$this->hasReturnType($reflector)) { - return new UnknownType; - } - - $returnType = $this->returnType($reflector); - - assert($returnType instanceof ReflectionNamedType || $returnType instanceof ReflectionUnionType || $returnType instanceof ReflectionIntersectionType); - - if ($returnType instanceof ReflectionNamedType) { - return $this->mapNamedType($returnType, $reflector); - } - - if ($returnType instanceof ReflectionUnionType) { - return $this->mapUnionType($returnType, $reflector); - } - - return $this->mapIntersectionType($returnType, $reflector); - } - - public function fromPropertyType(ReflectionProperty $reflector): Type - { - if (!$reflector->hasType()) { - return new UnknownType; - } - - $propertyType = $reflector->getType(); - - assert($propertyType instanceof ReflectionNamedType || $propertyType instanceof ReflectionUnionType || $propertyType instanceof ReflectionIntersectionType); - - if ($propertyType instanceof ReflectionNamedType) { - return $this->mapNamedType($propertyType, $reflector); - } - - if ($propertyType instanceof ReflectionUnionType) { - return $this->mapUnionType($propertyType, $reflector); - } - - return $this->mapIntersectionType($propertyType, $reflector); - } - - private function mapNamedType(ReflectionNamedType $type, ReflectionFunction|ReflectionMethod|ReflectionProperty $reflector): Type - { - $classScope = !$reflector instanceof ReflectionFunction; - $typeName = $type->getName(); - - assert($typeName !== ''); - - if ($classScope && $typeName === 'self') { - return ObjectType::fromName( - $reflector->getDeclaringClass()->getName(), - $type->allowsNull(), - ); - } - - if ($classScope && $typeName === 'static') { - return new StaticType( - TypeName::fromReflection($reflector->getDeclaringClass()), - $type->allowsNull(), - ); - } - - if ($typeName === 'mixed') { - return new MixedType; - } - - if ($classScope && $typeName === 'parent') { - $parentClass = $reflector->getDeclaringClass()->getParentClass(); - - assert($parentClass !== false); - - return ObjectType::fromName( - $parentClass->getName(), - $type->allowsNull(), - ); - } - - return Type::fromName( - $typeName, - $type->allowsNull(), - ); - } - - private function mapUnionType(ReflectionUnionType $type, ReflectionFunction|ReflectionMethod|ReflectionProperty $reflector): Type - { - $types = []; - $objectType = false; - $genericObjectType = false; - - foreach ($type->getTypes() as $_type) { - if ($_type instanceof ReflectionNamedType) { - $namedType = $this->mapNamedType($_type, $reflector); - - if ($namedType instanceof GenericObjectType) { - $genericObjectType = true; - } elseif ($namedType instanceof ObjectType) { - $objectType = true; - } - - $types[] = $namedType; - - continue; - } - - $types[] = $this->mapIntersectionType($_type, $reflector); - } - - if ($objectType && $genericObjectType) { - $types = array_filter( - $types, - static function (Type $type): bool - { - if ($type instanceof ObjectType) { - return false; - } - - return true; - }, - ); - } - - return new UnionType(...$types); - } - - private function mapIntersectionType(ReflectionIntersectionType $type, ReflectionFunction|ReflectionMethod|ReflectionProperty $reflector): Type - { - $types = []; - - foreach ($type->getTypes() as $_type) { - assert($_type instanceof ReflectionNamedType); - - $types[] = $this->mapNamedType($_type, $reflector); - } - - return new IntersectionType(...$types); - } - - private function hasReturnType(ReflectionFunction|ReflectionMethod $reflector): bool - { - if ($reflector->hasReturnType()) { - return true; - } - - return $reflector->hasTentativeReturnType(); - } - - private function returnType(ReflectionFunction|ReflectionMethod $reflector): ?ReflectionType - { - if ($reflector->hasReturnType()) { - return $reflector->getReturnType(); - } - - return $reflector->getTentativeReturnType(); - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/TypeName.php b/v3_ci4/vendor/sebastian/type/src/TypeName.php deleted file mode 100644 index 865af98..0000000 --- a/v3_ci4/vendor/sebastian/type/src/TypeName.php +++ /dev/null @@ -1,105 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function array_pop; -use function assert; -use function explode; -use function implode; -use function substr; -use ReflectionClass; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final readonly class TypeName -{ - private ?string $namespaceName; - - /** - * @var non-empty-string - */ - private string $simpleName; - - /** - * @param class-string $fullClassName - */ - public static function fromQualifiedName(string $fullClassName): self - { - if ($fullClassName[0] === '\\') { - $fullClassName = substr($fullClassName, 1); - } - - $classNameParts = explode('\\', $fullClassName); - - $simpleName = array_pop($classNameParts); - $namespaceName = implode('\\', $classNameParts); - - assert($simpleName !== ''); - - return new self($namespaceName, $simpleName); - } - - /** - * @param ReflectionClass $type - */ - public static function fromReflection(ReflectionClass $type): self - { - $simpleName = $type->getShortName(); - - assert($simpleName !== ''); - - return new self( - $type->getNamespaceName(), - $simpleName, - ); - } - - /** - * @param non-empty-string $simpleName - */ - public function __construct(?string $namespaceName, string $simpleName) - { - if ($namespaceName === '') { - $namespaceName = null; - } - - $this->namespaceName = $namespaceName; - $this->simpleName = $simpleName; - } - - public function namespaceName(): ?string - { - return $this->namespaceName; - } - - /** - * @return non-empty-string - */ - public function simpleName(): string - { - return $this->simpleName; - } - - /** - * @return non-empty-string - */ - public function qualifiedName(): string - { - return $this->namespaceName === null - ? $this->simpleName - : $this->namespaceName . '\\' . $this->simpleName; - } - - public function isNamespaced(): bool - { - return $this->namespaceName !== null; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/exception/Exception.php b/v3_ci4/vendor/sebastian/type/src/exception/Exception.php deleted file mode 100644 index 07ae3fc..0000000 --- a/v3_ci4/vendor/sebastian/type/src/exception/Exception.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use Throwable; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -interface Exception extends Throwable -{ -} diff --git a/v3_ci4/vendor/sebastian/type/src/exception/RuntimeException.php b/v3_ci4/vendor/sebastian/type/src/exception/RuntimeException.php deleted file mode 100644 index dfb1db7..0000000 --- a/v3_ci4/vendor/sebastian/type/src/exception/RuntimeException.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class RuntimeException extends \RuntimeException implements Exception -{ -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/CallableType.php b/v3_ci4/vendor/sebastian/type/src/type/CallableType.php deleted file mode 100644 index dbe3554..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/CallableType.php +++ /dev/null @@ -1,182 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function assert; -use function class_exists; -use function count; -use function explode; -use function function_exists; -use function is_array; -use function is_object; -use function is_string; -use function str_contains; -use Closure; -use ReflectionClass; -use ReflectionObject; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class CallableType extends Type -{ - private bool $allowsNull; - - public function __construct(bool $nullable) - { - $this->allowsNull = $nullable; - } - - public function isAssignable(Type $other): bool - { - if ($this->allowsNull && $other instanceof NullType) { - return true; - } - - if ($other instanceof self) { - return true; - } - - if ($other instanceof ObjectType) { - if ($this->isClosure($other)) { - return true; - } - - if ($this->hasInvokeMethod($other)) { - return true; - } - } - - if ($other instanceof SimpleType) { - if ($this->isFunction($other)) { - return true; - } - - if ($this->isClassCallback($other)) { - return true; - } - - if ($this->isObjectCallback($other)) { - return true; - } - } - - return false; - } - - /** - * @return 'callable' - */ - public function name(): string - { - return 'callable'; - } - - public function allowsNull(): bool - { - return $this->allowsNull; - } - - public function isCallable(): bool - { - return true; - } - - private function isClosure(ObjectType $type): bool - { - return $type->className()->qualifiedName() === Closure::class; - } - - private function hasInvokeMethod(ObjectType $type): bool - { - $className = $type->className()->qualifiedName(); - - assert(class_exists($className)); - - return (new ReflectionClass($className))->hasMethod('__invoke'); - } - - private function isFunction(SimpleType $type): bool - { - if (!is_string($type->value())) { - return false; - } - - return function_exists($type->value()); - } - - private function isObjectCallback(SimpleType $type): bool - { - if (!is_array($type->value())) { - return false; - } - - if (count($type->value()) !== 2) { - return false; - } - - if (!isset($type->value()[0], $type->value()[1])) { - return false; - } - - if (!is_object($type->value()[0]) || !is_string($type->value()[1])) { - return false; - } - - [$object, $methodName] = $type->value(); - - return (new ReflectionObject($object))->hasMethod($methodName); - } - - private function isClassCallback(SimpleType $type): bool - { - if (!is_string($type->value()) && !is_array($type->value())) { - return false; - } - - if (is_string($type->value())) { - if (!str_contains($type->value(), '::')) { - return false; - } - - [$className, $methodName] = explode('::', $type->value()); - } - - if (is_array($type->value())) { - if (count($type->value()) !== 2) { - return false; - } - - if (!isset($type->value()[0], $type->value()[1])) { - return false; - } - - if (!is_string($type->value()[0]) || !is_string($type->value()[1])) { - return false; - } - - [$className, $methodName] = $type->value(); - } - - if (!class_exists($className)) { - return false; - } - - $class = new ReflectionClass($className); - - if (!$class->hasMethod($methodName)) { - return false; - } - - $method = $class->getMethod($methodName); - - return $method->isPublic() && $method->isStatic(); - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/FalseType.php b/v3_ci4/vendor/sebastian/type/src/type/FalseType.php deleted file mode 100644 index 3de720a..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/FalseType.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class FalseType extends Type -{ - public function isAssignable(Type $other): bool - { - if ($other instanceof self) { - return true; - } - - return $other instanceof SimpleType && - $other->name() === 'bool' && - $other->value() === false; - } - - /** - * @return 'false' - */ - public function name(): string - { - return 'false'; - } - - public function allowsNull(): bool - { - return false; - } - - public function isFalse(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/GenericObjectType.php b/v3_ci4/vendor/sebastian/type/src/type/GenericObjectType.php deleted file mode 100644 index efe1ae3..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/GenericObjectType.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class GenericObjectType extends Type -{ - private bool $allowsNull; - - public function __construct(bool $nullable) - { - $this->allowsNull = $nullable; - } - - public function isAssignable(Type $other): bool - { - if ($this->allowsNull && $other instanceof NullType) { - return true; - } - - if (!$other instanceof ObjectType) { - return false; - } - - return true; - } - - /** - * @return 'object' - */ - public function name(): string - { - return 'object'; - } - - public function allowsNull(): bool - { - return $this->allowsNull; - } - - public function isGenericObject(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/IntersectionType.php b/v3_ci4/vendor/sebastian/type/src/type/IntersectionType.php deleted file mode 100644 index 419a487..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/IntersectionType.php +++ /dev/null @@ -1,134 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function assert; -use function count; -use function implode; -use function in_array; -use function sort; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class IntersectionType extends Type -{ - /** - * @var non-empty-list - */ - private array $types; - - /** - * @throws RuntimeException - */ - public function __construct(Type ...$types) - { - $this->ensureMinimumOfTwoTypes(...$types); - $this->ensureOnlyValidTypes(...$types); - $this->ensureNoDuplicateTypes(...$types); - - assert(!empty($types)); - - $this->types = $types; - } - - public function isAssignable(Type $other): bool - { - return $other->isObject(); - } - - /** - * @return non-empty-string - */ - public function asString(): string - { - return $this->name(); - } - - /** - * @return non-empty-string - */ - public function name(): string - { - $types = []; - - foreach ($this->types as $type) { - $types[] = $type->name(); - } - - sort($types); - - return implode('&', $types); - } - - public function allowsNull(): bool - { - return false; - } - - public function isIntersection(): bool - { - return true; - } - - /** - * @return non-empty-list - */ - public function types(): array - { - return $this->types; - } - - /** - * @throws RuntimeException - */ - private function ensureMinimumOfTwoTypes(Type ...$types): void - { - if (count($types) < 2) { - throw new RuntimeException( - 'An intersection type must be composed of at least two types', - ); - } - } - - /** - * @throws RuntimeException - */ - private function ensureOnlyValidTypes(Type ...$types): void - { - foreach ($types as $type) { - if (!$type->isObject()) { - throw new RuntimeException( - 'An intersection type can only be composed of interfaces and classes', - ); - } - } - } - - /** - * @throws RuntimeException - */ - private function ensureNoDuplicateTypes(Type ...$types): void - { - $names = []; - - foreach ($types as $type) { - assert($type instanceof ObjectType); - - $classQualifiedName = $type->className()->qualifiedName(); - - if (in_array($classQualifiedName, $names, true)) { - throw new RuntimeException('An intersection type must not contain duplicate types'); - } - - $names[] = $classQualifiedName; - } - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/IterableType.php b/v3_ci4/vendor/sebastian/type/src/type/IterableType.php deleted file mode 100644 index 608ddc5..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/IterableType.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function assert; -use function class_exists; -use function is_iterable; -use ReflectionClass; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class IterableType extends Type -{ - private bool $allowsNull; - - public function __construct(bool $nullable) - { - $this->allowsNull = $nullable; - } - - /** - * @throws RuntimeException - */ - public function isAssignable(Type $other): bool - { - if ($this->allowsNull && $other instanceof NullType) { - return true; - } - - if ($other instanceof self) { - return true; - } - - if ($other instanceof SimpleType) { - return is_iterable($other->value()); - } - - if ($other instanceof ObjectType) { - $className = $other->className()->qualifiedName(); - - assert(class_exists($className)); - - return (new ReflectionClass($className))->isIterable(); - } - - return false; - } - - /** - * @return 'iterable' - */ - public function name(): string - { - return 'iterable'; - } - - public function allowsNull(): bool - { - return $this->allowsNull; - } - - public function isIterable(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/MixedType.php b/v3_ci4/vendor/sebastian/type/src/type/MixedType.php deleted file mode 100644 index c449d11..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/MixedType.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class MixedType extends Type -{ - public function isAssignable(Type $other): bool - { - return !$other instanceof VoidType; - } - - /** - * @return 'mixed' - */ - public function asString(): string - { - return 'mixed'; - } - - /** - * @return 'mixed' - */ - public function name(): string - { - return 'mixed'; - } - - public function allowsNull(): bool - { - return true; - } - - public function isMixed(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/NeverType.php b/v3_ci4/vendor/sebastian/type/src/type/NeverType.php deleted file mode 100644 index ae80b54..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/NeverType.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class NeverType extends Type -{ - public function isAssignable(Type $other): bool - { - return $other instanceof self; - } - - /** - * @return 'never' - */ - public function name(): string - { - return 'never'; - } - - public function allowsNull(): bool - { - return false; - } - - public function isNever(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/NullType.php b/v3_ci4/vendor/sebastian/type/src/type/NullType.php deleted file mode 100644 index a261347..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/NullType.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class NullType extends Type -{ - public function isAssignable(Type $other): bool - { - return !($other instanceof VoidType); - } - - /** - * @return 'null' - */ - public function name(): string - { - return 'null'; - } - - /** - * @return 'null' - */ - public function asString(): string - { - return 'null'; - } - - public function allowsNull(): bool - { - return true; - } - - public function isNull(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/ObjectType.php b/v3_ci4/vendor/sebastian/type/src/type/ObjectType.php deleted file mode 100644 index 4ff4592..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/ObjectType.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function is_subclass_of; -use function strcasecmp; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class ObjectType extends Type -{ - private TypeName $className; - private bool $allowsNull; - - public function __construct(TypeName $className, bool $allowsNull) - { - $this->className = $className; - $this->allowsNull = $allowsNull; - } - - public function isAssignable(Type $other): bool - { - if ($this->allowsNull && $other instanceof NullType) { - return true; - } - - if ($other instanceof self) { - if (0 === strcasecmp($this->className->qualifiedName(), $other->className->qualifiedName())) { - return true; - } - - if (is_subclass_of($other->className->qualifiedName(), $this->className->qualifiedName(), true)) { - return true; - } - } - - return false; - } - - /** - * @return non-empty-string - */ - public function name(): string - { - return $this->className->qualifiedName(); - } - - public function allowsNull(): bool - { - return $this->allowsNull; - } - - public function className(): TypeName - { - return $this->className; - } - - public function isObject(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/SimpleType.php b/v3_ci4/vendor/sebastian/type/src/type/SimpleType.php deleted file mode 100644 index b242b5c..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/SimpleType.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function strtolower; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class SimpleType extends Type -{ - /** - * @var non-empty-string - */ - private string $name; - private bool $allowsNull; - private mixed $value; - - /** - * @param non-empty-string $name - */ - public function __construct(string $name, bool $nullable, mixed $value = null) - { - $this->name = $this->normalize($name); - $this->allowsNull = $nullable; - $this->value = $value; - } - - public function isAssignable(Type $other): bool - { - if ($this->allowsNull && $other instanceof NullType) { - return true; - } - - if ($this->name === 'bool' && $other->name() === 'true') { - return true; - } - - if ($this->name === 'bool' && $other->name() === 'false') { - return true; - } - - if ($other instanceof self) { - return $this->name === $other->name; - } - - return false; - } - - /** - * @return non-empty-string - */ - public function name(): string - { - return $this->name; - } - - public function allowsNull(): bool - { - return $this->allowsNull; - } - - public function value(): mixed - { - return $this->value; - } - - public function isSimple(): bool - { - return true; - } - - /** - * @param non-empty-string $name - * - * @return non-empty-string - */ - private function normalize(string $name): string - { - $name = strtolower($name); - - return match ($name) { - 'boolean' => 'bool', - 'real', 'double' => 'float', - 'integer' => 'int', - '[]' => 'array', - default => $name, - }; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/StaticType.php b/v3_ci4/vendor/sebastian/type/src/type/StaticType.php deleted file mode 100644 index 1f7ba2e..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/StaticType.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function is_subclass_of; -use function strcasecmp; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class StaticType extends Type -{ - private TypeName $className; - private bool $allowsNull; - - public function __construct(TypeName $className, bool $allowsNull) - { - $this->className = $className; - $this->allowsNull = $allowsNull; - } - - public function isAssignable(Type $other): bool - { - if ($this->allowsNull && $other instanceof NullType) { - return true; - } - - if (!$other instanceof ObjectType) { - return false; - } - - if (0 === strcasecmp($this->className->qualifiedName(), $other->className()->qualifiedName())) { - return true; - } - - if (is_subclass_of($other->className()->qualifiedName(), $this->className->qualifiedName(), true)) { - return true; - } - - return false; - } - - /** - * @return 'static' - */ - public function name(): string - { - return 'static'; - } - - public function allowsNull(): bool - { - return $this->allowsNull; - } - - public function isStatic(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/TrueType.php b/v3_ci4/vendor/sebastian/type/src/type/TrueType.php deleted file mode 100644 index d581ea2..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/TrueType.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class TrueType extends Type -{ - public function isAssignable(Type $other): bool - { - if ($other instanceof self) { - return true; - } - - return $other instanceof SimpleType && - $other->name() === 'bool' && - $other->value() === true; - } - - /** - * @return 'true' - */ - public function name(): string - { - return 'true'; - } - - public function allowsNull(): bool - { - return false; - } - - public function isTrue(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/Type.php b/v3_ci4/vendor/sebastian/type/src/type/Type.php deleted file mode 100644 index 0dee63f..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/Type.php +++ /dev/null @@ -1,203 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function gettype; -use function is_object; -use function strtolower; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -abstract class Type -{ - public static function fromValue(mixed $value, bool $allowsNull): self - { - if ($allowsNull === false) { - if ($value === true) { - return new TrueType; - } - - if ($value === false) { - return new FalseType; - } - } - - $typeName = gettype($value); - - if (is_object($value)) { - return new ObjectType(TypeName::fromQualifiedName($value::class), $allowsNull); - } - - $type = self::fromName($typeName, $allowsNull); - - if ($type instanceof SimpleType) { - $type = new SimpleType($typeName, $allowsNull, $value); - } - - return $type; - } - - /** - * @param non-empty-string $typeName - */ - public static function fromName(string $typeName, bool $allowsNull): self - { - return match (strtolower($typeName)) { - 'callable' => new CallableType($allowsNull), - 'true' => new TrueType, - 'false' => new FalseType, - 'iterable' => new IterableType($allowsNull), - 'never' => new NeverType, - 'null' => new NullType, - 'object' => new GenericObjectType($allowsNull), - 'unknown type' => new UnknownType, - 'void' => new VoidType, - 'array', 'bool', 'boolean', 'double', 'float', 'int', 'integer', 'real', 'resource', 'resource (closed)', 'string' => new SimpleType($typeName, $allowsNull), - 'mixed' => new MixedType, - /** @phpstan-ignore argument.type */ - default => new ObjectType(TypeName::fromQualifiedName($typeName), $allowsNull), - }; - } - - public function asString(): string - { - return ($this->allowsNull() ? '?' : '') . $this->name(); - } - - /** - * @phpstan-assert-if-true CallableType $this - */ - public function isCallable(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true TrueType $this - */ - public function isTrue(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true FalseType $this - */ - public function isFalse(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true GenericObjectType $this - */ - public function isGenericObject(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true IntersectionType $this - */ - public function isIntersection(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true IterableType $this - */ - public function isIterable(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true MixedType $this - */ - public function isMixed(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true NeverType $this - */ - public function isNever(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true NullType $this - */ - public function isNull(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true ObjectType $this - */ - public function isObject(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true SimpleType $this - */ - public function isSimple(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true StaticType $this - */ - public function isStatic(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true UnionType $this - */ - public function isUnion(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true UnknownType $this - */ - public function isUnknown(): bool - { - return false; - } - - /** - * @phpstan-assert-if-true VoidType $this - */ - public function isVoid(): bool - { - return false; - } - - abstract public function isAssignable(self $other): bool; - - /** - * @return non-empty-string - */ - abstract public function name(): string; - - abstract public function allowsNull(): bool; -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/UnionType.php b/v3_ci4/vendor/sebastian/type/src/type/UnionType.php deleted file mode 100644 index b166240..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/UnionType.php +++ /dev/null @@ -1,147 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use function assert; -use function count; -use function implode; -use function sort; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class UnionType extends Type -{ - /** - * @var non-empty-list - */ - private array $types; - - /** - * @throws RuntimeException - */ - public function __construct(Type ...$types) - { - $this->ensureMinimumOfTwoTypes(...$types); - $this->ensureOnlyValidTypes(...$types); - - assert(!empty($types)); - - $this->types = $types; - } - - public function isAssignable(Type $other): bool - { - foreach ($this->types as $type) { - if ($type->isAssignable($other)) { - return true; - } - } - - return false; - } - - /** - * @return non-empty-string - */ - public function asString(): string - { - return $this->name(); - } - - /** - * @return non-empty-string - */ - public function name(): string - { - $types = []; - - foreach ($this->types as $type) { - if ($type->isIntersection()) { - $types[] = '(' . $type->name() . ')'; - - continue; - } - - $types[] = $type->name(); - } - - sort($types); - - return implode('|', $types); - } - - public function allowsNull(): bool - { - foreach ($this->types as $type) { - if ($type instanceof NullType) { - return true; - } - } - - return false; - } - - public function isUnion(): bool - { - return true; - } - - public function containsIntersectionTypes(): bool - { - foreach ($this->types as $type) { - if ($type->isIntersection()) { - return true; - } - } - - return false; - } - - /** - * @return non-empty-list - */ - public function types(): array - { - return $this->types; - } - - /** - * @throws RuntimeException - */ - private function ensureMinimumOfTwoTypes(Type ...$types): void - { - if (count($types) < 2) { - throw new RuntimeException( - 'A union type must be composed of at least two types', - ); - } - } - - /** - * @throws RuntimeException - */ - private function ensureOnlyValidTypes(Type ...$types): void - { - foreach ($types as $type) { - if ($type instanceof UnknownType) { - throw new RuntimeException( - 'A union type must not be composed of an unknown type', - ); - } - - if ($type instanceof VoidType) { - throw new RuntimeException( - 'A union type must not be composed of a void type', - ); - } - } - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/UnknownType.php b/v3_ci4/vendor/sebastian/type/src/type/UnknownType.php deleted file mode 100644 index 41f8221..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/UnknownType.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class UnknownType extends Type -{ - public function isAssignable(Type $other): bool - { - return true; - } - - /** - * @return 'unknown type' - */ - public function name(): string - { - return 'unknown type'; - } - - /** - * @return '' - */ - public function asString(): string - { - return ''; - } - - public function allowsNull(): bool - { - return true; - } - - public function isUnknown(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/type/src/type/VoidType.php b/v3_ci4/vendor/sebastian/type/src/type/VoidType.php deleted file mode 100644 index 7d98c13..0000000 --- a/v3_ci4/vendor/sebastian/type/src/type/VoidType.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -/** - * @no-named-arguments Parameter names are not covered by the backward compatibility promise for this library - */ -final class VoidType extends Type -{ - public function isAssignable(Type $other): bool - { - return $other instanceof self; - } - - /** - * @return 'void' - */ - public function name(): string - { - return 'void'; - } - - public function allowsNull(): bool - { - return false; - } - - public function isVoid(): bool - { - return true; - } -} diff --git a/v3_ci4/vendor/sebastian/version/ChangeLog.md b/v3_ci4/vendor/sebastian/version/ChangeLog.md deleted file mode 100644 index 4a96d56..0000000 --- a/v3_ci4/vendor/sebastian/version/ChangeLog.md +++ /dev/null @@ -1,64 +0,0 @@ -# ChangeLog - -All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. - -## [5.0.2] - 2024-10-09 - -### Changed - -* [#21](https://github.com/sebastianbergmann/version/pull/21): Avoid spawning a shell for Git - -## [5.0.1] - 2024-07-03 - -### Changed - -* This project now uses PHPStan instead of Psalm for static analysis - -## [5.0.0] - 2024-02-02 - -### Removed - -* This component is no longer supported on PHP 8.1 - -## [4.0.1] - 2023-02-07 - -### Fixed - -* [#17](https://github.com/sebastianbergmann/version/pull/17): Release archive contains unnecessary assets - -## [4.0.0] - 2023-02-03 - -### Changed - -* `Version::getVersion()` has been renamed to `Version::asString()` - -### Removed - -* This component is no longer supported on PHP 7.3, PHP 7.4, and PHP 8.0 - -## [3.0.2] - 2020-09-28 - -### Changed - -* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` - -## [3.0.1] - 2020-06-26 - -### Added - -* This component is now supported on PHP 8 - -## [3.0.0] - 2020-01-21 - -### Removed - -* This component is no longer supported on PHP 7.1 and PHP 7.2 - -[5.0.2]: https://github.com/sebastianbergmann/version/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/version/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/version/compare/4.0...5.0.0 -[4.0.1]: https://github.com/sebastianbergmann/version/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/version/compare/3.0.2...4.0.0 -[3.0.2]: https://github.com/sebastianbergmann/version/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/version/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/version/compare/2.0.1...3.0.0 diff --git a/v3_ci4/vendor/sebastian/version/LICENSE b/v3_ci4/vendor/sebastian/version/LICENSE deleted file mode 100644 index b8ec485..0000000 --- a/v3_ci4/vendor/sebastian/version/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2013-2024, Sebastian Bergmann -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/v3_ci4/vendor/sebastian/version/README.md b/v3_ci4/vendor/sebastian/version/README.md deleted file mode 100644 index fd8820c..0000000 --- a/v3_ci4/vendor/sebastian/version/README.md +++ /dev/null @@ -1,50 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/sebastian/version/v)](https://packagist.org/packages/sebastian/version) - -# sebastian/version - -**sebastian/version** is a library that helps with managing the version number of Git-hosted PHP projects. - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require sebastian/version -``` - -If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: - -``` -composer require --dev sebastian/version -``` -## Usage - -The constructor of the `SebastianBergmann\Version` class expects two parameters: - -* `$release` is the version number of the latest release (`X.Y.Z`, for instance) or the name of the release series (`X.Y`) when no release has been made from that branch / for that release series yet. -* `$path` is the path to the directory (or a subdirectory thereof) where the sourcecode of the project can be found. Simply passing `__DIR__` here usually suffices. - -Apart from the constructor, the `SebastianBergmann\Version` class has a single public method: `asString()`. - -Here is a contrived example that shows the basic usage: - -```php -asString()); -``` -``` -string(18) "1.0.0-17-g00f3408" -``` - -When a new release is prepared, the string that is passed to the constructor as the first argument needs to be updated. - -### How SebastianBergmann\Version::asString() works - -* If `$path` is not (part of) a Git repository and `$release` is in `X.Y.Z` format then `$release` is returned as-is. -* If `$path` is not (part of) a Git repository and `$release` is in `X.Y` format then `$release` is returned suffixed with `-dev`. -* If `$path` is (part of) a Git repository and `$release` is in `X.Y.Z` format then the output of `git describe --tags` is returned as-is. -* If `$path` is (part of) a Git repository and `$release` is in `X.Y` format then a string is returned that begins with `X.Y` and ends with information from `git describe --tags`. diff --git a/v3_ci4/vendor/sebastian/version/SECURITY.md b/v3_ci4/vendor/sebastian/version/SECURITY.md deleted file mode 100644 index d88ff00..0000000 --- a/v3_ci4/vendor/sebastian/version/SECURITY.md +++ /dev/null @@ -1,30 +0,0 @@ -# Security Policy - -If you believe you have found a security vulnerability in the library that is developed in this repository, please report it to us through coordinated disclosure. - -**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** - -Instead, please email `sebastian@phpunit.de`. - -Please include as much of the information listed below as you can to help us better understand and resolve the issue: - -* The type of issue -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -## Web Context - -The library that is developed in this repository was either extracted from [PHPUnit](https://github.com/sebastianbergmann/phpunit) or developed specifically as a dependency for PHPUnit. - -The library is developed with a focus on development environments and the command-line. No specific testing or hardening with regard to using the library in an HTTP or web context or with untrusted input data is performed. The library might also contain functionality that intentionally exposes internal application data for debugging purposes. - -If the library is used in a web application, the application developer is responsible for filtering inputs or escaping outputs as necessary and for verifying that the used functionality is safe for use within the intended context. - -Vulnerabilities specific to the use outside a development context will be fixed as applicable, provided that the fix does not have an averse effect on the primary use case for development purposes. - diff --git a/v3_ci4/vendor/sebastian/version/composer.json b/v3_ci4/vendor/sebastian/version/composer.json deleted file mode 100644 index ff88c33..0000000 --- a/v3_ci4/vendor/sebastian/version/composer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "sebastian/version", - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "security": "https://github.com/sebastianbergmann/version/security/policy" - }, - "config": { - "platform": { - "php": "8.2.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "prefer-stable": true, - "require": { - "php": ">=8.2" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - } -} diff --git a/v3_ci4/vendor/sebastian/version/src/Version.php b/v3_ci4/vendor/sebastian/version/src/Version.php deleted file mode 100644 index 4c090af..0000000 --- a/v3_ci4/vendor/sebastian/version/src/Version.php +++ /dev/null @@ -1,112 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann; - -use function end; -use function explode; -use function fclose; -use function is_dir; -use function is_resource; -use function proc_close; -use function proc_open; -use function stream_get_contents; -use function substr_count; -use function trim; - -final readonly class Version -{ - /** - * @var non-empty-string - */ - private string $version; - - /** - * @param non-empty-string $release - * @param non-empty-string $path - */ - public function __construct(string $release, string $path) - { - $this->version = $this->generate($release, $path); - } - - /** - * @return non-empty-string - */ - public function asString(): string - { - return $this->version; - } - - /** - * @param non-empty-string $release - * @param non-empty-string $path - * - * @return non-empty-string - */ - private function generate(string $release, string $path): string - { - if (substr_count($release, '.') + 1 === 3) { - $version = $release; - } else { - $version = $release . '-dev'; - } - - $git = $this->getGitInformation($path); - - if (!$git) { - return $version; - } - - if (substr_count($release, '.') + 1 === 3) { - return $git; - } - - $git = explode('-', $git); - - return $release . '-' . end($git); - } - - /** - * @param non-empty-string $path - */ - private function getGitInformation(string $path): false|string - { - if (!is_dir($path . DIRECTORY_SEPARATOR . '.git')) { - return false; - } - - $process = proc_open( - ['git', 'describe', '--tags'], - [ - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ], - $pipes, - $path, - ); - - if (!is_resource($process)) { - return false; - } - - $result = trim((string) stream_get_contents($pipes[1])); - - fclose($pipes[1]); - fclose($pipes[2]); - - $returnCode = proc_close($process); - - if ($returnCode !== 0) { - return false; - } - - return $result; - } -} diff --git a/v3_ci4/vendor/staabm/side-effects-detector/LICENSE b/v3_ci4/vendor/staabm/side-effects-detector/LICENSE deleted file mode 100644 index 91188b6..0000000 --- a/v3_ci4/vendor/staabm/side-effects-detector/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Markus Staab - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/v3_ci4/vendor/staabm/side-effects-detector/README.md b/v3_ci4/vendor/staabm/side-effects-detector/README.md deleted file mode 100644 index 5ef8ffe..0000000 --- a/v3_ci4/vendor/staabm/side-effects-detector/README.md +++ /dev/null @@ -1,57 +0,0 @@ -Analyzes php-code for side-effects. - -When code has no side-effects it can e.g. be used with `eval($code)` in the same process without interfering. -[Side-effects are classified](https://github.com/staabm/side-effects-detector/blob/main/lib/SideEffect.php) into categories to filter them more easily depending on your use-case. - -## Install - -`composer require staabm/side-effects-detector` - -## Usage - -Example: - -```php -use staabm\SideEffectsDetector\SideEffectsDetector; - -$code = '=") or echo("skip because attributes are only available since PHP 8.0");'; - -$detector = new SideEffectsDetector(); -// [SideEffect::STANDARD_OUTPUT] -var_dump($detector->getSideEffects($code)); -``` - -In case functions are called which are not known to have side-effects - e.g. userland functions - `null` is returned. - -```php -use staabm\SideEffectsDetector\SideEffectsDetector; - -$code = 'getSideEffects($code)); -``` - -Code might have multiple side-effects: - -```php -use staabm\SideEffectsDetector\SideEffectsDetector; - -$code = 'getSideEffects($code)); -``` - - -## Disclaimer - -Non goals are: -- find the best possible answer for all cases -- add runtime dependencies - -If you are in need of a fully fledged side-effect analysis, use more advanced tools like PHPStan. - -Look at the test-suite to get an idea of [supported use-cases](https://github.com/staabm/side-effects-detector/blob/main/tests/SideEffectsDetectorTest.php). diff --git a/v3_ci4/vendor/staabm/side-effects-detector/composer.json b/v3_ci4/vendor/staabm/side-effects-detector/composer.json deleted file mode 100644 index 0ef6413..0000000 --- a/v3_ci4/vendor/staabm/side-effects-detector/composer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "staabm/side-effects-detector", - "license": "MIT", - "description": "A static analysis tool to detect side effects in PHP code", - "keywords": ["static analysis"], - "autoload": { - "classmap": ["lib/"] - }, - "autoload-dev": { - "classmap": [ - "tests/" - ] - }, - "require": { - "php": "^7.4 || ^8.0", - "ext-tokenizer": "*" - }, - "require-dev": { - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.6", - "phpunit/phpunit": "^9.6.21", - "symfony/var-dumper": "^5.4.43", - "tomasvotruba/type-coverage": "1.0.0", - "tomasvotruba/unused-public": "1.0.0" - }, - "config": { - "optimize-autoloader": true, - "sort-packages": true, - "allow-plugins": { - "phpstan/extension-installer": true - } - }, - "scripts": { - "qa": ["@test", "@phpstan"], - "phpstan": "phpstan analyze", - "test": "phpunit" - } -} diff --git a/v3_ci4/vendor/staabm/side-effects-detector/lib/SideEffect.php b/v3_ci4/vendor/staabm/side-effects-detector/lib/SideEffect.php deleted file mode 100644 index 045a3aa..0000000 --- a/v3_ci4/vendor/staabm/side-effects-detector/lib/SideEffect.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ - private array $scopePollutingTokens = [ - T_CLASS, - T_FUNCTION, - T_NEW, - T_EVAL, - T_GLOBAL, - T_GOTO, - T_HALT_COMPILER, - T_INCLUDE, - T_INCLUDE_ONCE, - T_REQUIRE, - T_REQUIRE_ONCE, - T_THROW, - T_UNSET, - T_UNSET_CAST - ]; - - private const PROCESS_EXIT_TOKENS = [ - T_EXIT - ]; - - private const OUTPUT_TOKENS = [ - T_PRINT, - T_ECHO, - T_INLINE_HTML - ]; - - private const SCOPE_POLLUTING_FUNCTIONS = [ - 'putenv', - 'setlocale', - 'class_exists', - 'ini_set', - ]; - - private const STANDARD_OUTPUT_FUNCTIONS = [ - 'printf', - 'vprintf' - ]; - - private const INPUT_OUTPUT_FUNCTIONS = [ - 'fopen', - 'file_get_contents', - 'file_put_contents', - 'fwrite', - 'fputs', - 'fread', - 'unlink' - ]; - - /** - * @var array - */ - private array $functionMetadata; - - public function __construct() { - $functionMeta = require __DIR__ . '/functionMetadata.php'; - if (!is_array($functionMeta)) { - throw new \RuntimeException('Invalid function metadata'); - } - $this->functionMetadata = $functionMeta; - - if (defined('T_ENUM')) { - $this->scopePollutingTokens[] = T_ENUM; - } - } - - /** - * @api - * - * @return array - */ - public function getSideEffects(string $code): array { - $tokens = token_get_all($code); - - $sideEffects = []; - for ($i = 0; $i < count($tokens); $i++) { - $token = $tokens[$i]; - - if (!is_array($token)) { - continue; - } - - if ($this->isAnonymousFunction($tokens, $i)) { - continue; - } - - if (in_array($token[0], self::OUTPUT_TOKENS, true)) { - $sideEffects[] = SideEffect::STANDARD_OUTPUT; - continue; - } - if (in_array($token[0], self::PROCESS_EXIT_TOKENS, true)) { - $sideEffects[] = SideEffect::PROCESS_EXIT; - continue; - } - if (in_array($token[0], $this->scopePollutingTokens, true)) { - $sideEffects[] = SideEffect::SCOPE_POLLUTION; - - $i++; - if (in_array($token[0], [T_FUNCTION, T_CLASS], true)) { - $this->consumeWhitespaces($tokens, $i); - } - - // consume function/class-name - if ( - !array_key_exists($i, $tokens) - || !is_array($tokens[$i]) - || $tokens[$i][0] !== T_STRING - ) { - continue; - } - - $i++; - continue; - } - - $functionCall = $this->getFunctionCall($tokens, $i); - if ($functionCall !== null) { - $callSideEffect = $this->getFunctionCallSideEffect($functionCall); - if ($callSideEffect !== null) { - $sideEffects[] = $callSideEffect; - } - continue; - } - - $methodCall = $this->getMethodCall($tokens, $i); - if ($methodCall !== null) { - $sideEffects[] = SideEffect::MAYBE; - continue; - } - - $propertyAccess = $this->getPropertyAccess($tokens, $i); - if ($propertyAccess !== null) { - $sideEffects[] = SideEffect::SCOPE_POLLUTION; - continue; - } - - if ($this->isNonLocalVariable($tokens, $i)) { - $sideEffects[] = SideEffect::SCOPE_POLLUTION; - continue; - } - } - - return array_values(array_unique($sideEffects)); - } - - /** - * @return SideEffect::*|null - */ - private function getFunctionCallSideEffect(string $functionName): ?string { // @phpstan-ignore return.unusedType - if (in_array($functionName, self::STANDARD_OUTPUT_FUNCTIONS, true)) { - return SideEffect::STANDARD_OUTPUT; - } - - if (in_array($functionName, self::INPUT_OUTPUT_FUNCTIONS, true)) { - return SideEffect::INPUT_OUTPUT; - } - - if (in_array($functionName, self::SCOPE_POLLUTING_FUNCTIONS, true)) { - return SideEffect::SCOPE_POLLUTION; - } - - if (array_key_exists($functionName, $this->functionMetadata)) { - if ($this->functionMetadata[$functionName]['hasSideEffects'] === true) { - return SideEffect::UNKNOWN_CLASS; - } - } else { - try { - $reflectionFunction = new \ReflectionFunction($functionName); - $returnType = $reflectionFunction->getReturnType(); - if ($returnType === null) { - return SideEffect::MAYBE; // no reflection information -> we don't know - } - if ((string)$returnType === 'void') { - return SideEffect::UNKNOWN_CLASS; // functions with void return type must have side-effects - } - } catch (\ReflectionException $e) { - return SideEffect::MAYBE; // function does not exist -> we don't know - } - } - - return null; - } - - /** - * @param array $tokens - */ - private function getFunctionCall(array $tokens, int $index): ?string { - if ( - !array_key_exists($index, $tokens) - || !is_array($tokens[$index]) - || $tokens[$index][0] !== T_STRING - ) { - return null; - } - $functionName = $tokens[$index][1]; - - $index++; - $this->consumeWhitespaces($tokens, $index); - - if ( - array_key_exists($index, $tokens) - && $tokens[$index] === '(' - ) { - return $functionName; - } - - return null; - } - - /** - * @param array $tokens - */ - private function getMethodCall(array $tokens, int $index): ?string { - if ( - !array_key_exists($index, $tokens) - || !is_array($tokens[$index]) - || !in_array($tokens[$index][0], [T_VARIABLE, T_STRING], true) - ) { - return null; - } - $callee = $tokens[$index][1]; - - $index++; - $this->consumeWhitespaces($tokens, $index); - - if ( - !array_key_exists($index, $tokens) - || !is_array($tokens[$index]) - || !in_array($tokens[$index][0], [T_OBJECT_OPERATOR , T_DOUBLE_COLON ], true) - ) { - return null; - } - $operator = $tokens[$index][1]; - - $index++; - $this->consumeWhitespaces($tokens, $index); - - if ( - !array_key_exists($index, $tokens) - || !is_array($tokens[$index]) - || !in_array($tokens[$index][0], [T_STRING], true) - ) { - return null; - } - $method = $tokens[$index][1]; - - $index++; - $this->consumeWhitespaces($tokens, $index); - - if ( - array_key_exists($index, $tokens) - && $tokens[$index] !== '(' - ) { - return null; - } - - return $callee . $operator . $method; - } - - /** - * @param array $tokens - */ - private function getPropertyAccess(array $tokens, int $index): ?string { - if ( - !array_key_exists($index, $tokens) - || !is_array($tokens[$index]) - || !in_array($tokens[$index][0], [T_VARIABLE, T_STRING], true) - ) { - return null; - } - $objectOrClass = $tokens[$index][1]; - - $index++; - $this->consumeWhitespaces($tokens, $index); - - if ( - !array_key_exists($index, $tokens) - || !is_array($tokens[$index]) - || !in_array($tokens[$index][0], [T_OBJECT_OPERATOR , T_DOUBLE_COLON ], true) - ) { - return null; - } - $operator = $tokens[$index][1]; - - $index++; - $this->consumeWhitespaces($tokens, $index); - - if ( - !array_key_exists($index, $tokens) - || !is_array($tokens[$index]) - || !in_array($tokens[$index][0], [T_STRING, T_VARIABLE], true) - ) { - return null; - } - $propName = $tokens[$index][1]; - - return $objectOrClass . $operator . $propName; - } - - /** - * @param array $tokens - */ - private function isAnonymousFunction(array $tokens, int $index): bool - { - if ( - !array_key_exists($index, $tokens) - || !is_array($tokens[$index]) - || $tokens[$index][0] !== T_FUNCTION - ) { - return false; - } - - $index++; - $this->consumeWhitespaces($tokens, $index); - - if ( - array_key_exists($index, $tokens) - && $tokens[$index] === '(' - ) { - return true; - } - - return false; - } - - /** - * @param array $tokens - */ - private function isNonLocalVariable(array $tokens, int $index): bool - { - if ( - array_key_exists($index, $tokens) - && is_array($tokens[$index]) - && $tokens[$index][0] === T_VARIABLE - ) { - if ( - in_array( - $tokens[$index][1], - [ - '$this', - '$GLOBALS', '$_SERVER', '$_GET', '$_POST', '$_FILES', '$_COOKIE', '$_SESSION', '$_REQUEST', '$_ENV', - ], - true) - ) { - return true; - } - } - - return false; - } - - /** - * @param array $tokens - */ - private function consumeWhitespaces(array $tokens, int &$index): void { - while ( - array_key_exists($index, $tokens) - && is_array($tokens[$index]) - && $tokens[$index][0] === T_WHITESPACE - ) { - $index++; - } - } -} diff --git a/v3_ci4/vendor/staabm/side-effects-detector/lib/functionMetadata.php b/v3_ci4/vendor/staabm/side-effects-detector/lib/functionMetadata.php deleted file mode 100644 index 8a1748a..0000000 --- a/v3_ci4/vendor/staabm/side-effects-detector/lib/functionMetadata.php +++ /dev/null @@ -1,1588 +0,0 @@ - ['hasSideEffects' => true], - 'trigger_error' => ['hasSideEffects' => true], - 'putenv' => ['hasSideEffects' => true], - 'version_compare' => ['hasSideEffects' => false], - - // Intially copied from PHPStan - 'BackedEnum::from' => ['hasSideEffects' => false], - 'BackedEnum::tryFrom' => ['hasSideEffects' => false], - 'CURLFile::getFilename' => ['hasSideEffects' => false], - 'CURLFile::getMimeType' => ['hasSideEffects' => false], - 'CURLFile::getPostFilename' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\AlreadyExistsException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\AuthenticationException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\ConfigurationException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\DivideByZeroException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\DomainException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\ExecutionException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\InvalidArgumentException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\InvalidQueryException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\InvalidSyntaxException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\IsBootstrappingException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\LogicException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\OverloadedException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\ProtocolException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\RangeException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\ReadTimeoutException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\RuntimeException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\ServerException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\TimeoutException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\TruncateException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\UnauthorizedException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\UnavailableException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\UnpreparedException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\ValidationException::__construct' => ['hasSideEffects' => false], - 'Cassandra\\Exception\\WriteTimeoutException::__construct' => ['hasSideEffects' => false], - 'Closure::bind' => ['hasSideEffects' => false], - 'Closure::bindTo' => ['hasSideEffects' => false], - 'Collator::__construct' => ['hasSideEffects' => false], - 'Collator::compare' => ['hasSideEffects' => false], - 'Collator::getAttribute' => ['hasSideEffects' => false], - 'Collator::getErrorCode' => ['hasSideEffects' => false], - 'Collator::getErrorMessage' => ['hasSideEffects' => false], - 'Collator::getLocale' => ['hasSideEffects' => false], - 'Collator::getSortKey' => ['hasSideEffects' => false], - 'Collator::getStrength' => ['hasSideEffects' => false], - 'DateTime::add' => ['hasSideEffects' => true], - 'DateTime::createFromFormat' => ['hasSideEffects' => false], - 'DateTime::createFromImmutable' => ['hasSideEffects' => false], - 'DateTime::diff' => ['hasSideEffects' => false], - 'DateTime::format' => ['hasSideEffects' => false], - 'DateTime::getLastErrors' => ['hasSideEffects' => false], - 'DateTime::getOffset' => ['hasSideEffects' => false], - 'DateTime::getTimestamp' => ['hasSideEffects' => false], - 'DateTime::getTimezone' => ['hasSideEffects' => false], - 'DateTime::modify' => ['hasSideEffects' => true], - 'DateTime::setDate' => ['hasSideEffects' => true], - 'DateTime::setISODate' => ['hasSideEffects' => true], - 'DateTime::setTime' => ['hasSideEffects' => true], - 'DateTime::setTimestamp' => ['hasSideEffects' => true], - 'DateTime::setTimezone' => ['hasSideEffects' => true], - 'DateTime::sub' => ['hasSideEffects' => true], - 'DateTimeImmutable::add' => ['hasSideEffects' => false], - 'DateTimeImmutable::createFromFormat' => ['hasSideEffects' => false], - 'DateTimeImmutable::createFromMutable' => ['hasSideEffects' => false], - 'DateTimeImmutable::diff' => ['hasSideEffects' => false], - 'DateTimeImmutable::format' => ['hasSideEffects' => false], - 'DateTimeImmutable::getLastErrors' => ['hasSideEffects' => false], - 'DateTimeImmutable::getOffset' => ['hasSideEffects' => false], - 'DateTimeImmutable::getTimestamp' => ['hasSideEffects' => false], - 'DateTimeImmutable::getTimezone' => ['hasSideEffects' => false], - 'DateTimeImmutable::modify' => ['hasSideEffects' => false], - 'DateTimeImmutable::setDate' => ['hasSideEffects' => false], - 'DateTimeImmutable::setISODate' => ['hasSideEffects' => false], - 'DateTimeImmutable::setTime' => ['hasSideEffects' => false], - 'DateTimeImmutable::setTimestamp' => ['hasSideEffects' => false], - 'DateTimeImmutable::setTimezone' => ['hasSideEffects' => false], - 'DateTimeImmutable::sub' => ['hasSideEffects' => false], - 'Error::__construct' => ['hasSideEffects' => false], - 'ErrorException::__construct' => ['hasSideEffects' => false], - 'Event::__construct' => ['hasSideEffects' => false], - 'EventBase::getFeatures' => ['hasSideEffects' => false], - 'EventBase::getMethod' => ['hasSideEffects' => false], - 'EventBase::getTimeOfDayCached' => ['hasSideEffects' => false], - 'EventBase::gotExit' => ['hasSideEffects' => false], - 'EventBase::gotStop' => ['hasSideEffects' => false], - 'EventBuffer::__construct' => ['hasSideEffects' => false], - 'EventBufferEvent::__construct' => ['hasSideEffects' => false], - 'EventBufferEvent::getDnsErrorString' => ['hasSideEffects' => false], - 'EventBufferEvent::getEnabled' => ['hasSideEffects' => false], - 'EventBufferEvent::getInput' => ['hasSideEffects' => false], - 'EventBufferEvent::getOutput' => ['hasSideEffects' => false], - 'EventConfig::__construct' => ['hasSideEffects' => false], - 'EventDnsBase::__construct' => ['hasSideEffects' => false], - 'EventHttpConnection::__construct' => ['hasSideEffects' => false], - 'EventHttpRequest::__construct' => ['hasSideEffects' => false], - 'EventHttpRequest::getCommand' => ['hasSideEffects' => false], - 'EventHttpRequest::getConnection' => ['hasSideEffects' => false], - 'EventHttpRequest::getHost' => ['hasSideEffects' => false], - 'EventHttpRequest::getInputBuffer' => ['hasSideEffects' => false], - 'EventHttpRequest::getInputHeaders' => ['hasSideEffects' => false], - 'EventHttpRequest::getOutputBuffer' => ['hasSideEffects' => false], - 'EventHttpRequest::getOutputHeaders' => ['hasSideEffects' => false], - 'EventHttpRequest::getResponseCode' => ['hasSideEffects' => false], - 'EventHttpRequest::getUri' => ['hasSideEffects' => false], - 'EventSslContext::__construct' => ['hasSideEffects' => false], - 'Exception::__construct' => ['hasSideEffects' => false], - 'Exception::getCode' => ['hasSideEffects' => false], - 'Exception::getFile' => ['hasSideEffects' => false], - 'Exception::getLine' => ['hasSideEffects' => false], - 'Exception::getMessage' => ['hasSideEffects' => false], - 'Exception::getPrevious' => ['hasSideEffects' => false], - 'Exception::getTrace' => ['hasSideEffects' => false], - 'Exception::getTraceAsString' => ['hasSideEffects' => false], - 'Gmagick::getcopyright' => ['hasSideEffects' => false], - 'Gmagick::getfilename' => ['hasSideEffects' => false], - 'Gmagick::getimagebackgroundcolor' => ['hasSideEffects' => false], - 'Gmagick::getimageblueprimary' => ['hasSideEffects' => false], - 'Gmagick::getimagebordercolor' => ['hasSideEffects' => false], - 'Gmagick::getimagechanneldepth' => ['hasSideEffects' => false], - 'Gmagick::getimagecolors' => ['hasSideEffects' => false], - 'Gmagick::getimagecolorspace' => ['hasSideEffects' => false], - 'Gmagick::getimagecompose' => ['hasSideEffects' => false], - 'Gmagick::getimagedelay' => ['hasSideEffects' => false], - 'Gmagick::getimagedepth' => ['hasSideEffects' => false], - 'Gmagick::getimagedispose' => ['hasSideEffects' => false], - 'Gmagick::getimageextrema' => ['hasSideEffects' => false], - 'Gmagick::getimagefilename' => ['hasSideEffects' => false], - 'Gmagick::getimageformat' => ['hasSideEffects' => false], - 'Gmagick::getimagegamma' => ['hasSideEffects' => false], - 'Gmagick::getimagegreenprimary' => ['hasSideEffects' => false], - 'Gmagick::getimageheight' => ['hasSideEffects' => false], - 'Gmagick::getimagehistogram' => ['hasSideEffects' => false], - 'Gmagick::getimageindex' => ['hasSideEffects' => false], - 'Gmagick::getimageinterlacescheme' => ['hasSideEffects' => false], - 'Gmagick::getimageiterations' => ['hasSideEffects' => false], - 'Gmagick::getimagematte' => ['hasSideEffects' => false], - 'Gmagick::getimagemattecolor' => ['hasSideEffects' => false], - 'Gmagick::getimageprofile' => ['hasSideEffects' => false], - 'Gmagick::getimageredprimary' => ['hasSideEffects' => false], - 'Gmagick::getimagerenderingintent' => ['hasSideEffects' => false], - 'Gmagick::getimageresolution' => ['hasSideEffects' => false], - 'Gmagick::getimagescene' => ['hasSideEffects' => false], - 'Gmagick::getimagesignature' => ['hasSideEffects' => false], - 'Gmagick::getimagetype' => ['hasSideEffects' => false], - 'Gmagick::getimageunits' => ['hasSideEffects' => false], - 'Gmagick::getimagewhitepoint' => ['hasSideEffects' => false], - 'Gmagick::getimagewidth' => ['hasSideEffects' => false], - 'Gmagick::getpackagename' => ['hasSideEffects' => false], - 'Gmagick::getquantumdepth' => ['hasSideEffects' => false], - 'Gmagick::getreleasedate' => ['hasSideEffects' => false], - 'Gmagick::getsamplingfactors' => ['hasSideEffects' => false], - 'Gmagick::getsize' => ['hasSideEffects' => false], - 'Gmagick::getversion' => ['hasSideEffects' => false], - 'GmagickDraw::getfillcolor' => ['hasSideEffects' => false], - 'GmagickDraw::getfillopacity' => ['hasSideEffects' => false], - 'GmagickDraw::getfont' => ['hasSideEffects' => false], - 'GmagickDraw::getfontsize' => ['hasSideEffects' => false], - 'GmagickDraw::getfontstyle' => ['hasSideEffects' => false], - 'GmagickDraw::getfontweight' => ['hasSideEffects' => false], - 'GmagickDraw::getstrokecolor' => ['hasSideEffects' => false], - 'GmagickDraw::getstrokeopacity' => ['hasSideEffects' => false], - 'GmagickDraw::getstrokewidth' => ['hasSideEffects' => false], - 'GmagickDraw::gettextdecoration' => ['hasSideEffects' => false], - 'GmagickDraw::gettextencoding' => ['hasSideEffects' => false], - 'GmagickPixel::getcolor' => ['hasSideEffects' => false], - 'GmagickPixel::getcolorcount' => ['hasSideEffects' => false], - 'GmagickPixel::getcolorvalue' => ['hasSideEffects' => false], - 'HttpMessage::getBody' => ['hasSideEffects' => false], - 'HttpMessage::getHeader' => ['hasSideEffects' => false], - 'HttpMessage::getHeaders' => ['hasSideEffects' => false], - 'HttpMessage::getHttpVersion' => ['hasSideEffects' => false], - 'HttpMessage::getInfo' => ['hasSideEffects' => false], - 'HttpMessage::getParentMessage' => ['hasSideEffects' => false], - 'HttpMessage::getRequestMethod' => ['hasSideEffects' => false], - 'HttpMessage::getRequestUrl' => ['hasSideEffects' => false], - 'HttpMessage::getResponseCode' => ['hasSideEffects' => false], - 'HttpMessage::getResponseStatus' => ['hasSideEffects' => false], - 'HttpMessage::getType' => ['hasSideEffects' => false], - 'HttpQueryString::get' => ['hasSideEffects' => false], - 'HttpQueryString::getArray' => ['hasSideEffects' => false], - 'HttpQueryString::getBool' => ['hasSideEffects' => false], - 'HttpQueryString::getFloat' => ['hasSideEffects' => false], - 'HttpQueryString::getInt' => ['hasSideEffects' => false], - 'HttpQueryString::getObject' => ['hasSideEffects' => false], - 'HttpQueryString::getString' => ['hasSideEffects' => false], - 'HttpRequest::getBody' => ['hasSideEffects' => false], - 'HttpRequest::getContentType' => ['hasSideEffects' => false], - 'HttpRequest::getCookies' => ['hasSideEffects' => false], - 'HttpRequest::getHeaders' => ['hasSideEffects' => false], - 'HttpRequest::getHistory' => ['hasSideEffects' => false], - 'HttpRequest::getMethod' => ['hasSideEffects' => false], - 'HttpRequest::getOptions' => ['hasSideEffects' => false], - 'HttpRequest::getPostFields' => ['hasSideEffects' => false], - 'HttpRequest::getPostFiles' => ['hasSideEffects' => false], - 'HttpRequest::getPutData' => ['hasSideEffects' => false], - 'HttpRequest::getPutFile' => ['hasSideEffects' => false], - 'HttpRequest::getQueryData' => ['hasSideEffects' => false], - 'HttpRequest::getRawPostData' => ['hasSideEffects' => false], - 'HttpRequest::getRawRequestMessage' => ['hasSideEffects' => false], - 'HttpRequest::getRawResponseMessage' => ['hasSideEffects' => false], - 'HttpRequest::getRequestMessage' => ['hasSideEffects' => false], - 'HttpRequest::getResponseBody' => ['hasSideEffects' => false], - 'HttpRequest::getResponseCode' => ['hasSideEffects' => false], - 'HttpRequest::getResponseCookies' => ['hasSideEffects' => false], - 'HttpRequest::getResponseData' => ['hasSideEffects' => false], - 'HttpRequest::getResponseHeader' => ['hasSideEffects' => false], - 'HttpRequest::getResponseInfo' => ['hasSideEffects' => false], - 'HttpRequest::getResponseMessage' => ['hasSideEffects' => false], - 'HttpRequest::getResponseStatus' => ['hasSideEffects' => false], - 'HttpRequest::getSslOptions' => ['hasSideEffects' => false], - 'HttpRequest::getUrl' => ['hasSideEffects' => false], - 'HttpRequestPool::getAttachedRequests' => ['hasSideEffects' => false], - 'HttpRequestPool::getFinishedRequests' => ['hasSideEffects' => false], - 'Imagick::getColorspace' => ['hasSideEffects' => false], - 'Imagick::getCompression' => ['hasSideEffects' => false], - 'Imagick::getCompressionQuality' => ['hasSideEffects' => false], - 'Imagick::getConfigureOptions' => ['hasSideEffects' => false], - 'Imagick::getFeatures' => ['hasSideEffects' => false], - 'Imagick::getFilename' => ['hasSideEffects' => false], - 'Imagick::getFont' => ['hasSideEffects' => false], - 'Imagick::getFormat' => ['hasSideEffects' => false], - 'Imagick::getGravity' => ['hasSideEffects' => false], - 'Imagick::getHDRIEnabled' => ['hasSideEffects' => false], - 'Imagick::getImage' => ['hasSideEffects' => false], - 'Imagick::getImageAlphaChannel' => ['hasSideEffects' => false], - 'Imagick::getImageArtifact' => ['hasSideEffects' => false], - 'Imagick::getImageAttribute' => ['hasSideEffects' => false], - 'Imagick::getImageBackgroundColor' => ['hasSideEffects' => false], - 'Imagick::getImageBlob' => ['hasSideEffects' => false], - 'Imagick::getImageBluePrimary' => ['hasSideEffects' => false], - 'Imagick::getImageBorderColor' => ['hasSideEffects' => false], - 'Imagick::getImageChannelDepth' => ['hasSideEffects' => false], - 'Imagick::getImageChannelDistortion' => ['hasSideEffects' => false], - 'Imagick::getImageChannelDistortions' => ['hasSideEffects' => false], - 'Imagick::getImageChannelExtrema' => ['hasSideEffects' => false], - 'Imagick::getImageChannelKurtosis' => ['hasSideEffects' => false], - 'Imagick::getImageChannelMean' => ['hasSideEffects' => false], - 'Imagick::getImageChannelRange' => ['hasSideEffects' => false], - 'Imagick::getImageChannelStatistics' => ['hasSideEffects' => false], - 'Imagick::getImageClipMask' => ['hasSideEffects' => false], - 'Imagick::getImageColormapColor' => ['hasSideEffects' => false], - 'Imagick::getImageColors' => ['hasSideEffects' => false], - 'Imagick::getImageColorspace' => ['hasSideEffects' => false], - 'Imagick::getImageCompose' => ['hasSideEffects' => false], - 'Imagick::getImageCompression' => ['hasSideEffects' => false], - 'Imagick::getImageCompressionQuality' => ['hasSideEffects' => false], - 'Imagick::getImageDelay' => ['hasSideEffects' => false], - 'Imagick::getImageDepth' => ['hasSideEffects' => false], - 'Imagick::getImageDispose' => ['hasSideEffects' => false], - 'Imagick::getImageDistortion' => ['hasSideEffects' => false], - 'Imagick::getImageExtrema' => ['hasSideEffects' => false], - 'Imagick::getImageFilename' => ['hasSideEffects' => false], - 'Imagick::getImageFormat' => ['hasSideEffects' => false], - 'Imagick::getImageGamma' => ['hasSideEffects' => false], - 'Imagick::getImageGeometry' => ['hasSideEffects' => false], - 'Imagick::getImageGravity' => ['hasSideEffects' => false], - 'Imagick::getImageGreenPrimary' => ['hasSideEffects' => false], - 'Imagick::getImageHeight' => ['hasSideEffects' => false], - 'Imagick::getImageHistogram' => ['hasSideEffects' => false], - 'Imagick::getImageIndex' => ['hasSideEffects' => false], - 'Imagick::getImageInterlaceScheme' => ['hasSideEffects' => false], - 'Imagick::getImageInterpolateMethod' => ['hasSideEffects' => false], - 'Imagick::getImageIterations' => ['hasSideEffects' => false], - 'Imagick::getImageLength' => ['hasSideEffects' => false], - 'Imagick::getImageMatte' => ['hasSideEffects' => false], - 'Imagick::getImageMatteColor' => ['hasSideEffects' => false], - 'Imagick::getImageMimeType' => ['hasSideEffects' => false], - 'Imagick::getImageOrientation' => ['hasSideEffects' => false], - 'Imagick::getImagePage' => ['hasSideEffects' => false], - 'Imagick::getImagePixelColor' => ['hasSideEffects' => false], - 'Imagick::getImageProfile' => ['hasSideEffects' => false], - 'Imagick::getImageProfiles' => ['hasSideEffects' => false], - 'Imagick::getImageProperties' => ['hasSideEffects' => false], - 'Imagick::getImageProperty' => ['hasSideEffects' => false], - 'Imagick::getImageRedPrimary' => ['hasSideEffects' => false], - 'Imagick::getImageRegion' => ['hasSideEffects' => false], - 'Imagick::getImageRenderingIntent' => ['hasSideEffects' => false], - 'Imagick::getImageResolution' => ['hasSideEffects' => false], - 'Imagick::getImageScene' => ['hasSideEffects' => false], - 'Imagick::getImageSignature' => ['hasSideEffects' => false], - 'Imagick::getImageSize' => ['hasSideEffects' => false], - 'Imagick::getImageTicksPerSecond' => ['hasSideEffects' => false], - 'Imagick::getImageTotalInkDensity' => ['hasSideEffects' => false], - 'Imagick::getImageType' => ['hasSideEffects' => false], - 'Imagick::getImageUnits' => ['hasSideEffects' => false], - 'Imagick::getImageVirtualPixelMethod' => ['hasSideEffects' => false], - 'Imagick::getImageWhitePoint' => ['hasSideEffects' => false], - 'Imagick::getImageWidth' => ['hasSideEffects' => false], - 'Imagick::getImagesBlob' => ['hasSideEffects' => false], - 'Imagick::getInterlaceScheme' => ['hasSideEffects' => false], - 'Imagick::getIteratorIndex' => ['hasSideEffects' => false], - 'Imagick::getNumberImages' => ['hasSideEffects' => false], - 'Imagick::getOption' => ['hasSideEffects' => false], - 'Imagick::getPage' => ['hasSideEffects' => false], - 'Imagick::getPixelIterator' => ['hasSideEffects' => false], - 'Imagick::getPixelRegionIterator' => ['hasSideEffects' => false], - 'Imagick::getPointSize' => ['hasSideEffects' => false], - 'Imagick::getSamplingFactors' => ['hasSideEffects' => false], - 'Imagick::getSize' => ['hasSideEffects' => false], - 'Imagick::getSizeOffset' => ['hasSideEffects' => false], - 'ImagickDraw::getBorderColor' => ['hasSideEffects' => false], - 'ImagickDraw::getClipPath' => ['hasSideEffects' => false], - 'ImagickDraw::getClipRule' => ['hasSideEffects' => false], - 'ImagickDraw::getClipUnits' => ['hasSideEffects' => false], - 'ImagickDraw::getDensity' => ['hasSideEffects' => false], - 'ImagickDraw::getFillColor' => ['hasSideEffects' => false], - 'ImagickDraw::getFillOpacity' => ['hasSideEffects' => false], - 'ImagickDraw::getFillRule' => ['hasSideEffects' => false], - 'ImagickDraw::getFont' => ['hasSideEffects' => false], - 'ImagickDraw::getFontFamily' => ['hasSideEffects' => false], - 'ImagickDraw::getFontResolution' => ['hasSideEffects' => false], - 'ImagickDraw::getFontSize' => ['hasSideEffects' => false], - 'ImagickDraw::getFontStretch' => ['hasSideEffects' => false], - 'ImagickDraw::getFontStyle' => ['hasSideEffects' => false], - 'ImagickDraw::getFontWeight' => ['hasSideEffects' => false], - 'ImagickDraw::getGravity' => ['hasSideEffects' => false], - 'ImagickDraw::getOpacity' => ['hasSideEffects' => false], - 'ImagickDraw::getStrokeAntialias' => ['hasSideEffects' => false], - 'ImagickDraw::getStrokeColor' => ['hasSideEffects' => false], - 'ImagickDraw::getStrokeDashArray' => ['hasSideEffects' => false], - 'ImagickDraw::getStrokeDashOffset' => ['hasSideEffects' => false], - 'ImagickDraw::getStrokeLineCap' => ['hasSideEffects' => false], - 'ImagickDraw::getStrokeLineJoin' => ['hasSideEffects' => false], - 'ImagickDraw::getStrokeMiterLimit' => ['hasSideEffects' => false], - 'ImagickDraw::getStrokeOpacity' => ['hasSideEffects' => false], - 'ImagickDraw::getStrokeWidth' => ['hasSideEffects' => false], - 'ImagickDraw::getTextAlignment' => ['hasSideEffects' => false], - 'ImagickDraw::getTextAntialias' => ['hasSideEffects' => false], - 'ImagickDraw::getTextDecoration' => ['hasSideEffects' => false], - 'ImagickDraw::getTextDirection' => ['hasSideEffects' => false], - 'ImagickDraw::getTextEncoding' => ['hasSideEffects' => false], - 'ImagickDraw::getTextInterLineSpacing' => ['hasSideEffects' => false], - 'ImagickDraw::getTextInterWordSpacing' => ['hasSideEffects' => false], - 'ImagickDraw::getTextKerning' => ['hasSideEffects' => false], - 'ImagickDraw::getTextUnderColor' => ['hasSideEffects' => false], - 'ImagickDraw::getVectorGraphics' => ['hasSideEffects' => false], - 'ImagickKernel::getMatrix' => ['hasSideEffects' => false], - 'ImagickPixel::getColor' => ['hasSideEffects' => false], - 'ImagickPixel::getColorAsString' => ['hasSideEffects' => false], - 'ImagickPixel::getColorCount' => ['hasSideEffects' => false], - 'ImagickPixel::getColorQuantum' => ['hasSideEffects' => false], - 'ImagickPixel::getColorValue' => ['hasSideEffects' => false], - 'ImagickPixel::getColorValueQuantum' => ['hasSideEffects' => false], - 'ImagickPixel::getHSL' => ['hasSideEffects' => false], - 'ImagickPixel::getIndex' => ['hasSideEffects' => false], - 'ImagickPixelIterator::getCurrentIteratorRow' => ['hasSideEffects' => false], - 'ImagickPixelIterator::getIteratorRow' => ['hasSideEffects' => false], - 'ImagickPixelIterator::getNextIteratorRow' => ['hasSideEffects' => false], - 'ImagickPixelIterator::getPreviousIteratorRow' => ['hasSideEffects' => false], - 'IntBackedEnum::from' => ['hasSideEffects' => false], - 'IntBackedEnum::tryFrom' => ['hasSideEffects' => false], - 'IntlBreakIterator::current' => ['hasSideEffects' => false], - 'IntlBreakIterator::getErrorCode' => ['hasSideEffects' => false], - 'IntlBreakIterator::getErrorMessage' => ['hasSideEffects' => false], - 'IntlBreakIterator::getIterator' => ['hasSideEffects' => false], - 'IntlBreakIterator::getLocale' => ['hasSideEffects' => false], - 'IntlBreakIterator::getPartsIterator' => ['hasSideEffects' => false], - 'IntlBreakIterator::getText' => ['hasSideEffects' => false], - 'IntlBreakIterator::isBoundary' => ['hasSideEffects' => false], - 'IntlCalendar::after' => ['hasSideEffects' => false], - 'IntlCalendar::before' => ['hasSideEffects' => false], - 'IntlCalendar::equals' => ['hasSideEffects' => false], - 'IntlCalendar::fieldDifference' => ['hasSideEffects' => false], - 'IntlCalendar::get' => ['hasSideEffects' => false], - 'IntlCalendar::getActualMaximum' => ['hasSideEffects' => false], - 'IntlCalendar::getActualMinimum' => ['hasSideEffects' => false], - 'IntlCalendar::getDayOfWeekType' => ['hasSideEffects' => false], - 'IntlCalendar::getErrorCode' => ['hasSideEffects' => false], - 'IntlCalendar::getErrorMessage' => ['hasSideEffects' => false], - 'IntlCalendar::getFirstDayOfWeek' => ['hasSideEffects' => false], - 'IntlCalendar::getGreatestMinimum' => ['hasSideEffects' => false], - 'IntlCalendar::getLeastMaximum' => ['hasSideEffects' => false], - 'IntlCalendar::getLocale' => ['hasSideEffects' => false], - 'IntlCalendar::getMaximum' => ['hasSideEffects' => false], - 'IntlCalendar::getMinimalDaysInFirstWeek' => ['hasSideEffects' => false], - 'IntlCalendar::getMinimum' => ['hasSideEffects' => false], - 'IntlCalendar::getRepeatedWallTimeOption' => ['hasSideEffects' => false], - 'IntlCalendar::getSkippedWallTimeOption' => ['hasSideEffects' => false], - 'IntlCalendar::getTime' => ['hasSideEffects' => false], - 'IntlCalendar::getTimeZone' => ['hasSideEffects' => false], - 'IntlCalendar::getType' => ['hasSideEffects' => false], - 'IntlCalendar::getWeekendTransition' => ['hasSideEffects' => false], - 'IntlCalendar::inDaylightTime' => ['hasSideEffects' => false], - 'IntlCalendar::isEquivalentTo' => ['hasSideEffects' => false], - 'IntlCalendar::isLenient' => ['hasSideEffects' => false], - 'IntlCalendar::isWeekend' => ['hasSideEffects' => false], - 'IntlCalendar::toDateTime' => ['hasSideEffects' => false], - 'IntlChar::hasBinaryProperty' => ['hasSideEffects' => false], - 'IntlCodePointBreakIterator::getLastCodePoint' => ['hasSideEffects' => false], - 'IntlDateFormatter::__construct' => ['hasSideEffects' => false], - 'IntlDateFormatter::getCalendar' => ['hasSideEffects' => false], - 'IntlDateFormatter::getCalendarObject' => ['hasSideEffects' => false], - 'IntlDateFormatter::getDateType' => ['hasSideEffects' => false], - 'IntlDateFormatter::getErrorCode' => ['hasSideEffects' => false], - 'IntlDateFormatter::getErrorMessage' => ['hasSideEffects' => false], - 'IntlDateFormatter::getLocale' => ['hasSideEffects' => false], - 'IntlDateFormatter::getPattern' => ['hasSideEffects' => false], - 'IntlDateFormatter::getTimeType' => ['hasSideEffects' => false], - 'IntlDateFormatter::getTimeZone' => ['hasSideEffects' => false], - 'IntlDateFormatter::getTimeZoneId' => ['hasSideEffects' => false], - 'IntlDateFormatter::isLenient' => ['hasSideEffects' => false], - 'IntlGregorianCalendar::getGregorianChange' => ['hasSideEffects' => false], - 'IntlGregorianCalendar::isLeapYear' => ['hasSideEffects' => false], - 'IntlPartsIterator::getBreakIterator' => ['hasSideEffects' => false], - 'IntlRuleBasedBreakIterator::__construct' => ['hasSideEffects' => false], - 'IntlRuleBasedBreakIterator::getBinaryRules' => ['hasSideEffects' => false], - 'IntlRuleBasedBreakIterator::getRuleStatus' => ['hasSideEffects' => false], - 'IntlRuleBasedBreakIterator::getRuleStatusVec' => ['hasSideEffects' => false], - 'IntlRuleBasedBreakIterator::getRules' => ['hasSideEffects' => false], - 'IntlTimeZone::getDSTSavings' => ['hasSideEffects' => false], - 'IntlTimeZone::getDisplayName' => ['hasSideEffects' => false], - 'IntlTimeZone::getErrorCode' => ['hasSideEffects' => false], - 'IntlTimeZone::getErrorMessage' => ['hasSideEffects' => false], - 'IntlTimeZone::getID' => ['hasSideEffects' => false], - 'IntlTimeZone::getRawOffset' => ['hasSideEffects' => false], - 'IntlTimeZone::hasSameRules' => ['hasSideEffects' => false], - 'IntlTimeZone::toDateTimeZone' => ['hasSideEffects' => false], - 'JsonIncrementalParser::__construct' => ['hasSideEffects' => false], - 'JsonIncrementalParser::get' => ['hasSideEffects' => false], - 'JsonIncrementalParser::getError' => ['hasSideEffects' => false], - 'MemcachedException::__construct' => ['hasSideEffects' => false], - 'MessageFormatter::__construct' => ['hasSideEffects' => false], - 'MessageFormatter::format' => ['hasSideEffects' => false], - 'MessageFormatter::getErrorCode' => ['hasSideEffects' => false], - 'MessageFormatter::getErrorMessage' => ['hasSideEffects' => false], - 'MessageFormatter::getLocale' => ['hasSideEffects' => false], - 'MessageFormatter::getPattern' => ['hasSideEffects' => false], - 'MessageFormatter::parse' => ['hasSideEffects' => false], - 'NumberFormatter::__construct' => ['hasSideEffects' => false], - 'NumberFormatter::format' => ['hasSideEffects' => false], - 'NumberFormatter::formatCurrency' => ['hasSideEffects' => false], - 'NumberFormatter::getAttribute' => ['hasSideEffects' => false], - 'NumberFormatter::getErrorCode' => ['hasSideEffects' => false], - 'NumberFormatter::getErrorMessage' => ['hasSideEffects' => false], - 'NumberFormatter::getLocale' => ['hasSideEffects' => false], - 'NumberFormatter::getPattern' => ['hasSideEffects' => false], - 'NumberFormatter::getSymbol' => ['hasSideEffects' => false], - 'NumberFormatter::getTextAttribute' => ['hasSideEffects' => false], - 'ReflectionAttribute::getArguments' => ['hasSideEffects' => false], - 'ReflectionAttribute::getName' => ['hasSideEffects' => false], - 'ReflectionAttribute::getTarget' => ['hasSideEffects' => false], - 'ReflectionAttribute::isRepeated' => ['hasSideEffects' => false], - 'ReflectionClass::getAttributes' => ['hasSideEffects' => false], - 'ReflectionClass::getConstant' => ['hasSideEffects' => false], - 'ReflectionClass::getConstants' => ['hasSideEffects' => false], - 'ReflectionClass::getConstructor' => ['hasSideEffects' => false], - 'ReflectionClass::getDefaultProperties' => ['hasSideEffects' => false], - 'ReflectionClass::getDocComment' => ['hasSideEffects' => false], - 'ReflectionClass::getEndLine' => ['hasSideEffects' => false], - 'ReflectionClass::getExtension' => ['hasSideEffects' => false], - 'ReflectionClass::getExtensionName' => ['hasSideEffects' => false], - 'ReflectionClass::getFileName' => ['hasSideEffects' => false], - 'ReflectionClass::getInterfaceNames' => ['hasSideEffects' => false], - 'ReflectionClass::getInterfaces' => ['hasSideEffects' => false], - 'ReflectionClass::getMethod' => ['hasSideEffects' => false], - 'ReflectionClass::getMethods' => ['hasSideEffects' => false], - 'ReflectionClass::getModifiers' => ['hasSideEffects' => false], - 'ReflectionClass::getName' => ['hasSideEffects' => false], - 'ReflectionClass::getNamespaceName' => ['hasSideEffects' => false], - 'ReflectionClass::getParentClass' => ['hasSideEffects' => false], - 'ReflectionClass::getProperties' => ['hasSideEffects' => false], - 'ReflectionClass::getProperty' => ['hasSideEffects' => false], - 'ReflectionClass::getReflectionConstant' => ['hasSideEffects' => false], - 'ReflectionClass::getReflectionConstants' => ['hasSideEffects' => false], - 'ReflectionClass::getShortName' => ['hasSideEffects' => false], - 'ReflectionClass::getStartLine' => ['hasSideEffects' => false], - 'ReflectionClass::getStaticProperties' => ['hasSideEffects' => false], - 'ReflectionClass::getStaticPropertyValue' => ['hasSideEffects' => false], - 'ReflectionClass::getTraitAliases' => ['hasSideEffects' => false], - 'ReflectionClass::getTraitNames' => ['hasSideEffects' => false], - 'ReflectionClass::getTraits' => ['hasSideEffects' => false], - 'ReflectionClass::isAbstract' => ['hasSideEffects' => false], - 'ReflectionClass::isAnonymous' => ['hasSideEffects' => false], - 'ReflectionClass::isCloneable' => ['hasSideEffects' => false], - 'ReflectionClass::isFinal' => ['hasSideEffects' => false], - 'ReflectionClass::isInstance' => ['hasSideEffects' => false], - 'ReflectionClass::isInstantiable' => ['hasSideEffects' => false], - 'ReflectionClass::isInterface' => ['hasSideEffects' => false], - 'ReflectionClass::isInternal' => ['hasSideEffects' => false], - 'ReflectionClass::isIterable' => ['hasSideEffects' => false], - 'ReflectionClass::isIterateable' => ['hasSideEffects' => false], - 'ReflectionClass::isReadOnly' => ['hasSideEffects' => false], - 'ReflectionClass::isSubclassOf' => ['hasSideEffects' => false], - 'ReflectionClass::isTrait' => ['hasSideEffects' => false], - 'ReflectionClass::isUserDefined' => ['hasSideEffects' => false], - 'ReflectionClassConstant::getAttributes' => ['hasSideEffects' => false], - 'ReflectionClassConstant::getDeclaringClass' => ['hasSideEffects' => false], - 'ReflectionClassConstant::getDocComment' => ['hasSideEffects' => false], - 'ReflectionClassConstant::getModifiers' => ['hasSideEffects' => false], - 'ReflectionClassConstant::getName' => ['hasSideEffects' => false], - 'ReflectionClassConstant::getValue' => ['hasSideEffects' => false], - 'ReflectionClassConstant::isPrivate' => ['hasSideEffects' => false], - 'ReflectionClassConstant::isProtected' => ['hasSideEffects' => false], - 'ReflectionClassConstant::isPublic' => ['hasSideEffects' => false], - 'ReflectionEnumBackedCase::getBackingValue' => ['hasSideEffects' => false], - 'ReflectionEnumUnitCase::getEnum' => ['hasSideEffects' => false], - 'ReflectionEnumUnitCase::getValue' => ['hasSideEffects' => false], - 'ReflectionExtension::getClassNames' => ['hasSideEffects' => false], - 'ReflectionExtension::getClasses' => ['hasSideEffects' => false], - 'ReflectionExtension::getConstants' => ['hasSideEffects' => false], - 'ReflectionExtension::getDependencies' => ['hasSideEffects' => false], - 'ReflectionExtension::getFunctions' => ['hasSideEffects' => false], - 'ReflectionExtension::getINIEntries' => ['hasSideEffects' => false], - 'ReflectionExtension::getName' => ['hasSideEffects' => false], - 'ReflectionExtension::getVersion' => ['hasSideEffects' => false], - 'ReflectionExtension::isPersistent' => ['hasSideEffects' => false], - 'ReflectionExtension::isTemporary' => ['hasSideEffects' => false], - 'ReflectionFunction::getClosure' => ['hasSideEffects' => false], - 'ReflectionFunction::isDisabled' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getAttributes' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getClosureCalledClass' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getClosureScopeClass' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getClosureThis' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getClosureUsedVariables' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getDocComment' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getEndLine' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getExtension' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getExtensionName' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getFileName' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getName' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getNamespaceName' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getNumberOfParameters' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getNumberOfRequiredParameters' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getParameters' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getReturnType' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getShortName' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getStartLine' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getStaticVariables' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::getTentativeReturnType' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::hasTentativeReturnType' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::isClosure' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::isDeprecated' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::isGenerator' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::isInternal' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::isStatic' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::isUserDefined' => ['hasSideEffects' => false], - 'ReflectionFunctionAbstract::isVariadic' => ['hasSideEffects' => false], - 'ReflectionGenerator::getExecutingFile' => ['hasSideEffects' => false], - 'ReflectionGenerator::getExecutingGenerator' => ['hasSideEffects' => false], - 'ReflectionGenerator::getExecutingLine' => ['hasSideEffects' => false], - 'ReflectionGenerator::getFunction' => ['hasSideEffects' => false], - 'ReflectionGenerator::getThis' => ['hasSideEffects' => false], - 'ReflectionGenerator::getTrace' => ['hasSideEffects' => false], - 'ReflectionIntersectionType::getTypes' => ['hasSideEffects' => false], - 'ReflectionMethod::getClosure' => ['hasSideEffects' => false], - 'ReflectionMethod::getDeclaringClass' => ['hasSideEffects' => false], - 'ReflectionMethod::getModifiers' => ['hasSideEffects' => false], - 'ReflectionMethod::getPrototype' => ['hasSideEffects' => false], - 'ReflectionMethod::isAbstract' => ['hasSideEffects' => false], - 'ReflectionMethod::isConstructor' => ['hasSideEffects' => false], - 'ReflectionMethod::isDestructor' => ['hasSideEffects' => false], - 'ReflectionMethod::isFinal' => ['hasSideEffects' => false], - 'ReflectionMethod::isPrivate' => ['hasSideEffects' => false], - 'ReflectionMethod::isProtected' => ['hasSideEffects' => false], - 'ReflectionMethod::isPublic' => ['hasSideEffects' => false], - 'ReflectionMethod::isStatic' => ['hasSideEffects' => false], - 'ReflectionMethod::setAccessible' => ['hasSideEffects' => false], - 'ReflectionNamedType::getName' => ['hasSideEffects' => false], - 'ReflectionNamedType::isBuiltin' => ['hasSideEffects' => false], - 'ReflectionParameter::getAttributes' => ['hasSideEffects' => false], - 'ReflectionParameter::getClass' => ['hasSideEffects' => false], - 'ReflectionParameter::getDeclaringClass' => ['hasSideEffects' => false], - 'ReflectionParameter::getDeclaringFunction' => ['hasSideEffects' => false], - 'ReflectionParameter::getDefaultValue' => ['hasSideEffects' => false], - 'ReflectionParameter::getDefaultValueConstantName' => ['hasSideEffects' => false], - 'ReflectionParameter::getName' => ['hasSideEffects' => false], - 'ReflectionParameter::getPosition' => ['hasSideEffects' => false], - 'ReflectionParameter::getType' => ['hasSideEffects' => false], - 'ReflectionParameter::isArray' => ['hasSideEffects' => false], - 'ReflectionParameter::isCallable' => ['hasSideEffects' => false], - 'ReflectionParameter::isDefaultValueAvailable' => ['hasSideEffects' => false], - 'ReflectionParameter::isDefaultValueConstant' => ['hasSideEffects' => false], - 'ReflectionParameter::isOptional' => ['hasSideEffects' => false], - 'ReflectionParameter::isPassedByReference' => ['hasSideEffects' => false], - 'ReflectionParameter::isPromoted' => ['hasSideEffects' => false], - 'ReflectionParameter::isVariadic' => ['hasSideEffects' => false], - 'ReflectionProperty::getAttributes' => ['hasSideEffects' => false], - 'ReflectionProperty::getDeclaringClass' => ['hasSideEffects' => false], - 'ReflectionProperty::getDefaultValue' => ['hasSideEffects' => false], - 'ReflectionProperty::getDocComment' => ['hasSideEffects' => false], - 'ReflectionProperty::getModifiers' => ['hasSideEffects' => false], - 'ReflectionProperty::getName' => ['hasSideEffects' => false], - 'ReflectionProperty::getType' => ['hasSideEffects' => false], - 'ReflectionProperty::getValue' => ['hasSideEffects' => false], - 'ReflectionProperty::isDefault' => ['hasSideEffects' => false], - 'ReflectionProperty::isInitialized' => ['hasSideEffects' => false], - 'ReflectionProperty::isPrivate' => ['hasSideEffects' => false], - 'ReflectionProperty::isPromoted' => ['hasSideEffects' => false], - 'ReflectionProperty::isProtected' => ['hasSideEffects' => false], - 'ReflectionProperty::isPublic' => ['hasSideEffects' => false], - 'ReflectionProperty::isStatic' => ['hasSideEffects' => false], - 'ReflectionProperty::setAccessible' => ['hasSideEffects' => false], - 'ReflectionReference::getId' => ['hasSideEffects' => false], - 'ReflectionType::isBuiltin' => ['hasSideEffects' => false], - 'ReflectionUnionType::getTypes' => ['hasSideEffects' => false], - 'ReflectionZendExtension::getAuthor' => ['hasSideEffects' => false], - 'ReflectionZendExtension::getCopyright' => ['hasSideEffects' => false], - 'ReflectionZendExtension::getName' => ['hasSideEffects' => false], - 'ReflectionZendExtension::getURL' => ['hasSideEffects' => false], - 'ReflectionZendExtension::getVersion' => ['hasSideEffects' => false], - 'ResourceBundle::__construct' => ['hasSideEffects' => false], - 'ResourceBundle::count' => ['hasSideEffects' => false], - 'ResourceBundle::get' => ['hasSideEffects' => false], - 'ResourceBundle::getErrorCode' => ['hasSideEffects' => false], - 'ResourceBundle::getErrorMessage' => ['hasSideEffects' => false], - 'ResourceBundle::getIterator' => ['hasSideEffects' => false], - 'SQLiteException::__construct' => ['hasSideEffects' => false], - 'SimpleXMLElement::__construct' => ['hasSideEffects' => false], - 'SimpleXMLElement::children' => ['hasSideEffects' => false], - 'SimpleXMLElement::count' => ['hasSideEffects' => false], - 'SimpleXMLElement::current' => ['hasSideEffects' => false], - 'SimpleXMLElement::getChildren' => ['hasSideEffects' => false], - 'SimpleXMLElement::getDocNamespaces' => ['hasSideEffects' => false], - 'SimpleXMLElement::getName' => ['hasSideEffects' => false], - 'SimpleXMLElement::getNamespaces' => ['hasSideEffects' => false], - 'SimpleXMLElement::hasChildren' => ['hasSideEffects' => false], - 'SimpleXMLElement::offsetExists' => ['hasSideEffects' => false], - 'SimpleXMLElement::offsetGet' => ['hasSideEffects' => false], - 'SimpleXMLElement::valid' => ['hasSideEffects' => false], - 'SimpleXMLIterator::count' => ['hasSideEffects' => false], - 'SimpleXMLIterator::current' => ['hasSideEffects' => false], - 'SimpleXMLIterator::getChildren' => ['hasSideEffects' => false], - 'SimpleXMLIterator::hasChildren' => ['hasSideEffects' => false], - 'SimpleXMLIterator::valid' => ['hasSideEffects' => false], - 'SoapFault::__construct' => ['hasSideEffects' => false], - 'SplFileObject::fflush' => ['hasSideEffects' => true], - 'SplFileObject::fgetc' => ['hasSideEffects' => true], - 'SplFileObject::fgetcsv' => ['hasSideEffects' => true], - 'SplFileObject::fgets' => ['hasSideEffects' => true], - 'SplFileObject::fgetss' => ['hasSideEffects' => true], - 'SplFileObject::fpassthru' => ['hasSideEffects' => true], - 'SplFileObject::fputcsv' => ['hasSideEffects' => true], - 'SplFileObject::fread' => ['hasSideEffects' => true], - 'SplFileObject::fscanf' => ['hasSideEffects' => true], - 'SplFileObject::fseek' => ['hasSideEffects' => true], - 'SplFileObject::ftruncate' => ['hasSideEffects' => true], - 'SplFileObject::fwrite' => ['hasSideEffects' => true], - 'Spoofchecker::__construct' => ['hasSideEffects' => false], - 'StringBackedEnum::from' => ['hasSideEffects' => false], - 'StringBackedEnum::tryFrom' => ['hasSideEffects' => false], - 'StubTests\\CodeStyle\\BracesOneLineFixer::getDefinition' => ['hasSideEffects' => false], - 'StubTests\\Parsers\\ExpectedFunctionArgumentsInfo::__toString' => ['hasSideEffects' => false], - 'StubTests\\Parsers\\Visitors\\CoreStubASTVisitor::__construct' => ['hasSideEffects' => false], - 'StubTests\\StubsMetaExpectedArgumentsTest::getClassMemberFqn' => ['hasSideEffects' => false], - 'StubTests\\StubsParameterNamesTest::printParameters' => ['hasSideEffects' => false], - 'Transliterator::createInverse' => ['hasSideEffects' => false], - 'Transliterator::getErrorCode' => ['hasSideEffects' => false], - 'Transliterator::getErrorMessage' => ['hasSideEffects' => false], - 'Transliterator::transliterate' => ['hasSideEffects' => false], - 'UConverter::__construct' => ['hasSideEffects' => false], - 'UConverter::convert' => ['hasSideEffects' => false], - 'UConverter::getDestinationEncoding' => ['hasSideEffects' => false], - 'UConverter::getDestinationType' => ['hasSideEffects' => false], - 'UConverter::getErrorCode' => ['hasSideEffects' => false], - 'UConverter::getErrorMessage' => ['hasSideEffects' => false], - 'UConverter::getSourceEncoding' => ['hasSideEffects' => false], - 'UConverter::getSourceType' => ['hasSideEffects' => false], - 'UConverter::getStandards' => ['hasSideEffects' => false], - 'UConverter::getSubstChars' => ['hasSideEffects' => false], - 'UConverter::reasonText' => ['hasSideEffects' => false], - 'UnitEnum::cases' => ['hasSideEffects' => false], - 'WeakMap::count' => ['hasSideEffects' => false], - 'WeakMap::getIterator' => ['hasSideEffects' => false], - 'WeakMap::offsetExists' => ['hasSideEffects' => false], - 'WeakMap::offsetGet' => ['hasSideEffects' => false], - 'WeakReference::create' => ['hasSideEffects' => false], - 'WeakReference::get' => ['hasSideEffects' => false], - 'XmlReader::next' => ['hasSideEffects' => true], - 'XmlReader::read' => ['hasSideEffects' => true], - 'Zookeeper::getAcl' => ['hasSideEffects' => false], - 'Zookeeper::getChildren' => ['hasSideEffects' => false], - 'Zookeeper::getClientId' => ['hasSideEffects' => false], - 'Zookeeper::getRecvTimeout' => ['hasSideEffects' => false], - 'Zookeeper::getState' => ['hasSideEffects' => false], - '_' => ['hasSideEffects' => false], - 'abs' => ['hasSideEffects' => false], - 'acos' => ['hasSideEffects' => false], - 'acosh' => ['hasSideEffects' => false], - 'addcslashes' => ['hasSideEffects' => false], - 'addslashes' => ['hasSideEffects' => false], - 'apache_get_modules' => ['hasSideEffects' => false], - 'apache_get_version' => ['hasSideEffects' => false], - 'apache_getenv' => ['hasSideEffects' => false], - 'apache_request_headers' => ['hasSideEffects' => false], - 'array_change_key_case' => ['hasSideEffects' => false], - 'array_chunk' => ['hasSideEffects' => false], - 'array_column' => ['hasSideEffects' => false], - 'array_combine' => ['hasSideEffects' => false], - 'array_count_values' => ['hasSideEffects' => false], - 'array_diff' => ['hasSideEffects' => false], - 'array_diff_assoc' => ['hasSideEffects' => false], - 'array_diff_key' => ['hasSideEffects' => false], - 'array_diff_uassoc' => ['hasSideEffects' => false], - 'array_diff_ukey' => ['hasSideEffects' => false], - 'array_fill' => ['hasSideEffects' => false], - 'array_fill_keys' => ['hasSideEffects' => false], - 'array_flip' => ['hasSideEffects' => false], - 'array_intersect' => ['hasSideEffects' => false], - 'array_intersect_assoc' => ['hasSideEffects' => false], - 'array_intersect_key' => ['hasSideEffects' => false], - 'array_intersect_uassoc' => ['hasSideEffects' => false], - 'array_intersect_ukey' => ['hasSideEffects' => false], - 'array_is_list' => ['hasSideEffects' => false], - 'array_key_exists' => ['hasSideEffects' => false], - 'array_key_first' => ['hasSideEffects' => false], - 'array_key_last' => ['hasSideEffects' => false], - 'array_keys' => ['hasSideEffects' => false], - 'array_merge' => ['hasSideEffects' => false], - 'array_merge_recursive' => ['hasSideEffects' => false], - 'array_pad' => ['hasSideEffects' => false], - 'array_pop' => ['hasSideEffects' => true], - 'array_product' => ['hasSideEffects' => false], - 'array_push' => ['hasSideEffects' => true], - 'array_rand' => ['hasSideEffects' => false], - 'array_replace' => ['hasSideEffects' => false], - 'array_replace_recursive' => ['hasSideEffects' => false], - 'array_reverse' => ['hasSideEffects' => false], - 'array_search' => ['hasSideEffects' => false], - 'array_shift' => ['hasSideEffects' => true], - 'array_slice' => ['hasSideEffects' => false], - 'array_sum' => ['hasSideEffects' => false], - 'array_udiff' => ['hasSideEffects' => false], - 'array_udiff_assoc' => ['hasSideEffects' => false], - 'array_udiff_uassoc' => ['hasSideEffects' => false], - 'array_uintersect' => ['hasSideEffects' => false], - 'array_uintersect_assoc' => ['hasSideEffects' => false], - 'array_uintersect_uassoc' => ['hasSideEffects' => false], - 'array_unique' => ['hasSideEffects' => false], - 'array_unshift' => ['hasSideEffects' => true], - 'array_values' => ['hasSideEffects' => false], - 'asin' => ['hasSideEffects' => false], - 'asinh' => ['hasSideEffects' => false], - 'atan' => ['hasSideEffects' => false], - 'atan2' => ['hasSideEffects' => false], - 'atanh' => ['hasSideEffects' => false], - 'base64_decode' => ['hasSideEffects' => false], - 'base64_encode' => ['hasSideEffects' => false], - 'base_convert' => ['hasSideEffects' => false], - 'basename' => ['hasSideEffects' => false], - 'bcadd' => ['hasSideEffects' => false], - 'bccomp' => ['hasSideEffects' => false], - 'bcdiv' => ['hasSideEffects' => false], - 'bcmod' => ['hasSideEffects' => false], - 'bcmul' => ['hasSideEffects' => false], - 'bcpow' => ['hasSideEffects' => false], - 'bcpowmod' => ['hasSideEffects' => false], - 'bcsqrt' => ['hasSideEffects' => false], - 'bcsub' => ['hasSideEffects' => false], - 'bin2hex' => ['hasSideEffects' => false], - 'bindec' => ['hasSideEffects' => false], - 'boolval' => ['hasSideEffects' => false], - 'bzcompress' => ['hasSideEffects' => false], - 'bzdecompress' => ['hasSideEffects' => false], - 'bzerrno' => ['hasSideEffects' => false], - 'bzerror' => ['hasSideEffects' => false], - 'bzerrstr' => ['hasSideEffects' => false], - 'bzopen' => ['hasSideEffects' => false], - 'ceil' => ['hasSideEffects' => false], - 'checkdate' => ['hasSideEffects' => false], - 'checkdnsrr' => ['hasSideEffects' => false], - 'chgrp' => ['hasSideEffects' => true], - 'chmod' => ['hasSideEffects' => true], - 'chop' => ['hasSideEffects' => false], - 'chown' => ['hasSideEffects' => true], - 'chr' => ['hasSideEffects' => false], - 'chunk_split' => ['hasSideEffects' => false], - 'class_implements' => ['hasSideEffects' => false], - 'class_parents' => ['hasSideEffects' => false], - 'cli_get_process_title' => ['hasSideEffects' => false], - 'collator_compare' => ['hasSideEffects' => false], - 'collator_create' => ['hasSideEffects' => false], - 'collator_get_attribute' => ['hasSideEffects' => false], - 'collator_get_error_code' => ['hasSideEffects' => false], - 'collator_get_error_message' => ['hasSideEffects' => false], - 'collator_get_locale' => ['hasSideEffects' => false], - 'collator_get_sort_key' => ['hasSideEffects' => false], - 'collator_get_strength' => ['hasSideEffects' => false], - 'compact' => ['hasSideEffects' => false], - 'connection_aborted' => ['hasSideEffects' => true], - 'connection_status' => ['hasSideEffects' => true], - 'constant' => ['hasSideEffects' => false], - 'convert_cyr_string' => ['hasSideEffects' => false], - 'convert_uudecode' => ['hasSideEffects' => false], - 'convert_uuencode' => ['hasSideEffects' => false], - 'copy' => ['hasSideEffects' => true], - 'cos' => ['hasSideEffects' => false], - 'cosh' => ['hasSideEffects' => false], - 'count' => ['hasSideEffects' => false], - 'count_chars' => ['hasSideEffects' => false], - 'crc32' => ['hasSideEffects' => false], - 'crypt' => ['hasSideEffects' => false], - 'ctype_alnum' => ['hasSideEffects' => false], - 'ctype_alpha' => ['hasSideEffects' => false], - 'ctype_cntrl' => ['hasSideEffects' => false], - 'ctype_digit' => ['hasSideEffects' => false], - 'ctype_graph' => ['hasSideEffects' => false], - 'ctype_lower' => ['hasSideEffects' => false], - 'ctype_print' => ['hasSideEffects' => false], - 'ctype_punct' => ['hasSideEffects' => false], - 'ctype_space' => ['hasSideEffects' => false], - 'ctype_upper' => ['hasSideEffects' => false], - 'ctype_xdigit' => ['hasSideEffects' => false], - 'curl_copy_handle' => ['hasSideEffects' => false], - 'curl_errno' => ['hasSideEffects' => false], - 'curl_error' => ['hasSideEffects' => false], - 'curl_escape' => ['hasSideEffects' => false], - 'curl_file_create' => ['hasSideEffects' => false], - 'curl_getinfo' => ['hasSideEffects' => false], - 'curl_multi_errno' => ['hasSideEffects' => false], - 'curl_multi_getcontent' => ['hasSideEffects' => false], - 'curl_multi_info_read' => ['hasSideEffects' => false], - 'curl_share_errno' => ['hasSideEffects' => false], - 'curl_share_strerror' => ['hasSideEffects' => false], - 'curl_strerror' => ['hasSideEffects' => false], - 'curl_unescape' => ['hasSideEffects' => false], - 'curl_version' => ['hasSideEffects' => false], - 'current' => ['hasSideEffects' => false], - 'date' => ['hasSideEffects' => false], - 'date_create' => ['hasSideEffects' => false], - 'date_create_from_format' => ['hasSideEffects' => false], - 'date_create_immutable' => ['hasSideEffects' => false], - 'date_create_immutable_from_format' => ['hasSideEffects' => false], - 'date_default_timezone_get' => ['hasSideEffects' => false], - 'date_diff' => ['hasSideEffects' => false], - 'date_format' => ['hasSideEffects' => false], - 'date_get_last_errors' => ['hasSideEffects' => false], - 'date_interval_create_from_date_string' => ['hasSideEffects' => false], - 'date_interval_format' => ['hasSideEffects' => false], - 'date_offset_get' => ['hasSideEffects' => false], - 'date_parse' => ['hasSideEffects' => false], - 'date_parse_from_format' => ['hasSideEffects' => false], - 'date_sun_info' => ['hasSideEffects' => false], - 'date_sunrise' => ['hasSideEffects' => false], - 'date_sunset' => ['hasSideEffects' => false], - 'date_timestamp_get' => ['hasSideEffects' => false], - 'date_timezone_get' => ['hasSideEffects' => false], - 'datefmt_create' => ['hasSideEffects' => false], - 'datefmt_format' => ['hasSideEffects' => false], - 'datefmt_format_object' => ['hasSideEffects' => false], - 'datefmt_get_calendar' => ['hasSideEffects' => false], - 'datefmt_get_calendar_object' => ['hasSideEffects' => false], - 'datefmt_get_datetype' => ['hasSideEffects' => false], - 'datefmt_get_error_code' => ['hasSideEffects' => false], - 'datefmt_get_error_message' => ['hasSideEffects' => false], - 'datefmt_get_locale' => ['hasSideEffects' => false], - 'datefmt_get_pattern' => ['hasSideEffects' => false], - 'datefmt_get_timetype' => ['hasSideEffects' => false], - 'datefmt_get_timezone' => ['hasSideEffects' => false], - 'datefmt_get_timezone_id' => ['hasSideEffects' => false], - 'datefmt_is_lenient' => ['hasSideEffects' => false], - 'dcngettext' => ['hasSideEffects' => false], - 'decbin' => ['hasSideEffects' => false], - 'dechex' => ['hasSideEffects' => false], - 'decoct' => ['hasSideEffects' => false], - 'defined' => ['hasSideEffects' => false], - 'deflate_init' => ['hasSideEffects' => false], - 'deg2rad' => ['hasSideEffects' => false], - 'dirname' => ['hasSideEffects' => false], - 'disk_free_space' => ['hasSideEffects' => false], - 'disk_total_space' => ['hasSideEffects' => false], - 'diskfreespace' => ['hasSideEffects' => false], - 'dngettext' => ['hasSideEffects' => false], - 'doubleval' => ['hasSideEffects' => false], - 'error_get_last' => ['hasSideEffects' => false], - 'error_log' => ['hasSideEffects' => true], - 'escapeshellarg' => ['hasSideEffects' => false], - 'escapeshellcmd' => ['hasSideEffects' => false], - 'exp' => ['hasSideEffects' => false], - 'explode' => ['hasSideEffects' => false], - 'expm1' => ['hasSideEffects' => false], - 'extension_loaded' => ['hasSideEffects' => false], - 'fclose' => ['hasSideEffects' => true], - 'fdiv' => ['hasSideEffects' => false], - 'feof' => ['hasSideEffects' => false], - 'fflush' => ['hasSideEffects' => true], - 'fgetc' => ['hasSideEffects' => true], - 'fgetcsv' => ['hasSideEffects' => true], - 'fgets' => ['hasSideEffects' => true], - 'fgetss' => ['hasSideEffects' => true], - 'file' => ['hasSideEffects' => false], - 'file_exists' => ['hasSideEffects' => false], - 'file_get_contents' => ['hasSideEffects' => true], - 'file_put_contents' => ['hasSideEffects' => true], - 'fileatime' => ['hasSideEffects' => false], - 'filectime' => ['hasSideEffects' => false], - 'filegroup' => ['hasSideEffects' => false], - 'fileinode' => ['hasSideEffects' => false], - 'filemtime' => ['hasSideEffects' => false], - 'fileowner' => ['hasSideEffects' => false], - 'fileperms' => ['hasSideEffects' => false], - 'filesize' => ['hasSideEffects' => false], - 'filetype' => ['hasSideEffects' => false], - 'filter_has_var' => ['hasSideEffects' => false], - 'filter_id' => ['hasSideEffects' => false], - 'filter_input' => ['hasSideEffects' => false], - 'filter_input_array' => ['hasSideEffects' => false], - 'filter_list' => ['hasSideEffects' => false], - 'filter_var' => ['hasSideEffects' => false], - 'filter_var_array' => ['hasSideEffects' => false], - 'finfo::buffer' => ['hasSideEffects' => false], - 'finfo::file' => ['hasSideEffects' => false], - 'floatval' => ['hasSideEffects' => false], - 'flock' => ['hasSideEffects' => true], - 'floor' => ['hasSideEffects' => false], - 'fmod' => ['hasSideEffects' => false], - 'fnmatch' => ['hasSideEffects' => false], - 'fopen' => ['hasSideEffects' => true], - 'fpassthru' => ['hasSideEffects' => true], - 'fputcsv' => ['hasSideEffects' => true], - 'fputs' => ['hasSideEffects' => true], - 'fread' => ['hasSideEffects' => true], - 'fscanf' => ['hasSideEffects' => true], - 'fseek' => ['hasSideEffects' => true], - 'fstat' => ['hasSideEffects' => false], - 'ftell' => ['hasSideEffects' => false], - 'ftok' => ['hasSideEffects' => false], - 'ftruncate' => ['hasSideEffects' => true], - 'func_get_arg' => ['hasSideEffects' => false], - 'func_get_args' => ['hasSideEffects' => false], - 'func_num_args' => ['hasSideEffects' => false], - 'function_exists' => ['hasSideEffects' => false], - 'fwrite' => ['hasSideEffects' => true], - 'gc_enabled' => ['hasSideEffects' => false], - 'gc_status' => ['hasSideEffects' => false], - 'gd_info' => ['hasSideEffects' => false], - 'geoip_continent_code_by_name' => ['hasSideEffects' => false], - 'geoip_country_code3_by_name' => ['hasSideEffects' => false], - 'geoip_country_code_by_name' => ['hasSideEffects' => false], - 'geoip_country_name_by_name' => ['hasSideEffects' => false], - 'geoip_database_info' => ['hasSideEffects' => false], - 'geoip_db_avail' => ['hasSideEffects' => false], - 'geoip_db_filename' => ['hasSideEffects' => false], - 'geoip_db_get_all_info' => ['hasSideEffects' => false], - 'geoip_id_by_name' => ['hasSideEffects' => false], - 'geoip_isp_by_name' => ['hasSideEffects' => false], - 'geoip_org_by_name' => ['hasSideEffects' => false], - 'geoip_record_by_name' => ['hasSideEffects' => false], - 'geoip_region_by_name' => ['hasSideEffects' => false], - 'geoip_region_name_by_code' => ['hasSideEffects' => false], - 'geoip_time_zone_by_country_and_region' => ['hasSideEffects' => false], - 'get_browser' => ['hasSideEffects' => false], - 'get_called_class' => ['hasSideEffects' => false], - 'get_cfg_var' => ['hasSideEffects' => false], - 'get_class' => ['hasSideEffects' => false], - 'get_class_methods' => ['hasSideEffects' => false], - 'get_class_vars' => ['hasSideEffects' => false], - 'get_current_user' => ['hasSideEffects' => false], - 'get_debug_type' => ['hasSideEffects' => false], - 'get_declared_classes' => ['hasSideEffects' => false], - 'get_declared_interfaces' => ['hasSideEffects' => false], - 'get_declared_traits' => ['hasSideEffects' => false], - 'get_defined_constants' => ['hasSideEffects' => false], - 'get_defined_functions' => ['hasSideEffects' => false], - 'get_defined_vars' => ['hasSideEffects' => false], - 'get_extension_funcs' => ['hasSideEffects' => false], - 'get_headers' => ['hasSideEffects' => false], - 'get_html_translation_table' => ['hasSideEffects' => false], - 'get_include_path' => ['hasSideEffects' => false], - 'get_included_files' => ['hasSideEffects' => false], - 'get_loaded_extensions' => ['hasSideEffects' => false], - 'get_meta_tags' => ['hasSideEffects' => false], - 'get_object_vars' => ['hasSideEffects' => false], - 'get_parent_class' => ['hasSideEffects' => false], - 'get_required_files' => ['hasSideEffects' => false], - 'get_resource_id' => ['hasSideEffects' => false], - 'get_resources' => ['hasSideEffects' => false], - 'getallheaders' => ['hasSideEffects' => false], - 'getcwd' => ['hasSideEffects' => false], - 'getdate' => ['hasSideEffects' => false], - 'getenv' => ['hasSideEffects' => false], - 'gethostbyaddr' => ['hasSideEffects' => false], - 'gethostbyname' => ['hasSideEffects' => false], - 'gethostbynamel' => ['hasSideEffects' => false], - 'gethostname' => ['hasSideEffects' => false], - 'getlastmod' => ['hasSideEffects' => false], - 'getmygid' => ['hasSideEffects' => false], - 'getmyinode' => ['hasSideEffects' => false], - 'getmypid' => ['hasSideEffects' => false], - 'getmyuid' => ['hasSideEffects' => false], - 'getprotobyname' => ['hasSideEffects' => false], - 'getprotobynumber' => ['hasSideEffects' => false], - 'getrandmax' => ['hasSideEffects' => false], - 'getrusage' => ['hasSideEffects' => false], - 'getservbyname' => ['hasSideEffects' => false], - 'getservbyport' => ['hasSideEffects' => false], - 'gettext' => ['hasSideEffects' => false], - 'gettimeofday' => ['hasSideEffects' => false], - 'gettype' => ['hasSideEffects' => false], - 'glob' => ['hasSideEffects' => false], - 'gmdate' => ['hasSideEffects' => false], - 'gmmktime' => ['hasSideEffects' => false], - 'gmp_abs' => ['hasSideEffects' => false], - 'gmp_add' => ['hasSideEffects' => false], - 'gmp_and' => ['hasSideEffects' => false], - 'gmp_binomial' => ['hasSideEffects' => false], - 'gmp_cmp' => ['hasSideEffects' => false], - 'gmp_com' => ['hasSideEffects' => false], - 'gmp_div' => ['hasSideEffects' => false], - 'gmp_div_q' => ['hasSideEffects' => false], - 'gmp_div_qr' => ['hasSideEffects' => false], - 'gmp_div_r' => ['hasSideEffects' => false], - 'gmp_divexact' => ['hasSideEffects' => false], - 'gmp_export' => ['hasSideEffects' => false], - 'gmp_fact' => ['hasSideEffects' => false], - 'gmp_gcd' => ['hasSideEffects' => false], - 'gmp_gcdext' => ['hasSideEffects' => false], - 'gmp_hamdist' => ['hasSideEffects' => false], - 'gmp_import' => ['hasSideEffects' => false], - 'gmp_init' => ['hasSideEffects' => false], - 'gmp_intval' => ['hasSideEffects' => false], - 'gmp_invert' => ['hasSideEffects' => false], - 'gmp_jacobi' => ['hasSideEffects' => false], - 'gmp_kronecker' => ['hasSideEffects' => false], - 'gmp_lcm' => ['hasSideEffects' => false], - 'gmp_legendre' => ['hasSideEffects' => false], - 'gmp_mod' => ['hasSideEffects' => false], - 'gmp_mul' => ['hasSideEffects' => false], - 'gmp_neg' => ['hasSideEffects' => false], - 'gmp_nextprime' => ['hasSideEffects' => false], - 'gmp_or' => ['hasSideEffects' => false], - 'gmp_perfect_power' => ['hasSideEffects' => false], - 'gmp_perfect_square' => ['hasSideEffects' => false], - 'gmp_popcount' => ['hasSideEffects' => false], - 'gmp_pow' => ['hasSideEffects' => false], - 'gmp_powm' => ['hasSideEffects' => false], - 'gmp_prob_prime' => ['hasSideEffects' => false], - 'gmp_root' => ['hasSideEffects' => false], - 'gmp_rootrem' => ['hasSideEffects' => false], - 'gmp_scan0' => ['hasSideEffects' => false], - 'gmp_scan1' => ['hasSideEffects' => false], - 'gmp_sign' => ['hasSideEffects' => false], - 'gmp_sqrt' => ['hasSideEffects' => false], - 'gmp_sqrtrem' => ['hasSideEffects' => false], - 'gmp_strval' => ['hasSideEffects' => false], - 'gmp_sub' => ['hasSideEffects' => false], - 'gmp_testbit' => ['hasSideEffects' => false], - 'gmp_xor' => ['hasSideEffects' => false], - 'grapheme_stripos' => ['hasSideEffects' => false], - 'grapheme_stristr' => ['hasSideEffects' => false], - 'grapheme_strlen' => ['hasSideEffects' => false], - 'grapheme_strpos' => ['hasSideEffects' => false], - 'grapheme_strripos' => ['hasSideEffects' => false], - 'grapheme_strrpos' => ['hasSideEffects' => false], - 'grapheme_strstr' => ['hasSideEffects' => false], - 'grapheme_substr' => ['hasSideEffects' => false], - 'gzcompress' => ['hasSideEffects' => false], - 'gzdecode' => ['hasSideEffects' => false], - 'gzdeflate' => ['hasSideEffects' => false], - 'gzencode' => ['hasSideEffects' => false], - 'gzinflate' => ['hasSideEffects' => false], - 'gzuncompress' => ['hasSideEffects' => false], - 'hash' => ['hasSideEffects' => false], - 'hash_algos' => ['hasSideEffects' => false], - 'hash_copy' => ['hasSideEffects' => false], - 'hash_equals' => ['hasSideEffects' => false], - 'hash_file' => ['hasSideEffects' => false], - 'hash_hkdf' => ['hasSideEffects' => false], - 'hash_hmac' => ['hasSideEffects' => false], - 'hash_hmac_algos' => ['hasSideEffects' => false], - 'hash_hmac_file' => ['hasSideEffects' => false], - 'hash_init' => ['hasSideEffects' => false], - 'hash_pbkdf2' => ['hasSideEffects' => false], - 'headers_list' => ['hasSideEffects' => false], - 'hebrev' => ['hasSideEffects' => false], - 'hexdec' => ['hasSideEffects' => false], - 'hrtime' => ['hasSideEffects' => false], - 'html_entity_decode' => ['hasSideEffects' => false], - 'htmlentities' => ['hasSideEffects' => false], - 'htmlspecialchars' => ['hasSideEffects' => false], - 'htmlspecialchars_decode' => ['hasSideEffects' => false], - 'http_build_cookie' => ['hasSideEffects' => false], - 'http_build_query' => ['hasSideEffects' => false], - 'http_build_str' => ['hasSideEffects' => false], - 'http_cache_etag' => ['hasSideEffects' => false], - 'http_cache_last_modified' => ['hasSideEffects' => false], - 'http_chunked_decode' => ['hasSideEffects' => false], - 'http_date' => ['hasSideEffects' => false], - 'http_deflate' => ['hasSideEffects' => false], - 'http_get_request_body' => ['hasSideEffects' => false], - 'http_get_request_body_stream' => ['hasSideEffects' => false], - 'http_get_request_headers' => ['hasSideEffects' => false], - 'http_inflate' => ['hasSideEffects' => false], - 'http_match_etag' => ['hasSideEffects' => false], - 'http_match_modified' => ['hasSideEffects' => false], - 'http_match_request_header' => ['hasSideEffects' => false], - 'http_parse_cookie' => ['hasSideEffects' => false], - 'http_parse_headers' => ['hasSideEffects' => false], - 'http_parse_message' => ['hasSideEffects' => false], - 'http_parse_params' => ['hasSideEffects' => false], - 'http_request_body_encode' => ['hasSideEffects' => false], - 'http_request_method_exists' => ['hasSideEffects' => false], - 'http_request_method_name' => ['hasSideEffects' => false], - 'http_support' => ['hasSideEffects' => false], - 'hypot' => ['hasSideEffects' => false], - 'iconv' => ['hasSideEffects' => false], - 'iconv_get_encoding' => ['hasSideEffects' => false], - 'iconv_mime_decode' => ['hasSideEffects' => false], - 'iconv_mime_decode_headers' => ['hasSideEffects' => false], - 'iconv_mime_encode' => ['hasSideEffects' => false], - 'iconv_strlen' => ['hasSideEffects' => false], - 'iconv_strpos' => ['hasSideEffects' => false], - 'iconv_strrpos' => ['hasSideEffects' => false], - 'iconv_substr' => ['hasSideEffects' => false], - 'idate' => ['hasSideEffects' => false], - 'image_type_to_extension' => ['hasSideEffects' => false], - 'image_type_to_mime_type' => ['hasSideEffects' => false], - 'imagecolorat' => ['hasSideEffects' => false], - 'imagecolorclosest' => ['hasSideEffects' => false], - 'imagecolorclosestalpha' => ['hasSideEffects' => false], - 'imagecolorclosesthwb' => ['hasSideEffects' => false], - 'imagecolorexact' => ['hasSideEffects' => false], - 'imagecolorexactalpha' => ['hasSideEffects' => false], - 'imagecolorresolve' => ['hasSideEffects' => false], - 'imagecolorresolvealpha' => ['hasSideEffects' => false], - 'imagecolorsforindex' => ['hasSideEffects' => false], - 'imagecolorstotal' => ['hasSideEffects' => false], - 'imagecreate' => ['hasSideEffects' => false], - 'imagecreatefromstring' => ['hasSideEffects' => false], - 'imagecreatetruecolor' => ['hasSideEffects' => false], - 'imagefontheight' => ['hasSideEffects' => false], - 'imagefontwidth' => ['hasSideEffects' => false], - 'imageftbbox' => ['hasSideEffects' => false], - 'imagegetinterpolation' => ['hasSideEffects' => false], - 'imagegrabscreen' => ['hasSideEffects' => false], - 'imagegrabwindow' => ['hasSideEffects' => false], - 'imageistruecolor' => ['hasSideEffects' => false], - 'imagesx' => ['hasSideEffects' => false], - 'imagesy' => ['hasSideEffects' => false], - 'imagettfbbox' => ['hasSideEffects' => false], - 'imagetypes' => ['hasSideEffects' => false], - 'implode' => ['hasSideEffects' => false], - 'in_array' => ['hasSideEffects' => false], - 'inet_ntop' => ['hasSideEffects' => false], - 'inet_pton' => ['hasSideEffects' => false], - 'inflate_get_read_len' => ['hasSideEffects' => false], - 'inflate_get_status' => ['hasSideEffects' => false], - 'inflate_init' => ['hasSideEffects' => false], - 'ini_get' => ['hasSideEffects' => false], - 'ini_get_all' => ['hasSideEffects' => false], - 'intcal_get_maximum' => ['hasSideEffects' => false], - 'intdiv' => ['hasSideEffects' => false], - 'intl_error_name' => ['hasSideEffects' => false], - 'intl_get' => ['hasSideEffects' => false], - 'intl_get_error_code' => ['hasSideEffects' => false], - 'intl_get_error_message' => ['hasSideEffects' => false], - 'intl_is_failure' => ['hasSideEffects' => false], - 'intlcal_after' => ['hasSideEffects' => false], - 'intlcal_before' => ['hasSideEffects' => false], - 'intlcal_create_instance' => ['hasSideEffects' => false], - 'intlcal_equals' => ['hasSideEffects' => false], - 'intlcal_field_difference' => ['hasSideEffects' => false], - 'intlcal_from_date_time' => ['hasSideEffects' => false], - 'intlcal_get' => ['hasSideEffects' => false], - 'intlcal_get_actual_maximum' => ['hasSideEffects' => false], - 'intlcal_get_actual_minimum' => ['hasSideEffects' => false], - 'intlcal_get_available_locales' => ['hasSideEffects' => false], - 'intlcal_get_day_of_week_type' => ['hasSideEffects' => false], - 'intlcal_get_error_code' => ['hasSideEffects' => false], - 'intlcal_get_error_message' => ['hasSideEffects' => false], - 'intlcal_get_first_day_of_week' => ['hasSideEffects' => false], - 'intlcal_get_greatest_minimum' => ['hasSideEffects' => false], - 'intlcal_get_keyword_values_for_locale' => ['hasSideEffects' => false], - 'intlcal_get_least_maximum' => ['hasSideEffects' => false], - 'intlcal_get_locale' => ['hasSideEffects' => false], - 'intlcal_get_maximum' => ['hasSideEffects' => false], - 'intlcal_get_minimal_days_in_first_week' => ['hasSideEffects' => false], - 'intlcal_get_minimum' => ['hasSideEffects' => false], - 'intlcal_get_now' => ['hasSideEffects' => false], - 'intlcal_get_repeated_wall_time_option' => ['hasSideEffects' => false], - 'intlcal_get_skipped_wall_time_option' => ['hasSideEffects' => false], - 'intlcal_get_time' => ['hasSideEffects' => false], - 'intlcal_get_time_zone' => ['hasSideEffects' => false], - 'intlcal_get_type' => ['hasSideEffects' => false], - 'intlcal_get_weekend_transition' => ['hasSideEffects' => false], - 'intlcal_greates_minimum' => ['hasSideEffects' => false], - 'intlcal_in_daylight_time' => ['hasSideEffects' => false], - 'intlcal_is_equivalent_to' => ['hasSideEffects' => false], - 'intlcal_is_lenient' => ['hasSideEffects' => false], - 'intlcal_is_set' => ['hasSideEffects' => false], - 'intlcal_is_weekend' => ['hasSideEffects' => false], - 'intlcal_to_date_time' => ['hasSideEffects' => false], - 'intlgregcal_create_instance' => ['hasSideEffects' => false], - 'intlgregcal_get_gregorian_change' => ['hasSideEffects' => false], - 'intlgregcal_is_leap_year' => ['hasSideEffects' => false], - 'intltz_count_equivalent_ids' => ['hasSideEffects' => false], - 'intltz_create_default' => ['hasSideEffects' => false], - 'intltz_create_enumeration' => ['hasSideEffects' => false], - 'intltz_create_time_zone' => ['hasSideEffects' => false], - 'intltz_create_time_zone_id_enumeration' => ['hasSideEffects' => false], - 'intltz_from_date_time_zone' => ['hasSideEffects' => false], - 'intltz_get_canonical_id' => ['hasSideEffects' => false], - 'intltz_get_display_name' => ['hasSideEffects' => false], - 'intltz_get_dst_savings' => ['hasSideEffects' => false], - 'intltz_get_equivalent_id' => ['hasSideEffects' => false], - 'intltz_get_error_code' => ['hasSideEffects' => false], - 'intltz_get_error_message' => ['hasSideEffects' => false], - 'intltz_get_gmt' => ['hasSideEffects' => false], - 'intltz_get_id' => ['hasSideEffects' => false], - 'intltz_get_offset' => ['hasSideEffects' => false], - 'intltz_get_raw_offset' => ['hasSideEffects' => false], - 'intltz_get_region' => ['hasSideEffects' => false], - 'intltz_get_tz_data_version' => ['hasSideEffects' => false], - 'intltz_get_unknown' => ['hasSideEffects' => false], - 'intltz_getgmt' => ['hasSideEffects' => false], - 'intltz_has_same_rules' => ['hasSideEffects' => false], - 'intltz_to_date_time_zone' => ['hasSideEffects' => false], - 'intltz_use_daylight_time' => ['hasSideEffects' => false], - 'intlz_create_default' => ['hasSideEffects' => false], - 'intval' => ['hasSideEffects' => false], - 'ip2long' => ['hasSideEffects' => false], - 'iptcparse' => ['hasSideEffects' => false], - 'is_a' => ['hasSideEffects' => false], - 'is_array' => ['hasSideEffects' => false], - 'is_bool' => ['hasSideEffects' => false], - 'is_countable' => ['hasSideEffects' => false], - 'is_dir' => ['hasSideEffects' => false], - 'is_double' => ['hasSideEffects' => false], - 'is_executable' => ['hasSideEffects' => false], - 'is_file' => ['hasSideEffects' => false], - 'is_finite' => ['hasSideEffects' => false], - 'is_float' => ['hasSideEffects' => false], - 'is_infinite' => ['hasSideEffects' => false], - 'is_int' => ['hasSideEffects' => false], - 'is_integer' => ['hasSideEffects' => false], - 'is_iterable' => ['hasSideEffects' => false], - 'is_link' => ['hasSideEffects' => false], - 'is_long' => ['hasSideEffects' => false], - 'is_nan' => ['hasSideEffects' => false], - 'is_null' => ['hasSideEffects' => false], - 'is_numeric' => ['hasSideEffects' => false], - 'is_object' => ['hasSideEffects' => false], - 'is_readable' => ['hasSideEffects' => false], - 'is_real' => ['hasSideEffects' => false], - 'is_resource' => ['hasSideEffects' => false], - 'is_scalar' => ['hasSideEffects' => false], - 'is_string' => ['hasSideEffects' => false], - 'is_subclass_of' => ['hasSideEffects' => false], - 'is_uploaded_file' => ['hasSideEffects' => false], - 'is_writable' => ['hasSideEffects' => false], - 'is_writeable' => ['hasSideEffects' => false], - 'iterator_count' => ['hasSideEffects' => false], - 'join' => ['hasSideEffects' => false], - 'json_last_error' => ['hasSideEffects' => false], - 'json_last_error_msg' => ['hasSideEffects' => false], - 'json_validate' => ['hasSideEffects' => false], - 'key' => ['hasSideEffects' => false], - 'key_exists' => ['hasSideEffects' => false], - 'lcfirst' => ['hasSideEffects' => false], - 'lchgrp' => ['hasSideEffects' => true], - 'lchown' => ['hasSideEffects' => true], - 'libxml_get_errors' => ['hasSideEffects' => false], - 'libxml_get_last_error' => ['hasSideEffects' => false], - 'link' => ['hasSideEffects' => true], - 'linkinfo' => ['hasSideEffects' => false], - 'locale_accept_from_http' => ['hasSideEffects' => false], - 'locale_canonicalize' => ['hasSideEffects' => false], - 'locale_compose' => ['hasSideEffects' => false], - 'locale_filter_matches' => ['hasSideEffects' => false], - 'locale_get_all_variants' => ['hasSideEffects' => false], - 'locale_get_default' => ['hasSideEffects' => false], - 'locale_get_display_language' => ['hasSideEffects' => false], - 'locale_get_display_name' => ['hasSideEffects' => false], - 'locale_get_display_region' => ['hasSideEffects' => false], - 'locale_get_display_script' => ['hasSideEffects' => false], - 'locale_get_display_variant' => ['hasSideEffects' => false], - 'locale_get_keywords' => ['hasSideEffects' => false], - 'locale_get_primary_language' => ['hasSideEffects' => false], - 'locale_get_region' => ['hasSideEffects' => false], - 'locale_get_script' => ['hasSideEffects' => false], - 'locale_lookup' => ['hasSideEffects' => false], - 'locale_parse' => ['hasSideEffects' => false], - 'localeconv' => ['hasSideEffects' => false], - 'localtime' => ['hasSideEffects' => false], - 'log' => ['hasSideEffects' => false], - 'log10' => ['hasSideEffects' => false], - 'log1p' => ['hasSideEffects' => false], - 'long2ip' => ['hasSideEffects' => false], - 'lstat' => ['hasSideEffects' => false], - 'ltrim' => ['hasSideEffects' => false], - 'max' => ['hasSideEffects' => false], - 'mb_check_encoding' => ['hasSideEffects' => false], - 'mb_chr' => ['hasSideEffects' => false], - 'mb_convert_case' => ['hasSideEffects' => false], - 'mb_convert_encoding' => ['hasSideEffects' => false], - 'mb_convert_kana' => ['hasSideEffects' => false], - 'mb_decode_mimeheader' => ['hasSideEffects' => false], - 'mb_decode_numericentity' => ['hasSideEffects' => false], - 'mb_detect_encoding' => ['hasSideEffects' => false], - 'mb_encode_mimeheader' => ['hasSideEffects' => false], - 'mb_encode_numericentity' => ['hasSideEffects' => false], - 'mb_encoding_aliases' => ['hasSideEffects' => false], - 'mb_ereg_match' => ['hasSideEffects' => false], - 'mb_ereg_replace' => ['hasSideEffects' => false], - 'mb_ereg_search' => ['hasSideEffects' => false], - 'mb_ereg_search_getpos' => ['hasSideEffects' => false], - 'mb_ereg_search_getregs' => ['hasSideEffects' => false], - 'mb_ereg_search_pos' => ['hasSideEffects' => false], - 'mb_ereg_search_regs' => ['hasSideEffects' => false], - 'mb_ereg_search_setpos' => ['hasSideEffects' => false], - 'mb_eregi_replace' => ['hasSideEffects' => false], - 'mb_get_info' => ['hasSideEffects' => false], - 'mb_http_input' => ['hasSideEffects' => false], - 'mb_list_encodings' => ['hasSideEffects' => false], - 'mb_ord' => ['hasSideEffects' => false], - 'mb_output_handler' => ['hasSideEffects' => false], - 'mb_preferred_mime_name' => ['hasSideEffects' => false], - 'mb_scrub' => ['hasSideEffects' => false], - 'mb_split' => ['hasSideEffects' => false], - 'mb_str_pad' => ['hasSideEffects' => false], - 'mb_str_split' => ['hasSideEffects' => false], - 'mb_strcut' => ['hasSideEffects' => false], - 'mb_strimwidth' => ['hasSideEffects' => false], - 'mb_stripos' => ['hasSideEffects' => false], - 'mb_stristr' => ['hasSideEffects' => false], - 'mb_strlen' => ['hasSideEffects' => false], - 'mb_strpos' => ['hasSideEffects' => false], - 'mb_strrchr' => ['hasSideEffects' => false], - 'mb_strrichr' => ['hasSideEffects' => false], - 'mb_strripos' => ['hasSideEffects' => false], - 'mb_strrpos' => ['hasSideEffects' => false], - 'mb_strstr' => ['hasSideEffects' => false], - 'mb_strtolower' => ['hasSideEffects' => false], - 'mb_strtoupper' => ['hasSideEffects' => false], - 'mb_strwidth' => ['hasSideEffects' => false], - 'mb_substr' => ['hasSideEffects' => false], - 'mb_substr_count' => ['hasSideEffects' => false], - 'mbereg_search_setpos' => ['hasSideEffects' => false], - 'md5' => ['hasSideEffects' => false], - 'md5_file' => ['hasSideEffects' => false], - 'memory_get_peak_usage' => ['hasSideEffects' => false], - 'memory_get_usage' => ['hasSideEffects' => false], - 'metaphone' => ['hasSideEffects' => false], - 'method_exists' => ['hasSideEffects' => false], - 'mhash' => ['hasSideEffects' => false], - 'mhash_count' => ['hasSideEffects' => false], - 'mhash_get_block_size' => ['hasSideEffects' => false], - 'mhash_get_hash_name' => ['hasSideEffects' => false], - 'mhash_keygen_s2k' => ['hasSideEffects' => false], - 'microtime' => ['hasSideEffects' => false], - 'min' => ['hasSideEffects' => false], - 'mkdir' => ['hasSideEffects' => true], - 'mktime' => ['hasSideEffects' => false], - 'move_uploaded_file' => ['hasSideEffects' => true], - 'msgfmt_create' => ['hasSideEffects' => false], - 'msgfmt_format' => ['hasSideEffects' => false], - 'msgfmt_format_message' => ['hasSideEffects' => false], - 'msgfmt_get_error_code' => ['hasSideEffects' => false], - 'msgfmt_get_error_message' => ['hasSideEffects' => false], - 'msgfmt_get_locale' => ['hasSideEffects' => false], - 'msgfmt_get_pattern' => ['hasSideEffects' => false], - 'msgfmt_parse' => ['hasSideEffects' => false], - 'msgfmt_parse_message' => ['hasSideEffects' => false], - 'mt_getrandmax' => ['hasSideEffects' => false], - 'mt_rand' => ['hasSideEffects' => true], - 'net_get_interfaces' => ['hasSideEffects' => false], - 'ngettext' => ['hasSideEffects' => false], - 'nl2br' => ['hasSideEffects' => false], - 'nl_langinfo' => ['hasSideEffects' => false], - 'normalizer_get_raw_decomposition' => ['hasSideEffects' => false], - 'normalizer_is_normalized' => ['hasSideEffects' => false], - 'normalizer_normalize' => ['hasSideEffects' => false], - 'number_format' => ['hasSideEffects' => false], - 'numfmt_create' => ['hasSideEffects' => false], - 'numfmt_format' => ['hasSideEffects' => false], - 'numfmt_format_currency' => ['hasSideEffects' => false], - 'numfmt_get_attribute' => ['hasSideEffects' => false], - 'numfmt_get_error_code' => ['hasSideEffects' => false], - 'numfmt_get_error_message' => ['hasSideEffects' => false], - 'numfmt_get_locale' => ['hasSideEffects' => false], - 'numfmt_get_pattern' => ['hasSideEffects' => false], - 'numfmt_get_symbol' => ['hasSideEffects' => false], - 'numfmt_get_text_attribute' => ['hasSideEffects' => false], - 'numfmt_parse' => ['hasSideEffects' => false], - 'ob_etaghandler' => ['hasSideEffects' => false], - 'ob_get_contents' => ['hasSideEffects' => false], - 'ob_iconv_handler' => ['hasSideEffects' => false], - 'octdec' => ['hasSideEffects' => false], - 'ord' => ['hasSideEffects' => false], - 'pack' => ['hasSideEffects' => false], - 'pam_auth' => ['hasSideEffects' => false], - 'pam_chpass' => ['hasSideEffects' => false], - 'parse_ini_file' => ['hasSideEffects' => false], - 'parse_ini_string' => ['hasSideEffects' => false], - 'parse_url' => ['hasSideEffects' => false], - 'pathinfo' => ['hasSideEffects' => false], - 'pclose' => ['hasSideEffects' => true], - 'pcntl_errno' => ['hasSideEffects' => false], - 'pcntl_get_last_error' => ['hasSideEffects' => false], - 'pcntl_getpriority' => ['hasSideEffects' => false], - 'pcntl_strerror' => ['hasSideEffects' => false], - 'pcntl_wexitstatus' => ['hasSideEffects' => false], - 'pcntl_wifcontinued' => ['hasSideEffects' => false], - 'pcntl_wifexited' => ['hasSideEffects' => false], - 'pcntl_wifsignaled' => ['hasSideEffects' => false], - 'pcntl_wifstopped' => ['hasSideEffects' => false], - 'pcntl_wstopsig' => ['hasSideEffects' => false], - 'pcntl_wtermsig' => ['hasSideEffects' => false], - 'pdo_drivers' => ['hasSideEffects' => false], - 'php_ini_loaded_file' => ['hasSideEffects' => false], - 'php_ini_scanned_files' => ['hasSideEffects' => false], - 'php_logo_guid' => ['hasSideEffects' => false], - 'php_sapi_name' => ['hasSideEffects' => false], - 'php_strip_whitespace' => ['hasSideEffects' => false], - 'php_uname' => ['hasSideEffects' => false], - 'phpversion' => ['hasSideEffects' => false], - 'pi' => ['hasSideEffects' => false], - 'popen' => ['hasSideEffects' => true], - 'pos' => ['hasSideEffects' => false], - 'posix_ctermid' => ['hasSideEffects' => false], - 'posix_errno' => ['hasSideEffects' => false], - 'posix_get_last_error' => ['hasSideEffects' => false], - 'posix_getcwd' => ['hasSideEffects' => false], - 'posix_getegid' => ['hasSideEffects' => false], - 'posix_geteuid' => ['hasSideEffects' => false], - 'posix_getgid' => ['hasSideEffects' => false], - 'posix_getgrgid' => ['hasSideEffects' => false], - 'posix_getgrnam' => ['hasSideEffects' => false], - 'posix_getgroups' => ['hasSideEffects' => false], - 'posix_getlogin' => ['hasSideEffects' => false], - 'posix_getpgid' => ['hasSideEffects' => false], - 'posix_getpgrp' => ['hasSideEffects' => false], - 'posix_getpid' => ['hasSideEffects' => false], - 'posix_getppid' => ['hasSideEffects' => false], - 'posix_getpwnam' => ['hasSideEffects' => false], - 'posix_getpwuid' => ['hasSideEffects' => false], - 'posix_getrlimit' => ['hasSideEffects' => false], - 'posix_getsid' => ['hasSideEffects' => false], - 'posix_getuid' => ['hasSideEffects' => false], - 'posix_initgroups' => ['hasSideEffects' => false], - 'posix_isatty' => ['hasSideEffects' => false], - 'posix_strerror' => ['hasSideEffects' => false], - 'posix_times' => ['hasSideEffects' => false], - 'posix_ttyname' => ['hasSideEffects' => false], - 'posix_uname' => ['hasSideEffects' => false], - 'pow' => ['hasSideEffects' => false], - 'preg_grep' => ['hasSideEffects' => false], - 'preg_last_error' => ['hasSideEffects' => false], - 'preg_last_error_msg' => ['hasSideEffects' => false], - 'preg_quote' => ['hasSideEffects' => false], - 'preg_split' => ['hasSideEffects' => false], - 'property_exists' => ['hasSideEffects' => false], - 'quoted_printable_decode' => ['hasSideEffects' => false], - 'quoted_printable_encode' => ['hasSideEffects' => false], - 'quotemeta' => ['hasSideEffects' => false], - 'rad2deg' => ['hasSideEffects' => false], - 'rand' => ['hasSideEffects' => true], - 'random_bytes' => ['hasSideEffects' => true], - 'random_int' => ['hasSideEffects' => true], - 'range' => ['hasSideEffects' => false], - 'rawurldecode' => ['hasSideEffects' => false], - 'rawurlencode' => ['hasSideEffects' => false], - 'readfile' => ['hasSideEffects' => true], - 'readlink' => ['hasSideEffects' => false], - 'realpath' => ['hasSideEffects' => false], - 'realpath_cache_get' => ['hasSideEffects' => false], - 'realpath_cache_size' => ['hasSideEffects' => false], - 'rename' => ['hasSideEffects' => true], - 'resourcebundle_count' => ['hasSideEffects' => false], - 'resourcebundle_create' => ['hasSideEffects' => false], - 'resourcebundle_get' => ['hasSideEffects' => false], - 'resourcebundle_get_error_code' => ['hasSideEffects' => false], - 'resourcebundle_get_error_message' => ['hasSideEffects' => false], - 'resourcebundle_locales' => ['hasSideEffects' => false], - 'rewind' => ['hasSideEffects' => true], - 'rmdir' => ['hasSideEffects' => true], - 'round' => ['hasSideEffects' => false], - 'rtrim' => ['hasSideEffects' => false], - 'sha1' => ['hasSideEffects' => false], - 'sha1_file' => ['hasSideEffects' => false], - 'sin' => ['hasSideEffects' => false], - 'sinh' => ['hasSideEffects' => false], - 'sizeof' => ['hasSideEffects' => false], - 'soundex' => ['hasSideEffects' => false], - 'spl_classes' => ['hasSideEffects' => false], - 'spl_object_hash' => ['hasSideEffects' => false], - 'sprintf' => ['hasSideEffects' => false], - 'sqrt' => ['hasSideEffects' => false], - 'stat' => ['hasSideEffects' => false], - 'str_contains' => ['hasSideEffects' => false], - 'str_decrement' => ['hasSideEffects' => false], - 'str_ends_with' => ['hasSideEffects' => false], - 'str_getcsv' => ['hasSideEffects' => false], - 'str_increment' => ['hasSideEffects' => false], - 'str_pad' => ['hasSideEffects' => false], - 'str_repeat' => ['hasSideEffects' => false], - 'str_rot13' => ['hasSideEffects' => false], - 'str_split' => ['hasSideEffects' => false], - 'str_starts_with' => ['hasSideEffects' => false], - 'str_word_count' => ['hasSideEffects' => false], - 'strcasecmp' => ['hasSideEffects' => false], - 'strchr' => ['hasSideEffects' => false], - 'strcmp' => ['hasSideEffects' => false], - 'strcoll' => ['hasSideEffects' => false], - 'strcspn' => ['hasSideEffects' => false], - 'stream_get_filters' => ['hasSideEffects' => false], - 'stream_get_transports' => ['hasSideEffects' => false], - 'stream_get_wrappers' => ['hasSideEffects' => false], - 'stream_is_local' => ['hasSideEffects' => false], - 'stream_isatty' => ['hasSideEffects' => false], - 'strip_tags' => ['hasSideEffects' => false], - 'stripcslashes' => ['hasSideEffects' => false], - 'stripos' => ['hasSideEffects' => false], - 'stripslashes' => ['hasSideEffects' => false], - 'stristr' => ['hasSideEffects' => false], - 'strlen' => ['hasSideEffects' => false], - 'strnatcasecmp' => ['hasSideEffects' => false], - 'strnatcmp' => ['hasSideEffects' => false], - 'strncasecmp' => ['hasSideEffects' => false], - 'strncmp' => ['hasSideEffects' => false], - 'strpbrk' => ['hasSideEffects' => false], - 'strpos' => ['hasSideEffects' => false], - 'strptime' => ['hasSideEffects' => false], - 'strrchr' => ['hasSideEffects' => false], - 'strrev' => ['hasSideEffects' => false], - 'strripos' => ['hasSideEffects' => false], - 'strrpos' => ['hasSideEffects' => false], - 'strspn' => ['hasSideEffects' => false], - 'strstr' => ['hasSideEffects' => false], - 'strtolower' => ['hasSideEffects' => false], - 'strtotime' => ['hasSideEffects' => false], - 'strtoupper' => ['hasSideEffects' => false], - 'strtr' => ['hasSideEffects' => false], - 'strval' => ['hasSideEffects' => false], - 'substr' => ['hasSideEffects' => false], - 'substr_compare' => ['hasSideEffects' => false], - 'substr_count' => ['hasSideEffects' => false], - 'substr_replace' => ['hasSideEffects' => false], - 'symlink' => ['hasSideEffects' => true], - 'sys_getloadavg' => ['hasSideEffects' => false], - 'tan' => ['hasSideEffects' => false], - 'tanh' => ['hasSideEffects' => false], - 'tempnam' => ['hasSideEffects' => true], - 'timezone_abbreviations_list' => ['hasSideEffects' => false], - 'timezone_identifiers_list' => ['hasSideEffects' => false], - 'timezone_location_get' => ['hasSideEffects' => false], - 'timezone_name_from_abbr' => ['hasSideEffects' => false], - 'timezone_name_get' => ['hasSideEffects' => false], - 'timezone_offset_get' => ['hasSideEffects' => false], - 'timezone_open' => ['hasSideEffects' => false], - 'timezone_transitions_get' => ['hasSideEffects' => false], - 'timezone_version_get' => ['hasSideEffects' => false], - 'tmpfile' => ['hasSideEffects' => true], - 'token_get_all' => ['hasSideEffects' => false], - 'token_name' => ['hasSideEffects' => false], - 'touch' => ['hasSideEffects' => true], - 'transliterator_create' => ['hasSideEffects' => false], - 'transliterator_create_from_rules' => ['hasSideEffects' => false], - 'transliterator_create_inverse' => ['hasSideEffects' => false], - 'transliterator_get_error_code' => ['hasSideEffects' => false], - 'transliterator_get_error_message' => ['hasSideEffects' => false], - 'transliterator_list_ids' => ['hasSideEffects' => false], - 'transliterator_transliterate' => ['hasSideEffects' => false], - 'trim' => ['hasSideEffects' => false], - 'ucfirst' => ['hasSideEffects' => false], - 'ucwords' => ['hasSideEffects' => false], - 'umask' => ['hasSideEffects' => true], - 'unlink' => ['hasSideEffects' => true], - 'unpack' => ['hasSideEffects' => false], - 'urldecode' => ['hasSideEffects' => false], - 'urlencode' => ['hasSideEffects' => false], - 'utf8_decode' => ['hasSideEffects' => false], - 'utf8_encode' => ['hasSideEffects' => false], - 'vsprintf' => ['hasSideEffects' => false], - 'wordwrap' => ['hasSideEffects' => false], - 'xml_error_string' => ['hasSideEffects' => false], - 'xml_get_current_byte_index' => ['hasSideEffects' => false], - 'xml_get_current_column_number' => ['hasSideEffects' => false], - 'xml_get_current_line_number' => ['hasSideEffects' => false], - 'xml_get_error_code' => ['hasSideEffects' => false], - 'xml_parser_create' => ['hasSideEffects' => false], - 'xml_parser_create_ns' => ['hasSideEffects' => false], - 'xml_parser_get_option' => ['hasSideEffects' => false], - 'zend_version' => ['hasSideEffects' => false], - 'zlib_decode' => ['hasSideEffects' => false], - 'zlib_encode' => ['hasSideEffects' => false], - 'zlib_get_coding_type' => ['hasSideEffects' => false], - -]; diff --git a/v3_ci4/vendor/symfony/console/Application.php b/v3_ci4/vendor/symfony/console/Application.php deleted file mode 100644 index fd7ebd0..0000000 --- a/v3_ci4/vendor/symfony/console/Application.php +++ /dev/null @@ -1,1361 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Command\CompleteCommand; -use Symfony\Component\Console\Command\DumpCompletionCommand; -use Symfony\Component\Console\Command\HelpCommand; -use Symfony\Component\Console\Command\LazyCommand; -use Symfony\Component\Console\Command\ListCommand; -use Symfony\Component\Console\CommandLoader\CommandLoaderInterface; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Completion\Suggestion; -use Symfony\Component\Console\Event\ConsoleAlarmEvent; -use Symfony\Component\Console\Event\ConsoleCommandEvent; -use Symfony\Component\Console\Event\ConsoleErrorEvent; -use Symfony\Component\Console\Event\ConsoleSignalEvent; -use Symfony\Component\Console\Event\ConsoleTerminateEvent; -use Symfony\Component\Console\Exception\CommandNotFoundException; -use Symfony\Component\Console\Exception\ExceptionInterface; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Exception\NamespaceNotFoundException; -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Helper\DebugFormatterHelper; -use Symfony\Component\Console\Helper\DescriptorHelper; -use Symfony\Component\Console\Helper\FormatterHelper; -use Symfony\Component\Console\Helper\Helper; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Helper\ProcessHelper; -use Symfony\Component\Console\Helper\QuestionHelper; -use Symfony\Component\Console\Input\ArgvInput; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputAwareInterface; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\ConsoleOutput; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\SignalRegistry\SignalRegistry; -use Symfony\Component\Console\Style\SymfonyStyle; -use Symfony\Component\ErrorHandler\ErrorHandler; -use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; -use Symfony\Contracts\Service\ResetInterface; - -/** - * An Application is the container for a collection of commands. - * - * It is the main entry point of a Console application. - * - * This class is optimized for a standard CLI environment. - * - * Usage: - * - * $app = new Application('myapp', '1.0 (stable)'); - * $app->addCommand(new SimpleCommand()); - * $app->run(); - * - * @author Fabien Potencier - */ -class Application implements ResetInterface -{ - private array $commands = []; - private bool $wantHelps = false; - private ?Command $runningCommand = null; - private ?CommandLoaderInterface $commandLoader = null; - private bool $catchExceptions = true; - private bool $catchErrors = false; - private bool $autoExit = true; - private InputDefinition $definition; - private HelperSet $helperSet; - private ?EventDispatcherInterface $dispatcher = null; - private Terminal $terminal; - private string $defaultCommand; - private bool $singleCommand = false; - private bool $initialized = false; - private ?SignalRegistry $signalRegistry = null; - private array $signalsToDispatchEvent = []; - private ?int $alarmInterval = null; - - public function __construct( - private string $name = 'UNKNOWN', - private string $version = 'UNKNOWN', - ) { - $this->terminal = new Terminal(); - $this->defaultCommand = 'list'; - if (\defined('SIGINT') && SignalRegistry::isSupported()) { - $this->signalRegistry = new SignalRegistry(); - $this->signalsToDispatchEvent = [\SIGINT, \SIGQUIT, \SIGTERM, \SIGUSR1, \SIGUSR2, \SIGALRM]; - } - } - - /** - * @final - */ - public function setDispatcher(EventDispatcherInterface $dispatcher): void - { - $this->dispatcher = $dispatcher; - } - - public function setCommandLoader(CommandLoaderInterface $commandLoader): void - { - $this->commandLoader = $commandLoader; - } - - public function getSignalRegistry(): SignalRegistry - { - if (!$this->signalRegistry) { - throw new RuntimeException('Signals are not supported. Make sure that the "pcntl" extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); - } - - return $this->signalRegistry; - } - - public function setSignalsToDispatchEvent(int ...$signalsToDispatchEvent): void - { - $this->signalsToDispatchEvent = $signalsToDispatchEvent; - } - - /** - * Sets the interval to schedule a SIGALRM signal in seconds. - */ - public function setAlarmInterval(?int $seconds): void - { - $this->alarmInterval = $seconds; - $this->scheduleAlarm(); - } - - /** - * Gets the interval in seconds on which a SIGALRM signal is dispatched. - */ - public function getAlarmInterval(): ?int - { - return $this->alarmInterval; - } - - private function scheduleAlarm(): void - { - if (null !== $this->alarmInterval) { - $this->getSignalRegistry()->scheduleAlarm($this->alarmInterval); - } - } - - /** - * Runs the current application. - * - * @return int 0 if everything went fine, or an error code - * - * @throws \Exception When running fails. Bypass this when {@link setCatchExceptions()}. - */ - public function run(?InputInterface $input = null, ?OutputInterface $output = null): int - { - if (\function_exists('putenv')) { - @putenv('LINES='.$this->terminal->getHeight()); - @putenv('COLUMNS='.$this->terminal->getWidth()); - } - - $input ??= new ArgvInput(); - $output ??= new ConsoleOutput(); - - $renderException = function (\Throwable $e) use ($output) { - if ($output instanceof ConsoleOutputInterface) { - $this->renderThrowable($e, $output->getErrorOutput()); - } else { - $this->renderThrowable($e, $output); - } - }; - if ($phpHandler = set_exception_handler($renderException)) { - restore_exception_handler(); - if (!\is_array($phpHandler) || !$phpHandler[0] instanceof ErrorHandler) { - $errorHandler = true; - } elseif ($errorHandler = $phpHandler[0]->setExceptionHandler($renderException)) { - $phpHandler[0]->setExceptionHandler($errorHandler); - } - } - - $empty = new \stdClass(); - $prevShellVerbosity = [$_ENV['SHELL_VERBOSITY'] ?? $empty, $_SERVER['SHELL_VERBOSITY'] ?? $empty, getenv('SHELL_VERBOSITY')]; - - try { - $this->configureIO($input, $output); - - $exitCode = $this->doRun($input, $output); - } catch (\Throwable $e) { - if ($e instanceof \Exception && !$this->catchExceptions) { - throw $e; - } - if (!$e instanceof \Exception && !$this->catchErrors) { - throw $e; - } - - $renderException($e); - - $exitCode = $e->getCode(); - if (is_numeric($exitCode)) { - $exitCode = (int) $exitCode; - if ($exitCode <= 0) { - $exitCode = 1; - } - } else { - $exitCode = 1; - } - } finally { - // if the exception handler changed, keep it - // otherwise, unregister $renderException - if (!$phpHandler) { - if (set_exception_handler($renderException) === $renderException) { - restore_exception_handler(); - } - restore_exception_handler(); - } elseif (!$errorHandler) { - $finalHandler = $phpHandler[0]->setExceptionHandler(null); - if ($finalHandler !== $renderException) { - $phpHandler[0]->setExceptionHandler($finalHandler); - } - } - - // SHELL_VERBOSITY is set by Application::configureIO so we need to unset/reset it - // to its previous value to avoid one command verbosity to spread to other commands - if ($empty === $_ENV['SHELL_VERBOSITY'] = $prevShellVerbosity[0]) { - unset($_ENV['SHELL_VERBOSITY']); - } - if ($empty === $_SERVER['SHELL_VERBOSITY'] = $prevShellVerbosity[1]) { - unset($_SERVER['SHELL_VERBOSITY']); - } - if (\function_exists('putenv')) { - @putenv('SHELL_VERBOSITY'.(false === ($prevShellVerbosity[2] ?? false) ? '' : '='.$prevShellVerbosity[2])); - } - } - - if ($this->autoExit) { - if ($exitCode > 255) { - $exitCode = 255; - } - - exit($exitCode); - } - - return $exitCode; - } - - /** - * Runs the current application. - * - * @return int 0 if everything went fine, or an error code - */ - public function doRun(InputInterface $input, OutputInterface $output): int - { - if (true === $input->hasParameterOption(['--version', '-V'], true)) { - $output->writeln($this->getLongVersion()); - - return 0; - } - - try { - // Makes ArgvInput::getFirstArgument() able to distinguish an option from an argument. - $input->bind($this->getDefinition()); - } catch (ExceptionInterface) { - // Errors must be ignored, full binding/validation happens later when the command is known. - } - - $name = $this->getCommandName($input); - if (true === $input->hasParameterOption(['--help', '-h'], true)) { - if (!$name) { - $name = 'help'; - $input = new ArrayInput(['command_name' => $this->defaultCommand]); - } else { - $this->wantHelps = true; - } - } - - if (!$name) { - $name = $this->defaultCommand; - $definition = $this->getDefinition(); - $definition->setArguments(array_merge( - $definition->getArguments(), - [ - 'command' => new InputArgument('command', InputArgument::OPTIONAL, $definition->getArgument('command')->getDescription(), $name), - ] - )); - } - - try { - $this->runningCommand = null; - // the command name MUST be the first element of the input - $command = $this->find($name); - } catch (\Throwable $e) { - if (($e instanceof CommandNotFoundException && !$e instanceof NamespaceNotFoundException) && 1 === \count($alternatives = $e->getAlternatives()) && $input->isInteractive()) { - $alternative = $alternatives[0]; - - $style = new SymfonyStyle($input, $output); - $output->writeln(''); - $formattedBlock = (new FormatterHelper())->formatBlock(\sprintf('Command "%s" is not defined.', $name), 'error', true); - $output->writeln($formattedBlock); - if (!$style->confirm(\sprintf('Do you want to run "%s" instead? ', $alternative), false)) { - if (null !== $this->dispatcher) { - $event = new ConsoleErrorEvent($input, $output, $e); - $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - - return $event->getExitCode(); - } - - return 1; - } - - $command = $this->find($alternative); - } else { - if (null !== $this->dispatcher) { - $event = new ConsoleErrorEvent($input, $output, $e); - $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - - if (0 === $event->getExitCode()) { - return 0; - } - - $e = $event->getError(); - } - - try { - if ($e instanceof CommandNotFoundException && $namespace = $this->findNamespace($name)) { - $helper = new DescriptorHelper(); - $helper->describe($output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output, $this, [ - 'format' => 'txt', - 'raw_text' => false, - 'namespace' => $namespace, - 'short' => false, - ]); - - return isset($event) ? $event->getExitCode() : 1; - } - - throw $e; - } catch (NamespaceNotFoundException) { - throw $e; - } - } - } - - if ($command instanceof LazyCommand) { - $command = $command->getCommand(); - } - - $this->runningCommand = $command; - $exitCode = $this->doRunCommand($command, $input, $output); - $this->runningCommand = null; - - return $exitCode; - } - - public function reset(): void - { - } - - public function setHelperSet(HelperSet $helperSet): void - { - $this->helperSet = $helperSet; - } - - /** - * Get the helper set associated with the command. - */ - public function getHelperSet(): HelperSet - { - return $this->helperSet ??= $this->getDefaultHelperSet(); - } - - public function setDefinition(InputDefinition $definition): void - { - $this->definition = $definition; - } - - /** - * Gets the InputDefinition related to this Application. - */ - public function getDefinition(): InputDefinition - { - $this->definition ??= $this->getDefaultInputDefinition(); - - if ($this->singleCommand) { - $this->definition->setArguments(); - } - - return $this->definition; - } - - /** - * Adds suggestions to $suggestions for the current completion input (e.g. option or argument). - */ - public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void - { - if ( - CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() - && 'command' === $input->getCompletionName() - ) { - foreach ($this->all() as $name => $command) { - // skip hidden commands and aliased commands as they already get added below - if ($command->isHidden() || $command->getName() !== $name) { - continue; - } - $suggestions->suggestValue(new Suggestion($command->getName(), $command->getDescription())); - foreach ($command->getAliases() as $name) { - $suggestions->suggestValue(new Suggestion($name, $command->getDescription())); - } - } - - return; - } - - if (CompletionInput::TYPE_OPTION_NAME === $input->getCompletionType()) { - $suggestions->suggestOptions($this->getDefinition()->getOptions()); - } - - if ( - CompletionInput::TYPE_OPTION_VALUE === $input->getCompletionType() - && ($definition = $this->getDefinition())->hasOption($input->getCompletionName()) - ) { - $definition->getOption($input->getCompletionName())->complete($input, $suggestions); - - return; - } - } - - /** - * Gets the help message. - */ - public function getHelp(): string - { - return $this->getLongVersion(); - } - - /** - * Gets whether to catch exceptions or not during commands execution. - */ - public function areExceptionsCaught(): bool - { - return $this->catchExceptions; - } - - /** - * Sets whether to catch exceptions or not during commands execution. - */ - public function setCatchExceptions(bool $boolean): void - { - $this->catchExceptions = $boolean; - } - - /** - * Sets whether to catch errors or not during commands execution. - */ - public function setCatchErrors(bool $catchErrors = true): void - { - $this->catchErrors = $catchErrors; - } - - /** - * Gets whether to automatically exit after a command execution or not. - */ - public function isAutoExitEnabled(): bool - { - return $this->autoExit; - } - - /** - * Sets whether to automatically exit after a command execution or not. - */ - public function setAutoExit(bool $boolean): void - { - $this->autoExit = $boolean; - } - - /** - * Gets the name of the application. - */ - public function getName(): string - { - return $this->name; - } - - /** - * Sets the application name. - */ - public function setName(string $name): void - { - $this->name = $name; - } - - /** - * Gets the application version. - */ - public function getVersion(): string - { - return $this->version; - } - - /** - * Sets the application version. - */ - public function setVersion(string $version): void - { - $this->version = $version; - } - - /** - * Returns the long version of the application. - */ - public function getLongVersion(): string - { - if ('UNKNOWN' !== $this->getName()) { - if ('UNKNOWN' !== $this->getVersion()) { - return \sprintf('%s %s', $this->getName(), $this->getVersion()); - } - - return $this->getName(); - } - - return 'Console Tool'; - } - - /** - * Registers a new command. - */ - public function register(string $name): Command - { - return $this->addCommand(new Command($name)); - } - - /** - * Adds an array of command objects. - * - * If a Command is not enabled it will not be added. - * - * @param callable[]|Command[] $commands An array of commands - */ - public function addCommands(array $commands): void - { - foreach ($commands as $command) { - $this->addCommand($command); - } - } - - /** - * @deprecated since Symfony 7.4, use Application::addCommand() instead - */ - public function add(Command $command): ?Command - { - trigger_deprecation('symfony/console', '7.4', 'The "%s()" method is deprecated and will be removed in Symfony 8.0, use "%s::addCommand()" instead.', __METHOD__, self::class); - - return $this->addCommand($command); - } - - /** - * Adds a command object. - * - * If a command with the same name already exists, it will be overridden. - * If the command is not enabled it will not be added. - */ - public function addCommand(callable|Command $command): ?Command - { - $this->init(); - - if (!$command instanceof Command) { - $command = new Command(null, $command); - } - - $command->setApplication($this); - - if (!$command->isEnabled()) { - $command->setApplication(null); - - return null; - } - - if (!$command instanceof LazyCommand) { - // Will throw if the command is not correctly initialized. - $command->getDefinition(); - } - - if (!$command->getName()) { - throw new LogicException(\sprintf('The command defined in "%s" cannot have an empty name.', get_debug_type($command))); - } - - $this->commands[$command->getName()] = $command; - - foreach ($command->getAliases() as $alias) { - $this->commands[$alias] = $command; - } - - return $command; - } - - /** - * Returns a registered command by name or alias. - * - * @throws CommandNotFoundException When given command name does not exist - */ - public function get(string $name): Command - { - $this->init(); - - if (!$this->has($name)) { - throw new CommandNotFoundException(\sprintf('The command "%s" does not exist.', $name)); - } - - // When the command has a different name than the one used at the command loader level - if (!isset($this->commands[$name])) { - throw new CommandNotFoundException(\sprintf('The "%s" command cannot be found because it is registered under multiple names. Make sure you don\'t set a different name via constructor or "setName()".', $name)); - } - - $command = $this->commands[$name]; - - if ($this->wantHelps) { - $this->wantHelps = false; - - $helpCommand = $this->get('help'); - $helpCommand->setCommand($command); - - return $helpCommand; - } - - return $command; - } - - /** - * Returns true if the command exists, false otherwise. - */ - public function has(string $name): bool - { - $this->init(); - - return isset($this->commands[$name]) || ($this->commandLoader?->has($name) && $this->addCommand($this->commandLoader->get($name))); - } - - /** - * Returns an array of all unique namespaces used by currently registered commands. - * - * It does not return the global namespace which always exists. - * - * @return string[] - */ - public function getNamespaces(): array - { - $namespaces = []; - foreach ($this->all() as $command) { - if ($command->isHidden()) { - continue; - } - - $namespaces[] = $this->extractAllNamespaces($command->getName()); - - foreach ($command->getAliases() as $alias) { - $namespaces[] = $this->extractAllNamespaces($alias); - } - } - - return array_values(array_unique(array_filter(array_merge([], ...$namespaces)))); - } - - /** - * Finds a registered namespace by a name or an abbreviation. - * - * @throws NamespaceNotFoundException When namespace is incorrect or ambiguous - */ - public function findNamespace(string $namespace): string - { - $allNamespaces = $this->getNamespaces(); - $expr = implode('[^:]*:', array_map('preg_quote', explode(':', $namespace))).'[^:]*'; - $namespaces = preg_grep('{^'.$expr.'}', $allNamespaces); - - if (!$namespaces) { - $message = \sprintf('There are no commands defined in the "%s" namespace.', $namespace); - - if ($alternatives = $this->findAlternatives($namespace, $allNamespaces)) { - if (1 == \count($alternatives)) { - $message .= "\n\nDid you mean this?\n "; - } else { - $message .= "\n\nDid you mean one of these?\n "; - } - - $message .= implode("\n ", $alternatives); - } - - throw new NamespaceNotFoundException($message, $alternatives); - } - - $exact = \in_array($namespace, $namespaces, true); - if (\count($namespaces) > 1 && !$exact) { - throw new NamespaceNotFoundException(\sprintf("The namespace \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $namespace, $this->getAbbreviationSuggestions(array_values($namespaces))), array_values($namespaces)); - } - - return $exact ? $namespace : reset($namespaces); - } - - /** - * Finds a command by name or alias. - * - * Contrary to get, this command tries to find the best - * match if you give it an abbreviation of a name or alias. - * - * @throws CommandNotFoundException When command name is incorrect or ambiguous - */ - public function find(string $name): Command - { - $this->init(); - - $aliases = []; - - foreach ($this->commands as $command) { - foreach ($command->getAliases() as $alias) { - if (!$this->has($alias)) { - $this->commands[$alias] = $command; - } - } - } - - if ($this->has($name)) { - return $this->get($name); - } - - $allCommands = $this->commandLoader ? array_merge($this->commandLoader->getNames(), array_keys($this->commands)) : array_keys($this->commands); - $expr = implode('[^:]*:', array_map('preg_quote', explode(':', $name))).'[^:]*'; - $commands = preg_grep('{^'.$expr.'}', $allCommands); - - if (!$commands) { - $commands = preg_grep('{^'.$expr.'}i', $allCommands); - } - - // if no commands matched or we just matched namespaces - if (!$commands || \count(preg_grep('{^'.$expr.'$}i', $commands)) < 1) { - if (false !== $pos = strrpos($name, ':')) { - // check if a namespace exists and contains commands - $this->findNamespace(substr($name, 0, $pos)); - } - - $message = \sprintf('Command "%s" is not defined.', $name); - - if ($alternatives = $this->findAlternatives($name, $allCommands)) { - $wantHelps = $this->wantHelps; - $this->wantHelps = false; - - // remove hidden commands - if ($alternatives = array_filter($alternatives, fn ($name) => !$this->get($name)->isHidden())) { - $message .= \sprintf("\n\nDid you mean %s?\n %s", 1 === \count($alternatives) ? 'this' : 'one of these', implode("\n ", $alternatives)); - } - $this->wantHelps = $wantHelps; - } - - throw new CommandNotFoundException($message, array_values($alternatives)); - } - - // filter out aliases for commands which are already on the list - if (\count($commands) > 1) { - $commandList = $this->commandLoader ? array_merge(array_flip($this->commandLoader->getNames()), $this->commands) : $this->commands; - $commands = array_unique(array_filter($commands, function ($nameOrAlias) use (&$commandList, $commands, &$aliases) { - if (!$commandList[$nameOrAlias] instanceof Command) { - $commandList[$nameOrAlias] = $this->commandLoader->get($nameOrAlias); - } - - $commandName = $commandList[$nameOrAlias]->getName(); - - $aliases[$nameOrAlias] = $commandName; - - return $commandName === $nameOrAlias || !\in_array($commandName, $commands, true); - })); - } - - // check whether all commands left are aliases to the same one - if (\count($commands) > 1) { - $uniqueCommands = array_unique(array_map(function ($nameOrAlias) use (&$commandList) { - if (!$commandList[$nameOrAlias] instanceof Command) { - $commandList[$nameOrAlias] = $this->commandLoader->get($nameOrAlias); - } - - return $commandList[$nameOrAlias]->getName(); - }, $commands)); - - if (1 === \count($uniqueCommands)) { - $commands = [reset($uniqueCommands)]; - } - } - - if (\count($commands) > 1) { - $usableWidth = $this->terminal->getWidth() - 10; - $abbrevs = array_values($commands); - $maxLen = 0; - foreach ($abbrevs as $abbrev) { - $maxLen = max(Helper::width($abbrev), $maxLen); - } - $abbrevs = array_map(static function ($cmd) use ($commandList, $usableWidth, $maxLen, &$commands) { - if ($commandList[$cmd]->isHidden()) { - unset($commands[array_search($cmd, $commands)]); - - return false; - } - - $abbrev = str_pad($cmd, $maxLen, ' ').' '.$commandList[$cmd]->getDescription(); - - return Helper::width($abbrev) > $usableWidth ? Helper::substr($abbrev, 0, $usableWidth - 3).'...' : $abbrev; - }, array_values($commands)); - - if (\count($commands) > 1) { - $suggestions = $this->getAbbreviationSuggestions(array_filter($abbrevs)); - - throw new CommandNotFoundException(\sprintf("Command \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $name, $suggestions), array_values($commands)); - } - } - - $command = $commands ? $this->get(reset($commands)) : null; - - if (!$command || $command->isHidden()) { - throw new CommandNotFoundException(\sprintf('The command "%s" does not exist.', $name)); - } - - return $command; - } - - /** - * Gets the commands (registered in the given namespace if provided). - * - * The array keys are the full names and the values the command instances. - * - * @return Command[] - */ - public function all(?string $namespace = null): array - { - $this->init(); - - if (null === $namespace) { - if (!$this->commandLoader) { - return $this->commands; - } - - $commands = $this->commands; - foreach ($this->commandLoader->getNames() as $name) { - if (!isset($commands[$name]) && $this->has($name)) { - $commands[$name] = $this->get($name); - } - } - - return $commands; - } - - $commands = []; - foreach ($this->commands as $name => $command) { - if ($namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1)) { - $commands[$name] = $command; - } - } - - if ($this->commandLoader) { - foreach ($this->commandLoader->getNames() as $name) { - if (!isset($commands[$name]) && $namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1) && $this->has($name)) { - $commands[$name] = $this->get($name); - } - } - } - - return $commands; - } - - /** - * Returns an array of possible abbreviations given a set of names. - * - * @return string[][] - */ - public static function getAbbreviations(array $names): array - { - $abbrevs = []; - foreach ($names as $name) { - for ($len = \strlen($name); $len > 0; --$len) { - $abbrev = substr($name, 0, $len); - $abbrevs[$abbrev][] = $name; - } - } - - return $abbrevs; - } - - public function renderThrowable(\Throwable $e, OutputInterface $output): void - { - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - - $this->doRenderThrowable($e, $output); - - if (null !== $this->runningCommand) { - $output->writeln(\sprintf('%s', OutputFormatter::escape(\sprintf($this->runningCommand->getSynopsis(), $this->getName()))), OutputInterface::VERBOSITY_QUIET); - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - } - } - - protected function doRenderThrowable(\Throwable $e, OutputInterface $output): void - { - do { - $message = trim($e->getMessage()); - if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $class = get_debug_type($e); - $title = \sprintf(' [%s%s] ', $class, 0 !== ($code = $e->getCode()) ? ' ('.$code.')' : ''); - $len = Helper::width($title); - } else { - $len = 0; - } - - if (str_contains($message, "@anonymous\0")) { - $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)?[0-9a-fA-F]++/', static fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $message); - } - - $width = $this->terminal->getWidth() ? $this->terminal->getWidth() - 1 : \PHP_INT_MAX; - $lines = []; - foreach ('' !== $message ? preg_split('/\r?\n/', $message) : [] as $line) { - foreach ($this->splitStringByWidth($line, $width - 4) as $line) { - // pre-format lines to get the right string length - $lineLength = Helper::width($line) + 4; - $lines[] = [$line, $lineLength]; - - $len = max($lineLength, $len); - } - } - - $messages = []; - if (!$e instanceof ExceptionInterface || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $messages[] = \sprintf('%s', OutputFormatter::escape(\sprintf('In %s line %s:', basename($e->getFile()) ?: 'n/a', $e->getLine() ?: 'n/a'))); - } - $messages[] = $emptyLine = \sprintf('%s', str_repeat(' ', $len)); - if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $messages[] = \sprintf('%s%s', $title, str_repeat(' ', max(0, $len - Helper::width($title)))); - } - foreach ($lines as $line) { - $messages[] = \sprintf(' %s %s', OutputFormatter::escape($line[0]), str_repeat(' ', $len - $line[1])); - } - $messages[] = $emptyLine; - $messages[] = ''; - - $output->writeln($messages, OutputInterface::VERBOSITY_QUIET); - - if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $output->writeln('Exception trace:', OutputInterface::VERBOSITY_QUIET); - - // exception related properties - $trace = $e->getTrace(); - - array_unshift($trace, [ - 'function' => '', - 'file' => $e->getFile() ?: 'n/a', - 'line' => $e->getLine() ?: 'n/a', - 'args' => [], - ]); - - for ($i = 0, $count = \count($trace); $i < $count; ++$i) { - $class = $trace[$i]['class'] ?? ''; - $type = $trace[$i]['type'] ?? ''; - $function = $trace[$i]['function'] ?? ''; - $file = $trace[$i]['file'] ?? 'n/a'; - $line = $trace[$i]['line'] ?? 'n/a'; - - $output->writeln(\sprintf(' %s%s at %s:%s', $class, $function ? $type.$function.'()' : '', $file, $line), OutputInterface::VERBOSITY_QUIET); - } - - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - } - } while ($e = $e->getPrevious()); - } - - /** - * Configures the input and output instances based on the user arguments and options. - */ - protected function configureIO(InputInterface $input, OutputInterface $output): void - { - if ($input->hasParameterOption(['--ansi'], true)) { - $output->setDecorated(true); - } elseif ($input->hasParameterOption(['--no-ansi'], true)) { - $output->setDecorated(false); - } - - $shellVerbosity = match (true) { - $input->hasParameterOption(['--silent'], true) => -2, - $input->hasParameterOption(['--quiet', '-q'], true) => -1, - $input->hasParameterOption('-vvv', true) || $input->hasParameterOption('--verbose=3', true) || 3 === $input->getParameterOption('--verbose', false, true) => 3, - $input->hasParameterOption('-vv', true) || $input->hasParameterOption('--verbose=2', true) || 2 === $input->getParameterOption('--verbose', false, true) => 2, - $input->hasParameterOption('-v', true) || $input->hasParameterOption('--verbose=1', true) || $input->hasParameterOption('--verbose', true) || $input->getParameterOption('--verbose', false, true) => 1, - default => (int) ($_ENV['SHELL_VERBOSITY'] ?? $_SERVER['SHELL_VERBOSITY'] ?? getenv('SHELL_VERBOSITY')), - }; - - $output->setVerbosity(match ($shellVerbosity) { - -2 => OutputInterface::VERBOSITY_SILENT, - -1 => OutputInterface::VERBOSITY_QUIET, - 1 => OutputInterface::VERBOSITY_VERBOSE, - 2 => OutputInterface::VERBOSITY_VERY_VERBOSE, - 3 => OutputInterface::VERBOSITY_DEBUG, - default => ($shellVerbosity = 0) ?: $output->getVerbosity(), - }); - - if (0 > $shellVerbosity || $input->hasParameterOption(['--no-interaction', '-n'], true)) { - $input->setInteractive(false); - } - - if (\function_exists('putenv')) { - @putenv('SHELL_VERBOSITY='.$shellVerbosity); - } - $_ENV['SHELL_VERBOSITY'] = $shellVerbosity; - $_SERVER['SHELL_VERBOSITY'] = $shellVerbosity; - } - - /** - * Runs the current command. - * - * If an event dispatcher has been attached to the application, - * events are also dispatched during the life-cycle of the command. - * - * @return int 0 if everything went fine, or an error code - */ - protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output): int - { - foreach ($command->getHelperSet() as $helper) { - if ($helper instanceof InputAwareInterface) { - $helper->setInput($input); - } - } - - $registeredSignals = false; - if (($commandSignals = $command->getSubscribedSignals()) || $this->dispatcher && $this->signalsToDispatchEvent) { - $signalRegistry = $this->getSignalRegistry(); - - $registeredSignals = true; - $this->getSignalRegistry()->pushCurrentHandlers(); - - if ($this->dispatcher) { - // We register application signals, so that we can dispatch the event - foreach ($this->signalsToDispatchEvent as $signal) { - $signalEvent = new ConsoleSignalEvent($command, $input, $output, $signal); - $alarmEvent = \SIGALRM === $signal ? new ConsoleAlarmEvent($command, $input, $output) : null; - - $signalRegistry->register($signal, function ($signal) use ($signalEvent, $alarmEvent, $command, $commandSignals, $input, $output) { - $this->dispatcher->dispatch($signalEvent, ConsoleEvents::SIGNAL); - $exitCode = $signalEvent->getExitCode(); - - if (null !== $alarmEvent) { - if (false !== $exitCode) { - $alarmEvent->setExitCode($exitCode); - } else { - $alarmEvent->abortExit(); - } - $this->dispatcher->dispatch($alarmEvent); - $exitCode = $alarmEvent->getExitCode(); - } - - // If the command is signalable, we call the handleSignal() method - if (\in_array($signal, $commandSignals, true)) { - $exitCode = $command->handleSignal($signal, $exitCode); - } - - if (\SIGALRM === $signal) { - $this->scheduleAlarm(); - } - - if (false !== $exitCode) { - $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode, $signal); - $this->dispatcher->dispatch($event, ConsoleEvents::TERMINATE); - - exit($event->getExitCode()); - } - }); - } - - // then we register command signals, but not if already handled after the dispatcher - $commandSignals = array_diff($commandSignals, $this->signalsToDispatchEvent); - } - - foreach ($commandSignals as $signal) { - $signalRegistry->register($signal, function (int $signal) use ($command): void { - if (\SIGALRM === $signal) { - $this->scheduleAlarm(); - } - - if (false !== $exitCode = $command->handleSignal($signal)) { - exit($exitCode); - } - }); - } - } - - if (null === $this->dispatcher) { - try { - return $command->run($input, $output); - } finally { - if ($registeredSignals) { - $this->getSignalRegistry()->popPreviousHandlers(); - } - } - } - - // bind before the console.command event, so the listeners have access to input options/arguments - try { - $command->mergeApplicationDefinition(); - $input->bind($command->getDefinition()); - } catch (ExceptionInterface) { - // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition - } - - $event = new ConsoleCommandEvent($command, $input, $output); - $e = null; - - try { - $this->dispatcher->dispatch($event, ConsoleEvents::COMMAND); - - if ($event->commandShouldRun()) { - $exitCode = $command->run($input, $output); - } else { - $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED; - } - } catch (\Throwable $e) { - $event = new ConsoleErrorEvent($input, $output, $e, $command); - $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - $e = $event->getError(); - - if (0 === $exitCode = $event->getExitCode()) { - $e = null; - } - } finally { - if ($registeredSignals) { - $this->getSignalRegistry()->popPreviousHandlers(); - } - } - - $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode); - $this->dispatcher->dispatch($event, ConsoleEvents::TERMINATE); - - if (null !== $e) { - throw $e; - } - - return $event->getExitCode(); - } - - /** - * Gets the name of the command based on input. - */ - protected function getCommandName(InputInterface $input): ?string - { - return $this->singleCommand ? $this->defaultCommand : $input->getFirstArgument(); - } - - /** - * Gets the default input definition. - */ - protected function getDefaultInputDefinition(): InputDefinition - { - return new InputDefinition([ - new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), - new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display help for the given command. When no command is given display help for the '.$this->defaultCommand.' command'), - new InputOption('--silent', null, InputOption::VALUE_NONE, 'Do not output any message'), - new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Only errors are displayed. All other output is suppressed'), - new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'), - new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this application version'), - new InputOption('--ansi', '', InputOption::VALUE_NEGATABLE, 'Force (or disable --no-ansi) ANSI output', null), - new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'), - ]); - } - - /** - * Gets the default commands that should always be available. - * - * @return Command[] - */ - protected function getDefaultCommands(): array - { - return [new HelpCommand(), new ListCommand(), new CompleteCommand(), new DumpCompletionCommand()]; - } - - /** - * Gets the default helper set with the helpers that should always be available. - */ - protected function getDefaultHelperSet(): HelperSet - { - return new HelperSet([ - new FormatterHelper(), - new DebugFormatterHelper(), - new ProcessHelper(), - new QuestionHelper(), - ]); - } - - /** - * Returns abbreviated suggestions in string format. - */ - private function getAbbreviationSuggestions(array $abbrevs): string - { - return ' '.implode("\n ", $abbrevs); - } - - /** - * Returns the namespace part of the command name. - * - * This method is not part of public API and should not be used directly. - */ - public function extractNamespace(string $name, ?int $limit = null): string - { - $parts = explode(':', $name, -1); - - return implode(':', null === $limit ? $parts : \array_slice($parts, 0, $limit)); - } - - /** - * Finds alternative of $name among $collection, - * if nothing is found in $collection, try in $abbrevs. - * - * @return string[] - */ - private function findAlternatives(string $name, iterable $collection): array - { - $threshold = 1e3; - $alternatives = []; - - $collectionParts = []; - foreach ($collection as $item) { - $collectionParts[$item] = explode(':', $item); - } - - foreach (explode(':', $name) as $i => $subname) { - foreach ($collectionParts as $collectionName => $parts) { - $exists = isset($alternatives[$collectionName]); - if (!isset($parts[$i]) && $exists) { - $alternatives[$collectionName] += $threshold; - continue; - } elseif (!isset($parts[$i])) { - continue; - } - - $lev = levenshtein($subname, $parts[$i]); - if ($lev <= \strlen($subname) / 3 || '' !== $subname && str_contains($parts[$i], $subname)) { - $alternatives[$collectionName] = $exists ? $alternatives[$collectionName] + $lev : $lev; - } elseif ($exists) { - $alternatives[$collectionName] += $threshold; - } - } - } - - foreach ($collection as $item) { - $lev = levenshtein($name, $item); - if ($lev <= \strlen($name) / 3 || str_contains($item, $name)) { - $alternatives[$item] = isset($alternatives[$item]) ? $alternatives[$item] - $lev : $lev; - } - } - - $alternatives = array_filter($alternatives, static fn ($lev) => $lev < 2 * $threshold); - ksort($alternatives, \SORT_NATURAL | \SORT_FLAG_CASE); - - return array_keys($alternatives); - } - - /** - * Sets the default Command name. - * - * @return $this - */ - public function setDefaultCommand(string $commandName, bool $isSingleCommand = false): static - { - $this->defaultCommand = explode('|', ltrim($commandName, '|'))[0]; - - if ($isSingleCommand) { - // Ensure the command exist - $this->find($commandName); - - $this->singleCommand = true; - } - - return $this; - } - - /** - * @internal - */ - public function isSingleCommand(): bool - { - return $this->singleCommand; - } - - private function splitStringByWidth(string $string, int $width): array - { - // str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly. - // additionally, array_slice() is not enough as some character has doubled width. - // we need a function to split string not by character count but by string width - if (false === $encoding = mb_detect_encoding($string, null, true)) { - return str_split($string, $width); - } - - $utf8String = mb_convert_encoding($string, 'utf8', $encoding); - $lines = []; - $line = ''; - - $offset = 0; - while (preg_match('/.{1,10000}/u', $utf8String, $m, 0, $offset)) { - $offset += \strlen($m[0]); - - foreach (preg_split('//u', $m[0]) as $char) { - // test if $char could be appended to current line - if (Helper::width($line.$char) <= $width) { - $line .= $char; - continue; - } - // if not, push current line to array and make new line - $lines[] = str_pad($line, $width); - $line = $char; - } - } - - $lines[] = \count($lines) ? str_pad($line, $width) : $line; - - return mb_convert_encoding($lines, $encoding, 'utf8'); - } - - /** - * Returns all namespaces of the command name. - * - * @return string[] - */ - private function extractAllNamespaces(string $name): array - { - // -1 as third argument is needed to skip the command short name when exploding - $parts = explode(':', $name, -1); - $namespaces = []; - - foreach ($parts as $part) { - if (\count($namespaces)) { - $namespaces[] = end($namespaces).':'.$part; - } else { - $namespaces[] = $part; - } - } - - return $namespaces; - } - - private function init(): void - { - if ($this->initialized) { - return; - } - $this->initialized = true; - - if ((new \ReflectionMethod($this, 'add'))->getDeclaringClass()->getName() !== (new \ReflectionMethod($this, 'addCommand'))->getDeclaringClass()->getName()) { - $adder = $this->add(...); - } else { - $adder = $this->addCommand(...); - } - - foreach ($this->getDefaultCommands() as $command) { - $adder($command); - } - } -} diff --git a/v3_ci4/vendor/symfony/console/Attribute/Argument.php b/v3_ci4/vendor/symfony/console/Attribute/Argument.php deleted file mode 100644 index 33b7a86..0000000 --- a/v3_ci4/vendor/symfony/console/Attribute/Argument.php +++ /dev/null @@ -1,147 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Attribute; - -use Symfony\Component\Console\Attribute\Reflection\ReflectionMember; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\Suggestion; -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\String\UnicodeString; - -#[\Attribute(\Attribute::TARGET_PARAMETER | \Attribute::TARGET_PROPERTY)] -class Argument -{ - private const ALLOWED_TYPES = ['string', 'bool', 'int', 'float', 'array']; - - private string|bool|int|float|array|null $default = null; - private array|\Closure $suggestedValues; - private ?int $mode = null; - /** - * @var string|class-string<\BackedEnum> - */ - private string $typeName = ''; - private ?InteractiveAttributeInterface $interactiveAttribute = null; - - /** - * Represents a console command definition. - * - * If unset, the `name` value will be inferred from the parameter definition. - * - * @param array|callable(CompletionInput):list $suggestedValues The values used for input completion - */ - public function __construct( - public string $description = '', - public string $name = '', - array|callable $suggestedValues = [], - ) { - $this->suggestedValues = \is_callable($suggestedValues) ? $suggestedValues(...) : $suggestedValues; - } - - /** - * @internal - */ - public static function tryFrom(\ReflectionParameter|\ReflectionProperty $member): ?self - { - $reflection = new ReflectionMember($member); - - if (!$self = $reflection->getAttribute(self::class)) { - return null; - } - - $type = $reflection->getType(); - $name = $reflection->getName(); - - if (!$type instanceof \ReflectionNamedType) { - throw new LogicException(\sprintf('The %s "$%s" of "%s" must have a named type. Untyped, Union or Intersection types are not supported for command arguments.', $reflection->getMemberName(), $name, $reflection->getSourceName())); - } - - $self->typeName = $type->getName(); - $isBackedEnum = is_subclass_of($self->typeName, \BackedEnum::class); - - if (!\in_array($self->typeName, self::ALLOWED_TYPES, true) && !$isBackedEnum) { - throw new LogicException(\sprintf('The type "%s" on %s "$%s" of "%s" is not supported as a command argument. Only "%s" types and backed enums are allowed.', $self->typeName, $reflection->getMemberName(), $name, $reflection->getSourceName(), implode('", "', self::ALLOWED_TYPES))); - } - - if (!$self->name) { - $self->name = (new UnicodeString($name))->kebab(); - } - - $self->default = $reflection->hasDefaultValue() ? $reflection->getDefaultValue() : null; - - $isOptional = $reflection->hasDefaultValue() || $reflection->isNullable(); - $self->mode = $isOptional ? InputArgument::OPTIONAL : InputArgument::REQUIRED; - if ('array' === $self->typeName) { - $self->mode |= InputArgument::IS_ARRAY; - } - - if (\is_array($self->suggestedValues) && !\is_callable($self->suggestedValues) && 2 === \count($self->suggestedValues) && ($instance = $reflection->getSourceThis()) && $instance::class === $self->suggestedValues[0] && \is_callable([$instance, $self->suggestedValues[1]])) { - // In case that the callback is declared as a static method `[Foo::class, 'methodName']` - yet it is not callable, - // while non-static method `[Foo $instance, 'methodName']` would be callable, we transform the callback on the fly into a non-static version. - $self->suggestedValues = [$instance, $self->suggestedValues[1]]; - } - - if ($isBackedEnum && !$self->suggestedValues) { - $self->suggestedValues = array_column($self->typeName::cases(), 'value'); - } - - $self->interactiveAttribute = Ask::tryFrom($member, $self->name); - - if ($self->interactiveAttribute && $isOptional) { - throw new LogicException(\sprintf('The %s "$%s" argument of "%s" cannot be both interactive and optional.', $reflection->getMemberName(), $self->name, $reflection->getSourceName())); - } - - return $self; - } - - /** - * @internal - */ - public function toInputArgument(): InputArgument - { - $suggestedValues = \is_callable($this->suggestedValues) ? ($this->suggestedValues)(...) : $this->suggestedValues; - - return new InputArgument($this->name, $this->mode, $this->description, $this->default, $suggestedValues); - } - - /** - * @internal - */ - public function resolveValue(InputInterface $input): mixed - { - $value = $input->getArgument($this->name); - - if (is_subclass_of($this->typeName, \BackedEnum::class) && (\is_string($value) || \is_int($value))) { - return $this->typeName::tryFrom($value) ?? throw InvalidArgumentException::fromEnumValue($this->name, $value, $this->suggestedValues); - } - - return $value; - } - - /** - * @internal - */ - public function getInteractiveAttribute(): ?InteractiveAttributeInterface - { - return $this->interactiveAttribute; - } - - /** - * @internal - */ - public function isRequired(): bool - { - return InputArgument::REQUIRED === (InputArgument::REQUIRED & $this->mode); - } -} diff --git a/v3_ci4/vendor/symfony/console/Attribute/AsCommand.php b/v3_ci4/vendor/symfony/console/Attribute/AsCommand.php deleted file mode 100644 index 02f1562..0000000 --- a/v3_ci4/vendor/symfony/console/Attribute/AsCommand.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Attribute; - -/** - * Service tag to autoconfigure commands. - * - * @final since Symfony 7.3 - */ -#[\Attribute(\Attribute::TARGET_CLASS)] -class AsCommand -{ - /** - * @param string $name The name of the command, used when calling it (i.e. "cache:clear") - * @param string|null $description The description of the command, displayed with the help page - * @param string[] $aliases The list of aliases of the command. The command will be executed when using one of them (i.e. "cache:clean") - * @param bool $hidden If true, the command won't be shown when listing all the available commands, but it can still be run as any other command - * @param string|null $help The help content of the command, displayed with the help page - * @param string[] $usages The list of usage examples, displayed with the help page - */ - public function __construct( - public string $name, - public ?string $description = null, - array $aliases = [], - bool $hidden = false, - public ?string $help = null, - public array $usages = [], - ) { - if (!$hidden && !$aliases) { - return; - } - - $name = explode('|', $name); - $name = array_merge($name, $aliases); - - if ($hidden && '' !== $name[0]) { - array_unshift($name, ''); - } - - $this->name = implode('|', $name); - } -} diff --git a/v3_ci4/vendor/symfony/console/Attribute/Ask.php b/v3_ci4/vendor/symfony/console/Attribute/Ask.php deleted file mode 100644 index 360a084..0000000 --- a/v3_ci4/vendor/symfony/console/Attribute/Ask.php +++ /dev/null @@ -1,145 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Attribute; - -use Symfony\Component\Console\Attribute\Reflection\ReflectionMember; -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Question\ConfirmationQuestion; -use Symfony\Component\Console\Question\Question; -use Symfony\Component\Console\Style\SymfonyStyle; - -#[\Attribute(\Attribute::TARGET_PARAMETER | \Attribute::TARGET_PROPERTY)] -class Ask implements InteractiveAttributeInterface -{ - public ?\Closure $normalizer; - public ?\Closure $validator; - private \Closure $closure; - - /** - * @param string $question The question to ask the user - * @param string|bool|int|float|null $default The default answer to return if the user enters nothing - * @param bool $hidden Whether the user response must be hidden or not - * @param bool $multiline Whether the user response should accept newline characters - * @param bool $trimmable Whether the user response must be trimmed or not - * @param int|null $timeout The maximum time the user has to answer the question in seconds - * @param callable|null $validator The validator for the question - * @param int|null $maxAttempts The maximum number of attempts allowed to answer the question. - * Null means an unlimited number of attempts - */ - public function __construct( - public string $question, - public string|bool|int|float|null $default = null, - public bool $hidden = false, - public bool $multiline = false, - public bool $trimmable = true, - public ?int $timeout = null, - ?callable $normalizer = null, - ?callable $validator = null, - public ?int $maxAttempts = null, - ) { - $this->normalizer = $normalizer ? $normalizer(...) : null; - $this->validator = $validator ? $validator(...) : null; - } - - /** - * @internal - */ - public static function tryFrom(\ReflectionParameter|\ReflectionProperty $member, string $name): ?self - { - $reflection = new ReflectionMember($member); - - if (!$self = $reflection->getAttribute(self::class)) { - return null; - } - - $type = $reflection->getType(); - - if (!$type instanceof \ReflectionNamedType) { - throw new LogicException(\sprintf('The %s "$%s" of "%s" must have a named type. Untyped, Union or Intersection types are not supported for interactive questions.', $reflection->getMemberName(), $name, $reflection->getSourceName())); - } - - $self->closure = function (SymfonyStyle $io, InputInterface $input) use ($self, $reflection, $name, $type) { - if ($reflection->isProperty() && isset($this->{$reflection->getName()})) { - return; - } - - if ($reflection->isParameter() && !\in_array($input->getArgument($name), [null, []], true)) { - return; - } - - if ('bool' === $type->getName()) { - $self->default ??= false; - - if (!\is_bool($self->default)) { - throw new LogicException(\sprintf('The "%s::$default" value for the %s "$%s" of "%s" must be a boolean.', self::class, $reflection->getMemberName(), $name, $reflection->getSourceName())); - } - - $question = new ConfirmationQuestion($self->question, $self->default); - } else { - $question = new Question($self->question, $self->default); - } - $question->setHidden($self->hidden); - $question->setMultiline($self->multiline); - $question->setTrimmable($self->trimmable); - $question->setTimeout($self->timeout); - - if (!$self->validator && $reflection->isProperty() && 'array' !== $type->getName()) { - $self->validator = fn (mixed $value): mixed => $this->{$reflection->getName()} = $value; - } - - $question->setValidator($self->validator); - $question->setMaxAttempts($self->maxAttempts); - - if ($self->normalizer) { - $question->setNormalizer($self->normalizer); - } elseif (is_subclass_of($type->getName(), \BackedEnum::class)) { - /** @var class-string<\BackedEnum> $backedType */ - $backedType = $reflection->getType()->getName(); - $question->setNormalizer(static fn (string|int $value) => $backedType::tryFrom($value) ?? throw InvalidArgumentException::fromEnumValue($reflection->getName(), $value, array_column($backedType::cases(), 'value'))); - } - - if ('array' === $type->getName()) { - $value = []; - while ($v = $io->askQuestion($question)) { - if ("\x4" === $v || \PHP_EOL === $v || ($question->isTrimmable() && '' === $v = trim($v))) { - break; - } - $value[] = $v; - } - } else { - $value = $io->askQuestion($question); - } - - if (null === $value && !$reflection->isNullable()) { - return; - } - - if ($reflection->isProperty()) { - $this->{$reflection->getName()} = $value; - } else { - $input->setArgument($name, $value); - } - }; - - return $self; - } - - /** - * @internal - */ - public function getFunction(object $instance): \ReflectionFunction - { - return new \ReflectionFunction($this->closure->bindTo($instance, $instance::class)); - } -} diff --git a/v3_ci4/vendor/symfony/console/Attribute/Interact.php b/v3_ci4/vendor/symfony/console/Attribute/Interact.php deleted file mode 100644 index 188071f..0000000 --- a/v3_ci4/vendor/symfony/console/Attribute/Interact.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Attribute; - -use Symfony\Component\Console\Exception\LogicException; - -#[\Attribute(\Attribute::TARGET_METHOD)] -class Interact implements InteractiveAttributeInterface -{ - private \ReflectionMethod $method; - - /** - * @internal - */ - public static function tryFrom(\ReflectionMethod $method): ?self - { - /** @var self|null $self */ - if (!$self = ($method->getAttributes(self::class)[0] ?? null)?->newInstance()) { - return null; - } - - if (!$method->isPublic() || $method->isStatic()) { - throw new LogicException(\sprintf('The interactive method "%s::%s()" must be public and non-static.', $method->getDeclaringClass()->getName(), $method->getName())); - } - - if ('__invoke' === $method->getName()) { - throw new LogicException(\sprintf('The "%s::__invoke()" method cannot be used as an interactive method.', $method->getDeclaringClass()->getName())); - } - - $self->method = $method; - - return $self; - } - - /** - * @internal - */ - public function getFunction(object $instance): \ReflectionFunction - { - return new \ReflectionFunction($this->method->getClosure($instance)); - } -} diff --git a/v3_ci4/vendor/symfony/console/Attribute/InteractiveAttributeInterface.php b/v3_ci4/vendor/symfony/console/Attribute/InteractiveAttributeInterface.php deleted file mode 100644 index 0b02d7d..0000000 --- a/v3_ci4/vendor/symfony/console/Attribute/InteractiveAttributeInterface.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Attribute; - -/** - * @internal - */ -interface InteractiveAttributeInterface -{ - public function getFunction(object $instance): \ReflectionFunction; -} diff --git a/v3_ci4/vendor/symfony/console/Attribute/MapInput.php b/v3_ci4/vendor/symfony/console/Attribute/MapInput.php deleted file mode 100644 index 0b50836..0000000 --- a/v3_ci4/vendor/symfony/console/Attribute/MapInput.php +++ /dev/null @@ -1,188 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Attribute; - -use Symfony\Component\Console\Attribute\Reflection\ReflectionMember; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Interaction\Interaction; - -/** - * Maps a command input into an object (DTO). - */ -#[\Attribute(\Attribute::TARGET_PARAMETER | \Attribute::TARGET_PROPERTY)] -final class MapInput -{ - /** - * @var array - */ - private array $definition = []; - - private \ReflectionClass $class; - - /** - * @var list - */ - private array $interactiveAttributes = []; - - /** - * @internal - */ - public static function tryFrom(\ReflectionParameter|\ReflectionProperty $member): ?self - { - $reflection = new ReflectionMember($member); - - if (!$self = $reflection->getAttribute(self::class)) { - return null; - } - - $type = $reflection->getType(); - - if (!$type instanceof \ReflectionNamedType) { - throw new LogicException(\sprintf('The input %s "%s" must have a named type.', $reflection->getMemberName(), $member->name)); - } - - if (!class_exists($class = $type->getName())) { - throw new LogicException(\sprintf('The input class "%s" does not exist.', $type->getName())); - } - - $self->class = new \ReflectionClass($class); - - foreach ($self->class->getProperties() as $property) { - if ($argument = Argument::tryFrom($property)) { - $self->definition[$property->name] = $argument; - } elseif ($option = Option::tryFrom($property)) { - $self->definition[$property->name] = $option; - } elseif ($input = self::tryFrom($property)) { - $self->definition[$property->name] = $input; - } - - if (isset($self->definition[$property->name]) && (!$property->isPublic() || $property->isStatic())) { - throw new LogicException(\sprintf('The input property "%s::$%s" must be public and non-static.', $self->class->name, $property->name)); - } - } - - if (!$self->definition) { - throw new LogicException(\sprintf('The input class "%s" must have at least one argument or option.', $self->class->name)); - } - - foreach ($self->class->getMethods() as $method) { - if ($attribute = Interact::tryFrom($method)) { - $self->interactiveAttributes[] = $attribute; - } - } - - return $self; - } - - /** - * @internal - */ - public function resolveValue(InputInterface $input): object - { - $instance = $this->class->newInstanceWithoutConstructor(); - - foreach ($this->definition as $name => $spec) { - // ignore required arguments that are not set yet (may happen in interactive mode) - if ($spec instanceof Argument && $spec->isRequired() && \in_array($input->getArgument($spec->name), [null, []], true)) { - continue; - } - - $instance->$name = $spec->resolveValue($input); - } - - return $instance; - } - - /** - * @internal - */ - public function setValue(InputInterface $input, object $object): void - { - foreach ($this->definition as $name => $spec) { - $property = $this->class->getProperty($name); - - if (!$property->isInitialized($object) || \in_array($value = $property->getValue($object), [null, []], true)) { - continue; - } - - match (true) { - $spec instanceof Argument => $input->setArgument($spec->name, $value), - $spec instanceof Option => $input->setOption($spec->name, $value), - $spec instanceof self => $spec->setValue($input, $value), - default => throw new LogicException('Unexpected specification type.'), - }; - } - } - - /** - * @return iterable - */ - public function getArguments(): iterable - { - foreach ($this->definition as $spec) { - if ($spec instanceof Argument) { - yield $spec; - } elseif ($spec instanceof self) { - yield from $spec->getArguments(); - } - } - } - - /** - * @return iterable