first commit
This commit is contained in:
		
							
								
								
									
										12
									
								
								vendor/webmozart/assert/.editorconfig
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/webmozart/assert/.editorconfig
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
root = true
 | 
			
		||||
 | 
			
		||||
[*]
 | 
			
		||||
charset=utf-8
 | 
			
		||||
end_of_line=lf
 | 
			
		||||
trim_trailing_whitespace=true
 | 
			
		||||
insert_final_newline=true
 | 
			
		||||
indent_style=space
 | 
			
		||||
indent_size=4
 | 
			
		||||
 | 
			
		||||
[*.yml]
 | 
			
		||||
indent_size=2
 | 
			
		||||
							
								
								
									
										120
									
								
								vendor/webmozart/assert/.github/workflows/ci.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								vendor/webmozart/assert/.github/workflows/ci.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,120 @@
 | 
			
		||||
# https://docs.github.com/en/actions
 | 
			
		||||
 | 
			
		||||
name: "CI"
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
    pull_request: ~
 | 
			
		||||
    push:
 | 
			
		||||
        branches:
 | 
			
		||||
            - "master"
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
    COMPOSER_ROOT_VERSION: 1.99
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
    coding-standards:
 | 
			
		||||
        name: "Coding Standards"
 | 
			
		||||
 | 
			
		||||
        runs-on: "ubuntu-latest"
 | 
			
		||||
 | 
			
		||||
        steps:
 | 
			
		||||
            -   name: "Checkout"
 | 
			
		||||
                uses: "actions/checkout@v2.3.4"
 | 
			
		||||
 | 
			
		||||
            -   name: "Install PHP"
 | 
			
		||||
                uses: "shivammathur/setup-php@2.9.0"
 | 
			
		||||
                with:
 | 
			
		||||
                    coverage: "none"
 | 
			
		||||
                    extensions: "mbstring"
 | 
			
		||||
                    php-version: "7.4"
 | 
			
		||||
                    tools: "composer-normalize"
 | 
			
		||||
 | 
			
		||||
            -   name: "Validate composer.json"
 | 
			
		||||
                run: "composer validate --strict"
 | 
			
		||||
 | 
			
		||||
            -   name: "Normalize composer.json"
 | 
			
		||||
                run: "composer-normalize --dry-run"
 | 
			
		||||
 | 
			
		||||
            - name: "PHP-CS-Fixer"
 | 
			
		||||
              uses: "docker://oskarstark/php-cs-fixer-ga:2.18.0"
 | 
			
		||||
              with:
 | 
			
		||||
                args: "--dry-run --diff-format udiff"
 | 
			
		||||
 | 
			
		||||
    static-code-analysis:
 | 
			
		||||
        name: "Static Code Analysis"
 | 
			
		||||
 | 
			
		||||
        runs-on: "ubuntu-latest"
 | 
			
		||||
 | 
			
		||||
        steps:
 | 
			
		||||
            -   name: "Checkout"
 | 
			
		||||
                uses: "actions/checkout@v2.3.4"
 | 
			
		||||
 | 
			
		||||
            -   name: "Install PHP"
 | 
			
		||||
                uses: "shivammathur/setup-php@2.9.0"
 | 
			
		||||
                with:
 | 
			
		||||
                    coverage: "none"
 | 
			
		||||
                    extensions: "mbstring"
 | 
			
		||||
                    php-version: "7.4"
 | 
			
		||||
 | 
			
		||||
            -   name: "Install dependencies with composer"
 | 
			
		||||
                run: "composer update --no-interaction --no-progress && composer i --working-dir=ci"
 | 
			
		||||
 | 
			
		||||
            -   name: "Run vimeo/psalm"
 | 
			
		||||
                run: "ci/vendor/bin/psalm --threads=4"
 | 
			
		||||
 | 
			
		||||
    tests:
 | 
			
		||||
        name: "Tests"
 | 
			
		||||
 | 
			
		||||
        runs-on: "ubuntu-latest"
 | 
			
		||||
 | 
			
		||||
        strategy:
 | 
			
		||||
            matrix:
 | 
			
		||||
                php-version:
 | 
			
		||||
                    - "7.2"
 | 
			
		||||
                    - "7.3"
 | 
			
		||||
                    - "7.4"
 | 
			
		||||
                    - "8.0"
 | 
			
		||||
 | 
			
		||||
        steps:
 | 
			
		||||
            -   name: "Checkout"
 | 
			
		||||
                uses: "actions/checkout@v2.3.4"
 | 
			
		||||
 | 
			
		||||
            -   name: "Install PHP"
 | 
			
		||||
                uses: "shivammathur/setup-php@2.9.0"
 | 
			
		||||
                with:
 | 
			
		||||
                    coverage: "none"
 | 
			
		||||
                    extensions: "mbstring"
 | 
			
		||||
                    php-version: "${{ matrix.php-version }}"
 | 
			
		||||
 | 
			
		||||
            -   name: "Install dependencies with composer"
 | 
			
		||||
                run: "composer update --no-interaction --no-progress"
 | 
			
		||||
 | 
			
		||||
            -   name: "Run unit tests"
 | 
			
		||||
                run: "vendor/bin/phpunit"
 | 
			
		||||
 | 
			
		||||
    windows-tests:
 | 
			
		||||
        name: "Windows tests"
 | 
			
		||||
 | 
			
		||||
        runs-on: "windows-latest"
 | 
			
		||||
 | 
			
		||||
        strategy:
 | 
			
		||||
            matrix:
 | 
			
		||||
                php-version:
 | 
			
		||||
                    - "7.4"
 | 
			
		||||
 | 
			
		||||
        steps:
 | 
			
		||||
            -   name: "Checkout"
 | 
			
		||||
                uses: "actions/checkout@v2.3.4"
 | 
			
		||||
 | 
			
		||||
            -   name: "Install PHP"
 | 
			
		||||
                uses: "shivammathur/setup-php@2.9.0"
 | 
			
		||||
                with:
 | 
			
		||||
                    coverage: "none"
 | 
			
		||||
                    extensions: "mbstring"
 | 
			
		||||
                    php-version: "${{ matrix.php-version }}"
 | 
			
		||||
 | 
			
		||||
            -   name: "Install dependencies with composer"
 | 
			
		||||
                run: "composer update --no-interaction --no-progress"
 | 
			
		||||
 | 
			
		||||
            -   name: "Run unit tests"
 | 
			
		||||
                run: "vendor/bin/phpunit tests/AssertTest.php"
 | 
			
		||||
							
								
								
									
										24
									
								
								vendor/webmozart/assert/.php_cs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								vendor/webmozart/assert/.php_cs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
