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