[pkg-nagios-changes] [Git][nagios-team/icinga-php-library][master] 5 commits: New upstream version 0.13.1

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Thu Nov 16 04:45:40 GMT 2023



Bas Couwenberg pushed to branch master at Debian Nagios Maintainer Group / icinga-php-library


Commits:
35d3939e by Bas Couwenberg at 2023-11-16T05:38:32+01:00
New upstream version 0.13.1
- - - - -
9c5931a5 by Bas Couwenberg at 2023-11-16T05:38:43+01:00
Update upstream source from tag 'upstream/0.13.1'

Update to upstream version '0.13.1'
with Debian dir c9b0ebf2fefbf7209114b67fd474a72b176f2fa2
- - - - -
3813f0b4 by Bas Couwenberg at 2023-11-16T05:39:18+01:00
New upstream release.

- - - - -
fd807165 by Bas Couwenberg at 2023-11-16T05:41:11+01:00
Update copyright file.

- - - - -
baf2bea2 by Bas Couwenberg at 2023-11-16T05:41:25+01:00
Set distribution to unstable.

- - - - -


23 changed files:

- VERSION
- asset/js/widget/Completer.js
- composer.json
- composer.lock
- debian/changelog
- debian/copyright
- + patches/ramsey-collection.patch
- vendor/autoload.php
- vendor/composer/ClassLoader.php
- vendor/composer/autoload_psr4.php
- vendor/composer/autoload_real.php
- vendor/composer/autoload_static.php
- vendor/composer/installed.json
- vendor/composer/installed.php
- + vendor/cweagans/composer-patches/composer.json
- + vendor/cweagans/composer-patches/src/PatchEvent.php
- + vendor/cweagans/composer-patches/src/PatchEvents.php
- + vendor/cweagans/composer-patches/src/Patches.php
- vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php
- vendor/ramsey/collection/src/AbstractArray.php
- vendor/react/event-loop/src/ExtUvLoop.php
- vendor/react/event-loop/src/Timer/Timers.php
- vendor/simshaun/recurr/composer.json


Changes:

=====================================
VERSION
=====================================
@@ -1 +1 @@
-v0.13.0
+v0.13.1


=====================================
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') {


=====================================
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"
+            }
+        }
     }
 }


=====================================
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",
@@ -66,6 +66,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 at 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",
@@ -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"
 }


=====================================
debian/changelog
=====================================
@@ -1,3 +1,10 @@
+icinga-php-library (0.13.1-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Update copyright file.
+
+ -- Bas Couwenberg <sebastic at debian.org>  Thu, 16 Nov 2023 05:41:17 +0100
+
 icinga-php-library (0.13.0-1) unstable; urgency=medium
 
   * Move from experimental to unstable.


=====================================
debian/copyright
=====================================
@@ -43,6 +43,10 @@ Copyright: Nils Adermann <naderman at naderman.de>
            Jordi Boggiano <j.boggiano at seld.be>
 License: MIT
 
+Files: vendor/cweagans/composer-patches/*
+Copyright: Cameron Eagans <me at cweagans.net>
+License: BSD-3-clause
+
 Files: vendor/doctrine/collections/*
 Copyright: 2006-2013, Doctrine Project
 License: MIT


=====================================
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
+


=====================================
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();


=====================================
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()
     {


=====================================
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'),


=====================================
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;


=====================================
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);
     }


=====================================
vendor/composer/installed.json
=====================================
@@ -63,6 +63,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 at 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",
@@ -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"
         },


=====================================
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(),


=====================================
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 at 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"}
+  }
+}


=====================================
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;
+  }
+
+}


=====================================
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';
+
+}


=====================================
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)
+    {
+    }
+
+}


=====================================
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;


=====================================
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.
      *


=====================================
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
  */


=====================================
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]);
     }
 


=====================================
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",



View it on GitLab: https://salsa.debian.org/nagios-team/icinga-php-library/-/compare/c03258a25eeea6fd2dd08e248bdeed3c35ec9c4d...baf2bea211064be2d4d37fffcc7890e48a3e1b9a

-- 
View it on GitLab: https://salsa.debian.org/nagios-team/icinga-php-library/-/compare/c03258a25eeea6fd2dd08e248bdeed3c35ec9c4d...baf2bea211064be2d4d37fffcc7890e48a3e1b9a
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-nagios-changes/attachments/20231116/ebf31222/attachment-0001.htm>


More information about the pkg-nagios-changes mailing list