$finder = PhpCsFixer\Finder::create()
 | 
			
		||||
    ->in(__DIR__.'/src')
 | 
			
		||||
    ->in(__DIR__.'/tests')
 | 
			
		||||
;
 | 
			
		||||
 | 
			
		||||
return PhpCsFixer\Config::create()
 | 
			
		||||
    ->setRiskyAllowed(true)
 | 
			
		||||
    ->setRules([
 | 
			
		||||
        '@PSR2' => true,
 | 
			
		||||
        '@Symfony' => true,
 | 
			
		||||
        'ordered_imports' => true,
 | 
			
		||||
        'array_syntax' => ['syntax' => 'long'],
 | 
			
		||||
        'no_superfluous_phpdoc_tags' => false,
 | 
			
		||||
        'phpdoc_annotation_without_dot' => false,
 | 
			
		||||
        'phpdoc_types_order' => false,
 | 
			
		||||
        'phpdoc_summary' => false,
 | 
			
		||||
        'phpdoc_to_comment' => false,
 | 
			
		||||
        'phpdoc_align' => false,
 | 
			
		||||
        'yoda_style' => false,
 | 
			
		||||
    ])
 | 
			
		||||
    ->setFinder($finder)
 | 
			
		||||
;
 | 
			
		||||
							
								
								
									
										190
									
								
								vendor/webmozart/assert/CHANGELOG.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								vendor/webmozart/assert/CHANGELOG.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,190 @@
 | 
			
		||||
Changelog
 | 
			
		||||
=========
 | 
			
		||||
 | 
			
		||||
## UNRELEASED
 | 
			
		||||
 | 
			
		||||
## 1.10.0
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
* On invalid assertion, we throw a `Webmozart\Assert\InvalidArgumentException`
 | 
			
		||||
* Added `Assert::positiveInteger()`
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
* Using a trait with real implementations of `all*()` and `nullOr*()` methods to improve psalm compatibility.
 | 
			
		||||
 | 
			
		||||
### Removed
 | 
			
		||||
 | 
			
		||||
* Support for PHP <7.2
 | 
			
		||||
 | 
			
		||||
## 1.9.1
 | 
			
		||||
 | 
			
		||||
## Fixed
 | 
			
		||||
 | 
			
		||||
* provisional support for PHP 8.0
 | 
			
		||||
 | 
			
		||||
## 1.9.0
 | 
			
		||||
 | 
			
		||||
* added better Psalm support for `all*` & `nullOr*` methods
 | 
			
		||||
* These methods are now understood by Psalm through a mixin. You may need a newer version of Psalm in order to use this
 | 
			
		||||
* added `@psalm-pure` annotation to `Assert::notFalse()`
 | 
			
		||||
* added more `@psalm-assert` annotations where appropriate
 | 
			
		||||
 | 
			
		||||
## Changed
 | 
			
		||||
 | 
			
		||||
* the `all*` & `nullOr*` methods are now declared on an interface, instead of `@method` annotations.
 | 
			
		||||
This interface is linked to the `Assert` class with a `@mixin` annotation. Most IDE's have supported this
 | 
			
		||||
for a long time, and you should not lose any autocompletion capabilities. PHPStan has supported this since
 | 
			
		||||
