ソースを参照

updated dibi/dibi to 4.2.6

CauseFX 4 年 前
コミット
ce70fba50f
56 ファイル変更310 行追加169 行削除
  1. 7 7
      api/composer.lock
  2. 2 0
      api/vendor/composer/InstalledVersions.php
  3. 1 1
      api/vendor/composer/autoload_classmap.php
  4. 4 4
      api/vendor/composer/autoload_files.php
  5. 1 1
      api/vendor/composer/autoload_namespaces.php
  6. 1 1
      api/vendor/composer/autoload_psr4.php
  7. 4 27
      api/vendor/composer/autoload_real.php
  8. 3 3
      api/vendor/composer/autoload_static.php
  9. 7 7
      api/vendor/composer/installed.json
  10. 5 5
      api/vendor/composer/installed.php
  11. 1 1
      api/vendor/dibi/dibi/readme.md
  12. 12 2
      api/vendor/dibi/dibi/src/Dibi/Bridges/Nette/DibiExtension22.php
  13. 27 11
      api/vendor/dibi/dibi/src/Dibi/Connection.php
  14. 8 3
      api/vendor/dibi/dibi/src/Dibi/DataSource.php
  15. 1 1
      api/vendor/dibi/dibi/src/Dibi/DateTime.php
  16. 3 3
      api/vendor/dibi/dibi/src/Dibi/Drivers/DummyDriver.php
  17. 5 4
      api/vendor/dibi/dibi/src/Dibi/Drivers/FirebirdDriver.php
  18. 14 2
      api/vendor/dibi/dibi/src/Dibi/Drivers/FirebirdReflector.php
  19. 1 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/FirebirdResult.php
  20. 4 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/MySqlReflector.php
  21. 12 4
      api/vendor/dibi/dibi/src/Dibi/Drivers/MySqliDriver.php
  22. 4 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/MySqliResult.php
  23. 6 3
      api/vendor/dibi/dibi/src/Dibi/Drivers/OdbcDriver.php
  24. 2 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/OdbcReflector.php
  25. 3 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/OdbcResult.php
  26. 6 3
      api/vendor/dibi/dibi/src/Dibi/Drivers/OracleDriver.php
  27. 2 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/OracleReflector.php
  28. 1 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/OracleResult.php
  29. 10 6
      api/vendor/dibi/dibi/src/Dibi/Drivers/PdoDriver.php
  30. 2 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/PdoResult.php
  31. 19 10
      api/vendor/dibi/dibi/src/Dibi/Drivers/PostgreDriver.php
  32. 4 1
      api/vendor/dibi/dibi/src/Dibi/Drivers/PostgreReflector.php
  33. 8 4
      api/vendor/dibi/dibi/src/Dibi/Drivers/PostgreResult.php
  34. 5 4
      api/vendor/dibi/dibi/src/Dibi/Drivers/SqliteDriver.php
  35. 5 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/SqliteReflector.php
  36. 1 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/SqliteResult.php
  37. 6 5
      api/vendor/dibi/dibi/src/Dibi/Drivers/SqlsrvDriver.php
  38. 3 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/SqlsrvReflector.php
  39. 1 0
      api/vendor/dibi/dibi/src/Dibi/Drivers/SqlsrvResult.php
  40. 1 1
      api/vendor/dibi/dibi/src/Dibi/Event.php
  41. 13 8
      api/vendor/dibi/dibi/src/Dibi/Fluent.php
  42. 2 1
      api/vendor/dibi/dibi/src/Dibi/HashMap.php
  43. 11 2
      api/vendor/dibi/dibi/src/Dibi/Helpers.php
  44. 2 1
      api/vendor/dibi/dibi/src/Dibi/Loggers/FileLogger.php
  45. 2 1
      api/vendor/dibi/dibi/src/Dibi/Reflection/Column.php
  46. 2 1
      api/vendor/dibi/dibi/src/Dibi/Reflection/Database.php
  47. 1 0
      api/vendor/dibi/dibi/src/Dibi/Reflection/Result.php
  48. 2 0
      api/vendor/dibi/dibi/src/Dibi/Reflection/Table.php
  49. 13 8
      api/vendor/dibi/dibi/src/Dibi/Result.php
  50. 2 0
      api/vendor/dibi/dibi/src/Dibi/ResultIterator.php
  51. 10 7
      api/vendor/dibi/dibi/src/Dibi/Row.php
  52. 1 0
      api/vendor/dibi/dibi/src/Dibi/Strict.php
  53. 25 4
      api/vendor/dibi/dibi/src/Dibi/Translator.php
  54. 3 3
      api/vendor/dibi/dibi/src/Dibi/dibi.php
  55. 2 2
      api/vendor/dibi/dibi/src/Dibi/exceptions.php
  56. 7 7
      api/vendor/dibi/dibi/src/Dibi/interfaces.php

+ 7 - 7
api/composer.lock

@@ -252,16 +252,16 @@
         },
         {
             "name": "dibi/dibi",
-            "version": "v4.2.3",
+            "version": "v4.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/dg/dibi.git",
-                "reference": "73e16eb1a322599e8cdf350adcfdbc15eaf16577"
+                "reference": "9d5d430d3d04ad8aff0e1570390e9cfbb7f3c538"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/dg/dibi/zipball/73e16eb1a322599e8cdf350adcfdbc15eaf16577",
-                "reference": "73e16eb1a322599e8cdf350adcfdbc15eaf16577",
+                "url": "https://api.github.com/repos/dg/dibi/zipball/9d5d430d3d04ad8aff0e1570390e9cfbb7f3c538",
+                "reference": "9d5d430d3d04ad8aff0e1570390e9cfbb7f3c538",
                 "shasum": ""
             },
             "require": {
@@ -316,9 +316,9 @@
             ],
             "support": {
                 "issues": "https://github.com/dg/dibi/issues",
-                "source": "https://github.com/dg/dibi/tree/v4.2.3"
+                "source": "https://github.com/dg/dibi/tree/v4.2.6"
             },
-            "time": "2021-07-23T08:49:27+00:00"
+            "time": "2022-01-19T17:38:15+00:00"
         },
         {
             "name": "doctrine/annotations",
@@ -3864,5 +3864,5 @@
     "prefer-lowest": false,
     "platform": [],
     "platform-dev": [],
-    "plugin-api-version": "2.2.0"
+    "plugin-api-version": "2.3.0"
 }

+ 2 - 0
api/vendor/composer/InstalledVersions.php

@@ -21,6 +21,8 @@ use Composer\Semver\VersionParser;
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
  *
  * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
  */
 class InstalledVersions
 {

+ 1 - 1
api/vendor/composer/autoload_classmap.php

@@ -2,7 +2,7 @@
 
 // autoload_classmap.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(

+ 4 - 4
api/vendor/composer/autoload_files.php

@@ -2,24 +2,24 @@
 
 // autoload_files.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(
     '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
     'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
-    '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
     'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
+    '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
     '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
-    '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
     '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
     '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
-    'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
+    '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
     '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
     '253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php',
     '3109cb1a231dcd04bee1f9f620d46975' => $vendorDir . '/paragonie/sodium_compat/autoload.php',
     'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php',
     'bd9634f2d41831496de0d3dfe4c94881' => $vendorDir . '/symfony/polyfill-php56/bootstrap.php',
+    'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
     'fe62ba7e10580d903cc46d808b5961a4' => $vendorDir . '/tightenco/collect/src/Collect/Support/helpers.php',
     'caf31cc6ec7cf2241cb6f12c226c3846' => $vendorDir . '/tightenco/collect/src/Collect/Support/alias.php',
     '0ccdf99b8f62f02c52cba55802e0c2e7' => $vendorDir . '/zircote/swagger-php/src/functions.php',

+ 1 - 1
api/vendor/composer/autoload_namespaces.php

@@ -2,7 +2,7 @@
 
 // autoload_namespaces.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(

+ 1 - 1
api/vendor/composer/autoload_psr4.php

@@ -2,7 +2,7 @@
 
 // autoload_psr4.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(

+ 4 - 27
api/vendor/composer/autoload_real.php

@@ -25,38 +25,15 @@ class ComposerAutoloaderInitcbdc783d76f8e7563dcce7d8af053ecb
         require __DIR__ . '/platform_check.php';
 
         spl_autoload_register(array('ComposerAutoloaderInitcbdc783d76f8e7563dcce7d8af053ecb', 'loadClassLoader'), true, true);
-        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
+        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
         spl_autoload_unregister(array('ComposerAutoloaderInitcbdc783d76f8e7563dcce7d8af053ecb', 'loadClassLoader'));
 
-        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
-        if ($useStaticLoader) {
-            require __DIR__ . '/autoload_static.php';
-
-            call_user_func(\Composer\Autoload\ComposerStaticInitcbdc783d76f8e7563dcce7d8af053ecb::getInitializer($loader));
-        } else {
-            $map = require __DIR__ . '/autoload_namespaces.php';
-            foreach ($map as $namespace => $path) {
-                $loader->set($namespace, $path);
-            }
-
-            $map = require __DIR__ . '/autoload_psr4.php';
-            foreach ($map as $namespace => $path) {
-                $loader->setPsr4($namespace, $path);
-            }
-
-            $classMap = require __DIR__ . '/autoload_classmap.php';
-            if ($classMap) {
-                $loader->addClassMap($classMap);
-            }
-        }
+        require __DIR__ . '/autoload_static.php';
+        \Composer\Autoload\ComposerStaticInitcbdc783d76f8e7563dcce7d8af053ecb::getInitializer($loader)();
 
         $loader->register(true);
 
-        if ($useStaticLoader) {
-            $includeFiles = Composer\Autoload\ComposerStaticInitcbdc783d76f8e7563dcce7d8af053ecb::$files;
-        } else {
-            $includeFiles = require __DIR__ . '/autoload_files.php';
-        }
+        $includeFiles = \Composer\Autoload\ComposerStaticInitcbdc783d76f8e7563dcce7d8af053ecb::$files;
         foreach ($includeFiles as $fileIdentifier => $file) {
             composerRequirecbdc783d76f8e7563dcce7d8af053ecb($fileIdentifier, $file);
         }

+ 3 - 3
api/vendor/composer/autoload_static.php

@@ -9,18 +9,18 @@ class ComposerStaticInitcbdc783d76f8e7563dcce7d8af053ecb
     public static $files = array (
         '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
         'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
-        '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
         'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
+        '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
         '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
-        '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
         '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
         '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
-        'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
+        '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
         '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
         '253c157292f75eb38082b5acb06f3f01' => __DIR__ . '/..' . '/nikic/fast-route/src/functions.php',
         '3109cb1a231dcd04bee1f9f620d46975' => __DIR__ . '/..' . '/paragonie/sodium_compat/autoload.php',
         'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php',
         'bd9634f2d41831496de0d3dfe4c94881' => __DIR__ . '/..' . '/symfony/polyfill-php56/bootstrap.php',
+        'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
         'fe62ba7e10580d903cc46d808b5961a4' => __DIR__ . '/..' . '/tightenco/collect/src/Collect/Support/helpers.php',
         'caf31cc6ec7cf2241cb6f12c226c3846' => __DIR__ . '/..' . '/tightenco/collect/src/Collect/Support/alias.php',
         '0ccdf99b8f62f02c52cba55802e0c2e7' => __DIR__ . '/..' . '/zircote/swagger-php/src/functions.php',

+ 7 - 7
api/vendor/composer/installed.json

@@ -258,17 +258,17 @@
         },
         {
             "name": "dibi/dibi",
-            "version": "v4.2.3",
-            "version_normalized": "4.2.3.0",
+            "version": "v4.2.6",
+            "version_normalized": "4.2.6.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/dg/dibi.git",
-                "reference": "73e16eb1a322599e8cdf350adcfdbc15eaf16577"
+                "reference": "9d5d430d3d04ad8aff0e1570390e9cfbb7f3c538"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/dg/dibi/zipball/73e16eb1a322599e8cdf350adcfdbc15eaf16577",
-                "reference": "73e16eb1a322599e8cdf350adcfdbc15eaf16577",
+                "url": "https://api.github.com/repos/dg/dibi/zipball/9d5d430d3d04ad8aff0e1570390e9cfbb7f3c538",
+                "reference": "9d5d430d3d04ad8aff0e1570390e9cfbb7f3c538",
                 "shasum": ""
             },
             "require": {
@@ -283,7 +283,7 @@
                 "phpstan/phpstan": "^0.12",
                 "tracy/tracy": "~2.2"
             },
-            "time": "2021-07-23T08:49:27+00:00",
+            "time": "2022-01-19T17:38:15+00:00",
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -325,7 +325,7 @@
             ],
             "support": {
                 "issues": "https://github.com/dg/dibi/issues",
-                "source": "https://github.com/dg/dibi/tree/v4.2.3"
+                "source": "https://github.com/dg/dibi/tree/v4.2.6"
             },
             "install-path": "../dibi/dibi"
         },

