Browse Source

Update composer and dependences

Visman 3 years ago
parent
commit
4a81cbfa2e

+ 25 - 27
composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
         "This file is @generated automatically"
     ],
     ],
-    "content-hash": "4adcde13cbe258b0c3a57a127576d8fe",
+    "content-hash": "da7ccb828a77c43a0cb4be769bea107b",
     "packages": [
     "packages": [
         {
         {
             "name": "artoodetoo/dirk",
             "name": "artoodetoo/dirk",
@@ -12,12 +12,12 @@
             "source": {
             "source": {
                 "type": "git",
                 "type": "git",
                 "url": "https://github.com/MioVisman/dirk.git",
                 "url": "https://github.com/MioVisman/dirk.git",
-                "reference": "82c1ba51883c32c62e7eda121efcab5109acbbcc"
+                "reference": "32ce64305c87344bf6bfc48221643d374f6aa65b"
             },
             },
             "dist": {
             "dist": {
                 "type": "zip",
                 "type": "zip",
-                "url": "https://api.github.com/repos/MioVisman/dirk/zipball/82c1ba51883c32c62e7eda121efcab5109acbbcc",
-                "reference": "82c1ba51883c32c62e7eda121efcab5109acbbcc",
+                "url": "https://api.github.com/repos/MioVisman/dirk/zipball/32ce64305c87344bf6bfc48221643d374f6aa65b",
+                "reference": "32ce64305c87344bf6bfc48221643d374f6aa65b",
                 "shasum": ""
                 "shasum": ""
             },
             },
             "require": {
             "require": {
@@ -58,7 +58,7 @@
             "support": {
             "support": {
                 "source": "https://github.com/MioVisman/dirk/tree/visman"
                 "source": "https://github.com/MioVisman/dirk/tree/visman"
             },
             },
-            "time": "2020-10-16T13:32:17+00:00"
+            "time": "2021-02-06T14:10:06+00:00"
         },
         },
         {
         {
             "name": "miovisman/jevix",
             "name": "miovisman/jevix",
@@ -171,16 +171,16 @@
         },
         },
         {
         {
             "name": "miovisman/parserus",
             "name": "miovisman/parserus",
-            "version": "1.1.0",
+            "version": "1.2.0",
             "source": {
             "source": {
                 "type": "git",
                 "type": "git",
                 "url": "https://github.com/MioVisman/Parserus.git",
                 "url": "https://github.com/MioVisman/Parserus.git",
-                "reference": "fa93c5e26dd500bf2489bb4fe46a6d3046546c31"
+                "reference": "ed0900c73aa1685f0907d9eb0f7dafa7f85f33cc"
             },
             },
             "dist": {
             "dist": {
                 "type": "zip",
                 "type": "zip",
-                "url": "https://api.github.com/repos/MioVisman/Parserus/zipball/fa93c5e26dd500bf2489bb4fe46a6d3046546c31",
-                "reference": "fa93c5e26dd500bf2489bb4fe46a6d3046546c31",
+                "url": "https://api.github.com/repos/MioVisman/Parserus/zipball/ed0900c73aa1685f0907d9eb0f7dafa7f85f33cc",
+                "reference": "ed0900c73aa1685f0907d9eb0f7dafa7f85f33cc",
                 "shasum": ""
                 "shasum": ""
             },
             },
             "require": {
             "require": {
@@ -211,28 +211,27 @@
             ],
             ],
             "support": {
             "support": {
                 "issues": "https://github.com/MioVisman/Parserus/issues",
                 "issues": "https://github.com/MioVisman/Parserus/issues",
-                "source": "https://github.com/MioVisman/Parserus/tree/1.1.0"
+                "source": "https://github.com/MioVisman/Parserus/tree/1.2.0"
             },
             },
-            "time": "2021-02-24T11:22:35+00:00"
+            "time": "2022-01-08T13:04:33+00:00"
         },
         },
         {
         {
             "name": "psr/log",
             "name": "psr/log",
-            "version": "dev-master",
+            "version": "1.1.4",
             "source": {
             "source": {
                 "type": "git",
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "dd738d0b4491f32725492cf345f6b501f5922fec"
+                "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
             },
             },
             "dist": {
             "dist": {
                 "type": "zip",
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/dd738d0b4491f32725492cf345f6b501f5922fec",
-                "reference": "dd738d0b4491f32725492cf345f6b501f5922fec",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+                "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
                 "shasum": ""
                 "shasum": ""
             },
             },
             "require": {
             "require": {
                 "php": ">=5.3.0"
                 "php": ">=5.3.0"
             },
             },
-            "default-branch": true,
             "type": "library",
             "type": "library",
             "extra": {
             "extra": {
                 "branch-alias": {
                 "branch-alias": {
@@ -262,28 +261,27 @@
                 "psr-3"
                 "psr-3"
             ],
             ],
             "support": {
             "support": {
-                "source": "https://github.com/php-fig/log/tree/master"
+                "source": "https://github.com/php-fig/log/tree/1.1.4"
             },
             },
-            "time": "2020-09-18T06:44:51+00:00"
+            "time": "2021-05-03T11:20:27+00:00"
         },
         },
         {
         {
             "name": "psr/simple-cache",
             "name": "psr/simple-cache",
-            "version": "dev-master",
+            "version": "1.0.1",
             "source": {
             "source": {
                 "type": "git",
                 "type": "git",
                 "url": "https://github.com/php-fig/simple-cache.git",
                 "url": "https://github.com/php-fig/simple-cache.git",
-                "reference": "5a7b96b1dda5d957e01bc1bfe77dcca09c5a7474"
+                "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
             },
             },
             "dist": {
             "dist": {
                 "type": "zip",
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/5a7b96b1dda5d957e01bc1bfe77dcca09c5a7474",
-                "reference": "5a7b96b1dda5d957e01bc1bfe77dcca09c5a7474",
+                "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+                "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
                 "shasum": ""
                 "shasum": ""
             },
             },
             "require": {
             "require": {
                 "php": ">=5.3.0"
                 "php": ">=5.3.0"
             },
             },
-            "default-branch": true,
             "type": "library",
             "type": "library",
             "extra": {
             "extra": {
                 "branch-alias": {
                 "branch-alias": {
@@ -316,7 +314,7 @@
             "support": {
             "support": {
                 "source": "https://github.com/php-fig/simple-cache/tree/master"
                 "source": "https://github.com/php-fig/simple-cache/tree/master"
             },
             },
-            "time": "2020-04-21T06:43:17+00:00"
+            "time": "2017-10-23T01:57:42+00:00"
         }
         }
     ],
     ],
     "packages-dev": [],
     "packages-dev": [],
@@ -330,12 +328,12 @@
     "prefer-lowest": false,
     "prefer-lowest": false,
     "platform": {
     "platform": {
         "php": ">=7.3.0",
         "php": ">=7.3.0",
-        "ext-gd": "*",
         "ext-mbstring": "*",
         "ext-mbstring": "*",
         "ext-fileinfo": "*",
         "ext-fileinfo": "*",
         "ext-intl": "*",
         "ext-intl": "*",
-        "ext-json": "*"
+        "ext-json": "*",
+        "ext-pdo": "*"
     },
     },
     "platform-dev": [],
     "platform-dev": [],
-    "plugin-api-version": "2.0.0"
+    "plugin-api-version": "2.2.0"
 }
 }

+ 139 - 12
vendor/composer/ClassLoader.php

@@ -42,21 +42,75 @@ namespace Composer\Autoload;
  */
  */
 class ClassLoader
 class ClassLoader
 {
 {
+    /** @var ?string */
+    private $vendorDir;
+
     // PSR-4
     // PSR-4
+    /**
+     * @var array[]
+     * @psalm-var array<string, array<string, int>>
+     */
     private $prefixLengthsPsr4 = array();
     private $prefixLengthsPsr4 = array();
+    /**
+     * @var array[]
+     * @psalm-var array<string, array<int, string>>
+     */
     private $prefixDirsPsr4 = array();
     private $prefixDirsPsr4 = array();
+    /**
+     * @var array[]
+     * @psalm-var array<string, string>
+     */
     private $fallbackDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
 
     // PSR-0
     // PSR-0
+    /**
+     * @var array[]
+     * @psalm-var array<string, array<string, string[]>>
+     */
     private $prefixesPsr0 = array();
     private $prefixesPsr0 = array();
+    /**
+     * @var array[]
+     * @psalm-var array<string, string>
+     */
     private $fallbackDirsPsr0 = array();
     private $fallbackDirsPsr0 = array();
 
 
+    /** @var bool */
     private $useIncludePath = false;
     private $useIncludePath = false;
+
+    /**
+     * @var string[]
+     * @psalm-var array<string, string>
+     */
     private $classMap = array();
     private $classMap = array();
+
+    /** @var bool */
     private $classMapAuthoritative = false;
     private $classMapAuthoritative = false;
+
+    /**
+     * @var bool[]
+     * @psalm-var array<string, bool>
+     */
     private $missingClasses = array();
     private $missingClasses = array();
+
+    /** @var ?string */
     private $apcuPrefix;
     private $apcuPrefix;
 
 
+    /**
+     * @var self[]
+     */
+    private static $registeredLoaders = array();
+
+    /**
+     * @param ?string $vendorDir
+     */
+    public function __construct($vendorDir = null)
+    {
+        $this->vendorDir = $vendorDir;
+    }
+
+    /**
+     * @return string[]
+     */
     public function getPrefixes()
     public function getPrefixes()
     {
     {
         if (!empty($this->prefixesPsr0)) {
         if (!empty($this->prefixesPsr0)) {
@@ -66,28 +120,47 @@ class ClassLoader
         return array();
         return array();
     }
     }
 
 
+    /**
+     * @return array[]
+     * @psalm-return array<string, array<int, string>>
+     */
     public function getPrefixesPsr4()
     public function getPrefixesPsr4()
     {
     {
         return $this->prefixDirsPsr4;
         return $this->prefixDirsPsr4;
     }
     }
 
 
+    /**
+     * @return array[]
+     * @psalm-return array<string, string>
+     */
     public function getFallbackDirs()
     public function getFallbackDirs()
     {
     {
         return $this->fallbackDirsPsr0;
         return $this->fallbackDirsPsr0;
     }
     }
 
 
+    /**
+     * @return array[]
+     * @psalm-return array<string, string>
+     */
     public function getFallbackDirsPsr4()
     public function getFallbackDirsPsr4()
     {
     {
         return $this->fallbackDirsPsr4;
         return $this->fallbackDirsPsr4;
     }
     }
 
 
+    /**
+     * @return string[] Array of classname => path
+     * @psalm-return array<string, string>
+     */
     public function getClassMap()
     public function getClassMap()
     {
     {
         return $this->classMap;
         return $this->classMap;
     }
     }
 
 
     /**
     /**
-     * @param array $classMap Class to filename map
+     * @param string[] $classMap Class to filename map
+     * @psalm-param array<string, string> $classMap
+     *
+     * @return void
      */
      */
     public function addClassMap(array $classMap)
     public function addClassMap(array $classMap)
     {
     {
@@ -102,9 +175,11 @@ class ClassLoader
      * Registers a set of PSR-0 directories for a given prefix, either
      * Registers a set of PSR-0 directories for a given prefix, either
      * appending or prepending to the ones previously set for this prefix.
      * appending or prepending to the ones previously set for this prefix.
      *
      *
-     * @param string       $prefix  The prefix
-     * @param array|string $paths   The PSR-0 root directories
-     * @param bool         $prepend Whether to prepend the directories
+     * @param string          $prefix  The prefix
+     * @param 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)
     public function add($prefix, $paths, $prepend = false)
     {
     {
@@ -147,11 +222,13 @@ class ClassLoader
      * Registers a set of PSR-4 directories for a given namespace, either
      * Registers a set of PSR-4 directories for a given namespace, either
      * appending or prepending to the ones previously set for this namespace.
      * appending or prepending to the ones previously set for this namespace.
      *
      *
-     * @param string       $prefix  The prefix/namespace, with trailing '\\'
-     * @param array|string $paths   The PSR-4 base directories
-     * @param bool         $prepend Whether to prepend the directories
+     * @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
      *
      *
      * @throws \InvalidArgumentException
      * @throws \InvalidArgumentException
+     *
+     * @return void
      */
      */
     public function addPsr4($prefix, $paths, $prepend = false)
     public function addPsr4($prefix, $paths, $prepend = false)
     {
     {
@@ -195,8 +272,10 @@ class ClassLoader
      * Registers a set of PSR-0 directories for a given prefix,
      * Registers a set of PSR-0 directories for a given prefix,
      * replacing any others previously set for this prefix.
      * replacing any others previously set for this prefix.
      *
      *
-     * @param string       $prefix The prefix
-     * @param array|string $paths  The PSR-0 base directories
+     * @param string          $prefix The prefix
+     * @param string[]|string $paths  The PSR-0 base directories
+     *
+     * @return void
      */
      */
     public function set($prefix, $paths)
     public function set($prefix, $paths)
     {
     {
@@ -211,10 +290,12 @@ class ClassLoader
      * Registers a set of PSR-4 directories for a given namespace,
      * Registers a set of PSR-4 directories for a given namespace,
      * replacing any others previously set for this namespace.
      * replacing any others previously set for this namespace.
      *
      *
-     * @param string       $prefix The prefix/namespace, with trailing '\\'
-     * @param array|string $paths  The PSR-4 base directories
+     * @param string          $prefix The prefix/namespace, with trailing '\\'
+     * @param string[]|string $paths  The PSR-4 base directories
      *
      *
      * @throws \InvalidArgumentException
      * @throws \InvalidArgumentException
+     *
+     * @return void
      */
      */
     public function setPsr4($prefix, $paths)
     public function setPsr4($prefix, $paths)
     {
     {
@@ -234,6 +315,8 @@ class ClassLoader
      * Turns on searching the include path for class files.
      * Turns on searching the include path for class files.
      *
      *
      * @param bool $useIncludePath
      * @param bool $useIncludePath
+     *
+     * @return void
      */
      */
     public function setUseIncludePath($useIncludePath)
     public function setUseIncludePath($useIncludePath)
     {
     {
@@ -256,6 +339,8 @@ class ClassLoader
      * that have not been registered with the class map.
      * that have not been registered with the class map.
      *
      *
      * @param bool $classMapAuthoritative
      * @param bool $classMapAuthoritative
+     *
+     * @return void
      */
      */
     public function setClassMapAuthoritative($classMapAuthoritative)
     public function setClassMapAuthoritative($classMapAuthoritative)
     {
     {
@@ -276,6 +361,8 @@ class ClassLoader
      * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
      * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
      *
      *
      * @param string|null $apcuPrefix
      * @param string|null $apcuPrefix
+     *
+     * @return void
      */
      */
     public function setApcuPrefix($apcuPrefix)
     public function setApcuPrefix($apcuPrefix)
     {
     {
@@ -296,25 +383,44 @@ class ClassLoader
      * Registers this instance as an autoloader.
      * Registers this instance as an autoloader.
      *
      *
      * @param bool $prepend Whether to prepend the autoloader or not
      * @param bool $prepend Whether to prepend the autoloader or not
+     *
+     * @return void
      */
      */
     public function register($prepend = false)
     public function register($prepend = false)
     {
     {
         spl_autoload_register(array($this, 'loadClass'), true, $prepend);
         spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+        if (null === $this->vendorDir) {
+            return;
+        }
+
+        if ($prepend) {
+            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+        } else {
+            unset(self::$registeredLoaders[$this->vendorDir]);
+            self::$registeredLoaders[$this->vendorDir] = $this;
+        }
     }
     }
 
 
     /**
     /**
      * Unregisters this instance as an autoloader.
      * Unregisters this instance as an autoloader.
+     *
+     * @return void
      */
      */
     public function unregister()
     public function unregister()
     {
     {
         spl_autoload_unregister(array($this, 'loadClass'));
         spl_autoload_unregister(array($this, 'loadClass'));
+
+        if (null !== $this->vendorDir) {
+            unset(self::$registeredLoaders[$this->vendorDir]);
+        }
     }
     }
 
 
     /**
     /**
      * Loads the given class or interface.
      * Loads the given class or interface.
      *
      *
      * @param  string    $class The name of the class
      * @param  string    $class The name of the class
-     * @return bool|null True if loaded, null otherwise
+     * @return true|null True if loaded, null otherwise
      */
      */
     public function loadClass($class)
     public function loadClass($class)
     {
     {
@@ -323,6 +429,8 @@ class ClassLoader
 
 
             return true;
             return true;
         }
         }
+
+        return null;
     }
     }
 
 
     /**
     /**
@@ -367,6 +475,21 @@ class ClassLoader
         return $file;
         return $file;
     }
     }
 
 
+    /**
+     * Returns the currently registered loaders indexed by their corresponding vendor directories.
+     *
+     * @return self[]
+     */
+    public static function getRegisteredLoaders()
+    {
+        return self::$registeredLoaders;
+    }
+
+    /**
+     * @param  string       $class
+     * @param  string       $ext
+     * @return string|false
+     */
     private function findFileWithExtension($class, $ext)
     private function findFileWithExtension($class, $ext)
     {
     {
         // PSR-4 lookup
         // PSR-4 lookup
@@ -438,6 +561,10 @@ class ClassLoader
  * Scope isolated include.
  * Scope isolated include.
  *
  *
  * Prevents access to $this/self from included files.
  * Prevents access to $this/self from included files.
+ *
+ * @param  string $file
+ * @return void
+ * @private
  */
  */
 function includeFile($file)
 function includeFile($file)
 {
 {

+ 340 - 267
vendor/composer/InstalledVersions.php

@@ -1,277 +1,350 @@
 <?php
 <?php
 
 
-
-
-
-
-
-
-
-
-
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
 
 
 namespace Composer;
 namespace Composer;
 
 
+use Composer\Autoload\ClassLoader;
 use Composer\Semver\VersionParser;
 use Composer\Semver\VersionParser;
 
 
-
-
-
-
-
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ */
 class InstalledVersions
 class InstalledVersions
 {
 {
-private static $installed = array (
-  'root' => 
-  array (
-    'pretty_version' => '1.0.0+no-version-set',
-    'version' => '1.0.0.0',
-    'aliases' => 
-    array (
-    ),
-    'reference' => NULL,
-    'name' => 'forkbb/forkbb',
-  ),
-  'versions' => 
-  array (
-    'artoodetoo/dirk' => 
-    array (
-      'pretty_version' => 'dev-visman',
-      'version' => 'dev-visman',
-      'aliases' => 
-      array (
-        0 => '9999999-dev',
-      ),
-      'reference' => '82c1ba51883c32c62e7eda121efcab5109acbbcc',
-    ),
-    'forkbb/forkbb' => 
-    array (
-      'pretty_version' => '1.0.0+no-version-set',
-      'version' => '1.0.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => NULL,
-    ),
-    'miovisman/jevix' => 
-    array (
-      'pretty_version' => '2.2.1',
-      'version' => '2.2.1.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'bd9807b8e3ea26567e775ee1d372b417440b1198',
-    ),
-    'miovisman/normemail' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '9999999-dev',
-      ),
-      'reference' => '2e657463266b1249e97d15c6795dd14248097cb3',
-    ),
-    'miovisman/parserus' => 
-    array (
-      'pretty_version' => '1.1.0',
-      'version' => '1.1.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'fa93c5e26dd500bf2489bb4fe46a6d3046546c31',
-    ),
-    'psr/log' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '1.1.x-dev',
-      ),
-      'reference' => 'dd738d0b4491f32725492cf345f6b501f5922fec',
-    ),
-    'psr/simple-cache' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '1.0.x-dev',
-      ),
-      'reference' => '5a7b96b1dda5d957e01bc1bfe77dcca09c5a7474',
-    ),
-  ),
-);
-
-
-
-
-
-
-
-public static function getInstalledPackages()
-{
-return array_keys(self::$installed['versions']);
-}
-
-
-
-
-
-
-
-
-
-public static function isInstalled($packageName)
-{
-return isset(self::$installed['versions'][$packageName]);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function satisfies(VersionParser $parser, $packageName, $constraint)
-{
-$constraint = $parser->parseConstraints($constraint);
-$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
-
-return $provided->matches($constraint);
-}
-
-
-
-
-
-
-
-
-
-
-public static function getVersionRanges($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-$ranges = array();
-if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
-$ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
-}
-if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
-}
-if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
-}
-if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
-}
-
-return implode(' || ', $ranges);
-}
-
-
-
-
-
-public static function getVersion($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-if (!isset(self::$installed['versions'][$packageName]['version'])) {
-return null;
-}
-
-return self::$installed['versions'][$packageName]['version'];
-}
-
-
-
-
-
-public static function getPrettyVersion($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
-return null;
-}
-
-return self::$installed['versions'][$packageName]['pretty_version'];
-}
-
-
-
-
-
-public static function getReference($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-if (!isset(self::$installed['versions'][$packageName]['reference'])) {
-return null;
-}
-
-return self::$installed['versions'][$packageName]['reference'];
-}
-
-
-
-
-
-public static function getRootPackage()
-{
-return self::$installed['root'];
-}
-
-
-
-
-
-
-
-public static function getRawData()
-{
-return self::$installed;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function reload($data)
-{
-self::$installed = $data;
-}
+    /**
+     * @var mixed[]|null
+     * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
+     */
+    private static $installed;
+
+    /**
+     * @var bool|null
+     */
+    private static $canGetVendors;
+
+    /**
+     * @var array[]
+     * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+     */
+    private static $installedByVendor = array();
+
+    /**
+     * Returns a list of all package names which are present, either by being installed, replaced or provided
+     *
+     * @return string[]
+     * @psalm-return list<string>
+     */
+    public static function getInstalledPackages()
+    {
+        $packages = array();
+        foreach (self::getInstalled() as $installed) {
+            $packages[] = array_keys($installed['versions']);
+        }
+
+        if (1 === \count($packages)) {
+            return $packages[0];
+        }
+
+        return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+    }
+
+    /**
+     * Returns a list of all package names with a specific type e.g. 'library'
+     *
+     * @param  string   $type
+     * @return string[]
+     * @psalm-return list<string>
+     */
+    public static function getInstalledPackagesByType($type)
+    {
+        $packagesByType = array();
+
+        foreach (self::getInstalled() as $installed) {
+            foreach ($installed['versions'] as $name => $package) {
+                if (isset($package['type']) && $package['type'] === $type) {
+                    $packagesByType[] = $name;
+                }
+            }
+        }
+
+        return $packagesByType;
+    }
+
+    /**
+     * Checks whether the given package is installed
+     *
+     * This also returns true if the package name is provided or replaced by another package
+     *
+     * @param  string $packageName
+     * @param  bool   $includeDevRequirements
+     * @return bool
+     */
+    public static function isInstalled($packageName, $includeDevRequirements = true)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (isset($installed['versions'][$packageName])) {
+                return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Checks whether the given package satisfies a version constraint
+     *
+     * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+     *
+     *   Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+     *
+     * @param  VersionParser $parser      Install composer/semver to have access to this class and functionality
+     * @param  string        $packageName
+     * @param  string|null   $constraint  A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+     * @return bool
+     */
+    public static function satisfies(VersionParser $parser, $packageName, $constraint)
+    {
+        $constraint = $parser->parseConstraints($constraint);
+        $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+        return $provided->matches($constraint);
+    }
+
+    /**
+     * Returns a version constraint representing all the range(s) which are installed for a given package
+     *
+     * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+     * whether a given version of a package is installed, and not just whether it exists
+     *
+     * @param  string $packageName
+     * @return string Version constraint usable with composer/semver
+     */
+    public static function getVersionRanges($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            $ranges = array();
+            if (isset($installed['versions'][$packageName]['pretty_version'])) {
+                $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+            }
+            if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+                $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+            }
+            if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+                $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+            }
+            if (array_key_exists('provided', $installed['versions'][$packageName])) {
+                $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+            }
+
+            return implode(' || ', $ranges);
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @param  string      $packageName
+     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+     */
+    public static function getVersion($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            if (!isset($installed['versions'][$packageName]['version'])) {
+                return null;
+            }
+
+            return $installed['versions'][$packageName]['version'];
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @param  string      $packageName
+     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+     */
+    public static function getPrettyVersion($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+                return null;
+            }
+
+            return $installed['versions'][$packageName]['pretty_version'];
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @param  string      $packageName
+     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+     */
+    public static function getReference($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            if (!isset($installed['versions'][$packageName]['reference'])) {
+                return null;
+            }
+
+            return $installed['versions'][$packageName]['reference'];
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @param  string      $packageName
+     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+     */
+    public static function getInstallPath($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @return array
+     * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
+     */
+    public static function getRootPackage()
+    {
+        $installed = self::getInstalled();
+
+        return $installed[0]['root'];
+    }
+
+    /**
+     * Returns the raw installed.php data for custom implementations
+     *
+     * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+     * @return array[]
+     * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
+     */
+    public static function getRawData()
+    {
+        @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+        if (null === self::$installed) {
+            // only require the installed.php file if this file is loaded from its dumped location,
+            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+            if (substr(__DIR__, -8, 1) !== 'C') {
+                self::$installed = include __DIR__ . '/installed.php';
+            } else {
+                self::$installed = array();
+            }
+        }
+
+        return self::$installed;
+    }
+
+    /**
+     * Returns the raw data of all installed.php which are currently loaded for custom implementations
+     *
+     * @return array[]
+     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+     */
+    public static function getAllRawData()
+    {
+        return self::getInstalled();
+    }
+
+    /**
+     * Lets you reload the static array from another file
+     *
+     * This is only useful for complex integrations in which a project needs to use
+     * this class but then also needs to execute another project's autoloader in process,
+     * and wants to ensure both projects have access to their version of installed.php.
+     *
+     * A typical case would be PHPUnit, where it would need to make sure it reads all
+     * the data it needs from this class, then call reload() with
+     * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+     * the project in which it runs can then also use this class safely, without
+     * interference between PHPUnit's dependencies and the project's dependencies.
+     *
+     * @param  array[] $data A vendor/composer/installed.php data set
+     * @return void
+     *
+     * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
+     */
+    public static function reload($data)
+    {
+        self::$installed = $data;
+        self::$installedByVendor = array();
+    }
+
+    /**
+     * @return array[]
+     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+     */
+    private static function getInstalled()
+    {
+        if (null === self::$canGetVendors) {
+            self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+        }
+
+        $installed = array();
+
+        if (self::$canGetVendors) {
+            foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+                if (isset(self::$installedByVendor[$vendorDir])) {
+                    $installed[] = self::$installedByVendor[$vendorDir];
+                } elseif (is_file($vendorDir.'/composer/installed.php')) {
+                    $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
+                    if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+                        self::$installed = $installed[count($installed) - 1];
+                    }
+                }
+            }
+        }
+
+        if (null === self::$installed) {
+            // only require the installed.php file if this file is loaded from its dumped location,
+            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+            if (substr(__DIR__, -8, 1) !== 'C') {
+                self::$installed = require __DIR__ . '/installed.php';
+            } else {
+                self::$installed = array();
+            }
+        }
+        $installed[] = self::$installed;
+
+        return $installed;
+    }
 }
 }

+ 1 - 1
vendor/composer/autoload_real.php

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

+ 28 - 25
vendor/composer/installed.json

@@ -7,12 +7,12 @@
             "source": {
             "source": {
                 "type": "git",
                 "type": "git",
                 "url": "https://github.com/MioVisman/dirk.git",
                 "url": "https://github.com/MioVisman/dirk.git",
-                "reference": "82c1ba51883c32c62e7eda121efcab5109acbbcc"
+                "reference": "32ce64305c87344bf6bfc48221643d374f6aa65b"
             },
             },
             "dist": {
             "dist": {
                 "type": "zip",
                 "type": "zip",
-                "url": "https://api.github.com/repos/MioVisman/dirk/zipball/82c1ba51883c32c62e7eda121efcab5109acbbcc",
-                "reference": "82c1ba51883c32c62e7eda121efcab5109acbbcc",
+                "url": "https://api.github.com/repos/MioVisman/dirk/zipball/32ce64305c87344bf6bfc48221643d374f6aa65b",
+                "reference": "32ce64305c87344bf6bfc48221643d374f6aa65b",
                 "shasum": ""
                 "shasum": ""
             },
             },
             "require": {
             "require": {
@@ -21,7 +21,8 @@
             "require-dev": {
             "require-dev": {
                 "phpunit/phpunit": "4.0.*"
                 "phpunit/phpunit": "4.0.*"
             },
             },
-            "time": "2020-10-16T13:32:17+00:00",
+            "time": "2021-02-06T14:10:06+00:00",
+            "default-branch": true,
             "type": "library",
             "type": "library",
             "installation-source": "dist",
             "installation-source": "dist",
             "autoload": {
             "autoload": {
@@ -168,23 +169,23 @@
         },
         },
         {
         {
             "name": "miovisman/parserus",
             "name": "miovisman/parserus",
-            "version": "1.1.0",
-            "version_normalized": "1.1.0.0",
+            "version": "1.2.0",
+            "version_normalized": "1.2.0.0",
             "source": {
             "source": {
                 "type": "git",
                 "type": "git",
                 "url": "https://github.com/MioVisman/Parserus.git",
                 "url": "https://github.com/MioVisman/Parserus.git",
-                "reference": "fa93c5e26dd500bf2489bb4fe46a6d3046546c31"
+                "reference": "ed0900c73aa1685f0907d9eb0f7dafa7f85f33cc"
             },
             },
             "dist": {
             "dist": {
                 "type": "zip",
                 "type": "zip",
-                "url": "https://api.github.com/repos/MioVisman/Parserus/zipball/fa93c5e26dd500bf2489bb4fe46a6d3046546c31",
-                "reference": "fa93c5e26dd500bf2489bb4fe46a6d3046546c31",
+                "url": "https://api.github.com/repos/MioVisman/Parserus/zipball/ed0900c73aa1685f0907d9eb0f7dafa7f85f33cc",
+                "reference": "ed0900c73aa1685f0907d9eb0f7dafa7f85f33cc",
                 "shasum": ""
                 "shasum": ""
             },
             },
             "require": {
             "require": {
                 "php": ">=7.3.0"
                 "php": ">=7.3.0"
             },
             },
-            "time": "2021-02-24T11:22:35+00:00",
+            "time": "2022-01-08T13:04:33+00:00",
             "type": "library",
             "type": "library",
             "installation-source": "dist",
             "installation-source": "dist",
             "autoload": {
             "autoload": {
@@ -211,30 +212,29 @@
             ],
             ],
             "support": {
             "support": {
                 "issues": "https://github.com/MioVisman/Parserus/issues",
                 "issues": "https://github.com/MioVisman/Parserus/issues",
-                "source": "https://github.com/MioVisman/Parserus/tree/1.1.0"
+                "source": "https://github.com/MioVisman/Parserus/tree/1.2.0"
             },
             },
             "install-path": "../miovisman/parserus"
             "install-path": "../miovisman/parserus"
         },
         },
         {
         {
             "name": "psr/log",
             "name": "psr/log",
-            "version": "dev-master",
-            "version_normalized": "dev-master",
+            "version": "1.1.4",
+            "version_normalized": "1.1.4.0",
             "source": {
             "source": {
                 "type": "git",
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "dd738d0b4491f32725492cf345f6b501f5922fec"
+                "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
             },
             },
             "dist": {
             "dist": {
                 "type": "zip",
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/dd738d0b4491f32725492cf345f6b501f5922fec",
-                "reference": "dd738d0b4491f32725492cf345f6b501f5922fec",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+                "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
                 "shasum": ""
                 "shasum": ""
             },
             },
             "require": {
             "require": {
                 "php": ">=5.3.0"
                 "php": ">=5.3.0"
             },
             },
-            "time": "2020-09-18T06:44:51+00:00",
-            "default-branch": true,
+            "time": "2021-05-03T11:20:27+00:00",
             "type": "library",
             "type": "library",
             "extra": {
             "extra": {
                 "branch-alias": {
                 "branch-alias": {
@@ -265,29 +265,29 @@
                 "psr-3"
                 "psr-3"
             ],
             ],
             "support": {
             "support": {
-                "source": "https://github.com/php-fig/log/tree/master"
+                "source": "https://github.com/php-fig/log/tree/1.1.4"
             },
             },
             "install-path": "../psr/log"
             "install-path": "../psr/log"
         },
         },
         {
         {
             "name": "psr/simple-cache",
             "name": "psr/simple-cache",
-            "version": "dev-master",
-            "version_normalized": "dev-master",
+            "version": "1.0.1",
+            "version_normalized": "1.0.1.0",
             "source": {
             "source": {
                 "type": "git",
                 "type": "git",
                 "url": "https://github.com/php-fig/simple-cache.git",
                 "url": "https://github.com/php-fig/simple-cache.git",
-                "reference": "5a7b96b1dda5d957e01bc1bfe77dcca09c5a7474"
+                "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
             },
             },
             "dist": {
             "dist": {
                 "type": "zip",
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/5a7b96b1dda5d957e01bc1bfe77dcca09c5a7474",
-                "reference": "5a7b96b1dda5d957e01bc1bfe77dcca09c5a7474",
+                "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+                "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
                 "shasum": ""
                 "shasum": ""
             },
             },
             "require": {
             "require": {
                 "php": ">=5.3.0"
                 "php": ">=5.3.0"
             },
             },
-            "time": "2020-04-21T06:43:17+00:00",
+            "time": "2017-10-23T01:57:42+00:00",
             "type": "library",
             "type": "library",
             "extra": {
             "extra": {
                 "branch-alias": {
                 "branch-alias": {
@@ -318,6 +318,9 @@
                 "psr-16",
                 "psr-16",
                 "simple-cache"
                 "simple-cache"
             ],
             ],
+            "support": {
+                "source": "https://github.com/php-fig/simple-cache/tree/master"
+            },
             "install-path": "../psr/simple-cache"
             "install-path": "../psr/simple-cache"
         }
         }
     ],
     ],

+ 78 - 79
vendor/composer/installed.php

@@ -1,82 +1,81 @@
-<?php return array (
-  'root' => 
-  array (
-    'pretty_version' => '1.0.0+no-version-set',
-    'version' => '1.0.0.0',
-    'aliases' => 
-    array (
+<?php return array(
+    'root' => array(
+        'pretty_version' => '1.0.0+no-version-set',
+        'version' => '1.0.0.0',
+        'type' => 'project',
+        'install_path' => __DIR__ . '/../../',
+        'aliases' => array(),
+        'reference' => NULL,
+        'name' => 'forkbb/forkbb',
+        'dev' => true,
     ),
     ),
-    'reference' => NULL,
-    'name' => 'forkbb/forkbb',
-  ),
-  'versions' => 
-  array (
-    'artoodetoo/dirk' => 
-    array (
-      'pretty_version' => 'dev-visman',
-      'version' => 'dev-visman',
-      'aliases' => 
-      array (
-        0 => '9999999-dev',
-      ),
-      'reference' => '82c1ba51883c32c62e7eda121efcab5109acbbcc',
+    'versions' => array(
+        'artoodetoo/dirk' => array(
+            'pretty_version' => 'dev-visman',
+            'version' => 'dev-visman',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../artoodetoo/dirk',
+            'aliases' => array(
+                0 => '9999999-dev',
+            ),
+            'reference' => '32ce64305c87344bf6bfc48221643d374f6aa65b',
+            'dev_requirement' => false,
+        ),
+        'forkbb/forkbb' => array(
+            'pretty_version' => '1.0.0+no-version-set',
+            'version' => '1.0.0.0',
+            'type' => 'project',
+            'install_path' => __DIR__ . '/../../',
+            'aliases' => array(),
+            'reference' => NULL,
+            'dev_requirement' => false,
+        ),
+        'miovisman/jevix' => array(
+            'pretty_version' => '2.2.1',
+            'version' => '2.2.1.0',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../miovisman/jevix',
+            'aliases' => array(),
+            'reference' => 'bd9807b8e3ea26567e775ee1d372b417440b1198',
+            'dev_requirement' => false,
+        ),
+        'miovisman/normemail' => array(
+            'pretty_version' => 'dev-master',
+            'version' => 'dev-master',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../miovisman/normemail',
+            'aliases' => array(
+                0 => '9999999-dev',
+            ),
+            'reference' => '2e657463266b1249e97d15c6795dd14248097cb3',
+            'dev_requirement' => false,
+        ),
+        'miovisman/parserus' => array(
+            'pretty_version' => '1.2.0',
+            'version' => '1.2.0.0',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../miovisman/parserus',
+            'aliases' => array(),
+            'reference' => 'ed0900c73aa1685f0907d9eb0f7dafa7f85f33cc',
+            'dev_requirement' => false,
+        ),
+        'psr/log' => array(
+            'pretty_version' => '1.1.4',
+            'version' => '1.1.4.0',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../psr/log',
+            'aliases' => array(),
+            'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
+            'dev_requirement' => false,
+        ),
+        'psr/simple-cache' => array(
+            'pretty_version' => '1.0.1',
+            'version' => '1.0.1.0',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../psr/simple-cache',
+            'aliases' => array(),
+            'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
+            'dev_requirement' => false,
+        ),
     ),
     ),
-    'forkbb/forkbb' => 
-    array (
-      'pretty_version' => '1.0.0+no-version-set',
-      'version' => '1.0.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => NULL,
-    ),
-    'miovisman/jevix' => 
-    array (
-      'pretty_version' => '2.2.1',
-      'version' => '2.2.1.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'bd9807b8e3ea26567e775ee1d372b417440b1198',
-    ),
-    'miovisman/normemail' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '9999999-dev',
-      ),
-      'reference' => '2e657463266b1249e97d15c6795dd14248097cb3',
-    ),
-    'miovisman/parserus' => 
-    array (
-      'pretty_version' => '1.1.0',
-      'version' => '1.1.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'fa93c5e26dd500bf2489bb4fe46a6d3046546c31',
-    ),
-    'psr/log' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '1.1.x-dev',
-      ),
-      'reference' => 'dd738d0b4491f32725492cf345f6b501f5922fec',
-    ),
-    'psr/simple-cache' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '1.0.x-dev',
-      ),
-      'reference' => '5a7b96b1dda5d957e01bc1bfe77dcca09c5a7474',
-    ),
-  ),
 );
 );

+ 1 - 1
vendor/miovisman/parserus/LICENSE

@@ -1,6 +1,6 @@
 MIT License
 MIT License
 
 
-Copyright (c) 2016-2021 Visman
+Copyright (c) 2016-2022 Visman (mio.visman@yandex.ru)
 
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 of this software and associated documentation files (the "Software"), to deal

+ 19 - 11
vendor/miovisman/parserus/Parserus.php

@@ -1,7 +1,7 @@
 <?php
 <?php
 
 
 /**
 /**
- * @copyright  Copyright (c) 2016-2021 Visman. All rights reserved.
+ * @copyright  Copyright (c) 2016-2022 Visman. All rights reserved.
  * @author     Visman <mio.visman@yandex.ru>
  * @author     Visman <mio.visman@yandex.ru>
  * @link       https://github.com/MioVisman/Parserus
  * @link       https://github.com/MioVisman/Parserus
  * @license    https://opensource.org/licenses/MIT The MIT License (MIT)
  * @license    https://opensource.org/licenses/MIT The MIT License (MIT)
@@ -1207,15 +1207,11 @@ class Parserus
     public function detectUrls(): self
     public function detectUrls(): self
     {
     {
         $pattern = '%\b(?<=\s|^)
         $pattern = '%\b(?<=\s|^)
-            (?>(?:ht|f)tps?://|www\.|ftp\.)
-            (?:[\p{L}\p{N}]+(?:[\p{L}\p{N}\-]*[\p{L}\p{N}])?\.)+
-            \p{L}[\p{L}\p{N}\-]*[\p{L}\p{N}]
-            (?::\d{1,5})?
-            (?:/
-                (?:[\p{L}\p{N};:@&=$_.+!*\'"(),\%/-]+)?
-                (?:\?[\p{L}\p{N};:@&=$_.+!*\'"(),\%-]+)?
-                (?:\#[\p{L}\p{N}-]+)?
-            )?%xu';
+            (?:(?:https?|ftp)://|(?:www|ftp)\.)
+            (?:\b[\p{L}\p{N}\-]++\b\.?){2,}
+            (?<!\.)
+            (?:[/?#][^\s]*(?<!\.))?
+            (?=\.?(?:\s|$))%xu';
 
 
         return $this->detect('url', $pattern, true);
         return $this->detect('url', $pattern, true);
     }
     }
@@ -1374,7 +1370,7 @@ class Parserus
      *
      *
      * @param  array $lang   Массив строк шаблонов описания ошибок
      * @param  array $lang   Массив строк шаблонов описания ошибок
      * @param  array $errors Массив, который дополняется ошибками
      * @param  array $errors Массив, который дополняется ошибками
-     * @param  bool  $retTpl Флаг возрата результата в виде массива с шаблоном в первом элементе
+     * @param  bool  $retTpl Флаг возврата результата в виде массива с шаблоном в первом элементе для каждой ошибки
      *
      *
      * @return array
      * @return array
      */
      */
@@ -1413,4 +1409,16 @@ class Parserus
     {
     {
         return htmlspecialchars($text, $this->eFlags, 'UTF-8');
         return htmlspecialchars($text, $this->eFlags, 'UTF-8');
     }
     }
+
+    /**
+     * Метод преобразует специальные HTML-сущности обратно в соответствующие символы
+     *
+     * @param  string $text
+     *
+     * @return string
+     */
+    public function de(string $text): string
+    {
+        return htmlspecialchars_decode($text, $this->eFlags);
+    }
 }
 }

+ 16 - 16
vendor/psr/log/Psr/Log/AbstractLogger.php

@@ -14,8 +14,8 @@ abstract class AbstractLogger implements LoggerInterface
     /**
     /**
      * System is unusable.
      * System is unusable.
      *
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      *
      * @return void
      * @return void
      */
      */
@@ -30,8 +30,8 @@ abstract class AbstractLogger implements LoggerInterface
      * Example: Entire website down, database unavailable, etc. This should
      * Example: Entire website down, database unavailable, etc. This should
      * trigger the SMS alerts and wake you up.
      * trigger the SMS alerts and wake you up.
      *
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      *
      * @return void
      * @return void
      */
      */
@@ -45,8 +45,8 @@ abstract class AbstractLogger implements LoggerInterface
      *
      *
      * Example: Application component unavailable, unexpected exception.
      * Example: Application component unavailable, unexpected exception.
      *
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      *
      * @return void
      * @return void
      */
      */
@@ -59,8 +59,8 @@ abstract class AbstractLogger implements LoggerInterface
      * Runtime errors that do not require immediate action but should typically
      * Runtime errors that do not require immediate action but should typically
      * be logged and monitored.
      * be logged and monitored.
      *
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      *
      * @return void
      * @return void
      */
      */
@@ -75,8 +75,8 @@ abstract class AbstractLogger implements LoggerInterface
      * Example: Use of deprecated APIs, poor use of an API, undesirable things
      * Example: Use of deprecated APIs, poor use of an API, undesirable things
      * that are not necessarily wrong.
      * that are not necessarily wrong.
      *
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      *
      * @return void
      * @return void
      */
      */
@@ -88,8 +88,8 @@ abstract class AbstractLogger implements LoggerInterface
     /**
     /**
      * Normal but significant events.
      * Normal but significant events.
      *
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      *
      * @return void
      * @return void
      */
      */
@@ -103,8 +103,8 @@ abstract class AbstractLogger implements LoggerInterface
      *
      *
      * Example: User logs in, SQL logs.
      * Example: User logs in, SQL logs.
      *
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      *
      * @return void
      * @return void
      */
      */
@@ -116,8 +116,8 @@ abstract class AbstractLogger implements LoggerInterface
     /**
     /**
      * Detailed debug information.
      * Detailed debug information.
      *
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      *
      * @return void
      * @return void
      */
      */

+ 1 - 1
vendor/psr/log/Psr/Log/LoggerAwareTrait.php

@@ -10,7 +10,7 @@ trait LoggerAwareTrait
     /**
     /**
      * The logger instance.
      * The logger instance.
      *
      *
-     * @var LoggerInterface
+     * @var LoggerInterface|null
      */
      */
     protected $logger;
     protected $logger;
 
 

+ 1 - 1
vendor/psr/simple-cache/src/CacheInterface.php

@@ -55,7 +55,7 @@ interface CacheInterface
     /**
     /**
      * Obtains multiple cache items by their unique keys.
      * Obtains multiple cache items by their unique keys.
      *
      *
-     * @param iterable $keys    A list of keys that can be obtained in a single operation.
+     * @param iterable $keys    A list of keys that can obtained in a single operation.
      * @param mixed    $default Default value to return for keys that do not exist.
      * @param mixed    $default Default value to return for keys that do not exist.
      *
      *
      * @return iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.
      * @return iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.