version `0.12.20`. This package is marked incompatible (with a composer conflict) with phpstan version prior to that.
 | 
			
		||||
If you do not use PHPStan than this does not matter.
 | 
			
		||||
 | 
			
		||||
## 1.8.0
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
* added `Assert::notStartsWith()`
 | 
			
		||||
* added `Assert::notEndsWith()`
 | 
			
		||||
* added `Assert::inArray()`
 | 
			
		||||
* added `@psalm-pure` annotations to pure assertions
 | 
			
		||||
 | 
			
		||||
### Fixed
 | 
			
		||||
 | 
			
		||||
* Exception messages of comparisons between `DateTime(Immutable)` objects now display their date & time.
 | 
			
		||||
* Custom Exception messages for `Assert::count()` now use the values to render the exception message.
 | 
			
		||||
 | 
			
		||||
## 1.7.0 (2020-02-14)
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
* added `Assert::notFalse()`
 | 
			
		||||
* added `Assert::isAOf()`
 | 
			
		||||
* added `Assert::isAnyOf()`
 | 
			
		||||
* added `Assert::isNotA()`
 | 
			
		||||
 | 
			
		||||
## 1.6.0 (2019-11-24)
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
* added `Assert::validArrayKey()`
 | 
			
		||||
* added `Assert::isNonEmptyList()`
 | 
			
		||||
* added `Assert::isNonEmptyMap()`
 | 
			
		||||
* added `@throws InvalidArgumentException` annotations to all methods that throw.
 | 
			
		||||
* added `@psalm-assert` for the list type to the `isList` assertion.
 | 
			
		||||
 | 
			
		||||
### Fixed
 | 
			
		||||
 | 
			
		||||
* `ResourceBundle` & `SimpleXMLElement` now pass the `isCountable` assertions.
 | 
			
		||||
They are countable, without implementing the `Countable` interface.
 | 
			
		||||
* The doc block of `range` now has the proper variables.
 | 
			
		||||
* An empty array will now pass `isList` and `isMap`. As it is a valid form of both.
 | 
			
		||||
