diff --git a/web/.gitignore b/web/.gitignore
index 11d331de6..a4e2c9042 100644
--- a/web/.gitignore
+++ b/web/.gitignore
@@ -57,3 +57,5 @@ Thumbs.db
# Things in the core directory that Drupal 8 commits in the repository.
!core/**/*.gz
+# Ignore any extra git folders.
+*/.git/
diff --git a/web/vendor/drupal-composer/drupal-scaffold b/web/vendor/drupal-composer/drupal-scaffold
deleted file mode 160000
index 3ad465ac8..000000000
--- a/web/vendor/drupal-composer/drupal-scaffold
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 3ad465ac853c2e52e6a808f5529859917662c256
diff --git a/web/vendor/drupal-composer/drupal-scaffold/.editorconfig b/web/vendor/drupal-composer/drupal-scaffold/.editorconfig
new file mode 100644
index 000000000..12bcb27e4
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/.editorconfig
@@ -0,0 +1,17 @@
+# Drupal editor configuration normalization
+# @see http://editorconfig.org/
+
+# This is the top-most .editorconfig file; do not search in parent directories.
+root = true
+
+# All files.
+[*]
+end_of_line = LF
+indent_style = space
+indent_size = 2
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[{composer.json,composer.lock}]
+indent_size = 4
diff --git a/web/vendor/drupal-composer/drupal-scaffold/.gitignore b/web/vendor/drupal-composer/drupal-scaffold/.gitignore
new file mode 100644
index 000000000..22d0d82f8
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/.gitignore
@@ -0,0 +1 @@
+vendor
diff --git a/web/vendor/drupal-composer/drupal-scaffold/.travis.yml b/web/vendor/drupal-composer/drupal-scaffold/.travis.yml
new file mode 100644
index 000000000..72635d7ce
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/.travis.yml
@@ -0,0 +1,25 @@
+language: php
+php:
+ - 5.5
+ - 5.6
+ - 7.0
+
+sudo: false
+
+git:
+ depth: 10000
+
+before_install:
+ - phpenv config-rm xdebug.ini
+ - composer --verbose self-update
+ - composer --version
+
+install:
+ - composer --verbose install
+
+before_script:
+ - git config --global user.email "travisci@example.com"
+ - git config --global user.name "Travis CI Test"
+
+script:
+ - ./vendor/bin/phpunit
diff --git a/web/vendor/drupal-composer/drupal-scaffold/README.md b/web/vendor/drupal-composer/drupal-scaffold/README.md
new file mode 100644
index 000000000..82f7c8703
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/README.md
@@ -0,0 +1,120 @@
+# drupal-scaffold
+
+[](https://travis-ci.org/drupal-composer/drupal-scaffold)
+
+Composer plugin for automatically downloading Drupal scaffold files (like
+`index.php`, `update.php`, …) when using `drupal/core` via Composer.
+
+It is recommended that the vendor directory be placed in its standard location
+at the project root, outside of the Drupal root; however, the location of the
+vendor directory and the name of the Drupal root may be placed in whatever
+location suits the project. Drupal-scaffold will generate the autoload.php
+file at the Drupal root to require the Composer-generated autoload file in the
+vendor directory.
+
+## Usage
+
+Run `composer require drupal-composer/drupal-scaffold:dev-master` in your composer
+project before installing or updating `drupal/core`.
+
+Once drupal-scaffold is required by your project, it will automatically update
+your scaffold files whenever `composer update` changes the version of
+`drupal/core` installed.
+
+## Configuration
+
+You can configure the plugin with providing some settings in the `extra` section
+of your root `composer.json`.
+
+```json
+{
+ "extra": {
+ "drupal-scaffold": {
+ "source": "http://cgit.drupalcode.org/drupal/plain/{path}?h={version}",
+ "excludes": [
+ "google123.html",
+ "robots.txt"
+ ],
+ "includes": [
+ "sites/default/example.settings.my.php"
+ ],
+ "initial": {
+ "sites/default/default.services.yml": "sites/default/services.yml",
+ "sites/default/default.settings.php": "sites/default/settings.php"
+ },
+ "omit-defaults": false
+ }
+ }
+}
+```
+The `source` option may be used to specify the URL to download the
+scaffold files from; the default source is drupal.org. The literal string
+`{version}` in the `source` option is replaced with the current version of
+Drupal core being updated prior to download.
+
+With the `drupal-scaffold` option `excludes`, you can provide additional paths
+that should not be copied or overwritten. The plugin provides no excludes by
+default.
+
+Default includes are provided by the plugin:
+```
+.csslintrc
+.editorconfig
+.eslintignore
+.eslintrc (Drupal <= 8.2.x)
+.eslintrc.json (Drupal >= 8.3.x)
+.gitattributes
+.htaccess
+index.php
+robots.txt
+sites/default/default.settings.php
+sites/default/default.services.yml
+sites/development.services.yml
+sites/example.settings.local.php
+sites/example.sites.php
+update.php
+web.config
+```
+
+When setting `omit-defaults` to `true`, neither the default excludes nor the
+default includes will be provided; in this instance, only those files explicitly
+listed in the `excludes` and `includes` options will be considered. If
+`omit-defaults` is `false` (the default), then any items listed in `excludes`
+or `includes` will be in addition to the usual defaults.
+
+The `initial` hash lists files that should be copied over only if they do not
+exist in the destination. The key specifies the path to the source file, and
+the value indicates the path to the destination file.
+
+## Limitation
+
+When using Composer to install or update the Drupal development branch, the
+scaffold files are always taken from the HEAD of the branch (or, more
+specifically, from the most recent development .tar.gz archive). This might
+not be what you want when using an old development version (e.g. when the
+version is fixed via composer.lock). To avoid problems, always commit your
+scaffold files to the repository any time that composer.lock is committed.
+Note that the correct scaffold files are retrieved when using a tagged release
+of `drupal/core` (recommended).
+
+## Custom command
+
+The plugin by default is only downloading the scaffold files when installing or
+updating `drupal/core`. If you want to call it manually, you have to add the
+command callback to the `scripts`-section of your root `composer.json`, like this:
+
+```json
+{
+ "scripts": {
+ "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold"
+ }
+}
+```
+
+After that you can manually download the scaffold files according to your
+configuration by using `composer drupal-scaffold`.
+
+It is assumed that the scaffold files will be committed to the repository, to
+ensure that the correct files are used on the CI server (see **Limitation**,
+above). After running `composer install` for the first time commit the scaffold
+files to your repository.
diff --git a/web/vendor/drupal-composer/drupal-scaffold/composer.json b/web/vendor/drupal-composer/drupal-scaffold/composer.json
new file mode 100644
index 000000000..50da3b254
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/composer.json
@@ -0,0 +1,25 @@
+{
+ "name": "drupal-composer/drupal-scaffold",
+ "description": "Composer Plugin for updating the Drupal scaffold files when using drupal/core",
+ "type": "composer-plugin",
+ "license": "GPL-2.0+",
+ "require": {
+ "php": ">=5.4.5",
+ "composer-plugin-api": "^1.0.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "DrupalComposer\\DrupalScaffold\\": "src/"
+ }
+ },
+ "extra": {
+ "class": "DrupalComposer\\DrupalScaffold\\Plugin",
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "require-dev": {
+ "composer/composer": "dev-master",
+ "phpunit/phpunit": "^4.4.0"
+ }
+}
diff --git a/web/vendor/drupal-composer/drupal-scaffold/composer.lock b/web/vendor/drupal-composer/drupal-scaffold/composer.lock
new file mode 100644
index 000000000..c7dc77794
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/composer.lock
@@ -0,0 +1,1742 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "hash": "116f69e7f88bcdebdc157a80dfaa31c7",
+ "content-hash": "fcbb0cf6a792bee4cd64b27b2e58909c",
+ "packages": [],
+ "packages-dev": [
+ {
+ "name": "composer/ca-bundle",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/ca-bundle.git",
+ "reference": "a2995e5fe351055f2c7630166af12ce8fd03edfc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/a2995e5fe351055f2c7630166af12ce8fd03edfc",
+ "reference": "a2995e5fe351055f2c7630166af12ce8fd03edfc",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "symfony/process": "^2.5 || ^3.0"
+ },
+ "suggest": {
+ "symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\CaBundle\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
+ "keywords": [
+ "cabundle",
+ "cacert",
+ "certificate",
+ "ssl",
+ "tls"
+ ],
+ "time": "2016-04-13 10:13:24"
+ },
+ {
+ "name": "composer/composer",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/composer.git",
+ "reference": "d401f6e95cca835d165c61648327fc1fa062ba31"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/composer/zipball/d401f6e95cca835d165c61648327fc1fa062ba31",
+ "reference": "d401f6e95cca835d165c61648327fc1fa062ba31",
+ "shasum": ""
+ },
+ "require": {
+ "composer/ca-bundle": "^1.0",
+ "composer/semver": "^1.0",
+ "composer/spdx-licenses": "^1.0",
+ "justinrainbow/json-schema": "^1.6",
+ "php": "^5.3.2 || ^7.0",
+ "psr/log": "^1.0",
+ "seld/cli-prompt": "^1.0",
+ "seld/jsonlint": "^1.4",
+ "seld/phar-utils": "^1.0",
+ "symfony/console": "^2.5 || ^3.0",
+ "symfony/filesystem": "^2.5 || ^3.0",
+ "symfony/finder": "^2.2 || ^3.0",
+ "symfony/process": "^2.1 || ^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5 || ^5.0.5",
+ "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
+ },
+ "suggest": {
+ "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
+ "ext-zip": "Enabling the zip extension allows you to unzip archives",
+ "ext-zlib": "Allow gzip compression of HTTP requests"
+ },
+ "bin": [
+ "bin/composer"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\": "src/Composer"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.",
+ "homepage": "https://getcomposer.org/",
+ "keywords": [
+ "autoload",
+ "dependency",
+ "package"
+ ],
+ "time": "2016-05-19 18:44:43"
+ },
+ {
+ "name": "composer/semver",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "84c47f3d8901440403217afc120683c7385aecb8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/84c47f3d8901440403217afc120683c7385aecb8",
+ "reference": "84c47f3d8901440403217afc120683c7385aecb8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5 || ^5.0.5",
+ "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "time": "2016-03-30 13:16:03"
+ },
+ {
+ "name": "composer/spdx-licenses",
+ "version": "1.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/spdx-licenses.git",
+ "reference": "88c26372b1afac36d8db601cdf04ad8716f53d88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/88c26372b1afac36d8db601cdf04ad8716f53d88",
+ "reference": "88c26372b1afac36d8db601cdf04ad8716f53d88",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5 || ^5.0.5",
+ "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Spdx\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "SPDX licenses list and validation library.",
+ "keywords": [
+ "license",
+ "spdx",
+ "validator"
+ ],
+ "time": "2016-05-04 12:27:30"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3,<8.0-DEV"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2015-06-14 21:17:01"
+ },
+ {
+ "name": "justinrainbow/json-schema",
+ "version": "1.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/justinrainbow/json-schema.git",
+ "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/cc84765fb7317f6b07bd8ac78364747f95b86341",
+ "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.29"
+ },
+ "require-dev": {
+ "json-schema/json-schema-test-suite": "1.1.0",
+ "phpdocumentor/phpdocumentor": "~2",
+ "phpunit/phpunit": "~3.7"
+ },
+ "bin": [
+ "bin/validate-json"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "JsonSchema\\": "src/JsonSchema/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Bruno Prieto Reis",
+ "email": "bruno.p.reis@gmail.com"
+ },
+ {
+ "name": "Justin Rainbow",
+ "email": "justin.rainbow@gmail.com"
+ },
+ {
+ "name": "Igor Wiedler",
+ "email": "igor@wiedler.ch"
+ },
+ {
+ "name": "Robert Schönthal",
+ "email": "seroscho@googlemail.com"
+ }
+ ],
+ "description": "A library to validate a json schema.",
+ "homepage": "https://github.com/justinrainbow/json-schema",
+ "keywords": [
+ "json",
+ "schema"
+ ],
+ "time": "2016-01-25 15:43:01"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
+ "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "suggest": {
+ "dflydev/markdown": "~1.0",
+ "erusev/parsedown": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "phpDocumentor": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "mike.vanriel@naenius.com"
+ }
+ ],
+ "time": "2015-02-03 12:10:50"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "3c91bdf81797d725b14cb62906f9a4ce44235972"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3c91bdf81797d725b14cb62906f9a4ce44235972",
+ "reference": "3c91bdf81797d725b14cb62906f9a4ce44235972",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "~2.0",
+ "sebastian/comparator": "~1.1",
+ "sebastian/recursion-context": "~1.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "~2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Prophecy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "time": "2016-02-15 07:46:21"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "2.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "phpunit/php-file-iterator": "~1.3",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-token-stream": "~1.3",
+ "sebastian/environment": "^1.3.2",
+ "sebastian/version": "~1.0"
+ },
+ "require-dev": {
+ "ext-xdebug": ">=2.1.4",
+ "phpunit/phpunit": "~4"
+ },
+ "suggest": {
+ "ext-dom": "*",
+ "ext-xdebug": ">=2.2.1",
+ "ext-xmlwriter": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2015-10-06 15:47:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
+ "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2015-06-21 13:08:43"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21 13:50:34"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
+ "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4|~5"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2016-05-12 18:03:57"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "1.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
+ "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2015-09-15 10:49:45"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "4.8.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fc1d8cd5b5de11625979125c5639347896ac2c74",
+ "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=5.3.3",
+ "phpspec/prophecy": "^1.3.1",
+ "phpunit/php-code-coverage": "~2.1",
+ "phpunit/php-file-iterator": "~1.4",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-timer": "^1.0.6",
+ "phpunit/phpunit-mock-objects": "~2.3",
+ "sebastian/comparator": "~1.1",
+ "sebastian/diff": "~1.2",
+ "sebastian/environment": "~1.3",
+ "sebastian/exporter": "~1.2",
+ "sebastian/global-state": "~1.0",
+ "sebastian/version": "~1.0",
+ "symfony/yaml": "~2.1|~3.0"
+ },
+ "suggest": {
+ "phpunit/php-invoker": "~1.1"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.8.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2016-05-17 03:09:28"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "2.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": ">=5.3.3",
+ "phpunit/php-text-template": "~1.2",
+ "sebastian/exporter": "~1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "time": "2015-10-02 06:51:40"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Psr\\Log\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2012-12-21 11:40:51"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
+ "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/diff": "~1.2",
+ "sebastian/exporter": "~1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2015-07-26 15:48:44"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
+ "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff"
+ ],
+ "time": "2015-12-08 07:14:41"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "1.3.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
+ "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2016-05-17 03:18:57"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
+ "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/recursion-context": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2015-06-21 07:55:53"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2015-10-12 03:26:01"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "913401df809e99e4f47b27cdd781f4a258d58791"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791",
+ "reference": "913401df809e99e4f47b27cdd781f4a258d58791",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2015-11-11 19:50:13"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "1.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2015-06-21 13:59:46"
+ },
+ {
+ "name": "seld/cli-prompt",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/cli-prompt.git",
+ "reference": "8cbe10923cae5bcd7c5a713f6703fc4727c8c1b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/8cbe10923cae5bcd7c5a713f6703fc4727c8c1b4",
+ "reference": "8cbe10923cae5bcd7c5a713f6703fc4727c8c1b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Seld\\CliPrompt\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type",
+ "keywords": [
+ "cli",
+ "console",
+ "hidden",
+ "input",
+ "prompt"
+ ],
+ "time": "2016-04-18 09:31:41"
+ },
+ {
+ "name": "seld/jsonlint",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/jsonlint.git",
+ "reference": "66834d3e3566bb5798db7294619388786ae99394"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/66834d3e3566bb5798db7294619388786ae99394",
+ "reference": "66834d3e3566bb5798db7294619388786ae99394",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3 || ^7.0"
+ },
+ "bin": [
+ "bin/jsonlint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "JSON Linter",
+ "keywords": [
+ "json",
+ "linter",
+ "parser",
+ "validator"
+ ],
+ "time": "2015-11-21 02:21:41"
+ },
+ {
+ "name": "seld/phar-utils",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/phar-utils.git",
+ "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a",
+ "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Seld\\PharUtils\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "PHAR file format utilities, for when PHP phars you up",
+ "keywords": [
+ "phra"
+ ],
+ "time": "2015-10-13 18:44:15"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "34a214710e0714b6efcf40ba3cd1e31373a97820"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/34a214710e0714b6efcf40ba3cd1e31373a97820",
+ "reference": "34a214710e0714b6efcf40ba3cd1e31373a97820",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/event-dispatcher": "~2.8|~3.0",
+ "symfony/process": "~2.8|~3.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-04-28 09:48:42"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "74fec3511b62cb934b64bce1d96f06fffa4beafd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/74fec3511b62cb934b64bce1d96f06fffa4beafd",
+ "reference": "74fec3511b62cb934b64bce1d96f06fffa4beafd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-04-12 18:09:53"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "c54e407b35bc098916704e9fd090da21da4c4f52"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/c54e407b35bc098916704e9fd090da21da4c4f52",
+ "reference": "c54e407b35bc098916704e9fd090da21da4c4f52",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-03-10 11:13:05"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "dff51f72b0706335131b00a7f49606168c582594"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594",
+ "reference": "dff51f72b0706335131b00a7f49606168c582594",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "53f9407c0bb1c5a79127db8f7bfe12f0f6f3dcdb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/53f9407c0bb1c5a79127db8f7bfe12f0f6f3dcdb",
+ "reference": "53f9407c0bb1c5a79127db8f7bfe12f0f6f3dcdb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-04-14 15:30:28"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "0047c8366744a16de7516622c5b7355336afae96"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/0047c8366744a16de7516622c5b7355336afae96",
+ "reference": "0047c8366744a16de7516622c5b7355336afae96",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-03-04 07:55:57"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": {
+ "composer/composer": 20
+ },
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=5.4.5"
+ },
+ "platform-dev": []
+}
diff --git a/web/vendor/drupal-composer/drupal-scaffold/phpunit.xml.dist b/web/vendor/drupal-composer/drupal-scaffold/phpunit.xml.dist
new file mode 100644
index 000000000..ac16a3eaf
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/phpunit.xml.dist
@@ -0,0 +1,15 @@
+
+
+
+
+
+ ./tests/
+
+
+
diff --git a/web/vendor/drupal-composer/drupal-scaffold/src/FileFetcher.php b/web/vendor/drupal-composer/drupal-scaffold/src/FileFetcher.php
new file mode 100644
index 000000000..4435306ba
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/src/FileFetcher.php
@@ -0,0 +1,47 @@
+remoteFilesystem = $remoteFilesystem;
+ $this->source = $source;
+ $this->filenames = $filenames;
+ $this->fs = new Filesystem();
+ }
+
+ public function fetch($version, $destination) {
+ array_walk($this->filenames, function ($filename) use ($version, $destination) {
+ $url = $this->getUri($filename, $version);
+ $this->fs->ensureDirectoryExists($destination . '/' . dirname($filename));
+ $this->remoteFilesystem->copy($url, $url, $destination . '/' . $filename);
+ });
+ }
+
+ protected function getUri($filename, $version) {
+ $map = [
+ '{path}' => $filename,
+ '{version}' => $version
+ ];
+ return str_replace(array_keys($map), array_values($map), $this->source);
+ }
+
+}
diff --git a/web/vendor/drupal-composer/drupal-scaffold/src/Handler.php b/web/vendor/drupal-composer/drupal-scaffold/src/Handler.php
new file mode 100644
index 000000000..51c340c60
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/src/Handler.php
@@ -0,0 +1,365 @@
+composer = $composer;
+ $this->io = $io;
+ }
+
+ /**
+ * @param $operation
+ * @return mixed
+ */
+ protected function getCorePackage($operation) {
+ if ($operation instanceof InstallOperation) {
+ $package = $operation->getPackage();
+ }
+ elseif ($operation instanceof UpdateOperation) {
+ $package = $operation->getTargetPackage();
+ }
+ if (isset($package) && $package instanceof PackageInterface && $package->getName() == 'drupal/core') {
+ return $package;
+ }
+ return NULL;
+ }
+
+ /**
+ * Marks scaffolding to be processed after an install or update command.
+ *
+ * @param \Composer\Installer\PackageEvent $event
+ */
+ public function onPostPackageEvent(\Composer\Installer\PackageEvent $event){
+ $package = $this->getCorePackage($event->getOperation());
+ if ($package) {
+ // By explicitly setting the core package, the onPostCmdEvent() will
+ // process the scaffolding automatically.
+ $this->drupalCorePackage = $package;
+ }
+ }
+
+ /**
+ * Post install command event to execute the scaffolding.
+ *
+ * @param \Composer\Script\Event $event
+ */
+ public function onPostCmdEvent(\Composer\Script\Event $event) {
+ // Only install the scaffolding if drupal/core was installed,
+ // AND there are no scaffolding files present.
+ if (isset($this->drupalCorePackage)) {
+ $this->downloadScaffold();
+ // Generate the autoload.php file after generating the scaffold files.
+ $this->generateAutoload();
+ }
+ }
+
+ /**
+ * Downloads drupal scaffold files for the current process.
+ */
+ public function downloadScaffold() {
+ $drupalCorePackage = $this->getDrupalCorePackage();
+ $webroot = realpath($this->getWebRoot());
+
+ // Collect options, excludes and settings files.
+ $options = $this->getOptions();
+ $files = array_diff($this->getIncludes(), $this->getExcludes());
+
+ // Call any pre-scaffold scripts that may be defined.
+ $dispatcher = new EventDispatcher($this->composer, $this->io);
+ $dispatcher->dispatch(self::PRE_DRUPAL_SCAFFOLD_CMD);
+
+ $version = $this->getDrupalCoreVersion($drupalCorePackage);
+
+ $remoteFs = new RemoteFilesystem($this->io);
+
+ $fetcher = new FileFetcher($remoteFs, $options['source'], $files);
+ $fetcher->fetch($version, $webroot);
+
+ $initialFileFetcher = new InitialFileFetcher($remoteFs, $options['source'], $this->getInitial());
+ $initialFileFetcher->fetch($version, $webroot);
+
+ // Call post-scaffold scripts.
+ $dispatcher->dispatch(self::POST_DRUPAL_SCAFFOLD_CMD);
+ }
+
+ /**
+ * Generate the autoload file at the project root. Include the
+ * autoload file that Composer generated.
+ */
+ public function generateAutoload() {
+ $vendorPath = $this->getVendorPath();
+ $webroot = $this->getWebRoot();
+
+ // Calculate the relative path from the webroot (location of the
+ // project autoload.php) to the vendor directory.
+ $fs = new SymfonyFilesystem();
+ $relativeVendorPath = $fs->makePathRelative($vendorPath, realpath($webroot));
+
+ $fs->dumpFile($webroot . "/autoload.php", $this->autoLoadContents($relativeVendorPath));
+ }
+
+ /**
+ * Build the contents of the autoload file.
+ *
+ * @return string
+ */
+ protected function autoLoadContents($relativeVendorPath) {
+ $relativeVendorPath = rtrim($relativeVendorPath, '/');
+
+ $autoloadContents = <<composer->getConfig();
+ $filesystem = new Filesystem();
+ $filesystem->ensureDirectoryExists($config->get('vendor-dir'));
+ $vendorPath = $filesystem->normalizePath(realpath($config->get('vendor-dir')));
+
+ return $vendorPath;
+ }
+
+ /**
+ * Look up the Drupal core package object, or return it from where we cached
+ * it in the $drupalCorePackage field.
+ *
+ * @return PackageInterface
+ */
+ public function getDrupalCorePackage() {
+ if (!isset($this->drupalCorePackage)) {
+ $this->drupalCorePackage = $this->getPackage('drupal/core');
+ }
+ return $this->drupalCorePackage;
+ }
+
+ /**
+ * Returns the Drupal core version for the given package.
+ *
+ * @param \Composer\Package\PackageInterface $drupalCorePackage
+ *
+ * @return string
+ */
+ protected function getDrupalCoreVersion(PackageInterface $drupalCorePackage) {
+ $version = $drupalCorePackage->getPrettyVersion();
+ if ($drupalCorePackage->getStability() == 'dev' && substr($version, -4) == '-dev') {
+ $version = substr($version, 0, -4);
+ return $version;
+ }
+ return $version;
+ }
+
+ /**
+ * Retrieve the path to the web root.
+ *
+ * @return string
+ */
+ public function getWebRoot() {
+ $drupalCorePackage = $this->getDrupalCorePackage();
+ $installationManager = $this->composer->getInstallationManager();
+ $corePath = $installationManager->getInstallPath($drupalCorePackage);
+ // Webroot is the parent path of the drupal core installation path.
+ $webroot = dirname($corePath);
+
+ return $webroot;
+ }
+
+ /**
+ * Retrieve a package from the current composer process.
+ *
+ * @param string $name
+ * Name of the package to get from the current composer installation.
+ *
+ * @return PackageInterface
+ */
+ protected function getPackage($name) {
+ return $this->composer->getRepositoryManager()->getLocalRepository()->findPackage($name, '*');
+ }
+
+ /**
+ * Retrieve excludes from optional "extra" configuration.
+ *
+ * @return array
+ */
+ protected function getExcludes() {
+ return $this->getNamedOptionList('excludes', 'getExcludesDefault');
+ }
+
+ /**
+ * Retrieve list of additional settings files from optional "extra" configuration.
+ *
+ * @return array
+ */
+ protected function getIncludes() {
+ return $this->getNamedOptionList('includes', 'getIncludesDefault');
+ }
+
+ /**
+ * Retrieve list of initial files from optional "extra" configuration.
+ *
+ * @return array
+ */
+ protected function getInitial() {
+ return $this->getNamedOptionList('initial', 'getInitialDefault');
+ }
+
+ /**
+ * Retrieve a named list of options from optional "extra" configuration.
+ * Respects 'omit-defaults', and either includes or does not include the
+ * default values, as requested.
+ *
+ * @return array
+ */
+ protected function getNamedOptionList($optionName, $defaultFn) {
+ $options = $this->getOptions($this->composer);
+ $result = array();
+ if (empty($options['omit-defaults'])) {
+ $result = $this->$defaultFn();
+ }
+ $result = array_merge($result, (array) $options[$optionName]);
+
+ return $result;
+ }
+
+ /**
+ * Retrieve excludes from optional "extra" configuration.
+ *
+ * @return array
+ */
+ protected function getOptions() {
+ $extra = $this->composer->getPackage()->getExtra() + ['drupal-scaffold' => []];
+ $options = $extra['drupal-scaffold'] + [
+ 'omit-defaults' => FALSE,
+ 'excludes' => [],
+ 'includes' => [],
+ 'initial' => [],
+ 'source' => 'http://cgit.drupalcode.org/drupal/plain/{path}?h={version}',
+ // Github: https://raw.githubusercontent.com/drupal/drupal/{version}/{path}
+ ];
+ return $options;
+ }
+
+ /**
+ * Holds default excludes.
+ */
+ protected function getExcludesDefault() {
+ return [];
+ }
+
+ /**
+ * Holds default settings files list.
+ */
+ protected function getIncludesDefault() {
+ $version = $this->getDrupalCoreVersion($this->getDrupalCorePackage());
+ list($major, $minor) = explode('.', $version, 3);
+ $version = "$major.$minor";
+
+ /**
+ * Files from 8.3.x
+ *
+ * @see http://cgit.drupalcode.org/drupal/tree/?h=8.3.x
+ */
+ $common = [
+ '.csslintrc',
+ '.editorconfig',
+ '.eslintignore',
+ '.eslintrc.json',
+ '.gitattributes',
+ '.htaccess',
+ 'index.php',
+ 'robots.txt',
+ 'sites/default/default.settings.php',
+ 'sites/default/default.services.yml',
+ 'sites/development.services.yml',
+ 'sites/example.settings.local.php',
+ 'sites/example.sites.php',
+ 'update.php',
+ 'web.config'
+ ];
+
+ // Version specific variations.
+ switch ($version) {
+ case '8.0':
+ case '8.1':
+ case '8.2':
+ $common[] = '.eslintrc';
+ $common = array_diff($common, ['.eslintrc.json']);
+ break;
+ }
+
+ sort($common);
+ return $common;
+ }
+
+ /**
+ * Holds default initial files.
+ */
+ protected function getInitialDefault() {
+ return [];
+ }
+
+}
diff --git a/web/vendor/drupal-composer/drupal-scaffold/src/InitialFileFetcher.php b/web/vendor/drupal-composer/drupal-scaffold/src/InitialFileFetcher.php
new file mode 100644
index 000000000..e9ce3144b
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/src/InitialFileFetcher.php
@@ -0,0 +1,24 @@
+filenames, function ($filename, $sourceFilename) use ($version, $destination) {
+ $target = "$destination/$filename";
+ if (!file_exists($target)) {
+ $url = $this->getUri($sourceFilename, $version);
+ $this->fs->ensureDirectoryExists($destination . '/' . dirname($filename));
+ $this->remoteFilesystem->copy($url, $url, $target);
+ }
+ });
+ }
+}
diff --git a/web/vendor/drupal-composer/drupal-scaffold/src/Plugin.php b/web/vendor/drupal-composer/drupal-scaffold/src/Plugin.php
new file mode 100644
index 000000000..3424afd55
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/src/Plugin.php
@@ -0,0 +1,81 @@
+handler = new Handler($composer, $io);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function getSubscribedEvents() {
+ return array(
+ PackageEvents::POST_PACKAGE_INSTALL => 'postPackage',
+ PackageEvents::POST_PACKAGE_UPDATE => 'postPackage',
+ //PackageEvents::POST_PACKAGE_UNINSTALL => 'postPackage',
+ //ScriptEvents::POST_INSTALL_CMD => 'postCmd',
+ ScriptEvents::POST_UPDATE_CMD => 'postCmd',
+ );
+ }
+
+ /**
+ * Post package event behaviour.
+ *
+ * @param \Composer\Installer\PackageEvent $event
+ */
+ public function postPackage(PackageEvent $event) {
+ $this->handler->onPostPackageEvent($event);
+ }
+
+ /**
+ * Post command event callback.
+ *
+ * @param \Composer\Script\Event $event
+ */
+ public function postCmd(\Composer\Script\Event $event) {
+ $this->handler->onPostCmdEvent($event);
+ }
+
+ /**
+ * Script callback for putting in composer scripts to download the
+ * scaffold files.
+ *
+ * @param \Composer\Script\Event $event
+ */
+ public static function scaffold(\Composer\Script\Event $event) {
+ $handler = new Handler($event->getComposer(), $event->getIO());
+ $handler->downloadScaffold();
+ // Generate the autoload.php file after generating the scaffold files.
+ $handler->generateAutoload();
+ }
+}
diff --git a/web/vendor/drupal-composer/drupal-scaffold/tests/FetcherTest.php b/web/vendor/drupal-composer/drupal-scaffold/tests/FetcherTest.php
new file mode 100644
index 000000000..39b3e730c
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/tests/FetcherTest.php
@@ -0,0 +1,99 @@
+rootDir = realpath(realpath(__DIR__ . '/..'));
+
+ // Prepare temp directory.
+ $this->fs = new Filesystem();
+ $this->tmpDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'drupal-scaffold';
+ $this->ensureDirectoryExistsAndClear($this->tmpDir);
+
+ chdir($this->tmpDir);
+ }
+
+ /**
+ * Makes sure the given directory exists and has no content.
+ *
+ * @param string $directory
+ */
+ protected function ensureDirectoryExistsAndClear($directory) {
+ if (is_dir($directory)) {
+ $this->fs->removeDirectory($directory);
+ }
+ mkdir($directory, 0777, true);
+ }
+
+ public function testFetch() {
+ $fetcher = new FileFetcher(new RemoteFilesystem(new NullIO()), 'http://cgit.drupalcode.org/drupal/plain/{path}?h={version}', ['.htaccess', 'sites/default/default.settings.php']);
+ $fetcher->fetch('8.1.1', $this->tmpDir);
+ $this->assertFileExists($this->tmpDir . '/.htaccess');
+ $this->assertFileExists($this->tmpDir . '/sites/default/default.settings.php');
+ }
+
+ /**
+ * Tests version specific files.
+ */
+ public function testFetchVersionSpecific() {
+ $fetcher = new FileFetcher(new RemoteFilesystem(new NullIO()), 'http://cgit.drupalcode.org/drupal/plain/{path}?h={version}', ['.eslintrc', '.eslintrc.json']);
+
+ $this->setExpectedException(TransportException::class);
+ $fetcher->fetch('8.2.x', $this->tmpDir);
+
+ $this->assertFileExists($this->tmpDir . '/.eslintrc');
+ $this->assertFileNotExists($this->tmpDir . '/.eslintrc.json');
+
+ // Remove downloaded files to retest with 8.3.x.
+ @unlink($this->tmpDir . '/.eslintrc');
+
+ $this->setExpectedException(TransportException::class);
+ $fetcher->fetch('8.3.x', $this->tmpDir);
+
+ $this->assertFileExists($this->tmpDir . '/.eslintrc.json');
+ $this->assertFileNotExists($this->tmpDir . '/.eslintrc');
+ }
+
+ public function testInitialFetch() {
+ $fetcher = new InitialFileFetcher(new RemoteFilesystem(new NullIO()), 'http://cgit.drupalcode.org/drupal/plain/{path}?h={version}', ['sites/default/default.settings.php' => 'sites/default/settings.php']);
+ $fetcher->fetch('8.1.1', $this->tmpDir);
+ $this->assertFileExists($this->tmpDir . '/sites/default/settings.php');
+ }
+}
diff --git a/web/vendor/drupal-composer/drupal-scaffold/tests/PluginTest.php b/web/vendor/drupal-composer/drupal-scaffold/tests/PluginTest.php
new file mode 100644
index 000000000..704649160
--- /dev/null
+++ b/web/vendor/drupal-composer/drupal-scaffold/tests/PluginTest.php
@@ -0,0 +1,185 @@
+rootDir = realpath(realpath(__DIR__ . '/..'));
+
+ // Prepare temp directory.
+ $this->fs = new Filesystem();
+ $this->tmpDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'drupal-scaffold';
+ $this->ensureDirectoryExistsAndClear($this->tmpDir);
+
+ $this->writeTestReleaseTag();
+ $this->writeComposerJSON();
+
+ chdir($this->tmpDir);
+ }
+
+ /**
+ * tearDown
+ *
+ * @return void
+ */
+ public function tearDown()
+ {
+ $this->fs->removeDirectory($this->tmpDir);
+ $this->git(sprintf('tag -d "%s"', $this->tmpReleaseTag));
+ }
+
+ /**
+ * Tests a simple composer install without core, but adding core later.
+ */
+ public function testComposerInstallAndUpdate() {
+ $exampleScaffoldFile = $this->tmpDir . DIRECTORY_SEPARATOR . 'index.php';
+ $this->assertFileNotExists($exampleScaffoldFile, 'Scaffold file should not be exist.');
+ $this->composer('install');
+ $this->assertFileExists($this->tmpDir . DIRECTORY_SEPARATOR . 'core', 'Drupal core is installed.');
+ $this->assertFileExists($exampleScaffoldFile, 'Scaffold file should be automatically installed.');
+ $this->fs->remove($exampleScaffoldFile);
+ $this->assertFileNotExists($exampleScaffoldFile, 'Scaffold file should not be exist.');
+ $this->composer('drupal-scaffold');
+ $this->assertFileExists($exampleScaffoldFile, 'Scaffold file should be installed by "drupal-scaffold" command.');
+
+ foreach (['8.0.1', '8.1.x-dev'] as $version) {
+ // We touch a scaffold file, so we can check the file was modified after
+ // the scaffold update.
+ touch($exampleScaffoldFile);
+ $mtime_touched = filemtime($exampleScaffoldFile);
+ // Requiring a newer version triggers "composer update"
+ $this->composer('require --update-with-dependencies drupal/core:"' . $version .'"');
+ clearstatcache();
+ $mtime_after = filemtime($exampleScaffoldFile);
+ $this->assertNotEquals($mtime_after, $mtime_touched, 'Scaffold file was modified by composer update. (' . $version . ')');
+ }
+
+ // We touch a scaffold file, so we can check the file was modified after
+ // the custom commandscaffold update.
+ touch($exampleScaffoldFile);
+ clearstatcache();
+ $mtime_touched = filemtime($exampleScaffoldFile);
+ $this->composer('drupal-scaffold');
+ clearstatcache();
+ $mtime_after = filemtime($exampleScaffoldFile);
+ $this->assertNotEquals($mtime_after, $mtime_touched, 'Scaffold file was modified by custom command.');
+ }
+
+ /**
+ * Writes the default composer json to the temp direcoty.
+ */
+ protected function writeComposerJSON() {
+ $json = json_encode($this->composerJSONDefaults(), JSON_PRETTY_PRINT);
+ // Write composer.json.
+ file_put_contents($this->tmpDir . '/composer.json', $json);
+ }
+
+ /**
+ * Writes a tag for the current commit, so we can reference it directly in the
+ * composer.json.
+ */
+ protected function writeTestReleaseTag() {
+ // Tag the current state.
+ $this->tmpReleaseTag = '999.0.' . time();
+ $this->git(sprintf('tag -a "%s" -m "%s"', $this->tmpReleaseTag, 'Tag for testing this exact commit'));
+ }
+
+ /**
+ * Provides the default composer.json data.
+ *
+ * @return array
+ */
+ protected function composerJSONDefaults() {
+ return array(
+ 'repositories' => array(
+ array(
+ 'type' => 'vcs',
+ 'url' => $this->rootDir,
+ )
+ ),
+ 'require' => array(
+ 'drupal-composer/drupal-scaffold' => $this->tmpReleaseTag,
+ 'composer/installers' => '^1.0.20',
+ 'drupal/core' => '8.0.0',
+ ),
+ 'scripts' => array(
+ 'drupal-scaffold' => 'DrupalComposer\\DrupalScaffold\\Plugin::scaffold'
+ ),
+ 'minimum-stability' => 'dev',
+ );
+ }
+
+ /**
+ * Wrapper for the composer command.
+ *
+ * @param string $command
+ * Composer command name, arguments and/or options
+ */
+ protected function composer($command) {
+ chdir($this->tmpDir);
+ passthru(escapeshellcmd($this->rootDir . '/vendor/bin/composer ' . $command), $exit_code);
+ if ($exit_code !== 0) {
+ throw new \Exception('Composer returned a non-zero exit code');
+ }
+ }
+
+ /**
+ * Wrapper for git command in the root directory.
+ *
+ * @param $command
+ * Git command name, arguments and/or options.
+ */
+ protected function git($command) {
+ chdir($this->rootDir);
+ passthru(escapeshellcmd('git ' . $command), $exit_code);
+ if ($exit_code !== 0) {
+ throw new \Exception('Git returned a non-zero exit code');
+ }
+ }
+
+ /**
+ * Makes sure the given directory exists and has no content.
+ *
+ * @param string $directory
+ */
+ protected function ensureDirectoryExistsAndClear($directory) {
+ if (is_dir($directory)) {
+ $this->fs->removeDirectory($directory);
+ }
+ mkdir($directory, 0777, true);
+ }
+}