From 35af3b8101a216e87873220be9432ee35a80a1eb Mon Sep 17 00:00:00 2001 From: Michiel Dethmers Date: Wed, 12 May 2021 09:08:52 +0100 Subject: [PATCH] Add github action to build the phpList package for release (#763) * create composer.json with the required dependencies * put things in the right place with davidbarratt/custom-installer * add updater * add script to install plugin code * add some plugins * use bramleys version * update dependency * allow plugins from other vendors * add some more plugins * add some more plugins * ignore updater * rsync instead of mv * add bash script to run tests, meant to be run inside a docker container * flush privileges on login creation * add selenium drivers * run the tests * add Dockerfile for release verification * add behat file * test upload to S3 action * on tag of release * typo * add token to avoid rate limiting * on second step as well * upload to folder * use ssh key for github auth * try the http-auth way * fix php version * the theme is now installed with composer * selenium drivers are set up with composer * comment "debug step" that's failing * do not ignore composer.lock * try a new action * fix bucket name * update region * add workflow to build a release * copy test to test folder * lock php version * remove debug output * use var for the bucket * parse the version from the tag * switch to latest ubuntu * check s3cmd on 18.04 * go back to 18.04 * run as sudo * put folder back to avoid confusion * use RELEASE_VERSION * fix path * tidy up the zip files, to reduce size * put the zips in a different bucket * install plugins as a seperate step, as Composer skips it * show github ref * install required tools * avoid annoying incompatibility * go back to 18.04, there's a weird issue on mysql commandline in 20.04 * discover rsync location * remove trigger on test action * trigger the release build on tagging a new version * parse off the v of the version, to follow previous convention * remove failing PHP versions * update some files with the new version * typo --- .github/workflows/build-release.yml | 192 ++ .github/workflows/main.yml | 47 +- .github/workflows/s3upload-test.yml | 31 + .gitignore | 2 +- Dockerfile | 31 + composer.json | 105 +- composer.lock | 3970 +++++++++++++++++++++++++++ scripts/install-plugins.sh | 12 + scripts/run-tests.sh | 31 + tests/Makefile | 2 +- tests/behat.yml | 73 + 11 files changed, 4471 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/build-release.yml create mode 100644 .github/workflows/s3upload-test.yml create mode 100644 Dockerfile create mode 100644 composer.lock create mode 100755 scripts/install-plugins.sh create mode 100755 scripts/run-tests.sh create mode 100644 tests/behat.yml diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml new file mode 100644 index 000000000..e63ec8f21 --- /dev/null +++ b/.github/workflows/build-release.yml @@ -0,0 +1,192 @@ + +name: Build Release + +on: + push: + tags: v[1-9]+.[0-9]+.* + +jobs: + test: + runs-on: ubuntu-18.04 + continue-on-error: ${{ matrix.experimental }} + + strategy: + fail-fast: false + matrix: + php-version: ['7.4'] + experimental: [false] + + steps: + - uses: actions/checkout@v2 + + - name: Find the version + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV + + - name: Show the discovered version + run: | + echo $RELEASE_VERSION + echo ${{ env.RELEASE_VERSION }} + echo $GITHUB_REF + echo ${{ env.GITHUB_REF }} + + - name: Set up PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Setup Packages + run: | + cd $GITHUB_WORKSPACE + sudo apt update && sudo apt install -y rsync + + - name: Cache Composer dependencies + uses: actions/cache@v2 + with: + path: /tmp/composer-cache + key: ${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }} + + - name: Install dependencies + uses: php-actions/composer@v5 + with: + dev: yes + args: --prefer-dist --no-interaction + php_version: 7.4 + php_extensions: xml + version: 2 + + - name: Install Plugins + run: | + cd $GITHUB_WORKSPACE + ./scripts/install-plugins.sh vendor public_html/lists/admin/plugins/ + + - name: Create Database + run: | + sudo systemctl start mysql.service + sudo mysql -proot -e 'drop database if exists phplistdb' + sudo mysqladmin -proot create phplistdb + sudo mysql -proot -e 'grant all on phplistdb.* to phplist@localhost identified by "phplist"' + + - name: Start Test Server + run: | + cd $GITHUB_WORKSPACE + cp -fv tests/default.behat.yml tests/behat.yml + cp -fv tests/ci/config.php public_html/lists/config/config.php + mkdir -p output/screenshots + mkdir -p build/mails + ./bin/start-selenium > output/selenium.log 2>&1 & + sleep 5 + sudo php -S 0.0.0.0:80 -t public_html > /dev/null 2>&1 & + + - name: Check PHP syntax errors + uses: overtrue/phplint@2.3.5 + with: + path: ./public_html + + - name: Report Versions + run: | + google-chrome --version + php -v + chromedriver -v + geckodriver -V + which geckodriver + which chromedriver + which rsync + rsync --version + firefox -v + vendor/bin/behat -V + + - name: Run BDD Tests + run: | + cd $GITHUB_WORKSPACE/tests + ../vendor/bin/behat -n -fprogress -p chrome --strict --stop-on-failure --tags=@initialise + ../vendor/bin/behat -n -fprogress -p chrome --strict --stop-on-failure --tags="~@initialise && ~@wip" + + - name: Clean Up + run: | + cd $GITHUB_WORKSPACE + cd .. + mv phplist3 phplist-$RELEASE_VERSION + sudo find . -type d -exec chmod 755 {} \; + sudo find . -type f -exec chmod 644 {} \; + cd phplist-$RELEASE_VERSION + chmod 777 public_html/lists/admin/plugins + cat public_html/lists/admin/init.php | tr '\n' '\r' | sed 's~//## remove on rollout.*//## end remove on rollout ###~define("VERSION","'${RELEASE_VERSION}'");~' | tr '\r' '\n' > /tmp/$$.init + mv -f /tmp/$$.init public_html/lists/admin/init.php + sed -i s~define\(\'STRUCTUREVERSION\'.*~define\(\'STRUCTUREVERSION\',\"${RELEASE_VERSION}\"\)\;~ public_html/lists/admin/structure.php + sed -i s/^VERSION=/VERSION=${RELEASE_VERSION}/ VERSION + + cd .. + zip -rq9 phplist-${RELEASE_VERSION}.zip phplist-${RELEASE_VERSION} + tar cf phplist-${RELEASE_VERSION}.tar phplist-${RELEASE_VERSION} + + remove=( + default.behat.yml + TESTING.md + .dotgitlab-ci.yml + .travis.yml + composer.json + composer.lock + .git + .github + .php_cs + .gitmodules + Dockerfile + Vagrantfile + .styleci.yml + .gitignore + .gitsvnextmodules + tests + output.log + output + build + .phplist-cache + docker_tag + vendor + public_html/lists/admin/tests + scripts + bin/start-selenium + bin/fake-sendmail.sh + bin/imgur-uploader.sh + public_html/lists/base/tests + public_html/lists/base/.htaccess + public_html/lists/base/phpunit.xml.dist + public_html/lists/base/composer.lock + public_html/lists/base/composer.json + public_html/lists/base/CODE_OF_CONDUCT.md + public_html/lists/admin/ui/default + ) + + for item in ${remove[@]}; do + [[ -f phplist-$RELEASE_VERSION/$item ]] && { + tar -vf phplist-${RELEASE_VERSION}.tar --delete phplist-$RELEASE_VERSION/$item + zip -d phplist-${RELEASE_VERSION}.zip phplist-$RELEASE_VERSION/$item + } + [[ -d phplist-$RELEASE_VERSION/$item ]] && { + tar -vf phplist-${RELEASE_VERSION}.tar --delete phplist-$RELEASE_VERSION/$item + zip -d phplist-${RELEASE_VERSION}.zip phplist-$RELEASE_VERSION/$item/\* + } + done + + gzip phplist-${RELEASE_VERSION}.tar + mv phplist-${RELEASE_VERSION}.tar.gz phplist-${RELEASE_VERSION}.tgz + + md5sum phplist-${RELEASE_VERSION}.* > phplist-${RELEASE_VERSION}.md5 + sha256sum phplist-${RELEASE_VERSION}.* > phplist-${RELEASE_VERSION}.sha256 + sha1sum phplist-${RELEASE_VERSION}.* > phplist-${RELEASE_VERSION}.sha1 + ls -l + mv phplist-$RELEASE_VERSION phplist3 + cd $GITHUB_WORKSPACE + + - name: Set up S3cmd cli tool + uses: s3-actions/s3cmd@v1.1 + with: + provider: aws + region: 'us-east-1' + access_key: ${{ secrets.AWS_KEY_ID }} + secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + - name: Upload the files + run: | + cd .. + s3cmd put phplist-${RELEASE_VERSION}.* s3://${{ secrets.AWS_S3_VERSIONS_BUCKET }}/ + s3cmd put phplist3/public_html/lists/admin/images/power-phplist.png s3://${{ secrets.AWS_S3_POWERED_BUCKET }}/images/${RELEASE_VERSION}/ \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 748eb051a..6cbdb1c33 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,13 +11,11 @@ jobs: strategy: fail-fast: false matrix: - php-version: ['7.1', '7.2', '7.3', '7.4'] + php-version: ['7.2', '7.3', '7.4'] experimental: [false] include: - php-version: '8.0' experimental: true - - php-version: '7.0' - experimental: true steps: - uses: actions/checkout@v2 @@ -26,6 +24,8 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} + env: + COMPOSER_TOKEN: ${{ secrets.COMPOSER_TOKEN }} - name: Setup Packages run: | @@ -38,11 +38,17 @@ jobs: path: /tmp/composer-cache key: ${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }} + - name: Add HTTP basic auth credentials + run: echo '${{ secrets.COMPOSER_AUTH_JSON }}' > $GITHUB_WORKSPACE/auth.json + - name: Install dependencies uses: php-actions/composer@v5 with: dev: yes args: --prefer-dist --no-interaction + php_version: 7.4 + php_extensions: xml + version: 2 - name: Create Database run: | @@ -51,13 +57,13 @@ jobs: sudo mysqladmin -proot create phplistdb sudo mysql -proot -e 'grant all on phplistdb.* to phplist@"%" identified by "phplist"' - - name: Set bootlist theme - run: | - cd $GITHUB_WORKSPACE/public_html/lists/admin/ui/ - wget https://github.com/phpList/phplist-ui-bootlist/archive/master.tar.gz - tar -xzf master.tar.gz - mv phplist-ui-bootlist-master phplist-ui-bootlist - rm master.tar.gz + # - name: Set bootlist theme + # run: | + # cd $GITHUB_WORKSPACE/public_html/lists/admin/ui/ + # wget https://github.com/phpList/phplist-ui-bootlist/archive/master.tar.gz + # tar -xzf master.tar.gz + # mv phplist-ui-bootlist-master phplist-ui-bootlist + # rm master.tar.gz - name: Start Test Server run: | @@ -75,17 +81,16 @@ jobs: with: path: ./public_html - - name: Report Versions - run: | - google-chrome --version - php -v - chromedriver -v - geckodriver -V - which geckodriver - which chromedriver - firefox -v - vendor/bin/behat -V - cd vendor/bin/ && sudo ln -s /usr/bin/chromedriver && sudo ln -s /usr/bin/geckodriver + # - name: Report Versions + # run: | + # google-chrome --version + # php -v + # chromedriver -v + # geckodriver -V + # which geckodriver + # which chromedriver + # firefox -v + # vendor/bin/behat -V - name: Run BDD Tests run: | diff --git a/.github/workflows/s3upload-test.yml b/.github/workflows/s3upload-test.yml new file mode 100644 index 000000000..3be6df8fd --- /dev/null +++ b/.github/workflows/s3upload-test.yml @@ -0,0 +1,31 @@ + + +name: Upload to S3 + +on: + push: + tags: testing-[1-9]+.[0-9]+.[0-9]+ + +jobs: + upload: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@master + # - uses: shallwefootball/s3-upload-action@master + # with: + # aws_key_id: ${{ secrets.AWS_KEY_ID }} + # aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}} + # aws_bucket: ${{ secrets.AWS_BUCKET }} + # source_dir: 'doc' + # destination_dir: '/test' + - name: Set up S3cmd cli tool + uses: s3-actions/s3cmd@v1.1 + with: + provider: aws # default is linode + region: 'us-east-1' + access_key: ${{ secrets.AWS_KEY_ID }} + secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + - name: Interact with object storage + run: | + s3cmd sync --recursive --acl-public doc s3://powered.phplist/test/ + s3cmd info s3://powered.phplist \ No newline at end of file diff --git a/.gitignore b/.gitignore index e124a480e..8b3a829c4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ /.svn/ /plugins vendor/ -composer.lock /behat.yml .php_cs.cache /.idea/ @@ -11,3 +10,4 @@ public_html/lists/admin/info/ /build .DS_Store .vagrant +/updater diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..1650d3d96 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ + +FROM debian:buster-slim + +LABEL maintainer="michiel@phplist.com" + +RUN apt -y update && apt -y upgrade + +RUN apt install -y -qq postfix + +RUN apt install -y php-cli mariadb-server bash sudo composer git php-curl php-mysqli php-dom make firefox-esr wget +## otherwise jdk fails, https://github.com/geerlingguy/ansible-role-java/issues/64 +RUN mkdir -p /usr/share/man/man1 +RUN apt install -y default-jdk + +RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && apt -y install ./google-chrome-stable_current_amd64.deb + +## debugging utils, that can be removed once it works +RUN apt install -y vim curl telnet psutils + +RUN useradd -m -s /bin/bash -d /home/phplist phplist + +COPY . /var/www/phplist3 +RUN chown -R phplist: /var/www +USER phplist +WORKDIR /var/www/phplist3/ +RUN rm -rf vendor + + +ENTRYPOINT [ "./scripts/run-tests.sh" ] + +#ENTRYPOINT [ "/bin/bash" ] diff --git a/composer.json b/composer.json index 81523cee0..a72b89dfc 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "phplist/phplist3", - "description": "The world's most popular open source newsletter manager", + "description": "The world's most popular Open Source Newsletter Manager", "keywords": [ "phplist", "email", @@ -17,8 +17,109 @@ "source": "https://github.com/phpList/phpList3" }, "minimum-stability": "dev", + "repositories": [ + { + "type": "composer", + "url": "https://repo.packagist.org" + }, + { + "type": "vcs", + "url": "https://github.com/phpList/phplist-ui-bootlist" + }, + { + "type": "vcs", + "url": "https://github.com/phpList/phplist-lan-help" + }, + { + "type": "vcs", + "url": "https://github.com/phpList/phplist-lan-info" + }, + { + "type": "vcs", + "url": "https://github.com/phpList/updater" + }, + { + "type": "vcs", + "url": "https://github.com/phpList/phplist-plugin-invite.git" + }, + { + "type": "vcs", + "url": "https://github.com/bramley/phplist-plugin-common.git" + }, + { + "type": "vcs", + "url": "https://github.com/bramley/phplist-plugin-captcha.git" + }, + { + "type": "vcs", + "url": "https://github.com/bramley/phplist-plugin-ckeditor.git" + }, + { + "type": "vcs", + "url": "https://github.com/bramley/phplist-plugin-segment.git" + }, + { + "type": "vcs", + "url": "https://github.com/michield/phplist-plugin-campaignslicer.git" + }, + { + "type": "vcs", + "url": "https://github.com/michield/phplist-plugin-dateplaceholder.git" + }, + { + "type": "vcs", + "url": "https://github.com/michield/phplist-plugin-disposablemailblock.git" + }, + { + "type": "vcs", + "url": "https://github.com/michield/phplist-plugin-domainthrottlemap.git" + }, + { + "type": "vcs", + "url": "https://github.com/michield/phplist-plugin-embedremoteimages.git" + }, + { + "type": "vcs", + "url": "https://github.com/phplist/phplist-plugin-subjectLinePlaceholdersPlugin.git" + } + ], + "extra": { + "custom-installer": { + "vendor/{$vendor}/{$name}/": ["type:library"], + "public_html/lists/admin/ui/{$name}": ["phplist/phplist-ui-bootlist"], + "public_html/lists/admin/help": ["phplist/phplist-lan-help"], + "public_html/lists/admin/info": ["phplist/phplist-lan-info"], + "public_html/lists/updater": ["phplist/updater"] + } + }, + "scripts": { + "post-install-cmd": [ + "php -r \"system('scripts/install-plugins.sh vendor public_html/lists/admin/plugins/'); \"" + ], + "post-update-cmd": [ + "php -r \"system('scripts/install-plugins.sh vendor public_html/lists/admin/plugins/'); \"" + ] + }, "require": { - "php": ">=7.0" + "php": ">=7.0", + "davidbarratt/custom-installer": "@stable", + "phplist/phplist-ui-bootlist": "@stable", + "phplist/phplist-lan-help": "@stable", + "phplist/phplist-lan-info": "@stable", + "phplist/updater": "@stable", + "phplist/phplist-plugin-invite": "dev-master", + "michield/phplist-plugin-campaignslicer": "dev-master", + "michield/phplist-plugin-dateplaceholder": "dev-master", + "michield/phplist-plugin-disposablemailblock": "dev-master", + "michield/phplist-plugin-domainthrottlemap": "dev-master", + "michield/phplist-plugin-embedremoteimages": "dev-master", + "bramley/phplist-plugin-common": "dev-master", + "bramley/phplist-plugin-captcha": "dev-master", + "bramley/phplist-plugin-ckeditor": "dev-master", + "bramley/phplist-plugin-segment": "dev-master", + "phplist/phplist-plugin-subjectlineplaceholders": "dev-master", + "enm1989/geckodriver": "^0.20.0", + "enm1989/chromedriver": "^90.0" }, "require-dev": { "behat/mink": "@stable", diff --git a/composer.lock b/composer.lock new file mode 100644 index 000000000..48ab6fd74 --- /dev/null +++ b/composer.lock @@ -0,0 +1,3970 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "edd6049c72cfce617ba30a406f564676", + "packages": [ + { + "name": "bramley/phplist-plugin-captcha", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/bramley/phplist-plugin-captcha.git", + "reference": "94c14ba8c2fddc3ccf050ecb0cfd65ab862d6afd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bramley/phplist-plugin-captcha/zipball/94c14ba8c2fddc3ccf050ecb0cfd65ab862d6afd", + "reference": "94c14ba8c2fddc3ccf050ecb0cfd65ab862d6afd", + "shasum": "" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "CAPTCHA plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "source": "https://github.com/bramley/phplist-plugin-captcha/tree/2.2.1", + "issues": "https://github.com/bramley/phplist-plugin-captcha/issues" + }, + "time": "2021-04-28T04:54:34+00:00" + }, + { + "name": "bramley/phplist-plugin-ckeditor", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/bramley/phplist-plugin-ckeditor.git", + "reference": "6537a10930bae9f8c53c3c100f3ee52bb0b39653" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bramley/phplist-plugin-ckeditor/zipball/6537a10930bae9f8c53c3c100f3ee52bb0b39653", + "reference": "6537a10930bae9f8c53c3c100f3ee52bb0b39653", + "shasum": "" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "CKEditor plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "source": "https://github.com/bramley/phplist-plugin-ckeditor/tree/2.6.2", + "issues": "https://github.com/bramley/phplist-plugin-ckeditor/issues" + }, + "time": "2021-04-28T04:42:05+00:00" + }, + { + "name": "bramley/phplist-plugin-common", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/bramley/phplist-plugin-common.git", + "reference": "d1ed8a8452a0878f5de784dc7a52fc5cea7510e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bramley/phplist-plugin-common/zipball/d1ed8a8452a0878f5de784dc7a52fc5cea7510e4", + "reference": "d1ed8a8452a0878f5de784dc7a52fc5cea7510e4", + "shasum": "" + }, + "require": { + "chdemko/bitarray": "1.0.0", + "jasongrimes/paginator": "1.0.2", + "jdorn/sql-formatter": "^1.2", + "jmathai/php-multi-curl": "dev-master", + "katzgrau/klogger": "1.2.0", + "mouf/picotainer": "1.1.0", + "pelago/emogrifier": "^3.1", + "psr/log": "1.0.0", + "symfony/css-selector": "^3.0", + "symfony/filesystem": "3.4" + }, + "default-branch": true, + "type": "phplist-plugin", + "autoload": { + "classmap": [ + "plugins/CommonPlugin/vendor/chdemko/bitarray/src", + "plugins/CommonPlugin/vendor/container-interop/container-interop/src", + "plugins/CommonPlugin/vendor/ext/", + "plugins/CommonPlugin/vendor/katzgrau/klogger/src", + "plugins/CommonPlugin/vendor/mouf/picotainer/src", + "plugins/CommonPlugin/vendor/pelago/emogrifier/src", + "plugins/CommonPlugin/vendor/psr/container/src", + "plugins/CommonPlugin/vendor/psr/log/Psr", + "plugins/CommonPlugin/vendor/symfony/css-selector", + "plugins/CommonPlugin/vendor/symfony/filesystem", + "plugins/CommonPlugin/vendor/crossjoin/css/src/Crossjoin/Css/", + "plugins/CommonPlugin/vendor/crossjoin/pre-mailer/src/Crossjoin/PreMailer/" + ], + "exclude-from-classmap": [ + "plugins/CommonPlugin/vendor/psr/log/Psr/Log/Test/" + ] + }, + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "Common plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "source": "https://github.com/bramley/phplist-plugin-common/tree/3.15.5", + "issues": "https://github.com/bramley/phplist-plugin-common/issues" + }, + "time": "2021-04-28T04:35:00+00:00" + }, + { + "name": "bramley/phplist-plugin-segment", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/bramley/phplist-plugin-segment.git", + "reference": "66e428f663a925c7059e0887dedf46da0732c968" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bramley/phplist-plugin-segment/zipball/66e428f663a925c7059e0887dedf46da0732c968", + "reference": "66e428f663a925c7059e0887dedf46da0732c968", + "shasum": "" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "Campaign segment plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "source": "https://github.com/bramley/phplist-plugin-segment/tree/2.12.1", + "issues": "https://github.com/bramley/phplist-plugin-segment/issues" + }, + "time": "2021-04-28T04:46:21+00:00" + }, + { + "name": "chdemko/bitarray", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/chdemko/php-bitarray.git", + "reference": "e7627033c8ed5198da16373ac120c759732a6711" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chdemko/php-bitarray/zipball/e7627033c8ed5198da16373ac120c759732a6711", + "reference": "e7627033c8ed5198da16373ac120c759732a6711", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpdocumentor/phpdocumentor": "2.5.*@dev", + "satooshi/php-coveralls": "dev-master" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "chdemko\\BitArray\\": "src/BitArray" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "CECILL-B" + ], + "authors": [ + { + "name": "Christophe Demko", + "email": "chdemko@gmail.com", + "homepage": "http://chdemko.com", + "role": "Developer" + } + ], + "description": "BitArray for PHP >= 5.4", + "homepage": "http://github.com/chdemko/php-bitarray", + "keywords": [ + "array", + "bits", + "iterator" + ], + "support": { + "issues": "https://github.com/chdemko/php-bitarray/issues", + "source": "https://github.com/chdemko/php-bitarray/tree/master" + }, + "time": "2014-06-18T12:21:40+00:00" + }, + { + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "support": { + "issues": "https://github.com/container-interop/container-interop/issues", + "source": "https://github.com/container-interop/container-interop/tree/master" + }, + "abandoned": "psr/container", + "time": "2017-02-14T19:40:03+00:00" + }, + { + "name": "davidbarratt/custom-installer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/davidbarratt/custom-installer.git", + "reference": "b7300b374697dc09a2b9e4934b13f54f6d541dbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/davidbarratt/custom-installer/zipball/b7300b374697dc09a2b9e4934b13f54f6d541dbb", + "reference": "b7300b374697dc09a2b9e4934b13f54f6d541dbb", + "shasum": "" + }, + "require": { + "composer-plugin-api": "~1 || ~2" + }, + "require-dev": { + "composer/composer": "~1.0@dev || ~2.0@dev", + "phpunit/phpunit": "~4.1", + "squizlabs/php_codesniffer": "~2.5" + }, + "type": "composer-plugin", + "extra": { + "class": "DavidBarratt\\CustomInstaller\\CustomInstallerPlugin" + }, + "autoload": { + "psr-4": { + "DavidBarratt\\CustomInstaller\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Install custom types into custom locations.", + "homepage": "https://github.com/davidbarratt/custom-installer", + "support": { + "issues": "https://github.com/davidbarratt/custom-installer/issues", + "source": "https://github.com/davidbarratt/custom-installer/tree/1.1.0" + }, + "time": "2020-12-11T16:40:39+00:00" + }, + { + "name": "enm1989/chromedriver", + "version": "90.0", + "source": { + "type": "git", + "url": "https://github.com/ENM1989/chromedriver.git", + "reference": "4e837b62ae23f257a87b6bb6d1d139bec9a03ce1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ENM1989/chromedriver/zipball/4e837b62ae23f257a87b6bb6d1d139bec9a03ce1", + "reference": "4e837b62ae23f257a87b6bb6d1d139bec9a03ce1", + "shasum": "" + }, + "bin": [ + "bin/chromedriver" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Nico Müller", + "email": "nico.mueller.1989@googlemail.com" + } + ], + "description": "Composer distribution of Chromedriver. Adds a executable to your composer bin directory.", + "homepage": "https://github.com/ENM1989/chromedriver", + "keywords": [ + "Chromedriver", + "chrome", + "selenium", + "webdriver" + ], + "support": { + "issues": "https://github.com/ENM1989/chromedriver/issues", + "source": "https://github.com/ENM1989/chromedriver/tree/90.0" + }, + "time": "2021-04-26T07:50:22+00:00" + }, + { + "name": "enm1989/geckodriver", + "version": "0.20", + "source": { + "type": "git", + "url": "https://github.com/ENM1989/geckodriver.git", + "reference": "1039a26aaa5de92bb6c136697650ed401448fef8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ENM1989/geckodriver/zipball/1039a26aaa5de92bb6c136697650ed401448fef8", + "reference": "1039a26aaa5de92bb6c136697650ed401448fef8", + "shasum": "" + }, + "bin": [ + "bin/geckodriver" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MPL-2.0" + ], + "authors": [ + { + "name": "Nico Müller", + "email": "nico.mueller.1989@googlemail.com" + } + ], + "description": "Composer distribution of Geckodriver. Adds a executable to your composer bin directory.", + "homepage": "https://github.com/ENM1989/geckodriver", + "keywords": [ + "firefox", + "geckodriver", + "selenium", + "webdriver" + ], + "support": { + "issues": "https://github.com/ENM1989/geckodriver/issues", + "source": "https://github.com/ENM1989/geckodriver/tree/master" + }, + "abandoned": true, + "time": "2018-03-15T10:21:28+00:00" + }, + { + "name": "jasongrimes/paginator", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/jasongrimes/php-paginator.git", + "reference": "8b18245b8a9dbdf69918ebd1e1f4a229a06030cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jasongrimes/php-paginator/zipball/8b18245b8a9dbdf69918ebd1e1f4a229a06030cd", + "reference": "8b18245b8a9dbdf69918ebd1e1f4a229a06030cd", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "autoload": { + "psr-0": { + "JasonGrimes": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jason Grimes", + "email": "jason@grimesit.com" + } + ], + "description": "A lightweight PHP paginator, for generating pagination controls in the style of Stack Overflow and Flickr. The 'first' and 'last' page links are shown inline as page numbers, and excess page numbers are replaced by ellipses.", + "homepage": "http://github.com/jasongrimes/php-paginator", + "keywords": [ + "pager", + "pagination", + "paginator" + ], + "support": { + "issues": "https://github.com/jasongrimes/php-paginator/issues", + "source": "https://github.com/jasongrimes/php-paginator/tree/master" + }, + "time": "2015-10-15T09:42:44+00:00" + }, + { + "name": "jdorn/sql-formatter", + "version": "v1.2.17", + "source": { + "type": "git", + "url": "https://github.com/jdorn/sql-formatter.git", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "lib" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "http://jeremydorn.com/" + } + ], + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/jdorn/sql-formatter/", + "keywords": [ + "highlight", + "sql" + ], + "support": { + "issues": "https://github.com/jdorn/sql-formatter/issues", + "source": "https://github.com/jdorn/sql-formatter/tree/master" + }, + "time": "2014-01-12T16:20:24+00:00" + }, + { + "name": "jmathai/php-multi-curl", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/jmathai/php-multi-curl.git", + "reference": "ee0917264ab4ef15cf5b318a2dc7b4ac5e5847c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmathai/php-multi-curl/zipball/ee0917264ab4ef15cf5b318a2dc7b4ac5e5847c7", + "reference": "ee0917264ab4ef15cf5b318a2dc7b4ac5e5847c7", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "4.0.*" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-4": { + "JMathai\\PhpMultiCurl\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache" + ], + "description": "A high performance PHP library for asynchronous curl http calls.", + "keywords": [ + "asynchronous", + "curl", + "parallel", + "php-multi-curl" + ], + "support": { + "issues": "https://github.com/jmathai/php-multi-curl/issues", + "source": "https://github.com/jmathai/php-multi-curl/tree/master" + }, + "funding": [ + { + "url": "https://github.com/jmathai", + "type": "github" + } + ], + "time": "2020-12-17T07:34:16+00:00" + }, + { + "name": "katzgrau/klogger", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/katzgrau/KLogger.git", + "reference": "87735262be7c3bd210740b5cd4831dee3d827c46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/katzgrau/KLogger/zipball/87735262be7c3bd210740b5cd4831dee3d827c46", + "reference": "87735262be7c3bd210740b5cd4831dee3d827c46", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "psr/log": "1.0.0" + }, + "require-dev": { + "phpunit/phpunit": "4.0.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Katzgrau\\KLogger\\": "src/" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kenny Katzgrau", + "email": "katzgrau@gmail.com" + }, + { + "name": "Dan Horrigan", + "email": "dan@dhorrigan.com" + } + ], + "description": "A Simple Logging Class", + "keywords": [ + "logging" + ], + "support": { + "issues": "https://github.com/katzgrau/KLogger/issues", + "source": "https://github.com/katzgrau/KLogger/tree/1.2.0" + }, + "time": "2015-11-04T22:43:22+00:00" + }, + { + "name": "michield/phplist-plugin-campaignslicer", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/michield/phplist-plugin-campaignslicer.git", + "reference": "f8f34bef7f03dc41a13f713ae6db6fa80cf1c846" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/michield/phplist-plugin-campaignslicer/zipball/f8f34bef7f03dc41a13f713ae6db6fa80cf1c846", + "reference": "f8f34bef7f03dc41a13f713ae6db6fa80cf1c846", + "shasum": "" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "Campaign slicer plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "source": "https://github.com/michield/phplist-plugin-campaignslicer/tree/master", + "issues": "https://github.com/michield/phplist-plugin-campaignslicer/issues" + }, + "time": "2021-04-29T22:17:42+00:00" + }, + { + "name": "michield/phplist-plugin-dateplaceholder", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/michield/phplist-plugin-dateplaceholder.git", + "reference": "ab211ded1d1da3c6fab3a960ff24c8b72afea0d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/michield/phplist-plugin-dateplaceholder/zipball/ab211ded1d1da3c6fab3a960ff24c8b72afea0d2", + "reference": "ab211ded1d1da3c6fab3a960ff24c8b72afea0d2", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "Date Placeholder plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "issues": "https://github.com/phpList/phpList3/issues", + "forum": "https://discuss.phplist.org/", + "wiki": "http://resources.phplist.com/", + "source": "https://github.com/phpList/phpList3" + }, + "time": "2021-04-29T22:18:22+00:00" + }, + { + "name": "michield/phplist-plugin-disposablemailblock", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/phpList/phplist-plugin-disposablemailblock.git", + "reference": "8e8ec44cefffe36fdf1edec2a1c35b961951e9dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpList/phplist-plugin-disposablemailblock/zipball/8e8ec44cefffe36fdf1edec2a1c35b961951e9dc", + "reference": "8e8ec44cefffe36fdf1edec2a1c35b961951e9dc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "Disposable mailblock plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "issues": "https://github.com/phpList/phpList3/issues", + "forum": "https://discuss.phplist.org/", + "wiki": "http://resources.phplist.com/", + "source": "https://github.com/phpList/phpList3" + }, + "time": "2021-04-29T22:19:02+00:00" + }, + { + "name": "michield/phplist-plugin-domainthrottlemap", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/michield/phplist-plugin-domainthrottlemap.git", + "reference": "4438aded80335d4a28f2e1256d8a28d7a406f55d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/michield/phplist-plugin-domainthrottlemap/zipball/4438aded80335d4a28f2e1256d8a28d7a406f55d", + "reference": "4438aded80335d4a28f2e1256d8a28d7a406f55d", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "Domain throttle plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "issues": "https://github.com/phpList/phpList3/issues", + "forum": "https://discuss.phplist.org/", + "wiki": "http://resources.phplist.com/", + "source": "https://github.com/phpList/phpList3" + }, + "time": "2021-04-29T22:19:46+00:00" + }, + { + "name": "michield/phplist-plugin-embedremoteimages", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/michield/phplist-plugin-embedremoteimages.git", + "reference": "6bfc8745bf5568a30e8bb17a0d32c2d80cc71310" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/michield/phplist-plugin-embedremoteimages/zipball/6bfc8745bf5568a30e8bb17a0d32c2d80cc71310", + "reference": "6bfc8745bf5568a30e8bb17a0d32c2d80cc71310", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "Embed remote images plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "issues": "https://github.com/phpList/phpList3/issues", + "forum": "https://discuss.phplist.org/", + "wiki": "http://resources.phplist.com/", + "source": "https://github.com/phpList/phpList3" + }, + "time": "2021-04-29T22:20:17+00:00" + }, + { + "name": "mouf/picotainer", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/thecodingmachine/picotainer.git", + "reference": "83737d6af8534c35e0d4cd2f0afd1e2e6c0ad7d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thecodingmachine/picotainer/zipball/83737d6af8534c35e0d4cd2f0afd1e2e6c0ad7d4", + "reference": "83737d6af8534c35e0d4cd2f0afd1e2e6c0ad7d4", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "~1.2", + "psr/container": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8", + "satooshi/php-coveralls": "~1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Mouf\\Picotainer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "David Négrier", + "email": "d.negrier@thecodingmachine.com", + "homepage": "http://mouf-php.com" + } + ], + "description": "This package contains a really minimalist dependency injection container compatible with container-interop.", + "homepage": "http://mouf-php.com", + "keywords": [ + "container-interop", + "dependency injection", + "di" + ], + "support": { + "issues": "https://github.com/thecodingmachine/picotainer/issues", + "source": "https://github.com/thecodingmachine/picotainer/tree/1.1" + }, + "time": "2017-03-09T09:19:17+00:00" + }, + { + "name": "njoannidi/php-lint-bash", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/njoannidi/phpLintBash.git", + "reference": "c3c92486656ca9860c6df076e2586b28f1e9b88e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/njoannidi/phpLintBash/zipball/c3c92486656ca9860c6df076e2586b28f1e9b88e", + "reference": "c3c92486656ca9860c6df076e2586b28f1e9b88e", + "shasum": "" + }, + "require": { + "php": "*" + }, + "default-branch": true, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "description": "A short bash script to recursively lint PHP files with a nice output", + "keywords": [ + "ci", + "error", + "error checking", + "lint", + "linting", + "recursive", + "syntax" + ], + "support": { + "issues": "https://github.com/njoannidi/phpLintBash/issues", + "source": "https://github.com/njoannidi/phpLintBash/tree/master" + }, + "time": "2014-10-15T19:10:29+00:00" + }, + { + "name": "pelago/emogrifier", + "version": "v3.1.0", + "source": { + "type": "git", + "url": "https://github.com/MyIntervals/emogrifier.git", + "reference": "f6a5c7d44612d86c3901c93f1592f5440e6b2cd8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/f6a5c7d44612d86c3901c93f1592f5440e6b2cd8", + "reference": "f6a5c7d44612d86c3901c93f1592f5440e6b2cd8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.6 || ~7.0 || ~7.1 || ~7.2 || ~7.3 || ~7.4", + "symfony/css-selector": "^2.8 || ^3.0 || ^4.0 || ^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.15.3", + "phpmd/phpmd": "^2.7.0", + "phpunit/phpunit": "^5.7.27", + "squizlabs/php_codesniffer": "^3.5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Pelago\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Zoli Szabó", + "email": "zoli.szabo+github@gmail.com" + }, + { + "name": "John Reeve", + "email": "jreeve@pelagodesign.com" + }, + { + "name": "Jake Hotson", + "email": "jake@qzdesign.co.uk" + }, + { + "name": "Cameron Brooks" + }, + { + "name": "Jaime Prado" + } + ], + "description": "Converts CSS styles into inline style attributes in your HTML code", + "homepage": "https://www.myintervals.com/emogrifier.php", + "keywords": [ + "css", + "email", + "pre-processing" + ], + "support": { + "issues": "https://github.com/MyIntervals/emogrifier/issues", + "source": "https://github.com/MyIntervals/emogrifier" + }, + "time": "2019-12-26T19:37:31+00:00" + }, + { + "name": "phplist/phplist-lan-help", + "version": "v2021-04", + "source": { + "type": "git", + "url": "https://github.com/phpList/phplist-lan-help.git", + "reference": "e6f04f4bba4553c1b869fd614c203eaaaa9d1373" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpList/phplist-lan-help/zipball/e6f04f4bba4553c1b869fd614c203eaaaa9d1373", + "reference": "e6f04f4bba4553c1b869fd614c203eaaaa9d1373", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "njoannidi/php-lint-bash": "dev-master" + }, + "type": "library", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "The world's most popular open source newsletter manager, translations of contextual help", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "phplist" + ], + "support": { + "issues": "https://github.com/phpList/phpList3/issues", + "forum": "https://discuss.phplist.org/", + "wiki": "http://resources.phplist.com/", + "source": "https://github.com/phpList/phpList3" + }, + "time": "2021-04-20T20:20:18+00:00" + }, + { + "name": "phplist/phplist-lan-info", + "version": "v2021-04", + "source": { + "type": "git", + "url": "https://github.com/phpList/phplist-lan-info.git", + "reference": "cd4279adc2178197fcf5c25f91f4c002feb97262" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpList/phplist-lan-info/zipball/cd4279adc2178197fcf5c25f91f4c002feb97262", + "reference": "cd4279adc2178197fcf5c25f91f4c002feb97262", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "njoannidi/php-lint-bash": "dev-master" + }, + "type": "library", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "The world's most popular open source newsletter manager, translations of contextual information", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "phplist" + ], + "support": { + "issues": "https://github.com/phpList/phpList3/issues", + "forum": "https://discuss.phplist.org/", + "wiki": "http://resources.phplist.com/", + "source": "https://github.com/phpList/phpList3" + }, + "time": "2021-04-20T20:20:30+00:00" + }, + { + "name": "phplist/phplist-plugin-invite", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/phpList/phplist-plugin-invite.git", + "reference": "87f1f105a0445e1ff6fac010c061e6928cdae02a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpList/phplist-plugin-invite/zipball/87f1f105a0445e1ff6fac010c061e6928cdae02a", + "reference": "87f1f105a0445e1ff6fac010c061e6928cdae02a", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "Invite plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "issues": "https://github.com/phpList/phpList3/issues", + "forum": "https://discuss.phplist.org/", + "wiki": "http://resources.phplist.com/", + "source": "https://github.com/phpList/phpList3" + }, + "time": "2021-04-20T20:54:46+00:00" + }, + { + "name": "phplist/phplist-plugin-subjectlineplaceholders", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/phpList/phplist-plugin-subjectLinePlaceholdersPlugin.git", + "reference": "6aafeec7fe1f19530d071f233aaf253788e2320c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpList/phplist-plugin-subjectLinePlaceholdersPlugin/zipball/6aafeec7fe1f19530d071f233aaf253788e2320c", + "reference": "6aafeec7fe1f19530d071f233aaf253788e2320c", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "default-branch": true, + "type": "phplist-plugin", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "Invite plugin for phpList", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "permission marketing", + "phplist" + ], + "support": { + "issues": "https://github.com/phpList/phpList3/issues", + "forum": "https://discuss.phplist.org/", + "wiki": "http://resources.phplist.com/", + "source": "https://github.com/phpList/phpList3" + }, + "time": "2021-04-22T23:05:45+00:00" + }, + { + "name": "phplist/phplist-ui-bootlist", + "version": "3.5.3", + "source": { + "type": "git", + "url": "https://github.com/phpList/phplist-ui-bootlist.git", + "reference": "f128727089c3f05a6f5d2fbb61928c77f7198837" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpList/phplist-ui-bootlist/zipball/f128727089c3f05a6f5d2fbb61928c77f7198837", + "reference": "f128727089c3f05a6f5d2fbb61928c77f7198837", + "shasum": "" + }, + "require": { + "njoannidi/php-lint-bash": "dev-master" + }, + "type": "library", + "support": { + "source": "https://github.com/phpList/phplist-ui-bootlist/tree/3.5.3", + "issues": "https://github.com/phpList/phplist-ui-bootlist/issues" + }, + "time": "2020-04-15T12:08:23+00:00" + }, + { + "name": "phplist/updater", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpList/updater.git", + "reference": "ac5dfc4b48f5369bc33de69c0eb0af6b3591fa9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpList/updater/zipball/ac5dfc4b48f5369bc33de69c0eb0af6b3591fa9f", + "reference": "ac5dfc4b48f5369bc33de69c0eb0af6b3591fa9f", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "njoannidi/php-lint-bash": "dev-master" + }, + "type": "library", + "license": [ + "GNU Affero General Public License version 3.0 or later (AGPLv3+)" + ], + "description": "The world's most popular open source newsletter manager, automatic updater", + "homepage": "https://www.phpList.org/", + "keywords": [ + "email", + "manager", + "newsletter", + "phplist" + ], + "support": { + "issues": "https://github.com/phpList/phpList3/issues", + "forum": "https://discuss.phplist.org/", + "wiki": "http://resources.phplist.com/", + "source": "https://github.com/phpList/phpList3" + }, + "time": "2021-04-20T20:23:08+00:00" + }, + { + "name": "psr/container", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" + }, + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "psr/log", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "issues": "https://github.com/php-fig/log/issues", + "source": "https://github.com/php-fig/log/tree/1.0.0" + }, + "time": "2012-12-21T11:40:51+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/da3d9da2ce0026771f5fe64cb332158f1bd2bc33", + "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "de56eee71e0a128d8c54ccc1909cdefd574bad0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/de56eee71e0a128d8c54ccc1909cdefd574bad0f", + "reference": "de56eee71e0a128d8c54ccc1909cdefd574bad0f", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/3.4" + }, + "time": "2017-11-19T18:59:05+00:00" + } + ], + "packages-dev": [ + { + "name": "behat/behat", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Behat.git", + "reference": "e4bce688be0c2029dc1700e46058d86428c63cab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Behat/zipball/e4bce688be0c2029dc1700e46058d86428c63cab", + "reference": "e4bce688be0c2029dc1700e46058d86428c63cab", + "shasum": "" + }, + "require": { + "behat/gherkin": "^4.5.1", + "behat/transliterator": "^1.2", + "container-interop/container-interop": "^1.2", + "ext-mbstring": "*", + "php": ">=5.3.3", + "psr/container": "^1.0", + "symfony/class-loader": "~2.1||~3.0", + "symfony/config": "~2.3||~3.0||~4.0", + "symfony/console": "~2.7.40||^2.8.33||~3.3.15||^3.4.3||^4.0.3", + "symfony/dependency-injection": "~2.1||~3.0||~4.0", + "symfony/event-dispatcher": "~2.1||~3.0||~4.0", + "symfony/translation": "~2.3||~3.0||~4.0", + "symfony/yaml": "~2.1||~3.0||~4.0" + }, + "require-dev": { + "herrera-io/box": "~1.6.1", + "phpunit/phpunit": "^4.8.36|^6.3", + "symfony/process": "~2.5|~3.0|~4.0" + }, + "bin": [ + "bin/behat" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Behat": "src/", + "Behat\\Testwork": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Scenario-oriented BDD framework for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "Agile", + "BDD", + "ScenarioBDD", + "Scrum", + "StoryBDD", + "User story", + "business", + "development", + "documentation", + "examples", + "symfony", + "testing" + ], + "support": { + "issues": "https://github.com/Behat/Behat/issues", + "source": "https://github.com/Behat/Behat/tree/master" + }, + "time": "2018-08-10T18:56:51+00:00" + }, + { + "name": "behat/gherkin", + "version": "v4.8.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2391482cd003dfdc36b679b27e9f5326bd656acd", + "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd", + "shasum": "" + }, + "require": { + "php": "~7.2|~8.0" + }, + "require-dev": { + "cucumber/cucumber": "dev-gherkin-16.0.0", + "phpunit/phpunit": "~8|~9", + "symfony/phpunit-bridge": "~3|~4|~5", + "symfony/yaml": "~3|~4|~5" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ], + "support": { + "issues": "https://github.com/Behat/Gherkin/issues", + "source": "https://github.com/Behat/Gherkin/tree/v4.8.0" + }, + "time": "2021-02-04T12:44:21+00:00" + }, + { + "name": "behat/mink", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/minkphp/Mink.git", + "reference": "07c6a9fe3fa98c2de074b25d9ed26c22904e3887" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/Mink/zipball/07c6a9fe3fa98c2de074b25d9ed26c22904e3887", + "reference": "07c6a9fe3fa98c2de074b25d9ed26c22904e3887", + "shasum": "" + }, + "require": { + "php": ">=5.3.1", + "symfony/css-selector": "^2.7|^3.0|^4.0|^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20", + "symfony/debug": "^2.7|^3.0|^4.0", + "symfony/phpunit-bridge": "^3.4.38 || ^5.0.5" + }, + "suggest": { + "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", + "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", + "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", + "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)", + "dmore/chrome-mink-driver": "fast and JS-enabled driver for any app (requires chromium or google chrome)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Browser controller/emulator abstraction for PHP", + "homepage": "http://mink.behat.org/", + "keywords": [ + "browser", + "testing", + "web" + ], + "support": { + "issues": "https://github.com/minkphp/Mink/issues", + "source": "https://github.com/minkphp/Mink/tree/v1.8.1" + }, + "time": "2020-03-11T15:45:53+00:00" + }, + { + "name": "behat/mink-browserkit-driver", + "version": "v1.3.4", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkBrowserKitDriver.git", + "reference": "e3b90840022ebcd544c7b394a3c9597ae242cbee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/e3b90840022ebcd544c7b394a3c9597ae242cbee", + "reference": "e3b90840022ebcd544c7b394a3c9597ae242cbee", + "shasum": "" + }, + "require": { + "behat/mink": "^1.7.1@dev", + "php": ">=5.3.6", + "symfony/browser-kit": "~2.3|~3.0|~4.0", + "symfony/dom-crawler": "~2.3|~3.0|~4.0" + }, + "require-dev": { + "mink/driver-testsuite": "dev-master", + "symfony/debug": "^2.7|^3.0|^4.0", + "symfony/http-kernel": "~2.3|~3.0|~4.0" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Symfony2 BrowserKit driver for Mink framework", + "homepage": "http://mink.behat.org/", + "keywords": [ + "Mink", + "Symfony2", + "browser", + "testing" + ], + "support": { + "issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues", + "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v1.3.4" + }, + "time": "2020-03-11T09:49:45+00:00" + }, + { + "name": "behat/mink-extension", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/Behat/MinkExtension.git", + "reference": "80f7849ba53867181b7e412df9210e12fba50177" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/80f7849ba53867181b7e412df9210e12fba50177", + "reference": "80f7849ba53867181b7e412df9210e12fba50177", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.5", + "behat/mink": "^1.5", + "php": ">=5.3.2", + "symfony/config": "^2.7|^3.0|^4.0" + }, + "require-dev": { + "behat/mink-goutte-driver": "^1.1", + "phpspec/phpspec": "^2.0" + }, + "type": "behat-extension", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\MinkExtension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "Mink extension for Behat", + "homepage": "http://extensions.behat.org/mink", + "keywords": [ + "browser", + "gui", + "test", + "web" + ], + "support": { + "issues": "https://github.com/Behat/MinkExtension/issues", + "source": "https://github.com/Behat/MinkExtension/tree/master" + }, + "time": "2018-02-06T15:36:30+00:00" + }, + { + "name": "behat/mink-goutte-driver", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkGoutteDriver.git", + "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", + "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", + "shasum": "" + }, + "require": { + "behat/mink": "~1.6@dev", + "behat/mink-browserkit-driver": "~1.2@dev", + "fabpot/goutte": "~1.0.4|~2.0|~3.1", + "php": ">=5.3.1" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7|~3.0" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Goutte driver for Mink framework", + "homepage": "http://mink.behat.org/", + "keywords": [ + "browser", + "goutte", + "headless", + "testing" + ], + "support": { + "issues": "https://github.com/minkphp/MinkGoutteDriver/issues", + "source": "https://github.com/minkphp/MinkGoutteDriver/tree/master" + }, + "time": "2016-03-05T09:04:22+00:00" + }, + { + "name": "behat/mink-selenium2-driver", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkSelenium2Driver.git", + "reference": "312a967dd527f28980cce40850339cd5316da092" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/312a967dd527f28980cce40850339cd5316da092", + "reference": "312a967dd527f28980cce40850339cd5316da092", + "shasum": "" + }, + "require": { + "behat/mink": "~1.7@dev", + "instaclick/php-webdriver": "~1.1", + "php": ">=5.4" + }, + "require-dev": { + "mink/driver-testsuite": "dev-master" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pete Otaqui", + "email": "pete@otaqui.com", + "homepage": "https://github.com/pete-otaqui" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Selenium2 (WebDriver) driver for Mink framework", + "homepage": "http://mink.behat.org/", + "keywords": [ + "ajax", + "browser", + "javascript", + "selenium", + "testing", + "webdriver" + ], + "support": { + "issues": "https://github.com/minkphp/MinkSelenium2Driver/issues", + "source": "https://github.com/minkphp/MinkSelenium2Driver/tree/v1.4.0" + }, + "time": "2020-03-11T14:43:21+00:00" + }, + { + "name": "behat/transliterator", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Transliterator.git", + "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", + "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "chuyskywalker/rolling-curl": "^3.1", + "php-yaoi/php-yaoi": "^1.0", + "phpunit/phpunit": "^4.8.36|^6.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Transliterator\\": "src/Behat/Transliterator" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Artistic-1.0" + ], + "description": "String transliterator", + "keywords": [ + "i18n", + "slug", + "transliterator" + ], + "support": { + "issues": "https://github.com/Behat/Transliterator/issues", + "source": "https://github.com/Behat/Transliterator/tree/v1.3.0" + }, + "time": "2020-01-14T16:39:13+00:00" + }, + { + "name": "bex/behat-extension-driver-locator", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/tkotosz/behat-extension-driver-locator.git", + "reference": "af9fb11f5f3cc220ee2c08071ee9d50f11048b86" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tkotosz/behat-extension-driver-locator/zipball/af9fb11f5f3cc220ee2c08071ee9d50f11048b86", + "reference": "af9fb11f5f3cc220ee2c08071ee9d50f11048b86", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.0", + "php": ">=5.4" + }, + "require-dev": { + "phpspec/phpspec": "2.4.0-alpha2" + }, + "type": "library", + "autoload": { + "psr-0": { + "": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tibor Kotosz", + "email": "kotosy@gmail.com", + "homepage": "https://github.com/tkotosz", + "role": "Developer" + } + ], + "description": "Driver locator tool for behat extensions", + "homepage": "https://github.com/tkotosz/behat-extension-driver-locator", + "keywords": [ + "BDD", + "Behat", + "TDD" + ], + "support": { + "issues": "https://github.com/tkotosz/behat-extension-driver-locator/issues", + "source": "https://github.com/tkotosz/behat-extension-driver-locator/tree/master" + }, + "time": "2015-12-17T13:26:09+00:00" + }, + { + "name": "bex/behat-screenshot", + "version": "1.2.9", + "source": { + "type": "git", + "url": "https://github.com/elvetemedve/behat-screenshot.git", + "reference": "618a857169ebf80eb9f4dd56ed42efaebb2de9b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/elvetemedve/behat-screenshot/zipball/618a857169ebf80eb9f4dd56ed42efaebb2de9b6", + "reference": "618a857169ebf80eb9f4dd56ed42efaebb2de9b6", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.0 <3.6", + "behat/mink-extension": "^2.0.0", + "bex/behat-extension-driver-locator": "^1.0.2", + "php": ">=5.4", + "symfony/filesystem": "^2.7|^3.0|^4.0", + "symfony/finder": "^2.7|^3.0|^4.0" + }, + "require-dev": { + "behat/mink-selenium2-driver": "^1.3.0", + "bex/behat-screenshot-image-driver-dummy": "^1.0", + "bex/behat-test-runner": "^1.2.2", + "jakoch/phantomjs-installer": "^2.1.1-p07", + "phpspec/phpspec": "^2.5" + }, + "suggest": { + "bex/behat-screenshot-image-driver-img42": "Allows to upload the screenshot to img42.com", + "bex/behat-screenshot-image-driver-unsee": "Allows to upload the screenshot to unsee.cc", + "bex/behat-screenshot-image-driver-uploadpie": "Allows to upload the screenshot to uploadpie.com" + }, + "type": "library", + "autoload": { + "psr-0": { + "Bex\\Behat\\ScreenshotExtension\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tibor Kotosz", + "email": "kotosy@gmail.com", + "homepage": "https://github.com/tkotosz", + "role": "Developer" + }, + { + "name": "Geza Buza", + "email": "bghome@gmail.com", + "homepage": "https://twitter.com/medve540", + "role": "Developer" + } + ], + "description": "Extension for behat to help debug failing scenarios", + "homepage": "https://github.com/elvetemedve/behat-screenshot", + "keywords": [ + "BDD", + "Behat", + "TDD", + "behat-screenshot" + ], + "support": { + "issues": "https://github.com/elvetemedve/behat-screenshot/issues", + "source": "https://github.com/elvetemedve/behat-screenshot/tree/master" + }, + "time": "2020-04-07T13:22:51+00:00" + }, + { + "name": "fabpot/goutte", + "version": "v3.2.3", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/Goutte.git", + "reference": "3f0eaf0a40181359470651f1565b3e07e3dd31b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/3f0eaf0a40181359470651f1565b3e07e3dd31b8", + "reference": "3f0eaf0a40181359470651f1565b3e07e3dd31b8", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0", + "symfony/browser-kit": "~2.1|~3.0|~4.0", + "symfony/css-selector": "~2.1|~3.0|~4.0", + "symfony/dom-crawler": "~2.1|~3.0|~4.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3.3 || ^4" + }, + "type": "application", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Goutte\\": "Goutte" + }, + "exclude-from-classmap": [ + "Goutte/Tests" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A simple PHP Web Scraper", + "homepage": "https://github.com/FriendsOfPHP/Goutte", + "keywords": [ + "scraper" + ], + "support": { + "issues": "https://github.com/FriendsOfPHP/Goutte/issues", + "source": "https://github.com/FriendsOfPHP/Goutte/tree/master" + }, + "time": "2018-06-29T15:13:57+00:00" + }, + { + "name": "genesis/behat-fail-aid", + "version": "3.7.2", + "source": { + "type": "git", + "url": "https://github.com/forceedge01/behat-fail-aid.git", + "reference": "af8bf54cf9ece843b35501f76ce6432b41b1bb93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/forceedge01/behat-fail-aid/zipball/af8bf54cf9ece843b35501f76ce6432b41b1bb93", + "reference": "af8bf54cf9ece843b35501f76ce6432b41b1bb93", + "shasum": "" + }, + "require": { + "behat/mink": "*@stable", + "behat/mink-extension": "~2.0", + "behat/mink-selenium2-driver": "~1.3" + }, + "require-dev": { + "behat/behat": "^3.5", + "behat/mink-goutte-driver": "^1.2", + "ciaranmcnulty/behat-localwebserverextension": "^1.1", + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "genesis/db-backup-restore": "Quickly backup and restore your database.", + "genesis/sql-data-mods": "Extends behat-sql-extension to provide a powerful and simple framework to manage your data modules.", + "genesis/test-routing": "Simplistic routing that can extend main app routing for testing purposes." + }, + "type": "library", + "autoload": { + "psr-4": { + "FailAid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Abdul Wahhab Qureshi" + } + ], + "description": "Get more out of your test suite by getting it to work with you when tests fail. Screenshots and more. Works with Goutte and MinkExtension.", + "keywords": [ + "Behat", + "behat-error", + "behat-exception", + "behat-fail", + "behat-screenshot", + "error", + "fail", + "screenshot" + ], + "support": { + "issues": "https://github.com/forceedge01/behat-fail-aid/issues", + "source": "https://github.com/forceedge01/behat-fail-aid/tree/3.7.2" + }, + "time": "2021-04-29T07:59:40+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.5.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.6.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.17.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.1" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/6.5" + }, + "time": "2020-06-16T21:01:06+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.4.1" + }, + "time": "2021-03-07T09:25:29+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.8.2" + }, + "time": "2021-04-26T09:17:50+00:00" + }, + { + "name": "instaclick/php-webdriver", + "version": "1.4.7", + "source": { + "type": "git", + "url": "https://github.com/instaclick/php-webdriver.git", + "reference": "b5f330e900e9b3edfc18024a5ec8c07136075712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/b5f330e900e9b3edfc18024a5ec8c07136075712", + "reference": "b5f330e900e9b3edfc18024a5ec8c07136075712", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "satooshi/php-coveralls": "^1.0||^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "WebDriver": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Justin Bishop", + "email": "jubishop@gmail.com", + "role": "Developer" + }, + { + "name": "Anthon Pang", + "email": "apang@softwaredevelopment.ca", + "role": "Fork Maintainer" + } + ], + "description": "PHP WebDriver for Selenium 2", + "homepage": "http://instaclick.com/", + "keywords": [ + "browser", + "selenium", + "webdriver", + "webtest" + ], + "support": { + "issues": "https://github.com/instaclick/php-webdriver/issues", + "source": "https://github.com/instaclick/php-webdriver/tree/1.x" + }, + "time": "2019-09-25T09:05:11+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "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" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "se/selenium-server-standalone", + "version": "v2.53.1", + "source": { + "type": "git", + "url": "https://github.com/sveneisenschmidt/selenium-server-standalone.git", + "reference": "ef4eea9c99efb9c0e3084e9cae625662ccd43361" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sveneisenschmidt/selenium-server-standalone/zipball/ef4eea9c99efb9c0e3084e9cae625662ccd43361", + "reference": "ef4eea9c99efb9c0e3084e9cae625662ccd43361", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "bin": [ + "bin/selenium-server-standalone" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache 2.0" + ], + "authors": [ + { + "name": "Sven Eisenschmidt", + "email": "sven.eisenschmidt@gmail.com" + } + ], + "description": "Composer distribution of Selenium Server Standalone, the browser automation framework. Adds a executable to your composer bin directory.", + "homepage": "https://github.com/sveneisenschmidt/selenium-server-standalone", + "keywords": [ + "selenium", + "testing" + ], + "support": { + "issues": "https://github.com/sveneisenschmidt/selenium-server-standalone/issues", + "source": "https://github.com/sveneisenschmidt/selenium-server-standalone/tree/master" + }, + "time": "2016-07-01T14:16:52+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v4.4.22", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "4c8b42b4aae93517e8f67d68c5cbe69413e3e3c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/4c8b42b4aae93517e8f67d68c5cbe69413e3e3c1", + "reference": "4c8b42b4aae93517e8f67d68c5cbe69413e3e3c1", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/dom-crawler": "^3.4|^4.0|^5.0" + }, + "require-dev": { + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/mime": "^4.3|^5.0", + "symfony/process": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/browser-kit/tree/v4.4.22" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-04-08T07:40:10+00:00" + }, + { + "name": "symfony/class-loader", + "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/class-loader.git", + "reference": "a22265a9f3511c0212bf79f54910ca5a77c0e92c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/a22265a9f3511c0212bf79f54910ca5a77c0e92c", + "reference": "a22265a9f3511c0212bf79f54910ca5a77c0e92c", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "require-dev": { + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/polyfill-apcu": "~1.1" + }, + "suggest": { + "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ClassLoader\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony ClassLoader Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/class-loader/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "symfony/config", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "99f93d6a4ff0c55184cfc925a4a41e9507aef690" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/99f93d6a4ff0c55184cfc925a4a41e9507aef690", + "reference": "99f93d6a4ff0c55184cfc925a4a41e9507aef690", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/filesystem": "~2.8|~3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/config/tree/v3.0.0-BETA1" + }, + "time": "2015-11-02T20:34:04+00:00" + }, + { + "name": "symfony/console", + "version": "v2.8.52", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12", + "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/debug": "^2.7.2|~3.0.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1|~3.0.0", + "symfony/process": "~2.1|~3.0.0" + }, + "suggest": { + "psr/log-implementation": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/console/tree/v2.8.52" + }, + "time": "2018-11-20T15:55:20+00:00" + }, + { + "name": "symfony/debug", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", + "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug/tree/3.0" + }, + "time": "2016-07-30T07:22:48+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v3.2.14", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "d9f2e62e1a93d52ad4e4f6faaf66f6eef723d761" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d9f2e62e1a93d52ad4e4f6faaf66f6eef723d761", + "reference": "d9f2e62e1a93d52ad4e4f6faaf66f6eef723d761", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "symfony/yaml": "<3.2" + }, + "require-dev": { + "symfony/config": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/yaml": "~3.2" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DependencyInjection Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dependency-injection/tree/3.2" + }, + "time": "2017-07-28T15:22:55+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v4.4.20", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "be133557f1b0e6672367325b508e65da5513a311" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/be133557f1b0e6672367325b508e65da5513a311", + "reference": "be133557f1b0e6672367325b508e65da5513a311", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v4.4.20" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-14T12:29:41+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v3.2.14", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "b8de6ee252af19330dd72ad5fc0dd4658a1d6325" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b8de6ee252af19330dd72ad5fc0dd4658a1d6325", + "reference": "b8de6ee252af19330dd72ad5fc0dd4658a1d6325", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/3.2" + }, + "time": "2017-06-02T08:26:05+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.4.20", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "2543795ab1570df588b9bbd31e1a2bd7037b94f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/2543795ab1570df588b9bbd31e1a2bd7037b94f6", + "reference": "2543795ab1570df588b9bbd31e1a2bd7037b94f6", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v4.4.20" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-12T10:48:09+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "06fb361659649bcfd6a208a0f1fcaf4e827ad342" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/06fb361659649bcfd6a208a0f1fcaf4e827ad342", + "reference": "06fb361659649bcfd6a208a0f1fcaf4e827ad342", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "2d63434d922daf7da8dd863e7907e67ee3031483" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/2d63434d922daf7da8dd863e7907e67ee3031483", + "reference": "2d63434d922daf7da8dd863e7907e67ee3031483", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "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 for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", + "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/translation", + "version": "v3.3.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "90cb5ca3eb84b3053fef876e11e405fd819487fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/90cb5ca3eb84b3053fef876e11e405fd819487fc", + "reference": "90cb5ca3eb84b3053fef876e11e405fd819487fc", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/yaml": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0", + "symfony/intl": "^2.8.18|^3.2.5", + "symfony/yaml": "~3.3" + }, + "suggest": { + "psr/log": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/3.3" + }, + "time": "2018-01-18T14:19:00+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.3.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "af615970e265543a26ee712c958404eb9b7ac93d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/af615970e265543a26ee712c958404eb9b7ac93d", + "reference": "af615970e265543a26ee712c958404eb9b7ac93d", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/3.3" + }, + "time": "2018-01-20T15:04:53+00:00" + }, + { + "name": "zbateson/mail-mime-parser", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/zbateson/mail-mime-parser.git", + "reference": "706964d904798b8c22d63f62f0ec5f5bc84e30d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/706964d904798b8c22d63f62f0ec5f5bc84e30d9", + "reference": "706964d904798b8c22d63f62f0ec5f5bc84e30d9", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.0", + "php": ">=5.4", + "zbateson/mb-wrapper": "^1.0.1", + "zbateson/stream-decorators": "^1.0.4" + }, + "require-dev": { + "jms/serializer": "^1.1", + "mikey179/vfsstream": "^1.6.0", + "phing/phing": "^2.15.0", + "phpdocumentor/phpdocumentor": "^2.9.0", + "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5" + }, + "suggest": { + "ext-iconv": "For best support/performance", + "ext-mbstring": "For best support/performance" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\MailMimeParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + }, + { + "name": "Contributors", + "homepage": "https://github.com/zbateson/mail-mime-parser/graphs/contributors" + } + ], + "description": "MIME email message parser", + "homepage": "https://mail-mime-parser.org", + "keywords": [ + "MimeMailParser", + "email", + "mail", + "mailparse", + "mime", + "mimeparse", + "parser", + "php-imap" + ], + "support": { + "docs": "https://mail-mime-parser.org/#usage-guide", + "issues": "https://github.com/zbateson/mail-mime-parser/issues", + "source": "https://github.com/zbateson/mail-mime-parser" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2020-12-02T21:55:45+00:00" + }, + { + "name": "zbateson/mb-wrapper", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/zbateson/mb-wrapper.git", + "reference": "721b3dfbf7ab75fee5ac60a542d7923ffe59ef6d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/721b3dfbf7ab75fee5ac60a542d7923ffe59ef6d", + "reference": "721b3dfbf7ab75fee5ac60a542d7923ffe59ef6d", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "symfony/polyfill-iconv": "^1.9", + "symfony/polyfill-mbstring": "^1.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5" + }, + "suggest": { + "ext-iconv": "For best support/performance", + "ext-mbstring": "For best support/performance" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\MbWrapper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + } + ], + "description": "Wrapper for mbstring with fallback to iconv for encoding conversion and string manipulation", + "keywords": [ + "charset", + "encoding", + "http", + "iconv", + "mail", + "mb", + "mb_convert_encoding", + "mbstring", + "mime", + "multibyte", + "string" + ], + "support": { + "issues": "https://github.com/zbateson/mb-wrapper/issues", + "source": "https://github.com/zbateson/mb-wrapper/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2020-10-21T22:14:27+00:00" + }, + { + "name": "zbateson/stream-decorators", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/zbateson/stream-decorators.git", + "reference": "6f54738dfecc65e1d5bfb855035836748083a6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/6f54738dfecc65e1d5bfb855035836748083a6dd", + "reference": "6f54738dfecc65e1d5bfb855035836748083a6dd", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.0.0", + "php": ">=5.4", + "zbateson/mb-wrapper": "^1.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\StreamDecorators\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + } + ], + "description": "PHP psr7 stream decorators for mime message part streams", + "keywords": [ + "base64", + "charset", + "decorators", + "mail", + "mime", + "psr7", + "quoted-printable", + "stream", + "uuencode" + ], + "support": { + "issues": "https://github.com/zbateson/stream-decorators/issues", + "source": "https://github.com/zbateson/stream-decorators/tree/master" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2020-08-10T18:59:43+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": { + "davidbarratt/custom-installer": 0, + "phplist/phplist-ui-bootlist": 0, + "phplist/phplist-lan-help": 0, + "phplist/phplist-lan-info": 0, + "phplist/updater": 0, + "phplist/phplist-plugin-invite": 20, + "michield/phplist-plugin-campaignslicer": 20, + "michield/phplist-plugin-dateplaceholder": 20, + "michield/phplist-plugin-disposablemailblock": 20, + "michield/phplist-plugin-domainthrottlemap": 20, + "michield/phplist-plugin-embedremoteimages": 20, + "bramley/phplist-plugin-common": 20, + "bramley/phplist-plugin-captcha": 20, + "bramley/phplist-plugin-ckeditor": 20, + "bramley/phplist-plugin-segment": 20, + "phplist/phplist-plugin-subjectlineplaceholders": 20, + "behat/mink": 0, + "behat/mink-goutte-driver": 0, + "fabpot/goutte": 0 + }, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=7.0" + }, + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/scripts/install-plugins.sh b/scripts/install-plugins.sh new file mode 100755 index 000000000..b4150b0cb --- /dev/null +++ b/scripts/install-plugins.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +from=$1 +to=$2 + +[[ -z $from ]] || [[ ! -d $from ]] || [[ -z $to ]] || [[ ! -d $to ]] && exit; + +echo $from $to + +for plugin in $(find $from -type d -name phplist-plugin-*); do + [[ ! -z "$(ls -A $plugin/plugins/)" ]] && rsync -a $plugin/plugins/* $to +done diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh new file mode 100755 index 000000000..aee2b8262 --- /dev/null +++ b/scripts/run-tests.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +## run behat tests +## assumes to be run from the project root +## tests are in "/tests" + +rm -rf vendor +composer install + +cp tests/default.behat.yml behat.yml +cp -fv tests/ci/config.php public_html/lists/config/config.php +php -S 127.0.0.1:80 -t public_html > /dev/null 2>&1 & + +sudo service mysql start + +# start selenium and php server +./bin/start-selenium > /dev/null 2>&1 & +sleep 5 + +# setup database and phplist +mkdir -p build/screenshot + +sudo service postfix stop +mkdir -p build/mails +cd build/mails +smtp-sink -u phplist -d "%d.%H.%M.%S" localhost:2500 1000 & + +cd ../../tests + +make test + diff --git a/tests/Makefile b/tests/Makefile index 38d89d7d8..44774d7dc 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -3,7 +3,7 @@ createdb: mysql -e 'drop database if exists phplistdb' mysqladmin create phplistdb - mysql -e 'grant all on phplistdb.* to phplist@"%" identified by "phplist"' + mysql -e 'grant all on phplistdb.* to phplist@"%" identified by "phplist"; FLUSH PRIVILEGES;' test: createdb ../vendor/bin/behat -n -fprogress -p chrome --strict --stop-on-failure --tags=@initialise diff --git a/tests/behat.yml b/tests/behat.yml new file mode 100644 index 000000000..f8208dc47 --- /dev/null +++ b/tests/behat.yml @@ -0,0 +1,73 @@ +default: + autoload: + - ./features/bootstrap + suites: + default: + paths: + - ./features + contexts: + - FeatureContext: + # Set database access credentials + database: + host: 127.0.0.1 + user: phplist + password: phplist + name: phplistdb + # Set admin user login credentials + admin: + username: admin + password: Mypassword123+ + - MailContext: + mail_dir: build/mails + - SubscriberContext + - UserContext + extensions: + Behat\MinkExtension: + base_url: 'http://127.0.0.1' + default_session: goutte + goutte: ~ + sessions: + default: + goutte: ~ + chrome: + selenium2: + browser: chrome + capabilities: + browserName: chrome + browser: chrome + version: "" + chrome: + switches: + - "--headless" + - "--disable-gpu" + - "--window-size=2000,2000" + - "--lang=en" + - "--no-sandbox" + + firefox: + selenium2: + wd_host: http://127.0.0.1:4444/wd/hub + capabilities: + browser: firefox + version: "" + marionette: true + javascript: + selenium2: + browser: "firefox" + wd_host: http://127.0.0.1:4444/wd/hub + +goutte: + extensions: + Behat\MinkExtension: + default_session: goutte + +chrome: + extensions: + Behat\MinkExtension: + browser_name: chrome + default_session: chrome +firefox: + extensions: + Behat\MinkExtension: + default_session: firefox + browser_name: firefox \ No newline at end of file