If a non-empty variant is needed, use `isNonEmptyList` or `isNonEmptyMap`.
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
* Removed some `@psalm-assert` annotations, that were 'side effect' assertions See:
 | 
			
		||||
  * [#144](https://github.com/webmozart/assert/pull/144)
 | 
			
		||||
  * [#145](https://github.com/webmozart/assert/issues/145)
 | 
			
		||||
  * [#146](https://github.com/webmozart/assert/pull/146)
 | 
			
		||||
  * [#150](https://github.com/webmozart/assert/pull/150)
 | 
			
		||||
* If you use Psalm, the minimum version needed is `3.6.0`. Which is enforced through a composer conflict.
 | 
			
		||||
If you don't use Psalm, then this has no impact.
 | 
			
		||||
 | 
			
		||||
## 1.5.0 (2019-08-24)
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
* added `Assert::uniqueValues()`
 | 
			
		||||
* added `Assert::unicodeLetters()`
 | 
			
		||||
* added: `Assert::email()`
 | 
			
		||||
* added support for [Psalm](https://github.com/vimeo/psalm), by adding `@psalm-assert` annotations where appropriate.
 | 
			
		||||
 | 
			
		||||
### Fixed
 | 
			
		||||
 | 
			
		||||
* `Assert::endsWith()` would not give the correct result when dealing with a multibyte suffix.
 | 
			
		||||
* `Assert::length(), minLength, maxLength, lengthBetween` would not give the correct result when dealing with multibyte characters.
 | 
			
		||||
 | 
			
		||||
**NOTE**: These 2 changes may break your assertions if you relied on the fact that multibyte characters didn't behave correctly.
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
* The names of some variables have been updated to better reflect what they are.
 | 
			
		||||
* All function calls are now in their FQN form, slightly increasing performance.
 | 
			
		||||
* Tests are now properly ran against HHVM-3.30 and PHP nightly.
 | 
			
		||||
 | 
			
		||||
### Deprecation
 | 
			
		||||
 | 
			
		||||
* deprecated `Assert::isTraversable()` in favor of `Assert::isIterable()`
 | 
			
		||||
  * This was already done in 1.3.0, but it was only done through a silenced `trigger_error`. It is now annotated as well.
 | 
			
		||||
 | 
			
		||||
## 1.4.0 (2018-12-25)
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
* added `Assert::ip()`
 | 
			
		||||
* added `Assert::ipv4()`
 | 
			
		||||
* added `Assert::ipv6()`
 | 
			
		||||
* added `Assert::notRegex()`
 | 
			
		||||
* added `Assert::interfaceExists()`
 | 
			
		||||
* added `Assert::isList()`
 | 
			
		||||
* added `Assert::isMap()`
 | 
			
		||||
* added polyfill for ctype
 | 
			
		||||
 | 
			
		||||
### Fixed
 | 
			
		||||
 | 
			
		||||
* Special case when comparing objects implementing `__toString()`
 | 
			
		||||
 | 
			
		||||
## 1.3.0 (2018-01-29)
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
* added `Assert::minCount()`
 | 
			
		||||
* added `Assert::maxCount()`
 | 
			
		||||
* added `Assert::countBetween()`
 | 
			
		||||
* added `Assert::isCountable()`
 | 
			
		||||
* added `Assert::notWhitespaceOnly()`
 | 
			
		||||
* added `Assert::natural()`
 | 
			
		||||
* added `Assert::notContains()`
 | 
			
		||||
* added `Assert::isArrayAccessible()`
 | 
			
		||||
* added `Assert::isInstanceOfAny()`
 | 
			
		||||
* added `Assert::isIterable()`
 | 
			
		||||
 | 
			
		||||
### Fixed
 | 
			
		||||
 | 
			
		||||
* `stringNotEmpty` will no longer report "0" is an empty string
 | 
			
		||||
 | 
			
		||||
### Deprecation
 | 
			
		||||
 | 
			
		||||
* deprecated `Assert::isTraversable()` in favor of `Assert::isIterable()`
 | 
			
		||||
 | 
			
		||||
## 1.2.0 (2016-11-23)
 | 
			
		||||
 | 
			
		||||
 * added `Assert::throws()`
 | 
			
		||||
 * added `Assert::count()`
 | 
			
		||||
 * added extension point `Assert::reportInvalidArgument()` for custom subclasses
 | 
			
		||||
 | 
			
		||||
## 1.1.0 (2016-08-09)
 | 
			
		||||
 | 
			
		||||
 * added `Assert::object()`
 | 
			
		||||
 * added `Assert::propertyExists()`
 | 
			
		||||
 * added `Assert::propertyNotExists()`
 | 
			
		||||
 * added `Assert::methodExists()`
 | 
			
		||||
 * added `Assert::methodNotExists()`
 | 
			
		||||
 * added `Assert::uuid()`
 | 
			
		||||
 | 
			
		||||
## 1.0.2 (2015-08-24)
 | 
			
		||||
 | 
			
		||||
 * integrated Style CI
 | 
			
		||||
 * add tests for minimum package dependencies on Travis CI
 | 
			
		||||
 | 
			
		||||
## 1.0.1 (2015-05-12)
 | 
			
		||||
 | 
			
		||||
 * added support for PHP 5.3.3
 | 
			
		||||
 | 
			
		||||
## 1.0.0 (2015-05-12)
 | 
			
		||||
 | 
			
		||||
 * first stable release
 | 
			
		||||
 | 
			
		||||
## 1.0.0-beta (2015-03-19)
 | 
			
		||||
 | 
			
		||||
 * first beta release
 | 
			
		||||
							
								
								
									
										20
									
								
								vendor/webmozart/assert/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vendor/webmozart/assert/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
			
		||||
The MIT License (MIT)
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2014 Bernhard Schussek
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
							
								
								
									
										287
									
								
								vendor/webmozart/assert/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										287
									
								
								vendor/webmozart/assert/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,287 @@
 | 
			
		||||
Webmozart Assert
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
[](https://packagist.org/packages/webmozart/assert)
 | 
			
		||||
[](https://packagist.org/packages/webmozart/assert)
 | 
			
		||||
 | 
			
		||||
This library contains efficient assertions to test the input and output of
 | 
			
		||||
your methods. With these assertions, you can greatly reduce the amount of coding
 | 
			
		||||
needed to write a safe implementation.
 | 
			
		||||
 | 
			
		||||
All assertions in the [`Assert`] class throw an `Webmozart\Assert\InvalidArgumentException` if
 | 
			
		||||
they fail.
 | 
			
		||||
 | 
			
		||||
FAQ
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
**What's the difference to [beberlei/assert]?**
 | 
			
		||||
 | 
			
		||||
This library is heavily inspired by Benjamin Eberlei's wonderful [assert package],
 | 
			
		||||
but fixes a usability issue with error messages that can't be fixed there without
 | 
			
		||||
breaking backwards compatibility.
 | 
			
		||||
 | 
			
		||||
This package features usable error messages by default. However, you can also
 | 
			
		||||
easily write custom error messages:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
Assert::string($path, 'The path is expected to be a string. Got: %s');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
In [beberlei/assert], the ordering of the `%s` placeholders is different for
 | 
			
		||||
every assertion. This package, on the contrary, provides consistent placeholder
 | 
			
		||||
ordering for all assertions:
 | 
			
		||||
 | 
			
		||||
* `%s`: The tested value as string, e.g. `"/foo/bar"`.
 | 
			
		||||
* `%2$s`, `%3$s`, ...: Additional assertion-specific values, e.g. the
 | 
			
		||||
  minimum/maximum length, allowed values, etc.
 | 
			
		||||
 | 
			
		||||
Check the source code of the assertions to find out details about the additional
 | 
			
		||||
available placeholders.
 | 
			
		||||
 | 
			
		||||
Installation
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
Use [Composer] to install the package:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ composer require webmozart/assert
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Example
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
use Webmozart\Assert\Assert;
 | 
			
		||||
 | 
			
		||||
class Employee
 | 
			
		||||
{
 | 
			
		||||
    public function __construct($id)
 | 
			
		||||
    {
 | 
			
		||||
        Assert::integer($id, 'The employee ID must be an integer. Got: %s');
 | 
			
		||||
        Assert::greaterThan($id, 0, 'The employee ID must be a positive integer. Got: %s');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
If you create an employee with an invalid ID, an exception is thrown:
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
new Employee('foobar');
 | 
			
		||||
// => Webmozart\Assert\InvalidArgumentException:
 | 
			
		||||
//    The employee ID must be an integer. Got: string
 | 
			
		||||
 | 
			
		||||
new Employee(-10);
 | 
			
		||||
// => Webmozart\Assert\InvalidArgumentException:
 | 
			
		||||
//    The employee ID must be a positive integer. Got: -10
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Assertions
 | 
			
		||||
----------
 | 
			
		||||
 | 
			
		||||
The [`Assert`] class provides the following assertions:
 | 
			
		||||
 | 
			
		||||
### Type Assertions
 | 
			
		||||
 | 
			
		||||
Method                                                   | Description
 | 
			
		||||
-------------------------------------------------------- | --------------------------------------------------
 | 
			
		||||
`string($value, $message = '')`                          | Check that a value is a string
 | 
			
		||||
`stringNotEmpty($value, $message = '')`                  | Check that a value is a non-empty string
 | 
			
		||||
`integer($value, $message = '')`                         | Check that a value is an integer
 | 
			
		||||
`integerish($value, $message = '')`                      | Check that a value casts to an integer
 | 
			
		||||
`positiveInteger($value, $message = '')`                 | Check that a value is a positive (non-zero) integer
 | 
			
		||||
`float($value, $message = '')`                           | Check that a value is a float
 | 
			
		||||
`numeric($value, $message = '')`                         | Check that a value is numeric
 | 
			
		||||
`natural($value, $message= ''')`                         | Check that a value is a non-negative integer
 | 
			
		||||
`boolean($value, $message = '')`                         | Check that a value is a boolean
 | 
			
		||||
`scalar($value, $message = '')`                          | Check that a value is a scalar
 | 
			
		||||
`object($value, $message = '')`                          | Check that a value is an object
 | 
			
		||||
`resource($value, $type = null, $message = '')`          | Check that a value is a resource
 | 
			
		||||
`isCallable($value, $message = '')`                      | Check that a value is a callable
 | 
			
		||||
`isArray($value, $message = '')`                         | Check that a value is an array
 | 
			
		||||
`isTraversable($value, $message = '')`  (deprecated)     | Check that a value is an array or a `\Traversable`
 | 
			
		||||
`isIterable($value, $message = '')`                      | Check that a value is an array or a `\Traversable`
 | 
			
		||||
`isCountable($value, $message = '')`                     | Check that a value is an array or a `\Countable`
 | 
			
		||||
`isInstanceOf($value, $class, $message = '')`            | Check that a value is an `instanceof` a class
 | 
			
		||||
`isInstanceOfAny($value, array $classes, $message = '')` | Check that a value is an `instanceof` at least one class on the array of classes
 | 
			
		||||
`notInstanceOf($value, $class, $message = '')`           | Check that a value is not an `instanceof` a class
 | 
			
		||||
`isAOf($value, $class, $message = '')`                   | Check that a value is of the class or has one of its parents
 | 
			
		||||
`isAnyOf($value, array $classes, $message = '')`         | Check that a value is of at least one of the classes or has one of its parents
 | 
			
		||||
`isNotA($value, $class, $message = '')`                  | Check that a value is not of the class or has not one of its parents
 | 
			
		||||
`isArrayAccessible($value, $message = '')`               | Check that a value can be accessed as an array
 | 
			
		||||
`uniqueValues($values, $message = '')`                   | Check that the given array contains unique values
 | 
			
		||||
 | 
			
		||||
### Comparison Assertions
 | 
			
		||||
 | 
			
		||||
Method                                          | Description
 | 
			
		||||
----------------------------------------------- | ------------------------------------------------------------------
 | 
			
		||||
`true($value, $message = '')`                   | Check that a value is `true`
 | 
			
		||||
`false($value, $message = '')`                  | Check that a value is `false`
 | 
			
		||||
`notFalse($value, $message = '')`               | Check that a value is not `false`
 | 
			
		||||
`null($value, $message = '')`                   | Check that a value is `null`
 | 
			
		||||
`notNull($value, $message = '')`                | Check that a value is not `null`
 | 
			
		||||
`isEmpty($value, $message = '')`                | Check that a value is `empty()`
 | 
			
		||||
`notEmpty($value, $message = '')`               | Check that a value is not `empty()`
 | 
			
		||||
`eq($value, $value2, $message = '')`            | Check that a value equals another (`==`)
 | 
			
		||||
`notEq($value, $value2, $message = '')`         | Check that a value does not equal another (`!=`)
 | 
			
		||||
`same($value, $value2, $message = '')`          | Check that a value is identical to another (`===`)
 | 
			
		||||
`notSame($value, $value2, $message = '')`       | Check that a value is not identical to another (`!==`)
 | 
			
		||||
`greaterThan($value, $value2, $message = '')`   | Check that a value is greater than another
 | 
			
		||||
`greaterThanEq($value, $value2, $message = '')` | Check that a value is greater than or equal to another
 | 
			
		||||
`lessThan($value, $value2, $message = '')`      | Check that a value is less than another
 | 
			
		||||
`lessThanEq($value, $value2, $message = '')`    | Check that a value is less than or equal to another
 | 
			
		||||
`range($value, $min, $max, $message = '')`      | Check that a value is within a range
 | 
			
		||||
`inArray($value, array $values, $message = '')` | Check that a value is one of a list of values
 | 
			
		||||
`oneOf($value, array $values, $message = '')`   | Check that a value is one of a list of values (alias of `inArray`)
 | 
			
		||||
 | 
			
		||||
### String Assertions
 | 
			
		||||
 | 
			
		||||
You should check that a value is a string with `Assert::string()` before making
 | 
			
		||||
any of the following assertions.
 | 
			
		||||
 | 
			
		||||
Method                                              | Description
 | 
			
		||||
--------------------------------------------------- | -----------------------------------------------------------------
 | 
			
		||||
`contains($value, $subString, $message = '')`       | Check that a string contains a substring
 | 
			
		||||
`notContains($value, $subString, $message = '')`    | Check that a string does not contain a substring
 | 
			
		||||
`startsWith($value, $prefix, $message = '')`        | Check that a string has a prefix
 | 
			
		||||
`notStartsWith($value, $prefix, $message = '')`     | Check that a string does not have a prefix
 | 
			
		||||
`startsWithLetter($value, $message = '')`           | Check that a string starts with a letter
 | 
			
		||||
`endsWith($value, $suffix, $message = '')`          | Check that a string has a suffix
 | 
			
		||||
`notEndsWith($value, $suffix, $message = '')`       | Check that a string does not have a suffix
 | 
			
		||||
`regex($value, $pattern, $message = '')`            | Check that a string matches a regular expression
 | 
			
		||||
`notRegex($value, $pattern, $message = '')`         | Check that a string does not match a regular expression
 | 
			
		||||
`unicodeLetters($value, $message = '')`             | Check that a string contains Unicode letters only
 | 
			
		||||
`alpha($value, $message = '')`                      | Check that a string contains letters only
 | 
			
		||||
`digits($value, $message = '')`                     | Check that a string contains digits only
 | 
			
		||||
`alnum($value, $message = '')`                      | Check that a string contains letters and digits only
 | 
			
		||||
`lower($value, $message = '')`                      | Check that a string contains lowercase characters only
 | 
			
		||||
`upper($value, $message = '')`                      | Check that a string contains uppercase characters only
 | 
			
		||||
`length($value, $length, $message = '')`            | Check that a string has a certain number of characters
 | 
			
		||||
`minLength($value, $min, $message = '')`            | Check that a string has at least a certain number of characters
 | 
			
		||||
`maxLength($value, $max, $message = '')`            | Check that a string has at most a certain number of characters
 | 
			
		||||
`lengthBetween($value, $min, $max, $message = '')`  | Check that a string has a length in the given range
 | 
			
		||||
`uuid($value, $message = '')`                       | Check that a string is a valid UUID
 | 
			
		||||
`ip($value, $message = '')`                         | Check that a string is a valid IP (either IPv4 or IPv6)
 | 
			
		||||
`ipv4($value, $message = '')`                       | Check that a string is a valid IPv4
 | 
			
		||||
`ipv6($value, $message = '')`                       | Check that a string is a valid IPv6
 | 
			
		||||
`email($value, $message = '')`                      | Check that a string is a valid e-mail address
 | 
			
		||||
`notWhitespaceOnly($value, $message = '')`          | Check that a string contains at least one non-whitespace character
 | 
			
		||||
 | 
			
		||||
### File Assertions
 | 
			
		||||
 | 
			
		||||
Method                              | Description
 | 
			
		||||
----------------------------------- | --------------------------------------------------
 | 
			
		||||
`fileExists($value, $message = '')` | Check that a value is an existing path
 | 
			
		||||
`file($value, $message = '')`       | Check that a value is an existing file
 | 
			
		||||
`directory($value, $message = '')`  | Check that a value is an existing directory
 | 
			
		||||
`readable($value, $message = '')`   | Check that a value is a readable path
 | 
			
		||||
`writable($value, $message = '')`   | Check that a value is a writable path
 | 
			
		||||
 | 
			
		||||
### Object Assertions
 | 
			
		||||
 | 
			
		||||
Method                                                | Description
 | 
			
		||||
----------------------------------------------------- | --------------------------------------------------
 | 
			
		||||
`classExists($value, $message = '')`                  | Check that a value is an existing class name
 | 
			
		||||
`subclassOf($value, $class, $message = '')`           | Check that a class is a subclass of another
 | 
			
		||||
`interfaceExists($value, $message = '')`              | Check that a value is an existing interface name
 | 
			
		||||
`implementsInterface($value, $class, $message = '')`  | Check that a class implements an interface
 | 
			
		||||
`propertyExists($value, $property, $message = '')`    | Check that a property exists in a class/object
 | 
			
		||||
`propertyNotExists($value, $property, $message = '')` | Check that a property does not exist in a class/object
 | 
			
		||||
`methodExists($value, $method, $message = '')`        | Check that a method exists in a class/object
 | 
			
		||||
`methodNotExists($value, $method, $message = '')`     | Check that a method does not exist in a class/object
 | 
			
		||||
 | 
			
		||||
### Array Assertions
 | 
			
		||||
 | 
			
		||||
Method                                             | Description
 | 
			
		||||
-------------------------------------------------- | ------------------------------------------------------------------
 | 
			
		||||
`keyExists($array, $key, $message = '')`           | Check that a key exists in an array
 | 
			
		||||
`keyNotExists($array, $key, $message = '')`        | Check that a key does not exist in an array
 | 
			
		||||
`validArrayKey($key, $message = '')`               | Check that a value is a valid array key (int or string)
 | 
			
		||||
`count($array, $number, $message = '')`            | Check that an array contains a specific number of elements
 | 
			
		||||
`minCount($array, $min, $message = '')`            | Check that an array contains at least a certain number of elements
 | 
			
		||||
`maxCount($array, $max, $message = '')`            | Check that an array contains at most a certain number of elements
 | 
			
		||||
`countBetween($array, $min, $max, $message = '')`  | Check that an array has a count in the given range
 | 
			
		||||
`isList($array, $message = '')`                    | Check that an array is a non-associative list
 | 
			
		||||
`isNonEmptyList($array, $message = '')`            | Check that an array is a non-associative list, and not empty
 | 
			
		||||
`isMap($array, $message = '')`                     | Check that an array is associative and has strings as keys
 | 
			
		||||
`isNonEmptyMap($array, $message = '')`             | Check that an array is associative and has strings as keys, and is not empty
 | 
			
		||||
 | 
			
		||||
### Function Assertions
 | 
			
		||||
 | 
			
		||||
Method                                      | Description
 | 
			
		||||
------------------------------------------- | -----------------------------------------------------------------------------------------------------
 | 
			
		||||
`throws($closure, $class, $message = '')`   | Check that a function throws a certain exception. Subclasses of the exception class will be accepted.
 | 
			
		||||
 | 
			
		||||
### Collection Assertions
 | 
			
		||||
 | 
			
		||||
All of the above assertions can be prefixed with `all*()` to test the contents
 | 
			
		||||
of an array or a `\Traversable`:
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
Assert::allIsInstanceOf($employees, 'Acme\Employee');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Nullable Assertions
 | 
			
		||||
 | 
			
		||||
All of the above assertions can be prefixed with `nullOr*()` to run the
 | 
			
		||||
assertion only if it the value is not `null`:
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
Assert::nullOrString($middleName, 'The middle name must be a string or null. Got: %s');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Extending Assert
 | 
			
		||||
 | 
			
		||||
The `Assert` class comes with a few methods, which can be overridden to change the class behaviour. You can also extend it to
 | 
			
		||||
add your own assertions.
 | 
			
		||||
 | 
			
		||||
#### Overriding methods
 | 
			
		||||
 | 
			
		||||
Overriding the following methods in your assertion class allows you to change the behaviour of the assertions:
 | 
			
		||||
 | 
			
		||||
* `public static function __callStatic($name, $arguments)`
 | 
			
		||||
  * This method is used to 'create' the `nullOr` and `all` versions of the assertions.
 | 
			
		||||
* `protected static function valueToString($value)`
 | 
			
		||||
  * This method is used for error messages, to convert the value to a string value for displaying. You could use this for representing a value object with a `__toString` method for example.
 | 
			
		||||
* `protected static function typeToString($value)`
 | 
			
		||||
  * This method is used for error messages, to convert the a value to a string representing its type.
 | 
			
		||||
* `protected static function strlen($value)`
 | 
			
		||||
  * This method is used to calculate string length for relevant methods, using the `mb_strlen` if available and useful.
 | 
			
		||||
* `protected static function reportInvalidArgument($message)`
 | 
			
		||||
  * This method is called when an assertion fails, with the specified error message. Here you can throw your own exception, or log something.
 | 
			
		||||
 | 
			
		||||
## Static analysis support
 | 
			
		||||
 | 
			
		||||
Where applicable, assertion functions are annotated to support Psalm's
 | 
			
		||||
[Assertion syntax](https://psalm.dev/docs/annotating_code/assertion_syntax/).
 | 
			
		||||
A dedicated [PHPStan Plugin](https://github.com/phpstan/phpstan-webmozart-assert) is
 | 
			
		||||
required for proper type support.
 | 
			
		||||
 | 
			
		||||
Authors
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
* [Bernhard Schussek] a.k.a. [@webmozart]
 | 
			
		||||
* [The Community Contributors]
 | 
			
		||||
 | 
			
		||||
Contribute
 | 
			
		||||
----------
 | 
			
		||||
 | 
			
		||||
Contributions to the package are always welcome!
 | 
			
		||||
 | 
			
		||||
* Report any bugs or issues you find on the [issue tracker].
 | 
			
		||||
* You can grab the source code at the package's [Git repository].
 | 
			
		||||
 | 
			
		||||
License
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
All contents of this package are licensed under the [MIT license].
 | 
			
		||||
 | 
			
		||||
[beberlei/assert]: https://github.com/beberlei/assert
 | 
			
		||||
[assert package]: https://github.com/beberlei/assert
 | 
			
		||||
[Composer]: https://getcomposer.org
 | 
			
		||||
[Bernhard Schussek]: https://webmozarts.com
 | 
			
		||||
[The Community Contributors]: https://github.com/webmozart/assert/graphs/contributors
 | 
			
		||||
[issue tracker]: https://github.com/webmozart/assert/issues
 | 
			
		||||
[Git repository]: https://github.com/webmozart/assert
 | 
			
		||||
[@webmozart]: https://twitter.com/webmozart
 | 
			
		||||
[MIT license]: LICENSE
 | 
			
		||||
[`Assert`]: src/Assert.php
 | 
			
		||||
							
								
								
									
										43
									
								
								vendor/webmozart/assert/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								vendor/webmozart/assert/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "webmozart/assert",
 | 
			
		||||
    "description": "Assertions to validate method input/output with nice error messages.",
 | 
			
		||||
    "keywords": [
 | 
			
		||||
        "assert",
 | 
			
		||||
        "check",
 | 
			
		||||
        "validate"
 | 
			
		||||
    ],
 | 
			
		||||
    "license": "MIT",
 | 
			
		||||
    "authors": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "Bernhard Schussek",
 | 
			
		||||
            "email": "bschussek@gmail.com"
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "require": {
 | 
			
		||||
        "php": "^7.2 || ^8.0",
 | 
			
		||||
        "symfony/polyfill-ctype": "^1.8"
 | 
			
		||||
    },
 | 
			
		||||
    "conflict": {
 | 
			
		||||
        "phpstan/phpstan": "<0.12.20",
 | 
			
		||||
        "vimeo/psalm": "<4.6.1 || 4.6.2"
 | 
			
		||||
    },
 | 
			
		||||
    "require-dev": {
 | 
			
		||||
        "phpunit/phpunit": "^8.5.13"
 | 
			
		||||
    },
 | 
			
		||||
    "extra": {
 | 
			
		||||
        "branch-alias": {
 | 
			
		||||
            "dev-master": "1.10-dev"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "autoload": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "Webmozart\\Assert\\": "src/"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "autoload-dev": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "Webmozart\\Assert\\Tests\\": "tests/",
 | 
			
		||||
            "Webmozart\\Assert\\Bin\\": "bin/src"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								vendor/webmozart/assert/psalm.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								vendor/webmozart/assert/psalm.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<psalm
 | 
			
		||||
    totallyTyped="true"
 | 
			
		||||
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
			
		||||
    xmlns="https://getpsalm.org/schema/config"
 | 
			
		||||
    xsi:schemaLocation="https://getpsalm.org/schema/config ci/vendor/vimeo/psalm/config.xsd"
 | 
			
		||||
    phpVersion="7.3"
 | 
			
		||||
>
 | 
			
		||||
    <projectFiles>
 | 
			
		||||
        <directory name="bin" />
 | 
			
		||||
        <directory name="tests/static-analysis" />
 | 
			
		||||
    </projectFiles>
 | 
			
		||||
 | 
			
		||||
</psalm>
 | 
			
		||||
							
								
								
									
										2066
									
								
								vendor/webmozart/assert/src/Assert.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2066
									
								
								vendor/webmozart/assert/src/Assert.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										16
									
								
								vendor/webmozart/assert/src/InvalidArgumentException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vendor/webmozart/assert/src/InvalidArgumentException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of the webmozart/assert package.
 | 
			
		||||
 *
 | 
			
		||||
 * (c) Bernhard Schussek <bschussek@gmail.com>
 | 
			
		||||
 *
 | 
			
		||||
 * For the full copyright and license information, please view the LICENSE
 | 
			
		||||
 * file that was distributed with this source code.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
namespace Webmozart\Assert;
 | 
			
		||||
 | 
			
		||||
class InvalidArgumentException extends \InvalidArgumentException
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2916
									
								
								vendor/webmozart/assert/src/Mixin.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2916
									
								
								vendor/webmozart/assert/src/Mixin.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user