updated composer

This commit is contained in:
2021-05-18 13:47:03 +00:00
parent e248cd036c
commit ba92152daa
1187 changed files with 20804 additions and 22320 deletions

18
.env
View File

@@ -2,7 +2,7 @@ APP_NAME='W4RP Services'
APP_ENV=local APP_ENV=local
APP_KEY=base64:PBOxrGFJAtwj9SDF4F0DZ1J+6MjrJmRiPZJQwRdy3XQ= APP_KEY=base64:PBOxrGFJAtwj9SDF4F0DZ1J+6MjrJmRiPZJQwRdy3XQ=
APP_DEBUG=true APP_DEBUG=true
APP_URL=http://services.w4rp.space APP_URL=https://services.w4rp.space
LOG_CHANNEL=daily LOG_CHANNEL=daily
@@ -14,23 +14,21 @@ DB_USERNAME=minerva
DB_PASSWORD=FuckingShit12 DB_PASSWORD=FuckingShit12
BROADCAST_DRIVER=log BROADCAST_DRIVER=log
CACHE_DRIVER=file CACHE_DRIVER=redis
CACHE_PREFIX=services CACHE_PREFIX=w4rpservices_cache
QUEUE_DRIVER=redis QUEUE_DRIVER=redis
QUEUE_CONNECTION=redis QUEUE_CONNECTION=redis
QUEUE_PREFIX=w4rpservices_queue
SESSION_DRIVER=redis SESSION_DRIVER=file
SESSION_LIFETIME=120 SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1 REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null REDIS_PASSWORD=null
REDIS_PORT=6379 REDIS_PORT=6379
REDIS_DB=8 REDIS_DATABASE=0
REDIS_CACHE_DB=9 REDIS_CACHE_DB=1
REDIS_SESSION_DB=10
REDIS_QUEUE_DB=11
REDIS_CLIENT=predis
MAIL_DRIVER=smtp MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io MAIL_HOST=smtp.mailtrap.io
@@ -46,4 +44,4 @@ ESI_CALLBACK_URI=https://services.w4rp.space/callback/
ESI_PRIMARY_CHAR=93738489 ESI_PRIMARY_CHAR=93738489
ESI_ALLIANCE=99004116 ESI_ALLIANCE=99004116
HORIZON_PREFIX=services HORIZON_PREFIX=w4rpservices_horizon

View File