+ 5 - 5
api/vendor/composer/installed.php

@@ -5,7 +5,7 @@
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
-        'reference' => '25cfc0e03bca212cab4bcf9336d3fc8449b11e61',
+        'reference' => '3a141f74828baa2322d2a095494c4ddf646790d9',
         'name' => '__root__',
         'dev' => true,
     ),
@@ -16,7 +16,7 @@
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
-            'reference' => '25cfc0e03bca212cab4bcf9336d3fc8449b11e61',
+            'reference' => '3a141f74828baa2322d2a095494c4ddf646790d9',
             'dev_requirement' => false,
         ),
         'adldap2/adldap2' => array(
@@ -62,12 +62,12 @@
             ),
         ),
         'dibi/dibi' => array(
-            'pretty_version' => 'v4.2.3',
-            'version' => '4.2.3.0',
+            'pretty_version' => 'v4.2.6',
+            'version' => '4.2.6.0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../dibi/dibi',
             'aliases' => array(),
-            'reference' => '73e16eb1a322599e8cdf350adcfdbc15eaf16577',
+            'reference' => '9d5d430d3d04ad8aff0e1570390e9cfbb7f3c538',
             'dev_requirement' => false,
         ),
         'doctrine/annotations' => array(

+ 1 - 1
api/vendor/dibi/dibi/readme.md

@@ -34,7 +34,7 @@ Install Dibi via Composer:
 composer require dibi/dibi
 ```
 
-The Dibi 4.2 requires PHP version 7.2 and supports PHP up to 8.0.
+The Dibi 4.2 requires PHP version 7.2 and supports PHP up to 8.1.
 
 
 Usage

+ 12 - 2
api/vendor/dibi/dibi/src/Dibi/Bridges/Nette/DibiExtension22.php

@@ -22,10 +22,14 @@ class DibiExtension22 extends Nette\DI\CompilerExtension
 	/** @var bool|null */
 	private $debugMode;
 
+	/** @var bool|null */
+	private $cliMode;
+
 
-	public function __construct(bool $debugMode = null)
+	public function __construct(?bool $debugMode = null, ?bool $cliMode = null)
 	{
 		$this->debugMode = $debugMode;
+		$this->cliMode = $cliMode;
 	}
 
 
@@ -38,7 +42,11 @@ class DibiExtension22 extends Nette\DI\CompilerExtension
 			$this->debugMode = $container->parameters['debugMode'];
 		}
 
-		$useProfiler = $config['profiler'] ?? (class_exists(Tracy\Debugger::class) && $this->debugMode);
+		if ($this->cliMode === null) {
+			$this->cliMode = $container->parameters['consoleMode'];
+		}
+
+		$useProfiler = $config['profiler'] ?? (class_exists(Tracy\Debugger::class) && $this->debugMode && !$this->cliMode);
 
 		unset($config['profiler']);
 
@@ -47,6 +55,7 @@ class DibiExtension22 extends Nette\DI\CompilerExtension
 			foreach ((array) $config['flags'] as $flag) {
 				$flags |= constant($flag);
 			}
+
 			$config['flags'] = $flags;
 		}
 
@@ -60,6 +69,7 @@ class DibiExtension22 extends Nette\DI\CompilerExtension
 				[[Dibi\Bridges\Tracy\Panel::class, 'renderException']]
 			);
 		}
+
 		if ($useProfiler) {
 			$panel = $container->addDefinition($this->prefix('panel'))
 				->setFactory(Dibi\Bridges\Tracy\Panel::class, [

+ 27 - 11
api/vendor/dibi/dibi/src/Dibi/Connection.php

@@ -68,7 +68,7 @@ class Connection implements IConnection
 	 *   - onConnect (array) => list of SQL queries to execute (by Connection::query()) after connection is established
 	 * @throws Exception
 	 */
-	public function __construct(array $config, string $name = null)
+	public function __construct(array $config, ?string $name = null)
 	{
 		Helpers::alias($config, 'username', 'user');
 		Helpers::alias($config, 'password', 'pass');
@@ -150,16 +150,17 @@ class Connection implements IConnection
 			if ($event) {
 				$this->onEvent($event->done());
 			}
+
 			if (isset($this->config['onConnect'])) {
 				foreach ($this->config['onConnect'] as $sql) {
 					$this->query($sql);
 				}
 			}
-
 		} catch (DriverException $e) {
 			if ($event) {
 				$this->onEvent($event->done($e));
 			}
+
 			throw $e;
 		}
 	}
@@ -191,7 +192,7 @@ class Connection implements IConnection
 	 * @see self::__construct
 	 * @return mixed
 	 */
-	final public function getConfig(string $key = null, $default = null)
+	final public function getConfig(?string $key = null, $default = null)
 	{
 		return $key === null
 			? $this->config
@@ -207,6 +208,7 @@ class Connection implements IConnection
 		if (!$this->driver) {
 			$this->connect();
 		}
+
 		return $this->driver;
 	}
 
@@ -232,6 +234,7 @@ class Connection implements IConnection
 		if (!$this->driver) {
 			$this->connect();
 		}
+
 		return (clone $this->translator)->translate($args);
 	}
 
@@ -252,6 +255,7 @@ class Connection implements IConnection
 			} else {
 				echo get_class($e) . ': ' . $e->getMessage() . (PHP_SAPI === 'cli' ? "\n" : '<br>');
 			}
+
 			return false;
 		}
 	}
@@ -287,6 +291,7 @@ class Connection implements IConnection
 			if ($event) {
 				$this->onEvent($event->done($e));
 			}
+
 			throw $e;
 		}
 
@@ -294,6 +299,7 @@ class Connection implements IConnection
 		if ($event) {
 			$this->onEvent($event->done($res));
 		}
+
 		return $res;
 	}
 
@@ -307,10 +313,12 @@ class Connection implements IConnection
 		if (!$this->driver) {
 			$this->connect();
 		}
+
 		$rows = $this->driver->getAffectedRows();
 		if ($rows === null || $rows < 0) {
 			throw new Exception('Cannot retrieve number of affected rows.');
 		}
+
 		return $rows;
 	}
 
@@ -319,15 +327,17 @@ class Connection implements IConnection
 	 * Retrieves the ID generated for an AUTO_INCREMENT column by the previous INSERT query.
 	 * @throws Exception
 	 */
-	public function getInsertId(string $sequence = null): int
+	public function getInsertId(?string $sequence = null): int
 	{
 		if (!$this->driver) {
 			$this->connect();
 		}
+
 		$id = $this->driver->getInsertId($sequence);
 		if ($id === null) {
 			throw new Exception('Cannot retrieve last generated ID.');
 		}
+
 		return $id;
 	}
 
@@ -335,7 +345,7 @@ class Connection implements IConnection
 	/**
 	 * Begins a transaction (if supported).
 	 */
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 		if ($this->transactionDepth !== 0) {
 			throw new \LogicException(__METHOD__ . '() call is forbidden inside a transaction() callback');
@@ -344,17 +354,18 @@ class Connection implements IConnection
 		if (!$this->driver) {
 			$this->connect();
 		}
+
 		$event = $this->onEvent ? new Event($this, Event::BEGIN, $savepoint) : null;
 		try {
 			$this->driver->begin($savepoint);
 			if ($event) {
 				$this->onEvent($event->done());
 			}
-
 		} catch (DriverException $e) {
 			if ($event) {
 				$this->onEvent($event->done($e));
 			}
+
 			throw $e;
 		}
 	}
@@ -363,7 +374,7 @@ class Connection implements IConnection
 	/**
 	 * Commits statements in a transaction.
 	 */
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 		if ($this->transactionDepth !== 0) {
 			throw new \LogicException(__METHOD__ . '() call is forbidden inside a transaction() callback');
@@ -372,17 +383,18 @@ class Connection implements IConnection
 		if (!$this->driver) {
 			$this->connect();
 		}
+
 		$event = $this->onEvent ? new Event($this, Event::COMMIT, $savepoint) : null;
 		try {
 			$this->driver->commit($savepoint);
 			if ($event) {
 				$this->onEvent($event->done());
 			}
-
 		} catch (DriverException $e) {
 			if ($event) {
 				$this->onEvent($event->done($e));
 			}
+
 			throw $e;
 		}
 	}
@@ -391,7 +403,7 @@ class Connection implements IConnection
 	/**
 	 * Rollback changes in a transaction.
 	 */
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 		if ($this->transactionDepth !== 0) {
 			throw new \LogicException(__METHOD__ . '() call is forbidden inside a transaction() callback');
@@ -400,17 +412,18 @@ class Connection implements IConnection
 		if (!$this->driver) {
 			$this->connect();
 		}
+
 		$event = $this->onEvent ? new Event($this, Event::ROLLBACK, $savepoint) : null;
 		try {
 			$this->driver->rollback($savepoint);
 			if ($event) {
 				$this->onEvent($event->done());
 			}
-
 		} catch (DriverException $e) {
 			if ($event) {
 				$this->onEvent($event->done($e));
 			}
+
 			throw $e;
 		}
 	}
@@ -433,6 +446,7 @@ class Connection implements IConnection
 			if ($this->transactionDepth === 0) {
 				$this->rollback();
 			}
+
 			throw $e;
 		}
 
@@ -484,6 +498,7 @@ class Connection implements IConnection
 		if ($args instanceof Traversable) {
 			$args = iterator_to_array($args);
 		}
+
 		return $this->command()->insert()
 			->into('%n', $table, '(%n)', array_keys($args))->values('%l', $args);
 	}
@@ -587,7 +602,7 @@ class Connection implements IConnection
 	 * @param  callable  $onProgress  function (int $count, ?float $percent): void
 	 * @return int  count of sql commands
 	 */
-	public function loadFile(string $file, callable $onProgress = null): int
+	public function loadFile(string $file, ?callable $onProgress = null): int
 	{
 		return Helpers::loadFromFile($this, $file, $onProgress);
 	}
@@ -601,6 +616,7 @@ class Connection implements IConnection
 		if (!$this->driver) {
 			$this->connect();
 		}
+
 		return new Reflection\Database($this->driver->getReflector(), $this->config['database'] ?? null);
 	}
 

+ 8 - 3
api/vendor/dibi/dibi/src/Dibi/DataSource.php

@@ -65,13 +65,14 @@ class DataSource implements IDataSource
 	 * @param  string|array  $col  column name or array of column names
 	 * @param  string  $as        column alias
 	 */
-	public function select($col, string $as = null): self
+	public function select($col, ?string $as = null): self
 	{
 		if (is_array($col)) {
 			$this->cols = $col;
 		} else {
 			$this->cols[$col] = $as;
 		}
+
 		$this->result = null;
 		return $this;
 	}
@@ -101,6 +102,7 @@ class DataSource implements IDataSource
 		} else {
 			$this->sorting[$row] = $direction;
 		}
+
 		$this->result = null;
 		return $this;
 	}
@@ -109,7 +111,7 @@ class DataSource implements IDataSource
 	/**
 	 * Limits number of rows.
 	 */
-	public function applyLimit(int $limit, int $offset = null): self
+	public function applyLimit(int $limit, ?int $offset = null): self
 	{
 		$this->limit = $limit;
 		$this->offset = $offset;
@@ -135,6 +137,7 @@ class DataSource implements IDataSource
 		if ($this->result === null) {
 			$this->result = $this->connection->nativeQuery($this->__toString());
 		}
+
 		return $this->result;
 	}
 
@@ -185,7 +188,7 @@ class DataSource implements IDataSource
 	/**
 	 * Fetches all records from table like $key => $value pairs.
 	 */
-	public function fetchPairs(string $key = null, string $value = null): array
+	public function fetchPairs(?string $key = null, ?string $value = null): array
 	{
 		return $this->getResult()->fetchPairs($key, $value);
 	}
@@ -262,6 +265,7 @@ class DataSource implements IDataSource
 				)->fetchSingle())
 				: $this->getTotalCount();
 		}
+
 		return $this->count;
 	}
 
@@ -276,6 +280,7 @@ class DataSource implements IDataSource
 				'SELECT COUNT(*) FROM ' . $this->sql
 			)->fetchSingle());
 		}
+
 		return $this->totalCount;
 	}
 }

+ 1 - 1
api/vendor/dibi/dibi/src/Dibi/DateTime.php

@@ -20,7 +20,7 @@ class DateTime extends \DateTimeImmutable
 	/**
 	 * @param  string|int  $time
 	 */
-	public function __construct($time = 'now', \DateTimeZone $timezone = null)
+	public function __construct($time = 'now', ?\DateTimeZone $timezone = null)
 	{
 		$timezone = $timezone ?: new \DateTimeZone(date_default_timezone_get());
 		if (is_numeric($time)) {

+ 3 - 3
api/vendor/dibi/dibi/src/Dibi/Drivers/DummyDriver.php

@@ -42,17 +42,17 @@ class DummyDriver implements Dibi\Driver, Dibi\ResultDriver, Dibi\Reflector
 	}
 
 
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 	}
 
 
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 	}
 
 
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 	}
 

+ 5 - 4
api/vendor/dibi/dibi/src/Dibi/Drivers/FirebirdDriver.php

@@ -101,10 +101,10 @@ class FirebirdDriver implements Dibi\Driver
 			} else {
 				throw new Dibi\DriverException(ibase_errmsg(), ibase_errcode(), $sql);
 			}
-
 		} elseif (is_resource($res)) {
 			return $this->createResultDriver($res);
 		}
+
 		return null;
 	}
 
@@ -131,11 +131,12 @@ class FirebirdDriver implements Dibi\Driver
 	 * Begins a transaction (if supported).
 	 * @throws Dibi\DriverException
 	 */
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 		if ($savepoint !== null) {
 			throw new Dibi\NotSupportedException('Savepoints are not supported in Firebird/Interbase.');
 		}
+
 		$this->transaction = ibase_trans($this->getResource());
 		$this->inTransaction = true;
 	}
@@ -145,7 +146,7 @@ class FirebirdDriver implements Dibi\Driver
 	 * Commits statements in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 		if ($savepoint !== null) {
 			throw new Dibi\NotSupportedException('Savepoints are not supported in Firebird/Interbase.');
@@ -163,7 +164,7 @@ class FirebirdDriver implements Dibi\Driver
 	 * Rollback changes in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 		if ($savepoint !== null) {
 			throw new Dibi\NotSupportedException('Savepoints are not supported in Firebird/Interbase.');

+ 14 - 2
api/vendor/dibi/dibi/src/Dibi/Drivers/FirebirdReflector.php

@@ -47,6 +47,7 @@ class FirebirdReflector implements Dibi\Reflector
 				'view' => $row[1] === 'TRUE',
 			];
 		}
+
 		return $tables;
 	}
 
@@ -99,6 +100,7 @@ class FirebirdReflector implements Dibi\Reflector
 				'autoincrement' => false,
 			];
 		}
+
 		return $columns;
 	}
 
@@ -131,6 +133,7 @@ class FirebirdReflector implements Dibi\Reflector
 			$indexes[$key]['table'] = $table;
 			$indexes[$key]['columns'][$row['FIELD_POSITION']] = $row['FIELD_NAME'];
 		}
+
 		return $indexes;
 	}
 
@@ -159,6 +162,7 @@ class FirebirdReflector implements Dibi\Reflector
 				'table' => $table,
 			];
 		}
+
 		return $keys;
 	}
 
@@ -179,6 +183,7 @@ class FirebirdReflector implements Dibi\Reflector
 		while ($row = $res->fetch(false)) {
 			$indices[] = $row[0];
 		}
+
 		return $indices;
 	}
 
@@ -201,6 +206,7 @@ class FirebirdReflector implements Dibi\Reflector
 		while ($row = $res->fetch(false)) {
 			$constraints[] = $row[0];
 		}
+
 		return $constraints;
 	}
 
@@ -209,7 +215,7 @@ class FirebirdReflector implements Dibi\Reflector
 	 * Returns metadata for all triggers in a table or database.
 	 * (Only if user has permissions on ALTER TABLE, INSERT/UPDATE/DELETE record in table)
 	 */
-	public function getTriggersMeta(string $table = null): array
+	public function getTriggersMeta(?string $table = null): array
 	{
 		$res = $this->driver->query(
 			"
@@ -248,6 +254,7 @@ class FirebirdReflector implements Dibi\Reflector
 				'enabled' => trim($row['TRIGGER_ENABLED']) === 'TRUE',
 			];
 		}
+
 		return $triggers;
 	}
 
@@ -256,7 +263,7 @@ class FirebirdReflector implements Dibi\Reflector
 	 * Returns list of triggers for given table.
 	 * (Only if user has permissions on ALTER TABLE, INSERT/UPDATE/DELETE record in table)
 	 */
-	public function getTriggers(string $table = null): array
+	public function getTriggers(?string $table = null): array
 	{
 		$q = 'SELECT TRIM(RDB$TRIGGER_NAME)
 			FROM RDB$TRIGGERS
@@ -270,6 +277,7 @@ class FirebirdReflector implements Dibi\Reflector
 		while ($row = $res->fetch(false)) {
 			$triggers[] = $row[0];
 		}
+
 		return $triggers;
 	}
 
@@ -321,6 +329,7 @@ class FirebirdReflector implements Dibi\Reflector
 			$procedures[$key]['params'][$io][$num]['type'] = trim($row['FIELD_TYPE']);
 			$procedures[$key]['params'][$io][$num]['size'] = $row['FIELD_LENGTH'];
 		}
+
 		return $procedures;
 	}
 
@@ -338,6 +347,7 @@ class FirebirdReflector implements Dibi\Reflector
 		while ($row = $res->fetch(false)) {
 			$procedures[] = $row[0];
 		}
+
 		return $procedures;
 	}
 
@@ -356,6 +366,7 @@ class FirebirdReflector implements Dibi\Reflector
 		while ($row = $res->fetch(false)) {
 			$generators[] = $row[0];
 		}
+
 		return $generators;
 	}
 
@@ -374,6 +385,7 @@ class FirebirdReflector implements Dibi\Reflector
 		while ($row = $res->fetch(false)) {
 			$functions[] = $row[0];
 		}
+
 		return $functions;
 	}
 }

+ 1 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/FirebirdResult.php

@@ -126,6 +126,7 @@ class FirebirdResult implements Dibi\ResultDriver
 				'nativetype' => $row['type'],
 			];
 		}
+
 		return $columns;
 	}
 

+ 4 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/MySqlReflector.php

@@ -43,6 +43,7 @@ class MySqlReflector implements Dibi\Reflector
 				'view' => isset($row[1]) && $row[1] === 'VIEW',
 			];
 		}
+
 		return $tables;
 	}
 
@@ -67,6 +68,7 @@ class MySqlReflector implements Dibi\Reflector
 				'vendor' => $row,
 			];
 		}
+
 		return $columns;
 	}
 
@@ -84,6 +86,7 @@ class MySqlReflector implements Dibi\Reflector
 			$indexes[$row['Key_name']]['primary'] = $row['Key_name'] === 'PRIMARY';
 			$indexes[$row['Key_name']]['columns'][$row['Seq_in_index'] - 1] = $row['Column_name'];
 		}
+
 		return array_values($indexes);
 	}
 
@@ -123,6 +126,7 @@ class MySqlReflector implements Dibi\Reflector
 			$foreignKeys[$keyName]['onDelete'] = $row['DELETE_RULE'];
 			$foreignKeys[$keyName]['onUpdate'] = $row['UPDATE_RULE'];
 		}
+
 		return array_values($foreignKeys);
 	}
 }

+ 12 - 4
api/vendor/dibi/dibi/src/Dibi/Drivers/MySqliDriver.php

@@ -88,6 +88,7 @@ class MySqliDriver implements Dibi\Driver
 					$this->connection->options($key, $value);
 				}
 			}
+
 			@$this->connection->real_connect( // intentionally @
 				(empty($config['persistent']) ? '' : 'p:') . $config['host'],
 				$config['username'],
@@ -153,6 +154,7 @@ class MySqliDriver implements Dibi\Driver
 		} elseif ($res instanceof \mysqli_result) {
 			return $this->createResultDriver($res);
 		}
+
 		return null;
 	}
 
@@ -191,6 +193,7 @@ class MySqliDriver implements Dibi\Driver
 		foreach ($matches as $m) {
 			$res[$m[1]] = (int) $m[2];
 		}
+
 		return $res;
 	}
 
@@ -219,7 +222,7 @@ class MySqliDriver implements Dibi\Driver
 	 * Begins a transaction (if supported).
 	 * @throws Dibi\DriverException
 	 */
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 		$this->query($savepoint ? "SAVEPOINT $savepoint" : 'START TRANSACTION');
 	}
@@ -229,7 +232,7 @@ class MySqliDriver implements Dibi\Driver
 	 * Commits statements in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 		$this->query($savepoint ? "RELEASE SAVEPOINT $savepoint" : 'COMMIT');
 	}
@@ -239,7 +242,7 @@ class MySqliDriver implements Dibi\Driver
 	 * Rollback changes in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 		$this->query($savepoint ? "ROLLBACK TO SAVEPOINT $savepoint" : 'ROLLBACK');
 	}
@@ -250,7 +253,11 @@ class MySqliDriver implements Dibi\Driver
 	 */
 	public function getResource(): ?\mysqli
 	{
-		return @$this->connection->thread_id ? $this->connection : null;
+		try {
+			return @$this->connection->thread_id ? $this->connection : null;
+		} catch (\Throwable $e) {
+			return null;
+		}
 	}
 
 
@@ -319,6 +326,7 @@ class MySqliDriver implements Dibi\Driver
 		if ($value->y || $value->m || $value->d) {
 			throw new Dibi\NotSupportedException('Only time interval is supported.');
 		}
+
 		return $value->format("'%r%H:%I:%S.%f'");
 	}
 

+ 4 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/MySqliResult.php

@@ -55,6 +55,7 @@ class MySqliResult implements Dibi\ResultDriver
 		if (!$this->buffered) {
 			throw new Dibi\NotSupportedException('Row count is not available for unbuffered queries.');
 		}
+
 		return $this->resultSet->num_rows;
 	}
 
@@ -80,6 +81,7 @@ class MySqliResult implements Dibi\ResultDriver
 		if (!$this->buffered) {
 			throw new Dibi\NotSupportedException('Cannot seek an unbuffered result set.');
 		}
+
 		return $this->resultSet->data_seek($row);
 	}
 
@@ -107,6 +109,7 @@ class MySqliResult implements Dibi\ResultDriver
 					$types[$value] = substr($key, 12);
 				}
 			}
+
 			$types[MYSQLI_TYPE_TINY] = $types[MYSQLI_TYPE_SHORT] = $types[MYSQLI_TYPE_LONG] = 'INT';
 		}
 
@@ -123,6 +126,7 @@ class MySqliResult implements Dibi\ResultDriver
 				'vendor' => $row,
 			];
 		}
+
 		return $columns;
 	}
 

+ 6 - 3
api/vendor/dibi/dibi/src/Dibi/Drivers/OdbcDriver.php

@@ -96,6 +96,7 @@ class OdbcDriver implements Dibi\Driver
 				? $this->createResultDriver($res)
 				: null;
 		}
+
 		return null;
 	}
 
@@ -122,7 +123,7 @@ class OdbcDriver implements Dibi\Driver
 	 * Begins a transaction (if supported).
 	 * @throws Dibi\DriverException
 	 */
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 		if (!odbc_autocommit($this->connection, PHP_VERSION_ID < 80000 ? 0 : false)) {
 			throw new Dibi\DriverException(odbc_errormsg($this->connection) . ' ' . odbc_error($this->connection));
@@ -134,11 +135,12 @@ class OdbcDriver implements Dibi\Driver
 	 * Commits statements in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 		if (!odbc_commit($this->connection)) {
 			throw new Dibi\DriverException(odbc_errormsg($this->connection) . ' ' . odbc_error($this->connection));
 		}
+
 		odbc_autocommit($this->connection, PHP_VERSION_ID < 80000 ? 1 : true);
 	}
 
@@ -147,11 +149,12 @@ class OdbcDriver implements Dibi\Driver
 	 * Rollback changes in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 		if (!odbc_rollback($this->connection)) {
 			throw new Dibi\DriverException(odbc_errormsg($this->connection) . ' ' . odbc_error($this->connection));
 		}
+
 		odbc_autocommit($this->connection, PHP_VERSION_ID < 80000 ? 1 : true);
 	}
 

+ 2 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/OdbcReflector.php

@@ -44,6 +44,7 @@ class OdbcReflector implements Dibi\Reflector
 				];
 			}
 		}
+
 		odbc_free_result($res);
 		return $tables;
 	}
@@ -68,6 +69,7 @@ class OdbcReflector implements Dibi\Reflector
 				];
 			}
 		}
+
 		odbc_free_result($res);
 		return $columns;
 	}

+ 3 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/OdbcResult.php

@@ -72,11 +72,13 @@ class OdbcResult implements Dibi\ResultDriver
 			if (!odbc_fetch_row($set, ++$this->row)) {
 				return null;
 			}
+
 			$count = odbc_num_fields($set);
 			$cols = [];
 			for ($i = 1; $i <= $count; $i++) {
 				$cols[] = odbc_result($set, $i);
 			}
+
 			return $cols;
 		}
 	}
@@ -116,6 +118,7 @@ class OdbcResult implements Dibi\ResultDriver
 				'nativetype' => odbc_field_type($this->resultSet, $i),
 			];
 		}
+
 		return $columns;
 	}
 

+ 6 - 3
api/vendor/dibi/dibi/src/Dibi/Drivers/OracleDriver.php

@@ -104,6 +104,7 @@ class OracleDriver implements Dibi\Driver
 			$err = oci_error($this->connection);
 			throw new Dibi\DriverException($err['message'], $err['code'], $sql);
 		}
+
 		return null;
 	}
 
@@ -147,7 +148,7 @@ class OracleDriver implements Dibi\Driver
 	/**
 	 * Begins a transaction (if supported).
 	 */
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 		$this->autocommit = false;
 	}
@@ -157,12 +158,13 @@ class OracleDriver implements Dibi\Driver
 	 * Commits statements in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 		if (!oci_commit($this->connection)) {
 			$err = oci_error($this->connection);
 			throw new Dibi\DriverException($err['message'], $err['code']);
 		}
+
 		$this->autocommit = true;
 	}
 
@@ -171,12 +173,13 @@ class OracleDriver implements Dibi\Driver
 	 * Rollback changes in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 		if (!oci_rollback($this->connection)) {
 			$err = oci_error($this->connection);
 			throw new Dibi\DriverException($err['message'], $err['code']);
 		}
+
 		$this->autocommit = true;
 	}
 

+ 2 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/OracleReflector.php

@@ -44,6 +44,7 @@ class OracleReflector implements Dibi\Reflector
 				];
 			}
 		}
+
 		return $tables;
 	}
 
@@ -66,6 +67,7 @@ class OracleReflector implements Dibi\Reflector
 				'vendor' => $row,
 			];
 		}
+
 		return $columns;
 	}
 

+ 1 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/OracleResult.php

@@ -100,6 +100,7 @@ class OracleResult implements Dibi\ResultDriver
 				'nativetype' => $type === 'NUMBER' && oci_field_scale($this->resultSet, $i) === 0 ? 'INTEGER' : $type,
 			];
 		}
+
 		return $columns;
 	}
 

+ 10 - 6
api/vendor/dibi/dibi/src/Dibi/Drivers/PdoDriver.php

@@ -60,7 +60,6 @@ class PdoDriver implements Dibi\Driver
 			if ($this->connection->getAttribute(PDO::ATTR_ERRMODE) !== PDO::ERRMODE_SILENT) {
 				throw new Dibi\DriverException('PDO connection in exception or warning error mode is not supported.');
 			}
-
 		} else {
 			try {
 				$this->connection = new PDO($config['dsn'], $config['username'], $config['password'], $config['options']);
@@ -69,6 +68,7 @@ class PdoDriver implements Dibi\Driver
 				if ($e->getMessage() === 'could not find driver') {
 					throw new Dibi\NotSupportedException('PHP extension for PDO is not loaded.');
 				}
+
 				throw new Dibi\DriverException($e->getMessage(), $e->getCode());
 			}
 		}
@@ -144,7 +144,7 @@ class PdoDriver implements Dibi\Driver
 	 * Begins a transaction (if supported).
 	 * @throws Dibi\DriverException
 	 */
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 		if (!$this->connection->beginTransaction()) {
 			$err = $this->connection->errorInfo();
@@ -157,7 +157,7 @@ class PdoDriver implements Dibi\Driver
 	 * Commits statements in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 		if (!$this->connection->commit()) {
 			$err = $this->connection->errorInfo();
@@ -170,7 +170,7 @@ class PdoDriver implements Dibi\Driver
 	 * Rollback changes in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 		if (!$this->connection->rollBack()) {
 			$err = $this->connection->errorInfo();
@@ -366,15 +366,18 @@ class PdoDriver implements Dibi\Driver
 					$sql .= ' LIMIT ' . ($limit ?? '18446744073709551615')
 						. ($offset ? ' OFFSET ' . $offset : '');
 				}
+
 				break;
 
 			case 'pgsql':
 				if ($limit !== null) {
 					$sql .= ' LIMIT ' . $limit;
 				}
+
 				if ($offset) {
 					$sql .= ' OFFSET ' . $offset;
 				}
+
 				break;
 
 			case 'sqlite':
@@ -382,6 +385,7 @@ class PdoDriver implements Dibi\Driver
 					$sql .= ' LIMIT ' . ($limit ?? '-1')
 						. ($offset ? ' OFFSET ' . $offset : '');
 				}
+
 				break;
 
 			case 'oci':
@@ -394,6 +398,7 @@ class PdoDriver implements Dibi\Driver
 				} elseif ($limit !== null) {
 					$sql = 'SELECT * FROM (' . $sql . ') WHERE ROWNUM <= ' . $limit;
 				}
+
 				break;
 
 			case 'mssql':
@@ -406,10 +411,10 @@ class PdoDriver implements Dibi\Driver
 					} elseif ($offset) {
 						$sql = sprintf('%s OFFSET %d ROWS', rtrim($sql), $offset);
 					}
+
 					break;
 				}
 				// break omitted
-
 			case 'odbc':
 				if ($offset) {
 					throw new Dibi\NotSupportedException('Offset is not supported by this database.');
@@ -419,7 +424,6 @@ class PdoDriver implements Dibi\Driver
 					break;
 				}
 				// break omitted
-
 			default:
 				throw new Dibi\NotSupportedException('PDO or driver does not support applying limit or offset.');
 		}

+ 2 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/PdoResult.php

@@ -85,6 +85,7 @@ class PdoResult implements Dibi\ResultDriver
 			if ($row === false) {
 				throw new Dibi\NotSupportedException('Driver does not support meta data.');
 			}
+
 			$row += [
 				'table' => null,
 				'native_type' => 'VAR_STRING',
@@ -99,6 +100,7 @@ class PdoResult implements Dibi\ResultDriver
 				'vendor' => $row,
 			];
 		}
+
 		return $columns;
 	}
 

+ 19 - 10
api/vendor/dibi/dibi/src/Dibi/Drivers/PostgreDriver.php

@@ -11,6 +11,7 @@ namespace Dibi\Drivers;
 
 use Dibi;
 use Dibi\Helpers;
+use PgSql;
 
 
 /**
@@ -29,7 +30,7 @@ class PostgreDriver implements Dibi\Driver
 {
 	use Dibi\Strict;
 
-	/** @var resource */
+	/** @var resource|PgSql\Connection */
 	private $connection;
 
 	/** @var int|null  Affected rows */
@@ -63,6 +64,7 @@ class PostgreDriver implements Dibi\Driver
 					}
 				}
 			}
+
 			$connectType = $config['connect_type'] ?? PGSQL_CONNECT_FORCE_NEW;
 
 			set_error_handler(function (int $severity, string $message) use (&$error) {
@@ -74,7 +76,7 @@ class PostgreDriver implements Dibi\Driver
 			restore_error_handler();
 		}
 
-		if (!is_resource($this->connection)) {
+		if (!is_resource($this->connection) && !$this->connection instanceof PgSql\Connection) {
 			throw new Dibi\DriverException($error ?: 'Connecting error.');
 		}
 
@@ -120,17 +122,18 @@ class PostgreDriver implements Dibi\Driver
 		if ($res === false) {
 			throw static::createException(pg_last_error($this->connection), null, $sql);
 
-		} elseif (is_resource($res)) {
+		} elseif (is_resource($res) || $res instanceof PgSql\Result) {
 			$this->affectedRows = Helpers::false2Null(pg_affected_rows($res));
 			if (pg_num_fields($res)) {
 				return $this->createResultDriver($res);
 			}
 		}
+
 		return null;
 	}
 
 
-	public static function createException(string $message, $code = null, string $sql = null): Dibi\DriverException
+	public static function createException(string $message, $code = null, ?string $sql = null): Dibi\DriverException
 	{
 		if ($code === null && preg_match('#^ERROR:\s+(\S+):\s*#', $message, $m)) {
 			$code = $m[1];
@@ -186,7 +189,7 @@ class PostgreDriver implements Dibi\Driver
 	 * Begins a transaction (if supported).
 	 * @throws Dibi\DriverException
 	 */
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 		$this->query($savepoint ? "SAVEPOINT {$this->escapeIdentifier($savepoint)}" : 'START TRANSACTION');
 	}
@@ -196,7 +199,7 @@ class PostgreDriver implements Dibi\Driver
 	 * Commits statements in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 		$this->query($savepoint ? "RELEASE SAVEPOINT {$this->escapeIdentifier($savepoint)}" : 'COMMIT');
 	}
@@ -206,7 +209,7 @@ class PostgreDriver implements Dibi\Driver
 	 * Rollback changes in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 		$this->query($savepoint ? "ROLLBACK TO SAVEPOINT {$this->escapeIdentifier($savepoint)}" : 'ROLLBACK');
 	}
@@ -227,7 +230,9 @@ class PostgreDriver implements Dibi\Driver
 	 */
 	public function getResource()
 	{
-		return is_resource($this->connection) ? $this->connection : null;
+		return is_resource($this->connection) || $this->connection instanceof PgSql\Connection
+			? $this->connection
+			: null;
 	}
 
 
@@ -258,18 +263,20 @@ class PostgreDriver implements Dibi\Driver
 	 */
 	public function escapeText(string $value): string
 	{
-		if (!is_resource($this->connection)) {
+		if (!$this->getResource()) {
 			throw new Dibi\Exception('Lost connection to server.');
 		}
+
 		return "'" . pg_escape_string($this->connection, $value) . "'";
 	}
 
 
 	public function escapeBinary(string $value): string
 	{
-		if (!is_resource($this->connection)) {
+		if (!$this->getResource()) {
 			throw new Dibi\Exception('Lost connection to server.');
 		}
+
 		return "'" . pg_escape_bytea($this->connection, $value) . "'";
 	}
 
@@ -325,9 +332,11 @@ class PostgreDriver implements Dibi\Driver
 		if ($limit < 0 || $offset < 0) {
 			throw new Dibi\NotSupportedException('Negative offset or limit.');
 		}
+
 		if ($limit !== null) {
 			$sql .= ' LIMIT ' . $limit;
 		}
+
 		if ($offset) {
 			$sql .= ' OFFSET ' . $offset;
 		}

+ 4 - 1
api/vendor/dibi/dibi/src/Dibi/Drivers/PostgreReflector.php

@@ -66,6 +66,7 @@ class PostgreReflector implements Dibi\Reflector
 		while ($row = $res->fetch(true)) {
 			$tables[] = $row;
 		}
+
 		return $tables;
 	}
 
@@ -102,7 +103,7 @@ class PostgreReflector implements Dibi\Reflector
 					a.atttypmod-4 AS character_maximum_length,
 					NOT a.attnotnull AS is_nullable,
 					a.attnum AS ordinal_position,
-					adef.adsrc AS column_default
+					pg_get_expr(adef.adbin, adef.adrelid) AS column_default
 				FROM
 					pg_attribute a
 					JOIN pg_type ON a.atttypid = pg_type.oid
@@ -131,6 +132,7 @@ class PostgreReflector implements Dibi\Reflector
 				'vendor' => $row,
 			];
 		}
+
 		return $columns;
 	}
 
@@ -180,6 +182,7 @@ class PostgreReflector implements Dibi\Reflector
 				}
 			}
 		}
+
 		return array_values($indexes);
 	}
 

+ 8 - 4
api/vendor/dibi/dibi/src/Dibi/Drivers/PostgreResult.php

@@ -11,6 +11,7 @@ namespace Dibi\Drivers;
 
 use Dibi;
 use Dibi\Helpers;
+use PgSql;
 
 
 /**
@@ -20,7 +21,7 @@ class PostgreResult implements Dibi\ResultDriver
 {
 	use Dibi\Strict;
 
-	/** @var resource */
+	/** @var resource|PgSql\Result */
 	private $resultSet;
 
 	/** @var bool */
@@ -28,7 +29,7 @@ class PostgreResult implements Dibi\ResultDriver
 
 
 	/**
-	 * @param  resource  $resultSet
+	 * @param  resource|PgSql\Result  $resultSet
 	 */
 	public function __construct($resultSet)
 	{
@@ -102,18 +103,21 @@ class PostgreResult implements Dibi\ResultDriver
 				: $row['name'];
 			$columns[] = $row;
 		}
+
 		return $columns;
 	}
 
 
 	/**
 	 * Returns the result set resource.
-	 * @return resource|null
+	 * @return resource|PgSql\Result|null
 	 */
 	public function getResultResource()
 	{
 		$this->autoFree = false;
-		return is_resource($this->resultSet) ? $this->resultSet : null;
+		return is_resource($this->resultSet) || $this->resultSet instanceof PgSql\Result
+			? $this->resultSet
+			: null;
 	}
 
 

+ 5 - 4
api/vendor/dibi/dibi/src/Dibi/Drivers/SqliteDriver.php

@@ -57,7 +57,7 @@ class SqliteDriver implements Dibi\Driver
 		} else {
 			try {
 				$this->connection = new SQLite3($config['database']);
-			} catch (\Exception $e) {
+			} catch (\Throwable $e) {
 				throw new Dibi\DriverException($e->getMessage(), $e->getCode());
 			}
 		}
@@ -92,6 +92,7 @@ class SqliteDriver implements Dibi\Driver
 		} elseif ($res instanceof \SQLite3Result && $res->numColumns()) {
 			return $this->createResultDriver($res);
 		}
+
 		return null;
 	}
 
@@ -145,7 +146,7 @@ class SqliteDriver implements Dibi\Driver
 	 * Begins a transaction (if supported).
 	 * @throws Dibi\DriverException
 	 */
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 		$this->query($savepoint ? "SAVEPOINT $savepoint" : 'BEGIN');
 	}
@@ -155,7 +156,7 @@ class SqliteDriver implements Dibi\Driver
 	 * Commits statements in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 		$this->query($savepoint ? "RELEASE SAVEPOINT $savepoint" : 'COMMIT');
 	}
@@ -165,7 +166,7 @@ class SqliteDriver implements Dibi\Driver
 	 * Rollback changes in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 		$this->query($savepoint ? "ROLLBACK TO SAVEPOINT $savepoint" : 'ROLLBACK');
 	}

+ 5 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/SqliteReflector.php

@@ -44,6 +44,7 @@ class SqliteReflector implements Dibi\Reflector
 		while ($row = $res->fetch(true)) {
 			$tables[] = $row;
 		}
+
 		return $tables;
 	}
 
@@ -70,6 +71,7 @@ class SqliteReflector implements Dibi\Reflector
 				'vendor' => $row,
 			];
 		}
+
 		return $columns;
 	}
 
@@ -103,8 +105,10 @@ class SqliteReflector implements Dibi\Reflector
 					break;
 				}
 			}
+
 			$indexes[$index]['primary'] = (bool) $primary;
 		}
+
 		if (!$indexes) { // @see http://www.sqlite.org/lang_createtable.html#rowid
 			foreach ($columns as $column) {
 				if ($column['vendor']['pk']) {
@@ -142,6 +146,7 @@ class SqliteReflector implements Dibi\Reflector
 				$keys[$row['id']]['foreign'] = null;
 			}
 		}
+
 		return array_values($keys);
 	}
 }

+ 1 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/SqliteResult.php

@@ -99,6 +99,7 @@ class SqliteResult implements Dibi\ResultDriver
 				'nativetype' => $types[$this->resultSet->columnType($i)] ?? null, // buggy in PHP 7.4.4 & 7.3.16, bug 79414
 			];
 		}
+
 		return $columns;
 	}
 

+ 6 - 5
api/vendor/dibi/dibi/src/Dibi/Drivers/SqlsrvDriver.php

@@ -56,7 +56,6 @@ class SqlsrvDriver implements Dibi\Driver
 			if (!is_resource($this->connection)) {
 				throw new \InvalidArgumentException("Configuration option 'resource' is not resource.");
 			}
-
 		} else {
 			$options = $config['options'];
 
@@ -72,6 +71,7 @@ class SqlsrvDriver implements Dibi\Driver
 				$info = sqlsrv_errors(SQLSRV_ERR_ERRORS);
 				throw new Dibi\DriverException($info[0]['message'], $info[0]['code']);
 			}
+
 			sqlsrv_configure('WarningsReturnAsErrors', 1);
 		}
 
@@ -107,6 +107,7 @@ class SqlsrvDriver implements Dibi\Driver
 				? $this->createResultDriver($res)
 				: null;
 		}
+
 		return null;
 	}
 
@@ -130,6 +131,7 @@ class SqlsrvDriver implements Dibi\Driver
 			$row = sqlsrv_fetch_array($res, SQLSRV_FETCH_NUMERIC);
 			return Dibi\Helpers::intVal($row[0]);
 		}
+
 		return null;
 	}
 
@@ -138,7 +140,7 @@ class SqlsrvDriver implements Dibi\Driver
 	 * Begins a transaction (if supported).
 	 * @throws Dibi\DriverException
 	 */
-	public function begin(string $savepoint = null): void
+	public function begin(?string $savepoint = null): void
 	{
 		sqlsrv_begin_transaction($this->connection);
 	}
@@ -148,7 +150,7 @@ class SqlsrvDriver implements Dibi\Driver
 	 * Commits statements in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function commit(string $savepoint = null): void
+	public function commit(?string $savepoint = null): void
 	{
 		sqlsrv_commit($this->connection);
 	}
@@ -158,7 +160,7 @@ class SqlsrvDriver implements Dibi\Driver
 	 * Rollback changes in a transaction.
 	 * @throws Dibi\DriverException
 	 */
-	public function rollback(string $savepoint = null): void
+	public function rollback(?string $savepoint = null): void
 	{
 		sqlsrv_rollback($this->connection);
 	}
@@ -267,7 +269,6 @@ class SqlsrvDriver implements Dibi\Driver
 			} elseif ($limit !== null) {
 				$sql = sprintf('SELECT TOP (%d) * FROM (%s) t', $limit, $sql);
 			}
-
 		} elseif ($limit !== null) {
 			// requires ORDER BY, see https://technet.microsoft.com/en-us/library/gg699618(v=sql.110).aspx
 			$sql = sprintf('%s OFFSET %d ROWS FETCH NEXT %d ROWS ONLY', rtrim($sql), $offset, $limit);

+ 3 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/SqlsrvReflector.php

@@ -42,6 +42,7 @@ class SqlsrvReflector implements Dibi\Reflector
 				'view' => isset($row[1]) && $row[1] === 'VIEW',
 			];
 		}
+
 		return $tables;
 	}
 
@@ -91,6 +92,7 @@ class SqlsrvReflector implements Dibi\Reflector
 				'vendor' => $row,
 			];
 		}
+
 		return $columns;
 	}
 
@@ -114,6 +116,7 @@ class SqlsrvReflector implements Dibi\Reflector
 			$indexes[$row['name']]['primary'] = $row['is_primary_key'] === 1;
 			$indexes[$row['name']]['columns'] = $keyUsages[$row['name']] ?? [];
 		}
+
 		return array_values($indexes);
 	}
 

+ 1 - 0
api/vendor/dibi/dibi/src/Dibi/Drivers/SqlsrvResult.php

@@ -96,6 +96,7 @@ class SqlsrvResult implements Dibi\ResultDriver
 				'nativetype' => $fieldMetadata['Type'],
 			];
 		}
+
 		return $columns;
 	}
 

+ 1 - 1
api/vendor/dibi/dibi/src/Dibi/Event.php

@@ -53,7 +53,7 @@ class Event
 	public $source;
 
 
-	public function __construct(Connection $connection, int $type, string $sql = null)
+	public function __construct(Connection $connection, int $type, ?string $sql = null)
 	{
 		$this->connection = $connection;
 		$this->type = $type;

+ 13 - 8
api/vendor/dibi/dibi/src/Dibi/Fluent.php

@@ -136,6 +136,7 @@ class Fluent implements IDataSource
 			if (isset(self::$masks[$clause])) {
 				$this->clauses = array_fill_keys(self::$masks[$clause], null);
 			}
+
 			$this->cursor = &$this->clauses[$clause];
 			$this->cursor = [];
 			$this->command = $clause;
@@ -165,7 +166,6 @@ class Fluent implements IDataSource
 					$this->cursor[] = $sep;
 				}
 			}
-
 		} else {
 			// append to currect flow
 			if ($args === [self::REMOVE]) {
@@ -203,6 +203,7 @@ class Fluent implements IDataSource
 			if ($arg instanceof self) {
 				$arg = new Literal("($arg)");
 			}
+
 			$this->cursor[] = $arg;
 		}
 
@@ -245,6 +246,7 @@ class Fluent implements IDataSource
 		} else {
 			unset($this->flags[$flag]);
 		}
+
 		return $this;
 	}
 
@@ -291,7 +293,7 @@ class Fluent implements IDataSource
 	 * @return Result|int|null  result set or number of affected rows
 	 * @throws Exception
 	 */
-	public function execute(string $return = null)
+	public function execute(?string $return = null)
 	{
 		$res = $this->query($this->_export());
 		switch ($return) {
@@ -332,7 +334,7 @@ class Fluent implements IDataSource
 	/**
 	 * Fetches all records from table.
 	 */
-	public function fetchAll(int $offset = null, int $limit = null): array
+	public function fetchAll(?int $offset = null, ?int $limit = null): array
 	{
 		return $this->query($this->_export(null, ['%ofs %lmt', $offset, $limit]))->fetchAll();
 	}
@@ -351,7 +353,7 @@ class Fluent implements IDataSource
 	/**
 	 * Fetches all records from table like $key => $value pairs.
 	 */
-	public function fetchPairs(string $key = null, string $value = null): array
+	public function fetchPairs(?string $key = null, ?string $value = null): array
 	{
 		return $this->query($this->_export())->fetchPairs($key, $value);
 	}
@@ -360,7 +362,7 @@ class Fluent implements IDataSource
 	/**
 	 * Required by the IteratorAggregate interface.
 	 */
-	public function getIterator(int $offset = null, int $limit = null): ResultIterator
+	public function getIterator(?int $offset = null, ?int $limit = null): ResultIterator
 	{
 		return $this->query($this->_export(null, ['%ofs %lmt', $offset, $limit]))->getIterator();
 	}
@@ -369,7 +371,7 @@ class Fluent implements IDataSource
 	/**
 	 * Generates and prints SQL query or it's part.
 	 */
-	public function test(string $clause = null): bool
+	public function test(?string $clause = null): bool
 	{
 		return $this->connection->test($this->_export($clause));
 	}
@@ -390,6 +392,7 @@ class Fluent implements IDataSource
 			$method = array_shift($setup);
 			$res->$method(...$setup);
 		}
+
 		return $res;
 	}
 
@@ -420,7 +423,7 @@ class Fluent implements IDataSource
 	/**
 	 * Generates parameters for Translator.
 	 */
-	protected function _export(string $clause = null, array $args = []): array
+	protected function _export(?string $clause = null, array $args = []): array
 	{
 		if ($clause === null) {
 			$data = $this->clauses;
@@ -428,7 +431,6 @@ class Fluent implements IDataSource
 				$args = array_merge(['%lmt %ofs', $data['LIMIT'][0] ?? null, $data['OFFSET'][0] ?? null], $args);
 				unset($data['LIMIT'], $data['OFFSET']);
 			}
-
 		} else {
 			$clause = self::$normalizer->$clause;
 			if (array_key_exists($clause, $this->clauses)) {
@@ -444,6 +446,7 @@ class Fluent implements IDataSource
 				if ($clause === $this->command && $this->flags) {
 					$args[] = implode(' ', array_keys($this->flags));
 				}
+
 				foreach ($statement as $arg) {
 					$args[] = $arg;
 				}
@@ -464,6 +467,7 @@ class Fluent implements IDataSource
 			$s .= 'By';
 			trigger_error("Did you mean '$s'?", E_USER_NOTICE);
 		}
+
 		return strtoupper(preg_replace('#[a-z](?=[A-Z])#', '$0 ', $s));
 	}
 
@@ -475,6 +479,7 @@ class Fluent implements IDataSource
 			$this->clauses[$clause] = &$val;
 			unset($val);
 		}
+
 		$this->cursor = &$foo;
 	}
 }

+ 2 - 1
api/vendor/dibi/dibi/src/Dibi/HashMap.php

@@ -50,6 +50,7 @@ final class HashMap extends HashMapBase
 		if ($nm === '') {
 			$nm = "\xFF";
 		}
+
 		$this->$nm = $val;
 	}
 
@@ -58,7 +59,7 @@ final class HashMap extends HashMapBase
 	{
 		if ($nm === '') {
 			$nm = "\xFF";
-			return isset($this->$nm) ? $this->$nm : $this->$nm = $this->getCallback()('');
+			return isset($this->$nm) && true ? $this->$nm : $this->$nm = $this->getCallback()('');
 		} else {
 			return $this->$nm = $this->getCallback()($nm);
 		}

+ 11 - 2
api/vendor/dibi/dibi/src/Dibi/Helpers.php

@@ -41,6 +41,7 @@ class Helpers
 					$spaces = $maxLen - mb_strlen($col) + 2;
 					echo "$col" . str_repeat(' ', $spaces) . "$val\n";
 				}
+
 				echo "\n";
 			}
 
@@ -53,6 +54,7 @@ class Helpers
 					foreach ($row as $col => $foo) {
 						echo "\t\t<th>" . htmlspecialchars((string) $col) . "</th>\n";
 					}
+
 					echo "\t</tr>\n</thead>\n<tbody>\n";
 				}
 
@@ -60,6 +62,7 @@ class Helpers
 				foreach ($row as $col) {
 					echo "\t\t<td>", htmlspecialchars((string) $col), "</td>\n";
 				}
+
 				echo "\t</tr>\n";
 			}
 
@@ -104,6 +107,7 @@ class Helpers
 						}
 					}, $sql);
 				}
+
 				echo trim($sql) . "\n\n";
 
 			} else {
@@ -150,6 +154,7 @@ class Helpers
 				$best = $item;
 			}
 		}
+
 		return $best;
 	}
 
@@ -181,6 +186,7 @@ class Helpers
 	{
 		static $patterns = [
 			'^_' => Type::TEXT, // PostgreSQL arrays
+			'RANGE$' => Type::TEXT, // PostgreSQL range types
 			'BYTEA|BLOB|BIN' => Type::BINARY,
 			'TEXT|CHAR|POINT|INTERVAL|STRING' => Type::TEXT,
 			'YEAR|BYTE|COUNTER|SERIAL|INT|LONG|SHORT|^TINY$' => Type::INTEGER,
@@ -197,6 +203,7 @@ class Helpers
 				return $val;
 			}
 		}
+
 		return null;
 	}
 
@@ -207,6 +214,7 @@ class Helpers
 		if (self::$types === null) {
 			self::$types = new HashMap([self::class, 'detectType']);
 		}
+
 		return self::$types;
 	}
 
@@ -232,7 +240,7 @@ class Helpers
 	 * Import SQL dump from file.
 	 * @return int  count of sql commands
 	 */
-	public static function loadFromFile(Connection $connection, string $file, callable $onProgress = null): int
+	public static function loadFromFile(Connection $connection, string $file, ?callable $onProgress = null): int
 	{
 		@set_time_limit(0); // intentionally @
 
@@ -259,7 +267,6 @@ class Helpers
 				if ($onProgress) {
 					$onProgress($count, isset($stat['size']) ? $size * 100 / $stat['size'] : null);
 				}
-
 			} else {
 				$sql .= $s;
 			}
@@ -272,6 +279,7 @@ class Helpers
 				$onProgress($count, isset($stat['size']) ? 100 : null);
 			}
 		}
+
 		fclose($handle);
 		return $count;
 	}
@@ -293,6 +301,7 @@ class Helpers
 			if (is_float($value * 1)) {
 				throw new Exception("Number $value is greater than integer.");
 			}
+
 			return (int) $value;
 		} else {
 			throw new Exception("Expected number, '$value' given.");

+ 2 - 1
api/vendor/dibi/dibi/src/Dibi/Loggers/FileLogger.php

@@ -29,7 +29,7 @@ class FileLogger
 	private $errorsOnly;
 
 
-	public function __construct(string $file, int $filter = null, bool $errorsOnly = false)
+	public function __construct(string $file, ?int $filter = null, bool $errorsOnly = false)
 	{
 		$this->file = $file;
 		$this->filter = $filter ?: Dibi\Event::QUERY;
@@ -54,6 +54,7 @@ class FileLogger
 			if ($code = $event->result->getCode()) {
 				$message = "[$code] $message";
 			}
+
 			$this->writeToFile(
 				$event,
 				"ERROR: $message"

+ 2 - 1
api/vendor/dibi/dibi/src/Dibi/Reflection/Column.php

@@ -36,7 +36,7 @@ class Column
 	private $info;
 
 
-	public function __construct(Dibi\Reflector $reflector = null, array $info)
+	public function __construct(?Dibi\Reflector $reflector, array $info)
 	{
 		$this->reflector = $reflector;
 		$this->info = $info;
@@ -66,6 +66,7 @@ class Column
 		if (empty($this->info['table']) || !$this->reflector) {
 			throw new Dibi\Exception('Table is unknown or not available.');
 		}
+
 		return new Table($this->reflector, ['name' => $this->info['table']]);
 	}
 

+ 2 - 1
api/vendor/dibi/dibi/src/Dibi/Reflection/Database.php

@@ -33,7 +33,7 @@ class Database
 	private $tables;
 
 
-	public function __construct(Dibi\Reflector $reflector, string $name = null)
+	public function __construct(Dibi\Reflector $reflector, ?string $name = null)
 	{
 		$this->reflector = $reflector;
 		$this->name = $name;
@@ -62,6 +62,7 @@ class Database
 		foreach ($this->tables as $table) {
 			$res[] = $table->getName();
 		}
+
 		return $res;
 	}
 

+ 1 - 0
api/vendor/dibi/dibi/src/Dibi/Reflection/Result.php

@@ -54,6 +54,7 @@ class Result
 		foreach ($this->columns as $column) {
 			$res[] = $fullNames ? $column->getFullName() : $column->getName();
 		}
+
 		return $res;
 	}
 

+ 2 - 0
api/vendor/dibi/dibi/src/Dibi/Reflection/Table.php

@@ -85,6 +85,7 @@ class Table
 		foreach ($this->columns as $column) {
 			$res[] = $column->getName();
 		}
+
 		return $res;
 	}
 
@@ -152,6 +153,7 @@ class Table
 				foreach ($info['columns'] as $key => $name) {
 					$info['columns'][$key] = $this->columns[strtolower($name)];
 				}
+
 				$this->indexes[strtolower($info['name'])] = new Index($info);
 				if (!empty($info['primary'])) {
 					$this->primaryKey = $this->indexes[strtolower($info['name'])];

+ 13 - 8
api/vendor/dibi/dibi/src/Dibi/Result.php

@@ -170,6 +170,7 @@ class Result implements IDataSource
 		if ($row === null) {
 			return null;
 		}
+
 		$this->fetched = true;
 		$this->normalize($row);
 		if ($this->rowFactory) {
@@ -177,6 +178,7 @@ class Result implements IDataSource
 		} elseif ($this->rowClass) {
 			return new $this->rowClass($row);
 		}
+
 		return $row;
 	}
 
@@ -191,6 +193,7 @@ class Result implements IDataSource
 		if ($row === null) {
 			return null;
 		}
+
 		$this->fetched = true;
 		$this->normalize($row);
 		return reset($row);
@@ -201,7 +204,7 @@ class Result implements IDataSource
 	 * Fetches all records from table.
 	 * @return Row[]|array[]
 	 */
-	final public function fetchAll(int $offset = null, int $limit = null): array
+	final public function fetchAll(?int $offset = null, ?int $limit = null): array
 	{
 		$limit = $limit ?? -1;
 		$this->seek($offset ?: 0);
@@ -215,6 +218,7 @@ class Result implements IDataSource
 			if ($limit === 0) {
 				break;
 			}
+
 			$limit--;
 			$data[] = $row;
 		} while ($row = $this->fetch());
@@ -287,7 +291,6 @@ class Result implements IDataSource
 					} else {
 						$x = &$x->{$assoc[$i + 1]};
 					}
-
 				} elseif ($as !== '|') { // associative-array node
 					$x = &$x[(string) $row->$as];
 				}
@@ -345,7 +348,6 @@ class Result implements IDataSource
 					} else {
 						$x = &$x[$assoc[$i + 1]];
 					}
-
 				} elseif ($as === '@') { // "object" node
 					if ($x === null) {
 						$x = clone $row;
@@ -354,7 +356,6 @@ class Result implements IDataSource
 					} else {
 						$x = &$x->{$assoc[$i + 1]};
 					}
-
 				} else { // associative-array node
 					$x = &$x[(string) $row->$as];
 				}
@@ -376,7 +377,7 @@ class Result implements IDataSource
 	 * Fetches all records from table like $key => $value pairs.
 	 * @throws \InvalidArgumentException
 	 */
-	final public function fetchPairs(string $key = null, string $value = null): array
+	final public function fetchPairs(?string $key = null, ?string $value = null): array
 	{
 		$this->seek(0);
 		$row = $this->fetch();
@@ -398,6 +399,7 @@ class Result implements IDataSource
 				do {
 					$data[] = $row[$key];
 				} while ($row = $this->fetch());
+
 				return $data;
 			}
 
@@ -412,6 +414,7 @@ class Result implements IDataSource
 				do {
 					$data[] = $row[$value];
 				} while ($row = $this->fetch());
+
 				return $data;
 			}
 
@@ -455,6 +458,7 @@ class Result implements IDataSource
 			if (!isset($row[$key])) { // null
 				continue;
 			}
+
 			$value = $row[$key];
 			$format = $this->formats[$type] ?? null;
 
@@ -478,9 +482,11 @@ class Result implements IDataSource
 				} elseif ($p !== false && $e !== false) {
 					$value = rtrim($value, '.');
 				}
+
 				if ($value === '' || $value[0] === '.') {
 					$value = '0' . $value;
 				}
+
 				$row[$key] = $value === str_replace(',', '.', (string) ($float = (float) $value))
 					? $float
 					: $value;
@@ -489,13 +495,12 @@ class Result implements IDataSource
 				$row[$key] = ((bool) $value) && $value !== 'f' && $value !== 'F';
 
 			} elseif ($type === Type::DATETIME || $type === Type::DATE || $type === Type::TIME) {
-				if ($value && substr((string) $value, 0, 3) !== '000') { // '', null, false, '0000-00-00', ...
+				if ($value && substr((string) $value, 0, 7) !== '0000-00') { // '', null, false, '0000-00-00', ...
 					$value = new DateTime($value);
 					$row[$key] = $format ? $value->format($format) : $value;
 				} else {
 					$row[$key] = null;
 				}
-
 			} elseif ($type === Type::TIME_INTERVAL) {
 				preg_match('#^(-?)(\d+)\D(\d+)\D(\d+)\z#', $value, $m);
 				$value = new \DateInterval("PT$m[2]H$m[3]M$m[4]S");
@@ -513,7 +518,6 @@ class Result implements IDataSource
 				} else {
 					$row[$key] = json_decode($value, $format === 'array');
 				}
-
 			} else {
 				throw new \RuntimeException('Unexpected type ' . $type);
 			}
@@ -590,6 +594,7 @@ class Result implements IDataSource
 		if ($this->meta === null) {
 			$this->meta = new Reflection\Result($this->getResultDriver());
 		}
+
 		return $this->meta;
 	}
 

+ 2 - 0
api/vendor/dibi/dibi/src/Dibi/ResultIterator.php

@@ -44,6 +44,7 @@ class ResultIterator implements \Iterator, \Countable
 	}
 
 
+	#[\ReturnTypeWillChange]
 	/**
 	 * Returns the key of the current element.
 	 * @return mixed
@@ -54,6 +55,7 @@ class ResultIterator implements \Iterator, \Countable
 	}
 
 
+	#[\ReturnTypeWillChange]
 	/**
 	 * Returns the current element.
 	 * @return mixed

+ 10 - 7
api/vendor/dibi/dibi/src/Dibi/Row.php

@@ -33,15 +33,17 @@ class Row implements \ArrayAccess, \IteratorAggregate, \Countable
 	 * Converts value to DateTime object.
 	 * @return DateTime|string|null
 	 */
-	public function asDateTime(string $key, string $format = null)
+	public function asDateTime(string $key, ?string $format = null)
 	{
 		$time = $this[$key];
 		if (!$time instanceof DateTime) {
-			if (!$time || substr((string) $time, 0, 3) === '000') { // '', null, false, '0000-00-00', ...
+			if (!$time || substr((string) $time, 0, 7) === '0000-00') { // '', null, false, '0000-00-00', ...
 				return null;
 			}
+
 			$time = new DateTime($time);
 		}
+
 		return $format === null ? $time : $time->format($format);
 	}
 
@@ -62,37 +64,38 @@ class Row implements \ArrayAccess, \IteratorAggregate, \Countable
 	/********************* interfaces ArrayAccess, Countable & IteratorAggregate ****************d*g**/
 
 
-	final public function count()
+	final public function count(): int
 	{
 		return count((array) $this);
 	}
 
 
-	final public function getIterator()
+	final public function getIterator(): \ArrayIterator
 	{
 		return new \ArrayIterator($this);
 	}
 
 
-	final public function offsetSet($nm, $val)
+	final public function offsetSet($nm, $val): void
 	{
 		$this->$nm = $val;
 	}
 
 
+	#[\ReturnTypeWillChange]
 	final public function offsetGet($nm)
 	{
 		return $this->$nm;
 	}
 
 
-	final public function offsetExists($nm)
+	final public function offsetExists($nm): bool
 	{
 		return isset($this->$nm);
 	}
 
 
-	final public function offsetUnset($nm)
+	final public function offsetUnset($nm): void
 	{
 		unset($this->$nm);
 	}

+ 1 - 0
api/vendor/dibi/dibi/src/Dibi/Strict.php

@@ -67,6 +67,7 @@ trait Strict
 			$ret = $this->$m();
 			return $ret;
 		}
+
 		$rc = new ReflectionClass($this);
 		$items = array_filter($rc->getProperties(ReflectionProperty::IS_PUBLIC), function ($p) { return !$p->isStatic(); });
 		$items = array_map(function ($item) { return $item->getName(); }, $items);

+ 25 - 4
api/vendor/dibi/dibi/src/Dibi/Translator.php

@@ -69,6 +69,7 @@ final class Translator
 		while (count($args) === 1 && is_array($args[0])) { // implicit array expansion
 			$args = array_values($args[0]);
 		}
+
 		$this->args = $args;
 		$this->errors = [];
 
@@ -116,6 +117,7 @@ XX
 						throw new PcreException;
 					}
 				}
+
 				continue;
 			}
 
@@ -138,8 +140,10 @@ XX
 					if ($lastArr === $cursor - 1) {
 						$sql[] = ',';
 					}
+
 					$sql[] = $this->formatValue($arg, $commandIns ? 'l' : 'a');
 				}
+
 				$lastArr = $cursor;
 				continue;
 			}
@@ -148,7 +152,6 @@ XX
 			$sql[] = $this->formatValue($arg, null);
 		} // while
 
-
 		if ($comment) {
 			$sql[] = '*/';
 		}
@@ -214,13 +217,14 @@ XX
 								} else {
 									$op = '= ';
 								}
+
 								$vx[] = $k . $op . $v;
 							}
-
 						} else {
 							$vx[] = $this->formatValue($v, 'ex');
 						}
 					}
+
 					return '(' . implode(') ' . strtoupper($modifier) . ' (', $vx) . ')';
 
 				case 'n':  // key, key, ... identifier names
@@ -232,6 +236,7 @@ XX
 							$vx[] = $this->identifiers->{$pair[0]};
 						}
 					}
+
 					return implode(', ', $vx);
 
 
@@ -241,6 +246,7 @@ XX
 						$vx[] = $this->identifiers->{$pair[0]} . '='
 							. $this->formatValue($v, $pair[1] ?? (is_array($v) ? 'ex!' : null));
 					}
+
 					return implode(', ', $vx);
 
 
@@ -250,6 +256,7 @@ XX
 						$pair = explode('%', (string) $k, 2); // split into identifier & modifier
 						$vx[] = $this->formatValue($v, $pair[1] ?? (is_array($v) ? 'ex!' : null));
 					}
+
 					return '(' . (($vx || $modifier === 'l') ? implode(', ', $vx) : 'NULL') . ')';
 
 
@@ -259,6 +266,7 @@ XX
 						$kx[] = $this->identifiers->{$pair[0]};
 						$vx[] = $this->formatValue($v, $pair[1] ?? (is_array($v) ? 'ex!' : null));
 					}
+
 					return '(' . implode(', ', $kx) . ') VALUES (' . implode(', ', $vx) . ')';
 
 				case 'm': // (key, key, ...) VALUES (val, val, ...), (val, val, ...), ...
@@ -281,9 +289,11 @@ XX
 							$vx[$k2][] = $this->formatValue($v2, $pair[1] ?? (is_array($v2) ? 'ex!' : null));
 						}
 					}
+
 					foreach ($vx as $k => $v) {
 						$vx[$k] = '(' . implode(', ', $v) . ')';
 					}
+
 					return '(' . implode(', ', $kx) . ') VALUES ' . implode(', ', $vx);
 
 				case 'by': // key ASC, key DESC
@@ -297,6 +307,7 @@ XX
 							$vx[] = $this->identifiers->$v;
 						}
 					}
+
 					return implode(', ', $vx);
 
 				case 'ex!':
@@ -310,10 +321,15 @@ XX
 					foreach ($value as $v) {
 						$vx[] = $this->formatValue($v, $modifier);
 					}
+
 					return implode(', ', $vx);
 			}
 		}
 
+		// object-to-scalar procession
+		if ($value instanceof \BackedEnum && is_scalar($value->value)) {
+			$value = $value->value;
+		}
 
 		// with modifier procession
 		if ($modifier) {
@@ -400,6 +416,7 @@ XX
 					} elseif (!$value instanceof \DateTimeInterface) {
 						$value = new DateTime($value);
 					}
+
 					return $modifier === 'd'
 						? $this->driver->escapeDate($value)
 						: $this->driver->escapeDateTime($value);
@@ -439,6 +456,7 @@ XX
 							throw new PcreException;
 						}
 					}
+
 					return $value;
 
 				case 'SQL': // preserve as real SQL (TODO: rename to %sql)
@@ -469,7 +487,6 @@ XX
 			}
 		}
 
-
 		// without modifier procession
 		if (is_string($value)) {
 			return $this->driver->escapeText($value);
@@ -551,6 +568,7 @@ XX
 					$this->comment = true;
 					return '/*';
 				}
+
 				return '';
 
 			} elseif ($mod === 'else') {
@@ -563,7 +581,6 @@ XX
 					$this->comment = true;
 					return '/*';
 				}
-
 			} elseif ($mod === 'end') {
 				$this->ifLevel--;
 				if ($this->ifLevelStart === $this->ifLevel + 1) {
@@ -572,6 +589,7 @@ XX
 					$this->comment = false;
 					return '*/';
 				}
+
 				return '';
 
 			} elseif ($mod === 'ex') { // array expansion
@@ -586,6 +604,7 @@ XX
 				} else {
 					$this->limit = Helpers::intVal($arg);
 				}
+
 				return '';
 
 			} elseif ($mod === 'ofs') { // apply offset
@@ -596,6 +615,7 @@ XX
 				} else {
 					$this->offset = Helpers::intVal($arg);
 				}
+
 				return '';
 
 			} else { // default processing
@@ -649,6 +669,7 @@ XX
 				$v = $this->driver->escapeIdentifier($v);
 			}
 		}
+
 		return implode('.', $parts);
 	}
 }

+ 3 - 3
api/vendor/dibi/dibi/src/Dibi/dibi.php

@@ -45,7 +45,7 @@ class dibi
 
 	/** version */
 	public const
-		VERSION = '4.2.3';
+		VERSION = '4.2.6';
 
 	/** sorting order */
 	public const
@@ -107,7 +107,7 @@ class dibi
 	 * Retrieve active connection.
 	 * @throws Dibi\Exception
 	 */
-	public static function getConnection(string $name = null): Dibi\Connection
+	public static function getConnection(?string $name = null): Dibi\Connection
 	{
 		if ($name === null) {
 			if (self::$connection === null) {
@@ -163,7 +163,7 @@ class dibi
 	/**
 	 * Strips microseconds part.
 	 */
-	public static function stripMicroseconds(\DateTimeInterface $dt): \DateTimeInterface
+	public static function stripMicroseconds(DateTimeInterface $dt): DateTimeInterface
 	{
 		$class = get_class($dt);
 		return new $class($dt->format('Y-m-d H:i:s'), $dt->getTimezone());

+ 2 - 2
api/vendor/dibi/dibi/src/Dibi/exceptions.php

@@ -22,7 +22,7 @@ class Exception extends \Exception
 	/**
 	 * @param  int|string  $code
 	 */
-	public function __construct(string $message = '', $code = 0, string $sql = null, \Throwable $previous = null)
+	public function __construct(string $message = '', $code = 0, ?string $sql = null, ?\Throwable $previous = null)
 	{
 		parent::__construct($message, 0, $previous);
 		$this->code = $code;
@@ -93,7 +93,7 @@ class ProcedureException extends Exception
 	/**
 	 * Construct the exception.
 	 */
-	public function __construct(string $message = '', int $code = 0, string $severity = '', string $sql = null)
+	public function __construct(string $message = '', int $code = 0, string $severity = '', ?string $sql = null)
 	{
 		parent::__construct($message, $code, $sql);
 		$this->severity = $severity;

+ 7 - 7
api/vendor/dibi/dibi/src/Dibi/interfaces.php

@@ -51,19 +51,19 @@ interface Driver
 	 * Begins a transaction (if supported).
 	 * @throws DriverException
 	 */
-	function begin(string $savepoint = null): void;
+	function begin(?string $savepoint = null): void;
 
 	/**
 	 * Commits statements in a transaction.
 	 * @throws DriverException
 	 */
-	function commit(string $savepoint = null): void;
+	function commit(?string $savepoint = null): void;
 
 	/**
 	 * Rollback changes in a transaction.
 	 * @throws DriverException
 	 */
-	function rollback(string $savepoint = null): void;
+	function rollback(?string $savepoint = null): void;
 
 	/**
 	 * Returns the connection resource.
@@ -224,20 +224,20 @@ interface IConnection
 	 * Retrieves the ID generated for an AUTO_INCREMENT column by the previous INSERT query.
 	 * @throws Exception
 	 */
-	function getInsertId(string $sequence = null): int;
+	function getInsertId(?string $sequence = null): int;
 
 	/**
 	 * Begins a transaction (if supported).
 	 */
-	function begin(string $savepoint = null): void;
+	function begin(?string $savepoint = null): void;
 
 	/**
 	 * Commits statements in a transaction.
 	 */
-	function commit(string $savepoint = null): void;
+	function commit(?string $savepoint = null): void;
 
 	/**
 	 * Rollback changes in a transaction.
 	 */
-	function rollback(string $savepoint = null): void;
+	function rollback(?string $savepoint = null): void;
 }