diff --git a/.github/workflows/analyse.yaml b/.github/workflows/analyse.yaml index 80d7b43..9d6f12b 100644 --- a/.github/workflows/analyse.yaml +++ b/.github/workflows/analyse.yaml @@ -36,7 +36,7 @@ jobs: composer config http-basic.nova.laravel.com ${{ secrets.NOVA_USERNAME }} ${{ secrets.NOVA_PASSWORD }} - name: Install dependencies - uses: "ramsey/composer-install@v3" + uses: ramsey/composer-install@v4 with: dependency-versions: "highest" composer-options: "--prefer-dist --no-cache" diff --git a/.github/workflows/audit.yaml b/.github/workflows/audit.yaml index d895ea3..35b8f74 100644 --- a/.github/workflows/audit.yaml +++ b/.github/workflows/audit.yaml @@ -17,6 +17,8 @@ jobs: - 8.1 - 8.2 - 8.3 + - 8.4 + - 8.5 experimental: - true @@ -38,7 +40,7 @@ jobs: composer config http-basic.nova.laravel.com ${{ secrets.NOVA_USERNAME }} ${{ secrets.NOVA_PASSWORD }} - name: Install dependencies - uses: "ramsey/composer-install@v3" + uses: ramsey/composer-install@v4 with: dependency-versions: "highest" composer-options: "--prefer-dist --prefer-stable --no-cache" diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 000cabf..3090146 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -6,6 +6,53 @@ on: workflow_dispatch: jobs: + tests-on-laravel-13: + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} + strategy: + matrix: + os: + - "ubuntu-latest" + php: + - 8.3 + - 8.4 + - 8.5 + dependencies: + - "highest" + laravel: + - "13.x" + experimental: + - false + + name: Laravel ${{ matrix.laravel }} on PHP${{ matrix.php }}-${{ matrix.os }} (${{ matrix.dependencies }}) + + steps: + - name: Checkout code + uses: actions/checkout@v6 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: dom, curl, libxml, mbstring, zip, pcntl, sqlite3, pdo_sqlite, bcmath, fileinfo + coverage: none + + - name: "Setup CI Authentication" + run: | + composer config http-basic.nova.laravel.com ${{ secrets.NOVA_USERNAME }} ${{ secrets.NOVA_PASSWORD }} + + - name: Install dependencies + uses: ramsey/composer-install@v4 + with: + dependency-versions: "${{ matrix.dependencies }}" + composer-options: "--prefer-dist --no-cache --with=laravel/framework:${{ matrix.laravel }}" + + - name: Installed dependencies + run: composer show -D + + - name: Execute tests + run: composer run test + tests-on-laravel-12: runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.experimental }} @@ -17,6 +64,7 @@ jobs: - 8.2 - 8.3 - 8.4 + - 8.5 dependencies: - "highest" laravel: @@ -28,7 +76,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -42,7 +90,7 @@ jobs: composer config http-basic.nova.laravel.com ${{ secrets.NOVA_USERNAME }} ${{ secrets.NOVA_PASSWORD }} - name: Install dependencies - uses: "ramsey/composer-install@v3" + uses: ramsey/composer-install@v4 with: dependency-versions: "${{ matrix.dependencies }}" composer-options: "--prefer-dist --no-cache --with=laravel/framework:${{ matrix.laravel }}" @@ -75,7 +123,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -89,7 +137,7 @@ jobs: composer config http-basic.nova.laravel.com ${{ secrets.NOVA_USERNAME }} ${{ secrets.NOVA_PASSWORD }} - name: Install dependencies - uses: "ramsey/composer-install@v3" + uses: ramsey/composer-install@v4 with: dependency-versions: "${{ matrix.dependencies }}" composer-options: "--prefer-dist --no-cache --with=laravel/framework:${{ matrix.laravel }}" @@ -122,7 +170,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -136,7 +184,7 @@ jobs: composer config http-basic.nova.laravel.com ${{ secrets.NOVA_USERNAME }} ${{ secrets.NOVA_PASSWORD }} - name: Install dependencies - uses: "ramsey/composer-install@v3" + uses: ramsey/composer-install@v4 with: dependency-versions: "${{ matrix.dependencies }}" composer-options: "--prefer-dist --no-cache --with=laravel/framework:${{ matrix.laravel }}" diff --git a/composer.json b/composer.json index dbb89ef..4c9a931 100644 --- a/composer.json +++ b/composer.json @@ -25,22 +25,22 @@ "require": { "php": "^8.1", "composer-runtime-api": "^2.2", - "illuminate/support": "^10.48.23|^11.35|^12.0", + "illuminate/support": "^10.48.23|^11.35|^12.0|^13.0", "laravie/serialize-queries": "^3.0", "laravel/serializable-closure": "^1.0|^2.0", "symfony/polyfill-php83": "^1.31" }, "require-dev": { "guzzlehttp/guzzle": "^7.2", - "laravel/nova": "^5.2", + "laravel/nova": "^5.8.1", "laravel/nova-devtool": "^1.6", "laravel/pint": "^1.20", - "orchestra/testbench": "^8.20|^9.0|^10.0", - "orchestra/pest-plugin-testbench": "^2.0|^3.0", + "orchestra/testbench": "^8.20|^9.0|^10.0|^11.0", + "orchestra/pest-plugin-testbench": "^2.0|^3.0|^4.0", "phpstan/phpstan": "^2.1" }, "conflict": { - "laravel/nova": "<5.0.0|>=6.0.0" + "laravel/nova": "<5.8.1|>=6.0.0" }, "repositories": [ { "type": "composer", "url": "https://nova.laravel.com" } diff --git a/pint.json b/pint.json index cc6232c..29dfa4b 100644 --- a/pint.json +++ b/pint.json @@ -1,6 +1,7 @@ { "preset": "laravel", "rules": { + "fully_qualified_strict_types": false, "method_chaining_indentation": false, "no_superfluous_phpdoc_tags": { "allow_mixed": true diff --git a/src/Jobs/QueuedExportAsCsv.php b/src/Jobs/QueuedExportAsCsv.php index 248352c..7620346 100644 --- a/src/Jobs/QueuedExportAsCsv.php +++ b/src/Jobs/QueuedExportAsCsv.php @@ -10,6 +10,7 @@ use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Storage; +use Laravel\Nova\Actions\Responses\StreamExportableCsv; use Laravel\Nova\Util; use NovaKit\NovaQueuedExportAsCsv\Events\QueuedCsvExported; use Rap2hpoutre\FastExcel\FastExcel; @@ -67,7 +68,11 @@ public function handle(): void $storageDisk = $this->options['storageDisk']; $filename = $this->options['filename']; - $exportedFilename = (new FastExcel($eloquentGenerator()))->export("/tmp/{$filename}", $withFormatCallback); + $exporter = class_exists(FastExcel::class) + ? new FastExcel($eloquentGenerator()) + : new StreamExportableCsv($eloquentGenerator()); + + $exportedFilename = $exporter->export("/tmp/{$filename}", $withFormatCallback); $storedFilename = Storage::disk($storageDisk)->putFileAs( 'nova-actions-export-as-csv', new File($exportedFilename), $filename, 'public'