{
    "$schema": "https://getcomposer.org/schema.json",
    "name": "laravel/laravel",
    "type": "project",
    "description": "The skeleton application for the Laravel framework.",
    "keywords": ["laravel", "framework"],
    "license": "MIT",
    "require": {
        "php": "^8.2",
        "laravel/framework": "^12.0",
        "laravel/sanctum": "^4.0",
        "laravel/tinker": "^2.10.1",
        "maatwebsite/excel": "^3.1"
    },
    "require-dev": {
        "fakerphp/faker": "^1.23",
        "laravel/pail": "^1.2.2",
        "laravel/pint": "^1.24",
        "laravel/sail": "^1.41",
        "mockery/mockery": "^1.6",
        "nunomaduro/collision": "^8.6",
        "phpunit/phpunit": "^11.5.50"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "setup": [
            "composer install",
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"",
            "@php artisan key:generate",
            "@php artisan migrate --force",
            "npm install",
            "npm run build"
        ],
        "dev": [
            "Composer\\Config::disableProcessTimeout",
            "npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1 --timeout=0\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite --kill-others"
        ],
        "test": [
            "@php artisan config:clear --ansi",
            "@php artisan test"
        ],
        "test:coverage": [
            "@php -r \"putenv('XDEBUG_MODE=coverage');\"",
            "@php -d xdebug.mode=coverage vendor/bin/phpunit -c phpunit.invoice-coverage.xml --coverage-text --coverage-filter=app/Services"
        ],
        "test:coverage:workorder-tasks": [
            "@php -d xdebug.mode=coverage vendor/bin/phpunit -c phpunit.workorder-tasks-coverage.xml --coverage-clover=coverage-workorder-tasks.xml",
            "@php -r \"$xml=simplexml_load_file('coverage-workorder-tasks.xml'); $rate=(float) $xml->project->metrics['coveredelements'] / max(1, (int) $xml->project->metrics['elements']) * 100; if ($rate < 90) { fwrite(STDERR, sprintf('Cobertura WorkOrder tasks insuficiente: %.2f%%\\n', $rate)); exit(1); } echo sprintf('Cobertura WorkOrder tasks: %.2f%%\\n', $rate);\""
        ],
        "test:coverage:global": [
            "@php -d xdebug.mode=coverage vendor/bin/phpunit -c phpunit.xml --coverage-clover=coverage-global.xml --coverage-html=coverage-global-html",
            "@php -r \"$xml=simplexml_load_file('coverage-global.xml'); $rate=(float) $xml->project->metrics['coveredstatements'] / max(1, (int) $xml->project->metrics['statements']) * 100; if ($rate < 90) { fwrite(STDERR, sprintf('Cobertura global insuficiente: %.2f%%\\n', $rate)); exit(1); } echo sprintf('Cobertura global: %.2f%%\\n', $rate);\""
        ],
        "test:coverage:search": [
            "@php -r \"putenv('XDEBUG_MODE=coverage');\"",
            "@php -d xdebug.mode=coverage vendor/bin/phpunit -c phpunit.search-coverage.xml --coverage-text"
        ],
        "test:coverage:portal": [
            "@php -r \"putenv('XDEBUG_MODE=coverage');\"",
            "@php -d xdebug.mode=coverage vendor/bin/phpunit -c phpunit.portal-coverage.xml --coverage-text"
        ],
        "test:coverage:mail": [
            "@php -r \"putenv('XDEBUG_MODE=coverage');\"",
            "@php -d xdebug.mode=coverage vendor/bin/phpunit -c phpunit.mail-coverage.xml --coverage-text"
        ],
        "test:coverage:hist-rep": [
            "@php -r \"putenv('XDEBUG_MODE=coverage');\"",
            "@php -d xdebug.mode=coverage vendor/bin/phpunit -c phpunit.hist-rep-coverage.xml --coverage-text"
        ],
        "test:coverage:nv-bod": [
            "@php -r \"putenv('XDEBUG_MODE=coverage');\"",
            "@php -d xdebug.mode=coverage vendor/bin/phpunit -c phpunit.nv-bod-coverage.xml --coverage-text"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-update-cmd": [
            "@php artisan vendor:publish --tag=laravel-assets --ansi --force"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi",
            "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
            "@php artisan migrate --graceful --ansi"
        ],
        "pre-package-uninstall": [
            "Illuminate\\Foundation\\ComposerScripts::prePackageUninstall"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true,
        "allow-plugins": {
            "pestphp/pest-plugin": true,
            "php-http/discovery": true
        }
    },
    "minimum-stability": "stable",
    "prefer-stable": true
}
