diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml index 14da349..ca2197d 100644 --- a/.github/workflows/dependabot-auto-merge.yml +++ b/.github/workflows/dependabot-auto-merge.yml @@ -13,7 +13,7 @@ jobs: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@v1.3.3 + uses: dependabot/fetch-metadata@v1.6.0 with: github-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/fix-php-code-style-issues.yml b/.github/workflows/fix-php-code-style-issues.yml index 9a784a1..e8ff1c6 100644 --- a/.github/workflows/fix-php-code-style-issues.yml +++ b/.github/workflows/fix-php-code-style-issues.yml @@ -8,14 +8,14 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} - name: Fix PHP code style issues - uses: aglipanci/laravel-pint-action@0.1.0 + uses: aglipanci/laravel-pint-action@2.6 - name: Commit changes - uses: stefanzweifel/git-auto-commit-action@v4 + uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: Fix styling diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 557d263..ccfa9d9 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -11,7 +11,7 @@ jobs: name: phpstan runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -20,7 +20,7 @@ jobs: coverage: none - name: Install composer dependencies - uses: ramsey/composer-install@v1 + uses: ramsey/composer-install@v2 - name: Run PHPStan run: ./vendor/bin/phpstan --error-format=github diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 39ff7ee..bdeac46 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -13,18 +13,23 @@ jobs: fail-fast: true matrix: os: [ubuntu-latest, windows-latest] - php: [8.1] - laravel: [9.*] + php: [8.1, 8.2] + laravel: [9.*, 10.*] stability: [prefer-lowest, prefer-stable] include: - laravel: 9.* testbench: 7.* + - laravel: 10.* + testbench: 8.* + exclude: + - laravel: 9.* + php: 8.2 name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }} steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/update-changelog.yml b/.github/workflows/update-changelog.yml index b20f3b6..0cdea23 100644 --- a/.github/workflows/update-changelog.yml +++ b/.github/workflows/update-changelog.yml @@ -10,7 +10,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: main @@ -21,7 +21,7 @@ jobs: release-notes: ${{ github.event.release.body }} - name: Commit updated CHANGELOG - uses: stefanzweifel/git-auto-commit-action@v4 + uses: stefanzweifel/git-auto-commit-action@v5 with: branch: main commit_message: Update CHANGELOG diff --git a/CHANGELOG.md b/CHANGELOG.md index 9450de1..f9ccd38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,52 @@ # Changelog All notable changes to `laravel-csv` will be documented in this file. + +## v1.1.1 - 2022-11-07 + +### What's Changed + +- Bump dependabot/fetch-metadata from 1.3.4 to 1.3.5 by @dependabot in https://github.com/coderflexx/laravel-csv/pull/13 +- Update csv-importer.blade.php by @Globerada in https://github.com/coderflexx/laravel-csv/pull/12 + +### New Contributors + +- @Globerada made their first contribution in https://github.com/coderflexx/laravel-csv/pull/12 + +**Full Changelog**: https://github.com/coderflexx/laravel-csv/compare/v1.1.0...v1.1.1 + +## v1.1.0 - 2022-10-12 + +### What's Changed + +- Update README.md by @askdkc in https://github.com/coderflexx/laravel-csv/pull/9 +- Bump dependabot/fetch-metadata from 1.3.3 to 1.3.4 by @dependabot in https://github.com/coderflexx/laravel-csv/pull/10 +- Fixed vendor:publish tag name by @askdkc in https://github.com/coderflexx/laravel-csv/pull/11 + +### New Contributors + +- @dependabot made their first contribution in https://github.com/coderflexx/laravel-csv/pull/10 + +**Full Changelog**: https://github.com/coderflexx/laravel-csv/compare/v1.0.2...v1.1.0 + +## v1.0.2 - 2022-09-29 + +### What's Changed + +- Bug Fix: package installation failure by @askdkc in https://github.com/coderflexx/laravel-csv/pull/5 + +**Full Changelog**: https://github.com/coderflexx/laravel-csv/compare/v1.0.1...v1.0.2 + +## v1.0.1 - 2022-09-28 + +### What's Changed + +- Copy changes for README by @johnwesely in https://github.com/coderflexx/laravel-csv/pull/2 +- Fixed broken link by @askdkc in https://github.com/coderflexx/laravel-csv/pull/3 + +### New Contributors + +- @johnwesely made their first contribution in https://github.com/coderflexx/laravel-csv/pull/2 +- @askdkc made their first contribution in https://github.com/coderflexx/laravel-csv/pull/3 + +**Full Changelog**: https://github.com/coderflexx/laravel-csv/compare/v1.0.0...v1.0.1 diff --git a/README.md b/README.md index e3461a8..e29f32c 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@

