diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-11-16 05:12:48 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-11-16 05:12:48 +0000 |
commit | 475ff42056916d02592191bb550979137f3190b1 (patch) | |
tree | e277def01fc7eba7dbc21c4a4ae5576e8aa2cf1f | |
parent | Adding upstream version 0.13.0. (diff) | |
download | icinga-php-library-upstream.tar.xz icinga-php-library-upstream.zip |
Adding upstream version 0.13.1.upstream/0.13.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
21 files changed, 1048 insertions, 140 deletions
@@ -1 +1 @@ -v0.13.0 +v0.13.1 diff --git a/asset/js/widget/Completer.js b/asset/js/widget/Completer.js index a498d82..6d60380 100644 --- a/asset/js/widget/Completer.js +++ b/asset/js/widget/Completer.js @@ -213,6 +213,7 @@ define(["../notjQuery"], function ($) { this.nextSuggestion = setTimeout(() => { let req = new XMLHttpRequest(); req.open('POST', this.input.dataset.suggestUrl, true); + req.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); req.setRequestHeader('Content-Type', 'application/json'); if (typeof icinga !== 'undefined') { diff --git a/composer.json b/composer.json index 8cfce65..4588aa3 100644 --- a/composer.json +++ b/composer.json @@ -8,6 +8,9 @@ "sort-packages": true, "platform": { "php": "7.2.9" + }, + "allow-plugins": { + "cweagans/composer-patches": true } }, "require": { @@ -19,7 +22,8 @@ "ipl/sql": "^0.7.0", "ipl/stdlib": "^0.13.0", "ipl/validator": "^0.5.0", - "ipl/web": "^0.9.0" + "ipl/web": "^0.9.0", + "cweagans/composer-patches": "~1.0" }, "require-dev": { }, @@ -30,5 +34,13 @@ "post-update-cmd": [ "AssetLoader::update" ] + }, + "extra": { + "composer-exit-on-patch-failure": true, + "patches": { + "ramsey/collection": { + "Collection: Add PHP 8.1 support": "patches/ramsey-collection.patch" + } + } } } diff --git a/composer.lock b/composer.lock index 9c73454..45a8652 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "be182e3100edb5ebb4e4ef1cbf3978c1", + "content-hash": "35fbfdaec6c999686b0d3ca7c10db905", "packages": [ { "name": "brick/math", @@ -67,6 +67,54 @@ "time": "2021-08-15T20:50:18+00:00" }, { + "name": "cweagans/composer-patches", + "version": "1.7.3", + "source": { + "type": "git", + "url": "https://github.com/cweagans/composer-patches.git", + "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/e190d4466fe2b103a55467dfa83fc2fecfcaf2db", + "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3.0" + }, + "require-dev": { + "composer/composer": "~1.0 || ~2.0", + "phpunit/phpunit": "~4.6" + }, + "type": "composer-plugin", + "extra": { + "class": "cweagans\\Composer\\Patches" + }, + "autoload": { + "psr-4": { + "cweagans\\Composer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Cameron Eagans", + "email": "me@cweagans.net" + } + ], + "description": "Provides a way to patch Composer packages.", + "support": { + "issues": "https://github.com/cweagans/composer-patches/issues", + "source": "https://github.com/cweagans/composer-patches/tree/1.7.3" + }, + "time": "2022-12-20T22:53:13+00:00" + }, + { "name": "doctrine/collections", "version": "1.8.0", "source": { @@ -138,16 +186,16 @@ }, { "name": "doctrine/deprecations", - "version": "v1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { @@ -179,9 +227,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2023-06-03T09:27:29+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "dragonmantank/cron-expression", @@ -784,16 +832,16 @@ }, { "name": "ipl/web", - "version": "v0.9.0", + "version": "v0.9.1", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-web.git", - "reference": "656c1dc51b053f48ec885dc0026810ab53fcd8db" + "reference": "1168bff7c995719659018b9b141d01c35c63224f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-web/zipball/656c1dc51b053f48ec885dc0026810ab53fcd8db", - "reference": "656c1dc51b053f48ec885dc0026810ab53fcd8db", + "url": "https://api.github.com/repos/Icinga/ipl-web/zipball/1168bff7c995719659018b9b141d01c35c63224f", + "reference": "1168bff7c995719659018b9b141d01c35c63224f", "shasum": "" }, "require": { @@ -833,9 +881,9 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-web/issues", - "source": "https://github.com/Icinga/ipl-web/tree/v0.9.0" + "source": "https://github.com/Icinga/ipl-web/tree/v0.9.1" }, - "time": "2023-09-21T08:27:26+00:00" + "time": "2023-10-17T13:10:38+00:00" }, { "name": "psr/http-factory", @@ -1216,16 +1264,16 @@ }, { "name": "react/event-loop", - "version": "v1.4.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05" + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6e7e587714fff7a83dcc7025aee42ab3b265ae05", - "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", "shasum": "" }, "require": { @@ -1276,7 +1324,7 @@ ], "support": { "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.4.0" + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" }, "funding": [ { @@ -1284,7 +1332,7 @@ "type": "open_collective" } ], - "time": "2023-05-05T10:11:24+00:00" + "time": "2023-11-13T13:48:05+00:00" }, { "name": "react/promise", @@ -1360,20 +1408,20 @@ }, { "name": "simshaun/recurr", - "version": "v5.0.1", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/simshaun/recurr.git", - "reference": "6887b7bd7075de97c8c69835e0939ff68d23c47e" + "reference": "1aff62e6e0ee875b3f2487352542605123ee9172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simshaun/recurr/zipball/6887b7bd7075de97c8c69835e0939ff68d23c47e", - "reference": "6887b7bd7075de97c8c69835e0939ff68d23c47e", + "url": "https://api.github.com/repos/simshaun/recurr/zipball/1aff62e6e0ee875b3f2487352542605123ee9172", + "reference": "1aff62e6e0ee875b3f2487352542605123ee9172", "shasum": "" }, "require": { - "doctrine/collections": "~1.6", + "doctrine/collections": "~1.6||^2.0", "php": "^7.2||^8.0" }, "require-dev": { @@ -1413,9 +1461,9 @@ ], "support": { "issues": "https://github.com/simshaun/recurr/issues", - "source": "https://github.com/simshaun/recurr/tree/v5.0.1" + "source": "https://github.com/simshaun/recurr/tree/v5.0.2" }, - "time": "2022-09-09T05:37:22+00:00" + "time": "2023-09-26T20:31:33+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1729,5 +1777,5 @@ "platform-overrides": { "php": "7.2.9" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/patches/ramsey-collection.patch b/patches/ramsey-collection.patch new file mode 100644 index 0000000..b204e59 --- /dev/null +++ b/patches/ramsey-collection.patch @@ -0,0 +1,37 @@ +--- a/vendor/ramsey/collection/src/AbstractArray.php ++++ b/vendor/ramsey/collection/src/AbstractArray.php +@@ -84,6 +84,7 @@ abstract class AbstractArray implements ArrayInterface + * @return T|null the value stored at the offset, or null if the offset + * does not exist. + */ ++ #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + return $this->data[$offset] ?? null; +@@ -132,6 +133,11 @@ abstract class AbstractArray implements ArrayInterface + return serialize($this->data); + } + ++ public function __serialize() ++ { ++ return $this->serialize(); ++ } ++ + /** + * Converts a serialized string representation into an instance object. + * +@@ -149,6 +155,11 @@ abstract class AbstractArray implements ArrayInterface + $this->data = $data; + } + ++ public function __unserialize(array $data) ++ { ++ $this->unserialize($data); ++ } ++ + /** + * Returns the number of items in this array. + * +-- +2.41.0 + diff --git a/vendor/autoload.php b/vendor/autoload.php index 6efa621..69318e2 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) { require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitf696560c44fc5544e5f1d31f5bdd89c5::getLoader(); +return ComposerAutoloaderInit35fbfdaec6c999686b0d3ca7c10db905::getLoader(); diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php index a72151c..7824d8f 100644 --- a/vendor/composer/ClassLoader.php +++ b/vendor/composer/ClassLoader.php @@ -45,35 +45,34 @@ class ClassLoader /** @var \Closure(string):void */ private static $includeFile; - /** @var ?string */ + /** @var string|null */ private $vendorDir; // PSR-4 /** - * @var array[] - * @psalm-var array<string, array<string, int>> + * @var array<string, array<string, int>> */ private $prefixLengthsPsr4 = array(); /** - * @var array[] - * @psalm-var array<string, array<int, string>> + * @var array<string, list<string>> */ private $prefixDirsPsr4 = array(); /** - * @var array[] - * @psalm-var array<string, string> + * @var list<string> */ private $fallbackDirsPsr4 = array(); // PSR-0 /** - * @var array[] - * @psalm-var array<string, array<string, string[]>> + * List of PSR-0 prefixes + * + * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) + * + * @var array<string, array<string, list<string>>> */ private $prefixesPsr0 = array(); /** - * @var array[] - * @psalm-var array<string, string> + * @var list<string> */ private $fallbackDirsPsr0 = array(); @@ -81,8 +80,7 @@ class ClassLoader private $useIncludePath = false; /** - * @var string[] - * @psalm-var array<string, string> + * @var array<string, string> */ private $classMap = array(); @@ -90,21 +88,20 @@ class ClassLoader private $classMapAuthoritative = false; /** - * @var bool[] - * @psalm-var array<string, bool> + * @var array<string, bool> */ private $missingClasses = array(); - /** @var ?string */ + /** @var string|null */ private $apcuPrefix; /** - * @var self[] + * @var array<string, self> */ private static $registeredLoaders = array(); /** - * @param ?string $vendorDir + * @param string|null $vendorDir */ public function __construct($vendorDir = null) { @@ -113,7 +110,7 @@ class ClassLoader } /** - * @return string[] + * @return array<string, list<string>> */ public function getPrefixes() { @@ -125,8 +122,7 @@ class ClassLoader } /** - * @return array[] - * @psalm-return array<string, array<int, string>> + * @return array<string, list<string>> */ public function getPrefixesPsr4() { @@ -134,8 +130,7 @@ class ClassLoader } /** - * @return array[] - * @psalm-return array<string, string> + * @return list<string> */ public function getFallbackDirs() { @@ -143,8 +138,7 @@ class ClassLoader } /** - * @return array[] - * @psalm-return array<string, string> + * @return list<string> */ public function getFallbackDirsPsr4() { @@ -152,8 +146,7 @@ class ClassLoader } /** - * @return string[] Array of classname => path - * @psalm-return array<string, string> + * @return array<string, string> Array of classname => path */ public function getClassMap() { @@ -161,8 +154,7 @@ class ClassLoader } /** - * @param string[] $classMap Class to filename map - * @psalm-param array<string, string> $classMap + * @param array<string, string> $classMap Class to filename map * * @return void */ @@ -179,24 +171,25 @@ class ClassLoader * Registers a set of PSR-0 directories for a given prefix, either * appending or prepending to the ones previously set for this prefix. * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix + * @param list<string>|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories * * @return void */ public function add($prefix, $paths, $prepend = false) { + $paths = (array) $paths; if (!$prefix) { if ($prepend) { $this->fallbackDirsPsr0 = array_merge( - (array) $paths, + $paths, $this->fallbackDirsPsr0 ); } else { $this->fallbackDirsPsr0 = array_merge( $this->fallbackDirsPsr0, - (array) $paths + $paths ); } @@ -205,19 +198,19 @@ class ClassLoader $first = $prefix[0]; if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; + $this->prefixesPsr0[$first][$prefix] = $paths; return; } if ($prepend) { $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, + $paths, $this->prefixesPsr0[$first][$prefix] ); } else { $this->prefixesPsr0[$first][$prefix] = array_merge( $this->prefixesPsr0[$first][$prefix], - (array) $paths + $paths ); } } @@ -226,9 +219,9 @@ class ClassLoader * Registers a set of PSR-4 directories for a given namespace, either * appending or prepending to the ones previously set for this namespace. * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list<string>|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories * * @throws \InvalidArgumentException * @@ -236,17 +229,18 @@ class ClassLoader */ public function addPsr4($prefix, $paths, $prepend = false) { + $paths = (array) $paths; if (!$prefix) { // Register directories for the root namespace. if ($prepend) { $this->fallbackDirsPsr4 = array_merge( - (array) $paths, + $paths, $this->fallbackDirsPsr4 ); } else { $this->fallbackDirsPsr4 = array_merge( $this->fallbackDirsPsr4, - (array) $paths + $paths ); } } elseif (!isset($this->prefixDirsPsr4[$prefix])) { @@ -256,18 +250,18 @@ class ClassLoader throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; + $this->prefixDirsPsr4[$prefix] = $paths; } elseif ($prepend) { // Prepend directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, + $paths, $this->prefixDirsPsr4[$prefix] ); } else { // Append directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( $this->prefixDirsPsr4[$prefix], - (array) $paths + $paths ); } } @@ -276,8 +270,8 @@ class ClassLoader * Registers a set of PSR-0 directories for a given prefix, * replacing any others previously set for this prefix. * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 base directories + * @param string $prefix The prefix + * @param list<string>|string $paths The PSR-0 base directories * * @return void */ @@ -294,8 +288,8 @@ class ClassLoader * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list<string>|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException * @@ -481,9 +475,9 @@ class ClassLoader } /** - * Returns the currently registered loaders indexed by their corresponding vendor directories. + * Returns the currently registered loaders keyed by their corresponding vendor directories. * - * @return self[] + * @return array<string, self> */ public static function getRegisteredLoaders() { diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 8857b6e..54a21a1 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -14,6 +14,7 @@ return array( 'ipl\\Orm\\' => array($vendorDir . '/ipl/orm/src'), 'ipl\\I18n\\' => array($vendorDir . '/ipl/i18n/src'), 'ipl\\Html\\' => array($vendorDir . '/ipl/html/src'), + 'cweagans\\Composer\\' => array($vendorDir . '/cweagans/composer-patches/src'), 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 104eb08..1bde463 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitf696560c44fc5544e5f1d31f5bdd89c5 +class ComposerAutoloaderInit35fbfdaec6c999686b0d3ca7c10db905 { private static $loader; @@ -24,16 +24,16 @@ class ComposerAutoloaderInitf696560c44fc5544e5f1d31f5bdd89c5 require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInitf696560c44fc5544e5f1d31f5bdd89c5', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit35fbfdaec6c999686b0d3ca7c10db905', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInitf696560c44fc5544e5f1d31f5bdd89c5', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit35fbfdaec6c999686b0d3ca7c10db905', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit35fbfdaec6c999686b0d3ca7c10db905::getInitializer($loader)); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit35fbfdaec6c999686b0d3ca7c10db905::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 4889766..464f848 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5 +class ComposerStaticInit35fbfdaec6c999686b0d3ca7c10db905 { public static $files = array ( 'a2c78434f64e5f5ed402f42eee19c025' => __DIR__ . '/..' . '/ipl/stdlib/src/functions_include.php', @@ -29,6 +29,10 @@ class ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5 'ipl\\I18n\\' => 9, 'ipl\\Html\\' => 9, ), + 'c' => + array ( + 'cweagans\\Composer\\' => 18, + ), 'W' => array ( 'Webmozart\\Assert\\' => 17, @@ -107,6 +111,10 @@ class ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5 array ( 0 => __DIR__ . '/..' . '/ipl/html/src', ), + 'cweagans\\Composer\\' => + array ( + 0 => __DIR__ . '/..' . '/cweagans/composer-patches/src', + ), 'Webmozart\\Assert\\' => array ( 0 => __DIR__ . '/..' . '/webmozart/assert/src', @@ -204,10 +212,10 @@ class ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5::$prefixesPsr0; - $loader->classMap = ComposerStaticInitf696560c44fc5544e5f1d31f5bdd89c5::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit35fbfdaec6c999686b0d3ca7c10db905::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit35fbfdaec6c999686b0d3ca7c10db905::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit35fbfdaec6c999686b0d3ca7c10db905::$prefixesPsr0; + $loader->classMap = ComposerStaticInit35fbfdaec6c999686b0d3ca7c10db905::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 34937d9..c1fbdde 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -64,6 +64,57 @@ "install-path": "../brick/math" }, { + "name": "cweagans/composer-patches", + "version": "1.7.3", + "version_normalized": "1.7.3.0", + "source": { + "type": "git", + "url": "https://github.com/cweagans/composer-patches.git", + "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/e190d4466fe2b103a55467dfa83fc2fecfcaf2db", + "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3.0" + }, + "require-dev": { + "composer/composer": "~1.0 || ~2.0", + "phpunit/phpunit": "~4.6" + }, + "time": "2022-12-20T22:53:13+00:00", + "type": "composer-plugin", + "extra": { + "class": "cweagans\\Composer\\Patches" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "cweagans\\Composer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Cameron Eagans", + "email": "me@cweagans.net" + } + ], + "description": "Provides a way to patch Composer packages.", + "support": { + "issues": "https://github.com/cweagans/composer-patches/issues", + "source": "https://github.com/cweagans/composer-patches/tree/1.7.3" + }, + "install-path": "../cweagans/composer-patches" + }, + { "name": "doctrine/collections", "version": "1.8.0", "version_normalized": "1.8.0.0", @@ -138,17 +189,17 @@ }, { "name": "doctrine/deprecations", - "version": "v1.1.1", - "version_normalized": "1.1.1.0", + "version": "1.1.2", + "version_normalized": "1.1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { @@ -166,7 +217,7 @@ "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" }, - "time": "2023-06-03T09:27:29+00:00", + "time": "2023-09-27T20:04:15+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -182,7 +233,7 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, "install-path": "../doctrine/deprecations" }, @@ -820,17 +871,17 @@ }, { "name": "ipl/web", - "version": "v0.9.0", - "version_normalized": "0.9.0.0", + "version": "v0.9.1", + "version_normalized": "0.9.1.0", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-web.git", - "reference": "656c1dc51b053f48ec885dc0026810ab53fcd8db" + "reference": "1168bff7c995719659018b9b141d01c35c63224f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-web/zipball/656c1dc51b053f48ec885dc0026810ab53fcd8db", - "reference": "656c1dc51b053f48ec885dc0026810ab53fcd8db", + "url": "https://api.github.com/repos/Icinga/ipl-web/zipball/1168bff7c995719659018b9b141d01c35c63224f", + "reference": "1168bff7c995719659018b9b141d01c35c63224f", "shasum": "" }, "require": { @@ -853,7 +904,7 @@ "ipl/stdlib": "dev-main", "shardj/zf1-future": "^1.22" }, - "time": "2023-09-21T08:27:26+00:00", + "time": "2023-10-17T13:10:38+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -872,7 +923,7 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-web/issues", - "source": "https://github.com/Icinga/ipl-web/tree/v0.9.0" + "source": "https://github.com/Icinga/ipl-web/tree/v0.9.1" }, "install-path": "../ipl/web" }, @@ -1128,6 +1179,11 @@ }, "time": "2021-07-30T00:58:27+00:00", "type": "library", + "extra": { + "patches_applied": { + "Collection: Add PHP 8.1 support": "patches/ramsey-collection.patch" + } + }, "installation-source": "dist", "autoload": { "psr-4": { @@ -1273,17 +1329,17 @@ }, { "name": "react/event-loop", - "version": "v1.4.0", - "version_normalized": "1.4.0.0", + "version": "v1.5.0", + "version_normalized": "1.5.0.0", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05" + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6e7e587714fff7a83dcc7025aee42ab3b265ae05", - "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", "shasum": "" }, "require": { @@ -1295,7 +1351,7 @@ "suggest": { "ext-pcntl": "For signal handling support when using the StreamSelectLoop" }, - "time": "2023-05-05T10:11:24+00:00", + "time": "2023-11-13T13:48:05+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1336,7 +1392,7 @@ ], "support": { "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.4.0" + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" }, "funding": [ { @@ -1423,28 +1479,28 @@ }, { "name": "simshaun/recurr", - "version": "v5.0.1", - "version_normalized": "5.0.1.0", + "version": "v5.0.2", + "version_normalized": "5.0.2.0", "source": { "type": "git", "url": "https://github.com/simshaun/recurr.git", - "reference": "6887b7bd7075de97c8c69835e0939ff68d23c47e" + "reference": "1aff62e6e0ee875b3f2487352542605123ee9172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simshaun/recurr/zipball/6887b7bd7075de97c8c69835e0939ff68d23c47e", - "reference": "6887b7bd7075de97c8c69835e0939ff68d23c47e", + "url": "https://api.github.com/repos/simshaun/recurr/zipball/1aff62e6e0ee875b3f2487352542605123ee9172", + "reference": "1aff62e6e0ee875b3f2487352542605123ee9172", "shasum": "" }, "require": { - "doctrine/collections": "~1.6", + "doctrine/collections": "~1.6||^2.0", "php": "^7.2||^8.0" }, "require-dev": { "phpunit/phpunit": "^8.5.16", "symfony/yaml": "^5.3" }, - "time": "2022-09-09T05:37:22+00:00", + "time": "2023-09-26T20:31:33+00:00", "type": "library", "extra": { "branch-alias": { @@ -1479,7 +1535,7 @@ ], "support": { "issues": "https://github.com/simshaun/recurr/issues", - "source": "https://github.com/simshaun/recurr/tree/v5.0.1" + "source": "https://github.com/simshaun/recurr/tree/v5.0.2" }, "install-path": "../simshaun/recurr" }, diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 8dfbe95..40b832b 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'icinga/icinga-php-library', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => '435e443a4122da64f92baaa054d65c36bebab77f', + 'reference' => '42dff4b0f6279dfd058ef71fce1de5557eb50b07', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -19,6 +19,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'cweagans/composer-patches' => array( + 'pretty_version' => '1.7.3', + 'version' => '1.7.3.0', + 'reference' => 'e190d4466fe2b103a55467dfa83fc2fecfcaf2db', + 'type' => 'composer-plugin', + 'install_path' => __DIR__ . '/../cweagans/composer-patches', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'doctrine/collections' => array( 'pretty_version' => '1.8.0', 'version' => '1.8.0.0', @@ -29,9 +38,9 @@ 'dev_requirement' => false, ), 'doctrine/deprecations' => array( - 'pretty_version' => 'v1.1.1', - 'version' => '1.1.1.0', - 'reference' => '612a3ee5ab0d5dd97b7cf3874a6efe24325efac3', + 'pretty_version' => '1.1.2', + 'version' => '1.1.2.0', + 'reference' => '4f2d4f2836e7ec4e7a8625e75c6aa916004db931', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/deprecations', 'aliases' => array(), @@ -76,7 +85,7 @@ 'icinga/icinga-php-library' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => '435e443a4122da64f92baaa054d65c36bebab77f', + 'reference' => '42dff4b0f6279dfd058ef71fce1de5557eb50b07', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -146,9 +155,9 @@ 'dev_requirement' => false, ), 'ipl/web' => array( - 'pretty_version' => 'v0.9.0', - 'version' => '0.9.0.0', - 'reference' => '656c1dc51b053f48ec885dc0026810ab53fcd8db', + 'pretty_version' => 'v0.9.1', + 'version' => '0.9.1.0', + 'reference' => '1168bff7c995719659018b9b141d01c35c63224f', 'type' => 'library', 'install_path' => __DIR__ . '/../ipl/web', 'aliases' => array(), @@ -227,9 +236,9 @@ 'dev_requirement' => false, ), 'react/event-loop' => array( - 'pretty_version' => 'v1.4.0', - 'version' => '1.4.0.0', - 'reference' => '6e7e587714fff7a83dcc7025aee42ab3b265ae05', + 'pretty_version' => 'v1.5.0', + 'version' => '1.5.0.0', + 'reference' => 'bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), @@ -251,9 +260,9 @@ ), ), 'simshaun/recurr' => array( - 'pretty_version' => 'v5.0.1', - 'version' => '5.0.1.0', - 'reference' => '6887b7bd7075de97c8c69835e0939ff68d23c47e', + 'pretty_version' => 'v5.0.2', + 'version' => '5.0.2.0', + 'reference' => '1aff62e6e0ee875b3f2487352542605123ee9172', 'type' => 'library', 'install_path' => __DIR__ . '/../simshaun/recurr', 'aliases' => array(), diff --git a/vendor/cweagans/composer-patches/composer.json b/vendor/cweagans/composer-patches/composer.json new file mode 100644 index 0000000..1565b02 --- /dev/null +++ b/vendor/cweagans/composer-patches/composer.json @@ -0,0 +1,30 @@ +{ + "name": "cweagans/composer-patches", + "description": "Provides a way to patch Composer packages.", + "minimum-stability": "dev", + "license": "BSD-3-Clause", + "type": "composer-plugin", + "extra": { + "class": "cweagans\\Composer\\Patches" + }, + "authors": [ + { + "name": "Cameron Eagans", + "email": "me@cweagans.net" + } + ], + "require": { + "php": ">=5.3.0", + "composer-plugin-api": "^1.0 || ^2.0" + }, + "require-dev": { + "composer/composer": "~1.0 || ~2.0", + "phpunit/phpunit": "~4.6" + }, + "autoload": { + "psr-4": {"cweagans\\Composer\\": "src"} + }, + "autoload-dev": { + "psr-4": {"cweagans\\Composer\\Tests\\": "tests"} + } +} diff --git a/vendor/cweagans/composer-patches/src/PatchEvent.php b/vendor/cweagans/composer-patches/src/PatchEvent.php new file mode 100644 index 0000000..31d36f8 --- /dev/null +++ b/vendor/cweagans/composer-patches/src/PatchEvent.php @@ -0,0 +1,70 @@ +<?php + +/** + * @file + * Dispatch events when patches are applied. + */ + +namespace cweagans\Composer; + +use Composer\EventDispatcher\Event; +use Composer\Package\PackageInterface; + +class PatchEvent extends Event { + + /** + * @var PackageInterface $package + */ + protected $package; + /** + * @var string $url + */ + protected $url; + /** + * @var string $description + */ + protected $description; + + /** + * Constructs a PatchEvent object. + * + * @param string $eventName + * @param PackageInterface $package + * @param string $url + * @param string $description + */ + public function __construct($eventName, PackageInterface $package, $url, $description) { + parent::__construct($eventName); + $this->package = $package; + $this->url = $url; + $this->description = $description; + } + + /** + * Returns the package that is patched. + * + * @return PackageInterface + */ + public function getPackage() { + return $this->package; + } + + /** + * Returns the url of the patch. + * + * @return string + */ + public function getUrl() { + return $this->url; + } + + /** + * Returns the description of the patch. + * + * @return string + */ + public function getDescription() { + return $this->description; + } + +} diff --git a/vendor/cweagans/composer-patches/src/PatchEvents.php b/vendor/cweagans/composer-patches/src/PatchEvents.php new file mode 100644 index 0000000..ecee947 --- /dev/null +++ b/vendor/cweagans/composer-patches/src/PatchEvents.php @@ -0,0 +1,30 @@ +<?php + +/** + * @file + * Dispatch events when patches are applied. + */ + +namespace cweagans\Composer; + +class PatchEvents { + + /** + * The PRE_PATCH_APPLY event occurs before a patch is applied. + * + * The event listener method receives a cweagans\Composer\PatchEvent instance. + * + * @var string + */ + const PRE_PATCH_APPLY = 'pre-patch-apply'; + + /** + * The POST_PATCH_APPLY event occurs after a patch is applied. + * + * The event listener method receives a cweagans\Composer\PatchEvent instance. + * + * @var string + */ + const POST_PATCH_APPLY = 'post-patch-apply'; + +} diff --git a/vendor/cweagans/composer-patches/src/Patches.php b/vendor/cweagans/composer-patches/src/Patches.php new file mode 100644 index 0000000..3d7d864 --- /dev/null +++ b/vendor/cweagans/composer-patches/src/Patches.php @@ -0,0 +1,599 @@ +<?php + +/** + * @file + * Provides a way to patch Composer packages after installation. + */ + +namespace cweagans\Composer; + +use Composer\Composer; +use Composer\DependencyResolver\Operation\InstallOperation; +use Composer\DependencyResolver\Operation\UninstallOperation; +use Composer\DependencyResolver\Operation\UpdateOperation; +use Composer\DependencyResolver\Operation\OperationInterface; +use Composer\EventDispatcher\EventSubscriberInterface; +use Composer\IO\IOInterface; +use Composer\Package\AliasPackage; +use Composer\Package\PackageInterface; +use Composer\Plugin\PluginInterface; +use Composer\Installer\PackageEvents; +use Composer\Script\Event; +use Composer\Script\ScriptEvents; +use Composer\Installer\PackageEvent; +use Composer\Util\ProcessExecutor; +use Composer\Util\RemoteFilesystem; +use Symfony\Component\Process\Process; + +class Patches implements PluginInterface, EventSubscriberInterface { + + /** + * @var Composer $composer + */ + protected $composer; + /** + * @var IOInterface $io + */ + protected $io; + /** + * @var EventDispatcher $eventDispatcher + */ + protected $eventDispatcher; + /** + * @var ProcessExecutor $executor + */ + protected $executor; + /** + * @var array $patches + */ + protected $patches; + + /** + * @var array $installedPatches + */ + protected $installedPatches; + + /** + * Apply plugin modifications to composer + * + * @param Composer $composer + * @param IOInterface $io + */ + public function activate(Composer $composer, IOInterface $io) { + $this->composer = $composer; + $this->io = $io; + $this->eventDispatcher = $composer->getEventDispatcher(); + $this->executor = new ProcessExecutor($this->io); + $this->patches = array(); + $this->installedPatches = array(); + } + + /** + * Returns an array of event names this subscriber wants to listen to. + */ + public static function getSubscribedEvents() { + return array( + ScriptEvents::PRE_INSTALL_CMD => array('checkPatches'), + ScriptEvents::PRE_UPDATE_CMD => array('checkPatches'), + PackageEvents::PRE_PACKAGE_INSTALL => array('gatherPatches'), + PackageEvents::PRE_PACKAGE_UPDATE => array('gatherPatches'), + // The following is a higher weight for compatibility with + // https://github.com/AydinHassan/magento-core-composer-installer and more generally for compatibility with + // every Composer plugin which deploys downloaded packages to other locations. + // In such cases you want that those plugins deploy patched files so they have to run after + // the "composer-patches" plugin. + // @see: https://github.com/cweagans/composer-patches/pull/153 + PackageEvents::POST_PACKAGE_INSTALL => array('postInstall', 10), + PackageEvents::POST_PACKAGE_UPDATE => array('postInstall', 10), + ); + } + + /** + * Before running composer install, + * @param Event $event + */ + public function checkPatches(Event $event) { + if (!$this->isPatchingEnabled()) { + return; + } + + try { + $repositoryManager = $this->composer->getRepositoryManager(); + $localRepository = $repositoryManager->getLocalRepository(); + $installationManager = $this->composer->getInstallationManager(); + $packages = $localRepository->getPackages(); + + $extra = $this->composer->getPackage()->getExtra(); + $patches_ignore = isset($extra['patches-ignore']) ? $extra['patches-ignore'] : array(); + + $tmp_patches = $this->grabPatches(); + foreach ($packages as $package) { + $extra = $package->getExtra(); + if (isset($extra['patches'])) { + if (isset($patches_ignore[$package->getName()])) { + foreach ($patches_ignore[$package->getName()] as $package_name => $patches) { + if (isset($extra['patches'][$package_name])) { + $extra['patches'][$package_name] = array_diff($extra['patches'][$package_name], $patches); + } + } + } + $this->installedPatches[$package->getName()] = $extra['patches']; + } + $patches = isset($extra['patches']) ? $extra['patches'] : array(); + $tmp_patches = $this->arrayMergeRecursiveDistinct($tmp_patches, $patches); + } + + if ($tmp_patches == FALSE) { + $this->io->write('<info>No patches supplied.</info>'); + return; + } + + // Remove packages for which the patch set has changed. + $promises = array(); + foreach ($packages as $package) { + if (!($package instanceof AliasPackage)) { + $package_name = $package->getName(); + $extra = $package->getExtra(); + $has_patches = isset($tmp_patches[$package_name]); + $has_applied_patches = isset($extra['patches_applied']) && count($extra['patches_applied']) > 0; + if (($has_patches && !$has_applied_patches) + || (!$has_patches && $has_applied_patches) + || ($has_patches && $has_applied_patches && $tmp_patches[$package_name] !== $extra['patches_applied'])) { + $uninstallOperation = new UninstallOperation($package, 'Removing package so it can be re-installed and re-patched.'); + $this->io->write('<info>Removing package ' . $package_name . ' so that it can be re-installed and re-patched.</info>'); + $promises[] = $installationManager->uninstall($localRepository, $uninstallOperation); + } + } + } + $promises = array_filter($promises); + if ($promises) { + $this->composer->getLoop()->wait($promises); + } + } + // If the Locker isn't available, then we don't need to do this. + // It's the first time packages have been installed. + catch (\LogicException $e) { + return; + } + } + + /** + * Gather patches from dependencies and store them for later use. + * + * @param PackageEvent $event + */ + public function gatherPatches(PackageEvent $event) { + // If we've already done this, then don't do it again. + if (isset($this->patches['_patchesGathered'])) { + $this->io->write('<info>Patches already gathered. Skipping</info>', TRUE, IOInterface::VERBOSE); + return; + } + // If patching has been disabled, bail out here. + elseif (!$this->isPatchingEnabled()) { + $this->io->write('<info>Patching is disabled. Skipping.</info>', TRUE, IOInterface::VERBOSE); + return; + } + + $this->patches = $this->grabPatches(); + if (empty($this->patches)) { + $this->io->write('<info>No patches supplied.</info>'); + } + + $extra = $this->composer->getPackage()->getExtra(); + $patches_ignore = isset($extra['patches-ignore']) ? $extra['patches-ignore'] : array(); + + // Now add all the patches from dependencies that will be installed. + $operations = $event->getOperations(); + $this->io->write('<info>Gathering patches for dependencies. This might take a minute.</info>'); + foreach ($operations as $operation) { + if ($operation instanceof InstallOperation || $operation instanceof UpdateOperation) { + $package = $this->getPackageFromOperation($operation); + $extra = $package->getExtra(); + if (isset($extra['patches'])) { + if (isset($patches_ignore[$package->getName()])) { + foreach ($patches_ignore[$package->getName()] as $package_name => $patches) { + if (isset($extra['patches'][$package_name])) { + $extra['patches'][$package_name] = array_diff($extra['patches'][$package_name], $patches); + } + } + } + $this->patches = $this->arrayMergeRecursiveDistinct($this->patches, $extra['patches']); + } + // Unset installed patches for this package + if(isset($this->installedPatches[$package->getName()])) { + unset($this->installedPatches[$package->getName()]); + } + } + } + + // Merge installed patches from dependencies that did not receive an update. + foreach ($this->installedPatches as $patches) { + $this->patches = $this->arrayMergeRecursiveDistinct($this->patches, $patches); + } + + // If we're in verbose mode, list the projects we're going to patch. + if ($this->io->isVerbose()) { + foreach ($this->patches as $package => $patches) { + $number = count($patches); + $this->io->write('<info>Found ' . $number . ' patches for ' . $package . '.</info>'); + } + } + + // Make sure we don't gather patches again. Extra keys in $this->patches + // won't hurt anything, so we'll just stash it there. + $this->patches['_patchesGathered'] = TRUE; + } + + /** + * Get the patches from root composer or external file + * @return Patches + * @throws \Exception + */ + public function grabPatches() { + // First, try to get the patches from the root composer.json. + $extra = $this->composer->getPackage()->getExtra(); + if (isset($extra['patches'])) { + $this->io->write('<info>Gathering patches for root package.</info>'); + $patches = $extra['patches']; + return $patches; + } + // If it's not specified there, look for a patches-file definition. + elseif (isset($extra['patches-file'])) { + $this->io->write('<info>Gathering patches from patch file.</info>'); + $patches = file_get_contents($extra['patches-file']); + $patches = json_decode($patches, TRUE); + $error = json_last_error(); + if ($error != 0) { + switch ($error) { + case JSON_ERROR_DEPTH: + $msg = ' - Maximum stack depth exceeded'; + break; + case JSON_ERROR_STATE_MISMATCH: + $msg = ' - Underflow or the modes mismatch'; + break; + case JSON_ERROR_CTRL_CHAR: + $msg = ' - Unexpected control character found'; + break; + case JSON_ERROR_SYNTAX: + $msg = ' - Syntax error, malformed JSON'; + break; + case JSON_ERROR_UTF8: + $msg = ' - Malformed UTF-8 characters, possibly incorrectly encoded'; + break; + default: + $msg = ' - Unknown error'; + break; + } + throw new \Exception('There was an error in the supplied patches file:' . $msg); + } + if (isset($patches['patches'])) { + $patches = $patches['patches']; + return $patches; + } + elseif(!$patches) { + throw new \Exception('There was an error in the supplied patch file'); + } + } + else { + return array(); + } + } + + /** + * @param PackageEvent $event + * @throws \Exception + */ + public function postInstall(PackageEvent $event) { + + // Check if we should exit in failure. + $extra = $this->composer->getPackage()->getExtra(); + $exitOnFailure = getenv('COMPOSER_EXIT_ON_PATCH_FAILURE') || !empty($extra['composer-exit-on-patch-failure']); + $skipReporting = getenv('COMPOSER_PATCHES_SKIP_REPORTING') || !empty($extra['composer-patches-skip-reporting']); + + // Get the package object for the current operation. + $operation = $event->getOperation(); + /** @var PackageInterface $package */ + $package = $this->getPackageFromOperation($operation); + $package_name = $package->getName(); + + if (!isset($this->patches[$package_name])) { + if ($this->io->isVerbose()) { + $this->io->write('<info>No patches found for ' . $package_name . '.</info>'); + } + return; + } + $this->io->write(' - Applying patches for <info>' . $package_name . '</info>'); + + // Get the install path from the package object. + $manager = $event->getComposer()->getInstallationManager(); + $install_path = $manager->getInstaller($package->getType())->getInstallPath($package); + + // Set up a downloader. + $downloader = new RemoteFilesystem($this->io, $this->composer->getConfig()); + + // Track applied patches in the package info in installed.json + $localRepository = $this->composer->getRepositoryManager()->getLocalRepository(); + $localPackage = $localRepository->findPackage($package_name, $package->getVersion()); + $extra = $localPackage->getExtra(); + $extra['patches_applied'] = array(); + + foreach ($this->patches[$package_name] as $description => $url) { + $this->io->write(' <info>' . $url . '</info> (<comment>' . $description. '</comment>)'); + try { + $this->eventDispatcher->dispatch(NULL, new PatchEvent(PatchEvents::PRE_PATCH_APPLY, $package, $url, $description)); + $this->getAndApplyPatch($downloader, $install_path, $url, $package); + $this->eventDispatcher->dispatch(NULL, new PatchEvent(PatchEvents::POST_PATCH_APPLY, $package, $url, $description)); + $extra['patches_applied'][$description] = $url; + } + catch (\Exception $e) { + $this->io->write(' <error>Could not apply patch! Skipping. The error was: ' . $e->getMessage() . '</error>'); + if ($exitOnFailure) { + throw new \Exception("Cannot apply patch $description ($url)!"); + } + } + } + $localPackage->setExtra($extra); + + $this->io->write(''); + + if (true !== $skipReporting) { + $this->writePatchReport($this->patches[$package_name], $install_path); + } + } + + /** + * Get a Package object from an OperationInterface object. + * + * @param OperationInterface $operation + * @return PackageInterface + * @throws \Exception + */ + protected function getPackageFromOperation(OperationInterface $operation) { + if ($operation instanceof InstallOperation) { + $package = $operation->getPackage(); + } + elseif ($operation instanceof UpdateOperation) { + $package = $operation->getTargetPackage(); + } + else { + throw new \Exception('Unknown operation: ' . get_class($operation)); + } + + return $package; + } + + /** + * Apply a patch on code in the specified directory. + * + * @param RemoteFilesystem $downloader + * @param $install_path + * @param $patch_url + * @param PackageInterface $package + * @throws \Exception + */ + protected function getAndApplyPatch(RemoteFilesystem $downloader, $install_path, $patch_url, PackageInterface $package) { + + // Local patch file. + if (file_exists($patch_url)) { + $filename = realpath($patch_url); + } + else { + // Generate random (but not cryptographically so) filename. + $filename = uniqid(sys_get_temp_dir().'/') . ".patch"; + + // Download file from remote filesystem to this location. + $hostname = parse_url($patch_url, PHP_URL_HOST); + + try { + $downloader->copy($hostname, $patch_url, $filename, false); + } catch (\Exception $e) { + // In case of an exception, retry once as the download might + // have failed due to intermittent network issues. + $downloader->copy($hostname, $patch_url, $filename, false); + } + } + + // The order here is intentional. p1 is most likely to apply with git apply. + // p0 is next likely. p2 is extremely unlikely, but for some special cases, + // it might be useful. p4 is useful for Magento 2 patches + $patch_levels = array('-p1', '-p0', '-p2', '-p4'); + + // Check for specified patch level for this package. + $extra = $this->composer->getPackage()->getExtra(); + if (!empty($extra['patchLevel'][$package->getName()])){ + $patch_levels = array($extra['patchLevel'][$package->getName()]); + } + // Attempt to apply with git apply. + $patched = $this->applyPatchWithGit($install_path, $patch_levels, $filename); + + // In some rare cases, git will fail to apply a patch, fallback to using + // the 'patch' command. + if (!$patched) { + foreach ($patch_levels as $patch_level) { + // --no-backup-if-mismatch here is a hack that fixes some + // differences between how patch works on windows and unix. + if ($patched = $this->executeCommand("patch %s --no-backup-if-mismatch -d %s < %s", $patch_level, $install_path, $filename)) { + break; + } + } + } + + // Clean up the temporary patch file. + if (isset($hostname)) { + unlink($filename); + } + // If the patch *still* isn't applied, then give up and throw an Exception. + // Otherwise, let the user know it worked. + if (!$patched) { + throw new \Exception("Cannot apply patch $patch_url"); + } + } + + /** + * Checks if the root package enables patching. + * + * @return bool + * Whether patching is enabled. Defaults to TRUE. + */ + protected function isPatchingEnabled() { + $extra = $this->composer->getPackage()->getExtra(); + + if (empty($extra['patches']) && empty($extra['patches-ignore']) && !isset($extra['patches-file'])) { + // The root package has no patches of its own, so only allow patching if + // it has specifically opted in. + return isset($extra['enable-patching']) ? $extra['enable-patching'] : FALSE; + } + else { + return TRUE; + } + } + + /** + * Writes a patch report to the target directory. + * + * @param array $patches + * @param string $directory + */ + protected function writePatchReport($patches, $directory) { + $output = "This file was automatically generated by Composer Patches (https://github.com/cweagans/composer-patches)\n"; + $output .= "Patches applied to this directory:\n\n"; + foreach ($patches as $description => $url) { + $output .= $description . "\n"; + $output .= 'Source: ' . $url . "\n\n\n"; + } + file_put_contents($directory . "/PATCHES.txt", $output); + } + + /** + * Executes a shell command with escaping. + * + * @param string $cmd + * @return bool + */ + protected function executeCommand($cmd) { + // Shell-escape all arguments except the command. + $args = func_get_args(); + foreach ($args as $index => $arg) { + if ($index !== 0) { + $args[$index] = escapeshellarg($arg); + } + } + + // And replace the arguments. + $command = call_user_func_array('sprintf', $args); + $output = ''; + if ($this->io->isVerbose()) { + $this->io->write('<comment>' . $command . '</comment>'); + $io = $this->io; + $output = function ($type, $data) use ($io) { + if ($type == Process::ERR) { + $io->write('<error>' . $data . '</error>'); + } + else { + $io->write('<comment>' . $data . '</comment>'); + } + }; + } + return ($this->executor->execute($command, $output) == 0); + } + + /** + * Recursively merge arrays without changing data types of values. + * + * Does not change the data types of the values in the arrays. Matching keys' + * values in the second array overwrite those in the first array, as is the + * case with array_merge. + * + * @param array $array1 + * The first array. + * @param array $array2 + * The second array. + * @return array + * The merged array. + * + * @see http://php.net/manual/en/function.array-merge-recursive.php#92195 + */ + protected function arrayMergeRecursiveDistinct(array $array1, array $array2) { + $merged = $array1; + + foreach ($array2 as $key => &$value) { + if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { + $merged[$key] = $this->arrayMergeRecursiveDistinct($merged[$key], $value); + } + else { + $merged[$key] = $value; + } + } + + return $merged; + } + + /** + * Attempts to apply a patch with git apply. + * + * @param $install_path + * @param $patch_levels + * @param $filename + * + * @return bool + * TRUE if patch was applied, FALSE otherwise. + */ + protected function applyPatchWithGit($install_path, $patch_levels, $filename) { + // Do not use git apply unless the install path is itself a git repo + // @see https://stackoverflow.com/a/27283285 + if (!is_dir($install_path . '/.git')) { + return FALSE; + } + + $patched = FALSE; + foreach ($patch_levels as $patch_level) { + if ($this->io->isVerbose()) { + $comment = 'Testing ability to patch with git apply.'; + $comment .= ' This command may produce errors that can be safely ignored.'; + $this->io->write('<comment>' . $comment . '</comment>'); + } + $checked = $this->executeCommand('git -C %s apply --check -v %s %s', $install_path, $patch_level, $filename); + $output = $this->executor->getErrorOutput(); + if (substr($output, 0, 7) == 'Skipped') { + // Git will indicate success but silently skip patches in some scenarios. + // + // @see https://github.com/cweagans/composer-patches/pull/165 + $checked = FALSE; + } + if ($checked) { + // Apply the first successful style. + $patched = $this->executeCommand('git -C %s apply %s %s', $install_path, $patch_level, $filename); + break; + } + } + return $patched; + } + + /** + * Indicates if a package has been patched. + * + * @param \Composer\Package\PackageInterface $package + * The package to check. + * + * @return bool + * TRUE if the package has been patched. + */ + public static function isPackagePatched(PackageInterface $package) { + return array_key_exists('patches_applied', $package->getExtra()); + } + + /** + * {@inheritDoc} + */ + public function deactivate(Composer $composer, IOInterface $io) + { + } + + /** + * {@inheritDoc} + */ + public function uninstall(Composer $composer, IOInterface $io) + { + } + +} diff --git a/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php b/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php index 07cb43b..bad5070 100644 --- a/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php +++ b/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php @@ -11,6 +11,7 @@ use function array_reduce; use function assert; use function debug_backtrace; use function sprintf; +use function str_replace; use function strpos; use function strrpos; use function substr; @@ -138,7 +139,7 @@ class Deprecation // first check that the caller is not from a tests folder, in which case we always let deprecations pass if (isset($backtrace[1]['file'], $backtrace[0]['file']) && strpos($backtrace[1]['file'], DIRECTORY_SEPARATOR . 'tests' . DIRECTORY_SEPARATOR) === false) { - $path = DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . $package . DIRECTORY_SEPARATOR; + $path = DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $package) . DIRECTORY_SEPARATOR; if (strpos($backtrace[0]['file'], $path) === false) { return; diff --git a/vendor/ramsey/collection/src/AbstractArray.php b/vendor/ramsey/collection/src/AbstractArray.php index 1c88c7e..a8a164c 100644 --- a/vendor/ramsey/collection/src/AbstractArray.php +++ b/vendor/ramsey/collection/src/AbstractArray.php @@ -84,6 +84,7 @@ abstract class AbstractArray implements ArrayInterface * @return T|null the value stored at the offset, or null if the offset * does not exist. */ + #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->data[$offset] ?? null; @@ -132,6 +133,11 @@ abstract class AbstractArray implements ArrayInterface return serialize($this->data); } + public function __serialize() + { + return $this->serialize(); + } + /** * Converts a serialized string representation into an instance object. * @@ -149,6 +155,11 @@ abstract class AbstractArray implements ArrayInterface $this->data = $data; } + public function __unserialize(array $data) + { + $this->unserialize($data); + } + /** * Returns the number of items in this array. * diff --git a/vendor/react/event-loop/src/ExtUvLoop.php b/vendor/react/event-loop/src/ExtUvLoop.php index 631a459..4434720 100644 --- a/vendor/react/event-loop/src/ExtUvLoop.php +++ b/vendor/react/event-loop/src/ExtUvLoop.php @@ -13,7 +13,7 @@ use SplObjectStorage; * that provides an interface to `libuv` library. * `libuv` itself supports a number of system-specific backends (epoll, kqueue). * - * This loop is known to work with PHP 7.x. + * This loop is known to work with PHP 7+. * * @see https://github.com/bwoebi/php-uv */ diff --git a/vendor/react/event-loop/src/Timer/Timers.php b/vendor/react/event-loop/src/Timer/Timers.php index 3a33b8c..53c46d0 100644 --- a/vendor/react/event-loop/src/Timer/Timers.php +++ b/vendor/react/event-loop/src/Timer/Timers.php @@ -38,7 +38,7 @@ final class Timers public function add(TimerInterface $timer) { - $id = \spl_object_hash($timer); + $id = \PHP_VERSION_ID < 70200 ? \spl_object_hash($timer) : \spl_object_id($timer); $this->timers[$id] = $timer; $this->schedule[$id] = $timer->getInterval() + $this->updateTime(); $this->sorted = false; @@ -46,12 +46,13 @@ final class Timers public function contains(TimerInterface $timer) { - return isset($this->timers[\spl_object_hash($timer)]); + $id = \PHP_VERSION_ID < 70200 ? \spl_object_hash($timer) : \spl_object_id($timer); + return isset($this->timers[$id]); } public function cancel(TimerInterface $timer) { - $id = \spl_object_hash($timer); + $id = \PHP_VERSION_ID < 70200 ? \spl_object_hash($timer) : \spl_object_id($timer); unset($this->timers[$id], $this->schedule[$id]); } diff --git a/vendor/simshaun/recurr/composer.json b/vendor/simshaun/recurr/composer.json index b9b009f..5474da2 100644 --- a/vendor/simshaun/recurr/composer.json +++ b/vendor/simshaun/recurr/composer.json @@ -14,7 +14,7 @@ ], "require": { "php": "^7.2||^8.0", - "doctrine/collections": "~1.6" + "doctrine/collections": "~1.6||^2.0" }, "require-dev": { "phpunit/phpunit": "^8.5.16", |