@@ -6,6 +6,7 @@
"type": "project", "type": "project",
"require": { "require": {
"php": "^7.1.3", "php": "^7.1.3",
"ext-redis": "^5.3",
"eveseat/eseye": "^2.3", "eveseat/eseye": "^2.3",
"fideloper/proxy": "^4.0", "fideloper/proxy": "^4.0",
"guzzlehttp/guzzle": "^6.3", "guzzlehttp/guzzle": "^6.3",
@@ -16,7 +17,6 @@
"laravel/socialite": "^5.1", "laravel/socialite": "^5.1",
"laravel/ui": "^2.0", "laravel/ui": "^2.0",
"laravelcollective/html": "^6.0", "laravelcollective/html": "^6.0",
"predis/predis": "^1.1",
"socialiteproviders/manager": "^4.0", "socialiteproviders/manager": "^4.0",
"spatie/laravel-rate-limited-job-middleware": "^1.5", "spatie/laravel-rate-limited-job-middleware": "^1.5",
"spatie/laravel-schedule-monitor": "2.0.1", "spatie/laravel-schedule-monitor": "2.0.1",

939
composer.lock generated

File diff suppressed because it is too large Load Diff

403
vendor/brick/math/CHANGELOG.md vendored Normal file
View File

@@ -0,0 +1,403 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.9.1](https://github.com/brick/math/releases/tag/0.9.1) - 2020-08-19
✨ New features
- `BigInteger::not()` returns the bitwise `NOT` value
🐛 **Bug fixes**
- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers
- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available
## [0.9.0](https://github.com/brick/math/releases/tag/0.9.0) - 2020-08-18
👌 **Improvements**
- `BigNumber::of()` now accepts `.123` and `123.` formats, both of which return a `BigDecimal`
💥 **Breaking changes**
- Deprecated method `BigInteger::powerMod()` has been removed - use `modPow()` instead
- Deprecated method `BigInteger::parse()` has been removed - use `fromBase()` instead
## [0.8.9](https://github.com/brick/math/releases/tag/0.8.9) - 2020-01-08
⚡️ **Performance improvements**
A few additional optimizations in `BigInteger` and `BigDecimal` when one of the operands can be returned as is. Thanks to @tomtomsen in #24.
## [0.8.8](https://github.com/brick/math/releases/tag/0.8.8) - 2019-04-25
🐛 **Bug fixes**
- `BigInteger::toBase()` could return an empty string for zero values (BCMath & Native calculators only, GMP calculator unaffected)
**New features**
- `BigInteger::toArbitraryBase()` converts a number to an arbitrary base, using a custom alphabet
- `BigInteger::fromArbitraryBase()` converts a string in an arbitrary base, using a custom alphabet, back to a number
These methods can be used as the foundation to convert strings between different bases/alphabets, using BigInteger as an intermediate representation.
💩 **Deprecations**
- `BigInteger::parse()` is now deprecated in favour of `fromBase()`
`BigInteger::fromBase()` works the same way as `parse()`, with 2 minor differences:
- the `$base` parameter is required, it does not default to `10`
- it throws a `NumberFormatException` instead of an `InvalidArgumentException` when the number is malformed
## [0.8.7](https://github.com/brick/math/releases/tag/0.8.7) - 2019-04-20
**Improvements**
- Safer conversion from `float` when using custom locales
- **Much faster** `NativeCalculator` implementation 🚀
You can expect **at least a 3x performance improvement** for common arithmetic operations when using the library on systems without GMP or BCMath; it gets exponentially faster on multiplications with a high number of digits. This is due to calculations now being performed on whole blocks of digits (the block size depending on the platform, 32-bit or 64-bit) instead of digit-by-digit as before.
## [0.8.6](https://github.com/brick/math/releases/tag/0.8.6) - 2019-04-11
**New method**
`BigNumber::sum()` returns the sum of one or more numbers.
## [0.8.5](https://github.com/brick/math/releases/tag/0.8.5) - 2019-02-12
**Bug fix**: `of()` factory methods could fail when passing a `float` in environments using a `LC_NUMERIC` locale with a decimal separator other than `'.'` (#20).
Thanks @manowark 👍
## [0.8.4](https://github.com/brick/math/releases/tag/0.8.4) - 2018-12-07
**New method**
`BigDecimal::sqrt()` calculates the square root of a decimal number, to a given scale.
## [0.8.3](https://github.com/brick/math/releases/tag/0.8.3) - 2018-12-06
**New method**
`BigInteger::sqrt()` calculates the square root of a number (thanks @peter279k).
**New exception**
`NegativeNumberException` is thrown when calling `sqrt()` on a negative number.
## [0.8.2](https://github.com/brick/math/releases/tag/0.8.2) - 2018-11-08
**Performance update**
- Further improvement of `toInt()` performance
- `NativeCalculator` can now perform some multiplications more efficiently
## [0.8.17](https://github.com/brick/math/releases/tag/0.8.17) - 2020-08-19
🐛 **Bug fix**
- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers
- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available
## [0.8.16](https://github.com/brick/math/releases/tag/0.8.16) - 2020-08-18
🚑 **Critical fix**
- This version reintroduces the deprecated `BigInteger::parse()` method, that has been removed by mistake in version `0.8.9` and should have lasted for the whole `0.8` release cycle.
**New features**
- `BigInteger::modInverse()` calculates a modular multiplicative inverse
- `BigInteger::fromBytes()` creates a `BigInteger` from a byte string
- `BigInteger::toBytes()` converts a `BigInteger` to a byte string
- `BigInteger::randomBits()` creates a pseudo-random `BigInteger` of a given bit length
- `BigInteger::randomRange()` creates a pseudo-random `BigInteger` between two bounds
💩 **Deprecations**
- `BigInteger::powerMod()` is now deprecated in favour of `modPow()`
## [0.8.15](https://github.com/brick/math/releases/tag/0.8.15) - 2020-04-15
🐛 **Fixes**
- added missing `ext-json` requirement, due to `BigNumber` implementing `JsonSerializable`
⚡️ **Optimizations**
- additional optimization in `BigInteger::remainder()`
## [0.8.14](https://github.com/brick/math/releases/tag/0.8.14) - 2020-02-18
**New features**
- `BigInteger::getLowestSetBit()` returns the index of the rightmost one bit
## [0.8.13](https://github.com/brick/math/releases/tag/0.8.13) - 2020-02-16
**New features**
- `BigInteger::isEven()` tests whether the number is even
- `BigInteger::isOdd()` tests whether the number is odd
- `BigInteger::testBit()` tests if a bit is set
- `BigInteger::getBitLength()` returns the number of bits in the minimal representation of the number
## [0.8.12](https://github.com/brick/math/releases/tag/0.8.12) - 2020-02-03
🛠️ **Maintenance release**
Classes are now annotated for better static analysis with [psalm](https://psalm.dev/).
This is a maintenance release: no bug fixes, no new features, no breaking changes.
## [0.8.11](https://github.com/brick/math/releases/tag/0.8.11) - 2020-01-23
**New feature**
`BigInteger::powerMod()` performs a power-with-modulo operation. Useful for crypto.
## [0.8.10](https://github.com/brick/math/releases/tag/0.8.10) - 2020-01-21
**New feature**
`BigInteger::mod()` returns the **modulo** of two numbers. The *modulo* differs from the *remainder* when the signs of the operands are different.
## [0.8.1](https://github.com/brick/math/releases/tag/0.8.1) - 2018-11-07
Performance optimization of `toInt()` methods.
## [0.8.0](https://github.com/brick/math/releases/tag/0.8.0) - 2018-10-13
**Breaking changes**
The following deprecated methods have been removed. Use the new method name instead:
| Method removed | Replacement method |
| --- | --- |
| `BigDecimal::getIntegral()` | `BigDecimal::getIntegralPart()` |
| `BigDecimal::getFraction()` | `BigDecimal::getFractionalPart()` |
---
**New features**
`BigInteger` has been augmented with 5 new methods for bitwise operations:
| New method | Description |
| --- | --- |
| `and()` | performs a bitwise `AND` operation on two numbers |
| `or()` | performs a bitwise `OR` operation on two numbers |
| `xor()` | performs a bitwise `XOR` operation on two numbers |
| `shiftedLeft()` | returns the number shifted left by a number of bits |
| `shiftedRight()` | returns the number shifted right by a number of bits |
Thanks to @DASPRiD 👍
## [0.7.3](https://github.com/brick/math/releases/tag/0.7.3) - 2018-08-20
**New method:** `BigDecimal::hasNonZeroFractionalPart()`
**Renamed/deprecated methods:**
- `BigDecimal::getIntegral()` has been renamed to `getIntegralPart()` and is now deprecated
- `BigDecimal::getFraction()` has been renamed to `getFractionalPart()` and is now deprecated
## [0.7.2](https://github.com/brick/math/releases/tag/0.7.2) - 2018-07-21
**Performance update**
`BigInteger::parse()` and `toBase()` now use GMP's built-in base conversion features when available.
## [0.7.1](https://github.com/brick/math/releases/tag/0.7.1) - 2018-03-01
This is a maintenance release, no code has been changed.
- When installed with `--no-dev`, the autoloader does not autoload tests anymore
- Tests and other files unnecessary for production are excluded from the dist package
This will help make installations more compact.
## [0.7.0](https://github.com/brick/math/releases/tag/0.7.0) - 2017-10-02
Methods renamed:
- `BigNumber:sign()` has been renamed to `getSign()`
- `BigDecimal::unscaledValue()` has been renamed to `getUnscaledValue()`
- `BigDecimal::scale()` has been renamed to `getScale()`
- `BigDecimal::integral()` has been renamed to `getIntegral()`
- `BigDecimal::fraction()` has been renamed to `getFraction()`
- `BigRational::numerator()` has been renamed to `getNumerator()`
- `BigRational::denominator()` has been renamed to `getDenominator()`
Classes renamed:
- `ArithmeticException` has been renamed to `MathException`
## [0.6.2](https://github.com/brick/math/releases/tag/0.6.2) - 2017-10-02
The base class for all exceptions is now `MathException`.
`ArithmeticException` has been deprecated, and will be removed in 0.7.0.
## [0.6.1](https://github.com/brick/math/releases/tag/0.6.1) - 2017-10-02
A number of methods have been renamed:
- `BigNumber:sign()` is deprecated; use `getSign()` instead
- `BigDecimal::unscaledValue()` is deprecated; use `getUnscaledValue()` instead
- `BigDecimal::scale()` is deprecated; use `getScale()` instead
- `BigDecimal::integral()` is deprecated; use `getIntegral()` instead
- `BigDecimal::fraction()` is deprecated; use `getFraction()` instead
- `BigRational::numerator()` is deprecated; use `getNumerator()` instead
- `BigRational::denominator()` is deprecated; use `getDenominator()` instead
The old methods will be removed in version 0.7.0.
## [0.6.0](https://github.com/brick/math/releases/tag/0.6.0) - 2017-08-25
- Minimum PHP version is now [7.1](https://gophp71.org/); for PHP 5.6 and PHP 7.0 support, use version `0.5`
- Deprecated method `BigDecimal::withScale()` has been removed; use `toScale()` instead
- Method `BigNumber::toInteger()` has been renamed to `toInt()`
## [0.5.4](https://github.com/brick/math/releases/tag/0.5.4) - 2016-10-17
`BigNumber` classes now implement [JsonSerializable](http://php.net/manual/en/class.jsonserializable.php).
The JSON output is always a string.
## [0.5.3](https://github.com/brick/math/releases/tag/0.5.3) - 2016-03-31
This is a bugfix release. Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6.
## [0.5.2](https://github.com/brick/math/releases/tag/0.5.2) - 2015-08-06
The `$scale` parameter of `BigDecimal::dividedBy()` is now optional again.
## [0.5.1](https://github.com/brick/math/releases/tag/0.5.1) - 2015-07-05
**New method: `BigNumber::toScale()`**
This allows to convert any `BigNumber` to a `BigDecimal` with a given scale, using rounding if necessary.
## [0.5.0](https://github.com/brick/math/releases/tag/0.5.0) - 2015-07-04
**New features**
- Common `BigNumber` interface for all classes, with the following methods:
- `sign()` and derived methods (`isZero()`, `isPositive()`, ...)
- `compareTo()` and derived methods (`isEqualTo()`, `isGreaterThan()`, ...) that work across different `BigNumber` types
- `toBigInteger()`, `toBigDecimal()`, `toBigRational`() conversion methods
- `toInteger()` and `toFloat()` conversion methods to native types
- Unified `of()` behaviour: every class now accepts any type of number, provided that it can be safely converted to the current type
- New method: `BigDecimal::exactlyDividedBy()`; this method automatically computes the scale of the result, provided that the division yields a finite number of digits
- New methods: `BigRational::quotient()` and `remainder()`
- Fine-grained exceptions: `DivisionByZeroException`, `RoundingNecessaryException`, `NumberFormatException`
- Factory methods `zero()`, `one()` and `ten()` available in all classes
- Rounding mode reintroduced in `BigInteger::dividedBy()`
This release also comes with many performance improvements.
---
**Breaking changes**
- `BigInteger`:
- `getSign()` is renamed to `sign()`
- `toString()` is renamed to `toBase()`
- `BigInteger::dividedBy()` now throws an exception by default if the remainder is not zero; use `quotient()` to get the previous behaviour
- `BigDecimal`:
- `getSign()` is renamed to `sign()`
- `getUnscaledValue()` is renamed to `unscaledValue()`
- `getScale()` is renamed to `scale()`
- `getIntegral()` is renamed to `integral()`
- `getFraction()` is renamed to `fraction()`
- `divideAndRemainder()` is renamed to `quotientAndRemainder()`
- `dividedBy()` now takes a **mandatory** `$scale` parameter **before** the rounding mode
- `toBigInteger()` does not accept a `$roundingMode` parameter any more
- `toBigRational()` does not simplify the fraction any more; explicitly add `->simplified()` to get the previous behaviour
- `BigRational`:
- `getSign()` is renamed to `sign()`
- `getNumerator()` is renamed to `numerator()`
- `getDenominator()` is renamed to `denominator()`
- `of()` is renamed to `nd()`, while `parse()` is renamed to `of()`
- Miscellaneous:
- `ArithmeticException` is moved to an `Exception\` sub-namespace
- `of()` factory methods now throw `NumberFormatException` instead of `InvalidArgumentException`
## [0.4.3](https://github.com/brick/math/releases/tag/0.4.3) - 2016-03-31
Backport of two bug fixes from the 0.5 branch:
- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected
- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6.
## [0.4.2](https://github.com/brick/math/releases/tag/0.4.2) - 2015-06-16
New method: `BigDecimal::stripTrailingZeros()`
## [0.4.1](https://github.com/brick/math/releases/tag/0.4.1) - 2015-06-12
Introducing a `BigRational` class, to perform calculations on fractions of any size.
## [0.4.0](https://github.com/brick/math/releases/tag/0.4.0) - 2015-06-12
Rounding modes have been removed from `BigInteger`, and are now a concept specific to `BigDecimal`.
`BigInteger::dividedBy()` now always returns the quotient of the division.
## [0.3.5](https://github.com/brick/math/releases/tag/0.3.5) - 2016-03-31
Backport of two bug fixes from the 0.5 branch:
- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected
- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6.
## [0.3.4](https://github.com/brick/math/releases/tag/0.3.4) - 2015-06-11
New methods:
- `BigInteger::remainder()` returns the remainder of a division only
- `BigInteger::gcd()` returns the greatest common divisor of two numbers
## [0.3.3](https://github.com/brick/math/releases/tag/0.3.3) - 2015-06-07
Fix `toString()` not handling negative numbers.
## [0.3.2](https://github.com/brick/math/releases/tag/0.3.2) - 2015-06-07
`BigInteger` and `BigDecimal` now have a `getSign()` method that returns:
- `-1` if the number is negative
- `0` if the number is zero
- `1` if the number is positive
## [0.3.1](https://github.com/brick/math/releases/tag/0.3.1) - 2015-06-05
Minor performance improvements
## [0.3.0](https://github.com/brick/math/releases/tag/0.3.0) - 2015-06-04
The `$roundingMode` and `$scale` parameters have been swapped in `BigDecimal::dividedBy()`.
## [0.2.2](https://github.com/brick/math/releases/tag/0.2.2) - 2015-06-04
Stronger immutability guarantee for `BigInteger` and `BigDecimal`.
So far, it would have been possible to break immutability of these classes by calling the `unserialize()` internal function. This release fixes that.
## [0.2.1](https://github.com/brick/math/releases/tag/0.2.1) - 2015-06-02
Added `BigDecimal::divideAndRemainder()`
## [0.2.0](https://github.com/brick/math/releases/tag/0.2.0) - 2015-05-22
- `min()` and `max()` do not accept an `array` any more, but a variable number of parameters
- **minimum PHP version is now 5.6**
- continuous integration with PHP 7
## [0.1.1](https://github.com/brick/math/releases/tag/0.1.1) - 2014-09-01
- Added `BigInteger::power()`
- Added HHVM support
## [0.1.0](https://github.com/brick/math/releases/tag/0.1.0) - 2014-08-31
First beta release.

View File

@@ -2,10 +2,11 @@
## Supported Versions ## Supported Versions
Only the latest release stream is supported. Only the last two release streams are supported.
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 0.9.x | :white_check_mark: |
| 0.8.x | :white_check_mark: | | 0.8.x | :white_check_mark: |
| < 0.8 | :x: | | < 0.8 | :x: |

View File

@@ -14,13 +14,13 @@
], ],
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": "^7.1|^8.0", "php": "^7.1 || ^8.0",
"ext-json": "*" "ext-json": "*"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^7.5.15|^8.5", "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0",
"php-coveralls/php-coveralls": "^2.2", "php-coveralls/php-coveralls": "^2.2",
"vimeo/psalm": "^3.5" "vimeo/psalm": "4.3.2"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {

View File

@@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="3.8.5@e6ec5fa22a7b9e61670a24d07b3119aff80dcd89">
<file src="src/Internal/Calculator/BcMathCalculator.php">
<InvalidNullableReturnType occurrences="3">
<code>string</code>
<code>string</code>
<code>string</code>
</InvalidNullableReturnType>
<InvalidReturnStatement occurrences="1">
<code>[$q, $r]</code>
</InvalidReturnStatement>
<InvalidReturnType occurrences="1">
<code>array</code>
</InvalidReturnType>
<NullableReturnStatement occurrences="3">
<code>\bcdiv($a, $b, 0)</code>
<code>\bcmod($a, $b)</code>
<code>\bcpowmod($base, $exp, $mod, 0)</code>
</NullableReturnStatement>
</file>
<file src="src/Internal/Calculator/NativeCalculator.php">
<InvalidOperand occurrences="6">
<code>$a</code>
<code>$a</code>
<code>$a</code>
<code>$b</code>
<code>$blockA</code>
<code>$blockA</code>
</InvalidOperand>
<LoopInvalidation occurrences="4">
<code>$i</code>
<code>$i</code>
<code>$i</code>
<code>$j</code>
</LoopInvalidation>
<PossiblyInvalidArgument occurrences="1">
<code>$e / 2</code>
</PossiblyInvalidArgument>
</file>
</files>

View File

@@ -1,56 +0,0 @@
<?xml version="1.0"?>
<psalm
totallyTyped="false"
resolveFromConfigFile="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
errorBaseline="psalm-baseline.xml"
>
<projectFiles>
<directory name="src" />
<ignoreFiles>
<directory name="vendor" />
</ignoreFiles>
</projectFiles>
<issueHandlers>
<LessSpecificReturnType errorLevel="info" />
<!-- level 3 issues - slightly lazy code writing, but provably low false-negatives -->
<DeprecatedMethod errorLevel="info" />
<DeprecatedProperty errorLevel="info" />
<DeprecatedClass errorLevel="info" />
<DeprecatedConstant errorLevel="info" />
<DeprecatedFunction errorLevel="info" />
<DeprecatedInterface errorLevel="info" />
<DeprecatedTrait errorLevel="info" />
<InternalMethod errorLevel="info" />
<InternalProperty errorLevel="info" />
<InternalClass errorLevel="info" />
<MissingClosureReturnType errorLevel="info" />
<MissingReturnType errorLevel="info" />
<MissingPropertyType errorLevel="info" />
<InvalidDocblock errorLevel="info" />
<MisplacedRequiredParam errorLevel="info" />
<PropertyNotSetInConstructor errorLevel="info" />
<MissingConstructor errorLevel="info" />
<MissingClosureParamType errorLevel="info" />
<MissingParamType errorLevel="info" />
<RedundantCondition errorLevel="info" />
<DocblockTypeContradiction errorLevel="info" />
<RedundantConditionGivenDocblockType errorLevel="info" />
<UnresolvableInclude errorLevel="info" />
<RawObjectIteration errorLevel="info" />
<InvalidStringClass errorLevel="info" />
</issueHandlers>
</psalm>

View File

@@ -64,7 +64,7 @@ use Brick\Math\Internal\Calculator;
* @param string $a The left operand. * @param string $a The left operand.
* @param string $b The right operand. * @param string $b The right operand.
*/ */
function runTests(string $a, string $b) : void private function runTests(string $a, string $b) : void
{ {
$this->test("$a + $b", function(Calculator $c) use($a, $b) { $this->test("$a + $b", function(Calculator $c) use($a, $b) {
return $c->add($a, $b); return $c->add($a, $b);
@@ -123,8 +123,11 @@ use Brick\Math\Internal\Calculator;
*/ */
private function test(string $test, Closure $callback) : void private function test(string $test, Closure $callback) : void
{ {
static $counter = 0; static $testCounter = 0;
static $lastOutputTime = null; static $lastOutputTime = 0.0;
static $currentSecond = 0;
static $currentSecondTestCounter = 0;
static $testsPerSecond = 0;
$gmpResult = $callback($this->gmp); $gmpResult = $callback($this->gmp);
$bcmathResult = $callback($this->bcmath); $bcmathResult = $callback($this->bcmath);
@@ -138,13 +141,20 @@ use Brick\Math\Internal\Calculator;
self::failure('GMP', 'Native', $test); self::failure('GMP', 'Native', $test);
} }
$counter++; $testCounter++;
$time = microtime(true); $currentSecondTestCounter++;
if ($lastOutputTime === null) { $time = microtime(true);
$lastOutputTime = $time; $second = (int) $time;
} elseif ($time - $lastOutputTime >= 0.1) {
echo "\r", number_format($counter); if ($second !== $currentSecond) {
$currentSecond = $second;
$testsPerSecond = $currentSecondTestCounter;
$currentSecondTestCounter = 0;
}
if ($time - $lastOutputTime >= 0.1) {
echo "\r", number_format($testCounter), ' (', number_format($testsPerSecond) . ' / s)';
$lastOutputTime = $time; $lastOutputTime = $time;
} }
} }

View File

@@ -96,7 +96,10 @@ final class BigDecimal extends BigNumber
*/ */
public static function zero() : BigDecimal public static function zero() : BigDecimal
{ {
/** @psalm-suppress ImpureStaticVariable */ /**
* @psalm-suppress ImpureStaticVariable
* @var BigDecimal|null $zero
*/
static $zero; static $zero;
if ($zero === null) { if ($zero === null) {
@@ -115,7 +118,10 @@ final class BigDecimal extends BigNumber
*/ */
public static function one() : BigDecimal public static function one() : BigDecimal
{ {
/** @psalm-suppress ImpureStaticVariable */ /**
* @psalm-suppress ImpureStaticVariable
* @var BigDecimal|null $one
*/
static $one; static $one;
if ($one === null) { if ($one === null) {
@@ -134,7 +140,10 @@ final class BigDecimal extends BigNumber
*/ */
public static function ten() : BigDecimal public static function ten() : BigDecimal
{ {
/** @psalm-suppress ImpureStaticVariable */ /**
* @psalm-suppress ImpureStaticVariable
* @var BigDecimal|null $ten
*/
static $ten; static $ten;
if ($ten === null) { if ($ten === null) {
@@ -677,11 +686,7 @@ final class BigDecimal extends BigNumber
*/ */
public function toBigInteger() : BigInteger public function toBigInteger() : BigInteger
{ {
if ($this->scale === 0) { $zeroScaleDecimal = $this->scale === 0 ? $this : $this->dividedBy(1, 0);
$zeroScaleDecimal = $this;
} else {
$zeroScaleDecimal = $this->dividedBy(1, 0);
}
return BigInteger::create($zeroScaleDecimal->value); return BigInteger::create($zeroScaleDecimal->value);
} }
@@ -763,6 +768,7 @@ final class BigDecimal extends BigNumber
* This method is only here to implement interface Serializable and cannot be accessed directly. * This method is only here to implement interface Serializable and cannot be accessed directly.
* *
* @internal * @internal
* @psalm-suppress RedundantPropertyInitializationCheck
* *
* @param string $value * @param string $value
* *

View File

@@ -217,6 +217,8 @@ final class BigInteger extends BigNumber
* *
* Using the default random bytes generator, this method is suitable for cryptographic use. * Using the default random bytes generator, this method is suitable for cryptographic use.
* *
* @psalm-param callable(int): string $randomBytesGenerator
*
* @param int $numBits The number of bits. * @param int $numBits The number of bits.
* @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, and returns a * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, and returns a
* string of random bytes of the given length. Defaults to the * string of random bytes of the given length. Defaults to the
@@ -256,6 +258,8 @@ final class BigInteger extends BigNumber
* *
* Using the default random bytes generator, this method is suitable for cryptographic use. * Using the default random bytes generator, this method is suitable for cryptographic use.
* *
* @psalm-param (callable(int): string)|null $randomBytesGenerator
*
* @param BigNumber|int|float|string $min The lower bound. Must be convertible to a BigInteger. * @param BigNumber|int|float|string $min The lower bound. Must be convertible to a BigInteger.
* @param BigNumber|int|float|string $max The upper bound. Must be convertible to a BigInteger. * @param BigNumber|int|float|string $max The upper bound. Must be convertible to a BigInteger.
* @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer,
@@ -300,7 +304,10 @@ final class BigInteger extends BigNumber
*/ */
public static function zero() : BigInteger public static function zero() : BigInteger
{ {
/** @psalm-suppress ImpureStaticVariable */ /**
* @psalm-suppress ImpureStaticVariable
* @var BigInteger|null $zero
*/
static $zero; static $zero;
if ($zero === null) { if ($zero === null) {
@@ -319,7 +326,10 @@ final class BigInteger extends BigNumber
*/ */
public static function one() : BigInteger public static function one() : BigInteger
{ {
/** @psalm-suppress ImpureStaticVariable */ /**
* @psalm-suppress ImpureStaticVariable
* @var BigInteger|null $one
*/
static $one; static $one;
if ($one === null) { if ($one === null) {
@@ -338,7 +348,10 @@ final class BigInteger extends BigNumber
*/ */
public static function ten() : BigInteger public static function ten() : BigInteger
{ {
/** @psalm-suppress ImpureStaticVariable */ /**
* @psalm-suppress ImpureStaticVariable
* @var BigInteger|null $ten
*/
static $ten; static $ten;
if ($ten === null) { if ($ten === null) {
@@ -1070,7 +1083,10 @@ final class BigInteger extends BigNumber
if ($signed) { if ($signed) {
if ($this->isNegative()) { if ($this->isNegative()) {
$hex = \bin2hex(~\hex2bin($hex)); $bin = \hex2bin($hex);
assert($bin !== false);
$hex = \bin2hex(~$bin);
$hex = self::fromBase($hex, 16)->plus(1)->toBase(16); $hex = self::fromBase($hex, 16)->plus(1)->toBase(16);
$hexLength = \strlen($hex); $hexLength = \strlen($hex);
@@ -1116,6 +1132,7 @@ final class BigInteger extends BigNumber
* This method is only here to implement interface Serializable and cannot be accessed directly. * This method is only here to implement interface Serializable and cannot be accessed directly.
* *
* @internal * @internal
* @psalm-suppress RedundantPropertyInitializationCheck
* *
* @param string $value * @param string $value
* *

View File

@@ -67,13 +67,10 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
return new BigInteger((string) $value); return new BigInteger((string) $value);
} }
if (\is_float($value)) { /** @psalm-suppress RedundantCastGivenDocblockType We cannot trust the untyped $value here! */
$value = self::floatToString($value); $value = \is_float($value) ? self::floatToString($value) : (string) $value;
} else {
$value = (string) $value;
}
$throw = function() use ($value) : void { $throw = static function() use ($value) : void {
throw new NumberFormatException(\sprintf( throw new NumberFormatException(\sprintf(
'The given value "%s" does not represent a valid number.', 'The given value "%s" does not represent a valid number.',
$value $value
@@ -84,7 +81,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
$throw(); $throw();
} }
$getMatch = function(string $value) use ($matches) : ?string { $getMatch = static function(string $value) use ($matches) : ?string {
return isset($matches[$value]) && $matches[$value] !== '' ? $matches[$value] : null; return isset($matches[$value]) && $matches[$value] !== '' ? $matches[$value] : null;
}; };
@@ -93,7 +90,13 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
$denominator = $getMatch('denominator'); $denominator = $getMatch('denominator');
if ($numerator !== null) { if ($numerator !== null) {
$numerator = self::cleanUp($sign . $numerator); assert($denominator !== null);
if ($sign !== null) {
$numerator = $sign . $numerator;
}
$numerator = self::cleanUp($numerator);
$denominator = self::cleanUp($denominator); $denominator = self::cleanUp($denominator);
if ($denominator === '0') { if ($denominator === '0') {
@@ -121,14 +124,14 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
} }
if ($point !== null || $exponent !== null) { if ($point !== null || $exponent !== null) {
$fractional = $fractional ?? ''; $fractional = ($fractional ?? '');
$exponent = $exponent !== null ? (int) $exponent : 0; $exponent = ($exponent !== null) ? (int) $exponent : 0;
if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) { if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) {
throw new NumberFormatException('Exponent too large.'); throw new NumberFormatException('Exponent too large.');
} }
$unscaledValue = self::cleanUp($sign . $integral . $fractional); $unscaledValue = self::cleanUp(($sign ?? ''). $integral . $fractional);
$scale = \strlen($fractional) - $exponent; $scale = \strlen($fractional) - $exponent;
@@ -142,7 +145,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
return new BigDecimal($unscaledValue, $scale); return new BigDecimal($unscaledValue, $scale);
} }
$integral = self::cleanUp($sign . $integral); $integral = self::cleanUp(($sign ?? '') . $integral);
return new BigInteger($integral); return new BigInteger($integral);
} }
@@ -181,10 +184,11 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
* @return static * @return static
* *
* @psalm-pure * @psalm-pure
* @psalm-suppress TooManyArguments
* @psalm-suppress UnsafeInstantiation
*/ */
protected static function create(... $args) : BigNumber protected static function create(... $args) : BigNumber
{ {
/** @psalm-suppress TooManyArguments */
return new static(... $args); return new static(... $args);
} }
@@ -199,6 +203,8 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
* @throws \InvalidArgumentException If no values are given. * @throws \InvalidArgumentException If no values are given.
* @throws MathException If an argument is not valid. * @throws MathException If an argument is not valid.
* *
* @psalm-suppress LessSpecificReturnStatement
* @psalm-suppress MoreSpecificReturnType
* @psalm-pure * @psalm-pure
*/ */
public static function min(...$values) : BigNumber public static function min(...$values) : BigNumber
@@ -231,6 +237,8 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
* @throws \InvalidArgumentException If no values are given. * @throws \InvalidArgumentException If no values are given.
* @throws MathException If an argument is not valid. * @throws MathException If an argument is not valid.
* *
* @psalm-suppress LessSpecificReturnStatement
* @psalm-suppress MoreSpecificReturnType
* @psalm-pure * @psalm-pure
*/ */
public static function max(...$values) : BigNumber public static function max(...$values) : BigNumber
@@ -263,6 +271,8 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
* @throws \InvalidArgumentException If no values are given. * @throws \InvalidArgumentException If no values are given.
* @throws MathException If an argument is not valid. * @throws MathException If an argument is not valid.
* *
* @psalm-suppress LessSpecificReturnStatement
* @psalm-suppress MoreSpecificReturnType
* @psalm-pure * @psalm-pure
*/ */
public static function sum(...$values) : BigNumber public static function sum(...$values) : BigNumber
@@ -273,11 +283,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
foreach ($values as $value) { foreach ($values as $value) {
$value = static::of($value); $value = static::of($value);
if ($sum === null) { $sum = $sum === null ? $value : self::add($sum, $value);
$sum = $value;
} else {
$sum = self::add($sum, $value);
}
} }
if ($sum === null) { if ($sum === null) {

View File

@@ -108,7 +108,10 @@ final class BigRational extends BigNumber
*/ */
public static function zero() : BigRational public static function zero() : BigRational
{ {
/** @psalm-suppress ImpureStaticVariable */ /**
* @psalm-suppress ImpureStaticVariable
* @var BigRational|null $zero
*/
static $zero; static $zero;
if ($zero === null) { if ($zero === null) {
@@ -127,7 +130,10 @@ final class BigRational extends BigNumber
*/ */
public static function one() : BigRational public static function one() : BigRational
{ {
/** @psalm-suppress ImpureStaticVariable */ /**
* @psalm-suppress ImpureStaticVariable
* @var BigRational|null $one
*/
static $one; static $one;
if ($one === null) { if ($one === null) {
@@ -146,7 +152,10 @@ final class BigRational extends BigNumber
*/ */
public static function ten() : BigRational public static function ten() : BigRational
{ {
/** @psalm-suppress ImpureStaticVariable */ /**
* @psalm-suppress ImpureStaticVariable
* @var BigRational|null $ten
*/
static $ten; static $ten;
if ($ten === null) { if ($ten === null) {
@@ -458,6 +467,7 @@ final class BigRational extends BigNumber
* This method is only here to implement interface Serializable and cannot be accessed directly. * This method is only here to implement interface Serializable and cannot be accessed directly.
* *
* @internal * @internal
* @psalm-suppress RedundantPropertyInitializationCheck
* *
* @param string $value * @param string $value
* *

View File

@@ -677,6 +677,9 @@ abstract class Calculator
} }
/** /**
* @psalm-suppress InvalidOperand
* @see https://github.com/vimeo/psalm/issues/4456
*
* @param string $number A positive, binary number. * @param string $number A positive, binary number.
* *
* @return string * @return string
@@ -685,7 +688,7 @@ abstract class Calculator
{ {
$xor = \str_repeat("\xff", \strlen($number)); $xor = \str_repeat("\xff", \strlen($number));
$number = $number ^ $xor; $number ^= $xor;
for ($i = \strlen($number) - 1; $i >= 0; $i--) { for ($i = \strlen($number) - 1; $i >= 0; $i--) {
$byte = \ord($number[$i]); $byte = \ord($number[$i]);

View File

@@ -41,6 +41,9 @@ class BcMathCalculator extends Calculator
/** /**
* {@inheritdoc} * {@inheritdoc}
*
* @psalm-suppress InvalidNullableReturnType
* @psalm-suppress NullableReturnStatement
*/ */
public function divQ(string $a, string $b) : string public function divQ(string $a, string $b) : string
{ {
@@ -49,9 +52,16 @@ class BcMathCalculator extends Calculator
/** /**
* {@inheritdoc} * {@inheritdoc}
*
* @psalm-suppress InvalidNullableReturnType
* @psalm-suppress NullableReturnStatement
*/ */
public function divR(string $a, string $b) : string public function divR(string $a, string $b) : string
{ {
if (version_compare(PHP_VERSION, '7.2') >= 0) {
return \bcmod($a, $b, 0);
}
return \bcmod($a, $b); return \bcmod($a, $b);
} }
@@ -61,7 +71,15 @@ class BcMathCalculator extends Calculator
public function divQR(string $a, string $b) : array public function divQR(string $a, string $b) : array
{ {
$q = \bcdiv($a, $b, 0); $q = \bcdiv($a, $b, 0);
if (version_compare(PHP_VERSION, '7.2') >= 0) {
$r = \bcmod($a, $b, 0);
} else {
$r = \bcmod($a, $b); $r = \bcmod($a, $b);
}
assert($q !== null);
assert($r !== null);
return [$q, $r]; return [$q, $r];
} }
@@ -76,6 +94,9 @@ class BcMathCalculator extends Calculator
/** /**
* {@inheritdoc} * {@inheritdoc}
*
* @psalm-suppress InvalidNullableReturnType
* @psalm-suppress NullableReturnStatement
*/ */
public function modPow(string $base, string $exp, string $mod) : string public function modPow(string $base, string $exp, string $mod) : string
{ {
@@ -84,6 +105,9 @@ class BcMathCalculator extends Calculator
/** /**
* {@inheritDoc} * {@inheritDoc}
*
* @psalm-suppress NullableReturnStatement
* @psalm-suppress InvalidNullableReturnType
*/ */
public function sqrt(string $n) : string public function sqrt(string $n) : string
{ {

View File

@@ -53,6 +53,10 @@ class NativeCalculator extends Calculator
*/ */
public function add(string $a, string $b) : string public function add(string $a, string $b) : string
{ {
/**
* @psalm-var numeric-string $a
* @psalm-var numeric-string $b
*/
$result = $a + $b; $result = $a + $b;
if (is_int($result)) { if (is_int($result)) {
@@ -69,11 +73,7 @@ class NativeCalculator extends Calculator
[$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
if ($aNeg === $bNeg) { $result = $aNeg === $bNeg ? $this->doAdd($aDig, $bDig) : $this->doSub($aDig, $bDig);
$result = $this->doAdd($aDig, $bDig);
} else {
$result = $this->doSub($aDig, $bDig);
}
if ($aNeg) { if ($aNeg) {
$result = $this->neg($result); $result = $this->neg($result);
@@ -95,6 +95,10 @@ class NativeCalculator extends Calculator
*/ */
public function mul(string $a, string $b) : string public function mul(string $a, string $b) : string
{ {
/**
* @psalm-var numeric-string $a
* @psalm-var numeric-string $b
*/
$result = $a * $b; $result = $a * $b;
if (is_int($result)) { if (is_int($result)) {
@@ -169,9 +173,11 @@ class NativeCalculator extends Calculator
return [$this->neg($a), '0']; return [$this->neg($a), '0'];
} }
/** @psalm-var numeric-string $a */
$na = $a * 1; // cast to number $na = $a * 1; // cast to number
if (is_int($na)) { if (is_int($na)) {
/** @psalm-var numeric-string $b */
$nb = $b * 1; $nb = $b * 1;
if (is_int($nb)) { if (is_int($nb)) {
@@ -221,6 +227,8 @@ class NativeCalculator extends Calculator
$e -= $odd; $e -= $odd;
$aa = $this->mul($a, $a); $aa = $this->mul($a, $a);
/** @psalm-suppress PossiblyInvalidArgument We're sure that $e / 2 is an int now */
$result = $this->pow($aa, $e / 2); $result = $this->pow($aa, $e / 2);
if ($odd === 1) { if ($odd === 1) {
@@ -316,10 +324,14 @@ class NativeCalculator extends Calculator
if ($i < 0) { if ($i < 0) {
$blockLength += $i; $blockLength += $i;
/** @psalm-suppress LoopInvalidation */
$i = 0; $i = 0;
} }
/** @psalm-var numeric-string $blockA */
$blockA = \substr($a, $i, $blockLength); $blockA = \substr($a, $i, $blockLength);
/** @psalm-var numeric-string $blockB */
$blockB = \substr($b, $i, $blockLength); $blockB = \substr($b, $i, $blockLength);
$sum = (string) ($blockA + $blockB + $carry); $sum = (string) ($blockA + $blockB + $carry);
@@ -386,10 +398,14 @@ class NativeCalculator extends Calculator
if ($i < 0) { if ($i < 0) {
$blockLength += $i; $blockLength += $i;
/** @psalm-suppress LoopInvalidation */
$i = 0; $i = 0;
} }
/** @psalm-var numeric-string $blockA */
$blockA = \substr($a, $i, $blockLength); $blockA = \substr($a, $i, $blockLength);
/** @psalm-var numeric-string $blockB */
$blockB = \substr($b, $i, $blockLength); $blockB = \substr($b, $i, $blockLength);
$sum = $blockA - $blockB - $carry; $sum = $blockA - $blockB - $carry;
@@ -450,6 +466,7 @@ class NativeCalculator extends Calculator
if ($i < 0) { if ($i < 0) {
$blockALength += $i; $blockALength += $i;
/** @psalm-suppress LoopInvalidation */
$i = 0; $i = 0;
} }
@@ -463,6 +480,7 @@ class NativeCalculator extends Calculator
if ($j < 0) { if ($j < 0) {
$blockBLength += $j; $blockBLength += $j;
/** @psalm-suppress LoopInvalidation */
$j = 0; $j = 0;
} }

View File

@@ -1,37 +0,0 @@
build: false
shallow_clone: false
platform: 'x86'
clone_folder: c:\projects\chronos
branches:
only:
- master
- 1.x
- 2.next
environment:
global:
PHP: "C:/PHP"
init:
- SET PATH=C:\php\;%PATH%
install:
- cd c:\
- curl -fsS https://windows.php.net/downloads/releases/latest/php-7.2-nts-Win32-VC15-x86-latest.zip -o php.zip
- 7z x php.zip -oc:\php
- cd c:\php
- copy php.ini-production php.ini
- echo date.timezone="UTC" >> php.ini
- echo extension_dir=ext >> php.ini
- echo extension=php_openssl.dll >> php.ini
- echo extension=mbstring >> php.ini
- echo extension=intl >> php.ini
- echo extension=fileinfo >> php.ini
- cd C:\projects\chronos
- appveyor DownloadFile https://getcomposer.org/composer.phar
- php composer.phar install --prefer-dist --no-interaction --ansi --no-progress
test_script:
- cd C:\projects\chronos
- vendor\bin\phpunit.bat

View File

@@ -1,2 +0,0 @@
coverage_clover: clover.xml
json_path: coveralls-upload.json

View File

@@ -29,9 +29,8 @@
"php": ">=7.2" "php": ">=7.2"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^8.0", "phpunit/phpunit": "^8.0 || ^9.0",
"cakephp/cakephp-codesniffer": "^4.0", "cakephp/cakephp-codesniffer": "^4.0"
"phpbench/phpbench": "^1.0@dev"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@@ -52,11 +51,13 @@
"@cs-check", "@cs-check",
"@phpstan" "@phpstan"
], ],
"test": "phpunit", "cs-check": "phpcs --colors --parallel=16 -p src/ tests/",
"cs-check": "phpcs", "cs-fix": "phpcbf --colors --parallel=16 -p src/ tests/",
"cs-fix": "phpcbf", "phpstan": "phpstan.phar analyse",
"benchmark": "phpbench run --report=chronos", "stan": [
"phpstan": "phpstan analyze -c phpstan.neon src/", "@phpstan"
"phpstan-setup": "cp composer.json composer.backup && composer require --dev phpstan/phpstan:^0.12 && mv composer.backup composer.json" ],
"stan-setup": "cp composer.json composer.backup && composer require --dev phpstan/phpstan:^0.12.54 && mv composer.backup composer.json",
"test": "phpunit"
} }
} }

View File

@@ -84,11 +84,17 @@ class Chronos extends DateTimeImmutable implements ChronosInterface
* Please see the testing aids section (specifically static::setTestNow()) * Please see the testing aids section (specifically static::setTestNow())
* for more on the possibility of this constructor returning a test instance. * for more on the possibility of this constructor returning a test instance.
* *
* @param \DateTime|\DateTimeImmutable|string|int|null $time Fixed or relative time * @param \DateTimeInterface|string|int|null $time Fixed or relative time
* @param \DateTimeZone|string|null $tz The timezone for the instance * @param \DateTimeZone|string|null $tz The timezone for the instance
*/ */
public function __construct($time = 'now', $tz = null) public function __construct($time = 'now', $tz = null)
{ {
if (is_int($time)) {
parent::__construct('@' . $time);
return;
}
if ($tz !== null) { if ($tz !== null) {
$tz = $tz instanceof DateTimeZone ? $tz : new DateTimeZone($tz); $tz = $tz instanceof DateTimeZone ? $tz : new DateTimeZone($tz);
} }

View File

@@ -86,7 +86,7 @@ class Date extends DateTimeImmutable implements ChronosInterface
* timezone will always be the server local time. Normalizing the timezone allows for * timezone will always be the server local time. Normalizing the timezone allows for
* subtraction/addition to have deterministic results. * subtraction/addition to have deterministic results.
* *
* @param \DateTime|\DateTimeImmutable|string|int|null $time Fixed or relative time * @param \DateTimeInterface|string|int|null $time Fixed or relative time
* @param \DateTimeZone|string|null $tz The timezone in which the date is taken * @param \DateTimeZone|string|null $tz The timezone in which the date is taken
*/ */
public function __construct($time = 'now', $tz = null) public function __construct($time = 'now', $tz = null)

View File

@@ -85,7 +85,7 @@ class MutableDate extends DateTime implements ChronosInterface
* timezone will always be server local timezone. Normalizing the timezone allows for * timezone will always be server local timezone. Normalizing the timezone allows for
* subtraction/addition to have deterministic results. * subtraction/addition to have deterministic results.
* *
* @param \DateTime|\DateTimeImmutable|string|int|null $time Fixed or relative time * @param \DateTimeInterface|string|int|null $time Fixed or relative time
* @param \DateTimeZone|string|null $tz The timezone in which the date is taken * @param \DateTimeZone|string|null $tz The timezone in which the date is taken
*/ */
public function __construct($time = 'now', $tz = null) public function __construct($time = 'now', $tz = null)

View File

@@ -76,11 +76,17 @@ class MutableDateTime extends DateTime implements ChronosInterface
* Please see the testing aids section (specifically static::setTestNow()) * Please see the testing aids section (specifically static::setTestNow())
* for more on the possibility of this constructor returning a test instance. * for more on the possibility of this constructor returning a test instance.
* *
* @param \DateTime|\DateTimeImmutable|string|int|null $time Fixed or relative time * @param \DateTimeInterface|string|int|null $time Fixed or relative time
* @param \DateTimeZone|string|null $tz The timezone for the instance * @param \DateTimeZone|string|null $tz The timezone for the instance
*/ */
public function __construct($time = 'now', $tz = null) public function __construct($time = 'now', $tz = null)
{ {
if (is_int($time)) {
parent::__construct('@' . $time);
return;
}
if ($tz !== null) { if ($tz !== null) {
$tz = $tz instanceof DateTimeZone ? $tz : new DateTimeZone($tz); $tz = $tz instanceof DateTimeZone ? $tz : new DateTimeZone($tz);
} }

View File

@@ -20,6 +20,7 @@ use Cake\Chronos\DifferenceFormatter;
use Cake\Chronos\DifferenceFormatterInterface; use Cake\Chronos\DifferenceFormatterInterface;
use DatePeriod; use DatePeriod;
use DateTimeInterface; use DateTimeInterface;
use DateTimeZone;
/** /**
* Provides methods for getting differences between datetime objects. * Provides methods for getting differences between datetime objects.
@@ -68,6 +69,29 @@ trait DifferenceTrait
return $diff->invert ? -$months : $months; return $diff->invert ? -$months : $months;
} }
/**
* Get the difference in months ignoring the timezone. This means the months are calculated
* in the specified timezone without converting to UTC first. This prevents the day from changing
* which can change the month.
*
* For example, if comparing `2019-06-01 Asia/Tokyo` and `2019-10-01 Asia/Tokyo`,
* the result would be 4 months instead of 3 when using normal `DateTime::diff()`.
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInMonthsIgnoreTimezone(?ChronosInterface $dt = null, bool $abs = true): int
{
$utcTz = new DateTimeZone('UTC');
$source = new static($this->format('Y-m-d H:i:s.u'), $utcTz);
$dt = $dt ?? static::now($this->tz);
$dt = new static($dt->format('Y-m-d H:i:s.u'), $utcTz);
return $source->diffInMonths($dt, $abs);
}
/** /**
* Get the difference in weeks * Get the difference in weeks
* *

View File

@@ -324,7 +324,7 @@ trait FactoryTrait
*/ */
public static function createFromTimestampUTC(int $timestamp): ChronosInterface public static function createFromTimestampUTC(int $timestamp): ChronosInterface
{ {
return new static('@' . $timestamp); return new static($timestamp);
} }
/** /**

View File

@@ -139,6 +139,7 @@ trait FormattingTrait
* Format the instance as RFC822 * Format the instance as RFC822
* *
* @return string * @return string
* @link https://tools.ietf.org/html/rfc822
*/ */
public function toRfc822String(): string public function toRfc822String(): string
{ {
@@ -149,6 +150,7 @@ trait FormattingTrait
* Format the instance as RFC850 * Format the instance as RFC850
* *
* @return string * @return string
* @link https://tools.ietf.org/html/rfc850
*/ */
public function toRfc850String(): string public function toRfc850String(): string
{ {
@@ -159,6 +161,7 @@ trait FormattingTrait
* Format the instance as RFC1036 * Format the instance as RFC1036
* *
* @return string * @return string
* @link https://tools.ietf.org/html/rfc1036
*/ */
public function toRfc1036String(): string public function toRfc1036String(): string
{ {
@@ -169,6 +172,7 @@ trait FormattingTrait
* Format the instance as RFC1123 * Format the instance as RFC1123
* *
* @return string * @return string
* @link https://tools.ietf.org/html/rfc1123
*/ */
public function toRfc1123String(): string public function toRfc1123String(): string
{ {
@@ -179,6 +183,7 @@ trait FormattingTrait
* Format the instance as RFC2822 * Format the instance as RFC2822
* *
* @return string * @return string
* @link https://tools.ietf.org/html/rfc2822
*/ */
public function toRfc2822String(): string public function toRfc2822String(): string
{ {
@@ -189,6 +194,7 @@ trait FormattingTrait
* Format the instance as RFC3339 * Format the instance as RFC3339
* *
* @return string * @return string
* @link https://tools.ietf.org/html/rfc3339
*/ */
public function toRfc3339String(): string public function toRfc3339String(): string
{ {

View File

@@ -42,6 +42,8 @@ namespace Composer\Autoload;
*/ */
class ClassLoader class ClassLoader
{ {
private $vendorDir;
// PSR-4 // PSR-4
private $prefixLengthsPsr4 = array(); private $prefixLengthsPsr4 = array();
private $prefixDirsPsr4 = array(); private $prefixDirsPsr4 = array();
@@ -57,6 +59,13 @@ class ClassLoader
private $missingClasses = array(); private $missingClasses = array();
private $apcuPrefix; private $apcuPrefix;
private static $registeredLoaders = array();
public function __construct($vendorDir = null)
{
$this->vendorDir = $vendorDir;
}
public function getPrefixes() public function getPrefixes()
{ {
if (!empty($this->prefixesPsr0)) { if (!empty($this->prefixesPsr0)) {
@@ -300,6 +309,17 @@ class ClassLoader
public function register($prepend = false) public function register($prepend = false)
{ {
spl_autoload_register(array($this, 'loadClass'), true, $prepend); 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;
}
} }
/** /**
@@ -308,6 +328,10 @@ class ClassLoader
public function unregister() public function unregister()
{ {
spl_autoload_unregister(array($this, 'loadClass')); spl_autoload_unregister(array($this, 'loadClass'));
if (null !== $this->vendorDir) {
unset(self::$registeredLoaders[$this->vendorDir]);
}
} }
/** /**
@@ -367,6 +391,16 @@ class ClassLoader
return $file; return $file;
} }
/**
* Returns the currently registered loaders indexed by their corresponding vendor directories.
*
* @return self[]
*/
public static function getRegisteredLoaders()
{
return self::$registeredLoaders;
}
private function findFileWithExtension($class, $ext) private function findFileWithExtension($class, $ext)
{ {
// PSR-4 lookup // PSR-4 lookup

File diff suppressed because it is too large Load Diff

View File

@@ -20,6 +20,8 @@ return array(
'App\\Console\\Commands\\MiningTaxes\\ExecuteMiningTaxesObserversCommand' => $baseDir . '/app/Console/Commands/MiningTaxes/ExecuteMiningTaxesObserversCommand.php', 'App\\Console\\Commands\\MiningTaxes\\ExecuteMiningTaxesObserversCommand' => $baseDir . '/app/Console/Commands/MiningTaxes/ExecuteMiningTaxesObserversCommand.php',
'App\\Console\\Commands\\MiningTaxes\\ExecuteProcesssMiningTaxesPaymentsCommand' => $baseDir . '/app/Console/Commands/MiningTaxes/ExecuteProcesssMiningTaxesPaymentsCommand.php', 'App\\Console\\Commands\\MiningTaxes\\ExecuteProcesssMiningTaxesPaymentsCommand' => $baseDir . '/app/Console/Commands/MiningTaxes/ExecuteProcesssMiningTaxesPaymentsCommand.php',
'App\\Console\\Commands\\MiningTaxes\\ExecuteSendMiningTaxesInvoiceCommand' => $baseDir . '/app/Console/Commands/MiningTaxes/ExecuteSendMiningTaxesInvoiceCommand.php', 'App\\Console\\Commands\\MiningTaxes\\ExecuteSendMiningTaxesInvoiceCommand' => $baseDir . '/app/Console/Commands/MiningTaxes/ExecuteSendMiningTaxesInvoiceCommand.php',
'App\\Console\\Commands\\Structures\\ExecuteFetchAllianceAssetsCommand' => $baseDir . '/app/Console/Commands/Structures/ExecuteFetchAllianceAssetsCommand.php',
'App\\Console\\Commands\\Structures\\ExecuteFetchAllianceStructuresCommand' => $baseDir . '/app/Console/Commands/Structures/ExecuteFetchAllianceStructuresCommand.php',
'App\\Console\\Commands\\SupplyChain\\EndSupplyChainContractCommand' => $baseDir . '/app/Console/Commands/SupplyChain/EndSupplyChainContractCommand.php', 'App\\Console\\Commands\\SupplyChain\\EndSupplyChainContractCommand' => $baseDir . '/app/Console/Commands/SupplyChain/EndSupplyChainContractCommand.php',
'App\\Console\\Kernel' => $baseDir . '/app/Console/Kernel.php', 'App\\Console\\Kernel' => $baseDir . '/app/Console/Kernel.php',
'App\\Exceptions\\Handler' => $baseDir . '/app/Exceptions/Handler.php', 'App\\Exceptions\\Handler' => $baseDir . '/app/Exceptions/Handler.php',
@@ -51,6 +53,9 @@ return array(
'App\\Http\\Middleware\\TrustProxies' => $baseDir . '/app/Http/Middleware/TrustProxies.php', 'App\\Http\\Middleware\\TrustProxies' => $baseDir . '/app/Http/Middleware/TrustProxies.php',
'App\\Http\\Middleware\\VerifyCsrfToken' => $baseDir . '/app/Http/Middleware/VerifyCsrfToken.php', 'App\\Http\\Middleware\\VerifyCsrfToken' => $baseDir . '/app/Http/Middleware/VerifyCsrfToken.php',
'App\\Http\\Requests\\Request' => $baseDir . '/app/Http/Requests/Request.php', 'App\\Http\\Requests\\Request' => $baseDir . '/app/Http/Requests/Request.php',
'App\\Jobs\\Commands\\Assets\\FetchAllianceAssets' => $baseDir . '/app/Jobs/Commands/Assets/FetchAllianceAssets.php',
'App\\Jobs\\Commands\\Assets\\ProcessAllianceAssets' => $baseDir . '/app/Jobs/Commands/Assets/ProcessAllianceAssets.php',
'App\\Jobs\\Commands\\Assets\\PurgeAllianceAssets' => $baseDir . '/app/Jobs/Commands/Assets/PurgeAllianceAssets.php',
'App\\Jobs\\Commands\\Data\\PurgeUsers' => $baseDir . '/app/Jobs/Commands/Data/PurgeUsers.php', 'App\\Jobs\\Commands\\Data\\PurgeUsers' => $baseDir . '/app/Jobs/Commands/Data/PurgeUsers.php',
'App\\Jobs\\Commands\\Eve\\ItemPricesUpdate' => $baseDir . '/app/Jobs/Commands/Eve/ItemPricesUpdate.php', 'App\\Jobs\\Commands\\Eve\\ItemPricesUpdate' => $baseDir . '/app/Jobs/Commands/Eve/ItemPricesUpdate.php',
'App\\Jobs\\Commands\\Eve\\SendEveMail' => $baseDir . '/app/Jobs/Commands/Eve/SendEveMail.php', 'App\\Jobs\\Commands\\Eve\\SendEveMail' => $baseDir . '/app/Jobs/Commands/Eve/SendEveMail.php',
@@ -67,6 +72,9 @@ return array(
'App\\Jobs\\Commands\\MiningTaxes\\SendMiningTaxesInvoicesOld' => $baseDir . '/app/Jobs/Commands/MiningTaxes/SendMiningTaxesInvoicesOld.php', 'App\\Jobs\\Commands\\MiningTaxes\\SendMiningTaxesInvoicesOld' => $baseDir . '/app/Jobs/Commands/MiningTaxes/SendMiningTaxesInvoicesOld.php',
'App\\Jobs\\Commands\\MiningTaxes\\UpdateMiningTaxesLateInvoices15th' => $baseDir . '/app/Jobs/Commands/MiningTaxes/UpdateMiningTaxesLateInvoices15th.php', 'App\\Jobs\\Commands\\MiningTaxes\\UpdateMiningTaxesLateInvoices15th' => $baseDir . '/app/Jobs/Commands/MiningTaxes/UpdateMiningTaxesLateInvoices15th.php',
'App\\Jobs\\Commands\\MiningTaxes\\UpdateMiningTaxesLateInvoices1st' => $baseDir . '/app/Jobs/Commands/MiningTaxes/UpdateMiningTaxesLateInvoices1st.php', 'App\\Jobs\\Commands\\MiningTaxes\\UpdateMiningTaxesLateInvoices1st' => $baseDir . '/app/Jobs/Commands/MiningTaxes/UpdateMiningTaxesLateInvoices1st.php',
'App\\Jobs\\Commands\\Structures\\FetchAllianceStructures' => $baseDir . '/app/Jobs/Commands/Structures/FetchAllianceStructures.php',
'App\\Jobs\\Commands\\Structures\\ProcessAllianceStructures' => $baseDir . '/app/Jobs/Commands/Structures/ProcessAllianceStructures.php',
'App\\Jobs\\Commands\\Structures\\PurgeAllianceStructures' => $baseDir . '/app/Jobs/Commands/Structures/PurgeAllianceStructures.php',
'App\\Jobs\\Commands\\SupplyChain\\EndSupplyChainContractJob' => $baseDir . '/app/Jobs/Commands/SupplyChain/EndSupplyChainContractJob.php', 'App\\Jobs\\Commands\\SupplyChain\\EndSupplyChainContractJob' => $baseDir . '/app/Jobs/Commands/SupplyChain/EndSupplyChainContractJob.php',
'App\\Library\\Esi\\Esi' => $baseDir . '/app/Library/Esi/Esi.php', 'App\\Library\\Esi\\Esi' => $baseDir . '/app/Library/Esi/Esi.php',
'App\\Library\\Helpers\\AssetHelper' => $baseDir . '/app/Library/Helpers/AssetHelper.php', 'App\\Library\\Helpers\\AssetHelper' => $baseDir . '/app/Library/Helpers/AssetHelper.php',
@@ -106,6 +114,9 @@ return array(
'App\\Models\\SRP\\SrpPayout' => $baseDir . '/app/Models/SRP/SrpPayout.php', 'App\\Models\\SRP\\SrpPayout' => $baseDir . '/app/Models/SRP/SrpPayout.php',
'App\\Models\\SRP\\SrpShipType' => $baseDir . '/app/Models/SRP/SrpShipType.php', 'App\\Models\\SRP\\SrpShipType' => $baseDir . '/app/Models/SRP/SrpShipType.php',
'App\\Models\\ScheduledTask\\ScheduleJob' => $baseDir . '/app/Models/ScheduledTask/ScheduleJob.php', 'App\\Models\\ScheduledTask\\ScheduleJob' => $baseDir . '/app/Models/ScheduledTask/ScheduleJob.php',
'App\\Models\\Structure\\Asset' => $baseDir . '/app/Models/Structure/Asset.php',
'App\\Models\\Structure\\Service' => $baseDir . '/app/Models/Structure/Service.php',
'App\\Models\\Structure\\Structure' => $baseDir . '/app/Models/Structure/Structure.php',
'App\\Models\\User\\AvailableUserPermission' => $baseDir . '/app/Models/User/AvailableUserPermission.php', 'App\\Models\\User\\AvailableUserPermission' => $baseDir . '/app/Models/User/AvailableUserPermission.php',
'App\\Models\\User\\AvailableUserRole' => $baseDir . '/app/Models/User/AvailableUserRole.php', 'App\\Models\\User\\AvailableUserRole' => $baseDir . '/app/Models/User/AvailableUserRole.php',
'App\\Models\\User\\User' => $baseDir . '/app/Models/User/User.php', 'App\\Models\\User\\User' => $baseDir . '/app/Models/User/User.php',
@@ -364,6 +375,7 @@ return array(
'Dotenv\\Store\\File\\Reader' => $vendorDir . '/vlucas/phpdotenv/src/Store/File/Reader.php', 'Dotenv\\Store\\File\\Reader' => $vendorDir . '/vlucas/phpdotenv/src/Store/File/Reader.php',
'Dotenv\\Store\\StoreBuilder' => $vendorDir . '/vlucas/phpdotenv/src/Store/StoreBuilder.php', 'Dotenv\\Store\\StoreBuilder' => $vendorDir . '/vlucas/phpdotenv/src/Store/StoreBuilder.php',
'Dotenv\\Store\\StoreInterface' => $vendorDir . '/vlucas/phpdotenv/src/Store/StoreInterface.php', 'Dotenv\\Store\\StoreInterface' => $vendorDir . '/vlucas/phpdotenv/src/Store/StoreInterface.php',
'Dotenv\\Store\\StringStore' => $vendorDir . '/vlucas/phpdotenv/src/Store/StringStore.php',
'Dotenv\\Validator' => $vendorDir . '/vlucas/phpdotenv/src/Validator.php', 'Dotenv\\Validator' => $vendorDir . '/vlucas/phpdotenv/src/Validator.php',
'Egulias\\EmailValidator\\EmailLexer' => $vendorDir . '/egulias/email-validator/src/EmailLexer.php', 'Egulias\\EmailValidator\\EmailLexer' => $vendorDir . '/egulias/email-validator/src/EmailLexer.php',
'Egulias\\EmailValidator\\EmailParser' => $vendorDir . '/egulias/email-validator/src/EmailParser.php', 'Egulias\\EmailValidator\\EmailParser' => $vendorDir . '/egulias/email-validator/src/EmailParser.php',
@@ -1987,19 +1999,6 @@ return array(
'Jose\\Component\\Checker\\MissingMandatoryClaimException' => $vendorDir . '/web-token/jwt-checker/MissingMandatoryClaimException.php', 'Jose\\Component\\Checker\\MissingMandatoryClaimException' => $vendorDir . '/web-token/jwt-checker/MissingMandatoryClaimException.php',
'Jose\\Component\\Checker\\MissingMandatoryHeaderParameterException' => $vendorDir . '/web-token/jwt-checker/MissingMandatoryHeaderParameterException.php', 'Jose\\Component\\Checker\\MissingMandatoryHeaderParameterException' => $vendorDir . '/web-token/jwt-checker/MissingMandatoryHeaderParameterException.php',
'Jose\\Component\\Checker\\NotBeforeChecker' => $vendorDir . '/web-token/jwt-checker/NotBeforeChecker.php', 'Jose\\Component\\Checker\\NotBeforeChecker' => $vendorDir . '/web-token/jwt-checker/NotBeforeChecker.php',
'Jose\\Component\\Checker\\Tests\\AlgorithmHeaderCheckerTest' => $vendorDir . '/web-token/jwt-checker/Tests/AlgorithmHeaderCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\AudienceClaimCheckerTest' => $vendorDir . '/web-token/jwt-checker/Tests/AudienceClaimCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\AudienceHeaderCheckerTest' => $vendorDir . '/web-token/jwt-checker/Tests/AudienceHeaderCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\ClaimCheckerManagerFactoryTest' => $vendorDir . '/web-token/jwt-checker/Tests/ClaimCheckerManagerFactoryTest.php',
'Jose\\Component\\Checker\\Tests\\ClaimCheckerManagerTest' => $vendorDir . '/web-token/jwt-checker/Tests/ClaimCheckerManagerTest.php',
'Jose\\Component\\Checker\\Tests\\ExpirationTimeClaimCheckerTest' => $vendorDir . '/web-token/jwt-checker/Tests/ExpirationTimeClaimCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\HeaderCheckerManagerFactoryTest' => $vendorDir . '/web-token/jwt-checker/Tests/HeaderCheckerManagerFactoryTest.php',
'Jose\\Component\\Checker\\Tests\\IssuedAtClaimCheckerTest' => $vendorDir . '/web-token/jwt-checker/Tests/IssuedAtClaimCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\NotBeforeClaimCheckerTest' => $vendorDir . '/web-token/jwt-checker/Tests/NotBeforeClaimCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\Stub\\OtherToken' => $vendorDir . '/web-token/jwt-checker/Tests/Stub/OtherToken.php',
'Jose\\Component\\Checker\\Tests\\Stub\\Token' => $vendorDir . '/web-token/jwt-checker/Tests/Stub/Token.php',
'Jose\\Component\\Checker\\Tests\\Stub\\TokenSupport' => $vendorDir . '/web-token/jwt-checker/Tests/Stub/TokenSupport.php',
'Jose\\Component\\Checker\\Tests\\UnencodedPayloadHeaderCheckerTest' => $vendorDir . '/web-token/jwt-checker/Tests/UnencodedPayloadHeaderCheckerTest.php',
'Jose\\Component\\Checker\\TokenTypeSupport' => $vendorDir . '/web-token/jwt-checker/TokenTypeSupport.php', 'Jose\\Component\\Checker\\TokenTypeSupport' => $vendorDir . '/web-token/jwt-checker/TokenTypeSupport.php',
'Jose\\Component\\Checker\\UnencodedPayloadChecker' => $vendorDir . '/web-token/jwt-checker/UnencodedPayloadChecker.php', 'Jose\\Component\\Checker\\UnencodedPayloadChecker' => $vendorDir . '/web-token/jwt-checker/UnencodedPayloadChecker.php',
'Jose\\Component\\Core\\Algorithm' => $vendorDir . '/web-token/jwt-core/Algorithm.php', 'Jose\\Component\\Core\\Algorithm' => $vendorDir . '/web-token/jwt-core/Algorithm.php',
@@ -2008,11 +2007,6 @@ return array(
'Jose\\Component\\Core\\JWK' => $vendorDir . '/web-token/jwt-core/JWK.php', 'Jose\\Component\\Core\\JWK' => $vendorDir . '/web-token/jwt-core/JWK.php',
'Jose\\Component\\Core\\JWKSet' => $vendorDir . '/web-token/jwt-core/JWKSet.php', 'Jose\\Component\\Core\\JWKSet' => $vendorDir . '/web-token/jwt-core/JWKSet.php',
'Jose\\Component\\Core\\JWT' => $vendorDir . '/web-token/jwt-core/JWT.php', 'Jose\\Component\\Core\\JWT' => $vendorDir . '/web-token/jwt-core/JWT.php',
'Jose\\Component\\Core\\Tests\\AlgorithmManagerFactoryTest' => $vendorDir . '/web-token/jwt-core/Tests/AlgorithmManagerFactoryTest.php',
'Jose\\Component\\Core\\Tests\\FooAlgorithm' => $vendorDir . '/web-token/jwt-core/Tests/FooAlgorithm.php',
'Jose\\Component\\Core\\Tests\\JWKSetTest' => $vendorDir . '/web-token/jwt-core/Tests/JWKSetTest.php',
'Jose\\Component\\Core\\Tests\\JWKTest' => $vendorDir . '/web-token/jwt-core/Tests/JWKTest.php',
'Jose\\Component\\Core\\Tests\\JsonConverterTest' => $vendorDir . '/web-token/jwt-core/Tests/JsonConverterTest.php',
'Jose\\Component\\Core\\Util\\BigInteger' => $vendorDir . '/web-token/jwt-core/Util/BigInteger.php', 'Jose\\Component\\Core\\Util\\BigInteger' => $vendorDir . '/web-token/jwt-core/Util/BigInteger.php',
'Jose\\Component\\Core\\Util\\ECKey' => $vendorDir . '/web-token/jwt-core/Util/ECKey.php', 'Jose\\Component\\Core\\Util\\ECKey' => $vendorDir . '/web-token/jwt-core/Util/ECKey.php',
'Jose\\Component\\Core\\Util\\ECSignature' => $vendorDir . '/web-token/jwt-core/Util/ECSignature.php', 'Jose\\Component\\Core\\Util\\ECSignature' => $vendorDir . '/web-token/jwt-core/Util/ECSignature.php',
@@ -2046,30 +2040,6 @@ return array(
'Jose\\Component\\Encryption\\Serializer\\JWESerializer' => $vendorDir . '/web-token/jwt-encryption/Serializer/JWESerializer.php', 'Jose\\Component\\Encryption\\Serializer\\JWESerializer' => $vendorDir . '/web-token/jwt-encryption/Serializer/JWESerializer.php',
'Jose\\Component\\Encryption\\Serializer\\JWESerializerManager' => $vendorDir . '/web-token/jwt-encryption/Serializer/JWESerializerManager.php', 'Jose\\Component\\Encryption\\Serializer\\JWESerializerManager' => $vendorDir . '/web-token/jwt-encryption/Serializer/JWESerializerManager.php',
'Jose\\Component\\Encryption\\Serializer\\JWESerializerManagerFactory' => $vendorDir . '/web-token/jwt-encryption/Serializer/JWESerializerManagerFactory.php', 'Jose\\Component\\Encryption\\Serializer\\JWESerializerManagerFactory' => $vendorDir . '/web-token/jwt-encryption/Serializer/JWESerializerManagerFactory.php',
'Jose\\Component\\Encryption\\Tests\\CompressionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/CompressionTest.php',
'Jose\\Component\\Encryption\\Tests\\ECDHESWithX25519EncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/ECDHESWithX25519EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\EncrypterTest' => $vendorDir . '/web-token/jwt-encryption/Tests/EncrypterTest.php',
'Jose\\Component\\Encryption\\Tests\\EncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\InvalidCurveAttackTest' => $vendorDir . '/web-token/jwt-encryption/Tests/InvalidCurveAttackTest.php',
'Jose\\Component\\Encryption\\Tests\\JWEFlattenedTest' => $vendorDir . '/web-token/jwt-encryption/Tests/JWEFlattenedTest.php',
'Jose\\Component\\Encryption\\Tests\\JWELoaderTest' => $vendorDir . '/web-token/jwt-encryption/Tests/JWELoaderTest.php',
'Jose\\Component\\Encryption\\Tests\\JWESplitTest' => $vendorDir . '/web-token/jwt-encryption/Tests/JWESplitTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionProtectedContentOnlyTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionWithCompressionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A256GCMKWAndA128CBC_HS256EncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\DirAndA128GCMEncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/DirAndA128GCMEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\ECDH_ES_A128KWAndA128GCMEncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\ECDH_ES_AndA128CBC_HS256EncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\MultipleRecipientEncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/MultipleRecipientEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\RSA1_5AndA128CBC_HS256EncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\RSA_OAEPAndA256GCMEncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RFC7520/RSA_OAEPAndA256GCMEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RSAEncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RSAEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RSAKeyEncryptionTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RSAKeyEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RSAKeyWithoutAllPrimesTest' => $vendorDir . '/web-token/jwt-encryption/Tests/RSAKeyWithoutAllPrimesTest.php',
'Jose\\Component\\Signature\\Algorithm\\ECDSA' => $vendorDir . '/web-token/jwt-signature-algorithm-ecdsa/ECDSA.php', 'Jose\\Component\\Signature\\Algorithm\\ECDSA' => $vendorDir . '/web-token/jwt-signature-algorithm-ecdsa/ECDSA.php',
'Jose\\Component\\Signature\\Algorithm\\ES256' => $vendorDir . '/web-token/jwt-signature-algorithm-ecdsa/ES256.php', 'Jose\\Component\\Signature\\Algorithm\\ES256' => $vendorDir . '/web-token/jwt-signature-algorithm-ecdsa/ES256.php',
'Jose\\Component\\Signature\\Algorithm\\ES384' => $vendorDir . '/web-token/jwt-signature-algorithm-ecdsa/ES384.php', 'Jose\\Component\\Signature\\Algorithm\\ES384' => $vendorDir . '/web-token/jwt-signature-algorithm-ecdsa/ES384.php',
@@ -2106,15 +2076,6 @@ return array(
'Jose\\Component\\Signature\\Serializer\\JWSSerializerManagerFactory' => $vendorDir . '/web-token/jwt-signature/Serializer/JWSSerializerManagerFactory.php', 'Jose\\Component\\Signature\\Serializer\\JWSSerializerManagerFactory' => $vendorDir . '/web-token/jwt-signature/Serializer/JWSSerializerManagerFactory.php',
'Jose\\Component\\Signature\\Serializer\\Serializer' => $vendorDir . '/web-token/jwt-signature/Serializer/Serializer.php', 'Jose\\Component\\Signature\\Serializer\\Serializer' => $vendorDir . '/web-token/jwt-signature/Serializer/Serializer.php',
'Jose\\Component\\Signature\\Signature' => $vendorDir . '/web-token/jwt-signature/Signature.php', 'Jose\\Component\\Signature\\Signature' => $vendorDir . '/web-token/jwt-signature/Signature.php',
'Jose\\Component\\Signature\\Tests\\ForeignJWTTest' => $vendorDir . '/web-token/jwt-signature/Tests/ForeignJWTTest.php',
'Jose\\Component\\Signature\\Tests\\JWSFlattenedTest' => $vendorDir . '/web-token/jwt-signature/Tests/JWSFlattenedTest.php',
'Jose\\Component\\Signature\\Tests\\JWSLoaderTest' => $vendorDir . '/web-token/jwt-signature/Tests/JWSLoaderTest.php',
'Jose\\Component\\Signature\\Tests\\JWSSplitTest' => $vendorDir . '/web-token/jwt-signature/Tests/JWSSplitTest.php',
'Jose\\Component\\Signature\\Tests\\JWSTest' => $vendorDir . '/web-token/jwt-signature/Tests/JWSTest.php',
'Jose\\Component\\Signature\\Tests\\RFC7520\\MultipleSignaturesTest' => $vendorDir . '/web-token/jwt-signature/Tests/RFC7520/MultipleSignaturesTest.php',
'Jose\\Component\\Signature\\Tests\\RFC7520\\NestingTest' => $vendorDir . '/web-token/jwt-signature/Tests/RFC7520/NestingTest.php',
'Jose\\Component\\Signature\\Tests\\SignatureTest' => $vendorDir . '/web-token/jwt-signature/Tests/SignatureTest.php',
'Jose\\Component\\Signature\\Tests\\SignerTest' => $vendorDir . '/web-token/jwt-signature/Tests/SignerTest.php',
'Jose\\Easy\\AbstractBuilder' => $vendorDir . '/web-token/jwt-easy/AbstractBuilder.php', 'Jose\\Easy\\AbstractBuilder' => $vendorDir . '/web-token/jwt-easy/AbstractBuilder.php',
'Jose\\Easy\\AbstractLoader' => $vendorDir . '/web-token/jwt-easy/AbstractLoader.php', 'Jose\\Easy\\AbstractLoader' => $vendorDir . '/web-token/jwt-easy/AbstractLoader.php',
'Jose\\Easy\\AlgorithmProvider' => $vendorDir . '/web-token/jwt-easy/AlgorithmProvider.php', 'Jose\\Easy\\AlgorithmProvider' => $vendorDir . '/web-token/jwt-easy/AlgorithmProvider.php',
@@ -2607,6 +2568,7 @@ return array(
'League\\CommonMark\\Inline\\Renderer\\TextRenderer' => $vendorDir . '/league/commonmark/src/Inline/Renderer/TextRenderer.php', 'League\\CommonMark\\Inline\\Renderer\\TextRenderer' => $vendorDir . '/league/commonmark/src/Inline/Renderer/TextRenderer.php',
'League\\CommonMark\\Input\\MarkdownInput' => $vendorDir . '/league/commonmark/src/Input/MarkdownInput.php', 'League\\CommonMark\\Input\\MarkdownInput' => $vendorDir . '/league/commonmark/src/Input/MarkdownInput.php',
'League\\CommonMark\\Input\\MarkdownInputInterface' => $vendorDir . '/league/commonmark/src/Input/MarkdownInputInterface.php', 'League\\CommonMark\\Input\\MarkdownInputInterface' => $vendorDir . '/league/commonmark/src/Input/MarkdownInputInterface.php',
'League\\CommonMark\\MarkdownConverter' => $vendorDir . '/league/commonmark/src/MarkdownConverter.php',
'League\\CommonMark\\MarkdownConverterInterface' => $vendorDir . '/league/commonmark/src/MarkdownConverterInterface.php', 'League\\CommonMark\\MarkdownConverterInterface' => $vendorDir . '/league/commonmark/src/MarkdownConverterInterface.php',
'League\\CommonMark\\Node\\Node' => $vendorDir . '/league/commonmark/src/Node/Node.php', 'League\\CommonMark\\Node\\Node' => $vendorDir . '/league/commonmark/src/Node/Node.php',
'League\\CommonMark\\Node\\NodeWalker' => $vendorDir . '/league/commonmark/src/Node/NodeWalker.php', 'League\\CommonMark\\Node\\NodeWalker' => $vendorDir . '/league/commonmark/src/Node/NodeWalker.php',
@@ -3411,6 +3373,7 @@ return array(
'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.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\\InvalidPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php',
'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidVersionException.php', 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidVersionException.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\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php',
'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php', 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php',
'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php',
@@ -4327,6 +4290,7 @@ return array(
'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.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\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.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\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.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\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
@@ -4901,6 +4865,7 @@ return array(
'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
'Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php', 'Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php',
'Webmozart\\Assert\\InvalidArgumentException' => $vendorDir . '/webmozart/assert/src/InvalidArgumentException.php',
'Webmozart\\Assert\\Mixin' => $vendorDir . '/webmozart/assert/src/Mixin.php', 'Webmozart\\Assert\\Mixin' => $vendorDir . '/webmozart/assert/src/Mixin.php',
'Whoops\\Exception\\ErrorException' => $vendorDir . '/filp/whoops/src/Whoops/Exception/ErrorException.php', 'Whoops\\Exception\\ErrorException' => $vendorDir . '/filp/whoops/src/Whoops/Exception/ErrorException.php',
'Whoops\\Exception\\Formatter' => $vendorDir . '/filp/whoops/src/Whoops/Exception/Formatter.php', 'Whoops\\Exception\\Formatter' => $vendorDir . '/filp/whoops/src/Whoops/Exception/Formatter.php',

View File

@@ -25,7 +25,7 @@ class ComposerAutoloaderInitc3f953f8a7291d41a76e1664339777c9
require __DIR__ . '/platform_check.php'; require __DIR__ . '/platform_check.php';
spl_autoload_register(array('ComposerAutoloaderInitc3f953f8a7291d41a76e1664339777c9', 'loadClassLoader'), true, true); spl_autoload_register(array('ComposerAutoloaderInitc3f953f8a7291d41a76e1664339777c9', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInitc3f953f8a7291d41a76e1664339777c9', 'loadClassLoader')); spl_autoload_unregister(array('ComposerAutoloaderInitc3f953f8a7291d41a76e1664339777c9', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());

View File

@@ -570,6 +570,8 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'App\\Console\\Commands\\MiningTaxes\\ExecuteMiningTaxesObserversCommand' => __DIR__ . '/../..' . '/app/Console/Commands/MiningTaxes/ExecuteMiningTaxesObserversCommand.php', 'App\\Console\\Commands\\MiningTaxes\\ExecuteMiningTaxesObserversCommand' => __DIR__ . '/../..' . '/app/Console/Commands/MiningTaxes/ExecuteMiningTaxesObserversCommand.php',
'App\\Console\\Commands\\MiningTaxes\\ExecuteProcesssMiningTaxesPaymentsCommand' => __DIR__ . '/../..' . '/app/Console/Commands/MiningTaxes/ExecuteProcesssMiningTaxesPaymentsCommand.php', 'App\\Console\\Commands\\MiningTaxes\\ExecuteProcesssMiningTaxesPaymentsCommand' => __DIR__ . '/../..' . '/app/Console/Commands/MiningTaxes/ExecuteProcesssMiningTaxesPaymentsCommand.php',
'App\\Console\\Commands\\MiningTaxes\\ExecuteSendMiningTaxesInvoiceCommand' => __DIR__ . '/../..' . '/app/Console/Commands/MiningTaxes/ExecuteSendMiningTaxesInvoiceCommand.php', 'App\\Console\\Commands\\MiningTaxes\\ExecuteSendMiningTaxesInvoiceCommand' => __DIR__ . '/../..' . '/app/Console/Commands/MiningTaxes/ExecuteSendMiningTaxesInvoiceCommand.php',
'App\\Console\\Commands\\Structures\\ExecuteFetchAllianceAssetsCommand' => __DIR__ . '/../..' . '/app/Console/Commands/Structures/ExecuteFetchAllianceAssetsCommand.php',
'App\\Console\\Commands\\Structures\\ExecuteFetchAllianceStructuresCommand' => __DIR__ . '/../..' . '/app/Console/Commands/Structures/ExecuteFetchAllianceStructuresCommand.php',
'App\\Console\\Commands\\SupplyChain\\EndSupplyChainContractCommand' => __DIR__ . '/../..' . '/app/Console/Commands/SupplyChain/EndSupplyChainContractCommand.php', 'App\\Console\\Commands\\SupplyChain\\EndSupplyChainContractCommand' => __DIR__ . '/../..' . '/app/Console/Commands/SupplyChain/EndSupplyChainContractCommand.php',
'App\\Console\\Kernel' => __DIR__ . '/../..' . '/app/Console/Kernel.php', 'App\\Console\\Kernel' => __DIR__ . '/../..' . '/app/Console/Kernel.php',
'App\\Exceptions\\Handler' => __DIR__ . '/../..' . '/app/Exceptions/Handler.php', 'App\\Exceptions\\Handler' => __DIR__ . '/../..' . '/app/Exceptions/Handler.php',
@@ -601,6 +603,9 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'App\\Http\\Middleware\\TrustProxies' => __DIR__ . '/../..' . '/app/Http/Middleware/TrustProxies.php', 'App\\Http\\Middleware\\TrustProxies' => __DIR__ . '/../..' . '/app/Http/Middleware/TrustProxies.php',
'App\\Http\\Middleware\\VerifyCsrfToken' => __DIR__ . '/../..' . '/app/Http/Middleware/VerifyCsrfToken.php', 'App\\Http\\Middleware\\VerifyCsrfToken' => __DIR__ . '/../..' . '/app/Http/Middleware/VerifyCsrfToken.php',
'App\\Http\\Requests\\Request' => __DIR__ . '/../..' . '/app/Http/Requests/Request.php', 'App\\Http\\Requests\\Request' => __DIR__ . '/../..' . '/app/Http/Requests/Request.php',
'App\\Jobs\\Commands\\Assets\\FetchAllianceAssets' => __DIR__ . '/../..' . '/app/Jobs/Commands/Assets/FetchAllianceAssets.php',
'App\\Jobs\\Commands\\Assets\\ProcessAllianceAssets' => __DIR__ . '/../..' . '/app/Jobs/Commands/Assets/ProcessAllianceAssets.php',
'App\\Jobs\\Commands\\Assets\\PurgeAllianceAssets' => __DIR__ . '/../..' . '/app/Jobs/Commands/Assets/PurgeAllianceAssets.php',
'App\\Jobs\\Commands\\Data\\PurgeUsers' => __DIR__ . '/../..' . '/app/Jobs/Commands/Data/PurgeUsers.php', 'App\\Jobs\\Commands\\Data\\PurgeUsers' => __DIR__ . '/../..' . '/app/Jobs/Commands/Data/PurgeUsers.php',
'App\\Jobs\\Commands\\Eve\\ItemPricesUpdate' => __DIR__ . '/../..' . '/app/Jobs/Commands/Eve/ItemPricesUpdate.php', 'App\\Jobs\\Commands\\Eve\\ItemPricesUpdate' => __DIR__ . '/../..' . '/app/Jobs/Commands/Eve/ItemPricesUpdate.php',
'App\\Jobs\\Commands\\Eve\\SendEveMail' => __DIR__ . '/../..' . '/app/Jobs/Commands/Eve/SendEveMail.php', 'App\\Jobs\\Commands\\Eve\\SendEveMail' => __DIR__ . '/../..' . '/app/Jobs/Commands/Eve/SendEveMail.php',
@@ -617,6 +622,9 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'App\\Jobs\\Commands\\MiningTaxes\\SendMiningTaxesInvoicesOld' => __DIR__ . '/../..' . '/app/Jobs/Commands/MiningTaxes/SendMiningTaxesInvoicesOld.php', 'App\\Jobs\\Commands\\MiningTaxes\\SendMiningTaxesInvoicesOld' => __DIR__ . '/../..' . '/app/Jobs/Commands/MiningTaxes/SendMiningTaxesInvoicesOld.php',
'App\\Jobs\\Commands\\MiningTaxes\\UpdateMiningTaxesLateInvoices15th' => __DIR__ . '/../..' . '/app/Jobs/Commands/MiningTaxes/UpdateMiningTaxesLateInvoices15th.php', 'App\\Jobs\\Commands\\MiningTaxes\\UpdateMiningTaxesLateInvoices15th' => __DIR__ . '/../..' . '/app/Jobs/Commands/MiningTaxes/UpdateMiningTaxesLateInvoices15th.php',
'App\\Jobs\\Commands\\MiningTaxes\\UpdateMiningTaxesLateInvoices1st' => __DIR__ . '/../..' . '/app/Jobs/Commands/MiningTaxes/UpdateMiningTaxesLateInvoices1st.php', 'App\\Jobs\\Commands\\MiningTaxes\\UpdateMiningTaxesLateInvoices1st' => __DIR__ . '/../..' . '/app/Jobs/Commands/MiningTaxes/UpdateMiningTaxesLateInvoices1st.php',
'App\\Jobs\\Commands\\Structures\\FetchAllianceStructures' => __DIR__ . '/../..' . '/app/Jobs/Commands/Structures/FetchAllianceStructures.php',
'App\\Jobs\\Commands\\Structures\\ProcessAllianceStructures' => __DIR__ . '/../..' . '/app/Jobs/Commands/Structures/ProcessAllianceStructures.php',
'App\\Jobs\\Commands\\Structures\\PurgeAllianceStructures' => __DIR__ . '/../..' . '/app/Jobs/Commands/Structures/PurgeAllianceStructures.php',
'App\\Jobs\\Commands\\SupplyChain\\EndSupplyChainContractJob' => __DIR__ . '/../..' . '/app/Jobs/Commands/SupplyChain/EndSupplyChainContractJob.php', 'App\\Jobs\\Commands\\SupplyChain\\EndSupplyChainContractJob' => __DIR__ . '/../..' . '/app/Jobs/Commands/SupplyChain/EndSupplyChainContractJob.php',
'App\\Library\\Esi\\Esi' => __DIR__ . '/../..' . '/app/Library/Esi/Esi.php', 'App\\Library\\Esi\\Esi' => __DIR__ . '/../..' . '/app/Library/Esi/Esi.php',
'App\\Library\\Helpers\\AssetHelper' => __DIR__ . '/../..' . '/app/Library/Helpers/AssetHelper.php', 'App\\Library\\Helpers\\AssetHelper' => __DIR__ . '/../..' . '/app/Library/Helpers/AssetHelper.php',
@@ -656,6 +664,9 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'App\\Models\\SRP\\SrpPayout' => __DIR__ . '/../..' . '/app/Models/SRP/SrpPayout.php', 'App\\Models\\SRP\\SrpPayout' => __DIR__ . '/../..' . '/app/Models/SRP/SrpPayout.php',
'App\\Models\\SRP\\SrpShipType' => __DIR__ . '/../..' . '/app/Models/SRP/SrpShipType.php', 'App\\Models\\SRP\\SrpShipType' => __DIR__ . '/../..' . '/app/Models/SRP/SrpShipType.php',
'App\\Models\\ScheduledTask\\ScheduleJob' => __DIR__ . '/../..' . '/app/Models/ScheduledTask/ScheduleJob.php', 'App\\Models\\ScheduledTask\\ScheduleJob' => __DIR__ . '/../..' . '/app/Models/ScheduledTask/ScheduleJob.php',
'App\\Models\\Structure\\Asset' => __DIR__ . '/../..' . '/app/Models/Structure/Asset.php',
'App\\Models\\Structure\\Service' => __DIR__ . '/../..' . '/app/Models/Structure/Service.php',
'App\\Models\\Structure\\Structure' => __DIR__ . '/../..' . '/app/Models/Structure/Structure.php',
'App\\Models\\User\\AvailableUserPermission' => __DIR__ . '/../..' . '/app/Models/User/AvailableUserPermission.php', 'App\\Models\\User\\AvailableUserPermission' => __DIR__ . '/../..' . '/app/Models/User/AvailableUserPermission.php',
'App\\Models\\User\\AvailableUserRole' => __DIR__ . '/../..' . '/app/Models/User/AvailableUserRole.php', 'App\\Models\\User\\AvailableUserRole' => __DIR__ . '/../..' . '/app/Models/User/AvailableUserRole.php',
'App\\Models\\User\\User' => __DIR__ . '/../..' . '/app/Models/User/User.php', 'App\\Models\\User\\User' => __DIR__ . '/../..' . '/app/Models/User/User.php',
@@ -914,6 +925,7 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'Dotenv\\Store\\File\\Reader' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/File/Reader.php', 'Dotenv\\Store\\File\\Reader' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/File/Reader.php',
'Dotenv\\Store\\StoreBuilder' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/StoreBuilder.php', 'Dotenv\\Store\\StoreBuilder' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/StoreBuilder.php',
'Dotenv\\Store\\StoreInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/StoreInterface.php', 'Dotenv\\Store\\StoreInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/StoreInterface.php',
'Dotenv\\Store\\StringStore' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Store/StringStore.php',
'Dotenv\\Validator' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Validator.php', 'Dotenv\\Validator' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Validator.php',
'Egulias\\EmailValidator\\EmailLexer' => __DIR__ . '/..' . '/egulias/email-validator/src/EmailLexer.php', 'Egulias\\EmailValidator\\EmailLexer' => __DIR__ . '/..' . '/egulias/email-validator/src/EmailLexer.php',
'Egulias\\EmailValidator\\EmailParser' => __DIR__ . '/..' . '/egulias/email-validator/src/EmailParser.php', 'Egulias\\EmailValidator\\EmailParser' => __DIR__ . '/..' . '/egulias/email-validator/src/EmailParser.php',
@@ -2537,19 +2549,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'Jose\\Component\\Checker\\MissingMandatoryClaimException' => __DIR__ . '/..' . '/web-token/jwt-checker/MissingMandatoryClaimException.php', 'Jose\\Component\\Checker\\MissingMandatoryClaimException' => __DIR__ . '/..' . '/web-token/jwt-checker/MissingMandatoryClaimException.php',
'Jose\\Component\\Checker\\MissingMandatoryHeaderParameterException' => __DIR__ . '/..' . '/web-token/jwt-checker/MissingMandatoryHeaderParameterException.php', 'Jose\\Component\\Checker\\MissingMandatoryHeaderParameterException' => __DIR__ . '/..' . '/web-token/jwt-checker/MissingMandatoryHeaderParameterException.php',
'Jose\\Component\\Checker\\NotBeforeChecker' => __DIR__ . '/..' . '/web-token/jwt-checker/NotBeforeChecker.php', 'Jose\\Component\\Checker\\NotBeforeChecker' => __DIR__ . '/..' . '/web-token/jwt-checker/NotBeforeChecker.php',
'Jose\\Component\\Checker\\Tests\\AlgorithmHeaderCheckerTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/AlgorithmHeaderCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\AudienceClaimCheckerTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/AudienceClaimCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\AudienceHeaderCheckerTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/AudienceHeaderCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\ClaimCheckerManagerFactoryTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/ClaimCheckerManagerFactoryTest.php',
'Jose\\Component\\Checker\\Tests\\ClaimCheckerManagerTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/ClaimCheckerManagerTest.php',
'Jose\\Component\\Checker\\Tests\\ExpirationTimeClaimCheckerTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/ExpirationTimeClaimCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\HeaderCheckerManagerFactoryTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/HeaderCheckerManagerFactoryTest.php',
'Jose\\Component\\Checker\\Tests\\IssuedAtClaimCheckerTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/IssuedAtClaimCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\NotBeforeClaimCheckerTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/NotBeforeClaimCheckerTest.php',
'Jose\\Component\\Checker\\Tests\\Stub\\OtherToken' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/Stub/OtherToken.php',
'Jose\\Component\\Checker\\Tests\\Stub\\Token' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/Stub/Token.php',
'Jose\\Component\\Checker\\Tests\\Stub\\TokenSupport' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/Stub/TokenSupport.php',
'Jose\\Component\\Checker\\Tests\\UnencodedPayloadHeaderCheckerTest' => __DIR__ . '/..' . '/web-token/jwt-checker/Tests/UnencodedPayloadHeaderCheckerTest.php',
'Jose\\Component\\Checker\\TokenTypeSupport' => __DIR__ . '/..' . '/web-token/jwt-checker/TokenTypeSupport.php', 'Jose\\Component\\Checker\\TokenTypeSupport' => __DIR__ . '/..' . '/web-token/jwt-checker/TokenTypeSupport.php',
'Jose\\Component\\Checker\\UnencodedPayloadChecker' => __DIR__ . '/..' . '/web-token/jwt-checker/UnencodedPayloadChecker.php', 'Jose\\Component\\Checker\\UnencodedPayloadChecker' => __DIR__ . '/..' . '/web-token/jwt-checker/UnencodedPayloadChecker.php',
'Jose\\Component\\Core\\Algorithm' => __DIR__ . '/..' . '/web-token/jwt-core/Algorithm.php', 'Jose\\Component\\Core\\Algorithm' => __DIR__ . '/..' . '/web-token/jwt-core/Algorithm.php',
@@ -2558,11 +2557,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'Jose\\Component\\Core\\JWK' => __DIR__ . '/..' . '/web-token/jwt-core/JWK.php', 'Jose\\Component\\Core\\JWK' => __DIR__ . '/..' . '/web-token/jwt-core/JWK.php',
'Jose\\Component\\Core\\JWKSet' => __DIR__ . '/..' . '/web-token/jwt-core/JWKSet.php', 'Jose\\Component\\Core\\JWKSet' => __DIR__ . '/..' . '/web-token/jwt-core/JWKSet.php',
'Jose\\Component\\Core\\JWT' => __DIR__ . '/..' . '/web-token/jwt-core/JWT.php', 'Jose\\Component\\Core\\JWT' => __DIR__ . '/..' . '/web-token/jwt-core/JWT.php',
'Jose\\Component\\Core\\Tests\\AlgorithmManagerFactoryTest' => __DIR__ . '/..' . '/web-token/jwt-core/Tests/AlgorithmManagerFactoryTest.php',
'Jose\\Component\\Core\\Tests\\FooAlgorithm' => __DIR__ . '/..' . '/web-token/jwt-core/Tests/FooAlgorithm.php',
'Jose\\Component\\Core\\Tests\\JWKSetTest' => __DIR__ . '/..' . '/web-token/jwt-core/Tests/JWKSetTest.php',
'Jose\\Component\\Core\\Tests\\JWKTest' => __DIR__ . '/..' . '/web-token/jwt-core/Tests/JWKTest.php',
'Jose\\Component\\Core\\Tests\\JsonConverterTest' => __DIR__ . '/..' . '/web-token/jwt-core/Tests/JsonConverterTest.php',
'Jose\\Component\\Core\\Util\\BigInteger' => __DIR__ . '/..' . '/web-token/jwt-core/Util/BigInteger.php', 'Jose\\Component\\Core\\Util\\BigInteger' => __DIR__ . '/..' . '/web-token/jwt-core/Util/BigInteger.php',
'Jose\\Component\\Core\\Util\\ECKey' => __DIR__ . '/..' . '/web-token/jwt-core/Util/ECKey.php', 'Jose\\Component\\Core\\Util\\ECKey' => __DIR__ . '/..' . '/web-token/jwt-core/Util/ECKey.php',
'Jose\\Component\\Core\\Util\\ECSignature' => __DIR__ . '/..' . '/web-token/jwt-core/Util/ECSignature.php', 'Jose\\Component\\Core\\Util\\ECSignature' => __DIR__ . '/..' . '/web-token/jwt-core/Util/ECSignature.php',
@@ -2596,30 +2590,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'Jose\\Component\\Encryption\\Serializer\\JWESerializer' => __DIR__ . '/..' . '/web-token/jwt-encryption/Serializer/JWESerializer.php', 'Jose\\Component\\Encryption\\Serializer\\JWESerializer' => __DIR__ . '/..' . '/web-token/jwt-encryption/Serializer/JWESerializer.php',
'Jose\\Component\\Encryption\\Serializer\\JWESerializerManager' => __DIR__ . '/..' . '/web-token/jwt-encryption/Serializer/JWESerializerManager.php', 'Jose\\Component\\Encryption\\Serializer\\JWESerializerManager' => __DIR__ . '/..' . '/web-token/jwt-encryption/Serializer/JWESerializerManager.php',
'Jose\\Component\\Encryption\\Serializer\\JWESerializerManagerFactory' => __DIR__ . '/..' . '/web-token/jwt-encryption/Serializer/JWESerializerManagerFactory.php', 'Jose\\Component\\Encryption\\Serializer\\JWESerializerManagerFactory' => __DIR__ . '/..' . '/web-token/jwt-encryption/Serializer/JWESerializerManagerFactory.php',
'Jose\\Component\\Encryption\\Tests\\CompressionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/CompressionTest.php',
'Jose\\Component\\Encryption\\Tests\\ECDHESWithX25519EncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/ECDHESWithX25519EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\EncrypterTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/EncrypterTest.php',
'Jose\\Component\\Encryption\\Tests\\EncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\InvalidCurveAttackTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/InvalidCurveAttackTest.php',
'Jose\\Component\\Encryption\\Tests\\JWEFlattenedTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/JWEFlattenedTest.php',
'Jose\\Component\\Encryption\\Tests\\JWELoaderTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/JWELoaderTest.php',
'Jose\\Component\\Encryption\\Tests\\JWESplitTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/JWESplitTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionProtectedContentOnlyTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionWithCompressionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\A256GCMKWAndA128CBC_HS256EncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\DirAndA128GCMEncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/DirAndA128GCMEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\ECDH_ES_A128KWAndA128GCMEncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\ECDH_ES_AndA128CBC_HS256EncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\MultipleRecipientEncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/MultipleRecipientEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\RSA1_5AndA128CBC_HS256EncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RFC7520\\RSA_OAEPAndA256GCMEncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RFC7520/RSA_OAEPAndA256GCMEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RSAEncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RSAEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RSAKeyEncryptionTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RSAKeyEncryptionTest.php',
'Jose\\Component\\Encryption\\Tests\\RSAKeyWithoutAllPrimesTest' => __DIR__ . '/..' . '/web-token/jwt-encryption/Tests/RSAKeyWithoutAllPrimesTest.php',
'Jose\\Component\\Signature\\Algorithm\\ECDSA' => __DIR__ . '/..' . '/web-token/jwt-signature-algorithm-ecdsa/ECDSA.php', 'Jose\\Component\\Signature\\Algorithm\\ECDSA' => __DIR__ . '/..' . '/web-token/jwt-signature-algorithm-ecdsa/ECDSA.php',
'Jose\\Component\\Signature\\Algorithm\\ES256' => __DIR__ . '/..' . '/web-token/jwt-signature-algorithm-ecdsa/ES256.php', 'Jose\\Component\\Signature\\Algorithm\\ES256' => __DIR__ . '/..' . '/web-token/jwt-signature-algorithm-ecdsa/ES256.php',
'Jose\\Component\\Signature\\Algorithm\\ES384' => __DIR__ . '/..' . '/web-token/jwt-signature-algorithm-ecdsa/ES384.php', 'Jose\\Component\\Signature\\Algorithm\\ES384' => __DIR__ . '/..' . '/web-token/jwt-signature-algorithm-ecdsa/ES384.php',
@@ -2656,15 +2626,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'Jose\\Component\\Signature\\Serializer\\JWSSerializerManagerFactory' => __DIR__ . '/..' . '/web-token/jwt-signature/Serializer/JWSSerializerManagerFactory.php', 'Jose\\Component\\Signature\\Serializer\\JWSSerializerManagerFactory' => __DIR__ . '/..' . '/web-token/jwt-signature/Serializer/JWSSerializerManagerFactory.php',
'Jose\\Component\\Signature\\Serializer\\Serializer' => __DIR__ . '/..' . '/web-token/jwt-signature/Serializer/Serializer.php', 'Jose\\Component\\Signature\\Serializer\\Serializer' => __DIR__ . '/..' . '/web-token/jwt-signature/Serializer/Serializer.php',
'Jose\\Component\\Signature\\Signature' => __DIR__ . '/..' . '/web-token/jwt-signature/Signature.php', 'Jose\\Component\\Signature\\Signature' => __DIR__ . '/..' . '/web-token/jwt-signature/Signature.php',
'Jose\\Component\\Signature\\Tests\\ForeignJWTTest' => __DIR__ . '/..' . '/web-token/jwt-signature/Tests/ForeignJWTTest.php',
'Jose\\Component\\Signature\\Tests\\JWSFlattenedTest' => __DIR__ . '/..' . '/web-token/jwt-signature/Tests/JWSFlattenedTest.php',
'Jose\\Component\\Signature\\Tests\\JWSLoaderTest' => __DIR__ . '/..' . '/web-token/jwt-signature/Tests/JWSLoaderTest.php',
'Jose\\Component\\Signature\\Tests\\JWSSplitTest' => __DIR__ . '/..' . '/web-token/jwt-signature/Tests/JWSSplitTest.php',
'Jose\\Component\\Signature\\Tests\\JWSTest' => __DIR__ . '/..' . '/web-token/jwt-signature/Tests/JWSTest.php',
'Jose\\Component\\Signature\\Tests\\RFC7520\\MultipleSignaturesTest' => __DIR__ . '/..' . '/web-token/jwt-signature/Tests/RFC7520/MultipleSignaturesTest.php',
'Jose\\Component\\Signature\\Tests\\RFC7520\\NestingTest' => __DIR__ . '/..' . '/web-token/jwt-signature/Tests/RFC7520/NestingTest.php',
'Jose\\Component\\Signature\\Tests\\SignatureTest' => __DIR__ . '/..' . '/web-token/jwt-signature/Tests/SignatureTest.php',
'Jose\\Component\\Signature\\Tests\\SignerTest' => __DIR__ . '/..' . '/web-token/jwt-signature/Tests/SignerTest.php',
'Jose\\Easy\\AbstractBuilder' => __DIR__ . '/..' . '/web-token/jwt-easy/AbstractBuilder.php', 'Jose\\Easy\\AbstractBuilder' => __DIR__ . '/..' . '/web-token/jwt-easy/AbstractBuilder.php',
'Jose\\Easy\\AbstractLoader' => __DIR__ . '/..' . '/web-token/jwt-easy/AbstractLoader.php', 'Jose\\Easy\\AbstractLoader' => __DIR__ . '/..' . '/web-token/jwt-easy/AbstractLoader.php',
'Jose\\Easy\\AlgorithmProvider' => __DIR__ . '/..' . '/web-token/jwt-easy/AlgorithmProvider.php', 'Jose\\Easy\\AlgorithmProvider' => __DIR__ . '/..' . '/web-token/jwt-easy/AlgorithmProvider.php',
@@ -3157,6 +3118,7 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'League\\CommonMark\\Inline\\Renderer\\TextRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Inline/Renderer/TextRenderer.php', 'League\\CommonMark\\Inline\\Renderer\\TextRenderer' => __DIR__ . '/..' . '/league/commonmark/src/Inline/Renderer/TextRenderer.php',
'League\\CommonMark\\Input\\MarkdownInput' => __DIR__ . '/..' . '/league/commonmark/src/Input/MarkdownInput.php', 'League\\CommonMark\\Input\\MarkdownInput' => __DIR__ . '/..' . '/league/commonmark/src/Input/MarkdownInput.php',
'League\\CommonMark\\Input\\MarkdownInputInterface' => __DIR__ . '/..' . '/league/commonmark/src/Input/MarkdownInputInterface.php', 'League\\CommonMark\\Input\\MarkdownInputInterface' => __DIR__ . '/..' . '/league/commonmark/src/Input/MarkdownInputInterface.php',
'League\\CommonMark\\MarkdownConverter' => __DIR__ . '/..' . '/league/commonmark/src/MarkdownConverter.php',
'League\\CommonMark\\MarkdownConverterInterface' => __DIR__ . '/..' . '/league/commonmark/src/MarkdownConverterInterface.php', 'League\\CommonMark\\MarkdownConverterInterface' => __DIR__ . '/..' . '/league/commonmark/src/MarkdownConverterInterface.php',
'League\\CommonMark\\Node\\Node' => __DIR__ . '/..' . '/league/commonmark/src/Node/Node.php', 'League\\CommonMark\\Node\\Node' => __DIR__ . '/..' . '/league/commonmark/src/Node/Node.php',
'League\\CommonMark\\Node\\NodeWalker' => __DIR__ . '/..' . '/league/commonmark/src/Node/NodeWalker.php', 'League\\CommonMark\\Node\\NodeWalker' => __DIR__ . '/..' . '/league/commonmark/src/Node/NodeWalker.php',
@@ -3961,6 +3923,7 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.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\\InvalidPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php',
'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidVersionException.php', 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidVersionException.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\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php',
'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php', 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php',
'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php', 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php',
@@ -4877,6 +4840,7 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.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\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.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\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.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\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
@@ -5451,6 +5415,7 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
'Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php', 'Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php',
'Webmozart\\Assert\\InvalidArgumentException' => __DIR__ . '/..' . '/webmozart/assert/src/InvalidArgumentException.php',
'Webmozart\\Assert\\Mixin' => __DIR__ . '/..' . '/webmozart/assert/src/Mixin.php', 'Webmozart\\Assert\\Mixin' => __DIR__ . '/..' . '/webmozart/assert/src/Mixin.php',
'Whoops\\Exception\\ErrorException' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/ErrorException.php', 'Whoops\\Exception\\ErrorException' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/ErrorException.php',
'Whoops\\Exception\\Formatter' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/Formatter.php', 'Whoops\\Exception\\Formatter' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/Formatter.php',

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -35,6 +35,7 @@ use Egulias\EmailValidator\Warning\TLD;
class DomainPart extends Parser class DomainPart extends Parser
{ {
const DOMAIN_MAX_LENGTH = 254; const DOMAIN_MAX_LENGTH = 254;
const LABEL_MAX_LENGTH = 63;
/** /**
* @var string * @var string
@@ -160,6 +161,7 @@ class DomainPart extends Parser
protected function doParseDomainPart() protected function doParseDomainPart()
{ {
$domain = ''; $domain = '';
$label = '';
$openedParenthesis = 0; $openedParenthesis = 0;
do { do {
$prev = $this->lexer->getPrevious(); $prev = $this->lexer->getPrevious();
@@ -190,7 +192,12 @@ class DomainPart extends Parser
$this->parseDomainLiteral(); $this->parseDomainLiteral();
} }
$this->checkLabelLength($prev); if ($this->lexer->token['type'] === EmailLexer::S_DOT) {
$this->checkLabelLength($label);
$label = '';
} else {
$label .= $this->lexer->token['value'];
}
if ($this->isFWS()) { if ($this->isFWS()) {
$this->parseFWS(); $this->parseFWS();
@@ -203,6 +210,8 @@ class DomainPart extends Parser
} }
} while (null !== $this->lexer->token['type']); } while (null !== $this->lexer->token['type']);
$this->checkLabelLength($label);
return $domain; return $domain;
} }
@@ -386,16 +395,31 @@ class DomainPart extends Parser
return true; return true;
} }
protected function checkLabelLength(array $prev) /**
* @param string $label
*/
protected function checkLabelLength($label)
{ {
if ($this->lexer->token['type'] === EmailLexer::S_DOT && if ($this->isLabelTooLong($label)) {
$prev['type'] === EmailLexer::GENERIC &&
strlen($prev['value']) > 63
) {
$this->warnings[LabelTooLong::CODE] = new LabelTooLong(); $this->warnings[LabelTooLong::CODE] = new LabelTooLong();
} }
} }
/**
* @param string $label
* @return bool
*/
private function isLabelTooLong($label)
{
if (preg_match('/[^\x00-\x7F]/', $label)) {
idn_to_ascii($label, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46, $idnaInfo);
return (bool) ($idnaInfo['errors'] & IDNA_ERROR_LABEL_TOO_LONG);
}
return strlen($label) > self::LABEL_MAX_LENGTH;
}
protected function parseDomainComments() protected function parseDomainComments()
{ {
$this->isUnclosedComment(); $this->isUnclosedComment();

View File

@@ -29,7 +29,7 @@ abstract class Warning
*/ */
public function code() public function code()
{ {
return self::CODE; return static::CODE;
} }
/** /**

View File

@@ -1,5 +1,9 @@
language: php language: php
env:
global:
- XDEBUG_MODE=coverage
php: php:
- 7.2 - 7.2
- 7.3 - 7.3

View File

@@ -77,6 +77,7 @@ class CheckAccess implements AccessInterface
'/alliances/{alliance_id}/contacts/' => 'esi-alliances.read_contacts.v1', '/alliances/{alliance_id}/contacts/' => 'esi-alliances.read_contacts.v1',
'/characters/{character_id}/contacts/labels/' => 'esi-characters.read_contacts.v1', '/characters/{character_id}/contacts/labels/' => 'esi-characters.read_contacts.v1',
'/corporations/{corporation_id}/contacts/labels/' => 'esi-corporations.read_contacts.v1', '/corporations/{corporation_id}/contacts/labels/' => 'esi-corporations.read_contacts.v1',
'/alliances/{alliance_id}/contacts/labels/' => 'esi-alliances.read_contacts.v1',
'/characters/{character_id}/contracts/' => 'esi-contracts.read_character_contracts.v1', '/characters/{character_id}/contracts/' => 'esi-contracts.read_character_contracts.v1',
'/characters/{character_id}/contracts/{contract_id}/items/' => 'esi-contracts.read_character_contracts.v1', '/characters/{character_id}/contracts/{contract_id}/items/' => 'esi-contracts.read_character_contracts.v1',
'/characters/{character_id}/contracts/{contract_id}/bids/' => 'esi-contracts.read_character_contracts.v1', '/characters/{character_id}/contracts/{contract_id}/bids/' => 'esi-contracts.read_character_contracts.v1',
@@ -152,8 +153,10 @@ class CheckAccess implements AccessInterface
'/markets/groups/' => 'public', '/markets/groups/' => 'public',
'/markets/groups/{market_group_id}/' => 'public', '/markets/groups/{market_group_id}/' => 'public',
'/characters/{character_id}/orders/' => 'esi-markets.read_character_orders.v1', '/characters/{character_id}/orders/' => 'esi-markets.read_character_orders.v1',
'/characters/{character_id}/orders/history/' => 'esi-markets.read_character_orders.v1',
'/markets/{region_id}/types/' => 'public', '/markets/{region_id}/types/' => 'public',
'/corporations/{corporation_id}/orders/' => 'esi-markets.read_corporation_orders.v1', '/corporations/{corporation_id}/orders/' => 'esi-markets.read_corporation_orders.v1',
'/corporations/{corporation_id}/orders/history/' => 'esi-markets.read_corporation_orders.v1',
'/opportunities/groups/' => 'public', '/opportunities/groups/' => 'public',
'/opportunities/groups/{group_id}/' => 'public', '/opportunities/groups/{group_id}/' => 'public',
'/opportunities/tasks/' => 'public', '/opportunities/tasks/' => 'public',

View File

@@ -45,7 +45,7 @@ class Eseye
/** /**
* The Eseye Version. * The Eseye Version.
*/ */
const VERSION = '2.3.0'; const VERSION = '2.3.2';
/** /**
* @var \Seat\Eseye\Containers\EsiAuthentication * @var \Seat\Eseye\Containers\EsiAuthentication

View File

@@ -1,3 +1,7 @@
#### v2.3.0 (2021-04)
* Allow creating an unsigned CSR and adding the signature later
https://github.com/fgrosse/PHPASN1/pull/82
#### v2.2.0 (2020-08) #### v2.2.0 (2020-08)
* support polyfills for bcmath and gmp, and add a composer.json * support polyfills for bcmath and gmp, and add a composer.json
suggestion for the `phpseclib/bcmath_polyfill` for servers unable suggestion for the `phpseclib/bcmath_polyfill` for servers unable

View File

@@ -15,6 +15,7 @@ class OID
const RSA_ENCRYPTION = '1.2.840.113549.1.1.1'; const RSA_ENCRYPTION = '1.2.840.113549.1.1.1';
const MD5_WITH_RSA_ENCRYPTION = '1.2.840.113549.1.1.4'; const MD5_WITH_RSA_ENCRYPTION = '1.2.840.113549.1.1.4';
const SHA1_WITH_RSA_SIGNATURE = '1.2.840.113549.1.1.5'; const SHA1_WITH_RSA_SIGNATURE = '1.2.840.113549.1.1.5';
const SHA256_WITH_RSA_SIGNATURE = '1.2.840.113549.1.1.11';
const PKCS9_EMAIL = '1.2.840.113549.1.9.1'; const PKCS9_EMAIL = '1.2.840.113549.1.9.1';
const PKCS9_UNSTRUCTURED_NAME = '1.2.840.113549.1.9.2'; const PKCS9_UNSTRUCTURED_NAME = '1.2.840.113549.1.9.2';
const PKCS9_CONTENT_TYPE = '1.2.840.113549.1.9.3'; const PKCS9_CONTENT_TYPE = '1.2.840.113549.1.9.3';

View File

@@ -41,7 +41,7 @@ class CSR extends Sequence
* @param string $signature * @param string $signature
* @param string $signatureAlgorithm * @param string $signatureAlgorithm
*/ */
public function __construct($commonName, $email, $organization, $locality, $state, $country, $organizationalUnit, $publicKey, $signature, $signatureAlgorithm = OID::SHA1_WITH_RSA_SIGNATURE) public function __construct($commonName, $email, $organization, $locality, $state, $country, $organizationalUnit, $publicKey, $signature = null, $signatureAlgorithm = OID::SHA1_WITH_RSA_SIGNATURE)
{ {
$this->subject = new CertificateSubject( $this->subject = new CertificateSubject(
$commonName, $commonName,
@@ -56,8 +56,10 @@ class CSR extends Sequence
$this->signature = $signature; $this->signature = $signature;
$this->signatureAlgorithm = $signatureAlgorithm; $this->signatureAlgorithm = $signatureAlgorithm;
if (isset($signature)) {
$this->createCSRSequence(); $this->createCSRSequence();
} }
}
protected function createCSRSequence() protected function createCSRSequence()
{ {
@@ -68,11 +70,31 @@ class CSR extends Sequence
$certRequestInfo = new Sequence($versionNr, $this->subject, $publicKey); $certRequestInfo = new Sequence($versionNr, $this->subject, $publicKey);
// Clear the underlying Construct
$this->rewind();
$this->children = [];
$this->addChild($certRequestInfo); $this->addChild($certRequestInfo);
$this->addChild($signatureAlgorithm); $this->addChild($signatureAlgorithm);
$this->addChild($signature); $this->addChild($signature);
} }
public function getSignatureSubject()
{
$versionNr = new Integer(self::CSR_VERSION_NR);
$publicKey = new PublicKey($this->publicKey);
$certRequestInfo = new Sequence($versionNr, $this->subject, $publicKey);
return $certRequestInfo->getBinary();
}
public function setSignature($signature, $signatureAlgorithm = OID::SHA1_WITH_RSA_SIGNATURE)
{
$this->signature = $signature;
$this->signatureAlgorithm = $signatureAlgorithm;
$this->createCSRSequence();
}
public function __toString() public function __toString()
{ {
$tmp = base64_encode($this->getBinary()); $tmp = base64_encode($this->getBinary());

View File

@@ -0,0 +1 @@
github: denis-sokolov

2
vendor/filp/whoops/.mailmap vendored Normal file
View File

@@ -0,0 +1,2 @@
Denis Sokolov <denis@sokolov.cc>
Filipe Dobreira <dobreira@gmail.com>

View File

@@ -1,3 +1,23 @@
# 2.12.1
* Avoid redirecting away from an error.
# 2.12.0
* Hide non-string values in super globals when requested.
# 2.11.0
* Customize exit code
# 2.10.0
* Better chaining on handler classes
# 2.9.2
* Fix copy button styles
# 2.9.1 # 2.9.1
* Fix xdebug function crash on PHP 8 * Fix xdebug function crash on PHP 8

View File

@@ -11,6 +11,9 @@
"role": "Developer" "role": "Developer"
} }
], ],
"scripts": {
"test": "phpunit --testdox tests"
},
"require": { "require": {
"php": "^5.5.9 || ^7.0 || ^8.0", "php": "^5.5.9 || ^7.0 || ^8.0",
"psr/log": "^1.0.1" "psr/log": "^1.0.1"

View File

@@ -28,7 +28,7 @@ class JsonResponseHandler extends Handler
/** /**
* Returns errors[[]] instead of error[] to be in compliance with the json:api spec * Returns errors[[]] instead of error[] to be in compliance with the json:api spec
* @param bool $jsonApi Default is false * @param bool $jsonApi Default is false
* @return $this * @return static
*/ */
public function setJsonApi($jsonApi = false) public function setJsonApi($jsonApi = false)
{ {
@@ -38,7 +38,7 @@ class JsonResponseHandler extends Handler
/** /**
* @param bool|null $returnFrames * @param bool|null $returnFrames
* @return bool|$this * @return bool|static
*/ */
public function addTraceToOutput($returnFrames = null) public function addTraceToOutput($returnFrames = null)
{ {

View File

@@ -97,17 +97,18 @@ class PlainTextHandler extends Handler
* Set var dumper callback function. * Set var dumper callback function.
* *
* @param callable $dumper * @param callable $dumper
* @return void * @return static
*/ */
public function setDumper(callable $dumper) public function setDumper(callable $dumper)
{ {
$this->dumper = $dumper; $this->dumper = $dumper;
return $this;
} }
/** /**
* Add error trace to output. * Add error trace to output.
* @param bool|null $addTraceToOutput * @param bool|null $addTraceToOutput
* @return bool|$this * @return bool|static
*/ */
public function addTraceToOutput($addTraceToOutput = null) public function addTraceToOutput($addTraceToOutput = null)
{ {
@@ -122,7 +123,7 @@ class PlainTextHandler extends Handler
/** /**
* Add previous exceptions to output. * Add previous exceptions to output.
* @param bool|null $addPreviousToOutput * @param bool|null $addPreviousToOutput
* @return bool|$this * @return bool|static
*/ */
public function addPreviousToOutput($addPreviousToOutput = null) public function addPreviousToOutput($addPreviousToOutput = null)
{ {
@@ -138,7 +139,7 @@ class PlainTextHandler extends Handler
* Add error trace function arguments to output. * Add error trace function arguments to output.
* Set to True for all frame args, or integer for the n first frame args. * Set to True for all frame args, or integer for the n first frame args.
* @param bool|integer|null $addTraceFunctionArgsToOutput * @param bool|integer|null $addTraceFunctionArgsToOutput
* @return null|bool|integer * @return static|bool|integer
*/ */
public function addTraceFunctionArgsToOutput($addTraceFunctionArgsToOutput = null) public function addTraceFunctionArgsToOutput($addTraceFunctionArgsToOutput = null)
{ {
@@ -151,6 +152,7 @@ class PlainTextHandler extends Handler
} else { } else {
$this->addTraceFunctionArgsToOutput = $addTraceFunctionArgsToOutput; $this->addTraceFunctionArgsToOutput = $addTraceFunctionArgsToOutput;
} }
return $this;
} }
/** /**
@@ -158,10 +160,12 @@ class PlainTextHandler extends Handler
* If the limit is reached, the var_dump output is discarded. * If the limit is reached, the var_dump output is discarded.
* Prevent memory limit errors. * Prevent memory limit errors.
* @var integer * @var integer
* @return static
*/ */
public function setTraceFunctionArgsOutputLimit($traceFunctionArgsOutputLimit) public function setTraceFunctionArgsOutputLimit($traceFunctionArgsOutputLimit)
{ {
$this->traceFunctionArgsOutputLimit = (integer) $traceFunctionArgsOutputLimit; $this->traceFunctionArgsOutputLimit = (integer) $traceFunctionArgsOutputLimit;
return $this;
} }
/** /**
@@ -199,7 +203,7 @@ class PlainTextHandler extends Handler
/** /**
* Only output to logger. * Only output to logger.
* @param bool|null $loggerOnly * @param bool|null $loggerOnly
* @return null|bool * @return static|bool
*/ */
public function loggerOnly($loggerOnly = null) public function loggerOnly($loggerOnly = null)
{ {
@@ -208,6 +212,7 @@ class PlainTextHandler extends Handler
} }
$this->loggerOnly = (bool) $loggerOnly; $this->loggerOnly = (bool) $loggerOnly;
return $this;
} }
/** /**

View File

@@ -175,6 +175,8 @@ class PrettyPageHandler extends Handler
/** /**
* @return int|null * @return int|null
*
* @throws \Exception
*/ */
public function handle() public function handle()
{ {
@@ -349,11 +351,12 @@ class PrettyPageHandler extends Handler
* @param string $label * @param string $label
* @param array $data * @param array $data
* *
* @return void * @return static
*/ */
public function addDataTable($label, array $data) public function addDataTable($label, array $data)
{ {
$this->extraTables[$label] = $data; $this->extraTables[$label] = $data;
return $this;
} }
/** /**
@@ -368,7 +371,7 @@ class PrettyPageHandler extends Handler
* *
* @throws InvalidArgumentException If $callback is not callable * @throws InvalidArgumentException If $callback is not callable
* *
* @return void * @return static
*/ */
public function addDataTableCallback($label, /* callable */ $callback) public function addDataTableCallback($label, /* callable */ $callback)
{ {
@@ -387,6 +390,8 @@ class PrettyPageHandler extends Handler
return []; return [];
} }
}; };
return $this;
} }
/** /**
@@ -418,7 +423,7 @@ class PrettyPageHandler extends Handler
* *
* @param bool|null $value * @param bool|null $value
* *
* @return bool|null * @return bool|static
*/ */
public function handleUnconditionally($value = null) public function handleUnconditionally($value = null)
{ {
@@ -427,6 +432,7 @@ class PrettyPageHandler extends Handler
} }
$this->handleUnconditionally = (bool) $value; $this->handleUnconditionally = (bool) $value;
return $this;
} }
/** /**
@@ -447,11 +453,12 @@ class PrettyPageHandler extends Handler
* @param string $identifier * @param string $identifier
* @param string|callable $resolver * @param string|callable $resolver
* *
* @return void * @return static
*/ */
public function addEditor($identifier, $resolver) public function addEditor($identifier, $resolver)
{ {
$this->editors[$identifier] = $resolver; $this->editors[$identifier] = $resolver;
return $this;
} }
/** /**
@@ -469,7 +476,7 @@ class PrettyPageHandler extends Handler
* *
* @throws InvalidArgumentException If invalid argument identifier provided * @throws InvalidArgumentException If invalid argument identifier provided
* *
* @return void * @return static
*/ */
public function setEditor($editor) public function setEditor($editor)
{ {
@@ -481,6 +488,7 @@ class PrettyPageHandler extends Handler
} }
$this->editor = $editor; $this->editor = $editor;
return $this;
} }
/** /**
@@ -591,11 +599,12 @@ class PrettyPageHandler extends Handler
* *
* @param string $title * @param string $title
* *
* @return void * @return static
*/ */
public function setPageTitle($title) public function setPageTitle($title)
{ {
$this->pageTitle = (string) $title; $this->pageTitle = (string) $title;
return $this;
} }
/** /**
@@ -615,7 +624,7 @@ class PrettyPageHandler extends Handler
* *
* @throws InvalidArgumentException If $path is not a valid directory * @throws InvalidArgumentException If $path is not a valid directory
* *
* @return void * @return static
*/ */
public function addResourcePath($path) public function addResourcePath($path)
{ {
@@ -626,6 +635,7 @@ class PrettyPageHandler extends Handler
} }
array_unshift($this->searchPaths, $path); array_unshift($this->searchPaths, $path);
return $this;
} }
/** /**
@@ -633,11 +643,12 @@ class PrettyPageHandler extends Handler
* *
* @param string|null $name * @param string|null $name
* *
* @return void * @return static
*/ */
public function addCustomCss($name) public function addCustomCss($name)
{ {
$this->customCss = $name; $this->customCss = $name;
return $this;
} }
/** /**
@@ -645,11 +656,12 @@ class PrettyPageHandler extends Handler
* *
* @param string|null $name * @param string|null $name
* *
* @return void * @return static
*/ */
public function addCustomJs($name) public function addCustomJs($name)
{ {
$this->customJs = $name; $this->customJs = $name;
return $this;
} }
/** /**
@@ -718,11 +730,12 @@ class PrettyPageHandler extends Handler
* *
* @param string $resourcesPath * @param string $resourcesPath
* *
* @return void * @return static
*/ */
public function setResourcesPath($resourcesPath) public function setResourcesPath($resourcesPath)
{ {
$this->addResourcePath($resourcesPath); $this->addResourcePath($resourcesPath);
return $this;
} }
/** /**
@@ -767,11 +780,12 @@ class PrettyPageHandler extends Handler
* @param string $key The key within the superglobal * @param string $key The key within the superglobal
* @see hideSuperglobalKey * @see hideSuperglobalKey
* *
* @return void * @return static
*/ */
public function blacklist($superGlobalName, $key) public function blacklist($superGlobalName, $key)
{ {
$this->blacklist[$superGlobalName][] = $key; $this->blacklist[$superGlobalName][] = $key;
return $this;
} }
/** /**
@@ -779,7 +793,7 @@ class PrettyPageHandler extends Handler
* *
* @param string $superGlobalName The name of the superglobal array, e.g. '_GET' * @param string $superGlobalName The name of the superglobal array, e.g. '_GET'
* @param string $key The key within the superglobal * @param string $key The key within the superglobal
* @return void * @return static
*/ */
public function hideSuperglobalKey($superGlobalName, $key) public function hideSuperglobalKey($superGlobalName, $key)
{ {
@@ -789,9 +803,10 @@ class PrettyPageHandler extends Handler
/** /**
* Checks all values within the given superGlobal array. * Checks all values within the given superGlobal array.
* *
* Blacklisted values will be replaced by a equal length string cointaining * Blacklisted values will be replaced by a equal length string containing
* only '*' characters. We intentionally dont rely on $GLOBALS as it * only '*' characters for string values.
* depends on the 'auto_globals_jit' php.ini setting. * Non-string values will be replaced with a fixed asterisk count.
* We intentionally dont rely on $GLOBALS as it depends on the 'auto_globals_jit' php.ini setting.
* *
* @param array $superGlobal One of the superglobal arrays * @param array $superGlobal One of the superglobal arrays
* @param string $superGlobalName The name of the superglobal array, e.g. '_GET' * @param string $superGlobalName The name of the superglobal array, e.g. '_GET'
@@ -805,8 +820,8 @@ class PrettyPageHandler extends Handler
$values = $superGlobal; $values = $superGlobal;
foreach ($blacklisted as $key) { foreach ($blacklisted as $key) {
if (isset($superGlobal[$key]) && is_string($superGlobal[$key])) { if (isset($superGlobal[$key])) {
$values[$key] = str_repeat('*', strlen($superGlobal[$key])); $values[$key] = str_repeat('*', is_string($superGlobal[$key]) ? strlen($superGlobal[$key]) : 3);
} }
} }

View File

@@ -23,7 +23,7 @@ class XmlResponseHandler extends Handler
/** /**
* @param bool|null $returnFrames * @param bool|null $returnFrames
* @return bool|$this * @return bool|static
*/ */
public function addTraceToOutput($returnFrames = null) public function addTraceToOutput($returnFrames = null)
{ {

View File

@@ -100,7 +100,7 @@ Zepto(function($) {
var clipboard = new Clipboard('.clipboard'); var clipboard = new Clipboard('.clipboard');
var showTooltip = function(elem, msg) { var showTooltip = function(elem, msg) {
elem.setAttribute('class', 'clipboard tooltipped tooltipped-s'); elem.classList.add('tooltipped', 'tooltipped-s');
elem.setAttribute('aria-label', msg); elem.setAttribute('aria-label', msg);
}; };
@@ -117,7 +117,7 @@ Zepto(function($) {
var btn = document.querySelector('.clipboard'); var btn = document.querySelector('.clipboard');
btn.addEventListener('mouseleave', function(e) { btn.addEventListener('mouseleave', function(e) {
e.currentTarget.setAttribute('class', 'clipboard'); e.currentTarget.classList.remove('tooltipped', 'tooltipped-s');
e.currentTarget.removeAttribute('aria-label'); e.currentTarget.removeAttribute('aria-label');
}); });

View File

@@ -38,6 +38,11 @@ final class Run implements RunInterface
*/ */
private $sendHttpCode = 500; private $sendHttpCode = 500;
/**
* @var integer|false
*/
private $sendExitCode = 1;
/** /**
* @var HandlerInterface[] * @var HandlerInterface[]
*/ */
@@ -288,6 +293,31 @@ final class Run implements RunInterface
return $this->sendHttpCode = $code; return $this->sendHttpCode = $code;
} }
/**
* Should Whoops exit with a specific code on the CLI if possible?
* Whoops will exit with 1 by default, but you can specify something else.
*
* @param int $code
*
* @return int
*
* @throws InvalidArgumentException
*/
public function sendExitCode($code = null)
{
if (func_num_args() == 0) {
return $this->sendExitCode;
}
if ($code < 0 || 255 <= $code) {
throw new InvalidArgumentException(
"Invalid status code '$code', must be between 0 and 254"
);
}
return $this->sendExitCode = (int) $code;
}
/** /**
* Should Whoops push output directly to the client? * Should Whoops push output directly to the client?
* If this is false, output will be returned by handleException. * If this is false, output will be returned by handleException.
@@ -380,7 +410,9 @@ final class Run implements RunInterface
// HHVM fix for https://github.com/facebook/hhvm/issues/4055 // HHVM fix for https://github.com/facebook/hhvm/issues/4055
$this->system->flushOutputBuffer(); $this->system->flushOutputBuffer();
$this->system->stopExecution(1); $this->system->stopExecution(
$this->sendExitCode()
);
} }
return $output; return $output;

View File

@@ -90,6 +90,15 @@ interface RunInterface
*/ */
public function sendHttpCode($code = null); public function sendHttpCode($code = null);
/**
* Should Whoops exit with a specific code on the CLI if possible?
* Whoops will exit with 1 by default, but you can specify something else.
*
* @param int $code
* @return int
*/
public function sendExitCode($code = null);
/** /**
* Should Whoops push output directly to the client? * Should Whoops push output directly to the client?
* If this is false, output will be returned by handleException * If this is false, output will be returned by handleException

View File

@@ -124,6 +124,13 @@ class SystemFacade
*/ */
public function setHttpResponseCode($httpCode) public function setHttpResponseCode($httpCode)
{ {
if (!headers_sent()) {
// Ensure that no 'location' header is present as otherwise this
// will override the HTTP code being set here, and mask the
// expected error page.
header_remove('location');
}
return http_response_code($httpCode); return http_response_code($httpCode);
} }

View File

@@ -1,5 +1,8 @@
# CHANGELOG # CHANGELOG
## 1.4.1 - 2021-02-18
- Fixed `each_limit` skipping promises and failing
## 1.4.0 - 2020-09-30 ## 1.4.0 - 2020-09-30

View File

@@ -1,7 +0,0 @@
parameters:
ignoreErrors:
-
message: "#^Parameter \\#1 \\$function of function register_shutdown_function expects callable\\(\\)\\: void, Closure\\(\\)\\: mixed given\\.$#"
count: 1
path: src/TaskQueue.php

View File

@@ -1,10 +0,0 @@
includes:
- phpstan-baseline.neon
parameters:
level: 5
paths:
- src
ignoreErrors:
- "#^Dead catch - Exception is already caught by Throwable above\\.$#"

View File

@@ -1,15 +0,0 @@
<?xml version="1.0"?>
<psalm
errorLevel="4"
resolveFromConfigFile="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
>
<projectFiles>
<directory name="src" />
<ignoreFiles>
<directory name="vendor" />
</ignoreFiles>
</projectFiles>
</psalm>

View File

@@ -10,6 +10,8 @@ class EachPromise implements PromisorInterface
{ {
private $pending = []; private $pending = [];
private $nextPendingIndex = 0;
/** @var \Iterator|null */ /** @var \Iterator|null */
private $iterable; private $iterable;
@@ -121,6 +123,7 @@ class EachPromise implements PromisorInterface
$clearFn = function () { $clearFn = function () {
$this->iterable = $this->concurrency = $this->pending = null; $this->iterable = $this->concurrency = $this->pending = null;
$this->onFulfilled = $this->onRejected = null; $this->onFulfilled = $this->onRejected = null;
$this->nextPendingIndex = 0;
}; };
$this->aggregate->then($clearFn, $clearFn); $this->aggregate->then($clearFn, $clearFn);
@@ -163,11 +166,9 @@ class EachPromise implements PromisorInterface
$promise = Create::promiseFor($this->iterable->current()); $promise = Create::promiseFor($this->iterable->current());
$key = $this->iterable->key(); $key = $this->iterable->key();
// Iterable keys may not be unique, so we add the promises at the end // Iterable keys may not be unique, so we use a counter to
// of the pending array and retrieve the array index being used // guarantee uniqueness
$this->pending[] = null; $idx = $this->nextPendingIndex++;
end($this->pending);
$idx = key($this->pending);
$this->pending[$idx] = $promise->then( $this->pending[$idx] = $promise->then(
function ($value) use ($idx, $key) { function ($value) use ($idx, $key) {

View File

@@ -0,0 +1,16 @@
name: BC Check
on:
pull_request:
jobs:
roave-bc-check:
name: Roave BC Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Roave BC Check
uses: docker://nyholm/roave-bc-check-ga

View File

@@ -0,0 +1,30 @@
name: CI
on:
pull_request:
jobs:
build:
name: Build
runs-on: ubuntu-latest
strategy:
max-parallel: 10
matrix:
php: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4']
steps:
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: 'none'
extensions: mbstring
- name: Checkout code
uses: actions/checkout@v2
- name: Install dependencies
run: composer update --no-interaction --no-progress --prefer-dist
- name: Run tests
run: make test

View File

@@ -0,0 +1,37 @@
name: Integration
on:
pull_request:
jobs:
build:
name: Test
runs-on: ubuntu-latest
strategy:
max-parallel: 10
matrix:
php: ['7.2', '7.3', '7.4', '8.0']
steps:
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: none
- name: Checkout code
uses: actions/checkout@v2
- name: Download dependencies
uses: ramsey/composer-install@v1
with:
composer-options: --no-interaction --prefer-dist --optimize-autoloader
- name: Start server
run: php -S 127.0.0.1:10002 tests/Integration/server.php &
- name: Run tests
env:
TEST_SERVER: 127.0.0.1:10002
run: ./vendor/bin/phpunit --testsuite Integration

View File

@@ -0,0 +1,29 @@
name: Static analysis
on:
pull_request:
jobs:
php-cs-fixer:
name: PHP-CS-Fixer
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
coverage: none
extensions: mbstring
- name: Download dependencies
run: composer update --no-interaction --no-progress
- name: Download PHP CS Fixer
run: composer require "friendsofphp/php-cs-fixer:2.18.4"
- name: Execute PHP CS Fixer
run: vendor/bin/php-cs-fixer fix --diff-format udiff --dry-run

View File

@@ -5,57 +5,34 @@ $config = PhpCsFixer\Config::create()
->setRules([ ->setRules([
'@PSR2' => true, '@PSR2' => true,
'array_syntax' => ['syntax' => 'short'], 'array_syntax' => ['syntax' => 'short'],
'binary_operator_spaces' => ['operators' => ['=>' => null]],
'blank_line_after_opening_tag' => true,
'class_attributes_separation' => ['elements' => ['method']],
'compact_nullable_typehint' => true,
'concat_space' => ['spacing' => 'one'], 'concat_space' => ['spacing' => 'one'],
'declare_equal_normalize' => ['space' => 'none'],
'declare_strict_types' => false, 'declare_strict_types' => false,
'dir_constant' => true,
'final_static_access' => true, 'final_static_access' => true,
'fully_qualified_strict_types' => true, 'fully_qualified_strict_types' => true,
'function_to_constant' => true,
'function_typehint_space' => true,
'header_comment' => false, 'header_comment' => false,
'is_null' => ['use_yoda_style' => false], 'is_null' => ['use_yoda_style' => true],
'list_syntax' => ['syntax' => 'short'], 'list_syntax' => ['syntax' => 'long'],
'lowercase_cast' => true, 'lowercase_cast' => true,
'magic_method_casing' => true, 'magic_method_casing' => true,
'modernize_types_casting' => true, 'modernize_types_casting' => true,
'multiline_comment_opening_closing' => true, 'multiline_comment_opening_closing' => true,
//'native_constant_invocation' => true,
'no_alias_functions' => true, 'no_alias_functions' => true,
'no_alternative_syntax' => true, 'no_alternative_syntax' => true,
'no_blank_lines_after_phpdoc' => true, 'no_blank_lines_after_phpdoc' => true,
'no_empty_comment' => true, 'no_empty_comment' => true,
'no_empty_phpdoc' => true, 'no_empty_phpdoc' => true,
'no_empty_statement' => true,
'no_extra_blank_lines' => true, 'no_extra_blank_lines' => true,
'no_leading_import_slash' => true, 'no_leading_import_slash' => true,
'no_leading_namespace_whitespace' => true,
'no_spaces_around_offset' => true,
'no_superfluous_phpdoc_tags' => ['allow_mixed' => true],
'no_trailing_comma_in_singleline_array' => true, 'no_trailing_comma_in_singleline_array' => true,
'no_unneeded_control_parentheses' => true,
'no_unset_cast' => true, 'no_unset_cast' => true,
'no_unused_imports' => true, 'no_unused_imports' => true,
'no_useless_else' => true,
'no_useless_return' => true,
'no_whitespace_in_blank_line' => true, 'no_whitespace_in_blank_line' => true,
'normalize_index_brace' => true,
'ordered_imports' => true, 'ordered_imports' => true,
'php_unit_construct' => true, 'php_unit_ordered_covers' => true,
'php_unit_dedicate_assert' => ['target' => 'newest'],
'php_unit_dedicate_assert_internal_type' => ['target' => 'newest'],
'php_unit_expectation' => ['target' => 'newest'],
'php_unit_mock' => ['target' => 'newest'],
'php_unit_mock_short_will_return' => true,
'php_unit_no_expectation_annotation' => ['target' => 'newest'],
'php_unit_test_annotation' => ['style' => 'prefix'], 'php_unit_test_annotation' => ['style' => 'prefix'],
//'php_unit_test_case_static_method_calls' => ['call_type' => 'self'], 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
'phpdoc_align' => ['align' => 'vertical'], 'phpdoc_align' => ['align' => 'vertical'],
//'phpdoc_line_span' => ['method' => 'multi', 'property' => 'multi'],
'phpdoc_no_package' => true,
'phpdoc_no_useless_inheritdoc' => true, 'phpdoc_no_useless_inheritdoc' => true,
'phpdoc_scalar' => true, 'phpdoc_scalar' => true,
'phpdoc_separation' => true, 'phpdoc_separation' => true,
@@ -65,17 +42,8 @@ $config = PhpCsFixer\Config::create()
'phpdoc_types' => true, 'phpdoc_types' => true,
'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'], 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'],
'phpdoc_var_without_name' => true, 'phpdoc_var_without_name' => true,
'return_assignment' => true,
'short_scalar_cast' => true,
'single_trait_insert_per_statement' => true, 'single_trait_insert_per_statement' => true,
'standardize_not_equals' => true, 'standardize_not_equals' => true,
//'static_lambda' => true,
'ternary_to_null_coalescing' => true,
'trim_array_spaces' => true,
'visibility_required' => true,
'yoda_style' => false,
// 'native_function_invocation' => true,
'braces' => ['allow_single_line_closure'=>true],
]) ])
->setFinder( ->setFinder(
PhpCsFixer\Finder::create() PhpCsFixer\Finder::create()

View File

@@ -7,9 +7,34 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased] ## Unreleased
## [1.7.0] - 2020-09-30 ## 1.8.2 - 2021-04-26
### Fixed
- Handle possibly unset `url` in `stream_get_meta_data`
## 1.8.1 - 2021-03-21
### Fixed
- Issue parsing IPv6 URLs
- Issue modifying ServerRequest lost all its attributes
## 1.8.0 - 2021-03-21
### Added
- Locale independent URL parsing
- Most classes got a `@final` annotation to prepare for 2.0
### Fixed
- Issue when creating stream from `php://input` and curl-ext is not installed
- Broken `Utils::tryFopen()` on PHP 8
## 1.7.0 - 2020-09-30
### Added ### Added
@@ -253,7 +278,6 @@ Currently unsupported:
[Unreleased]: https://github.com/guzzle/psr7/compare/1.6.0...HEAD
[1.6.0]: https://github.com/guzzle/psr7/compare/1.5.2...1.6.0 [1.6.0]: https://github.com/guzzle/psr7/compare/1.5.2...1.6.0
[1.5.2]: https://github.com/guzzle/psr7/compare/1.5.1...1.5.2 [1.5.2]: https://github.com/guzzle/psr7/compare/1.5.1...1.5.2
[1.5.1]: https://github.com/guzzle/psr7/compare/1.5.0...1.5.1 [1.5.1]: https://github.com/guzzle/psr7/compare/1.5.0...1.5.1

View File

@@ -8,6 +8,8 @@ use Psr\Http\Message\StreamInterface;
* Reads from multiple streams, one after the other. * Reads from multiple streams, one after the other.
* *
* This is a read-only stream decorator. * This is a read-only stream decorator.
*
* @final
*/ */
class AppendStream implements StreamInterface class AppendStream implements StreamInterface
{ {

View File

@@ -11,6 +11,8 @@ use Psr\Http\Message\StreamInterface;
* This stream returns a "hwm" metadata value that tells upstream consumers * This stream returns a "hwm" metadata value that tells upstream consumers
* what the configured high water mark of the stream is, or the maximum * what the configured high water mark of the stream is, or the maximum
* preferred size of the buffer. * preferred size of the buffer.
*
* @final
*/ */
class BufferStream implements StreamInterface class BufferStream implements StreamInterface
{ {

View File

@@ -7,6 +7,8 @@ use Psr\Http\Message\StreamInterface;
/** /**
* Stream decorator that can cache previously read bytes from a sequentially * Stream decorator that can cache previously read bytes from a sequentially
* read stream. * read stream.
*
* @final
*/ */
class CachingStream implements StreamInterface class CachingStream implements StreamInterface
{ {
@@ -21,7 +23,7 @@ class CachingStream implements StreamInterface
/** /**
* We will treat the buffer object as the body of the stream * We will treat the buffer object as the body of the stream
* *
* @param StreamInterface $stream Stream to cache * @param StreamInterface $stream Stream to cache. The cursor is assumed to be at the beginning of the stream.
* @param StreamInterface $target Optionally specify where data is cached * @param StreamInterface $target Optionally specify where data is cached
*/ */
public function __construct( public function __construct(
@@ -29,7 +31,7 @@ class CachingStream implements StreamInterface
StreamInterface $target = null StreamInterface $target = null
) { ) {
$this->remoteStream = $stream; $this->remoteStream = $stream;
$this->stream = $target ?: new Stream(fopen('php://temp', 'r+')); $this->stream = $target ?: new Stream(Utils::tryFopen('php://temp', 'r+'));
} }
public function getSize() public function getSize()

View File

@@ -7,6 +7,8 @@ use Psr\Http\Message\StreamInterface;
/** /**
* Stream decorator that begins dropping data once the size of the underlying * Stream decorator that begins dropping data once the size of the underlying
* stream becomes too full. * stream becomes too full.
*
* @final
*/ */
class DroppingStream implements StreamInterface class DroppingStream implements StreamInterface
{ {

View File

@@ -9,6 +9,8 @@ use Psr\Http\Message\StreamInterface;
* *
* Allows for easy testing and extension of a provided stream without needing * Allows for easy testing and extension of a provided stream without needing
* to create a concrete class for a simple extension point. * to create a concrete class for a simple extension point.
*
* @final
*/ */
class FnStream implements StreamInterface class FnStream implements StreamInterface
{ {
@@ -56,6 +58,7 @@ class FnStream implements StreamInterface
/** /**
* An unserialize would allow the __destruct to run when the unserialized value goes out of scope. * An unserialize would allow the __destruct to run when the unserialized value goes out of scope.
*
* @throws \LogicException * @throws \LogicException
*/ */
public function __wakeup() public function __wakeup()

View File

@@ -14,6 +14,8 @@ use Psr\Http\Message\StreamInterface;
* *
* @link http://tools.ietf.org/html/rfc1952 * @link http://tools.ietf.org/html/rfc1952
* @link http://php.net/manual/en/filters.compression.php * @link http://php.net/manual/en/filters.compression.php
*
* @final
*/ */
class InflateStream implements StreamInterface class InflateStream implements StreamInterface
{ {
@@ -34,6 +36,7 @@ class InflateStream implements StreamInterface
/** /**
* @param StreamInterface $stream * @param StreamInterface $stream
* @param $header * @param $header
*
* @return int * @return int
*/ */
private function getLengthOfPossibleFilenameHeader(StreamInterface $stream, $header) private function getLengthOfPossibleFilenameHeader(StreamInterface $stream, $header)

View File

@@ -7,6 +7,8 @@ use Psr\Http\Message\StreamInterface;
/** /**
* Lazily reads or writes to a file that is opened only after an IO operation * Lazily reads or writes to a file that is opened only after an IO operation
* take place on the stream. * take place on the stream.
*
* @final
*/ */
class LazyOpenStream implements StreamInterface class LazyOpenStream implements StreamInterface
{ {
@@ -15,7 +17,7 @@ class LazyOpenStream implements StreamInterface
/** @var string File to open */ /** @var string File to open */
private $filename; private $filename;
/** @var string $mode */ /** @var string */
private $mode; private $mode;
/** /**

View File

@@ -4,9 +4,10 @@ namespace GuzzleHttp\Psr7;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
/** /**
* Decorator used to return only a subset of a stream * Decorator used to return only a subset of a stream.
*
* @final
*/ */
class LimitStream implements StreamInterface class LimitStream implements StreamInterface
{ {

View File

@@ -7,6 +7,8 @@ use Psr\Http\Message\StreamInterface;
/** /**
* Stream that when read returns bytes for a streaming multipart or * Stream that when read returns bytes for a streaming multipart or
* multipart/form-data stream. * multipart/form-data stream.
*
* @final
*/ */
class MultipartStream implements StreamInterface class MultipartStream implements StreamInterface
{ {
@@ -115,9 +117,11 @@ class MultipartStream implements StreamInterface
$disposition = $this->getHeader($headers, 'content-disposition'); $disposition = $this->getHeader($headers, 'content-disposition');
if (!$disposition) { if (!$disposition) {
$headers['Content-Disposition'] = ($filename === '0' || $filename) $headers['Content-Disposition'] = ($filename === '0' || $filename)
? sprintf('form-data; name="%s"; filename="%s"', ? sprintf(
'form-data; name="%s"; filename="%s"',
$name, $name,
basename($filename)) basename($filename)
)
: "form-data; name=\"{$name}\""; : "form-data; name=\"{$name}\"";
} }

View File

@@ -5,7 +5,9 @@ namespace GuzzleHttp\Psr7;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
/** /**
* Stream decorator that prevents a stream from being seeked * Stream decorator that prevents a stream from being seeked.
*
* @final
*/ */
class NoSeekStream implements StreamInterface class NoSeekStream implements StreamInterface
{ {

View File

@@ -13,6 +13,8 @@ use Psr\Http\Message\StreamInterface;
* returned by the provided callable is buffered internally until drained using * returned by the provided callable is buffered internally until drained using
* the read() function of the PumpStream. The provided callable MUST return * the read() function of the PumpStream. The provided callable MUST return
* false when there is no more data to read. * false when there is no more data to read.
*
* @final
*/ */
class PumpStream implements StreamInterface class PumpStream implements StreamInterface
{ {

View File

@@ -34,7 +34,9 @@ final class Query
} elseif ($urlEncoding === PHP_QUERY_RFC1738) { } elseif ($urlEncoding === PHP_QUERY_RFC1738) {
$decoder = 'urldecode'; $decoder = 'urldecode';
} else { } else {
$decoder = function ($str) { return $str; }; $decoder = function ($str) {
return $str;
};
} }
foreach (explode('&', $str) as $kvp) { foreach (explode('&', $str) as $kvp) {
@@ -65,6 +67,7 @@ final class Query
* @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
* to encode using RFC3986, or PHP_QUERY_RFC1738 * to encode using RFC3986, or PHP_QUERY_RFC1738
* to encode using RFC1738. * to encode using RFC1738.
*
* @return string * @return string
*/ */
public static function build(array $params, $encoding = PHP_QUERY_RFC3986) public static function build(array $params, $encoding = PHP_QUERY_RFC3986)
@@ -74,7 +77,9 @@ final class Query
} }
if ($encoding === false) { if ($encoding === false) {
$encoder = function ($str) { return $str; }; $encoder = function ($str) {
return $str;
};
} elseif ($encoding === PHP_QUERY_RFC3986) { } elseif ($encoding === PHP_QUERY_RFC3986) {
$encoder = 'rawurlencode'; $encoder = 'rawurlencode';
} elseif ($encoding === PHP_QUERY_RFC1738) { } elseif ($encoding === PHP_QUERY_RFC1738) {

View File

@@ -17,7 +17,7 @@ class Request implements RequestInterface
/** @var string */ /** @var string */
private $method; private $method;
/** @var null|string */ /** @var string|null */
private $requestTarget; private $requestTarget;
/** @var UriInterface */ /** @var UriInterface */
@@ -27,7 +27,7 @@ class Request implements RequestInterface
* @param string $method HTTP method * @param string $method HTTP method
* @param string|UriInterface $uri URI * @param string|UriInterface $uri URI
* @param array $headers Request headers * @param array $headers Request headers
* @param string|null|resource|StreamInterface $body Request body * @param string|resource|StreamInterface|null $body Request body
* @param string $version Protocol version * @param string $version Protocol version
*/ */
public function __construct( public function __construct(

View File

@@ -83,7 +83,7 @@ class Response implements ResponseInterface
/** /**
* @param int $status Status code * @param int $status Status code
* @param array $headers Response headers * @param array $headers Response headers
* @param string|null|resource|StreamInterface $body Response body * @param string|resource|StreamInterface|null $body Response body
* @param string $version Protocol version * @param string $version Protocol version
* @param string|null $reason Reason phrase (when empty a default will be used based on the status code) * @param string|null $reason Reason phrase (when empty a default will be used based on the status code)
*/ */

View File

@@ -11,6 +11,7 @@ final class Rfc7230
* Note: header delimiter (\r\n) is modified to \r?\n to accept line feed only delimiters for BC reasons. * Note: header delimiter (\r\n) is modified to \r?\n to accept line feed only delimiters for BC reasons.
* *
* @link https://github.com/amphp/http/blob/v1.0.1/src/Rfc7230.php#L12-L15 * @link https://github.com/amphp/http/blob/v1.0.1/src/Rfc7230.php#L12-L15
*
* @license https://github.com/amphp/http/blob/v1.0.1/LICENSE * @license https://github.com/amphp/http/blob/v1.0.1/LICENSE
*/ */
const HEADER_REGEX = "(^([^()<>@,;:\\\"/[\]?={}\x01-\x20\x7F]++):[ \t]*+((?:[ \t]*+[\x21-\x7E\x80-\xFF]++)*+)[ \t]*+\r?\n)m"; const HEADER_REGEX = "(^([^()<>@,;:\\\"/[\]?={}\x01-\x20\x7F]++):[ \t]*+((?:[ \t]*+[\x21-\x7E\x80-\xFF]++)*+)[ \t]*+\r?\n)m";

View File

@@ -4,9 +4,9 @@ namespace GuzzleHttp\Psr7;
use InvalidArgumentException; use InvalidArgumentException;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\UriInterface;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
use Psr\Http\Message\UploadedFileInterface; use Psr\Http\Message\UploadedFileInterface;
use Psr\Http\Message\UriInterface;
/** /**
* Server-side HTTP request * Server-side HTTP request
@@ -35,7 +35,7 @@ class ServerRequest extends Request implements ServerRequestInterface
private $cookieParams = []; private $cookieParams = [];
/** /**
* @var null|array|object * @var array|object|null
*/ */
private $parsedBody; private $parsedBody;
@@ -58,7 +58,7 @@ class ServerRequest extends Request implements ServerRequestInterface
* @param string $method HTTP method * @param string $method HTTP method
* @param string|UriInterface $uri URI * @param string|UriInterface $uri URI
* @param array $headers Request headers * @param array $headers Request headers
* @param string|null|resource|StreamInterface $body Request body * @param string|resource|StreamInterface|null $body Request body
* @param string $version Protocol version * @param string $version Protocol version
* @param array $serverParams Typically the $_SERVER superglobal * @param array $serverParams Typically the $_SERVER superglobal
*/ */
@@ -111,6 +111,7 @@ class ServerRequest extends Request implements ServerRequestInterface
* delegate to normalizeNestedFileSpec() and return that return value. * delegate to normalizeNestedFileSpec() and return that return value.
* *
* @param array $value $_FILES struct * @param array $value $_FILES struct
*
* @return array|UploadedFileInterface * @return array|UploadedFileInterface
*/ */
private static function createUploadedFileFromSpec(array $value) private static function createUploadedFileFromSpec(array $value)
@@ -135,6 +136,7 @@ class ServerRequest extends Request implements ServerRequestInterface
* UploadedFileInterface instances. * UploadedFileInterface instances.
* *
* @param array $files * @param array $files
*
* @return UploadedFileInterface[] * @return UploadedFileInterface[]
*/ */
private static function normalizeNestedFileSpec(array $files = []) private static function normalizeNestedFileSpec(array $files = [])
@@ -245,7 +247,6 @@ class ServerRequest extends Request implements ServerRequestInterface
return $uri; return $uri;
} }
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */

View File

@@ -6,6 +6,7 @@ use Psr\Http\Message\StreamInterface;
/** /**
* Stream decorator trait * Stream decorator trait
*
* @property StreamInterface stream * @property StreamInterface stream
*/ */
trait StreamDecoratorTrait trait StreamDecoratorTrait

View File

@@ -6,6 +6,8 @@ use Psr\Http\Message\StreamInterface;
/** /**
* Converts Guzzle streams into PHP stream resources. * Converts Guzzle streams into PHP stream resources.
*
* @final
*/ */
class StreamWrapper class StreamWrapper
{ {

View File

@@ -39,7 +39,7 @@ class UploadedFile implements UploadedFileInterface
private $error; private $error;
/** /**
* @var null|string * @var string|null
*/ */
private $file; private $file;
@@ -144,7 +144,8 @@ class UploadedFile implements UploadedFileInterface
/** /**
* @param mixed $param * @param mixed $param
* @return boolean *
* @return bool
*/ */
private function isStringOrNull($param) private function isStringOrNull($param)
{ {
@@ -153,7 +154,8 @@ class UploadedFile implements UploadedFileInterface
/** /**
* @param mixed $param * @param mixed $param
* @return boolean *
* @return bool
*/ */
private function isStringNotEmpty($param) private function isStringNotEmpty($param)
{ {
@@ -195,7 +197,7 @@ class UploadedFile implements UploadedFileInterface
/** /**
* Return true if there is no upload error * Return true if there is no upload error
* *
* @return boolean * @return bool
*/ */
private function isOk() private function isOk()
{ {
@@ -203,7 +205,7 @@ class UploadedFile implements UploadedFileInterface
} }
/** /**
* @return boolean * @return bool
*/ */
public function isMoved() public function isMoved()
{ {
@@ -297,6 +299,7 @@ class UploadedFile implements UploadedFileInterface
* {@inheritdoc} * {@inheritdoc}
* *
* @see http://php.net/manual/en/features.file-upload.errors.php * @see http://php.net/manual/en/features.file-upload.errors.php
*
* @return int One of PHP's UPLOAD_ERR_XXX constants. * @return int One of PHP's UPLOAD_ERR_XXX constants.
*/ */
public function getError() public function getError()

View File

@@ -67,7 +67,7 @@ class Uri implements UriInterface
{ {
// weak type check to also accept null until we can add scalar type hints // weak type check to also accept null until we can add scalar type hints
if ($uri != '') { if ($uri != '') {
$parts = parse_url($uri); $parts = self::parse($uri);
if ($parts === false) { if ($parts === false) {
throw new \InvalidArgumentException("Unable to parse URI: $uri"); throw new \InvalidArgumentException("Unable to parse URI: $uri");
} }
@@ -75,6 +75,49 @@ class Uri implements UriInterface
} }
} }
/**
* UTF-8 aware \parse_url() replacement.
*
* The internal function produces broken output for non ASCII domain names
* (IDN) when used with locales other than "C".
*
* On the other hand, cURL understands IDN correctly only when UTF-8 locale
* is configured ("C.UTF-8", "en_US.UTF-8", etc.).
*
* @see https://bugs.php.net/bug.php?id=52923
* @see https://www.php.net/manual/en/function.parse-url.php#114817
* @see https://curl.haxx.se/libcurl/c/CURLOPT_URL.html#ENCODING
*
* @param string $url
*
* @return array|false
*/
private static function parse($url)
{
// If IPv6
$prefix = '';
if (preg_match('%^(.*://\[[0-9:a-f]+\])(.*?)$%', $url, $matches)) {
$prefix = $matches[1];
$url = $matches[2];
}
$encodedUrl = preg_replace_callback(
'%[^:/@?&=#]+%usD',
static function ($matches) {
return urlencode($matches[0]);
},
$url
);
$result = parse_url($prefix . $encodedUrl);
if ($result === false) {
return false;
}
return array_map('urldecode', $result);
}
public function __toString() public function __toString()
{ {
return self::composeComponents( return self::composeComponents(
@@ -167,6 +210,7 @@ class Uri implements UriInterface
* @param UriInterface $uri * @param UriInterface $uri
* *
* @return bool * @return bool
*
* @see Uri::isNetworkPathReference * @see Uri::isNetworkPathReference
* @see Uri::isAbsolutePathReference * @see Uri::isAbsolutePathReference
* @see Uri::isRelativePathReference * @see Uri::isRelativePathReference
@@ -185,6 +229,7 @@ class Uri implements UriInterface
* @param UriInterface $uri * @param UriInterface $uri
* *
* @return bool * @return bool
*
* @link https://tools.ietf.org/html/rfc3986#section-4.2 * @link https://tools.ietf.org/html/rfc3986#section-4.2
*/ */
public static function isNetworkPathReference(UriInterface $uri) public static function isNetworkPathReference(UriInterface $uri)
@@ -200,6 +245,7 @@ class Uri implements UriInterface
* @param UriInterface $uri * @param UriInterface $uri
* *
* @return bool * @return bool
*
* @link https://tools.ietf.org/html/rfc3986#section-4.2 * @link https://tools.ietf.org/html/rfc3986#section-4.2
*/ */
public static function isAbsolutePathReference(UriInterface $uri) public static function isAbsolutePathReference(UriInterface $uri)
@@ -218,6 +264,7 @@ class Uri implements UriInterface
* @param UriInterface $uri * @param UriInterface $uri
* *
* @return bool * @return bool
*
* @link https://tools.ietf.org/html/rfc3986#section-4.2 * @link https://tools.ietf.org/html/rfc3986#section-4.2
*/ */
public static function isRelativePathReference(UriInterface $uri) public static function isRelativePathReference(UriInterface $uri)
@@ -238,6 +285,7 @@ class Uri implements UriInterface
* @param UriInterface|null $base An optional base URI to compare against * @param UriInterface|null $base An optional base URI to compare against
* *
* @return bool * @return bool
*
* @link https://tools.ietf.org/html/rfc3986#section-4.4 * @link https://tools.ietf.org/html/rfc3986#section-4.4
*/ */
public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null) public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null)
@@ -358,6 +406,7 @@ class Uri implements UriInterface
* @param array $parts * @param array $parts
* *
* @return UriInterface * @return UriInterface
*
* @link http://php.net/manual/en/function.parse-url.php * @link http://php.net/manual/en/function.parse-url.php
* *
* @throws \InvalidArgumentException If the components do not form a valid URI. * @throws \InvalidArgumentException If the components do not form a valid URI.
@@ -576,7 +625,7 @@ class Uri implements UriInterface
throw new \InvalidArgumentException('Scheme must be a string'); throw new \InvalidArgumentException('Scheme must be a string');
} }
return strtolower($scheme); return \strtr($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
} }
/** /**
@@ -612,7 +661,7 @@ class Uri implements UriInterface
throw new \InvalidArgumentException('Host must be a string'); throw new \InvalidArgumentException('Host must be a string');
} }
return strtolower($host); return \strtr($host, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
} }
/** /**

View File

@@ -115,6 +115,7 @@ final class UriNormalizer
* @param int $flags A bitmask of normalizations to apply, see constants * @param int $flags A bitmask of normalizations to apply, see constants
* *
* @return UriInterface The normalized URI * @return UriInterface The normalized URI
*
* @link https://tools.ietf.org/html/rfc3986#section-6.2 * @link https://tools.ietf.org/html/rfc3986#section-6.2
*/ */
public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS) public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS)
@@ -171,6 +172,7 @@ final class UriNormalizer
* @param int $normalizations A bitmask of normalizations to apply, see constants * @param int $normalizations A bitmask of normalizations to apply, see constants
* *
* @return bool * @return bool
*
* @link https://tools.ietf.org/html/rfc3986#section-6.1 * @link https://tools.ietf.org/html/rfc3986#section-6.1
*/ */
public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS) public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS)

View File

@@ -19,6 +19,7 @@ final class UriResolver
* @param string $path * @param string $path
* *
* @return string * @return string
*
* @link http://tools.ietf.org/html/rfc3986#section-5.2.4 * @link http://tools.ietf.org/html/rfc3986#section-5.2.4
*/ */
public static function removeDotSegments($path) public static function removeDotSegments($path)
@@ -58,6 +59,7 @@ final class UriResolver
* @param UriInterface $rel Relative URI * @param UriInterface $rel Relative URI
* *
* @return UriInterface * @return UriInterface
*
* @link http://tools.ietf.org/html/rfc3986#section-5.2 * @link http://tools.ietf.org/html/rfc3986#section-5.2
*/ */
public static function resolve(UriInterface $base, UriInterface $rel) public static function resolve(UriInterface $base, UriInterface $rel)

View File

@@ -75,6 +75,7 @@ final class Utils
* @param StreamInterface $stream Stream to read * @param StreamInterface $stream Stream to read
* @param int $maxLen Maximum number of bytes to read. Pass -1 * @param int $maxLen Maximum number of bytes to read. Pass -1
* to read the entire stream. * to read the entire stream.
*
* @return string * @return string
* *
* @throws \RuntimeException on error. * @throws \RuntimeException on error.
@@ -202,7 +203,7 @@ final class Utils
} }
if ($request instanceof ServerRequestInterface) { if ($request instanceof ServerRequestInterface) {
return (new ServerRequest( $new = (new ServerRequest(
isset($changes['method']) ? $changes['method'] : $request->getMethod(), isset($changes['method']) ? $changes['method'] : $request->getMethod(),
$uri, $uri,
$headers, $headers,
@@ -216,6 +217,12 @@ final class Utils
->withQueryParams($request->getQueryParams()) ->withQueryParams($request->getQueryParams())
->withCookieParams($request->getCookieParams()) ->withCookieParams($request->getCookieParams())
->withUploadedFiles($request->getUploadedFiles()); ->withUploadedFiles($request->getUploadedFiles());
foreach ($request->getAttributes() as $key => $value) {
$new = $new->withAttribute($key, $value);
}
return $new;
} }
return new Request( return new Request(
@@ -286,7 +293,7 @@ final class Utils
* number of requested bytes are available. Any additional bytes will be * number of requested bytes are available. Any additional bytes will be
* buffered and used in subsequent reads. * buffered and used in subsequent reads.
* *
* @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data * @param resource|string|int|float|bool|StreamInterface|callable|\Iterator|null $resource Entity body data
* @param array $options Additional options * @param array $options Additional options
* *
* @return StreamInterface * @return StreamInterface
@@ -296,7 +303,7 @@ final class Utils
public static function streamFor($resource = '', array $options = []) public static function streamFor($resource = '', array $options = [])
{ {
if (is_scalar($resource)) { if (is_scalar($resource)) {
$stream = fopen('php://temp', 'r+'); $stream = self::tryFopen('php://temp', 'r+');
if ($resource !== '') { if ($resource !== '') {
fwrite($stream, $resource); fwrite($stream, $resource);
fseek($stream, 0); fseek($stream, 0);
@@ -306,6 +313,17 @@ final class Utils
switch (gettype($resource)) { switch (gettype($resource)) {
case 'resource': case 'resource':
/*
* The 'php://input' is a special stream with quirks and inconsistencies.
* We avoid using that stream by reading it into php://temp
*/
$metaData = \stream_get_meta_data($resource);
if (isset($metaData['uri']) && $metaData['uri'] === 'php://input') {
$stream = self::tryFopen('php://temp', 'w+');
fwrite($stream, stream_get_contents($resource));
fseek($stream, 0);
$resource = $stream;
}
return new Stream($resource, $options); return new Stream($resource, $options);
case 'object': case 'object':
if ($resource instanceof StreamInterface) { if ($resource instanceof StreamInterface) {
@@ -324,7 +342,7 @@ final class Utils
} }
break; break;
case 'NULL': case 'NULL':
return new Stream(fopen('php://temp', 'r+'), $options); return new Stream(self::tryFopen('php://temp', 'r+'), $options);
} }
if (is_callable($resource)) { if (is_callable($resource)) {
@@ -352,14 +370,26 @@ final class Utils
$ex = null; $ex = null;
set_error_handler(function () use ($filename, $mode, &$ex) { set_error_handler(function () use ($filename, $mode, &$ex) {
$ex = new \RuntimeException(sprintf( $ex = new \RuntimeException(sprintf(
'Unable to open %s using mode %s: %s', 'Unable to open "%s" using mode "%s": %s',
$filename, $filename,
$mode, $mode,
func_get_args()[1] func_get_args()[1]
)); ));
return true;
}); });
try {
$handle = fopen($filename, $mode); $handle = fopen($filename, $mode);
} catch (\Throwable $e) {
$ex = new \RuntimeException(sprintf(
'Unable to open "%s" using mode "%s": %s',
$filename,
$mode,
$e->getMessage()
), 0, $e);
}
restore_error_handler(); restore_error_handler();
if ($ex) { if ($ex) {

View File

@@ -70,7 +70,7 @@ function uri_for($uri)
* number of requested bytes are available. Any additional bytes will be * number of requested bytes are available. Any additional bytes will be
* buffered and used in subsequent reads. * buffered and used in subsequent reads.
* *
* @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data * @param resource|string|int|float|bool|StreamInterface|callable|\Iterator|null $resource Entity body data
* @param array $options Additional options * @param array $options Additional options
* *
* @return StreamInterface * @return StreamInterface
@@ -187,6 +187,7 @@ function try_fopen($filename, $mode)
* @param StreamInterface $stream Stream to read * @param StreamInterface $stream Stream to read
* @param int $maxLen Maximum number of bytes to read. Pass -1 * @param int $maxLen Maximum number of bytes to read. Pass -1
* to read the entire stream. * to read the entire stream.
*
* @return string * @return string
* *
* @throws \RuntimeException on error. * @throws \RuntimeException on error.
@@ -311,6 +312,7 @@ function parse_query($str, $urlEncoding = true)
* @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
* to encode using RFC3986, or PHP_QUERY_RFC1738 * to encode using RFC3986, or PHP_QUERY_RFC1738
* to encode using RFC1738. * to encode using RFC1738.
*
* @return string * @return string
* *
* @deprecated build_query will be removed in guzzlehttp/psr7:2.0. Use Query::build instead. * @deprecated build_query will be removed in guzzlehttp/psr7:2.0. Use Query::build instead.
@@ -361,6 +363,7 @@ function mimetype_from_extension($extension)
* @return array * @return array
* *
* @internal * @internal
*
* @deprecated _parse_message will be removed in guzzlehttp/psr7:2.0. Use Message::parseMessage instead. * @deprecated _parse_message will be removed in guzzlehttp/psr7:2.0. Use Message::parseMessage instead.
*/ */
function _parse_message($message) function _parse_message($message)
@@ -377,6 +380,7 @@ function _parse_message($message)
* @return string * @return string
* *
* @internal * @internal
*
* @deprecated _parse_request_uri will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequestUri instead. * @deprecated _parse_request_uri will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequestUri instead.
*/ */
function _parse_request_uri($path, array $headers) function _parse_request_uri($path, array $headers)
@@ -409,6 +413,7 @@ function get_message_body_summary(MessageInterface $message, $truncateAt = 120)
* @return array * @return array
* *
* @internal * @internal
*
* @deprecated _caseless_remove will be removed in guzzlehttp/psr7:2.0. Use Utils::caselessRemove instead. * @deprecated _caseless_remove will be removed in guzzlehttp/psr7:2.0. Use Utils::caselessRemove instead.
*/ */
function _caseless_remove($keys, array $data) function _caseless_remove($keys, array $data)

View File

@@ -44,7 +44,11 @@ trait DetectsLostConnections
'running with the --read-only option so it cannot execute this statement', 'running with the --read-only option so it cannot execute this statement',
'The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.', 'The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.',
'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again', 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again',
'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known',
'SQLSTATE[HY000]: General error: 7 SSL SYSCALL error: EOF detected', 'SQLSTATE[HY000]: General error: 7 SSL SYSCALL error: EOF detected',
'SQLSTATE[HY000] [2002] Connection timed out',
'SSL: Connection timed out',
'SQLSTATE[HY000]: General error: 1105 The last transaction was aborted due to Seamless Scaling. Please retry.',
]); ]);
} }
} }

View File

@@ -709,7 +709,7 @@ class Builder
); );
if (! $value instanceof Expression) { if (! $value instanceof Expression) {
$this->addBinding($value, 'where'); $this->addBinding($this->flattenValue($value), 'where');
} }
return $this; return $this;
@@ -1078,7 +1078,7 @@ class Builder
$this->wheres[] = compact('type', 'column', 'values', 'boolean', 'not'); $this->wheres[] = compact('type', 'column', 'values', 'boolean', 'not');
$this->addBinding($this->cleanBindings($values), 'where'); $this->addBinding(array_slice($this->cleanBindings(Arr::flatten($values)), 0, 2), 'where');
return $this; return $this;
} }
@@ -1201,6 +1201,8 @@ class Builder
$value, $operator, func_num_args() === 2 $value, $operator, func_num_args() === 2
); );
$value = $this->flattenValue($value);
if ($value instanceof DateTimeInterface) { if ($value instanceof DateTimeInterface) {
$value = $value->format('Y-m-d'); $value = $value->format('Y-m-d');
} }
@@ -1240,6 +1242,8 @@ class Builder
$value, $operator, func_num_args() === 2 $value, $operator, func_num_args() === 2
); );
$value = $this->flattenValue($value);
if ($value instanceof DateTimeInterface) { if ($value instanceof DateTimeInterface) {
$value = $value->format('H:i:s'); $value = $value->format('H:i:s');
} }
@@ -1279,6 +1283,8 @@ class Builder
$value, $operator, func_num_args() === 2 $value, $operator, func_num_args() === 2
); );
$value = $this->flattenValue($value);
if ($value instanceof DateTimeInterface) { if ($value instanceof DateTimeInterface) {
$value = $value->format('d'); $value = $value->format('d');
} }
@@ -1322,6 +1328,8 @@ class Builder
$value, $operator, func_num_args() === 2 $value, $operator, func_num_args() === 2
); );
$value = $this->flattenValue($value);
if ($value instanceof DateTimeInterface) { if ($value instanceof DateTimeInterface) {
$value = $value->format('m'); $value = $value->format('m');
} }
@@ -1365,6 +1373,8 @@ class Builder
$value, $operator, func_num_args() === 2 $value, $operator, func_num_args() === 2
); );
$value = $this->flattenValue($value);
if ($value instanceof DateTimeInterface) { if ($value instanceof DateTimeInterface) {
$value = $value->format('Y'); $value = $value->format('Y');
} }
@@ -1673,7 +1683,7 @@ class Builder
$this->wheres[] = compact('type', 'column', 'operator', 'value', 'boolean'); $this->wheres[] = compact('type', 'column', 'operator', 'value', 'boolean');
if (! $value instanceof Expression) { if (! $value instanceof Expression) {
$this->addBinding($value); $this->addBinding((int) $this->flattenValue($value));
} }
return $this; return $this;
@@ -1822,7 +1832,7 @@ class Builder
$this->havings[] = compact('type', 'column', 'operator', 'value', 'boolean'); $this->havings[] = compact('type', 'column', 'operator', 'value', 'boolean');
if (! $value instanceof Expression) { if (! $value instanceof Expression) {
$this->addBinding($value, 'having'); $this->addBinding($this->flattenValue($value), 'having');
} }
return $this; return $this;
@@ -1860,7 +1870,7 @@ class Builder
$this->havings[] = compact('type', 'column', 'values', 'boolean', 'not'); $this->havings[] = compact('type', 'column', 'values', 'boolean', 'not');
$this->addBinding($this->cleanBindings($values), 'having'); $this->addBinding(array_slice($this->cleanBindings(Arr::flatten($values)), 0, 2), 'having');
return $this; return $this;
} }
@@ -3082,6 +3092,17 @@ class Builder
})); }));
} }
/**
* Get a scalar type value from an unknown type of input.
*
* @param mixed $value
* @return mixed
*/
protected function flattenValue($value)
{
return is_array($value) ? head(Arr::flatten($value)) : $value;
}
/** /**
* Get the default key name of the table. * Get the default key name of the table.
* *

View File

@@ -33,7 +33,7 @@ class Application extends Container implements ApplicationContract, CachesConfig
* *
* @var string * @var string
*/ */
const VERSION = '7.30.1'; const VERSION = '7.30.4';
/** /**
* The base path for the Laravel installation. * The base path for the Laravel installation.

View File

@@ -31,7 +31,7 @@ trait InteractsWithContentTypes
*/ */
public function isJson() public function isJson()
{ {
return Str::contains($this->header('CONTENT_TYPE'), ['/json', '+json']); return Str::contains($this->header('CONTENT_TYPE') ?? '', ['/json', '+json']);
} }
/** /**

View File

@@ -352,7 +352,7 @@ class Mailer implements MailerContract, MailQueueContract
protected function addContent($message, $view, $plain, $raw, $data) protected function addContent($message, $view, $plain, $raw, $data)
{ {
if (isset($view)) { if (isset($view)) {
$message->setBody($this->renderView($view, $data), 'text/html'); $message->setBody($this->renderView($view, $data) ?: ' ', 'text/html');
} }
if (isset($plain)) { if (isset($plain)) {

View File

@@ -1174,7 +1174,7 @@ trait ValidatesAttributes
return false; return false;
} }
if (! is_scalar($value) && ! method_exists($value, '__toString')) { if (! is_scalar($value) && ! is_null($value) && ! method_exists($value, '__toString')) {
return false; return false;
} }

View File

@@ -199,7 +199,7 @@ if (! function_exists('array_prepend')) {
*/ */
function array_prepend($array, $value, $key = null) function array_prepend($array, $value, $key = null)
{ {
return Arr::prepend($array, $value, $key); return Arr::prepend(...func_get_args());
} }
} }

View File

@@ -109,7 +109,7 @@ class SocialiteManager extends Manager implements Contracts\Factory
return $this->buildProvider( return $this->buildProvider(
GitlabProvider::class, $config GitlabProvider::class, $config
); )->setHost($config['host'] ?? null);
} }
/** /**
@@ -172,6 +172,32 @@ class SocialiteManager extends Manager implements Contracts\Factory
: $redirect; : $redirect;
} }
/**
* Forget all of the resolved driver instances.
*
* @return $this
*/
public function forgetDrivers()
{
$this->drivers = [];
return $this;
}
/**
* Set the container instance used by the manager.
*
* @param \Illuminate\Contracts\Container\Container $container
* @return $this
*/
public function setContainer($container)
{
$this->app = $container;
$this->container = $container;
return $this;
}
/** /**
* Get the default driver name. * Get the default driver name.
* *

View File

@@ -2,10 +2,11 @@
namespace Laravel\Socialite; namespace Laravel\Socialite;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Laravel\Socialite\Contracts\Factory; use Laravel\Socialite\Contracts\Factory;
class SocialiteServiceProvider extends ServiceProvider class SocialiteServiceProvider extends ServiceProvider implements DeferrableProvider
{ {
/** /**
* Register the service provider. * Register the service provider.
@@ -28,14 +29,4 @@ class SocialiteServiceProvider extends ServiceProvider
{ {
return [Factory::class]; return [Factory::class];
} }
/**
* Determine if the provider is deferred.
*
* @return bool
*/
public function isDeferred()
{
return true;
}
} }

View File

@@ -81,6 +81,13 @@ abstract class AbstractProvider implements ProviderContract
*/ */
protected $stateless = false; protected $stateless = false;
/**
* Indicates if PKCE should be used.
*
* @var bool
*/
protected $usesPKCE = false;
/** /**
* The custom Guzzle configuration options. * The custom Guzzle configuration options.
* *
@@ -158,6 +165,10 @@ abstract class AbstractProvider implements ProviderContract
$this->request->session()->put('state', $state = $this->getState()); $this->request->session()->put('state', $state = $this->getState());
} }
if ($this->usesPKCE()) {
$this->request->session()->put('code_verifier', $codeVerifier = $this->getCodeVerifier());
}
return new RedirectResponse($this->getAuthUrl($state)); return new RedirectResponse($this->getAuthUrl($state));
} }
@@ -192,6 +203,11 @@ abstract class AbstractProvider implements ProviderContract
$fields['state'] = $state; $fields['state'] = $state;
} }
if ($this->usesPKCE()) {
$fields['code_challenge'] = $this->getCodeChallenge();
$fields['code_challenge_method'] = $this->getCodeChallengeMethod();
}
return array_merge($fields, $this->parameters); return array_merge($fields, $this->parameters);
} }
@@ -284,13 +300,19 @@ abstract class AbstractProvider implements ProviderContract
*/ */
protected function getTokenFields($code) protected function getTokenFields($code)
{ {
return [ $fields = [
'grant_type' => 'authorization_code', 'grant_type' => 'authorization_code',
'client_id' => $this->clientId, 'client_id' => $this->clientId,
'client_secret' => $this->clientSecret, 'client_secret' => $this->clientSecret,
'code' => $code, 'code' => $code,
'redirect_uri' => $this->redirectUrl, 'redirect_uri' => $this->redirectUrl,
]; ];
if ($this->usesPKCE()) {
$fields['code_verifier'] = $this->request->session()->pull('code_verifier');
}
return $fields;
} }
/** /**
@@ -434,6 +456,60 @@ abstract class AbstractProvider implements ProviderContract
return Str::random(40); return Str::random(40);
} }
/**
* Determine if the provider uses PKCE.
*
* @return bool
*/
protected function usesPKCE()
{
return $this->usesPKCE;
}
/**
* Enables PKCE for the provider.
*
* @return $this
*/
protected function enablePKCE()
{
$this->usesPKCE = true;
return $this;
}
/**
* Generates a random string of the right length for the PKCE code verifier.
*
* @return string
*/
protected function getCodeVerifier()
{
return Str::random(96);
}
/**
* Generates the PKCE code challenge based on the PKCE code verifier in the session.
*
* @return string
*/
protected function getCodeChallenge()
{
$hashed = hash('sha256', $this->request->session()->get('code_verifier'), true);
return rtrim(strtr(base64_encode($hashed), '+/', '-_'), '=');
}
/**
* Returns the hash method used to calculate the PKCE code challenge.
*
* @return string
*/
protected function getCodeChallengeMethod()
{
return 'S256';
}
/** /**
* Set the custom parameters of the request. * Set the custom parameters of the request.
* *

View File

@@ -11,12 +11,41 @@ class GitlabProvider extends AbstractProvider implements ProviderInterface
*/ */
protected $scopes = ['read_user']; protected $scopes = ['read_user'];
/**
* The separating character for the requested scopes.
*
* @var string
*/
protected $scopeSeparator = ' ';
/**
* The Gitlab instance host.
*
* @var string
*/
protected $host = 'https://gitlab.com';
/**
* Set the Gitlab instance host.
*
* @param string|null $host
* @return $this
*/
public function setHost($host)
{
if (! empty($host)) {
$this->host = rtrim($host, '/');
}
return $this;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function getAuthUrl($state) protected function getAuthUrl($state)
{ {
return $this->buildAuthUrlFromBase('https://gitlab.com/oauth/authorize', $state); return $this->buildAuthUrlFromBase($this->host.'/oauth/authorize', $state);
} }
/** /**
@@ -24,7 +53,7 @@ class GitlabProvider extends AbstractProvider implements ProviderInterface
*/ */
protected function getTokenUrl() protected function getTokenUrl()
{ {
return 'https://gitlab.com/oauth/token'; return $this->host.'/oauth/token';
} }
/** /**
@@ -32,7 +61,7 @@ class GitlabProvider extends AbstractProvider implements ProviderInterface
*/ */
protected function getUserByToken($token) protected function getUserByToken($token)
{ {
$userUrl = 'https://gitlab.com/api/v3/user?access_token='.$token; $userUrl = $this->host.'/api/v3/user?access_token='.$token;
$response = $this->getHttpClient()->get($userUrl); $response = $this->getHttpClient()->get($userUrl);

View File

@@ -27,7 +27,7 @@ namespace PHPSTORM_META
expectedArguments(\League\CommonMark\Inline\Element\Newline::__construct(), 0, argumentsSet('league_commonmark_newline_types')); expectedArguments(\League\CommonMark\Inline\Element\Newline::__construct(), 0, argumentsSet('league_commonmark_newline_types'));
expectedReturnValues(\League\CommonMark\Inline\Element\Newline::getType(), argumentsSet('league_commonmark_newline_types')); expectedReturnValues(\League\CommonMark\Inline\Element\Newline::getType(), argumentsSet('league_commonmark_newline_types'));
registerArgumentsSet('league_commonmark_options', 'renderer', 'enable_em', 'enable_strong', 'use_asterisk', 'use_underscore', 'unordered_list_markers', 'html_input', 'allow_unsafe_links', 'max_nesting_level', 'external_link', 'external_link/nofollow', 'external_link/noopener', 'external_link/noreferrer', 'footnote', 'footnote/backref_class', 'footnote/container_add_hr', 'footnote/container_class', 'footnote/ref_class', 'footnote/ref_id_prefix', 'footnote/footnote_class', 'footnote/footnote_id_prefix', 'heading_permalink', 'heading_permalink/html_class', 'heading_permalink/id_prefix', 'heading_permalink/inner_contents', 'heading_permalink/insert', 'heading_permalink/slug_normalizer', 'heading_permalink/symbol', 'heading_permalink/title', 'table_of_contents', 'table_of_contents/style', 'table_of_contents/normalize', 'table_of_contents/position', 'table_of_contents/html_class', 'table_of_contents/min_heading_level', 'table_of_contents/max_heading_level', 'table_of_contents/placeholder'); registerArgumentsSet('league_commonmark_options', 'renderer', 'commonmark', 'commonmark/enable_em', 'commonmark/enable_strong', 'commonmark/use_asterisk', 'commonmark/use_underscore', 'commonmark/unordered_list_markers', 'html_input', 'allow_unsafe_links', 'max_nesting_level', 'external_link', 'external_link/nofollow', 'external_link/noopener', 'external_link/noreferrer', 'footnote', 'footnote/backref_class', 'footnote/container_add_hr', 'footnote/container_class', 'footnote/ref_class', 'footnote/ref_id_prefix', 'footnote/footnote_class', 'footnote/footnote_id_prefix', 'heading_permalink', 'heading_permalink/html_class', 'heading_permalink/id_prefix', 'heading_permalink/inner_contents', 'heading_permalink/insert', 'heading_permalink/slug_normalizer', 'heading_permalink/symbol', 'heading_permalink/title', 'table_of_contents', 'table_of_contents/style', 'table_of_contents/normalize', 'table_of_contents/position', 'table_of_contents/html_class', 'table_of_contents/min_heading_level', 'table_of_contents/max_heading_level', 'table_of_contents/placeholder');
expectedArguments(\League\CommonMark\EnvironmentInterface::getConfig(), 0, argumentsSet('league_commonmark_options')); expectedArguments(\League\CommonMark\EnvironmentInterface::getConfig(), 0, argumentsSet('league_commonmark_options'));
expectedArguments(\League\CommonMark\Util\ConfigurationInterface::get(), 0, argumentsSet('league_commonmark_options')); expectedArguments(\League\CommonMark\Util\ConfigurationInterface::get(), 0, argumentsSet('league_commonmark_options'));
expectedArguments(\League\CommonMark\Util\ConfigurationInterface::set(), 0, argumentsSet('league_commonmark_options')); expectedArguments(\League\CommonMark\Util\ConfigurationInterface::set(), 0, argumentsSet('league_commonmark_options'));

Some files were not shown because too many files have changed in this diff Show More