-[![Latest Version on Packagist](https://img.shields.io/packagist/v/coderflexx/laravel-csv.svg?style=flat-square)](https://packagist.org/packages/coderflexx/laravel-csv) -[![GitHub Tests Action Status](https://img.shields.io/github/workflow/status/coderflexx/laravel-csv/run-tests?label=tests)](https://github.com/coderflexx/laravel-csv/actions?query=workflow%3Arun-tests+branch%3Amain) -[![GitHub Code Style Action Status](https://img.shields.io/github/workflow/status/coderflexx/laravel-csv/Fix%20PHP%20code%20style%20issues?label=code%20style)](https://github.com/coderflexx/laravel-csv/actions?query=workflow%3A"Fix+PHP+code+style+issues"+branch%3Amain) -[![Total Downloads](https://img.shields.io/packagist/dt/coderflexx/laravel-csv.svg?style=flat-square)](https://packagist.org/packages/coderflexx/laravel-csv) +[![Latest Version on Packagist](https://img.shields.io/packagist/v/coderflex/laravel-csv.svg?style=flat-square)](https://packagist.org/packages/coderflex/laravel-csv) +[![GitHub Tests Action Status](https://img.shields.io/github/actions/workflow/status/coderflexx/laravel-csv/run-tests.yml?branch=main&label=tests)](https://github.com/coderflexx/laravel-csv/actions?query=workflow%3Arun-tests+branch%3Amain) +[![GitHub Code Style Action Status](https://img.shields.io/github/actions/workflow/status/coderflexx/laravel-csv/phpstan.yml?branch=main&label=code%20style)](https://github.com/coderflexx/laravel-csv/actions?query=workflow%3A"Fix+PHP+code+style+issues"+branch%3Amain) +[![Total Downloads](https://img.shields.io/packagist/dt/coderflex/laravel-csv.svg?style=flat-square)](https://packagist.org/packages/coderflex/laravel-csv) - [Introduction](#introduction) @@ -27,7 +27,7 @@ - [License](#license) ## Introduction -__Laravel CSV__ Package is a package created on top of Laravel [livewire](https://laravel-livewire.com) package, and it handles importing thousands of records without any issues. +__Laravel CSV__ Package is a package created on top of Laravel [livewire](https://laravel-livewire.com) for easily handling imports with a simple API. ## Installation @@ -39,20 +39,22 @@ composer require coderflex/laravel-csv ## Configuration -You can publish and run the migrations with: +Publish and run the migrations with: ```bash php artisan vendor:publish --tag="csv-migrations" php artisan migrate ``` -You can publish the config file with: +Add trait **HasCsvImports** to your User model. + +Publish the config file with: ```bash php artisan vendor:publish --tag="csv-config" ``` -This is the contents of the published config file: +The following is the contents of the published config file: ```php @@ -63,10 +65,8 @@ return [ | Default Layout |-------------------------------------------------------------------------- | - | This package came with multiple layouts to serve your need, and - | currently it supports "tailwindcss" and "bootstrap", by default - | the layout is tailwind. - | currently support: "tailwindcss", "bootstrap" + | This package plans on supporting multiple CSS frameworks. + | Currently, 'tailwindcss' is the default and only supported framework. | */ 'layout' => 'tailwindcss', @@ -76,33 +76,31 @@ return [ | Max Upload File Size |-------------------------------------------------------------------------- | - | This package came with file validation for uploaded files, - | and by default the file should not be greater than 20MB. If - | you wish to increase/decrease this value, you may change the - | value below. - | Note that the value is defined by "KB". + | The default maximumum file size that can be imported by this + | package is 20MB. If you wish to increase/decrease this value, + | change the value in KB below. | */ 'file_upload_size' => 20000, ]; ``` -The `layout` option is for choosing which CSS Framework you are using, currently supports only `tailwindcss`, and we're working on other CSS frameworks to implement in the future. +The `layout` option is for choosing which CSS framework you are using and currently supports only `tailwindcss`. We are working on other CSS frameworks to implement in the future. -The `file_upload_size` is for validation rules, and it helps define the file size of the uploaded files, or. You can define this one from [livewire config](https://github.com/livewire/livewire/blob/master/config/livewire.php#L100) file. +The `file_upload_size` is for validation rules, and it defines the maximum file size of uploaded files. You may also define this value from the [livewire config](https://github.com/livewire/livewire/blob/master/config/livewire.php#L100) file. Optionally, you can publish the views using ```bash -php artisan vendor:publish --tag="csv-views" +php artisan vendor:publish --tag="laravel-csv-views" ``` -> Before Using this command, please take a look at this [section](in-tall-stack-project) below. +> Before Using this command, please take a look at this [section](#in-tall-stack-project) below. ## Usage ### CSV Importer Component -Using this package, is really simple, all what you need to do is implementing the component inside your desired file. +Using this package is a breeze. To implement the importer in your project, simply include the following component inside a Blade view. ```blade Import ``` -If you want to style it, you can use the `class` attribute, or any attribute you want really +To style the button, use the `class` attribute with Tailwind utility classes. ```blade ``` ### In TALL stack project -If you are using this package in a [TALL Stack]() project, (Tailwindcss, Alpinejs, Laravel, Livewire) All what you need to do is publish the vendor views +If you are using this package in a [TALL Stack](https://tallstack.dev/) project, (Tailwindcss, Alpinejs, Laravel, Livewire) publish the vendor views to include Laravel-CSV in your project. ```bash php artisan vendor:publish --tag="csv-views" ``` -Then compile your assets, to add the additional classes, came with the component. +Then compile your assets. ```bash npm run dev ``` ### In none TALL Stack project -If you are not using the TALL Stack by default, you may use the `csv directives` to add the necessary styles/scripts +If you are not using the TALL Stack, use the `csv directives` to add the necessary styles/scripts. ```blade @@ -170,19 +168,19 @@ If you are not using the TALL Stack by default, you may use the `csv directives` ``` ### Using Queues -This package is using [queues](https://laravel.com/docs/9.x/queues#main-content), under the hood with [PHP Generators](https://www.php.net/manual/en/language.generators.overview.php), to make it works fast and efficient. +This package uses [queues](https://laravel.com/docs/9.x/queues#main-content) under the hood with [PHP Generators](https://www.php.net/manual/en/language.generators.overview.php) to make it fast and efficient. -You need first to create the `batches table` +Create the `batches table` by running ```bash php artisan queue:batches-table ``` -Then run the migration +Then, run the migration. ``` php artisan migrate ``` -After that, you need to set up the queues' configuration. -You may head into [Laravel Queues Documentation](https://laravel.com/docs/9.x/queues#main-content) to learn more. +After that, set up the queues' configuration. +Head to [Laravel Queues Documentation](https://laravel.com/docs/9.x/queues#main-content) to learn more. ## Testing @@ -204,7 +202,7 @@ Please see [CONTRIBUTING](https://github.com/ousid/.github/blob/main/CONTRIBUTIN Please review [our security policy](../../security/policy) on how to report security vulnerabilities. ## Inspiration -This Package Was Inspired by [codecourse](https://codecourse.com) video series, and if you want to learn how this package was created, make sure to take a look at this [video series](https://codecourse.com/subjects/laravel-livewire) +This Package Was Inspired by [codecourse](https://codecourse.com) video series. If you want to learn how this package was created, make sure to take a look at this [video series](https://codecourse.com/subjects/laravel-livewire) ## Credits diff --git a/composer.json b/composer.json index 083c2cc..5896bb2 100644 --- a/composer.json +++ b/composer.json @@ -18,23 +18,23 @@ ], "require": { "php": "^8.1", - "illuminate/contracts": "^9.0", + "illuminate/contracts": "^9.0|^10.0", "league/csv": "^9.8", "livewire/livewire": "^2.10", "spatie/laravel-package-tools": "^1.9.2" }, "require-dev": { "laravel/pint": "^1.0", - "nunomaduro/collision": "^6.0", + "nunomaduro/collision": "^6.0|^7.0", "nunomaduro/larastan": "^2.0.1", - "orchestra/testbench": "^7.0", - "pestphp/pest": "^1.21", + "orchestra/testbench": "^7.0|^8.0", + "pestphp/pest": "^1.22", "pestphp/pest-plugin-laravel": "^1.1", "pestphp/pest-plugin-livewire": "^1.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^9.5|^10.0" }, "autoload": { "files": [ diff --git a/config/laravel_csv.php b/config/laravel_csv.php index 54aebbb..ba0eaa8 100644 --- a/config/laravel_csv.php +++ b/config/laravel_csv.php @@ -7,10 +7,8 @@ | Default Layout |-------------------------------------------------------------------------- | - | This package came with multiple layouts to serve your need, and - | currently it supports "tailwindcss" and "bootstrap", by default - | the layout is tailwind. - | currently support: "tailwindcss", "bootstrap" + | This package plans on supporting multiple CSS frameworks. + | Currently, 'tailwindcss' is the default and only supported framework. | */ 'layout' => 'tailwindcss', @@ -20,11 +18,9 @@ | Max Upload File Size |-------------------------------------------------------------------------- | - | This package came with file validation for uploaded files, - | and by default the file should not be greater than 20MB. If - | you wish to increase/decrease this value, you may change the - | value below. - | Note that the value is defined by "KB". + | The default maximumum file size that can be imported by this + | package is 20MB. If you wish to increase/decrease this value, + | change the value in KB below. | */ 'file_upload_size' => 20000, diff --git a/package-lock.json b/package-lock.json index 1bd7e5a..22e063c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5278,9 +5278,9 @@ } }, "node_modules/img-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -5290,9 +5290,9 @@ } }, "node_modules/img-loader/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -5597,9 +5597,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -5747,9 +5747,9 @@ } }, "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -8778,9 +8778,9 @@ } }, "node_modules/vue-style-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -8790,9 +8790,9 @@ } }, "node_modules/vue-style-loader/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -8826,9 +8826,9 @@ } }, "node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.76.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz", + "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -13393,18 +13393,18 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" } }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -13626,9 +13626,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonfile": { @@ -13736,9 +13736,9 @@ "dev": true }, "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -15952,18 +15952,18 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" } }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -15993,9 +15993,9 @@ } }, "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.76.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz", + "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", diff --git a/phpstan.neon.dist b/phpstan.neon.dist index a91953b..fb14673 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -2,7 +2,7 @@ includes: - phpstan-baseline.neon parameters: - level: 4 + level: 6 paths: - src - config @@ -11,4 +11,8 @@ parameters: checkOctaneCompatibility: true checkModelProperties: true checkMissingIterableValueType: false + checkGenericClassInNonGenericObjectType: false + ignoreErrors: + - '#Internal error: Internal error: Target class \[laravel-csv\] does not exist.#' + - '#Internal error: Internal error: Target class \[livewire\] does not exist.#' diff --git a/resources/views/livewire/tailwindcss/csv-importer.blade.php b/resources/views/livewire/tailwindcss/csv-importer.blade.php index 7f2dcc7..b93ce34 100644 --- a/resources/views/livewire/tailwindcss/csv-importer.blade.php +++ b/resources/views/livewire/tailwindcss/csv-importer.blade.php @@ -31,7 +31,7 @@ x-on:dragover.prevent="dropping = true" x-on:dragleave.prevent="dropping = false" x-on:drop.prevent="dropping = false" - x-on:drop.prevnet="handleDrop($event)" + x-on:drop.prevent="handleDrop($event)" x-data="{ dropping: false, diff --git a/src/Concerns/HasCsvProperties.php b/src/Concerns/HasCsvProperties.php index 178e0b9..50f530d 100644 --- a/src/Concerns/HasCsvProperties.php +++ b/src/Concerns/HasCsvProperties.php @@ -20,8 +20,6 @@ trait HasCsvProperties /** * Read CSV Property - * - * @return Reader */ public function getReadCsvProperty(): Reader { @@ -30,8 +28,6 @@ public function getReadCsvProperty(): Reader /** * Get CSV Records Property - * - * @return TabularDataReader */ public function getCsvRecordsProperty(): TabularDataReader { @@ -40,8 +36,6 @@ public function getCsvRecordsProperty(): TabularDataReader /** * Handle CSV Information properties from the given file - * - * @return array|\Illuminate\Support\MessageBag */ public function handleCsvProperties(): array|MessageBag { diff --git a/src/Concerns/InteractsWithColumns.php b/src/Concerns/InteractsWithColumns.php index 8fdfc82..0448d22 100644 --- a/src/Concerns/InteractsWithColumns.php +++ b/src/Concerns/InteractsWithColumns.php @@ -6,8 +6,6 @@ trait InteractsWithColumns { /** * Converts the columnsToMap property into an associative array. - * - * @return array */ protected function mapThroughColumns(): array { @@ -22,8 +20,6 @@ protected function mapThroughColumns(): array /** * Maps requiredColumns property into columnsToMap required state. - * - * @return array */ protected function mapThroughRequiredColumns(): array { @@ -39,8 +35,6 @@ protected function mapThroughRequiredColumns(): array /** * Maps columnLabels property into columnsToMap label state. - * - * @return array */ protected function mapThroughColumnLabels(): array { diff --git a/src/Concerns/InteractsWithCsvFiles.php b/src/Concerns/InteractsWithCsvFiles.php index 9f43a71..5f7e22a 100644 --- a/src/Concerns/InteractsWithCsvFiles.php +++ b/src/Concerns/InteractsWithCsvFiles.php @@ -8,9 +8,6 @@ trait InteractsWithCsvFiles { /** * Read CSV File. - * - * @param string $path - * @return Reader */ protected function readCSV(string $path): Reader { diff --git a/src/Http/Livewire/CsvImporter.php b/src/Http/Livewire/CsvImporter.php index 27b022c..16fd3b0 100644 --- a/src/Http/Livewire/CsvImporter.php +++ b/src/Http/Livewire/CsvImporter.php @@ -22,30 +22,24 @@ class CsvImporter extends Component /** @var string */ public $model; - /** @var bool */ public bool $open = false; /** @var object */ public $file; - /** @var array */ public array $columnsToMap = []; - /** @var array */ public array $requiredColumns = []; - /** @var array */ public array $columnLabels = []; - /** @var array */ public array $fileHeaders = []; - /** @var int */ public int $fileRowCount = 0; /** @var array */ protected $exceptions = [ - 'mode', 'columnsToMap', 'open', + 'model', 'columnsToMap', 'open', 'columnLabels', 'requiredColumns', ]; @@ -83,7 +77,7 @@ public function import() $this->resetExcept($this->exceptions); - $this->emitTo('csv-imports', 'imports.refresh'); + $this->emitTo('handle-imports', 'imports.refresh'); } public function toggle() diff --git a/src/Http/Livewire/HandleImports.php b/src/Http/Livewire/HandleImports.php index c912f05..7715978 100644 --- a/src/Http/Livewire/HandleImports.php +++ b/src/Http/Livewire/HandleImports.php @@ -4,6 +4,9 @@ use function Coderflex\LaravelCsv\csv_view_path; use Coderflex\LaravelCsv\Models\Import; +use Illuminate\Contracts\View\Factory; +use Illuminate\Contracts\View\View; +use Illuminate\Database\Eloquent\Collection; use Livewire\Component; class HandleImports extends Component @@ -16,12 +19,12 @@ class HandleImports extends Component 'imports.refresh' => '$refresh', ]; - public function mount(string $model) + public function mount(string $model): void { $this->model = $model; } - public function getImportsProperty() + public function getImportsProperty(): Collection { /** @var \Illuminate\Foundation\Auth\User */ $user = auth()->user(); @@ -34,7 +37,7 @@ public function getImportsProperty() ->get(); } - public function render() + public function render(): View|Factory { return view( csv_view_path('handle-imports') diff --git a/src/Jobs/ImportCsv.php b/src/Jobs/ImportCsv.php index dc8dada..d89e046 100644 --- a/src/Jobs/ImportCsv.php +++ b/src/Jobs/ImportCsv.php @@ -38,7 +38,7 @@ public function handle() $affectedRows = $this->model::upsert( $this->chunk, ['id'], - collect($this->columns)->diff('id')->keys()->toArray(), + collect($this->columns)->diff(['id'])->keys()->toArray(), ); $this->import->increment('processed_rows', $affectedRows); diff --git a/src/LaravelCsvDirectives.php b/src/LaravelCsvDirectives.php index 61309ec..0cd203e 100644 --- a/src/LaravelCsvDirectives.php +++ b/src/LaravelCsvDirectives.php @@ -4,21 +4,34 @@ class LaravelCsvDirectives { - public static function csvStyles() + /** + * Get CSV Styles + * + * @return string + */ + public static function csvStyles(): string|null { if (config('laravel_csv.layout') == 'tailwindcss') { return self::getTailwindStyle(); } + + return self::getTailwindStyle(); } - public static function csvScripts() + /** + * Get CSV Scripts + */ + public static function csvScripts(): string { return <<<'HTML' HTML; } - protected static function getTailwindStyle() + /** + * Get Tailwind Style Path + */ + protected static function getTailwindStyle(): string { return <<<'HTML' diff --git a/src/LaravelCsvManager.php b/src/LaravelCsvManager.php index 4d44cf2..98e8182 100644 --- a/src/LaravelCsvManager.php +++ b/src/LaravelCsvManager.php @@ -6,10 +6,6 @@ class LaravelCsvManager { /** * Get the given size and formated it. - * - * @param int $size - * @param int $precision - * @return string|int */ public function formatFileSize(int $size, int $precision = 2): string|int { diff --git a/src/LaravelCsvServiceProvider.php b/src/LaravelCsvServiceProvider.php index 31fcd8c..94a8900 100644 --- a/src/LaravelCsvServiceProvider.php +++ b/src/LaravelCsvServiceProvider.php @@ -43,8 +43,6 @@ public function registeringPackage() /** * Configure Laravel CSV Blade components - * - * @return void */ protected function configureComponents(): void { @@ -55,20 +53,18 @@ protected function configureComponents(): void /** * Register livewire components - * - * @return void */ protected function registerLivewireComponents(): void { + /** @phpstan-ignore-next-line */ Livewire::component('csv-importer', CsvImporter::class); + + /** @phpstan-ignore-next-line */ Livewire::component('handle-imports', HandleImports::class); } /** * Register given component. - * - * @param string $component - * @return void */ protected function registerComponent(string $component): void { diff --git a/src/Scopes/ImportScope.php b/src/Scopes/ImportScope.php index 2d73cf1..3273301 100644 --- a/src/Scopes/ImportScope.php +++ b/src/Scopes/ImportScope.php @@ -9,8 +9,6 @@ trait ImportScope { /** * Completed Status Scope - * - * @return \Illuminate\Database\Eloquent\Builder */ public function scopeCompleted(Builder $builder): Builder { @@ -19,8 +17,6 @@ public function scopeCompleted(Builder $builder): Builder /** * Not Completed Status Scope - * - * @return \Illuminate\Database\Eloquent\Builder */ public function scopeUnCompleted(Builder $builder): Builder { @@ -29,8 +25,6 @@ public function scopeUnCompleted(Builder $builder): Builder /** * Get the percentage of the model completion - * - * @return int|float */ public function percentageComplete(): int|float { @@ -39,9 +33,6 @@ public function percentageComplete(): int|float /** * Fetch imports based on the given model - * - * @param string $model - * @return \Illuminate\Database\Eloquent\Builder */ public function scopeForModel(Builder $builder, string $model): Builder { @@ -50,9 +41,6 @@ public function scopeForModel(Builder $builder, string $model): Builder /** * Fetch imports on the user id - * - * @param int $user - * @return \Illuminate\Database\Eloquent\Builder */ public function scopeForUser(Builder $builder, int $user): Builder { diff --git a/src/Utilities/ChunkIterator.php b/src/Utilities/ChunkIterator.php index 5ed7233..7b97719 100644 --- a/src/Utilities/ChunkIterator.php +++ b/src/Utilities/ChunkIterator.php @@ -2,6 +2,7 @@ namespace Coderflex\LaravelCsv\Utilities; +use Generator; use Iterator; /** @@ -17,14 +18,8 @@ */ class ChunkIterator { - /** - * @var Iterator - */ protected Iterator $iterator; - /** - * @var int - */ protected int $chunkSize; public function __construct(Iterator $iterator, int $chunkSize) @@ -36,7 +31,7 @@ public function __construct(Iterator $iterator, int $chunkSize) /** * Chunk the given data */ - public function get() + public function get(): Generator { $chunk = []; diff --git a/src/helpers.php b/src/helpers.php index 78e4e9e..5532e05 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -5,11 +5,8 @@ if (! function_exists('Coderflex\LaravelCsv\csv_view_path')) { /** * Get the evaluated view content from the livewire view - * - * @param string|null $view - * @return string */ - function csv_view_path($view): string + function csv_view_path(string|null $view): string { return 'laravel-csv::livewire.'.config('laravel_csv.layout').'.'.$view; } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy