فهرست منبع

Add test and fix for very large repos, moar possessive quantifiers, fixes #5104

Jordi Boggiano 9 سال پیش
والد
کامیت
edebbef98a
2فایلهای تغییر یافته به همراه966 افزوده شده و 3 حذف شده
  1. 3 3
      src/Composer/Json/JsonManipulator.php
  2. 963 0
      tests/Composer/Test/Json/JsonManipulatorTest.php

+ 3 - 3
src/Composer/Json/JsonManipulator.php

@@ -31,9 +31,9 @@ class JsonManipulator
     public function __construct($contents)
     {
         if (!self::$RECURSE_BLOCKS) {
-            self::$RECURSE_BLOCKS = '(?:[^{}]*|\{(?:[^{}]*|\{(?:[^{}]*|\{(?:[^{}]*|\{[^{}]*\})*\})*\})*\})*';
-            self::$RECURSE_ARRAYS = '(?:[^\]]*|\[(?:[^\]]*|\[(?:[^\]]*|\[(?:[^\]]*|\[[^\]]*\])*\])*\])*\]|'.self::$RECURSE_BLOCKS.')*';
-            self::$JSON_STRING = '"(?:[^\0-\x09\x0a-\x1f\\\\"]+|\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4})*"';
+            self::$RECURSE_BLOCKS = '(?:[^{}]*+|\{(?:[^{}]*+|\{(?:[^{}]*+|\{(?:[^{}]*+|\{[^{}]*+\})*\})*\})*\})*';
+            self::$RECURSE_ARRAYS = '(?:[^\]]*+|\[(?:[^\]]*+|\[(?:[^\]]*+|\[(?:[^\]]*+|\[[^\]]*+\])*\])*\])*\]|'.self::$RECURSE_BLOCKS.')*';
+            self::$JSON_STRING = '"(?:[^\0-\x09\x0a-\x1f\\\\"]+|\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4})*+"';
             self::$JSON_VALUE = '(?:[0-9.]+|null|true|false|'.self::$JSON_STRING.'|\['.self::$RECURSE_ARRAYS.'\]|\{'.self::$RECURSE_BLOCKS.'\})';
         }
 

+ 963 - 0
tests/Composer/Test/Json/JsonManipulatorTest.php

@@ -277,6 +277,969 @@ class JsonManipulatorTest extends \PHPUnit_Framework_TestCase
         "foo": "qux"
     }
 }
