{
    "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.1",
        "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": "^1.4",
        "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",
        "roave/security-advisories": "dev-master",
        "symfony/console": "^4.1",
        "symfony/filesystem": "^4.1",
        "symfony/lock": "^4.1",
        "symfony/process": "^4.1",
        "theorchard/monolog-cascade": "^0.4",
        "zendframework/zend-config": "^3.0",
        "zendframework/zend-config-aggregator": "^1.0",
        "zendframework/zend-diactoros": "^2.0",
        "zendframework/zend-expressive": "^3.0",
        "zendframework/zend-expressive-fastroute": "^3.0",
        "zendframework/zend-expressive-helpers": "^5.0",
        "zendframework/zend-expressive-platesrenderer": "^2.0",
        "zendframework/zend-i18n": "^2.7",
        "zendframework/zend-inputfilter": "^2.8",
        "zendframework/zend-paginator": "^2.6",
        "zendframework/zend-servicemanager": "^3.2",
        "zendframework/zend-stdlib": "^3.0"
    },
    "require-dev": {
        "devster/ubench": "^2.0",
        "filp/whoops": "^2.0",
        "infection/infection": "^0.11.0",
        "phpstan/phpstan": "^0.10.0",
        "phpunit/phpcov": "^5.0",
        "phpunit/phpunit": "^7.3",
        "slevomat/coding-standard": "^4.0",
        "squizlabs/php_codesniffer": "^3.2.3",
        "symfony/dotenv": "^4.0",
        "symfony/var-dumper": "^4.0",
        "zendframework/zend-component-installer": "^2.1",
        "zendframework/zend-expressive-tooling": "^1.0"
    },
    "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\\Installer\\": "module/Installer/src"
        },
        "files": [
            "module/Common/functions/functions.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "ShlinkioTest\\Shlink\\CLI\\": "module/CLI/test",
            "ShlinkioTest\\Shlink\\Rest\\": "module/Rest/test",
            "ShlinkioTest\\Shlink\\Core\\": [
                "module/Core/test",
                "module/Core/test-func"
            ],
            "ShlinkioTest\\Shlink\\Common\\": [
                "module/Common/test",
                "module/Common/test-func"
            ],
            "ShlinkioTest\\Shlink\\Installer\\": "module/Installer/test"
        }
    },
    "scripts": {
        "check": [
            "@cs",
            "@stan",
            "@test:ci",
            "@infect:ci"
        ],
        "ci": [
            "echo \"This command is DEPRECATED. Use check instead\"",
            "@check"
        ],

        "cs": "phpcs",
        "cs:fix": "phpcbf",
        "stan": "phpstan analyse module/*/src/ --level=5 -c phpstan.neon",

        "test": [
            "@test:unit",
            "@test:func"
        ],
        "test:ci": [
            "@test:unit:ci",
            "@test:func"
        ],
        "test:unit": "phpdbg -qrr vendor/bin/phpunit --order-by=random --coverage-php build/coverage-unit.cov",
        "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",
        "test:func": "phpdbg -qrr vendor/bin/phpunit --order-by=random -c phpunit-func.xml --coverage-php build/coverage-func.cov",

        "test:pretty": [
            "@test",
            "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=65 --log-verbosity=2 --only-covered",
        "infect:ci": "infection --threads=4 --min-msi=65 --log-verbosity=2 --only-covered --coverage=build",
        "infect:show": "infection --threads=4 --min-msi=65 --log-verbosity=2 --only-covered --show-mutations",
        "infect:test": [
            "@test:unit:ci",
            "@infect:ci"
        ]
    },
    "scripts-descriptions": {
        "check": "<fg=blue;options=bold>Alias for \"cs\", \"stan\", \"test\" and \"infect\"</>",
        "ci": "<fg=blue;options=bold>Alias for \"cs\", \"stan\", \"test:ci\" and \"infect:ci\"</>",
        "cs": "<fg=blue;options=bold>Checks coding styles</>",
        "cs:fix": "<fg=blue;options=bold>Fixes coding styles, when possible</>",
        "stan": "<fg=blue;options=bold>Inspects code with phpstan</>",
        "test": "<fg=blue;options=bold>Runs all test suites</>",
        "test:ci": "<fg=blue;options=bold>Runs all test suites, generating all needed reports and logs for CI envs</>",
        "test:unit": "<fg=blue;options=bold>Runs unit test suites</>",
        "test:unit:ci": "<fg=blue;options=bold>Runs unit test suites, generating all needed reports and logs for CI envs</>",
        "test:func": "<fg=blue;options=bold>Runs functional test suites (covering entity repositories)</>",
        "test:pretty": "<fg=blue;options=bold>Runs all test suites and generates an HTML code coverage report</>",
        "test:unit:pretty": "<fg=blue;options=bold>Runs unit test suites and generates an HTML code coverage report</>",
        "infect": "<fg=blue;options=bold>Checks unit tests quality applying mutation testing</>",
        "infect:ci": "<fg=blue;options=bold>Checks unit tests quality applying mutation testing with existing reports and logs</>",
        "infect:show": "<fg=blue;options=bold>Checks unit tests quality applying mutation testing and shows applied mutators</>"
    },
    "config": {
        "sort-packages": true
    }
}
