123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- {
- "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.4 || ^8.0",
- "ext-json": "*",
- "ext-pdo": "*",
- "akrabat/ip-address-middleware": "^2.0",
- "cakephp/chronos": "^2.0",
- "cocur/slugify": "^4.0",
- "doctrine/cache": "^1.9",
- "doctrine/migrations": "^3.0.2",
- "doctrine/orm": "2.8.1 || ^2.8.3",
- "endroid/qr-code": "3.x-dev#0f1613a as 3.10",
- "geoip2/geoip2": "^2.9",
- "guzzlehttp/guzzle": "^7.0",
- "happyr/doctrine-specification": "2.x-dev#cb116d3 as 2.0",
- "laminas/laminas-config": "^3.3",
- "laminas/laminas-config-aggregator": "^1.1",
- "laminas/laminas-diactoros": "^2.1.3",
- "laminas/laminas-inputfilter": "^2.10",
- "laminas/laminas-servicemanager": "^3.6",
- "laminas/laminas-stdlib": "^3.2",
- "lcobucci/jwt": "^4.0",
- "league/uri": "^6.2",
- "lstrojny/functional-php": "^1.15",
- "mezzio/mezzio": "^3.3",
- "mezzio/mezzio-fastroute": "^3.1",
- "mezzio/mezzio-problem-details": "^1.3",
- "mezzio/mezzio-swoole": "^3.3",
- "monolog/monolog": "^2.0",
- "nikolaposa/monolog-factory": "^3.1",
- "ocramius/proxy-manager": "^2.11",
- "pagerfanta/core": "^2.5",
- "php-middleware/request-id": "^4.1",
- "predis/predis": "^1.1",
- "pugx/shortid-php": "^0.7",
- "ramsey/uuid": "^3.9",
- "shlinkio/shlink-common": "^3.5",
- "shlinkio/shlink-config": "^1.0",
- "shlinkio/shlink-event-dispatcher": "^2.1",
- "shlinkio/shlink-importer": "^2.2",
- "shlinkio/shlink-installer": "^5.4",
- "shlinkio/shlink-ip-geolocation": "^1.5",
- "symfony/console": "^5.1",
- "symfony/filesystem": "^5.1",
- "symfony/lock": "^5.1",
- "symfony/mercure": "^0.4.1",
- "symfony/process": "^5.1",
- "symfony/string": "^5.1"
- },
- "require-dev": {
- "devster/ubench": "^2.1",
- "dms/phpunit-arraysubset-asserts": "^0.2.1",
- "eaglewu/swoole-ide-helper": "dev-master",
- "infection/infection": "^0.21.0",
- "phpspec/prophecy-phpunit": "^2.0",
- "phpstan/phpstan": "^0.12.64",
- "phpunit/php-code-coverage": "^9.2",
- "phpunit/phpunit": "^9.5",
- "roave/security-advisories": "dev-master",
- "shlinkio/php-coding-standard": "~2.1.1",
- "shlinkio/shlink-test-utils": "^2.1",
- "symfony/var-dumper": "^5.2",
- "veewee/composer-run-parallel": "^0.1.0"
- },
- "autoload": {
- "psr-4": {
- "Shlinkio\\Shlink\\CLI\\": "module/CLI/src",
- "Shlinkio\\Shlink\\Rest\\": "module/Rest/src",
- "Shlinkio\\Shlink\\Core\\": "module/Core/src"
- },
- "files": [
- "module/Core/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"
- ]
- },
- "files": [
- "config/test/constants.php"
- ]
- },
- "scripts": {
- "ci": [
- "@cs",
- "@stan",
- "@test:ci",
- "@infect:ci"
- ],
- "ci:parallel": [
- "@parallel cs stan test:unit:ci test:db:sqlite:ci test:db:mysql test:db:maria test:db:postgres test:db:ms",
- "@parallel test:api infect:ci:unit infect:ci:db"
- ],
- "cs": "phpcs",
- "cs:fix": "phpcbf",
- "stan": "phpstan analyse module/*/src/ module/*/config config docker/config data/migrations --level=6",
- "test": [
- "@test:unit",
- "@test:db",
- "@test:api"
- ],
- "test:ci": [
- "@test:unit:ci",
- "@test:db",
- "@test:api"
- ],
- "test:unit": "@php vendor/bin/phpunit --order-by=random --colors=always --coverage-php build/coverage-unit.cov --testdox",
- "test:unit:ci": "@test:unit --coverage-xml=build/coverage-unit/coverage-xml --log-junit=build/coverage-unit/junit.xml",
- "test:db": "@parallel test:db:sqlite:ci test:db:mysql test:db:maria test:db:postgres test:db:ms",
- "test:db:sqlite": "APP_ENV=test php vendor/bin/phpunit --order-by=random --colors=always --testdox -c phpunit-db.xml",
- "test:db:sqlite:ci": "@test:db:sqlite --coverage-php build/coverage-db.cov --coverage-xml=build/coverage-db/coverage-xml --log-junit=build/coverage-db/junit.xml",
- "test:db:mysql": "DB_DRIVER=mysql composer test:db:sqlite",
- "test:db:maria": "DB_DRIVER=maria composer test:db:sqlite",
- "test:db:postgres": "DB_DRIVER=postgres composer test:db:sqlite",
- "test:db:ms": "DB_DRIVER=mssql composer test:db:sqlite",
- "test:api": "bin/test/run-api-tests.sh",
- "test:unit:pretty": "@php vendor/bin/phpunit --order-by=random --colors=always --coverage-html build/coverage-unit-html",
- "infect:ci:base": "infection --threads=4 --log-verbosity=default --only-covered --skip-initial-tests",
- "infect:ci:unit": "@infect:ci:base --coverage=build/coverage-unit --min-msi=80",
- "infect:ci:db": "@infect:ci:base --coverage=build/coverage-db --min-msi=95 --configuration=infection-db.json",
- "infect:ci": "@parallel infect:ci:unit infect:ci:db",
- "infect:test": [
- "@parallel test:unit:ci test:db:sqlite:ci",
- "@infect:ci"
- ],
- "clean:dev": "rm -f data/database.sqlite && rm -f config/params/generated_config.php"
- },
- "scripts-descriptions": {
- "ci": "<fg=blue;options=bold>Alias for \"cs\", \"stan\", \"test:ci\" and \"infect:ci\"</>",
- "ci:parallel": "<fg=blue;options=bold>Same as \"ci\", but parallelizing tasks as much as possible</>",
- "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:db": "<fg=blue;options=bold>Runs database test suites on a SQLite, MySQL, MariaDB, PostgreSQL and MsSQL</>",
- "test:db:sqlite": "<fg=blue;options=bold>Runs database test suites on a SQLite database</>",
- "test:db:sqlite:ci": "<fg=blue;options=bold>Runs database test suites on a SQLite database, generating all needed reports and logs for CI envs</>",
- "test:db:mysql": "<fg=blue;options=bold>Runs database test suites on a MySQL database</>",
- "test:db:maria": "<fg=blue;options=bold>Runs database test suites on a MariaDB database</>",
- "test:db:postgres": "<fg=blue;options=bold>Runs database test suites on a PostgreSQL database</>",
- "test:db:ms": "<fg=blue;options=bold>Runs database test suites on a Miscrosoft SQL Server database</>",
- "test:api": "<fg=blue;options=bold>Runs API test suites</>",
- "test:unit:pretty": "<fg=blue;options=bold>Runs unit test suites and generates an HTML code coverage report</>",
- "infect:ci": "<fg=blue;options=bold>Checks unit and db tests quality applying mutation testing with existing reports and logs</>",
- "infect:ci:unit": "<fg=blue;options=bold>Checks unit tests quality applying mutation testing with existing reports and logs</>",
- "infect:ci:db": "<fg=blue;options=bold>Checks db tests quality applying mutation testing with existing reports and logs</>",
- "infect:test": "<fg=blue;options=bold>Runs unit and db tests, then checks tests quality applying mutation testing</>",
- "clean:dev": "<fg=blue;options=bold>Deletes artifacts which are gitignored and could affect dev env</>"
- },
- "config": {
- "sort-packages": true,
- "platform-check": false
- }
- }
|