+',
+            ),
+            array(
+                '{
+    "config": {
+        "cache-files-ttl": 0,
+        "discard-changes": true
+    },
+    "minimum-stability": "stable",
+    "prefer-stable": false,
+    "provide": {
+        "heroku-sys/cedar": "14.2016.03.22"
+    },
+    "repositories": [
+        {
+            "packagist": false
+        },
+        {
+            "type": "package",
+            "package": [
+                {
+                    "type": "metapackage",
+                    "name": "anthonymartin/geo-location",
+                    "version": "v1.0.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "aws/aws-sdk-php",
+                    "version": "3.9.4",
+                    "require": {
+                        "heroku-sys/php": ">=5.5"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "cloudinary/cloudinary_php",
+                    "version": "dev-master",
+                    "require": {
+                        "heroku-sys/ext-curl": "*",
+                        "heroku-sys/ext-json": "*",
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/annotations",
+                    "version": "v1.2.7",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.2"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/cache",
+                    "version": "v1.6.0",
+                    "require": {
+                        "heroku-sys/php": "~5.5|~7.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/collections",
+                    "version": "v1.3.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.2"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/common",
+                    "version": "v2.6.1",
+                    "require": {
+                        "heroku-sys/php": "~5.5|~7.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/inflector",
+                    "version": "v1.1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.2"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/lexer",
+                    "version": "v1.0.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.2"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "geoip/geoip",
+                    "version": "v1.16",
+                    "require": [],
+                    "replace": [],
+                    "provide": [],
+                    "conflict": {
+                        "heroku-sys/ext-geoip": "*"
+                    }
+                },
+                {
+                    "type": "metapackage",
+                    "name": "giggsey/libphonenumber-for-php",
+                    "version": "7.2.5",
+                    "require": {
+                        "heroku-sys/ext-mbstring": "*"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/guzzle",
+                    "version": "5.3.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/promises",
+                    "version": "1.0.3",
+                    "require": {
+                        "heroku-sys/php": ">=5.5.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/psr7",
+                    "version": "1.2.3",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/ringphp",
+                    "version": "1.1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/streams",
+                    "version": "3.0.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "hipchat/hipchat-php",
+                    "version": "v1.4",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "kriswallsmith/buzz",
+                    "version": "v0.15",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "league/csv",
+                    "version": "8.0.0",
+                    "require": {
+                        "heroku-sys/ext-mbstring": "*",
+                        "heroku-sys/php": ">=5.5.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "league/fractal",
+                    "version": "0.13.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "mashape/unirest-php",
+                    "version": "1.2.1",
+                    "require": {
+                        "heroku-sys/ext-curl": "*",
+                        "heroku-sys/ext-json": "*",
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "mtdowling/jmespath.php",
+                    "version": "2.3.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "palex/phpstructureddata",
+                    "version": "v2.0.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "psr/http-message",
+                    "version": "1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "react/promise",
+                    "version": "v2.2.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "rollbar/rollbar",
+                    "version": "v0.15.0",
+                    "require": {
+                        "heroku-sys/ext-curl": "*"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "ronanguilloux/isocodes",
+                    "version": "1.2.0",
+                    "require": {
+                        "heroku-sys/ext-bcmath": "*",
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "sendgrid/sendgrid",
+                    "version": "2.1.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.3"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "sendgrid/smtpapi",
+                    "version": "0.0.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.3"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "symfony/css-selector",
+                    "version": "v2.8.2",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.9"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "symfony/http-foundation",
+                    "version": "v2.8.2",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.9"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "symfony/polyfill-php54",
+                    "version": "v1.1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.3"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "symfony/polyfill-php55",
+                    "version": "v1.1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.3"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "thepixeldeveloper/sitemap",
+                    "version": "3.0.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "tijsverkoyen/css-to-inline-styles",
+                    "version": "1.5.5",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "yiisoft/yii",
+                    "version": "1.1.17",
+                    "require": {
+                        "heroku-sys/php": ">=5.1.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "composer.json/composer.lock",
+                    "version": "dev-597511d6d51b96e4a8afeba2c79982e5",
+                    "require": {
+                        "heroku-sys/php": "~5.6.0",
+                        "heroku-sys/ext-newrelic": "*",
+                        "heroku-sys/ext-gd": "*",
+                        "heroku-sys/ext-redis": "*"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                }
+            ]
+        }
+    ],
+    "require": {
+        "composer.json/composer.lock": "dev-597511d6d51b96e4a8afeba2c79982e5",
+        "anthonymartin/geo-location": "v1.0.0",
+        "aws/aws-sdk-php": "3.9.4",
+        "cloudinary/cloudinary_php": "dev-master",
+        "doctrine/annotations": "v1.2.7",
+        "doctrine/cache": "v1.6.0",
+        "doctrine/collections": "v1.3.0",
+        "doctrine/common": "v2.6.1",
+        "doctrine/inflector": "v1.1.0",
+        "doctrine/lexer": "v1.0.1",
+        "geoip/geoip": "v1.16",
+        "giggsey/libphonenumber-for-php": "7.2.5",
+        "guzzlehttp/guzzle": "5.3.0",
+        "guzzlehttp/promises": "1.0.3",
+        "guzzlehttp/psr7": "1.2.3",
+        "guzzlehttp/ringphp": "1.1.0",
+        "guzzlehttp/streams": "3.0.0",
+        "hipchat/hipchat-php": "v1.4",
+        "kriswallsmith/buzz": "v0.15",
+        "league/csv": "8.0.0",
+        "league/fractal": "0.13.0",
+        "mashape/unirest-php": "1.2.1",
+        "mtdowling/jmespath.php": "2.3.0",
+        "palex/phpstructureddata": "v2.0.1",
+        "psr/http-message": "1.0",
+        "react/promise": "v2.2.1",
+        "rollbar/rollbar": "v0.15.0",
+        "ronanguilloux/isocodes": "1.2.0",
+        "sendgrid/sendgrid": "2.1.1",
+        "sendgrid/smtpapi": "0.0.1",
+        "symfony/css-selector": "v2.8.2",
+        "symfony/http-foundation": "v2.8.2",
+        "symfony/polyfill-php54": "v1.1.0",
+        "symfony/polyfill-php55": "v1.1.0",
+        "thepixeldeveloper/sitemap": "3.0.0",
+        "tijsverkoyen/css-to-inline-styles": "1.5.5",
+        "yiisoft/yii": "1.1.17",
+        "heroku-sys/apache": "^2.4.10",
+        "heroku-sys/nginx": "~1.8.0"
+    }
+}',
+                'require',
+                'foo',
+                'qux',
+                '{
+    "config": {
+        "cache-files-ttl": 0,
+        "discard-changes": true
+    },
+    "minimum-stability": "stable",
+    "prefer-stable": false,
+    "provide": {
+        "heroku-sys/cedar": "14.2016.03.22"
+    },
+    "repositories": [
+        {
+            "packagist": false
+        },
+        {
+            "type": "package",
+            "package": [
+                {
+                    "type": "metapackage",
+                    "name": "anthonymartin/geo-location",
+                    "version": "v1.0.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "aws/aws-sdk-php",
+                    "version": "3.9.4",
+                    "require": {
+                        "heroku-sys/php": ">=5.5"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "cloudinary/cloudinary_php",
+                    "version": "dev-master",
+                    "require": {
+                        "heroku-sys/ext-curl": "*",
+                        "heroku-sys/ext-json": "*",
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/annotations",
+                    "version": "v1.2.7",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.2"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/cache",
+                    "version": "v1.6.0",
+                    "require": {
+                        "heroku-sys/php": "~5.5|~7.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/collections",
+                    "version": "v1.3.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.2"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/common",
+                    "version": "v2.6.1",
+                    "require": {
+                        "heroku-sys/php": "~5.5|~7.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/inflector",
+                    "version": "v1.1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.2"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "doctrine/lexer",
+                    "version": "v1.0.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.2"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "geoip/geoip",
+                    "version": "v1.16",
+                    "require": [],
+                    "replace": [],
+                    "provide": [],
+                    "conflict": {
+                        "heroku-sys/ext-geoip": "*"
+                    }
+                },
+                {
+                    "type": "metapackage",
+                    "name": "giggsey/libphonenumber-for-php",
+                    "version": "7.2.5",
+                    "require": {
+                        "heroku-sys/ext-mbstring": "*"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/guzzle",
+                    "version": "5.3.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/promises",
+                    "version": "1.0.3",
+                    "require": {
+                        "heroku-sys/php": ">=5.5.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/psr7",
+                    "version": "1.2.3",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/ringphp",
+                    "version": "1.1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "guzzlehttp/streams",
+                    "version": "3.0.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "hipchat/hipchat-php",
+                    "version": "v1.4",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "kriswallsmith/buzz",
+                    "version": "v0.15",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "league/csv",
+                    "version": "8.0.0",
+                    "require": {
+                        "heroku-sys/ext-mbstring": "*",
+                        "heroku-sys/php": ">=5.5.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "league/fractal",
+                    "version": "0.13.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "mashape/unirest-php",
+                    "version": "1.2.1",
+                    "require": {
+                        "heroku-sys/ext-curl": "*",
+                        "heroku-sys/ext-json": "*",
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "mtdowling/jmespath.php",
+                    "version": "2.3.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "palex/phpstructureddata",
+                    "version": "v2.0.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "psr/http-message",
+                    "version": "1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "react/promise",
+                    "version": "v2.2.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "rollbar/rollbar",
+                    "version": "v0.15.0",
+                    "require": {
+                        "heroku-sys/ext-curl": "*"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "ronanguilloux/isocodes",
+                    "version": "1.2.0",
+                    "require": {
+                        "heroku-sys/ext-bcmath": "*",
+                        "heroku-sys/php": ">=5.4.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "sendgrid/sendgrid",
+                    "version": "2.1.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.3"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "sendgrid/smtpapi",
+                    "version": "0.0.1",
+                    "require": {
+                        "heroku-sys/php": ">=5.3"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "symfony/css-selector",
+                    "version": "v2.8.2",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.9"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "symfony/http-foundation",
+                    "version": "v2.8.2",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.9"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "symfony/polyfill-php54",
+                    "version": "v1.1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.3"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "symfony/polyfill-php55",
+                    "version": "v1.1.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.3"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "thepixeldeveloper/sitemap",
+                    "version": "3.0.0",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "tijsverkoyen/css-to-inline-styles",
+                    "version": "1.5.5",
+                    "require": {
+                        "heroku-sys/php": ">=5.3.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "yiisoft/yii",
+                    "version": "1.1.17",
+                    "require": {
+                        "heroku-sys/php": ">=5.1.0"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                },
+                {
+                    "type": "metapackage",
+                    "name": "composer.json/composer.lock",
+                    "version": "dev-597511d6d51b96e4a8afeba2c79982e5",
+                    "require": {
+                        "heroku-sys/php": "~5.6.0",
+                        "heroku-sys/ext-newrelic": "*",
+                        "heroku-sys/ext-gd": "*",
+                        "heroku-sys/ext-redis": "*"
+                    },
+                    "replace": [],
+                    "provide": [],
+                    "conflict": []
+                }
+            ]
+        }
+    ],
+    "require": {
+        "composer.json/composer.lock": "dev-597511d6d51b96e4a8afeba2c79982e5",
+        "anthonymartin/geo-location": "v1.0.0",
+        "aws/aws-sdk-php": "3.9.4",
+        "cloudinary/cloudinary_php": "dev-master",
+        "doctrine/annotations": "v1.2.7",
+        "doctrine/cache": "v1.6.0",
+        "doctrine/collections": "v1.3.0",
+        "doctrine/common": "v2.6.1",
+        "doctrine/inflector": "v1.1.0",
+        "doctrine/lexer": "v1.0.1",
+        "geoip/geoip": "v1.16",
+        "giggsey/libphonenumber-for-php": "7.2.5",
+        "guzzlehttp/guzzle": "5.3.0",
+        "guzzlehttp/promises": "1.0.3",
+        "guzzlehttp/psr7": "1.2.3",
+        "guzzlehttp/ringphp": "1.1.0",
+        "guzzlehttp/streams": "3.0.0",
+        "hipchat/hipchat-php": "v1.4",
+        "kriswallsmith/buzz": "v0.15",
+        "league/csv": "8.0.0",
+        "league/fractal": "0.13.0",
+        "mashape/unirest-php": "1.2.1",
+        "mtdowling/jmespath.php": "2.3.0",
+        "palex/phpstructureddata": "v2.0.1",
+        "psr/http-message": "1.0",
+        "react/promise": "v2.2.1",
+        "rollbar/rollbar": "v0.15.0",
+        "ronanguilloux/isocodes": "1.2.0",
+        "sendgrid/sendgrid": "2.1.1",
+        "sendgrid/smtpapi": "0.0.1",
+        "symfony/css-selector": "v2.8.2",
+        "symfony/http-foundation": "v2.8.2",
+        "symfony/polyfill-php54": "v1.1.0",
+        "symfony/polyfill-php55": "v1.1.0",
+        "thepixeldeveloper/sitemap": "3.0.0",
+        "tijsverkoyen/css-to-inline-styles": "1.5.5",
+        "yiisoft/yii": "1.1.17",
+        "heroku-sys/apache": "^2.4.10",
+        "heroku-sys/nginx": "~1.8.0",
+        "foo": "qux"
+    }
+}
 ',
             ),
         );