{ "name": "shlinkio/shlink", "type": "project", "homepage": "https://shlink.io", "description": "A self-hosted and PHP-based URL shortener application with CLI and REST interfaces", "license": "MIT", "authors": [ { "name": "Alejandro Celaya Alastrué", "homepage": "https://www.alejandrocelaya.com", "email": "alejandro@alejandrocelaya.com" } ], "require": { "php": "^7.2", "ext-json": "*", "ext-pdo": "*", "acelaya/ze-content-based-error-handler": "^2.2", "akrabat/ip-address-middleware": "^1.0", "cakephp/chronos": "^1.2", "cocur/slugify": "^3.0", "doctrine/cache": "^1.6", "doctrine/migrations": "^2.0", "doctrine/orm": "^2.5", "endroid/qr-code": "^1.7", "firebase/php-jwt": "^4.0", "geoip2/geoip2": "^2.9", "guzzlehttp/guzzle": "^6.2", "lstrojny/functional-php": "^1.8", "mikehaertl/phpwkhtmltopdf": "^2.2", "monolog/monolog": "^1.21", "ocramius/proxy-manager": "~2.2.2", "phly/phly-event-dispatcher": "^1.0", "predis/predis": "^1.1", "shlinkio/shlink-installer": "^1.2.1", "symfony/console": "^4.3", "symfony/filesystem": "^4.3", "symfony/lock": "^4.3", "symfony/process": "^4.3", "theorchard/monolog-cascade": "^0.4", "zendframework/zend-config": "^3.3", "zendframework/zend-config-aggregator": "^1.1", "zendframework/zend-diactoros": "^2.1.3", "zendframework/zend-expressive": "^3.2", "zendframework/zend-expressive-fastroute": "^3.0", "zendframework/zend-expressive-helpers": "^5.3", "zendframework/zend-expressive-platesrenderer": "^2.1", "zendframework/zend-expressive-swoole": "^2.4", "zendframework/zend-i18n": "^2.9", "zendframework/zend-inputfilter": "^2.10", "zendframework/zend-paginator": "^2.8", "zendframework/zend-servicemanager": "^3.4", "zendframework/zend-stdlib": "^3.2" }, "require-dev": { "devster/ubench": "^2.0", "doctrine/data-fixtures": "^1.3", "eaglewu/swoole-ide-helper": "dev-master", "filp/whoops": "^2.4", "infection/infection": "^0.12.2", "phpstan/phpstan": "^0.11.2", "phpunit/phpcov": "^6.0", "phpunit/phpunit": "^8.3", "roave/security-advisories": "dev-master", "shlinkio/php-coding-standard": "~1.2.2", "symfony/dotenv": "^4.3", "symfony/var-dumper": "^4.3", "zendframework/zend-component-installer": "^2.1", "zendframework/zend-expressive-tooling": "^1.2" }, "autoload": { "psr-4": { "Shlinkio\\Shlink\\CLI\\": "module/CLI/src", "Shlinkio\\Shlink\\Rest\\": "module/Rest/src", "Shlinkio\\Shlink\\Core\\": "module/Core/src", "Shlinkio\\Shlink\\Common\\": "module/Common/src", "Shlinkio\\Shlink\\EventDispatcher\\": "module/EventDispatcher/src", "Shlinkio\\Shlink\\IpGeolocation\\": "module/IpGeolocation/src/" }, "files": [ "module/Common/functions/functions.php", "module/EventDispatcher/functions/functions.php" ] }, "autoload-dev": { "psr-4": { "ShlinkioTest\\Shlink\\CLI\\": "module/CLI/test", "ShlinkioTest\\Shlink\\Rest\\": "module/Rest/test", "ShlinkioApiTest\\Shlink\\Rest\\": "module/Rest/test-api", "ShlinkioTest\\Shlink\\Core\\": [ "module/Core/test", "module/Core/test-db" ], "ShlinkioTest\\Shlink\\Common\\": [ "module/Common/test", "module/Common/test-db" ], "ShlinkioTest\\Shlink\\EventDispatcher\\": "module/EventDispatcher/test", "ShlinkioTest\\Shlink\\IpGeolocation\\": "module/IpGeolocation/test" } }, "scripts": { "ci": [ "@cs", "@stan", "@test:ci", "@infect:ci" ], "cs": "phpcs", "cs:fix": "phpcbf", "stan": "phpstan analyse module/*/src/ --level=5 -c phpstan.neon", "test": [ "@test:unit", "@test:db", "@test:api" ], "test:ci": [ "@test:unit:ci", "@test:db", "@test:api" ], "test:unit": "phpdbg -qrr vendor/bin/phpunit --order-by=random --coverage-php build/coverage-unit.cov --testdox", "test:unit:ci": "phpdbg -qrr vendor/bin/phpunit --order-by=random --coverage-php build/coverage-unit.cov --coverage-clover=build/clover.xml --coverage-xml=build/coverage-xml --log-junit=build/phpunit.junit.xml --testdox", "test:db": [ "@test:db:sqlite", "@test:db:mysql", "@test:db:postgres" ], "test:db:sqlite": "APP_ENV=test phpdbg -qrr vendor/bin/phpunit --order-by=random -c phpunit-db.xml --coverage-php build/coverage-db.cov --testdox", "test:db:mysql": "DB_DRIVER=mysql composer test:db:sqlite", "test:db:postgres": "DB_DRIVER=postgres composer test:db:sqlite", "test:api": "bin/test/run-api-tests.sh", "test:pretty": [ "@test", "phpdbg -qrr vendor/bin/phpcov merge build --html build/html" ], "test:unit:pretty": "phpdbg -qrr vendor/bin/phpunit --coverage-html build/coverage --order-by=random", "infect": "infection --threads=4 --min-msi=75 --log-verbosity=default --only-covered", "infect:ci": "infection --threads=4 --min-msi=75 --log-verbosity=default --only-covered --coverage=build", "infect:show": "infection --threads=4 --min-msi=75 --log-verbosity=default --only-covered --show-mutations", "infect:test": [ "@test:unit:ci", "@infect:ci" ] }, "scripts-descriptions": { "check": "Alias for \"cs\", \"stan\", \"test\" and \"infect\"", "ci": "Alias for \"cs\", \"stan\", \"test:ci\" and \"infect:ci\"", "cs": "Checks coding styles", "cs:fix": "Fixes coding styles, when possible", "stan": "Inspects code with phpstan", "test": "Runs all test suites", "test:ci": "Runs all test suites, generating all needed reports and logs for CI envs", "test:unit": "Runs unit test suites", "test:unit:ci": "Runs unit test suites, generating all needed reports and logs for CI envs", "test:db": "Runs database test suites on a SQLite, MySQL and PostgreSQL", "test:db:sqlite": "Runs database test suites on a SQLite database", "test:db:mysql": "Runs database test suites on a MySQL database", "test:db:postgres": "Runs database test suites on a PostgreSQL database", "test:api": "Runs API test suites", "test:pretty": "Runs all test suites and generates an HTML code coverage report", "test:unit:pretty": "Runs unit test suites and generates an HTML code coverage report", "infect": "Checks unit tests quality applying mutation testing", "infect:ci": "Checks unit tests quality applying mutation testing with existing reports and logs", "infect:show": "Checks unit tests quality applying mutation testing and shows applied mutators", "infect:test": "Checks unit tests quality applying mutation testing" }, "config": { "sort-packages": true } }