diff --git a/.travis.yml b/.travis.yml index 4023b4ea..29227325 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ env: # Test for all supported PHP versions php: - - '7.1' + #- '7.1' - '7.2' - '7.3' - '7.4' diff --git a/README.md b/README.md index e7cbf34e..98b12ad9 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://travis-ci.com/Part-DB/Part-DB-symfony.svg?branch=master)](https://travis-ci.com/Part-DB/Part-DB-symfony) [![codecov](https://codecov.io/gh/Part-DB/Part-DB-symfony/branch/master/graph/badge.svg)](https://codecov.io/gh/Part-DB/Part-DB-symfony) ![GitHub License](https://img.shields.io/github/license/Part-DB/Part-DB-symfony) -![PHP Version](https://img.shields.io/badge/PHP-%3E%3D%207.1-green) +![PHP Version](https://img.shields.io/badge/PHP-%3E%3D%207.2-green) # Part-DB Part-DB is an Open-Source inventory managment system for your electronic components. @@ -27,7 +27,7 @@ for the first time. ## Requirements * A **web server** (like Apache2 or nginx) that is capable of running [Symfony 4](https://symfony.com/doc/current/reference/requirements.html), - this includes a minimum PHP version of **PHP 7.1.3** + this includes a minimum PHP version of **PHP 7.2.5** * A **MySQL**/**MariaDB** database server * Shell access to your server is highly suggested! * For building the client side assets **yarn** and **nodejs** is needed. diff --git a/composer.json b/composer.json index 03bfb23c..cb74e1be 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "type": "project", "license": "GPL-2.0-or-later", "require": { - "php": "^7.1.3", + "php": "^7.2.5", "ext-bcmath": "*", "ext-ctype": "*", "ext-gd": "*", @@ -71,7 +71,7 @@ "*": "dist" }, "platform": { - "php": "7.1.3" + "php": "7.2.5" }, "sort-packages": true }, diff --git a/composer.lock b/composer.lock index 1a70e7cc..68c54021 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8aa86f40d5466e5d6f91f15664f3b633", + "content-hash": "a2255f70c09f9313e7a4adc58c599ec5", "packages": [ { "name": "beberlei/assert", @@ -373,31 +373,30 @@ }, { "name": "doctrine/dbal", - "version": "v2.9.3", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "7345cd59edfa2036eb0fa4264b77ae2576842035" + "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/7345cd59edfa2036eb0fa4264b77ae2576842035", - "reference": "7345cd59edfa2036eb0fa4264b77ae2576842035", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934", + "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934", "shasum": "" }, "require": { "doctrine/cache": "^1.0", "doctrine/event-manager": "^1.0", "ext-pdo": "*", - "php": "^7.1" + "php": "^7.2" }, "require-dev": { - "doctrine/coding-standard": "^5.0", - "jetbrains/phpstorm-stubs": "^2018.1.2", - "phpstan/phpstan": "^0.10.1", - "phpunit/phpunit": "^7.4", - "symfony/console": "^2.0.5|^3.0|^4.0", - "symfony/phpunit-bridge": "^3.4.5|^4.0.5" + "doctrine/coding-standard": "^6.0", + "jetbrains/phpstorm-stubs": "^2019.1", + "phpstan/phpstan": "^0.11.3", + "phpunit/phpunit": "^8.4.1", + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -408,7 +407,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.9.x-dev", + "dev-master": "2.10.x-dev", "dev-develop": "3.0.x-dev" } }, @@ -444,14 +443,25 @@ "keywords": [ "abstraction", "database", + "db2", "dbal", + "mariadb", + "mssql", "mysql", - "persistence", + "oci8", + "oracle", + "pdo", "pgsql", - "php", - "queryobject" + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlanywhere", + "sqlite", + "sqlserver", + "sqlsrv" ], - "time": "2019-11-02T22:19:34+00:00" + "time": "2019-11-03T16:50:43+00:00" }, { "name": "doctrine/doctrine-bundle", @@ -906,28 +916,30 @@ }, { "name": "doctrine/lexer", - "version": "1.0.2", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.2" }, "require-dev": { - "phpunit/phpunit": "^4.5" + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -940,14 +952,14 @@ "MIT" ], "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, { "name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com" }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" @@ -962,7 +974,7 @@ "parser", "php" ], - "time": "2019-06-08T11:03:04+00:00" + "time": "2019-10-30T14:39:59+00:00" }, { "name": "doctrine/migrations", @@ -2159,20 +2171,20 @@ }, { "name": "nikolaposa/version", - "version": "3.0.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/nikolaposa/version.git", - "reference": "82d04559bd48de18290683e2c331fc3b527264a6" + "reference": "7ff2bbf2fe6a47efe47832d6198924e99b4a4f5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikolaposa/version/zipball/82d04559bd48de18290683e2c331fc3b527264a6", - "reference": "82d04559bd48de18290683e2c331fc3b527264a6", + "url": "https://api.github.com/repos/nikolaposa/version/zipball/7ff2bbf2fe6a47efe47832d6198924e99b4a4f5a", + "reference": "7ff2bbf2fe6a47efe47832d6198924e99b4a4f5a", "shasum": "" }, "require": { - "php": "^7.1.0" + "php": "^7.2.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.0", @@ -2181,7 +2193,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.2.x-dev" } }, "autoload": { @@ -2208,7 +2220,7 @@ "version", "versioning" ], - "time": "2018-05-28T18:15:22+00:00" + "time": "2019-08-11T08:31:54+00:00" }, { "name": "nyholm/nsa", @@ -2974,32 +2986,33 @@ }, { "name": "php-translation/symfony-storage", - "version": "1.0.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-translation/symfony-storage.git", - "reference": "8d7b1ea6bf22bee0c7dc9b228cf9437312373a27" + "reference": "ce305cedda67eefae65ea32b198d4d91e9294634" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-translation/symfony-storage/zipball/8d7b1ea6bf22bee0c7dc9b228cf9437312373a27", - "reference": "8d7b1ea6bf22bee0c7dc9b228cf9437312373a27", + "url": "https://api.github.com/repos/php-translation/symfony-storage/zipball/ce305cedda67eefae65ea32b198d4d91e9294634", + "reference": "ce305cedda67eefae65ea32b198d4d91e9294634", "shasum": "" }, "require": { "nyholm/nsa": "^1.1", - "php": "^5.5 || ^7.0", + "php": "^7.2", "php-translation/common": "^1.0", - "symfony/translation": "^2.7 || ^3.0 || ^4.0" + "symfony/translation": "^3.4 || ^4.2 || ^5.0" }, "require-dev": { - "symfony/framework-bundle": "^2.7.39 || ^3.0 || ^4.0", - "symfony/phpunit-bridge": "^3.4 || ^4.0" + "phpunit/phpunit": "^8.4", + "symfony/framework-bundle": " ^3.4 || ^4.2 || ^5.0", + "symfony/phpunit-bridge": "^4.2 || ^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.3-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -3018,7 +3031,7 @@ } ], "description": "A translation file storage using Symfony translation component.", - "time": "2018-07-10T10:32:01+00:00" + "time": "2019-12-05T09:44:20+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -3981,31 +3994,41 @@ }, { "name": "spomky-labs/otphp", - "version": "v9.1.4", + "version": "v10.0.0", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/otphp.git", - "reference": "48d463cf909320399fe08eab2e1cd18d899d5068" + "reference": "7c4e59c6a1cfe7798e5bf33cca6e5e5cdc5df9ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/48d463cf909320399fe08eab2e1cd18d899d5068", - "reference": "48d463cf909320399fe08eab2e1cd18d899d5068", + "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/7c4e59c6a1cfe7798e5bf33cca6e5e5cdc5df9ff", + "reference": "7c4e59c6a1cfe7798e5bf33cca6e5e5cdc5df9ff", "shasum": "" }, "require": { - "beberlei/assert": "^2.4|^3.0", + "beberlei/assert": "^3.0", + "ext-mbstring": "*", "paragonie/constant_time_encoding": "^2.0", - "php": "^7.1" + "php": "^7.2|^8.0", + "thecodingmachine/safe": "^0.1.14" }, "require-dev": { - "phpunit/phpunit": "^6.0", - "satooshi/php-coveralls": "^1.0" + "php-coveralls/php-coveralls": "^2.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-beberlei-assert": "^0.11.0", + "phpstan/phpstan-deprecation-rules": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^8.0", + "thecodingmachine/phpstan-safe-rule": "^0.1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.0.x-dev" + "v10.0": "10.0.x-dev", + "v9.0": "9.0.x-dev", + "v8.3": "8.3.x-dev" } }, "autoload": { @@ -4038,7 +4061,7 @@ "otp", "totp" ], - "time": "2019-03-18T10:08:51+00:00" + "time": "2019-07-30T14:43:55+00:00" }, { "name": "symfony/apache-pack", @@ -4199,20 +4222,20 @@ }, { "name": "symfony/cache-contracts", - "version": "v1.1.7", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1" + "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/af50d14ada9e4e82cfabfabdc502d144f89be0a1", - "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", + "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "psr/cache": "^1.0" }, "suggest": { @@ -4221,7 +4244,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -4253,7 +4276,7 @@ "interoperability", "standards" ], - "time": "2019-10-04T21:43:27+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/config", @@ -5396,20 +5419,20 @@ }, { "name": "symfony/http-client-contracts", - "version": "v1.1.8", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "088bae75cfa2ec5eb6d33dce17dbd8613150ce6e" + "reference": "378868b61b85c5cac6822d4f84e26999c9f2e881" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/088bae75cfa2ec5eb6d33dce17dbd8613150ce6e", - "reference": "088bae75cfa2ec5eb6d33dce17dbd8613150ce6e", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/378868b61b85c5cac6822d4f84e26999c9f2e881", + "reference": "378868b61b85c5cac6822d4f84e26999c9f2e881", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "suggest": { "symfony/http-client-implementation": "" @@ -5417,7 +5440,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -5449,7 +5472,7 @@ "interoperability", "standards" ], - "time": "2019-11-07T12:44:51+00:00" + "time": "2019-11-26T23:25:11+00:00" }, { "name": "symfony/http-foundation", @@ -7079,20 +7102,20 @@ }, { "name": "symfony/service-contracts", - "version": "v1.1.8", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf" + "reference": "144c5e51266b281231e947b51223ba14acf1a749" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf", - "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "psr/container": "^1.0" }, "suggest": { @@ -7101,7 +7124,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -7133,7 +7156,7 @@ "interoperability", "standards" ], - "time": "2019-10-14T12:27:06+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/stopwatch", @@ -7319,20 +7342,20 @@ }, { "name": "symfony/translation-contracts", - "version": "v1.1.7", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "364518c132c95642e530d9b2d217acbc2ccac3e6" + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/364518c132c95642e530d9b2d217acbc2ccac3e6", - "reference": "364518c132c95642e530d9b2d217acbc2ccac3e6", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "suggest": { "symfony/translation-implementation": "" @@ -7340,7 +7363,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -7372,7 +7395,7 @@ "interoperability", "standards" ], - "time": "2019-09-17T11:12:18+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/twig-bridge", @@ -7968,6 +7991,138 @@ "homepage": "https://symfony.com", "time": "2019-12-10T10:33:21+00:00" }, + { + "name": "thecodingmachine/safe", + "version": "v0.1.16", + "source": { + "type": "git", + "url": "https://github.com/thecodingmachine/safe.git", + "reference": "4e8f840f0a0a2ea167813c3994a7fc527c3c2182" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/4e8f840f0a0a2ea167813c3994a7fc527c3c2182", + "reference": "4e8f840f0a0a2ea167813c3994a7fc527c3c2182", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpstan/phpstan": "^0.10.3", + "squizlabs/php_codesniffer": "^3.2", + "thecodingmachine/phpstan-strict-rules": "^0.10.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.1-dev" + } + }, + "autoload": { + "psr-4": { + "Safe\\": [ + "lib/", + "generated/" + ] + }, + "files": [ + "generated/apache.php", + "generated/apc.php", + "generated/apcu.php", + "generated/array.php", + "generated/bzip2.php", + "generated/classobj.php", + "generated/com.php", + "generated/cubrid.php", + "generated/curl.php", + "generated/datetime.php", + "generated/dir.php", + "generated/eio.php", + "generated/errorfunc.php", + "generated/exec.php", + "generated/fileinfo.php", + "generated/filesystem.php", + "generated/filter.php", + "generated/fpm.php", + "generated/ftp.php", + "generated/funchand.php", + "generated/gmp.php", + "generated/gnupg.php", + "generated/hash.php", + "generated/ibase.php", + "generated/ibmDb2.php", + "generated/iconv.php", + "generated/image.php", + "generated/imap.php", + "generated/info.php", + "generated/ingres-ii.php", + "generated/inotify.php", + "generated/json.php", + "generated/ldap.php", + "generated/libevent.php", + "generated/libxml.php", + "generated/lzf.php", + "generated/mailparse.php", + "generated/mbstring.php", + "generated/misc.php", + "generated/msql.php", + "generated/mssql.php", + "generated/mysql.php", + "generated/mysqli.php", + "generated/mysqlndMs.php", + "generated/mysqlndQc.php", + "generated/network.php", + "generated/oci8.php", + "generated/opcache.php", + "generated/openssl.php", + "generated/outcontrol.php", + "generated/password.php", + "generated/pcntl.php", + "generated/pcre.php", + "generated/pdf.php", + "generated/pgsql.php", + "generated/posix.php", + "generated/ps.php", + "generated/pspell.php", + "generated/readline.php", + "generated/rrd.php", + "generated/sem.php", + "generated/session.php", + "generated/shmop.php", + "generated/simplexml.php", + "generated/sockets.php", + "generated/sodium.php", + "generated/solr.php", + "generated/spl.php", + "generated/sqlsrv.php", + "generated/ssdeep.php", + "generated/ssh2.php", + "generated/stats.php", + "generated/stream.php", + "generated/strings.php", + "generated/swoole.php", + "generated/uodbc.php", + "generated/uopz.php", + "generated/url.php", + "generated/var.php", + "generated/xdiff.php", + "generated/xml.php", + "generated/xmlrpc.php", + "generated/yaml.php", + "generated/yaz.php", + "generated/zip.php", + "generated/zlib.php", + "lib/special_cases.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "time": "2019-06-25T08:45:33+00:00" + }, { "name": "tijsverkoyen/css-to-inline-styles", "version": "2.2.2", @@ -8799,27 +8954,28 @@ }, { "name": "doctrine/data-fixtures", - "version": "1.3.3", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "f0ee99c64922fc3f863715232b615c478a61b0a3" + "reference": "608a35a3b5bcc4214d116603095f8b0c51091592" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f0ee99c64922fc3f863715232b615c478a61b0a3", - "reference": "f0ee99c64922fc3f863715232b615c478a61b0a3", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/608a35a3b5bcc4214d116603095f8b0c51091592", + "reference": "608a35a3b5bcc4214d116603095f8b0c51091592", "shasum": "" }, "require": { - "doctrine/common": "~2.2", - "php": "^7.1" + "doctrine/common": "^2.11", + "php": "^7.2" }, "conflict": { "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^6.0", "doctrine/dbal": "^2.5.4", "doctrine/mongodb-odm": "^1.3.0", "doctrine/orm": "^2.5.4", @@ -8834,7 +8990,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -8857,7 +9013,7 @@ "keywords": [ "database" ], - "time": "2019-10-24T04:52:28+00:00" + "time": "2019-10-30T20:03:18+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -10098,7 +10254,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.1.3", + "php": "^7.2.5", "ext-bcmath": "*", "ext-ctype": "*", "ext-gd": "*", @@ -10109,6 +10265,6 @@ }, "platform-dev": [], "platform-overrides": { - "php": "7.1.3" + "php": "7.2.5" } } diff --git a/symfony.lock b/symfony.lock index 6562b509..4fb08b8b 100644 --- a/symfony.lock +++ b/symfony.lock @@ -239,7 +239,7 @@ "version": "v2.3.0" }, "php": { - "version": "7.1.3" + "version": "7.2.5" }, "php-http/discovery": { "version": "1.7.0" @@ -746,6 +746,9 @@ "symfony/yaml": { "version": "v4.2.3" }, + "thecodingmachine/safe": { + "version": "v0.1.16" + }, "tijsverkoyen/css-to-inline-styles": { "version": "2.2.2" },