diff --git a/.editorconfig b/.editorconfig index b57b1c06..903f9a95 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,7 +10,7 @@ insert_final_newline = true trim_trailing_whitespace = true indent_style = space -[{.jshintrc,*.json,*.yml,*.xml,*.sh,*.conf,*.neon}] +[{.jshintrc,*.json,*.yml,*.xml,*.sh,*.conf,*.neon,*.xliff}] indent_style = space indent_size = 2 diff --git a/.github/ISSUE_TEMPLATE/---report-a-bug.md b/.github/ISSUE_TEMPLATE/---report-a-bug.md index d4e78b50..aed229ad 100644 --- a/.github/ISSUE_TEMPLATE/---report-a-bug.md +++ b/.github/ISSUE_TEMPLATE/---report-a-bug.md @@ -1,33 +1,33 @@ ---- -name: "\U0001F41B Report a bug" -about: Is something not working as you expected? - ---- - -## Expected behaviour -> Describe the bug; what should happen? - -## Current behaviour -> What happens instead of the expected behaviour? - -## Possible solution -> Not obligatory, but you can suggest a fix/reason for the bug. Thanks! - -## Steps to reproduce -> Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include code to reproduce, if relevant. -1. -2. -3. -4. - -## Context -> How has this issue affected you? What are you trying to accomplish? Providing context helps us come up with a solution that is most useful in the real world. - -## Your environment -> Include as many relevant details about the environment you experienced the bug in: - -* WordHat version used: -* Environment name and version (e.g. PHP 7.1 on nginx 1.11.9): -* Server operating system type and version: -* Type of Behat browser used (e.g. Selenium, headless Chrome, etc): -* Link to your project: +--- +name: "\U0001F41B Report a bug" +about: Is something not working as you expected? + +--- + +## Expected behaviour +> Describe the bug; what should happen? + +## Current behaviour +> What happens instead of the expected behaviour? + +## Possible solution +> Not obligatory, but you can suggest a fix/reason for the bug. Thanks! + +## Steps to reproduce +> Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include code to reproduce, if relevant. +1. +2. +3. +4. + +## Context +> How has this issue affected you? What are you trying to accomplish? Providing context helps us come up with a solution that is most useful in the real world. + +## Your environment +> Include as many relevant details about the environment you experienced the bug in: + +* WordHat version used: +* Environment name and version (e.g. PHP 7.2 on nginx 1.11.9): +* Server operating system type and version: +* Type of Behat browser used (e.g. Selenium, headless Chrome, etc): +* Link to your project: diff --git a/.github/ISSUE_TEMPLATE/---request-a-feature.md b/.github/ISSUE_TEMPLATE/---request-a-feature.md index 46d7efb7..1bfe56f7 100644 --- a/.github/ISSUE_TEMPLATE/---request-a-feature.md +++ b/.github/ISSUE_TEMPLATE/---request-a-feature.md @@ -1,23 +1,23 @@ ---- -name: "\U0001F680 Request a feature" -about: Do you want to suggest a new feature, rule, or option? - ---- - -## Expected behaviour -> If you're suggesting a change/improvement, tell us how it should work. - -## Current behaviour -> If suggesting a change/improvement, explain the difference from current behaviour. - -## Context -> How has this issue affected you? What are you trying to accomplish? Providing context helps us come up with a solution that is most useful in the real world. - -## Your environment -> Include as many relevant details about the environment you experienced the bug in: - -* WordHat version used: -* Environment name and version (e.g. PHP 7.1 on nginx 1.11.9): -* Server operating system type and version: -* Type of Behat browser used (e.g. Selenium, headless Chrome, etc): -* Link to your project: +--- +name: "\U0001F680 Request a feature" +about: Do you want to suggest a new feature, rule, or option? + +--- + +## Expected behaviour +> If you're suggesting a change/improvement, tell us how it should work. + +## Current behaviour +> If suggesting a change/improvement, explain the difference from current behaviour. + +## Context +> How has this issue affected you? What are you trying to accomplish? Providing context helps us come up with a solution that is most useful in the real world. + +## Your environment +> Include as many relevant details about the environment you experienced the bug in: + +* WordHat version used: +* Environment name and version (e.g. PHP 7.2 on nginx 1.11.9): +* Server operating system type and version: +* Type of Behat browser used (e.g. Selenium, headless Chrome, etc): +* Link to your project: diff --git a/.gitignore b/.gitignore index 90ee4c1e..235a8cd3 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ vendor/ .DS_Store npm-debug.log -wp-cli.yml /selenium.log /tests/app/www diff --git a/.travis.yml b/.travis.yml index 8096f1d6..250ab6d6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,13 +16,13 @@ services: - mysql php: - - 7.1 + - 7.2 + - 7.3 cache: apt: true directories: - $HOME/.composer/cache/files - - $HOME/.npm git: depth: 3 @@ -34,9 +34,12 @@ matrix: env: global: - - WP_WEBROOT="tests/app/www/" - - BEHAT_PARAMS="{\"extensions\":{\"Behat\\\\MinkExtension\":{\"base_url\":\"http://localhost:8000\"},\"PaulGibbs\\\\WordpressBehatExtension\":{\"path\":\"$WP_WEBROOT\"}}}" - DEFAULT_COMPOSER_FLAGS="--no-interaction --no-progress --no-suggest --prefer-dist" + - WP_VERSION="~5.1" + - WP_WEBROOT="tests/app/www/" + matrix: + - LABEL="wpcli" BEHAT_PARAMS="{\"extensions\":{\"PaulGibbs\\\\WordpressBehatExtension\":{\"default_driver\":\"wpcli\"}}}" + - LABEL="wpphp" BEHAT_PARAMS="{\"extensions\":{\"PaulGibbs\\\\WordpressBehatExtension\":{\"default_driver\":\"wpphp\"}}}" before_install: - phpenv config-rm xdebug.ini @@ -45,19 +48,16 @@ before_install: install: - travis_retry composer global require $DEFAULT_COMPOSER_FLAGS hirak/prestissimo - travis_retry composer install $DEFAULT_COMPOSER_FLAGS - - travis_retry composer require roots/wordpress ^5.1 - - npm install selenium-standalone@latest -g - - selenium-standalone install + - travis_retry composer require roots/wordpress $WP_VERSION # Start webserver. - php -S localhost:8000 -t $WP_WEBROOT 2>/dev/null & - - sleep 10 + - sleep 5 - scripts/install.sh -before_script: - # Start Selenium. - - xvfb-run --server-args="-screen 0 1920x1080x24" selenium-standalone start 2>&1 1>/dev/null & - - sleep 20 + # Start Chrome. + - google-chrome-stable --headless --disable-gpu --no-sandbox --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 & + - sleep 5 script: - curl -I http://localhost:8000 diff --git a/behat.yml b/behat.yml index 48a873c5..c0604900 100644 --- a/behat.yml +++ b/behat.yml @@ -15,7 +15,10 @@ default: - FailAid\Context\FailureContext extensions: + DMore\ChromeExtension\Behat\ServiceContainer\ChromeExtension: ~ + Behat\MinkExtension: + base_url: http://behat.local browser_name: chrome default_session: headless javascript_session: javascript @@ -23,10 +26,11 @@ default: headless: goutte: guzzle_parameters: - verify: false # Allow self-signed SSL certificates + verify: false javascript: - selenium2: - wd_host: "http://127.0.0.1:4444/wd/hub" + chrome: + api_url: http://localhost:9222 + validate_certificate: false PaulGibbs\WordpressBehatExtension: default_driver: wpcli @@ -39,7 +43,9 @@ default: database: restore_after_test: true wpcli: - binary: ./vendor/bin/wp + binary: vendor/bin/wp + alias: dev + site_url: http://behat.local/wp/ FailAid\Extension: screenshotDirectory: '%paths.base%/tests/artifacts' diff --git a/behat.yml.dist b/behat.yml.dist index b58ac54c..66a919d0 100644 --- a/behat.yml.dist +++ b/behat.yml.dist @@ -14,18 +14,22 @@ default: - PaulGibbs\WordpressBehatExtension\Context\ToolbarContext extensions: + DMore\ChromeExtension\Behat\ServiceContainer\ChromeExtension: ~ + Behat\MinkExtension: base_url: http://your-wordpress-site.example.com browser_name: chrome - default_session: default - javascript_session: selenium2 + default_session: headless + javascript_session: javascript sessions: - default: + headless: goutte: guzzle_parameters: - verify: false # Allow self-signed SSL certificates - selenium2: - selenium2: ~ + verify: false + javascript: + chrome: + api_url: http://localhost:9222 + validate_certificate: false PaulGibbs\WordpressBehatExtension: default_driver: wpcli @@ -35,6 +39,6 @@ default: roles: - administrator username: admin - password: admin + password: password database: restore_after_test: true diff --git a/composer.json b/composer.json index 91dda986..7dd35091 100644 --- a/composer.json +++ b/composer.json @@ -1,13 +1,12 @@ { "name": "paulgibbs/behat-wordpress-extension", "type": "behat-extension", - "description": "WordHat is a Behat extension, integrating Behat, Mink, and WordPress. It provides WordPress-specific functionality for common testing scenarios specific to WordPress sites.", + "description": "WordHat is a Behat extension for WordPress. It provides WordPress-specific functionality for common testing scenarios specific to WordPress sites.", "keywords": [ "WordPress", "behat", "extension", - "bdd", - "mink" + "bdd" ], "homepage": "https://wordhat.info", "license": "GPL-3.0-or-later", @@ -21,10 +20,7 @@ "config": { "preferred-install": "dist", "sort-packages": true, - "autoloader-suffix": "wordhat", - "platform": { - "php": "7.1" - } + "autoloader-suffix": "wordhat" }, "autoload": { "psr-4": { @@ -36,25 +32,22 @@ }, "require": { "behat/behat": "~3.1", - "php": "~7.1", + "php": ">=7.2 <7.4", "sensiolabs/behat-page-object-extension": "~2.1", - "behat/mink-extension": "~2.3", - - "ocramius/proxy-manager": "2.1" + "behat/mink-extension": "~2.3" }, "require-dev": { "behat/mink-goutte-driver": "^1.2", - "behat/mink-selenium2-driver": "^1.3", + "dmore/behat-chrome-extension": "^1.3", "genesis/behat-fail-aid": "^2.0", - "joomla-projects/selenium-server-standalone": "~3.5", - "phing/phing": "~2.16", "phpstan/phpstan": "~0.9", "squizlabs/php_codesniffer": "~3.0", - "wp-cli/wp-cli": "~1.5" + "wp-cli/wp-cli-bundle": "~2.1" }, "suggest": { "behat/mink-goutte-driver": "Headless Mink driver", - "behat/mink-selenium2-driver": "JS-enabled Mink driver (requires Selenium2)", + "behat/mink-selenium2-driver": "JS-enabled Mink driver (requires Selenium)", + "dmore/behat-chrome-extension": "JS-enabled Mink driver for Chrome (does not require Selenium)", "genesis/behat-fail-aid": "Get more out of your test suite by getting it to work with you when tests fail." }, "extra": { @@ -72,14 +65,15 @@ "ci-tests": [ "@test:behat-ci" ], - "local-tests": [ + "tests": [ "@test:behat-local" ], "test:behat-ci": [ - "vendor/bin/behat --colors --format progress" + "vendor/bin/behat --config tests/app/behat-ci.yml --colors --format progress" ], "test:behat-local": [ + "vendor/bin/behat --colors" ] } } diff --git a/composer.lock b/composer.lock index 827b6c41..60067529 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2efa86302fcc457dcc0eb0c7d231abdb", + "content-hash": "7b3426545e067f70f052f8d55218bdde", "packages": [ { "name": "behat/behat", @@ -387,31 +387,34 @@ }, { "name": "ocramius/proxy-manager", - "version": "2.1.0", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/Ocramius/ProxyManager.git", - "reference": "d9e5a00ca2d87b7e0f1bff36b897e02afd7d5435" + "reference": "14b137b06b0f911944132df9d51e445a35920ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/d9e5a00ca2d87b7e0f1bff36b897e02afd7d5435", - "reference": "d9e5a00ca2d87b7e0f1bff36b897e02afd7d5435", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/14b137b06b0f911944132df9d51e445a35920ab1", + "reference": "14b137b06b0f911944132df9d51e445a35920ab1", "shasum": "" }, "require": { - "ocramius/package-versions": "^1.1.1", - "php": "^7.1.0", - "zendframework/zend-code": "^3.1.0" + "ocramius/package-versions": "^1.1.3", + "php": "^7.2.0", + "zendframework/zend-code": "^3.3.0" }, "require-dev": { - "couscous/couscous": "^1.5.2", + "couscous/couscous": "^1.6.1", "ext-phar": "*", - "humbug/humbug": "dev-master@DEV", + "humbug/humbug": "1.0.0-RC.0@RC", + "nikic/php-parser": "^3.1.1", + "padraic/phpunit-accelerator": "dev-master@DEV", "phpbench/phpbench": "^0.12.2", - "phpunit/phpunit": "^5.6.4", - "phpunit/phpunit-mock-objects": "^3.4.1", - "squizlabs/php_codesniffer": "^2.7.0" + "phpstan/phpstan": "dev-master#856eb10a81c1d27c701a83f167dc870fd8f4236a as 0.9.999", + "phpstan/phpstan-phpunit": "dev-master#5629c0a1f4a9c417cb1077cf6693ad9753895761", + "phpunit/phpunit": "^6.4.3", + "squizlabs/php_codesniffer": "^2.9.1" }, "suggest": { "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", @@ -450,7 +453,7 @@ "proxy pattern", "service proxies" ], - "time": "2016-11-30T15:45:00+00:00" + "time": "2018-09-27T13:45:01+00:00" }, { "name": "psr/container", @@ -501,82 +504,35 @@ ], "time": "2017-02-14T16:28:37+00:00" }, - { - "name": "psr/log", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "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", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2018-11-20T15:27:04+00:00" - }, { "name": "sensiolabs/behat-page-object-extension", - "version": "v2.1.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/sensiolabs/BehatPageObjectExtension.git", - "reference": "bd2a34221ba65ea8c86d8e693992d718de03dbae" + "reference": "a05dda9dc38bfb3c789a936fd003b351a9a396be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/BehatPageObjectExtension/zipball/bd2a34221ba65ea8c86d8e693992d718de03dbae", - "reference": "bd2a34221ba65ea8c86d8e693992d718de03dbae", + "url": "https://api.github.com/repos/sensiolabs/BehatPageObjectExtension/zipball/a05dda9dc38bfb3c789a936fd003b351a9a396be", + "reference": "a05dda9dc38bfb3c789a936fd003b351a9a396be", "shasum": "" }, "require": { - "behat/behat": "^3.0.6", - "behat/mink": "^1.6", - "behat/mink-extension": "^2.0", - "ocramius/proxy-manager": "^1.0||^2.0", - "php": ">=5.3.0" + "behat/behat": "^3.3", + "behat/mink": "^1.7", + "behat/mink-extension": "^2.2", + "ocramius/proxy-manager": "^2.1.1", + "php": ">=7.1.3,<7.4" }, "require-dev": { - "behat/mink-goutte-driver": "^1.0", - "bossa/phpspec2-expect": "^1.0.3||^2.0", - "fabpot/goutte": "^1.0.4||^2.0||^3.0", - "phpspec/phpspec": "^2.5||^3.0", - "symfony/filesystem": "^2.8||^3.0", - "symfony/process": "^2.8||^3.0", - "symfony/yaml": "^2.8||^3.0" + "behat/mink-goutte-driver": "^1.2", + "bossa/phpspec2-expect": "^3.1", + "fabpot/goutte": "^3.2", + "phpspec/phpspec": "^5.1", + "symfony/filesystem": "^4.2", + "symfony/process": "^4.2", + "symfony/yaml": "^4.2" }, "suggest": { "bossa/phpspec2-expect": "Allows to use PHPSpec2 matchers in Behat context files" @@ -584,11 +540,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "SensioLabs\\Behat\\PageObjectExtension\\": "src/" } }, @@ -613,11 +569,11 @@ "Behat", "page" ], - "time": "2017-05-22T14:16:06+00:00" + "time": "2019-04-17T08:36:40+00:00" }, { "name": "symfony/class-loader", - "version": "v3.4.24", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", @@ -673,32 +629,32 @@ }, { "name": "symfony/config", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "177a276c01575253c95cefe0866e3d1b57637fe0" + "reference": "6379ee07398643e09e6ed1e87d9c62dfcad7f4eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/177a276c01575253c95cefe0866e3d1b57637fe0", - "reference": "177a276c01575253c95cefe0866e3d1b57637fe0", + "url": "https://api.github.com/repos/symfony/config/zipball/6379ee07398643e09e6ed1e87d9c62dfcad7f4eb", + "reference": "6379ee07398643e09e6ed1e87d9c62dfcad7f4eb", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/filesystem": "~2.8|~3.0|~4.0", + "php": "^7.1.3", + "symfony/filesystem": "~3.4|~4.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/dependency-injection": "<3.3", - "symfony/finder": "<3.3" + "symfony/finder": "<3.4" }, "require-dev": { - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/event-dispatcher": "~3.3|~4.0", - "symfony/finder": "~3.3|~4.0", - "symfony/yaml": "~3.0|~4.0" + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/messenger": "~4.1", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -706,7 +662,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -733,29 +689,31 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { "name": "symfony/console", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "98ae3cdc4bec48fe7ee24afc81dbb4a242186c9e" + "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/98ae3cdc4bec48fe7ee24afc81dbb4a242186c9e", - "reference": "98ae3cdc4bec48fe7ee24afc81dbb4a242186c9e", + "url": "https://api.github.com/repos/symfony/console/zipball/d50bbeeb0e17e6dd4124ea391eff235e932cbf64", + "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1" }, "conflict": { "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3", "symfony/process": "<3.3" }, "provide": { @@ -763,11 +721,12 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", + "symfony/config": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "^4.3", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" + "symfony/process": "~3.4|~4.0", + "symfony/var-dumper": "^4.3" }, "suggest": { "psr/log": "For using the console logger", @@ -778,7 +737,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -805,11 +764,11 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-03-31T11:33:18+00:00" + "time": "2019-06-05T13:25:51+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.24", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -861,38 +820,55 @@ "time": "2019-01-16T09:39:14+00:00" }, { - "name": "symfony/debug", - "version": "v3.4.24", + "name": "symfony/dependency-injection", + "version": "v4.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "adbdd5d66342fb0a0bce7422ba68181842b6610d" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "fea7f73e278ee0337349a5a68b867fc656bb33f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/adbdd5d66342fb0a0bce7422ba68181842b6610d", - "reference": "adbdd5d66342fb0a0bce7422ba68181842b6610d", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/fea7f73e278ee0337349a5a68b867fc656bb33f3", + "reference": "fea7f73e278ee0337349a5a68b867fc656bb33f3", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" + "php": "^7.1.3", + "psr/container": "^1.0", + "symfony/service-contracts": "^1.1.2" }, "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "symfony/config": "<4.3", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0" }, "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" + "symfony/config": "^4.3", + "symfony/expression-language": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\DependencyInjection\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -912,58 +888,57 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2019-03-10T17:07:42+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v3.4.24", + "name": "symfony/event-dispatcher", + "version": "v4.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "85172cca352fe0790fa6f485ad194862a8ac57ee" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/85172cca352fe0790fa6f485ad194862a8ac57ee", - "reference": "85172cca352fe0790fa6f485ad194862a8ac57ee", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4e6c670af81c4fb0b6c08b035530a9915d0b691f", + "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/container": "^1.0" + "php": "^7.1.3", + "symfony/event-dispatcher-contracts": "^1.1" }, "conflict": { - "symfony/config": "<3.3.7", - "symfony/finder": "<3.3", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" + "symfony/dependency-injection": "<3.4" }, "provide": { - "psr/container-implementation": "1.0" + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { - "symfony/config": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/yaml": "~3.4|~4.0" + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "^3.4|^4.0", + "symfony/service-contracts": "^1.1", + "symfony/stopwatch": "~3.4|~4.0" }, "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -983,54 +958,41 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DependencyInjection Component", + "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-03-25T07:48:46+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v3.4.24", + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a088aafcefb4eef2520a290ed82e4374092a6dff", - "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", + "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0" + "php": "^7.1.3" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "1.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1038,40 +1000,48 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", - "time": "2019-04-02T08:51:52+00:00" + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-20T06:46:26+00:00" }, { "name": "symfony/filesystem", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb" + "reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/acf99758b1df8e9295e6b85aa69f294565c9fedb", - "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/bf2af40d738dec5e433faea7b00daa4431d0a4cf", + "reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -1098,7 +1068,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-02-04T21:34:32+00:00" + "time": "2019-06-03T20:27:40+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1145,7 +1115,7 @@ }, { "name": "Gert de Pagter", - "email": "backendtea@gmail.com" + "email": "BackEndTea@gmail.com" } ], "description": "Symfony polyfill for ctype functions", @@ -1217,35 +1187,159 @@ ], "time": "2019-02-06T07:57:58+00:00" }, + { + "name": "symfony/polyfill-php73", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "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 backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v1.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", + "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "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": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-13T11:15:36+00:00" + }, { "name": "symfony/translation", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "629ac01240f6ebc253a621e19b84e329fe19a987" + "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/629ac01240f6ebc253a621e19b84e329fe19a987", - "reference": "629ac01240f6ebc253a621e19b84e329fe19a987", + "url": "https://api.github.com/repos/symfony/translation/zipball/5dda505e5f65d759741dfaf4e54b36010a4b57aa", + "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^1.1.2" }, "conflict": { - "symfony/config": "<2.8", + "symfony/config": "<3.4", "symfony/dependency-injection": "<3.4", "symfony/yaml": "<3.4" }, + "provide": { + "symfony/translation-implementation": "1.0" + }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/service-contracts": "^1.1.2", + "symfony/var-dumper": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -1256,7 +1350,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -1283,24 +1377,81 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2019-03-25T07:48:46+00:00" + "time": "2019-06-03T20:27:40+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v1.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/cb4b18ad7b92a26e83b65dde940fab78339e6f3c", + "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "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": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-13T11:15:36+00:00" }, { "name": "symfony/yaml", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "212a27b731e5bfb735679d1ffaac82bd6a1dc996" + "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/212a27b731e5bfb735679d1ffaac82bd6a1dc996", - "reference": "212a27b731e5bfb735679d1ffaac82bd6a1dc996", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99", + "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -1315,7 +1466,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -1342,7 +1493,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-03-25T07:48:46+00:00" + "time": "2019-04-06T14:04:46+00:00" }, { "name": "zendframework/zend-code", @@ -1683,16 +1834,16 @@ }, { "name": "composer/composer", - "version": "1.8.4", + "version": "1.8.6", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "bc364c2480c17941e2135cfc568fa41794392534" + "reference": "19b5f66a0e233eb944f134df34091fe1c5dfcc11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/bc364c2480c17941e2135cfc568fa41794392534", - "reference": "bc364c2480c17941e2135cfc568fa41794392534", + "url": "https://api.github.com/repos/composer/composer/zipball/19b5f66a0e233eb944f134df34091fe1c5dfcc11", + "reference": "19b5f66a0e233eb944f134df34091fe1c5dfcc11", "shasum": "" }, "require": { @@ -1759,7 +1910,7 @@ "dependency", "package" ], - "time": "2019-02-11T09:52:10+00:00" + "time": "2019-06-11T13:03:06+00:00" }, { "name": "composer/semver", @@ -1870,44 +2021,144 @@ "homepage": "http://seld.be" }, { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "time": "2019-03-26T10:23:26+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2019-05-27T17:52:04+00:00" + }, + { + "name": "dmore/behat-chrome-extension", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://gitlab.com/DMore/behat-chrome-extension.git", + "reference": "6279986ef85ac179f055460502e9b11c3784146c" + }, + "dist": { + "type": "zip", + "url": "https://gitlab.com/api/v4/projects/DMore%2Fbehat-chrome-extension/repository/archive.zip?sha=6279986ef85ac179f055460502e9b11c3784146c", + "reference": "6279986ef85ac179f055460502e9b11c3784146c", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.4", + "behat/mink-extension": "^2.0", + "dmore/chrome-mink-driver": "^2.4.1", + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "DMore\\ChromeExtension\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dorian More", + "email": "doriancmore@gmail.com" } ], - "description": "SPDX licenses list and validation library.", + "description": "Behat extension for controlling chrome without selenium", "keywords": [ - "license", - "spdx", - "validator" + "Behat", + "chrome", + "driver", + "headless" ], - "time": "2019-03-26T10:23:26+00:00" + "time": "2019-03-30T08:57:34+00:00" }, { - "name": "composer/xdebug-handler", - "version": "1.3.2", + "name": "dmore/chrome-mink-driver", + "version": "2.7.0", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "d17708133b6c276d6e42ef887a877866b909d892" + "url": "https://gitlab.com/DMore/chrome-mink-driver.git", + "reference": "d66765fb7f448e8b2bca2b899308a4a6d8a69264" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", - "reference": "d17708133b6c276d6e42ef887a877866b909d892", + "url": "https://gitlab.com/api/v4/projects/DMore%2Fchrome-mink-driver/repository/archive.zip?sha=d66765fb7f448e8b2bca2b899308a4a6d8a69264", + "reference": "d66765fb7f448e8b2bca2b899308a4a6d8a69264", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0" + "behat/mink": "^1.7", + "ext-curl": "*", + "ext-json": "*", + "textalk/websocket": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "mink/driver-testsuite": "dev-master", + "phpunit/phpunit": "^5.0.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { - "Composer\\XdebugHandler\\": "src" + "DMore\\ChromeDriver\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1916,16 +2167,12 @@ ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "Dorian More", + "email": "doriancmore@gmail.com" } ], - "description": "Restarts a process without xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "time": "2019-01-28T20:25:53+00:00" + "description": "Mink driver for controlling chrome without selenium", + "time": "2019-03-30T09:22:58+00:00" }, { "name": "fabpot/goutte", @@ -1984,16 +2231,16 @@ }, { "name": "genesis/behat-fail-aid", - "version": "2.0.2", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/forceedge01/behat-fail-aid.git", - "reference": "d0b5652f79bcd880a8c2992dfb5ec0d7acb2f033" + "reference": "b61ca028bb23a8dc1dfda7314320d47c0d974c04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/forceedge01/behat-fail-aid/zipball/d0b5652f79bcd880a8c2992dfb5ec0d7acb2f033", - "reference": "d0b5652f79bcd880a8c2992dfb5ec0d7acb2f033", + "url": "https://api.github.com/repos/forceedge01/behat-fail-aid/zipball/b61ca028bb23a8dc1dfda7314320d47c0d974c04", + "reference": "b61ca028bb23a8dc1dfda7314320d47c0d974c04", "shasum": "" }, "require": { @@ -2028,7 +2275,130 @@ "error", "fail" ], - "time": "2018-11-21T18:59:34+00:00" + "time": "2019-06-15T17:44:23+00:00" + }, + { + "name": "gettext/gettext", + "version": "v4.6.2", + "source": { + "type": "git", + "url": "https://github.com/oscarotero/Gettext.git", + "reference": "93176b272d61fb58a9767be71c50d19149cb1e48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/oscarotero/Gettext/zipball/93176b272d61fb58a9767be71c50d19149cb1e48", + "reference": "93176b272d61fb58a9767be71c50d19149cb1e48", + "shasum": "" + }, + "require": { + "gettext/languages": "^2.3", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/view": "*", + "phpunit/phpunit": "^4.8|^5.7|^6.5", + "squizlabs/php_codesniffer": "^3.0", + "symfony/yaml": "~2", + "twig/extensions": "*", + "twig/twig": "^1.31|^2.0" + }, + "suggest": { + "illuminate/view": "Is necessary if you want to use the Blade extractor", + "symfony/yaml": "Is necessary if you want to use the Yaml extractor/generator", + "twig/extensions": "Is necessary if you want to use the Twig extractor", + "twig/twig": "Is necessary if you want to use the Twig extractor" + }, + "type": "library", + "autoload": { + "psr-4": { + "Gettext\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oscar Otero", + "email": "oom@oscarotero.com", + "homepage": "http://oscarotero.com", + "role": "Developer" + } + ], + "description": "PHP gettext manager", + "homepage": "https://github.com/oscarotero/Gettext", + "keywords": [ + "JS", + "gettext", + "i18n", + "mo", + "po", + "translation" + ], + "time": "2019-01-12T18:40:56+00:00" + }, + { + "name": "gettext/languages", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/mlocati/cldr-to-gettext-plural-rules.git", + "reference": "78db2d17933f0765a102f368a6663f057162ddbd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mlocati/cldr-to-gettext-plural-rules/zipball/78db2d17933f0765a102f368a6663f057162ddbd", + "reference": "78db2d17933f0765a102f368a6663f057162ddbd", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "^4" + }, + "bin": [ + "bin/export-plural-rules", + "bin/export-plural-rules.php" + ], + "type": "library", + "autoload": { + "psr-4": { + "Gettext\\Languages\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michele Locati", + "email": "mlocati@gmail.com", + "role": "Developer" + } + ], + "description": "gettext languages with plural rules", + "homepage": "https://github.com/mlocati/cldr-to-gettext-plural-rules", + "keywords": [ + "cldr", + "i18n", + "internationalization", + "l10n", + "language", + "languages", + "localization", + "php", + "plural", + "plural rules", + "plurals", + "translate", + "translations", + "unicode" + ], + "time": "2018-11-13T22:06:07+00:00" }, { "name": "guzzlehttp/guzzle", @@ -2323,55 +2693,6 @@ ], "time": "2018-06-13T13:22:40+00:00" }, - { - "name": "joomla-projects/selenium-server-standalone", - "version": "v3.14.0", - "source": { - "type": "git", - "url": "https://github.com/joomla-projects/selenium-server-standalone.git", - "reference": "2939723f470918b6b72b0c05ba1978a41f0ef49d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/joomla-projects/selenium-server-standalone/zipball/2939723f470918b6b72b0c05ba1978a41f0ef49d", - "reference": "2939723f470918b6b72b0c05ba1978a41f0ef49d", - "shasum": "" - }, - "bin": [ - "bin/selenium-server-standalone" - ], - "type": "library", - "autoload": { - "files": [ - "Selenium.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Sven Eisenschmidt", - "email": "sven.eisenschmidt@gmail.com" - }, - { - "name": "Puneet Kala", - "email": "puneet.kala@community.joomla.org" - }, - { - "name": "Javier Gomez", - "email": "javier.gomez@community.joomla.org" - } - ], - "description": "Composer distribution of Selenium Server Standalone, the browser automation framework. Adds a executable to your composer bin directory.", - "homepage": "https://github.com/joomla-projects/selenium-server-standalone", - "keywords": [ - "selenium", - "testing" - ], - "time": "2018-08-19T04:08:16+00:00" - }, { "name": "justinrainbow/json-schema", "version": "5.2.8", @@ -2438,6 +2759,51 @@ ], "time": "2019-01-14T23:55:14+00:00" }, + { + "name": "mck89/peast", + "version": "v1.9.2", + "source": { + "type": "git", + "url": "https://github.com/mck89/peast.git", + "reference": "7c9e487a0bb2410b3b7f27e8274cd04248b68197" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mck89/peast/zipball/7c9e487a0bb2410b3b7f27e8274cd04248b68197", + "reference": "7c9e487a0bb2410b3b7f27e8274cd04248b68197", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9.2-dev" + } + }, + "autoload": { + "psr-4": { + "Peast\\": "lib/Peast/", + "Peast\\test\\": "test/Peast/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Marchiò", + "email": "marco.mm89@gmail.com" + } + ], + "description": "Peast is PHP library that generates AST for JavaScript code", + "time": "2019-05-24T16:47:14+00:00" + }, { "name": "mustache/mustache", "version": "v2.12.0", @@ -2723,7 +3089,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "🔍 Nette Finder: find files and directories with an intuitive API.", + "description": "? Nette Finder: find files and directories with an intuitive API.", "homepage": "https://nette.org", "keywords": [ "filesystem", @@ -2783,7 +3149,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "🍸 Nette NEON: encodes and decodes NEON file format.", + "description": "? Nette NEON: encodes and decodes NEON file format.", "homepage": "http://ne-on.org", "keywords": [ "export", @@ -3050,16 +3416,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.2.1", + "version": "v4.2.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0" + "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/5221f49a608808c1e4d436df32884cbc1b821ac0", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420", + "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420", "shasum": "" }, "require": { @@ -3097,125 +3463,33 @@ "parser", "php" ], - "time": "2019-02-16T20:54:15+00:00" - }, - { - "name": "phing/phing", - "version": "2.16.1", - "source": { - "type": "git", - "url": "https://github.com/phingofficial/phing.git", - "reference": "cbe0f969e434e269af91b4160b86fe899c6e07c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phingofficial/phing/zipball/cbe0f969e434e269af91b4160b86fe899c6e07c7", - "reference": "cbe0f969e434e269af91b4160b86fe899c6e07c7", - "shasum": "" - }, - "require": { - "php": ">=5.2.0", - "symfony/yaml": "^3.1 || ^4.0" - }, - "require-dev": { - "ext-pdo_sqlite": "*", - "mikey179/vfsstream": "^1.6", - "pdepend/pdepend": "2.x", - "pear/archive_tar": "1.4.x", - "pear/http_request2": "dev-trunk", - "pear/net_growl": "dev-trunk", - "pear/pear-core-minimal": "1.10.1", - "pear/versioncontrol_git": "@dev", - "pear/versioncontrol_svn": "~0.5", - "phpdocumentor/phpdocumentor": "2.x", - "phploc/phploc": "~2.0.6", - "phpmd/phpmd": "~2.2", - "phpunit/phpunit": ">=3.7", - "sebastian/git": "~1.0", - "sebastian/phpcpd": "2.x", - "siad007/versioncontrol_hg": "^1.0", - "simpletest/simpletest": "^1.1", - "squizlabs/php_codesniffer": "~2.2" - }, - "suggest": { - "pdepend/pdepend": "PHP version of JDepend", - "pear/archive_tar": "Tar file management class", - "pear/versioncontrol_git": "A library that provides OO interface to handle Git repository", - "pear/versioncontrol_svn": "A simple OO-style interface for Subversion, the free/open-source version control system", - "phpdocumentor/phpdocumentor": "Documentation Generator for PHP", - "phploc/phploc": "A tool for quickly measuring the size of a PHP project", - "phpmd/phpmd": "PHP version of PMD tool", - "phpunit/php-code-coverage": "Library that provides collection, processing, and rendering functionality for PHP code coverage information", - "phpunit/phpunit": "The PHP Unit Testing Framework", - "sebastian/phpcpd": "Copy/Paste Detector (CPD) for PHP code", - "siad007/versioncontrol_hg": "A library for interfacing with Mercurial repositories.", - "tedivm/jshrink": "Javascript Minifier built in PHP" - }, - "bin": [ - "bin/phing" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.16.x-dev" - } - }, - "autoload": { - "classmap": [ - "classes/phing/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "classes" - ], - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Michiel Rook", - "email": "mrook@php.net" - }, - { - "name": "Phing Community", - "homepage": "https://www.phing.info/trac/wiki/Development/Contributors" - } - ], - "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.", - "homepage": "https://www.phing.info/", - "keywords": [ - "build", - "phing", - "task", - "tool" - ], - "time": "2018-01-25T13:18:09+00:00" + "time": "2019-05-25T20:07:01+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "0.3.1", + "version": "0.3.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "2cc49f47c69b023eaf05b48e6529389893b13d74" + "reference": "8c4ef2aefd9788238897b678a985e1d5c8df6db4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/2cc49f47c69b023eaf05b48e6529389893b13d74", - "reference": "2cc49f47c69b023eaf05b48e6529389893b13d74", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/8c4ef2aefd9788238897b678a985e1d5c8df6db4", + "reference": "8c4ef2aefd9788238897b678a985e1d5c8df6db4", "shasum": "" }, "require": { "php": "~7.1" }, "require-dev": { - "consistence/coding-standard": "^2.0.0", + "consistence/coding-standard": "^3.5", "jakub-onderka/php-parallel-lint": "^0.9.2", "phing/phing": "^2.16.0", "phpstan/phpstan": "^0.10", "phpunit/phpunit": "^6.3", - "slevomat/coding-standard": "^3.3.0", + "slevomat/coding-standard": "^4.7.2", + "squizlabs/php_codesniffer": "^3.3.2", "symfony/process": "^3.4 || ^4.0" }, "type": "library", @@ -3236,20 +3510,20 @@ "MIT" ], "description": "PHPDoc parser with support for nullable, intersection and generic types", - "time": "2019-01-14T12:26:23+00:00" + "time": "2019-06-07T19:13:52+00:00" }, { "name": "phpstan/phpstan", - "version": "0.11.5", + "version": "0.11.8", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "24ce5a566a798b81343138ed5d41d6877554cf9a" + "reference": "fcf0081bf3a254ddacffa03e78be87842d0c09c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/24ce5a566a798b81343138ed5d41d6877554cf9a", - "reference": "24ce5a566a798b81343138ed5d41d6877554cf9a", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/fcf0081bf3a254ddacffa03e78be87842d0c09c9", + "reference": "fcf0081bf3a254ddacffa03e78be87842d0c09c9", "shasum": "" }, "require": { @@ -3258,10 +3532,11 @@ "nette/bootstrap": "^2.4 || ^3.0", "nette/di": "^2.4.7 || ^3.0", "nette/robot-loader": "^3.0.1", + "nette/schema": "^1.0", "nette/utils": "^2.4.5 || ^3.0", "nikic/php-parser": "^4.0.2", "php": "~7.1", - "phpstan/phpdoc-parser": "^0.3", + "phpstan/phpdoc-parser": "^0.3.4", "symfony/console": "~3.2 || ~4.0", "symfony/finder": "~3.2 || ~4.0" }, @@ -3309,7 +3584,7 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", - "time": "2019-03-25T16:40:09+00:00" + "time": "2019-05-28T19:58:33+00:00" }, { "name": "psr/http-message", @@ -3336,7 +3611,57 @@ }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3349,17 +3674,14 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "http", - "http-message", + "log", "psr", - "psr-7", - "request", - "response" + "psr-3" ], - "time": "2016-08-06T14:39:51+00:00" + "time": "2018-11-20T15:27:04+00:00" }, { "name": "ralouphie/getallheaders", @@ -3401,52 +3723,6 @@ "description": "A polyfill for getallheaders.", "time": "2016-02-11T07:05:27+00:00" }, - { - "name": "ramsey/array_column", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/array_column.git", - "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/array_column/zipball/f8e52eb28e67eb50e613b451dd916abcf783c1db", - "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db", - "shasum": "" - }, - "require-dev": { - "jakub-onderka/php-parallel-lint": "0.8.*", - "phpunit/phpunit": "~4.5", - "satooshi/php-coveralls": "0.6.*", - "squizlabs/php_codesniffer": "~2.2" - }, - "type": "library", - "autoload": { - "files": [ - "src/array_column.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "homepage": "http://benramsey.com" - } - ], - "description": "Provides functionality for array_column() to projects using PHP earlier than version 5.5.", - "homepage": "https://github.com/ramsey/array_column", - "keywords": [ - "array", - "array_column", - "column" - ], - "abandoned": true, - "time": "2015-03-20T22:07:39+00:00" - }, { "name": "rmccue/requests", "version": "v1.7.0", @@ -3591,16 +3867,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.4.1", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5b4333b4010625d29580eb4a41f1e53251be6baa" + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5b4333b4010625d29580eb4a41f1e53251be6baa", - "reference": "5b4333b4010625d29580eb4a41f1e53251be6baa", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", "shasum": "" }, "require": { @@ -3638,29 +3914,31 @@ "phpcs", "standards" ], - "time": "2019-03-19T03:22:27+00:00" + "time": "2019-04-10T23:49:02+00:00" }, { "name": "symfony/browser-kit", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "c0fadd368c1031109e996316e53ffeb886d37ea1" + "reference": "e07d50e84b8cf489590f22244f4f609579b4a2c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c0fadd368c1031109e996316e53ffeb886d37ea1", - "reference": "c0fadd368c1031109e996316e53ffeb886d37ea1", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e07d50e84b8cf489590f22244f4f609579b4a2c4", + "reference": "e07d50e84b8cf489590f22244f4f609579b4a2c4", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/dom-crawler": "~2.8|~3.0|~4.0" + "php": "^7.1.3", + "symfony/dom-crawler": "~3.4|~4.0" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0" + "symfony/css-selector": "~3.4|~4.0", + "symfony/http-client": "^4.3", + "symfony/mime": "^4.3", + "symfony/process": "~3.4|~4.0" }, "suggest": { "symfony/process": "" @@ -3668,7 +3946,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3695,29 +3973,33 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { "name": "symfony/dom-crawler", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "d40023c057393fb25f7ca80af2a56ed948c45a09" + "reference": "06ee58fbc9a8130f1d35b5280e15235a0515d457" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d40023c057393fb25f7ca80af2a56ed948c45a09", - "reference": "d40023c057393fb25f7ca80af2a56ed948c45a09", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/06ee58fbc9a8130f1d35b5280e15235a0515d457", + "reference": "06ee58fbc9a8130f1d35b5280e15235a0515d457", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, + "conflict": { + "masterminds/html5": "<2.6" + }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0|~4.0" + "masterminds/html5": "^2.6", + "symfony/css-selector": "~3.4|~4.0" }, "suggest": { "symfony/css-selector": "" @@ -3725,7 +4007,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3752,29 +4034,29 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "time": "2019-05-31T18:55:30+00:00" }, { "name": "symfony/finder", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b" + "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/fcdde4aa38f48190ce70d782c166f23930084f9b", - "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b", + "url": "https://api.github.com/repos/symfony/finder/zipball/b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", + "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3801,29 +4083,29 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-02-22T14:44:53+00:00" + "time": "2019-05-26T20:47:49+00:00" }, { "name": "symfony/process", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e" + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e", - "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e", + "url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c", + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3850,32 +4132,32 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-01-16T13:27:11+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { - "name": "wp-cli/autoload-splitter", - "version": "v0.1.5", + "name": "textalk/websocket", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/wp-cli/autoload-splitter.git", - "reference": "fb4302da26390811d2631c62b42b75976d224bb8" + "url": "https://github.com/Textalk/websocket-php.git", + "reference": "bfa18bb6bf523680c7803f6b04694fbbf2f67bbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/autoload-splitter/zipball/fb4302da26390811d2631c62b42b75976d224bb8", - "reference": "fb4302da26390811d2631c62b42b75976d224bb8", + "url": "https://api.github.com/repos/Textalk/websocket-php/zipball/bfa18bb6bf523680c7803f6b04694fbbf2f67bbf", + "reference": "bfa18bb6bf523680c7803f6b04694fbbf2f67bbf", "shasum": "" }, - "require": { - "composer-plugin-api": "^1.1" - }, - "type": "composer-plugin", - "extra": { - "class": "WP_CLI\\AutoloadSplitter\\ComposerPlugin" + "require-dev": { + "cboden/ratchet": "0.3.*", + "phpunit/phpunit": "4.1.*", + "phpunit/phpunit-selenium": "1.3.3", + "satooshi/php-coveralls": "dev-master" }, + "type": "library", "autoload": { "psr-4": { - "WP_CLI\\AutoloadSplitter\\": "src" + "WebSocket\\": "lib" } }, "notification-url": "https://packagist.org/downloads/", @@ -3884,37 +4166,38 @@ ], "authors": [ { - "name": "Alain Schlesser", - "email": "alain.schlesser@gmail.com", - "homepage": "https://www.alainschlesser.com" + "name": "Fredrik Liljegren", + "email": "fredrik.liljegren@textalk.se" } ], - "description": "Composer plugin for splitting a generated autoloader into two distinct parts.", - "homepage": "https://wp-cli.org", - "time": "2017-08-03T08:40:16+00:00" + "description": "WebSocket client and server", + "time": "2015-10-09T07:32:42+00:00" }, { "name": "wp-cli/cache-command", - "version": "v1.0.6", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/cache-command.git", - "reference": "d82cba9effa198f17847dce5771c8fb20c443ffa" + "reference": "56e2a8186c28bc1edbb8bc1c0f3d3b30fa116ea8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/d82cba9effa198f17847dce5771c8fb20c443ffa", - "reference": "d82cba9effa198f17847dce5771c8fb20c443ffa", + "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/56e2a8186c28bc1edbb8bc1c0f3d3b30fa116ea8", + "reference": "56e2a8186c28bc1edbb8bc1c0f3d3b30fa116ea8", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -3932,7 +4215,8 @@ "transient delete", "transient get", "transient set", - "transient type" + "transient type", + "transient list" ] }, "autoload": { @@ -3956,30 +4240,33 @@ ], "description": "Manages object and transient caches.", "homepage": "https://github.com/wp-cli/cache-command", - "time": "2017-12-14T19:21:19+00:00" + "time": "2019-04-19T15:13:51+00:00" }, { "name": "wp-cli/checksum-command", - "version": "v1.0.9", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/checksum-command.git", - "reference": "89a319440651f2867f282339c2223cfe5e9cc3fb" + "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/89a319440651f2867f282339c2223cfe5e9cc3fb", - "reference": "89a319440651f2867f282339c2223cfe5e9cc3fb", + "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/7db66668ec116c5ccef7bc27b4354fa81b85018a", + "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4008,33 +4295,34 @@ ], "description": "Verifies file integrity by comparing to published checksums.", "homepage": "https://github.com/wp-cli/checksum-command", - "time": "2018-04-20T07:47:27+00:00" + "time": "2019-04-25T00:28:02+00:00" }, { "name": "wp-cli/config-command", - "version": "v1.2.0", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/wp-cli/config-command.git", - "reference": "7bec9b4685b4022ab511630422dd6acccadfca9b" + "reference": "b7e69946e4ec711d4568d11d2b7e08f5e872567d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/config-command/zipball/7bec9b4685b4022ab511630422dd6acccadfca9b", - "reference": "7bec9b4685b4022ab511630422dd6acccadfca9b", + "url": "https://api.github.com/repos/wp-cli/config-command/zipball/b7e69946e4ec711d4568d11d2b7e08f5e872567d", + "reference": "b7e69946e4ec711d4568d11d2b7e08f5e872567d", "shasum": "" }, "require": { + "wp-cli/wp-cli": "^2", "wp-cli/wp-config-transformer": "^1.2.1" }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4046,7 +4334,8 @@ "config has", "config list", "config path", - "config set" + "config set", + "config shuffle-salts" ] }, "autoload": { @@ -4075,30 +4364,37 @@ ], "description": "Generates and reads the wp-config.php file.", "homepage": "https://github.com/wp-cli/config-command", - "time": "2018-04-20T08:03:51+00:00" + "time": "2019-04-25T00:28:22+00:00" }, { "name": "wp-cli/core-command", - "version": "v1.0.12", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/core-command.git", - "reference": "b41913707029c5147b38810700e424ed5f5fe8e0" + "reference": "14634828e559f69e2525fa9489635f301783aee8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/core-command/zipball/b41913707029c5147b38810700e424ed5f5fe8e0", - "reference": "b41913707029c5147b38810700e424ed5f5fe8e0", + "url": "https://api.github.com/repos/wp-cli/core-command/zipball/14634828e559f69e2525fa9489635f301783aee8", + "reference": "14634828e559f69e2525fa9489635f301783aee8", "shasum": "" }, + "require": { + "composer/semver": "^1.4", + "wp-cli/wp-cli": "^2.2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/checksum-command": "^1 || ^2", + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4135,30 +4431,33 @@ ], "description": "Downloads, installs, updates, and manages a WordPress installation.", "homepage": "https://github.com/wp-cli/core-command", - "time": "2018-07-25T15:55:02+00:00" + "time": "2019-04-25T05:45:44+00:00" }, { "name": "wp-cli/cron-command", - "version": "v1.0.5", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/cron-command.git", - "reference": "9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef" + "reference": "b6d0c8ff69cc56d5316a35a7a2fcc314c4069585" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef", - "reference": "9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef", + "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/b6d0c8ff69cc56d5316a35a7a2fcc314c4069585", + "reference": "b6d0c8ff69cc56d5316a35a7a2fcc314c4069585", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4194,34 +4493,38 @@ ], "description": "Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules.", "homepage": "https://github.com/wp-cli/cron-command", - "time": "2017-12-08T15:09:54+00:00" + "time": "2019-04-24T07:31:46+00:00" }, { "name": "wp-cli/db-command", - "version": "v1.3.5", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/db-command.git", - "reference": "c260be59d9ac4c0012b016405e17d0251137fb89" + "reference": "dc0f8e4d5783d8a4ee01da1119b8fe8038fe1aa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/db-command/zipball/c260be59d9ac4c0012b016405e17d0251137fb89", - "reference": "c260be59d9ac4c0012b016405e17d0251137fb89", + "url": "https://api.github.com/repos/wp-cli/db-command/zipball/dc0f8e4d5783d8a4ee01da1119b8fe8038fe1aa0", + "reference": "dc0f8e4d5783d8a4ee01da1119b8fe8038fe1aa0", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ "db", + "db clean", "db create", "db drop", "db reset", @@ -4260,38 +4563,44 @@ ], "description": "Performs basic database operations using credentials stored in wp-config.php.", "homepage": "https://github.com/wp-cli/db-command", - "time": "2018-07-31T02:06:59+00:00" + "time": "2019-04-25T00:28:40+00:00" }, { "name": "wp-cli/embed-command", - "version": "v1.0.0", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/embed-command.git", - "reference": "81319d4243a8dfe096389bf54cdc4fc3dec53497" + "reference": "ce0c86217d9c0500666bd986ab17cae0ae33a41b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/81319d4243a8dfe096389bf54cdc4fc3dec53497", - "reference": "81319d4243a8dfe096389bf54cdc4fc3dec53497", + "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/ce0c86217d9c0500666bd986ab17cae0ae33a41b", + "reference": "ce0c86217d9c0500666bd986ab17cae0ae33a41b", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ "embed", "embed fetch", + "embed provider", "embed provider list", "embed provider match", + "embed handler", "embed handler list", + "embed cache", "embed cache clear", "embed cache find", "embed cache trigger" @@ -4317,31 +4626,36 @@ ], "description": "Inspects oEmbed providers, clears embed cache, and more.", "homepage": "https://github.com/wp-cli/embed-command", - "time": "2018-01-22T21:26:48+00:00" + "time": "2019-04-25T00:28:56+00:00" }, { "name": "wp-cli/entity-command", - "version": "v1.3.1", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/entity-command.git", - "reference": "7b000645684b6acbb1d55ab47b77eb08f35cd229" + "reference": "250ed0da61162819f601fa110251c7e4c5173f27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/7b000645684b6acbb1d55ab47b77eb08f35cd229", - "reference": "7b000645684b6acbb1d55ab47b77eb08f35cd229", + "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/250ed0da61162819f601fa110251c7e4c5173f27", + "reference": "250ed0da61162819f601fa110251c7e4c5173f27", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "phpunit/phpunit": "^4.8", - "wp-cli/wp-cli": "^1.5" + "wp-cli/cache-command": "^1 || ^2", + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/media-command": "^1.1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4405,6 +4719,7 @@ "post create", "post delete", "post edit", + "post exists", "post generate", "post get", "post list", @@ -4515,34 +4830,34 @@ "homepage": "https://runcommand.io" } ], - "description": "Manage WordPress core entities.", + "description": "Manage WordPress comments, menus, options, posts, sites, terms, and users.", "homepage": "https://github.com/wp-cli/entity-command", - "time": "2018-07-13T12:21:06+00:00" + "time": "2019-04-25T04:51:40+00:00" }, { "name": "wp-cli/eval-command", - "version": "v1.0.5", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/wp-cli/eval-command.git", - "reference": "9640d40ab28cd86590396f08f8c382e659f57321" + "reference": "47a4f1a910b6d88f090d776a80d893cf19ca2047" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/9640d40ab28cd86590396f08f8c382e659f57321", - "reference": "9640d40ab28cd86590396f08f8c382e659f57321", + "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/47a4f1a910b6d88f090d776a80d893cf19ca2047", + "reference": "47a4f1a910b6d88f090d776a80d893cf19ca2047", "shasum": "" }, "require": { - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5" + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4571,33 +4886,37 @@ ], "description": "Executes arbitrary PHP code or files.", "homepage": "https://github.com/wp-cli/eval-command", - "time": "2017-12-08T14:33:34+00:00" + "time": "2019-04-20T18:22:05+00:00" }, { "name": "wp-cli/export-command", - "version": "v1.0.7", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/export-command.git", - "reference": "776d33ad6b2ac93c00fded27402ca8e188e7bff0" + "reference": "941acde17ec056e7aaeb041ecaed7869f2e64801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/export-command/zipball/776d33ad6b2ac93c00fded27402ca8e188e7bff0", - "reference": "776d33ad6b2ac93c00fded27402ca8e188e7bff0", + "url": "https://api.github.com/repos/wp-cli/export-command/zipball/941acde17ec056e7aaeb041ecaed7869f2e64801", + "reference": "941acde17ec056e7aaeb041ecaed7869f2e64801", "shasum": "" }, "require": { - "nb/oxymel": "~0.1.0" + "nb/oxymel": "~0.1.0", + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/import-command": "^1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4625,30 +4944,35 @@ ], "description": "Exports WordPress content to a WXR file.", "homepage": "https://github.com/wp-cli/export-command", - "time": "2018-04-20T08:10:47+00:00" + "time": "2019-04-24T19:55:58+00:00" }, { "name": "wp-cli/extension-command", - "version": "v1.2.2", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/extension-command.git", - "reference": "18f1036bad42f481f178c2f4139039e9424b6e14" + "reference": "7b4d4775a6a08493781b1ec67578f02a148ca23a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/18f1036bad42f481f178c2f4139039e9424b6e14", - "reference": "18f1036bad42f481f178c2f4139039e9424b6e14", + "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/7b4d4775a6a08493781b1ec67578f02a148ca23a", + "reference": "7b4d4775a6a08493781b1ec67578f02a148ca23a", "shasum": "" }, + "require": { + "composer/semver": "^1.4", + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/scaffold-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4707,32 +5031,92 @@ ], "description": "Manages plugins and themes, including installs, activations, and updates.", "homepage": "https://github.com/wp-cli/extension-command", - "time": "2018-07-31T17:46:49+00:00" + "time": "2019-06-05T11:15:16+00:00" + }, + { + "name": "wp-cli/i18n-command", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/i18n-command.git", + "reference": "e52a9a602772339a0f844bd5e9a9ac8cc8b490ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/e52a9a602772339a0f844bd5e9a9ac8cc8b490ea", + "reference": "e52a9a602772339a0f844bd5e9a9ac8cc8b490ea", + "shasum": "" + }, + "require": { + "gettext/gettext": "^4.6", + "mck89/peast": "^1.8", + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/scaffold-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "i18n", + "i18n make-pot", + "i18n make-json" + ] + }, + "autoload": { + "psr-4": { + "WP_CLI\\I18n\\": "src/" + }, + "files": [ + "i18n-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pascal Birchler", + "homepage": "https://pascalbirchler.com/" + } + ], + "description": "Provides internationalization tools for WordPress projects.", + "homepage": "https://github.com/wp-cli/i18n-command", + "time": "2019-04-25T00:31:04+00:00" }, { "name": "wp-cli/import-command", - "version": "v1.0.7", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/import-command.git", - "reference": "421fec5bd96671931f2119a89d28bae2f9edeb6b" + "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/import-command/zipball/421fec5bd96671931f2119a89d28bae2f9edeb6b", - "reference": "421fec5bd96671931f2119a89d28bae2f9edeb6b", + "url": "https://api.github.com/repos/wp-cli/import-command/zipball/e28a7f55138ceb53f2ff5926874d8e5582c87db8", + "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8", "shasum": "" }, "require": { - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/export-command": "^1 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4760,41 +5144,59 @@ ], "description": "Imports content from a given WXR file.", "homepage": "https://github.com/wp-cli/import-command", - "time": "2018-04-20T08:07:05+00:00" + "time": "2019-04-19T14:32:57+00:00" }, { "name": "wp-cli/language-command", - "version": "v1.0.6", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/wp-cli/language-command.git", - "reference": "2a3d1ce5a722a4d70809619a065087aa933f6209" + "reference": "12197674eab3e1263fcadc9670cb57e916615c6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/language-command/zipball/2a3d1ce5a722a4d70809619a065087aa933f6209", - "reference": "2a3d1ce5a722a4d70809619a065087aa933f6209", + "url": "https://api.github.com/repos/wp-cli/language-command/zipball/12197674eab3e1263fcadc9670cb57e916615c6c", + "reference": "12197674eab3e1263fcadc9670cb57e916615c6c", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "language", "language core", "language core activate", + "language core is-installed", "language core install", "language core list", "language core uninstall", - "language core update" - ], - "bundled": true + "language core update", + "language plugin", + "language plugin is-installed", + "language plugin install", + "language plugin list", + "language plugin uninstall", + "language plugin update", + "language theme", + "language theme is-installed", + "language theme install", + "language theme list", + "language theme uninstall", + "language theme update" + ] }, "autoload": { "psr-4": { @@ -4817,30 +5219,90 @@ ], "description": "Installs, activates, and manages language packs.", "homepage": "https://github.com/wp-cli/language-command", - "time": "2017-12-08T17:50:26+00:00" + "time": "2019-04-25T00:31:43+00:00" + }, + { + "name": "wp-cli/maintenance-mode-command", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/maintenance-mode-command.git", + "reference": "db4671c14ea4c0c42f423a09cf8e9303778bb1a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/maintenance-mode-command/zipball/db4671c14ea4c0c42f423a09cf8e9303778bb1a4", + "reference": "db4671c14ea4c0c42f423a09cf8e9303778bb1a4", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/wp-cli-tests": "^2.1" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "maintenance-mode", + "maintenance-mode activate", + "maintenance-mode deactivate", + "maintenance-mode status", + "maintenance-mode is-active" + ] + }, + "autoload": { + "psr-4": { + "WP_CLI\\MaintenanceMode\\": "src/" + }, + "files": [ + "maintenance-mode-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Thrijith Thankachan", + "email": "thrijith13@gmail.com", + "homepage": "https://thrijith.com" + } + ], + "description": "Activates, deactivates or checks the status of the maintenance mode of a site.", + "homepage": "https://github.com/wp-cli/maintenance-mode-command", + "time": "2019-04-19T15:37:30+00:00" }, { "name": "wp-cli/media-command", - "version": "v1.1.4", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/media-command.git", - "reference": "7f8664ba722505446b3ef3dbc6717e8e7f20265c" + "reference": "68e2402dcef11ae10e8902cf93a1d370db07ed78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/media-command/zipball/7f8664ba722505446b3ef3dbc6717e8e7f20265c", - "reference": "7f8664ba722505446b3ef3dbc6717e8e7f20265c", + "url": "https://api.github.com/repos/wp-cli/media-command/zipball/68e2402dcef11ae10e8902cf93a1d370db07ed78", + "reference": "68e2402dcef11ae10e8902cf93a1d370db07ed78", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4871,7 +5333,7 @@ ], "description": "Imports files as attachments, regenerates thumbnails, or lists registered image sizes.", "homepage": "https://github.com/wp-cli/media-command", - "time": "2018-01-29T02:17:56+00:00" + "time": "2019-04-21T04:50:58+00:00" }, { "name": "wp-cli/mustangostang-spyc", @@ -4923,29 +5385,31 @@ }, { "name": "wp-cli/package-command", - "version": "v1.0.14", + "version": "v2.0.5", "source": { "type": "git", "url": "https://github.com/wp-cli/package-command.git", - "reference": "a7ce916de5e1d0c3d910d4fc8ca31928ee3775d3" + "reference": "52fea16f3cec0577b9c417a19ebc0f328c38d853" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/package-command/zipball/a7ce916de5e1d0c3d910d4fc8ca31928ee3775d3", - "reference": "a7ce916de5e1d0c3d910d4fc8ca31928ee3775d3", + "url": "https://api.github.com/repos/wp-cli/package-command/zipball/52fea16f3cec0577b9c417a19ebc0f328c38d853", + "reference": "52fea16f3cec0577b9c417a19ebc0f328c38d853", "shasum": "" }, "require": { - "composer/composer": "^1.2.0" + "composer/composer": ">=1.2.0 <1.7.0 || ^1.7.1", + "ext-json": "*", + "wp-cli/wp-cli": "^2.1" }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/scaffold-command": "^1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4978,7 +5442,7 @@ ], "description": "Lists, installs, and removes WP-CLI packages.", "homepage": "https://github.com/wp-cli/package-command", - "time": "2018-05-28T11:40:24+00:00" + "time": "2019-04-24T09:34:35+00:00" }, { "name": "wp-cli/php-cli-tools", @@ -5032,34 +5496,37 @@ }, { "name": "wp-cli/rewrite-command", - "version": "v1.0.5", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/rewrite-command.git", - "reference": "6b1695887e289ffad14c8f4ea86b5f1d92757408" + "reference": "eb8cbcf9c1c874a09b50257a0e588c31f29df597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/6b1695887e289ffad14c8f4ea86b5f1d92757408", - "reference": "6b1695887e289ffad14c8f4ea86b5f1d92757408", + "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/eb8cbcf9c1c874a09b50257a0e588c31f29df597", + "reference": "eb8cbcf9c1c874a09b50257a0e588c31f29df597", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "rewrite", "rewrite flush", "rewrite list", "rewrite structure" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5082,31 +5549,34 @@ ], "description": "Lists or flushes the site's rewrite rules, updates the permalink structure.", "homepage": "https://github.com/wp-cli/rewrite-command", - "time": "2017-12-08T17:51:04+00:00" + "time": "2019-04-25T00:32:04+00:00" }, { "name": "wp-cli/role-command", - "version": "v1.1.0", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/role-command.git", - "reference": "f50134ea9c27c108b1069cf044f7395c8f9bf716" + "reference": "c6071d06d64c165588734b0d1c96f5c3dfa75736" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/role-command/zipball/f50134ea9c27c108b1069cf044f7395c8f9bf716", - "reference": "f50134ea9c27c108b1069cf044f7395c8f9bf716", + "url": "https://api.github.com/repos/wp-cli/role-command/zipball/c6071d06d64c165588734b0d1c96f5c3dfa75736", + "reference": "c6071d06d64c165588734b0d1c96f5c3dfa75736", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "role", "role create", @@ -5118,8 +5588,7 @@ "cap add", "cap list", "cap remove" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5142,35 +5611,38 @@ ], "description": "Adds, removes, lists, and resets roles and capabilities.", "homepage": "https://github.com/wp-cli/role-command", - "time": "2018-04-20T08:05:51+00:00" + "time": "2019-04-25T00:32:18+00:00" }, { "name": "wp-cli/scaffold-command", - "version": "v1.2.0", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/scaffold-command.git", - "reference": "a897a54ba0a8199743d90204ff773b302fc77572" + "reference": "9c6450e9ccf2d032913fced69f3188bc8ec4e3e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/a897a54ba0a8199743d90204ff773b302fc77572", - "reference": "a897a54ba0a8199743d90204ff773b302fc77572", + "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/9c6450e9ccf2d032913fced69f3188bc8ec4e3e6", + "reference": "9c6450e9ccf2d032913fced69f3188bc8ec4e3e6", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ "scaffold", - "scaffold _s", + "scaffold underscores", "scaffold block", "scaffold child-theme", "scaffold plugin", @@ -5201,30 +5673,35 @@ ], "description": "Generates code for post types, taxonomies, blocks, plugins, child themes, etc.", "homepage": "https://github.com/wp-cli/scaffold-command", - "time": "2018-07-29T15:02:24+00:00" + "time": "2019-04-25T00:44:34+00:00" }, { "name": "wp-cli/search-replace-command", - "version": "v1.3.1", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/search-replace-command.git", - "reference": "be21639dc530ad6506664baa813862d39b6d78ba" + "reference": "7d02c54facf039577ff13c7b7bb100e4757d85fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/be21639dc530ad6506664baa813862d39b6d78ba", - "reference": "be21639dc530ad6506664baa813862d39b6d78ba", + "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/7d02c54facf039577ff13c7b7bb100e4757d85fd", + "reference": "7d02c54facf039577ff13c7b7bb100e4757d85fd", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -5252,37 +5729,37 @@ ], "description": "Searches/replaces strings in the database.", "homepage": "https://github.com/wp-cli/search-replace-command", - "time": "2018-05-29T10:21:19+00:00" + "time": "2019-04-25T00:32:46+00:00" }, { "name": "wp-cli/server-command", - "version": "v1.0.9", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/server-command.git", - "reference": "6192e6d7becd07e4c11a8f1560655c73a3b3526a" + "reference": "c900a1036c29991420296b66a14ed771245c61a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/server-command/zipball/6192e6d7becd07e4c11a8f1560655c73a3b3526a", - "reference": "6192e6d7becd07e4c11a8f1560655c73a3b3526a", + "url": "https://api.github.com/repos/wp-cli/server-command/zipball/c900a1036c29991420296b66a14ed771245c61a2", + "reference": "c900a1036c29991420296b66a14ed771245c61a2", "shasum": "" }, "require": { - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5" + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "server" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5305,37 +5782,37 @@ ], "description": "Launches PHP's built-in web server for a specific WordPress installation.", "homepage": "https://github.com/wp-cli/server-command", - "time": "2017-12-14T20:06:24+00:00" + "time": "2019-04-21T09:58:15+00:00" }, { "name": "wp-cli/shell-command", - "version": "v1.0.5", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/shell-command.git", - "reference": "507603a8994d984b6c4d5bd26e31ede6d9cce37e" + "reference": "56f0ff1bc36f6da2fb73cb932214adcde58270d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/507603a8994d984b6c4d5bd26e31ede6d9cce37e", - "reference": "507603a8994d984b6c4d5bd26e31ede6d9cce37e", + "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/56f0ff1bc36f6da2fb73cb932214adcde58270d8", + "reference": "56f0ff1bc36f6da2fb73cb932214adcde58270d8", "shasum": "" }, "require": { - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5" + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "shell" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5359,38 +5836,41 @@ ], "description": "Opens an interactive PHP console for running and testing PHP code.", "homepage": "https://github.com/wp-cli/shell-command", - "time": "2017-12-08T16:03:53+00:00" + "time": "2019-04-22T13:16:49+00:00" }, { "name": "wp-cli/super-admin-command", - "version": "v1.0.6", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/super-admin-command.git", - "reference": "2982d2e6514dbb318561d72d0577746a3a37181e" + "reference": "bd1543c9a3360d0e21d7e00e1c597964bd805d7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/2982d2e6514dbb318561d72d0577746a3a37181e", - "reference": "2982d2e6514dbb318561d72d0577746a3a37181e", + "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/bd1543c9a3360d0e21d7e00e1c597964bd805d7c", + "reference": "bd1543c9a3360d0e21d7e00e1c597964bd805d7c", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "super-admin", "super-admin add", "super-admin list", "super-admin remove" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5413,31 +5893,35 @@ ], "description": "Lists, adds, or removes super admin users on a multisite installation.", "homepage": "https://github.com/wp-cli/super-admin-command", - "time": "2017-12-08T17:43:53+00:00" + "time": "2019-04-20T20:47:36+00:00" }, { "name": "wp-cli/widget-command", - "version": "v1.0.5", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/widget-command.git", - "reference": "657e0f77d80c892f8f72f90a3a25112c254386df" + "reference": "58a1b2d2221cee852eb8a589535aaadb1217bb74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/657e0f77d80c892f8f72f90a3a25112c254386df", - "reference": "657e0f77d80c892f8f72f90a3a25112c254386df", + "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/58a1b2d2221cee852eb8a589535aaadb1217bb74", + "reference": "58a1b2d2221cee852eb8a589535aaadb1217bb74", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "widget", "widget add", @@ -5449,8 +5933,7 @@ "widget update", "sidebar", "sidebar list" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5473,113 +5956,137 @@ ], "description": "Adds, moves, and removes widgets; lists sidebars.", "homepage": "https://github.com/wp-cli/widget-command", - "time": "2017-12-08T17:45:57+00:00" + "time": "2019-04-25T00:25:21+00:00" }, { "name": "wp-cli/wp-cli", - "version": "v1.5.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/wp-cli/wp-cli.git", - "reference": "3aac73bc4d629372531f3e15bbb67945d19b5d5a" + "reference": "193f08f48585326bc1f1648349201531eeda2ee5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/3aac73bc4d629372531f3e15bbb67945d19b5d5a", - "reference": "3aac73bc4d629372531f3e15bbb67945d19b5d5a", + "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/193f08f48585326bc1f1648349201531eeda2ee5", + "reference": "193f08f48585326bc1f1648349201531eeda2ee5", "shasum": "" }, "require": { - "composer/composer": "^1.2.0", - "composer/semver": "~1.0", - "justinrainbow/json-schema": "~5.2.5", + "ext-curl": "*", "mustache/mustache": "~2.4", - "php": ">=5.3.29", - "ramsey/array_column": "~1.1", + "php": "^5.4 || ^7.0", "rmccue/requests": "~1.6", - "symfony/config": "^2.7|^3.0", - "symfony/console": "^2.7|^3.0", - "symfony/debug": "^2.7|^3.0", - "symfony/dependency-injection": "^2.7|^3.0", - "symfony/event-dispatcher": "^2.7|^3.0", - "symfony/filesystem": "^2.7|^3.0", - "symfony/finder": "^2.7|^3.0", - "symfony/process": "^2.1|^3.0", - "symfony/translation": "^2.7|^3.0", - "symfony/yaml": "^2.7|^3.0", - "wp-cli/autoload-splitter": "^0.1.5", - "wp-cli/cache-command": "^1.0", - "wp-cli/checksum-command": "^1.0", - "wp-cli/config-command": "^1.0", - "wp-cli/core-command": "^1.0", - "wp-cli/cron-command": "^1.0", - "wp-cli/db-command": "^1.0", - "wp-cli/embed-command": "^1.0", - "wp-cli/entity-command": "^1.0", - "wp-cli/eval-command": "^1.0", - "wp-cli/export-command": "^1.0", - "wp-cli/extension-command": "^1.0", - "wp-cli/import-command": "^1.0", - "wp-cli/language-command": "^1.0", - "wp-cli/media-command": "^1.0", + "symfony/finder": ">2.7", "wp-cli/mustangostang-spyc": "^0.6.3", - "wp-cli/package-command": "^1.0", - "wp-cli/php-cli-tools": "~0.11.2", - "wp-cli/rewrite-command": "^1.0", - "wp-cli/role-command": "^1.0", - "wp-cli/scaffold-command": "^1.0", - "wp-cli/search-replace-command": "^1.0", - "wp-cli/server-command": "^1.0", - "wp-cli/shell-command": "^1.0", - "wp-cli/super-admin-command": "^1.0", - "wp-cli/widget-command": "^1.0" + "wp-cli/php-cli-tools": "~0.11.2" }, "require-dev": { - "behat/behat": "2.5.*", - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3", - "phpunit/phpunit": "3.7.*", "roave/security-advisories": "dev-master", - "wimg/php-compatibility": "^8.0", - "wp-coding-standards/wpcs": "^0.13.1" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.2 || ^2", + "wp-cli/extension-command": "^1.1 || ^2", + "wp-cli/package-command": "^1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "suggest": { - "psy/psysh": "Enhanced `wp shell` functionality" + "ext-readline": "Include for a better --prompt implementation", + "ext-zip": "Needed to support extraction of ZIP archives when doing downloads or updates" }, "bin": [ - "bin/wp.bat", - "bin/wp" + "bin/wp", + "bin/wp.bat" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5.x-dev" - }, - "autoload-splitter": { - "splitter-logic": "WP_CLI\\AutoloadSplitter", - "splitter-location": "php/WP_CLI/AutoloadSplitter.php", - "split-target-prefix-true": "autoload_commands", - "split-target-prefix-false": "autoload_framework" + "dev-master": "2.1.x-dev" } }, "autoload": { "psr-0": { "WP_CLI": "php" - }, - "psr-4": { - "": "php/commands/src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The command line interface for WordPress", + "description": "WP-CLI framework", + "homepage": "https://wp-cli.org", + "keywords": [ + "cli", + "wordpress" + ], + "time": "2019-04-25T05:38:33+00:00" + }, + { + "name": "wp-cli/wp-cli-bundle", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/wp-cli-bundle.git", + "reference": "ddf9a236ef0d85fcc5336f8c87cebe0dd62ee81f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/wp-cli-bundle/zipball/ddf9a236ef0d85fcc5336f8c87cebe0dd62ee81f", + "reference": "ddf9a236ef0d85fcc5336f8c87cebe0dd62ee81f", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "wp-cli/cache-command": "^2", + "wp-cli/checksum-command": "^2", + "wp-cli/config-command": "^2", + "wp-cli/core-command": "^2", + "wp-cli/cron-command": "^2", + "wp-cli/db-command": "^2", + "wp-cli/embed-command": "^2", + "wp-cli/entity-command": "^2", + "wp-cli/eval-command": "^2", + "wp-cli/export-command": "^2", + "wp-cli/extension-command": "^2", + "wp-cli/i18n-command": "^2", + "wp-cli/import-command": "^2", + "wp-cli/language-command": "^2", + "wp-cli/maintenance-mode-command": "^2", + "wp-cli/media-command": "^2", + "wp-cli/package-command": "^2", + "wp-cli/rewrite-command": "^2", + "wp-cli/role-command": "^2", + "wp-cli/scaffold-command": "^2", + "wp-cli/search-replace-command": "^2", + "wp-cli/server-command": "^2", + "wp-cli/shell-command": "^2", + "wp-cli/super-admin-command": "^2", + "wp-cli/widget-command": "^2", + "wp-cli/wp-cli": "^2.2" + }, + "require-dev": { + "roave/security-advisories": "dev-master", + "wp-cli/wp-cli-tests": "^2.1" + }, + "suggest": { + "psy/psysh": "Enhanced `wp shell` functionality" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "WP-CLI bundle package with default commands.", "homepage": "https://wp-cli.org", "keywords": [ "cli", "wordpress" ], - "time": "2018-05-31T11:04:05+00:00" + "time": "2019-04-25T06:30:44+00:00" }, { "name": "wp-cli/wp-config-transformer", @@ -5629,10 +6136,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "~7.1" + "php": ">=7.2 <7.4" }, - "platform-dev": [], - "platform-overrides": { - "php": "7.1" - } + "platform-dev": [] } diff --git a/docs/changelog.md b/docs/changelog.md index 4b818bdb..0c74155c 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -3,6 +3,35 @@ description: WordHat project news and changelog WordHat does not yet support WordPress' new content editor (Gutenberg). The step definitions for creating content assume, and only work with, the classic WordPress editor. +## [3.3.0] - 2019-06-24 +### Added +- Suport for translations. + +### Changed +- WordHat now requires PHP 7.2+. There are no code changes at this point, so WordHat is still technically compatible with PHP 7.1. +- `ChromeDriver` is now the default suggested option, instead of a browser via Selenium. +- CI: use `ChromeDriver` instead of a browser via Selenium. +- Docs: general updates/corrections. + +### Fixed +- Drivers, WP-PHP: fix PHP notice when creating a user. +- Contexts, Content: fix inserting text into visual editor iframe for non-Selenium webdrivers. + +## [3.2.0] - 2019-06-05 +### Added +- CI: Run build checks on Travis-CI. + +### Changed +- Composer: update dependencies to latest constrained versions (#244). +- Composer, Dev Packages: switch `wp-cli` package to `wp-cli-bundle`. +- Mink: restart browser between scenarios instead of resetting (#245). +- Contexts, User: tick "remember me" when a user logs-in to WordPress (#245). + +### Fixed +- Update WordHat's internal tests for compatibility with recent versions of WordPress! +- Contexts, User: attempts made to improve intermittent failures with the log-in action (#47, #245). +- Drivers, WP-CLI: allow use of `page_template` when creating content (#239). + ## [3.1.2] - 2019-04-02 ### Fixed - Contexts, User: fix errors and exceptions caused by trying to log-out before a browser is open. @@ -215,6 +244,8 @@ WordHat does not yet support WordPress' new content editor (Gutenberg). The step ### Added - First working version of basic architecture. +[3.3.0]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.2.0...v3.3.0 +[3.2.0]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.1.2...v3.2.0 [3.1.2]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.1.1...v3.1.2 [3.1.1]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.1.0...v3.1.1 [3.1.0]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.0.0...v3.1.0 diff --git a/docs/contributing/build.md b/docs/contributing/build.md deleted file mode 100644 index f86fbca5..00000000 --- a/docs/contributing/build.md +++ /dev/null @@ -1,60 +0,0 @@ -description: Wordhat project information about build and continuous integration processes -# The build process and continuous integration - -There are two styles of build which WordHat uses. One is a native build where WordHat, Wordpress, Selenium and other tools are run directly on the native platform. The other is a docker build where docker containers are used to host Wordhat, Wordpress, Selenium and Mysql. - -## Making it work locally. - -The first thing you need to do is to [install](https://www.docker.com/get-docker) Docker. It is highly recommended that if you're on windows, you use [Docker Toolbox](https://download.docker.com/win/stable/DockerToolbox.exe) as its support for linux containers is significantly better than the Windows native docker. We'll keep trying it, and if that changes we'll update this page. - -Once you have docker installed, (and if you're running docker toolbox you've spun up a Docker terminal); simply clone the wordhat source, run `composer install` and then `vendor/bin/phing` and you'll be laughing. - - -## Making it work natively locally - -So maybe you've already got a wordpress installation locally that you'd like to use, and its running in a local webserver. That's cool - this is how to do it. You'll also need to set up your own Selenium server if you want to run the javascript tests. Firstly you'll need to create a file called `build/properties/local.yml`. Give it contents which are similar to the below, only with the values tweaked to suit your environemnt. - -```yaml -wordhat: - base-url: http://localhost:8080 - wd-host: localhost:4444/wd/hub - wp-cli-binary: c:\projects\wordhat\vendor\bin\wp - wp-path: c:\inetpub\wwwroot - db-restore: true - driver: wpcli -``` - -Once you've done that, do a `composer install` followed by `vendor/bin/phing -Dwordhat.runstyle=native -Dwordhat.ci-engine=local` and you should be laughing. - -## Helpful Phings - -We use phing to glue together all the tools we use to develop WordHat. We've only just got it set up, so if you find issues please do let us know either by raising an issue on GitHub or by jumping on our slack channel. Even though its early days, we've got some cool stuff setup to help you debug your WordHat contributions. - -### Docker tricks - -Firstly if your Docker run fails, we don't automatically clear up. This means the containers are all still there for you to inspect. If you'd like to get to a shell on the WordHat (which is also the WordPress) container, then simply run this command: - -``` -docker exec -it docker_wordpress_1 "/bin/bash" -``` - -If you need a root shell, then this command will do it: - -``` -docker exec -u root -it docker_wordpress_1 "/bin/bash" -``` - -If you'd like to set off another test run then: - -``` -docker exec -it docker_wordpress_1 "vendor/bin/phing behat:exec-tests" -``` - -And finally, when you've finished diagnosing, run: - -``` -vendor/bin/phing docker:stop docker:cleanup -``` - -and all the containers will be tidied away and their persistent storage deleted. - diff --git a/docs/features/overview.md b/docs/features/overview.md index 3fb864ee..d1c6cbad 100644 --- a/docs/features/overview.md +++ b/docs/features/overview.md @@ -5,7 +5,7 @@ WordHat provides WordPress-specific functionality for common testing scenarios t For convenience, our `behat.yml.dist` configuration template loads all of our contexts by default, though Behat does support [more complex configuration](http://behat.org/en/latest/user_guide/configuration/suites.html) for advanced use cases. -To find out which step definitions are available for your tests, run `vendor/bin/behat -dl` in your terminal. +To find out which step definitions are available for your tests, run `vendor/bin/behat --definitions i` in your terminal. ## Drivers @@ -45,7 +45,7 @@ The `SiteContext` context provides step definitions for activating/deactivating ### TinyMCE -The `EditPost` context provides step definitions to manage editing and creating content within wp-admin. +The `EditPost` context provides step definitions to manage editing and creating content within wp-admin. At time of writing, no support is yet provided for Gutenberg. ### Toolbar diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index e3231bd4..240e0f77 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -3,9 +3,9 @@ description: How to get install Behat, WordPress, and WordHat ## Requirements -WordHat requires [PHP](https://php.net/) (version 7.1+), [Composer](https://getcomposer.org/), and a [WordPress](https://wordpress.org/) site to test (version 4.8+). +WordHat requires [PHP](https://php.net/) (version 7.2+), [Composer](https://getcomposer.org/), and a [WordPress](https://wordpress.org/) site to test (version 4.8+). -We strongly recommend using [WP-CLI](https://wp-cli.org/)[^1] \(version 1.3.0+), and [Selenium](http://www.seleniumhq.org/)[^2] to help with browser automation. Selenium is fiddly to set up, so we recommend using [vvo/selenium-standalone](https://github.com/vvo/selenium-standalone#command-line-interface), which requires the [Java Platform JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html). +We recommend using [WP-CLI](https://wp-cli.org/)[^1] \(version 2.1.0+). ## Installation @@ -18,7 +18,7 @@ cd project
  • Tell Composer to download WordHat: -
    composer require --dev paulgibbs/behat-wordpress-extension behat/mink-goutte-driver behat/mink-selenium2-driver
    +
    composer require --dev paulgibbs/behat-wordpress-extension behat/mink-goutte-driver dmore/behat-chrome-extension
  • Copy WordHat's sample configuration file into your project folder and rename it: @@ -41,7 +41,7 @@ cd project
  • To confirm that everything is set up correctly, run: -
    vendor/bin/behat -dl
    +
    vendor/bin/behat --definitions i
    If it worked, you will see a list of text that looks a little like the following (but much longer):
    Given I am an anonymous user
     Given I am not logged in
    @@ -60,6 +60,3 @@ Now that you have WordHat set up, we recommend reading our [introduction to Beha
     
     [^1]:
         The WP-CLI executable *must* be named `wp` and be within your system's $PATH.
    -
    -[^2]:
    -    Selenium is recommended for testing websites that require Javascript. Behat requires the [Mink Selenium2 library](https://packagist.org/packages/behat/mink-selenium2-driver), which we include in the installation instructions above.
    diff --git a/docs/getting-started/wordhat-intro.md b/docs/getting-started/wordhat-intro.md
    index 7902e2d1..60df19b2 100644
    --- a/docs/getting-started/wordhat-intro.md
    +++ b/docs/getting-started/wordhat-intro.md
    @@ -10,7 +10,7 @@ Otherwise, if you are unsure how to proceed, first check the [FAQ](/recipes/faq.
     
     One of the fun things about using Behat is seeing it control your web browser and navigating your site. Behat relies on a library called [Mink](http://mink.behat.org/en/latest/) to interface with your web browser. Mink has its own driver system, with [each driver supporting a different combination of browser features](http://mink.behat.org/en/latest/guides/drivers.html#driver-feature-support).
     
    -Some Mink drivers run headless web browsers (e.g. Goutte), and these tend to be the fastest, though notably, most do not support Javascript. WordHat's sample configuration file is configured to use [Selenium](http://www.seleniumhq.org/), which supports a broad range of browser features for most use cases. Selenium is fiddly to set up, so we recommend using [vvo/selenium-standalone](https://github.com/vvo/selenium-standalone#command-line-interface).
    +Some Mink drivers run headless web browsers (e.g. Goutte), and these tend to be the fastest, though notably, most do not support Javascript. WordHat's sample configuration file is configured to use Google Chrome by default, which supports a broad range of browser features for most use cases.
     
     For tests requiring Javascript interactions, mark the scenario or feature with the `@javascript` [tag](http://behat.org/en/latest/user_guide/organizing.html#tags).
     
    diff --git a/docs/recipes/faq.md b/docs/recipes/faq.md
    index 9c561d88..de845397 100644
    --- a/docs/recipes/faq.md
    +++ b/docs/recipes/faq.md
    @@ -4,7 +4,7 @@ description: WordHat frequently asked questions and answers
     If you are new to the project or Behat, we recommend that you first [read through our documentation](https://wordhat.info/). For any questions, feedback, or to contribute, you can get in contact with us via Github or our [Slack](https://wordhat.herokuapp.com).
     
     ## Browsers
    -* If you are using [Selenium](http://docs.seleniumhq.org/download/) to run Javascript tests, and you access your WordPress site over HTTPS, *and* it has a self-signed certificate, you will need to manually configure the web browser to accept that certificate.
    +* If you are using [Selenium](http://docs.seleniumhq.org/download/) to run Javascript tests, and you access your WordPress site over HTTPS, *and* your site is using a self-signed HTTPS certificate, you will need to manually configure the web browser to accept that certificate.
     
     ## Drivers
     * If you are using the WP-CLI driver to [connect to a remote WordPress site over SSH](https://make.wordpress.org/cli/handbook/running-commands-remotely/), WordHat assumes the remote server is Linux-like, with a shell that provides [GNU Coreutils](https://www.gnu.org/software/coreutils/coreutils.html).
    @@ -13,13 +13,14 @@ If you are new to the project or Behat, we recommend that you first [read throug
     
     ## Selenium
     * On a Mac, Selenium is incompatible with the default Apple Java; error messages look like "Unsupported major.minor version 52.0". To fix, install [Oracle Java Platform JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html).
    -* With Selenium, some environments may require a "webdriver"; error messages may refer to "GeckoWebDriver" or "ChromeWebDriver", etc. Good solutions include [vvo/selenium-standalone](https://github.com/vvo/selenium-standalone#command-line-interface) or [joomla-projects/selenium-server-standalone](https://github.com/joomla-projects/selenium-server-standalone).
    +* Selenium is fiddly to set up, so we recommend using [vvo/selenium-standalone](https://github.com/vvo/selenium-standalone#command-line-interface) to install and run it.
     
     ## Supported platforms
    -* WordHat supports MacOS, most flavours of Linux, and Windows. We use [Travis-CI](https://travis-ci.org/paulgibbs/behat-wordpress-extension) and [Appveyor](https://ci.appveyor.com/project/PaulGibbs/behat-wordpress-extension) to test on Ubuntu and Windows, respectively, and require modern versions of PHP.
    +* WordHat supports MacOS, most flavours of Linux, and Windows. We use [Travis-CI](https://travis-ci.org/paulgibbs/behat-wordpress-extension) to test on Ubuntu, and require modern versions of PHP.
     
     ## Virtual machines (Vagrant)
     * If you are using a Vagrant-powered virtual machine to run Behat via the [WP-CLI driver](../features/overview.html#wp-cli), you will need to `vagrant ssh` into the box once. This will set up password-less authentication; otherwise, WordHat will prompt you for the SSH password frequently.
    +* If you are using the WP-CLI driver to [connect to a Vagrant-powered WordPress site over SSH](https://make.wordpress.org/cli/handbook/running-commands-remotely/), you will probably have better performance by switching to use the WP-PHP driver. This is because [WP-CLI is slow at opening SSH connections to Vagrant boxes](https://github.com/wp-cli/wp-cli/pull/5235).
     
     ## WordPress
    -* If your WordPress is installed in a subdirectory, you need to set the `site_url` option to the value of the "WordPress address (URL)" option (found in WordPress > Settings > General). For more information, [consult the WordHat documentation](/configuration/settings.md).
    +* If your WordPress is installed in a subdirectory, you need to set the `site_url` option to the value of the "WordPress address (URL)" option (found in WordPress > Settings > General). For more information, [consult the WordHat documentation](/configuration/settings.html).
    diff --git a/features/toolbar.feature b/features/toolbar.feature
    index 1db48649..cf19e9b7 100644
    --- a/features/toolbar.feature
    +++ b/features/toolbar.feature
    @@ -9,7 +9,7 @@ Feature: Toolbar
         And I am on the homepage
     
       Scenario: I can go to the support forums
    -    When I follow the toolbar link "WordPress > Support Forums"
    +    When I follow the toolbar link "WordPress > Support"
         Then I should be on "https://wordpress.org/support/"
     
       Scenario: I can add a new page
    diff --git a/i18n/template.xliff b/i18n/template.xliff
    new file mode 100644
    index 00000000..fbacb4a4
    --- /dev/null
    +++ b/i18n/template.xliff
    @@ -0,0 +1,383 @@
    +
    +
    +  
    +    
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        [^"]+)"$/]]>
    +        
    +      
    +      
    +        [^"]+)"$/]]>
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        (?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" with "(?P(?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" with:$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" for "(?P(?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" from "(?P(?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        [^"]*)" to "(?P(?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        [^"]+)"$/]]>
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        "(?:[^"]|\\")*")$/]]>
    +        
    +      
    +      
    +        \d+)$/]]>
    +        
    +      
    +      
    +        \d+)$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        "(?:[^"]|\\")*")$/]]>
    +        
    +      
    +      
    +        "(?:[^"]|\\")*")$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" in the "(?P[^"]*)" element$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" in the "(?P[^"]*)" element$/]]>
    +        
    +      
    +      
    +        [^"]*)" element should contain "(?P(?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        [^"]*)" element should not contain "(?P(?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        [^"]*)" element$/]]>
    +        
    +      
    +      
    +        [^"]*)" element$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" field should contain "(?P(?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" field should not contain "(?P(?:[^"]|\\")*)"$/]]>
    +        
    +      
    +      
    +        \d+) "(?P[^"]*)" elements?$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" checkbox should be checked$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" checkbox is checked$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" (?:is|should be) checked$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" checkbox should (?:be unchecked|not be checked)$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" checkbox is (?:unchecked|not checked)$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" should (?:be unchecked|not be checked)$/]]>
    +        
    +      
    +      
    +        (?:[^"]|\\")*)" is (?:unchecked|not checked)$/]]>
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        [^"]*)"$/]]>
    +        
    +      
    +      
    +        [^"]*)"$/]]>
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +      
    +        
    +        
    +      
    +    
    +  
    +
    diff --git a/mkdocs.yml b/mkdocs.yml
    index 4cf351bc..8651ad3e 100644
    --- a/mkdocs.yml
    +++ b/mkdocs.yml
    @@ -87,7 +87,6 @@ nav:
           - Errors W800-899: recipes/errors/w800-899.md
       - Open Source:
         - Contributing: contributing/open-source.md
    -    - Build Process: contributing/build.md
         - Credits: credits.md
         - License: license.md
       - News: changelog.md
    diff --git a/readme.md b/readme.md
    index 4d3fafcd..eccdf925 100644
    --- a/readme.md
    +++ b/readme.md
    @@ -1,6 +1,6 @@
     # WordHat: Behat for WordPress
     
    -WordHat is an integration layer between [Behat](http://behat.org), [Mink](https://github.com/Behat/MinkExtension), and [WordPress](https://wordpress.org). It provides WordPress-specific functionality for common testing scenarios specific to WordPress sites.
    +WordHat is a [Behat](http://behat.org) extension for [WordPress](https://wordpress.org). It provides WordPress-specific functionality for common testing scenarios specific to WordPress sites.
     
     [![Build Status on Travis-CI](https://travis-ci.com/paulgibbs/behat-wordpress-extension.svg?branch=master)](https://travis-ci.com/paulgibbs/behat-wordpress-extension)
     [![Latest Stable Version](https://poser.pugx.org/paulgibbs/behat-wordpress-extension/v/stable.svg)](https://packagist.org/packages/paulgibbs/behat-wordpress-extension)
    diff --git a/scripts/extract-translations.sh b/scripts/extract-translations.sh
    new file mode 100755
    index 00000000..7573d95c
    --- /dev/null
    +++ b/scripts/extract-translations.sh
    @@ -0,0 +1,47 @@
    +#!/bin/bash
    +
    +IFS=$'\n' BEHAT_STEPS=($(vendor/bin/behat --definitions l --no-colors))
    +XLIFF_OUTPUT=template.xliff
    +
    +# Replace all non-alnum characters with a hypen.
    +function sanitise() {
    +  local name="$1"
    +  name="${name//[^[:alnum:]]/-}"
    +
    +  # Convert to lowercase, strip repeated hypens.
    +  echo "$name" | tr -s '[:upper:]' '[:lower:]' | tr -s '-'
    +}
    +
    +# Header.
    +(cat <