diff --git a/.env.example b/.env.example index 7b49625..a303681 100644 --- a/.env.example +++ b/.env.example @@ -1,9 +1,9 @@ -APP_NAME=Laravel +APP_NAME=Phost APP_ENV=local APP_KEY= APP_DEBUG=true APP_TIMEZONE=UTC -APP_URL=http://localhost +APP_URL=http://phost.test APP_LOCALE=en APP_FALLBACK_LOCALE=en diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000..26c0946 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,3 @@ +022d92c18a4a5a38658ee14dc4af958b26e597cf +63f8c01938730a01258d0e6b8a1325b82d43ce09 +d7e0b956a369047666dfe25eaf29c15f2a74fb92 diff --git a/.github/workflows/codestyle.yml b/.github/workflows/codestyle.yml new file mode 100644 index 0000000..ab34eea --- /dev/null +++ b/.github/workflows/codestyle.yml @@ -0,0 +1,119 @@ +name: codestyle + +# Commits made in here will not trigger any workflows +# Checkout Duster's documentation for a workaround + +on: + pull_request: + branches: [development, dev, acceptance, staging, main, master] + +jobs: + skip-duplicates: + continue-on-error: true # Uncomment once integration is finished + runs-on: ubuntu-latest + + # Map a step output to a job output + outputs: + should_skip: ${{ steps.skip_check.outputs.should_skip }} + + steps: + - id: skip_check + uses: fkirc/skip-duplicate-actions@v5 + with: + # All of these options are optional, so you can remove them if you are happy with the defaults + cancel_others: "true" + concurrent_skipping: "same_content" + skip_after_successful_duplicate: "true" + paths_ignore: '["**/README.md", "**/docs/**"]' + + duster-fix: + needs: skip-duplicates + if: needs.skip-duplicates.outputs.should_skip != 'true' + + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} + + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + - run: npm ci + + - uses: shivammathur/setup-php@v2 + with: + php-version: "8.2" + + - name: Cache Composer dependencies + uses: actions/cache@v3 + with: + path: /tmp/composer-cache + key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + + - uses: php-actions/composer@v6 + with: + php_version: "8.2" + php_extensions: pcntl + version: 2.x + + - name: Run fixers + run: composer fix + + - uses: stefanzweifel/git-auto-commit-action@v4 + id: auto_commit_action + with: + commit_message: Dusting + commit_user_name: GitHub Action + commit_user_email: actions@github.com + + - name: Ignore Duster commit in git blame + if: steps.auto_commit_action.outputs.changes_detected == 'true' + run: echo ${{ steps.auto_commit_action.outputs.commit_hash }} >> .git-blame-ignore-revs + + - uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Ignore Dusting commit in git blame + commit_user_name: GitHub Action + commit_user_email: actions@github.com + + duster-lint: + needs: skip-duplicates + if: needs.skip-duplicates.outputs.should_skip != 'true' + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} + + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + - run: npm ci + + - uses: shivammathur/setup-php@v2 + with: + php-version: "8.2" + + - name: Cache Composer dependencies + uses: actions/cache@v3 + with: + path: /tmp/composer-cache + key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + + - uses: php-actions/composer@v6 + with: + php_version: "8.2" + php_extensions: pcntl + version: 2.x + + - name: Run linters & static analysis + run: composer lint diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..c6f6bbd --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,69 @@ +name: tests + +on: + pull_request: + branches: [development, dev, acceptance, staging, main, master] + +jobs: + skip-duplicates: + continue-on-error: true # Uncomment once integration is finished + runs-on: ubuntu-latest + + # Map a step output to a job output + outputs: + should_skip: ${{ steps.skip_check.outputs.should_skip }} + + steps: + - id: skip_check + uses: fkirc/skip-duplicate-actions@v5 + with: + # All of these options are optional, so you can remove them if you are happy with the defaults + cancel_others: "true" + concurrent_skipping: "same_content" + skip_after_successful_duplicate: "true" + paths_ignore: '["**/README.md", "**/docs/**"]' + + laravel-tests: + needs: skip-duplicates + if: needs.skip-duplicates.outputs.should_skip != 'true' + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - uses: shivammathur/setup-php@v2 + with: + php-version: "8.2" + + - name: Cache Composer dependencies + uses: actions/cache@v3 + with: + path: /tmp/composer-cache + key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + + - uses: php-actions/composer@v6 + with: + php_version: "8.2" + php_extensions: pcntl + version: 2.x + + - name: Copy .env + run: php -r "file_exists('.env') || copy('.env.example', '.env');" + + - name: Generate key + run: php artisan key:generate + + # - name: Directory Permissions + # run: chmod -R 777 storage bootstrap/cache + + - name: Create Database + run: | + mkdir -p database + touch database/database.sqlite + + - name: Execute tests + env: + DB_CONNECTION: sqlite + DB_DATABASE: database/database.sqlite + run: php artisan test diff --git a/.gitignore b/.gitignore index 7fe978f..18e41da 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,11 @@ +**/.DS_Store /.phpunit.cache /node_modules /public/build /public/hot /public/storage /storage/*.key +/storage/pail /vendor .env .env.backup @@ -17,3 +19,11 @@ yarn-error.log /.fleet /.idea /.vscode + +output.log +docker_tag +DOCKER_ENV +Dockerfile-php-build + +_ide_helper.php +.phpstorm.meta.php diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 0000000..04bf7e4 --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,30 @@ +in([ + __DIR__ . '/app', + __DIR__ . '/config', + __DIR__ . '/database', + __DIR__ . '/resources', + __DIR__ . '/routes', + __DIR__ . '/tests', + ]) + ->name('*.php') + ->notName('*.blade.php') + ->ignoreDotFiles(true) + ->ignoreVCS(true); + +return (new Config) + ->setFinder($finder) + ->setRules([]) + ->setRiskyAllowed(true) + ->setUsingCache(false); + +// @codeCoverageIgnoreEnd diff --git a/.phpcs.xml.dist b/.phpcs.xml.dist new file mode 100644 index 0000000..cbc2c07 --- /dev/null +++ b/.phpcs.xml.dist @@ -0,0 +1,88 @@ + + + Gedachtegoed PHP CS rules for Laravel + + app + config + database + public + resources + routes + tests + + Gedachtegoed PHP CS rules for Laravel + + + */cache/* + */*.js + */*.css + */*.xml + */*.blade.php + */autoload.php + */storage/* + */docs/* + */vendor/* + */migrations/* + + + + + + + + + /public/index.php + + /tests + + + + + + + + */database/* + */tests/* + + + + + + + + + + + + + + */tests/* + + + + + + + + + + + + + + + + + + /config/* + + + + + + + + + + + diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..af3a8f3 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,23 @@ +{ + "plugins": [ + "@shufo/prettier-plugin-blade" + ], + "overrides": [ + { + "files": [ + "*.blade.php" + ], + "options": { + "parser": "blade", + "tabWidth": 4 + } + } + ], + + "htmlWhitespaceSensitivity": "css", + "sortTailwindcssClasses": true, + "singleAttributePerLine": true, + "bracketSameLine": false, + "printWidth": 600, + "tabWidth": 4 + } diff --git a/app/Console/Commands/HandleIncomingMessages.php b/app/Console/Commands/HandleIncomingMessages.php index 2411ffb..a4caaf0 100644 --- a/app/Console/Commands/HandleIncomingMessages.php +++ b/app/Console/Commands/HandleIncomingMessages.php @@ -4,7 +4,6 @@ use App\Models\Message; use App\Services\Smtp\Server; -use Exception; use Illuminate\Console\Command; class HandleIncomingMessages extends Command @@ -13,27 +12,11 @@ class HandleIncomingMessages extends Command protected $description = 'Starts SMTP server & handles incoming messages'; - protected Server $server; - - public function __construct() - { - parent::__construct(); - $this->server = Server::new(2525); - } - public function handle() { - try { - - $this->server - ->onMessageReceived(fn ($content) => Message::fromContent($content)) - ->serve(); - - } catch (Exception $e) { - - $this->server->stop(); - throw $e; - } + Server::new(2525) + ->onMessageReceived(fn ($content) => Message::fromContent($content)) + ->serve(); return Command::SUCCESS; } diff --git a/app/Enums/Framework.php b/app/Enums/Framework.php new file mode 100644 index 0000000..92b3bd9 --- /dev/null +++ b/app/Enums/Framework.php @@ -0,0 +1,12 @@ +message = $message; + } + + public function broadcastOn(): array + { + return [ + new Channel('nativephp'), + ]; + } +} diff --git a/app/Livewire/Concerns/Config.php b/app/Livewire/Concerns/Config.php new file mode 100644 index 0000000..eca14a9 --- /dev/null +++ b/app/Livewire/Concerns/Config.php @@ -0,0 +1,18 @@ +delete(); + + if ($id === $this->selectedMessageId) { + $this->selectedMessageId = null; + } + } + + public function toggleBookmark(int $id) + { + Message::findOrFail($id)->toggleBookmark(); + + $this->message?->markRead(); + } + + public function selectNext() + { + $index = $this->inbox->search(function ($message) { + return $message->id === $this->selectedMessageId; + }); + + if ($index === false) { + return; + } + + $nextMessage = $this->inbox->get($index + 1) ?? $this->inbox->first(); + + $this->selectMessage($nextMessage->id); + + unset($this->inbox); + } + + public function selectPrevious() + { + $index = $this->inbox->search(function ($message) { + return $message->id === $this->selectedMessageId; + }); + + if ($index === false) { + return; + } + + $previousMessage = $this->inbox->get($index - 1) ?? $this->inbox->last(); + + $this->selectMessage($previousMessage->id); + + unset($this->inbox); + } +} diff --git a/app/Livewire/Concerns/SmtpSupervisor.php b/app/Livewire/Concerns/SmtpSupervisor.php new file mode 100644 index 0000000..daf2baf --- /dev/null +++ b/app/Livewire/Concerns/SmtpSupervisor.php @@ -0,0 +1,77 @@ +config->port) + ->onMessageReceived(function ($content) { + + $message = Message::fromContent($content); + MessageReceived::dispatch($message); + + // Running as NativePHP app. Send out system notifications + if (config('nativephp-internal.running')) { + + Notification::title(self::NOTIFICATION_TITLE) + ->message($message->parsed->getHeaderValue(HeaderConsts::SUBJECT)) + ->show(); + } + + })->serve(); + }, + // Silently log all errors to the browser console + function (Throwable $e) { + if (str($e->getMessage())->contains('EADDRINUSE')) { + return; + } + + $this->js(<<< JS + console.error('SUPERVISOR: {$e->getMessage()}'); + JS); + }, + // Log all errors except when port is in use + report: fn (Throwable $e) => ! str($e->getMessage())->contains('EADDRINUSE') + ); + } + + /** + * Echo listener for the MessageReceived event + * + * This needs to be called via a channel so we can pick + * up on events raised from a separate process. + */ + #[On('native:' . MessageReceived::class)] + public function messageReceived() + { + // TODO: Implement NativePHP events with Echo + // https://nativephp.com/docs/1/digging-deeper/broadcasting + // https://laravel.com/docs/11.x/broadcasting#client-side-installation + // Laravel websockets doesn't support L11. Can we use Reverb instead? https://laravel.com/docs/11.x/reverb + + dd('Received new message'); + } +} diff --git a/app/Livewire/Inbox.php b/app/Livewire/Inbox.php index bb296bc..4ad62bf 100644 --- a/app/Livewire/Inbox.php +++ b/app/Livewire/Inbox.php @@ -3,25 +3,37 @@ namespace App\Livewire; use App\Models\Message; -use Illuminate\Support\Collection; -use Livewire\Attributes\Computed; -use Livewire\Attributes\Title; -use Livewire\Attributes\Url; use Livewire\Component; - -#[Title('Inbox')] +use Livewire\Attributes\Url; +use Livewire\Attributes\Title; +use Livewire\Attributes\Computed; +use Illuminate\Support\Collection; +use App\Livewire\Concerns\SmtpSupervisor; +use App\Livewire\Concerns\MessageControls; + +/** + * @property ?Message $message + * @property Collection $inbox + */ +#[Title('Phost | Inbox')] class Inbox extends Component { + use MessageControls; + use SmtpSupervisor; + #[Url] public string $search = ''; public ?int $selectedMessageId = null; - public function mount($selectedMessageId = null) + public function mount($messageId = null) { - $this->selectedMessageId = $selectedMessageId; + if ($messageId) { + $this->selectMessage($messageId); + } - $this->message?->markRead(); + // Start the SMTP server + $this->supervisor(); // TODO: Move to scheduler } public function selectMessage(int $id) @@ -29,27 +41,6 @@ public function selectMessage(int $id) $this->selectedMessageId = $id; $this->message?->markRead(); - - // Not pretty, but most reliable way to ensure properly sized iframe - $this->dispatch('reload-message-preview'); - } - - public function deleteMessage(int $id) - { - Message::findOrFail($id)->delete(); - - if ($id === $this->selectedMessageId) { - $this->selectedMessageId = null; - } - } - - public function toggleBookmark(int $id) - { - Message::findOrFail($id)->toggleBookmark(); - - $this->message?->markRead(); - - $this->dispatch('reload-message-preview'); } #[Computed()] @@ -60,7 +51,6 @@ public function message(): ?Message } return Message::find($this->selectedMessageId); - } #[Computed()] @@ -68,7 +58,7 @@ public function inbox(): Collection { return Message::query() ->when($this->search, fn ($query) => $query - ->where('content', 'like', '%'.trim($this->search).'%') + ->where('content', 'like', '%' . trim($this->search) . '%') ) ->orderByDesc('bookmarked') ->latest() diff --git a/app/Livewire/Settings.php b/app/Livewire/Settings.php new file mode 100644 index 0000000..d390ab3 --- /dev/null +++ b/app/Livewire/Settings.php @@ -0,0 +1,41 @@ +fill($this->config->toArray()); + } + + public function save() + { + $validated = $this->validate(); + $this->config->fill($validated)->save(); + + // Start the SMTP server with updated port nr + $this->supervisor(); + } + + #[Computed()] + public function selectedFramework(): ?Framework + { + return Framework::tryFrom($this->framework); + } +} diff --git a/app/Models/Message.php b/app/Models/Message.php index b3269bc..4a62af9 100644 --- a/app/Models/Message.php +++ b/app/Models/Message.php @@ -2,9 +2,15 @@ namespace App\Models; +use Illuminate\Support\Number; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Casts\Attribute; use ZBateson\MailMimeParser\Message as ParsedMessage; +use ZBateson\MailMimeParser\IMessage as ParsedMessageContract; +/** + * @property ParsedMessageContract $parsed + */ class Message extends Model { protected $fillable = [ @@ -25,26 +31,41 @@ public static function fromContent(string $content): self ]); } - public function parsed(): ParsedMessage + //--------------------------------------------------------------- + // Attributes + //--------------------------------------------------------------- + public function parsed(): Attribute { - return ParsedMessage::from($this->content, true); + return Attribute::make( + get: fn (): ParsedMessageContract => ParsedMessage::from($this->content, true) + )->shouldCache(); } - public function markRead(): void + public function size(): Attribute { - if ($this->read_at) { - return; - } + return Attribute::make( + get: fn () => Number::fileSize(strlen($this->content), precision: 2) + )->shouldCache(); + } + //--------------------------------------------------------------- + // Helpers + //--------------------------------------------------------------- + public function toggleBookmark(): void + { $this->update([ - 'read_at' => now(), + 'bookmarked' => ! $this->bookmarked, ]); } - public function toggleBookmark(): void + public function markRead(): void { + if ($this->read_at) { + return; + } + $this->update([ - 'bookmarked' => ! $this->bookmarked, + 'read_at' => now(), ]); } } diff --git a/app/Models/User.php b/app/Models/User.php index def621f..dcb8846 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -3,9 +3,9 @@ namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; +use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; -use Illuminate\Notifications\Notifiable; class User extends Authenticatable { diff --git a/app/Providers/NativeAppServiceProvider.php b/app/Providers/NativeAppServiceProvider.php new file mode 100644 index 0000000..09ecb4b --- /dev/null +++ b/app/Providers/NativeAppServiceProvider.php @@ -0,0 +1,33 @@ +titleBarHidden() + ->hideMenu() + ->width(1200) + ->height(740) + ->minWidth(540) + ->minHeight(500); + } + + /** + * Return an array of php.ini directives to be set. + */ + public function phpIni(): array + { + return [ + ]; + } +} diff --git a/app/Services/Smtp/Server.php b/app/Services/Smtp/Server.php index 1ed97c4..4b464d2 100644 --- a/app/Services/Smtp/Server.php +++ b/app/Services/Smtp/Server.php @@ -2,14 +2,14 @@ namespace App\Services\Smtp; -use App\Services\Smtp\Enums\Command; +use Mockery; +use React\Socket\SocketServer; +use React\Socket\ServerInterface; use App\Services\Smtp\Enums\Reply; use React\EventLoop\LoopInterface; +use App\Services\Smtp\Enums\Command; use React\EventLoop\StreamSelectLoop; use React\Socket\ConnectionInterface; -use React\Socket\ServerInterface; -use React\Socket\SocketServer; -use ZBateson\MailMimeParser\Message; use function Laravel\Prompts\info; use function Laravel\Prompts\note; @@ -23,7 +23,7 @@ class Server protected LoopInterface $loop; - protected ServerInterface $socket; + protected ?ServerInterface $socket = null; /** @var callable(string):void */ protected $onMessageReceivedCallback; // Needs to be configured by consuming class @@ -31,17 +31,27 @@ class Server public function __construct(int $port = 2525) { $this->port = $port; - $this->loop = new StreamSelectLoop(); + $this->loop = new StreamSelectLoop; } public static function new(int $port = 2525): self { - return new self($port); + return resolve(self::class, ['port' => $port]); + } + + public static function fake() + { + $mock = Mockery::mock(self::class, fn ($mock) => $mock + ->makePartial() + ->shouldReceive('serve') + ); + + app()->bind(self::class, fn () => $mock); } public function serve(): void { - $this->socket = new SocketServer(self::HOST.':'.$this->port, [], $this->loop); + $this->socket = new SocketServer(self::HOST . ':' . $this->port, [], $this->loop); info("Started SMTP server on: {$this->socket->getAddress()}"); @@ -50,8 +60,8 @@ public function serve(): void $content = ''; $transferring = false; - note(Reply::Ready->value.' - opened SMTP connection on: '.$connection->getLocalAddress()); - $connection->write(Reply::Ready->value." Ok!\r\n"); + note(Reply::Ready->value . ' - opened SMTP connection on: ' . $connection->getLocalAddress()); + $connection->write(Reply::Ready->value . " Ok!\r\n"); $connection->on('data', function ($data) use ($connection, &$content, &$transferring) { @@ -67,11 +77,10 @@ public function serve(): void if ($transferring) { if ($line->toString() === '.') { - note(Reply::Okay->value.' - message received!'); - $connection->write(Reply::Okay->value." Ok!\r\n"); + note(Reply::Okay->value . ' - message received!'); + $connection->write(Reply::Okay->value . " Ok!\r\n"); call_user_func($this->onMessageReceivedCallback, $content); - // $this->onMessageReceivedCallback($content); $transferring = false; return false; @@ -87,38 +96,38 @@ public function serve(): void // Handshake ($transferring = false) // ------------------------------------------------------------------- if ($line->startsWith(Command::EHLO->value)) { - note(Reply::Okay->value.' - received '.$line->toString()); - $connection->write(Reply::Okay->value." Ok!\r\n"); + note(Reply::Okay->value . ' - received ' . $line->toString()); + $connection->write(Reply::Okay->value . " Ok!\r\n"); return false; } if ($line->startsWith(Command::HELO->value)) { - note(Reply::Okay->value.' - received '.$line->toString()); - $connection->write(Reply::Okay->value." Ok!\r\n"); + note(Reply::Okay->value . ' - received ' . $line->toString()); + $connection->write(Reply::Okay->value . " Ok!\r\n"); return false; } if ($line->startsWith(Command::FROM_HEADER->value)) { - note(Reply::Okay->value.' - received MAIL FROM'); + note(Reply::Okay->value . ' - received MAIL FROM'); - $connection->write(Reply::Okay->value." Ok!\r\n"); + $connection->write(Reply::Okay->value . " Ok!\r\n"); return false; } if ($line->startsWith(Command::RECIPIENT_HEADER->value)) { - note(Reply::Okay->value.' - received RCPT TO'); + note(Reply::Okay->value . ' - received RCPT TO'); - $connection->write(Reply::Okay->value." Ok!\r\n"); + $connection->write(Reply::Okay->value . " Ok!\r\n"); return false; } if ($line->toString() === Command::DATA->value) { - note(Reply::StartTransfer->value.' - starting message transfer'); - $connection->write(Reply::StartTransfer->value." Start transfer\r\n"); + note(Reply::StartTransfer->value . ' - starting message transfer'); + $connection->write(Reply::StartTransfer->value . " Start transfer\r\n"); $transferring = true; @@ -126,15 +135,15 @@ public function serve(): void } if ($line->startsWith(Command::QUIT->value)) { - note(Reply::Goodbye->value.' - closed SMTP connection on: '.$connection->getLocalAddress()); - $connection->end(Reply::Goodbye->value." Goodbye!\r\n"); + note(Reply::Goodbye->value . ' - closed SMTP connection on: ' . $connection->getLocalAddress()); + $connection->end(Reply::Goodbye->value . " Goodbye!\r\n"); return false; } // TODO: Refactor to match & handle default 500 something reply - warning(Reply::CommandNotImplemented->value.' - '.$line->toString()); - $connection->write(Reply::CommandNotImplemented->value." Not implemented\r\n"); // Okay + warning(Reply::CommandNotImplemented->value . ' - ' . $line->toString()); + $connection->write(Reply::CommandNotImplemented->value . " Not implemented\r\n"); // Okay $connection->close(); }); diff --git a/app/Settings/Config.php b/app/Settings/Config.php new file mode 100644 index 0000000..a78c2e2 --- /dev/null +++ b/app/Settings/Config.php @@ -0,0 +1,15 @@ +withRouting( - web: __DIR__.'/../routes/web.php', - commands: __DIR__.'/../routes/console.php', + web: __DIR__ . '/../routes/web.php', + commands: __DIR__ . '/../routes/console.php', ) ->withSchedule(function (Schedule $schedule) { diff --git a/composer.json b/composer.json index f40e9a4..bfd8d44 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,10 @@ "name": "laravel/laravel", "type": "project", "description": "The skeleton application for the Laravel framework.", - "keywords": ["laravel", "framework"], + "keywords": [ + "laravel", + "framework" + ], "license": "MIT", "require": { "php": "^8.2", @@ -10,18 +13,27 @@ "laravel/framework": "^11.0", "laravel/tinker": "^2.9", "livewire/livewire": "^3.4", + "nativephp/electron": "^0.5.0", "react/socket": "^1.15", + "spatie/laravel-settings": "^3.3", "zbateson/mail-mime-parser": "^2.4" }, "require-dev": { + "barryvdh/laravel-ide-helper": "^3.0", "fakerphp/faker": "^1.23", - "laravel/pint": "^1.13", - "laravel/sail": "^1.26", + "friendsofphp/php-cs-fixer": "^3.53", + "gedachtegoed/workspace": "^0.3.0", + "larastan/larastan": "^2.0", + "laravel/pail": "^1.1", + "laravel/pint": "^1.15", "mockery/mockery": "^1.6", "nunomaduro/collision": "^8.0", "pestphp/pest": "^2.34", "pestphp/pest-plugin-laravel": "^2.3", - "spatie/laravel-ignition": "^2.4" + "spatie/laravel-ignition": "^2.4", + "squizlabs/php_codesniffer": "^3.9", + "tightenco/duster": "^2.7", + "tightenco/tlint": "^9.3" }, "autoload": { "psr-4": { @@ -36,12 +48,15 @@ } }, "scripts": { + "kill": "bash kill-stray-processes.sh", "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "@php artisan package:discover --ansi" ], "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + "@php artisan vendor:publish --tag=laravel-assets --ansi --force", + "@php artisan ide-helper:generate --ansi --helpers", + "@php artisan ide-helper:meta --ansi" ], "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" @@ -50,7 +65,11 @@ "@php artisan key:generate --ansi", "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"", "@php artisan migrate --graceful --ansi" - ] + ], + "lint": "vendor/bin/duster lint", + "fix": "vendor/bin/duster fix", + "analyze": "vendor/bin/phpstan analyse", + "baseline": "vendor/bin/phpstan analyse --generate-baseline" }, "extra": { "laravel": { diff --git a/composer.lock b/composer.lock index 6067912..331c5cb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e68c408d4f171ca1529b7ee5117fe320", + "content-hash": "6ffebb6b7ece8d3d7db9dfca1626ca17", "packages": [ { "name": "blade-ui-kit/blade-heroicons", @@ -355,6 +355,53 @@ }, "time": "2022-10-27T11:44:00+00:00" }, + { + "name": "doctrine/deprecations", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + }, + "time": "2024-01-30T19:34:25+00:00" + }, { "name": "doctrine/inflector", "version": "2.0.10", @@ -1244,16 +1291,16 @@ }, { "name": "laravel/framework", - "version": "v11.2.0", + "version": "v11.4.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "a1750156b671f37cba702380107e2d22161c31e3" + "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/a1750156b671f37cba702380107e2d22161c31e3", - "reference": "a1750156b671f37cba702380107e2d22161c31e3", + "url": "https://api.github.com/repos/laravel/framework/zipball/c1dc67c28811dc5be524a30b18f29ce62126716a", + "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a", "shasum": "" }, "require": { @@ -1272,7 +1319,7 @@ "fruitcake/php-cors": "^1.3", "guzzlehttp/guzzle": "^7.8", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.15", + "laravel/prompts": "^0.1.18", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", @@ -1445,20 +1492,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-04-02T14:01:33+00:00" + "time": "2024-04-16T14:38:51+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.17", + "version": "v0.1.19", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5" + "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5", - "reference": "8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5", + "url": "https://api.github.com/repos/laravel/prompts/zipball/0ab75ac3434d9f610c5691758a6146a3d1940c18", + "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18", "shasum": "" }, "require": { @@ -1500,9 +1547,9 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.17" + "source": "https://github.com/laravel/prompts/tree/v0.1.19" }, - "time": "2024-03-13T16:05:43+00:00" + "time": "2024-04-16T14:20:35+00:00" }, { "name": "laravel/serializable-closure", @@ -1820,16 +1867,16 @@ }, { "name": "league/flysystem", - "version": "3.26.0", + "version": "3.27.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "072735c56cc0da00e10716dd90d5a7f7b40b36be" + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/072735c56cc0da00e10716dd90d5a7f7b40b36be", - "reference": "072735c56cc0da00e10716dd90d5a7f7b40b36be", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f", + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f", "shasum": "" }, "require": { @@ -1894,7 +1941,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.26.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.27.0" }, "funding": [ { @@ -1906,7 +1953,7 @@ "type": "github" } ], - "time": "2024-03-25T11:49:53+00:00" + "time": "2024-04-07T19:17:50+00:00" }, { "name": "league/flysystem-local", @@ -2101,16 +2148,16 @@ }, { "name": "monolog/monolog", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", "shasum": "" }, "require": { @@ -2133,7 +2180,7 @@ "phpstan/phpstan": "^1.9", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.1", + "phpunit/phpunit": "^10.5.17", "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", "symfony/mailer": "^5.4 || ^6", @@ -2186,7 +2233,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.5.0" + "source": "https://github.com/Seldaek/monolog/tree/3.6.0" }, "funding": [ { @@ -2198,20 +2245,219 @@ "type": "tidelift" } ], - "time": "2023-10-27T15:32:31+00:00" + "time": "2024-04-12T21:02:21+00:00" + }, + { + "name": "nativephp/electron", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/NativePHP/electron.git", + "reference": "8b696907e6c56cc1649dd73d85bbf90b2cf7f8aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/NativePHP/electron/zipball/8b696907e6c56cc1649dd73d85bbf90b2cf7f8aa", + "reference": "8b696907e6c56cc1649dd73d85bbf90b2cf7f8aa", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^10.0|^11.0", + "laravel/prompts": "^0.1.1", + "nativephp/laravel": "*", + "nativephp/php-bin": "*", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.14.0" + }, + "require-dev": { + "laravel/pint": "^1.0", + "nunomaduro/collision": "^7.9", + "nunomaduro/larastan": "^2.0.1", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-arch": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/laravel-ray": "^1.26" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Native\\Electron\\ElectronServiceProvider" + ], + "aliases": { + "Updater": "Native\\Electron\\Facades\\Updater" + } + } + }, + "autoload": { + "psr-4": { + "Native\\Electron\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marcel Pociot", + "email": "marcel@beyondco.de", + "role": "Developer" + } + ], + "description": "Electron wrapper for the NativePHP framework.", + "homepage": "https://github.com/nativephp/electron", + "keywords": [ + "electron", + "laravel", + "nativephp" + ], + "support": { + "source": "https://github.com/NativePHP/electron/tree/0.5.0" + }, + "time": "2024-04-01T16:29:10+00:00" + }, + { + "name": "nativephp/laravel", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/NativePHP/laravel.git", + "reference": "691c8c2f9d894e6ead65e274046825e179ef8fd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/NativePHP/laravel/zipball/691c8c2f9d894e6ead65e274046825e179ef8fd5", + "reference": "691c8c2f9d894e6ead65e274046825e179ef8fd5", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^10.0|^11.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.14.0", + "symfony/finder": "^6.2|^7.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.0", + "laravel/pint": "^1.0", + "nunomaduro/collision": "^7.9", + "nunomaduro/larastan": "^2.0.1", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-arch": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/laravel-ray": "^1.26" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Native\\Laravel\\NativeServiceProvider" + ], + "aliases": { + "ContextMenu": "Native\\Laravel\\Facades\\ContextMenu", + "Dock": "Native\\Laravel\\Facades\\Dock", + "Process": "Native\\Laravel\\Facades\\Process", + "Window": "Native\\Laravel\\Facades\\Window", + "Clipboard": "Native\\Laravel\\Facades\\Clipboard" + } + } + }, + "autoload": { + "psr-4": { + "Native\\Laravel\\": "src/", + "Native\\Laravel\\Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marcel Pociot", + "email": "marcel@beyondco.de", + "role": "Developer" + } + ], + "description": "Laravel wrapper for the NativePHP framework.", + "homepage": "https://github.com/nativephp/laravel", + "keywords": [ + "laravel", + "nativephp", + "nativephp-laravel" + ], + "support": { + "issues": "https://github.com/NativePHP/laravel/issues", + "source": "https://github.com/NativePHP/laravel/tree/0.5.0" + }, + "time": "2024-04-01T16:29:53+00:00" + }, + { + "name": "nativephp/php-bin", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/NativePHP/php-bin.git", + "reference": "36fec9027b2be29d1a5d1aa83baf6d8030da66e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/NativePHP/php-bin/zipball/36fec9027b2be29d1a5d1aa83baf6d8030da66e9", + "reference": "36fec9027b2be29d1a5d1aa83baf6d8030da66e9", + "shasum": "" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0", + "GPL-3.0-or-later", + "MIT", + "PHP-3.01" + ], + "authors": [ + { + "name": "Marcel Pociot", + "email": "marcel@beyondco.de", + "role": "Developer" + }, + { + "name": "Simon Hamp", + "email": "simon.hamp@me.com", + "role": "Developer" + } + ], + "description": "PHP binaries used by the NativePHP framework", + "homepage": "https://nativephp.com", + "keywords": [ + "nativephp", + "php" + ], + "support": { + "issues": "https://github.com/NativePHP/php-bin/issues", + "source": "https://github.com/NativePHP/php-bin/tree/0.3.0" + }, + "time": "2023-07-27T10:44:16+00:00" }, { "name": "nesbot/carbon", - "version": "3.2.3", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1" + "reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1", - "reference": "4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/82c28278c1c8f7b82dcdab25692237f052ffc8d8", + "reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8", "shasum": "" }, "require": { @@ -2304,7 +2550,7 @@ "type": "tidelift" } ], - "time": "2024-03-30T18:22:00+00:00" + "time": "2024-04-05T09:58:10+00:00" }, { "name": "nette/schema", @@ -2456,27 +2702,25 @@ }, { "name": "nikic/php-parser", - "version": "v5.0.2", + "version": "v4.19.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.4" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2484,7 +2728,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "4.9-dev" } }, "autoload": { @@ -2508,9 +2752,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" }, - "time": "2024-03-05T20:51:40+00:00" + "time": "2024-03-17T08:10:35+00:00" }, { "name": "nunomaduro/termwind", @@ -2601,107 +2845,265 @@ "time": "2024-03-06T16:17:14+00:00" }, { - "name": "phpoption/phpoption", - "version": "1.9.2", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", - "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, "branch-alias": { - "dev-master": "1.9-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { "psr-4": { - "PhpOption\\": "src/PhpOption/" + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Option Type for PHP", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "language", - "option", - "php", - "type" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2023-11-12T21:59:55+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "pimple/pimple", - "version": "v3.5.0", + "name": "phpdocumentor/type-resolver", + "version": "1.8.2", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1 || ^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { - "symfony/phpunit-bridge": "^5.4@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + }, + "time": "2024-02-23T11:10:43+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.2", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-11-12T21:59:55+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.28.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0" + }, + "time": "2024-04-03T18:51:33+00:00" + }, + { + "name": "pimple/pimple", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1 || ^2.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^5.4@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4.x-dev" + } + }, "autoload": { "psr-0": { "Pimple": "src/" @@ -3896,38 +4298,35 @@ "time": "2023-06-16T10:52:11+00:00" }, { - "name": "symfony/clock", - "version": "v7.0.5", + "name": "spatie/laravel-package-tools", + "version": "1.16.4", "source": { "type": "git", - "url": "https://github.com/symfony/clock.git", - "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2" + "url": "https://github.com/spatie/laravel-package-tools.git", + "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/8b9d08887353d627d5f6c3bf3373b398b49051c2", - "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53", + "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/clock": "^1.0", - "symfony/polyfill-php83": "^1.28" + "illuminate/contracts": "^9.28|^10.0|^11.0", + "php": "^8.0" }, - "provide": { - "psr/clock-implementation": "1.0" + "require-dev": { + "mockery/mockery": "^1.5", + "orchestra/testbench": "^7.7|^8.0", + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^9.5.24", + "spatie/pest-plugin-test-time": "^1.1" }, "type": "library", "autoload": { - "files": [ - "Resources/now.php" - ], "psr-4": { - "Symfony\\Component\\Clock\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Spatie\\LaravelPackageTools\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3935,69 +4334,280 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" } ], - "description": "Decouples applications from the system clock", - "homepage": "https://symfony.com", + "description": "Tools for creating Laravel packages", + "homepage": "https://github.com/spatie/laravel-package-tools", "keywords": [ - "clock", - "psr20", - "time" + "laravel-package-tools", + "spatie" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.0.5" + "issues": "https://github.com/spatie/laravel-package-tools/issues", + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/spatie", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2024-03-02T12:46:12+00:00" + "time": "2024-03-20T07:29:11+00:00" }, { - "name": "symfony/console", - "version": "v7.0.6", + "name": "spatie/laravel-settings", + "version": "3.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5" + "url": "https://github.com/spatie/laravel-settings.git", + "reference": "395066797823856638a0a2feb243b396a94e22e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", - "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "url": "https://api.github.com/repos/spatie/laravel-settings/zipball/395066797823856638a0a2feb243b396a94e22e5", + "reference": "395066797823856638a0a2feb243b396a94e22e5", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" + "ext-json": "*", + "illuminate/database": "^8.73|^9.0|^10.0|^11.0", + "php": "^7.4|^8.0", + "phpdocumentor/type-resolver": "^1.5", + "spatie/temporary-directory": "^1.3|^2.0" }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" + "require-dev": { + "ext-redis": "*", + "larastan/larastan": "^2.0", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0", + "pestphp/pest": "^1.21|^2.0", + "pestphp/pest-plugin-laravel": "^1.2|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5|^10.0", + "spatie/laravel-data": "^1.0.0|^2.0.0|^4.0.0", + "spatie/pest-plugin-snapshots": "^1.1|^2.0", + "spatie/phpunit-snapshot-assertions": "^4.2|^5.0", + "spatie/ray": "^1.36" + }, + "suggest": { + "spatie/data-transfer-object": "Allows for DTO casting to settings. (deprecated)" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelSettings\\LaravelSettingsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\LaravelSettings\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Store your application settings", + "homepage": "https://github.com/spatie/laravel-settings", + "keywords": [ + "laravel-settings", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-settings/issues", + "source": "https://github.com/spatie/laravel-settings/tree/3.3.2" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-03-22T07:50:04+00:00" + }, + { + "name": "spatie/temporary-directory", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/temporary-directory.git", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\TemporaryDirectory\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily create, use and destroy temporary directories", + "homepage": "https://github.com/spatie/temporary-directory", + "keywords": [ + "php", + "spatie", + "temporary-directory" + ], + "support": { + "issues": "https://github.com/spatie/temporary-directory/issues", + "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-12-25T11:46:58+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.0.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/8b9d08887353d627d5f6c3bf3373b398b49051c2", + "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.0.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-03-02T12:46:12+00:00" + }, + { + "name": "symfony/console", + "version": "v7.0.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", @@ -6751,57 +7361,59 @@ ], "packages-dev": [ { - "name": "brianium/paratest", - "version": "v7.4.3", + "name": "barryvdh/laravel-ide-helper", + "version": "v3.0.0", "source": { "type": "git", - "url": "https://github.com/paratestphp/paratest.git", - "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec" + "url": "https://github.com/barryvdh/laravel-ide-helper.git", + "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", - "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", + "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-simplexml": "*", - "fidry/cpu-core-counter": "^1.1.0", - "jean85/pretty-package-versions": "^2.0.5", - "php": "~8.2.0 || ~8.3.0", - "phpunit/php-code-coverage": "^10.1.11 || ^11.0.0", - "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0", - "phpunit/php-timer": "^6.0.0 || ^7.0.0", - "phpunit/phpunit": "^10.5.9 || ^11.0.3", - "sebastian/environment": "^6.0.1 || ^7.0.0", - "symfony/console": "^6.4.3 || ^7.0.3", - "symfony/process": "^6.4.3 || ^7.0.3" + "barryvdh/reflection-docblock": "^2.1.1", + "composer/class-map-generator": "^1.0", + "ext-json": "*", + "illuminate/console": "^10 || ^11", + "illuminate/database": "^10.38 || ^11", + "illuminate/filesystem": "^10 || ^11", + "illuminate/support": "^10 || ^11", + "nikic/php-parser": "^4.18 || ^5", + "php": "^8.1", + "phpdocumentor/type-resolver": "^1.1.0" }, "require-dev": { - "doctrine/coding-standard": "^12.0.0", - "ext-pcov": "*", - "ext-posix": "*", - "phpstan/phpstan": "^1.10.58", - "phpstan/phpstan-deprecation-rules": "^1.1.4", - "phpstan/phpstan-phpunit": "^1.3.15", - "phpstan/phpstan-strict-rules": "^1.5.2", - "squizlabs/php_codesniffer": "^3.9.0", - "symfony/filesystem": "^6.4.3 || ^7.0.3" + "ext-pdo_sqlite": "*", + "friendsofphp/php-cs-fixer": "^3", + "illuminate/config": "^9 || ^10 || ^11", + "illuminate/view": "^9 || ^10 || ^11", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^8 || ^9", + "phpunit/phpunit": "^10.5", + "spatie/phpunit-snapshot-assertions": "^4 || ^5", + "vimeo/psalm": "^5.4" + }, + "suggest": { + "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10|^11)." }, - "bin": [ - "bin/paratest", - "bin/paratest.bat", - "bin/paratest_for_phpstorm" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" + ] + } + }, "autoload": { "psr-4": { - "ParaTest\\": [ - "src/" - ] + "Barryvdh\\LaravelIdeHelper\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6810,127 +7422,142 @@ ], "authors": [ { - "name": "Brian Scaturro", - "email": "scaturrob@gmail.com", - "role": "Developer" - }, - { - "name": "Filippo Tessarotto", - "email": "zoeslam@gmail.com", - "role": "Developer" + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" } ], - "description": "Parallel testing for PHP", - "homepage": "https://github.com/paratestphp/paratest", + "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", "keywords": [ - "concurrent", - "parallel", - "phpunit", - "testing" + "autocomplete", + "codeintel", + "helper", + "ide", + "laravel", + "netbeans", + "phpdoc", + "phpstorm", + "sublime" ], "support": { - "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.4.3" + "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.0.0" }, "funding": [ { - "url": "https://github.com/sponsors/Slamdunk", - "type": "github" + "url": "https://fruitcake.nl", + "type": "custom" }, { - "url": "https://paypal.me/filippotessarotto", - "type": "paypal" + "url": "https://github.com/barryvdh", + "type": "github" } ], - "time": "2024-02-20T07:24:02+00:00" + "time": "2024-03-01T12:53:18+00:00" }, { - "name": "doctrine/deprecations", - "version": "1.1.3", + "name": "barryvdh/reflection-docblock", + "version": "v2.1.1", "source": { "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + "url": "https://github.com/barryvdh/ReflectionDocBlock.git", + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/e6811e927f0ecc37cc4deaa6627033150343e597", + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": ">=5.3.3" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" + "phpunit/phpunit": "^8.5.14|^9" }, "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "psr-0": { + "Barryvdh": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.1" }, - "time": "2024-01-30T19:34:25+00:00" + "time": "2023-06-14T05:06:27+00:00" }, { - "name": "fakerphp/faker", - "version": "v1.23.1", + "name": "brianium/paratest", + "version": "v7.4.3", "source": { "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + "url": "https://github.com/paratestphp/paratest.git", + "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", + "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "conflict": { - "fzaninotto/faker": "*" + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^1.1.0", + "jean85/pretty-package-versions": "^2.0.5", + "php": "~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.11 || ^11.0.0", + "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0", + "phpunit/php-timer": "^6.0.0 || ^7.0.0", + "phpunit/phpunit": "^10.5.9 || ^11.0.3", + "sebastian/environment": "^6.0.1 || ^7.0.0", + "symfony/console": "^6.4.3 || ^7.0.3", + "symfony/process": "^6.4.3 || ^7.0.3" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "phpstan/phpstan": "^1.10.58", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "squizlabs/php_codesniffer": "^3.9.0", + "symfony/filesystem": "^6.4.3 || ^7.0.3" }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], "type": "library", "autoload": { "psr-4": { - "Faker\\": "src/Faker/" + "ParaTest\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -6939,53 +7566,76 @@ ], "authors": [ { - "name": "François Zaninotto" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" } ], - "description": "Faker is a PHP library that generates fake data for you.", + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", "keywords": [ - "data", - "faker", - "fixtures" + "concurrent", + "parallel", + "phpunit", + "testing" ], "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.4.3" }, - "time": "2024-01-02T13:46:09+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2024-02-20T07:24:02+00:00" }, { - "name": "fidry/cpu-core-counter", - "version": "1.1.0", + "name": "composer/class-map-generator", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + "url": "https://github.com/composer/class-map-generator.git", + "reference": "8286a62d243312ed99b3eee20d5005c961adb311" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/8286a62d243312ed99b3eee20d5005c961adb311", + "reference": "8286a62d243312ed99b3eee20d5005c961adb311", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "composer/pcre": "^2.1 || ^3.1", + "php": "^7.2 || ^8.0", + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" }, "require-dev": { - "fidry/makefile": "^0.2.0", - "fidry/php-cs-fixer-config": "^1.1.2", - "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", - "phpunit/phpunit": "^8.5.31 || ^9.5.26", - "webmozarts/strict-phpunit": "^7.5" + "phpstan/phpstan": "^1.6", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/filesystem": "^5.4 || ^6", + "symfony/phpunit-bridge": "^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Fidry\\CpuCoreCounter\\": "src/" + "Composer\\ClassMapGenerator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6994,63 +7644,66 @@ ], "authors": [ { - "name": "Théo FIDRY", - "email": "theo.fidry@gmail.com" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" } ], - "description": "Tiny utility to get the number of CPU cores.", + "description": "Utilities to scan PHP code and generate class maps.", "keywords": [ - "CPU", - "core" + "classmap" ], "support": { - "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + "issues": "https://github.com/composer/class-map-generator/issues", + "source": "https://github.com/composer/class-map-generator/tree/1.1.1" }, "funding": [ { - "url": "https://github.com/theofidry", + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "time": "2024-02-07T09:43:46+00:00" + "time": "2024-03-15T12:53:41+00:00" }, { - "name": "filp/whoops", - "version": "2.15.4", + "name": "composer/pcre", + "version": "3.1.3", "source": { "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + "url": "https://github.com/composer/pcre.git", + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { - "Whoops\\": "src/Whoops/" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -7059,118 +7712,901 @@ ], "authors": [ { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" + "PCRE", + "preg", + "regex", + "regular expression" ], "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.4" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.3" }, "funding": [ { - "url": "https://github.com/denis-sokolov", + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "time": "2023-11-03T12:00:00+00:00" + "time": "2024-03-19T10:26:25+00:00" }, { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "name": "composer/semver", + "version": "3.4.0", "source": { "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "url": "https://github.com/composer/semver.git", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-main": "3.x-dev" } }, "autoload": { - "classmap": [ - "hamcrest" - ] + "psr-4": { + "Composer\\Semver\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "This is the PHP port of Hamcrest Matchers", + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-08-31T09:50:34+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/4f988f8fdf580d53bdb2d1278fe93d1ed5462255", + "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-03-26T18:29:49+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + }, + "time": "2024-01-02T13:46:09+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-02-07T09:43:46+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12:00:00+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.54.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "2aecbc8640d7906c38777b3dcab6f4ca79004d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2aecbc8640d7906c38777b3dcab6f4ca79004d08", + "reference": "2aecbc8640d7906c38777b3dcab6f4ca79004d08", + "shasum": "" + }, + "require": { + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", + "infection/infection": "^0.27.11", + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.54.0" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2024-04-17T08:12:13+00:00" + }, + { + "name": "gedachtegoed/workspace", + "version": "v0.3", + "source": { + "type": "git", + "url": "https://github.com/media-code/workspace.git", + "reference": "079cb47e156929b97d37bc1cdfca5af3e403eb70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/media-code/workspace/zipball/079cb47e156929b97d37bc1cdfca5af3e403eb70", + "reference": "079cb47e156929b97d37bc1cdfca5af3e403eb70", + "shasum": "" + }, + "require": { + "gedachtegoed/workspace-core": "^0.1", + "illuminate/support": "^10.23|^11", + "php": "^8.1|^8.2" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.53", + "larastan/larastan": "^2.9", + "laravel/pint": "^1.15", + "orchestra/testbench": "^9", + "pestphp/pest": "^2.34", + "squizlabs/php_codesniffer": "^3.7", + "symfony/thanks": "^1.3", + "tightenco/duster": "^2.7", + "tightenco/tlint": "^9.3", + "timacdonald/callable-fake": "^1.7" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Gedachtegoed\\Workspace\\ServiceProvider" + ] + }, + "thanks": [ + { + "name": "tightenco/duster", + "url": "https://github.com/tighten/duster" + }, + { + "name": "laravel/prompts", + "url": "https://github.com/laravel/prompts" + }, + { + "name": "timacdonald/callable-fake", + "url": "https://github.com/timacdonald/callable-fake" + }, + { + "name": "gedachtegoed/workspace-core", + "url": "https://github.com/media-code/workspace-core" + } + ] + }, + "autoload": { + "psr-4": { + "Gedachtegoed\\Workspace\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Willem Leuverink", + "email": "willem@leuver.ink", + "homepage": "https://leuver.ink" + } + ], + "description": "Opinionated wrapper around tighten/duster with default configs, Larastan & Prettier blade formatting integration & CI workflows. For internal use.", + "support": { + "issues": "https://github.com/media-code/workspace/issues", + "source": "https://github.com/media-code/workspace/tree/v0.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/gwleuverink", + "type": "github" + } + ], + "time": "2024-04-12T13:38:37+00:00" + }, + { + "name": "gedachtegoed/workspace-core", + "version": "v0.1.0", + "source": { + "type": "git", + "url": "https://github.com/media-code/workspace-core.git", + "reference": "6c47eec2b71d44fd5ae357502df0e452c75f3967" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/media-code/workspace-core/zipball/6c47eec2b71d44fd5ae357502df0e452c75f3967", + "reference": "6c47eec2b71d44fd5ae357502df0e452c75f3967", + "shasum": "" + }, + "require": { + "illuminate/support": "^10.23|^11", + "php": "^8.1|^8.2" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.53", + "larastan/larastan": "^2.9", + "laravel/pint": "^1.15", + "orchestra/testbench": "^9", + "pestphp/pest": "^2.34", + "squizlabs/php_codesniffer": "^3.7", + "symfony/thanks": "^1.3", + "tightenco/duster": "^2.7", + "tightenco/tlint": "^9.3", + "timacdonald/callable-fake": "^1.7" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Gedachtegoed\\Workspace\\Core\\ServiceProvider" + ] + }, + "thanks": [ + { + "name": "tightenco/duster", + "url": "https://github.com/tighten/duster" + }, + { + "name": "laravel/prompts", + "url": "https://github.com/laravel/prompts" + }, + { + "name": "timacdonald/callable-fake", + "url": "https://github.com/timacdonald/callable-fake" + } + ] + }, + "autoload": { + "psr-4": { + "Gedachtegoed\\Workspace\\Core\\": "src/", + "Gedachtegoed\\Workspace\\Core\\Tests\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Willem Leuverink", + "email": "willem@leuver.ink", + "homepage": "https://leuver.ink" + } + ], + "description": "Core for building your own Portable Workspace", + "support": { + "issues": "https://github.com/media-code/workspace-core/issues", + "source": "https://github.com/media-code/workspace-core/tree/v0.1.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/gwleuverink", + "type": "github" + } + ], + "time": "2024-04-12T13:27:51+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.0.6", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" + }, + "time": "2024-03-08T09:58:59+00:00" + }, + { + "name": "larastan/larastan", + "version": "v2.9.5", + "source": { + "type": "git", + "url": "https://github.com/larastan/larastan.git", + "reference": "101f1a4470f87326f4d3995411d28679d8800abe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/larastan/larastan/zipball/101f1a4470f87326f4d3995411d28679d8800abe", + "reference": "101f1a4470f87326f4d3995411d28679d8800abe", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", + "php": "^8.0.2", + "phpmyadmin/sql-parser": "^5.9.0", + "phpstan/phpstan": "^1.10.66" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0", + "nikic/php-parser": "^4.19.1", + "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.2", + "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.3", + "phpunit/phpunit": "^9.6.13 || ^10.5.16" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Larastan\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Can Vural", + "email": "can9119@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", "keywords": [ - "test" + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" ], "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v2.9.5" }, - "time": "2020-07-09T08:09:16+00:00" + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/canvural", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2024-04-16T19:13:34+00:00" }, { - "name": "jean85/pretty-package-versions", - "version": "2.0.6", + "name": "laravel/pail", + "version": "v1.1.2", "source": { "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" + "url": "https://github.com/laravel/pail.git", + "reference": "e10dbaa5caf00c5993a13f19aac340853f8d5894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", + "url": "https://api.github.com/repos/laravel/pail/zipball/e10dbaa5caf00c5993a13f19aac340853f8d5894", + "reference": "e10dbaa5caf00c5993a13f19aac340853f8d5894", "shasum": "" }, "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" + "ext-mbstring": "*", + "ext-pcntl": "*", + "illuminate/console": "^10.24|^11.0", + "illuminate/contracts": "^10.24|^11.0", + "illuminate/log": "^10.24|^11.0", + "illuminate/process": "^10.24|^11.0", + "illuminate/support": "^10.24|^11.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "laravel/pint": "^1.13", + "orchestra/testbench": "^8.12|^9.0", + "pestphp/pest": "^2.20", + "pestphp/pest-plugin-type-coverage": "^2.3", + "phpstan/phpstan": "^1.10", + "symfony/var-dumper": "^6.3|^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] } }, "autoload": { "psr-4": { - "Jean85\\": "src/" + "Laravel\\Pail\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7179,22 +8615,27 @@ ], "authors": [ { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "A library to get pretty versions strings of installed dependencies", + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", "keywords": [ - "composer", - "package", - "release", - "versions" + "laravel", + "logs", + "php", + "tail" ], "support": { - "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" }, - "time": "2024-03-08T09:58:59+00:00" + "time": "2024-04-02T14:22:32+00:00" }, { "name": "laravel/pint", @@ -7262,69 +8703,6 @@ }, "time": "2024-04-02T14:28:47+00:00" }, - { - "name": "laravel/sail", - "version": "v1.29.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/8be4a31150eab3b46af11a2e7b2c4632eefaad7e", - "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e", - "shasum": "" - }, - "require": { - "illuminate/console": "^9.52.16|^10.0|^11.0", - "illuminate/contracts": "^9.52.16|^10.0|^11.0", - "illuminate/support": "^9.52.16|^10.0|^11.0", - "php": "^8.0", - "symfony/console": "^6.0|^7.0", - "symfony/yaml": "^6.0|^7.0" - }, - "require-dev": { - "orchestra/testbench": "^7.0|^8.0|^9.0", - "phpstan/phpstan": "^1.10" - }, - "bin": [ - "bin/sail" - ], - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laravel\\Sail\\SailServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Sail\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Docker files for running a basic Laravel application.", - "keywords": [ - "docker", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/sail/issues", - "source": "https://github.com/laravel/sail" - }, - "time": "2024-03-20T20:09:31+00:00" - }, { "name": "mockery/mockery", "version": "1.6.11", @@ -7566,16 +8944,16 @@ }, { "name": "pestphp/pest", - "version": "v2.34.6", + "version": "v2.34.7", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "680111fb1e7175a5010b73c115edef58ceef303e" + "reference": "a7a3e4240e341d0fee1c54814ce18adc26ce5a76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/680111fb1e7175a5010b73c115edef58ceef303e", - "reference": "680111fb1e7175a5010b73c115edef58ceef303e", + "url": "https://api.github.com/repos/pestphp/pest/zipball/a7a3e4240e341d0fee1c54814ce18adc26ce5a76", + "reference": "a7a3e4240e341d0fee1c54814ce18adc26ce5a76", "shasum": "" }, "require": { @@ -7585,10 +8963,10 @@ "pestphp/pest-plugin": "^2.1.1", "pestphp/pest-plugin-arch": "^2.7.0", "php": "^8.1.0", - "phpunit/phpunit": "^10.5.16" + "phpunit/phpunit": "^10.5.17" }, "conflict": { - "phpunit/phpunit": ">10.5.16", + "phpunit/phpunit": ">10.5.17", "sebastian/exporter": "<5.1.0", "webmozart/assert": "<1.11.0" }, @@ -7658,7 +9036,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.34.6" + "source": "https://github.com/pestphp/pest/tree/v2.34.7" }, "funding": [ { @@ -7670,7 +9048,7 @@ "type": "github" } ], - "time": "2024-03-28T11:36:46+00:00" + "time": "2024-04-05T07:44:17+00:00" }, { "name": "pestphp/pest-plugin", @@ -8005,83 +9383,37 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "version": "5.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "reference": "298d2febfe79d03fe714eb871d5538da55205b1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/298d2febfe79d03fe714eb871d5538da55205b1a", + "reference": "298d2febfe79d03fe714eb871d5538da55205b1a", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.1", "ext-filter": "*", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7", "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "mockery/mockery": "~1.3.5", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.13" }, "type": "library", "extra": { @@ -8105,120 +9437,161 @@ }, { "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "email": "opensource@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.0" }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2024-04-09T21:13:58+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.8.2", + "name": "phpmyadmin/sql-parser", + "version": "5.9.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "153ae662783729388a584b4361f2545e4d841e3c" + "url": "https://github.com/phpmyadmin/sql-parser.git", + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", - "reference": "153ae662783729388a584b4361f2545e4d841e3c", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/011fa18a4e55591fac6545a821921dd1d61c6984", + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.3 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" + "php": "^7.2 || ^8.0", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpmyadmin/motranslator": "<3.0" }, "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", + "phpbench/phpbench": "^1.1", + "phpmyadmin/coding-standard": "^3.0", + "phpmyadmin/motranslator": "^4.0 || ^5.0", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" + "phpstan/phpstan": "^1.9.12", + "phpstan/phpstan-phpunit": "^1.3.3", + "phpunit/php-code-coverage": "*", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.11", + "zumba/json-serializer": "~3.0.2" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } + "suggest": { + "ext-mbstring": "For best performance", + "phpmyadmin/motranslator": "Translate messages to your favorite locale" }, + "bin": [ + "bin/highlight-query", + "bin/lint-query", + "bin/sql-parser", + "bin/tokenize-query" + ], + "type": "library", "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "PhpMyAdmin\\SqlParser\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "GPL-2.0-or-later" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "The phpMyAdmin Team", + "email": "developers@phpmyadmin.net", + "homepage": "https://www.phpmyadmin.net/team/" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", + "homepage": "https://github.com/phpmyadmin/sql-parser", + "keywords": [ + "analysis", + "lexer", + "parser", + "query linter", + "sql", + "sql lexer", + "sql linter", + "sql parser", + "sql syntax highlighter", + "sql tokenizer" + ], "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + "issues": "https://github.com/phpmyadmin/sql-parser/issues", + "source": "https://github.com/phpmyadmin/sql-parser" }, - "time": "2024-02-23T11:10:43+00:00" + "funding": [ + { + "url": "https://www.phpmyadmin.net/donate/", + "type": "other" + } + ], + "time": "2024-01-20T20:34:02+00:00" }, { - "name": "phpstan/phpdoc-parser", - "version": "1.28.0", + "name": "phpstan/phpstan", + "version": "1.10.67", "source": { "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" + "url": "https://github.com/phpstan/phpstan.git", + "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", - "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/16ddbe776f10da6a95ebd25de7c1dbed397dc493", + "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.2|^8.0" }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" + "conflict": { + "phpstan/phpstan-shim": "*" }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0" + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, - "time": "2024-04-03T18:51:33+00:00" + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2024-04-16T07:22:02+00:00" }, { "name": "phpunit/php-code-coverage", @@ -8543,16 +9916,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.16", + "version": "10.5.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "18f8d4a5f52b61fdd9370aaae3167daa0eeb69cd" + "reference": "c1f736a473d21957ead7e94fcc029f571895abf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/18f8d4a5f52b61fdd9370aaae3167daa0eeb69cd", - "reference": "18f8d4a5f52b61fdd9370aaae3167daa0eeb69cd", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c1f736a473d21957ead7e94fcc029f571895abf5", + "reference": "c1f736a473d21957ead7e94fcc029f571895abf5", "shasum": "" }, "require": { @@ -8624,7 +9997,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.16" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.17" }, "funding": [ { @@ -8640,7 +10013,7 @@ "type": "tidelift" } ], - "time": "2024-03-28T10:08:10+00:00" + "time": "2024-04-05T04:39:01+00:00" }, { "name": "sebastian/cli-parser", @@ -9435,309 +10808,604 @@ "email": "aharvey@php.net" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:05:40+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" + }, + { + "name": "sebastian/version", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.5.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2023-06-28T12:59:17+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.4.4", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c", + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "php": "^8.0", + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.4.4" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/spatie", "type": "github" } ], - "time": "2023-02-03T07:05:40+00:00" + "time": "2024-01-31T14:18:45+00:00" }, { - "name": "sebastian/type", - "version": "4.0.0", + "name": "spatie/ignition", + "version": "1.13.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + "url": "https://github.com/spatie/ignition.git", + "reference": "952798e239d9969e4e694b124c2cc222798dbb28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "url": "https://api.github.com/repos/spatie/ignition/zipball/952798e239d9969e4e694b124c2cc222798dbb28", + "reference": "952798e239d9969e4e694b124c2cc222798dbb28", "shasum": "" }, "require": { - "php": ">=8.1" + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "illuminate/cache": "^9.52|^10.0|^11.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "1.5.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Spatie\\Ignition\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/spatie", "type": "github" } ], - "time": "2023-02-03T07:10:45+00:00" + "time": "2024-04-16T08:49:17+00:00" }, { - "name": "sebastian/version", - "version": "4.0.1", + "name": "spatie/laravel-ignition", + "version": "2.5.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "c93fcadcc4629775c839ac9a90916f07a660266f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/c93fcadcc4629775c839ac9a90916f07a660266f", + "reference": "c93fcadcc4629775c839ac9a90916f07a660266f", "shasum": "" }, "require": { - "php": ">=8.1" + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0|^11.0", + "php": "^8.1", + "spatie/flare-client-php": "^1.3.5", + "spatie/ignition": "^1.13.2", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" + }, + "require-dev": { + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.30", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "4.0-dev" + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } } }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/spatie", "type": "github" } ], - "time": "2023-02-07T11:34:05+00:00" + "time": "2024-04-16T08:57:16+00:00" }, { - "name": "spatie/backtrace", - "version": "1.5.3", + "name": "squizlabs/php_codesniffer", + "version": "3.9.1", "source": { "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", - "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/267a4405fff1d9c847134db3a3c92f1ab7f77909", + "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909", "shasum": "" }, "require": { - "php": "^7.3|^8.0" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "spatie/phpunit-snapshot-assertions": "^4.2", - "symfony/var-dumper": "^5.1" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Backtrace\\": "src" + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Freek Van de Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], - "description": "A better backtrace", - "homepage": "https://github.com/spatie/backtrace", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ - "Backtrace", - "spatie" + "phpcs", + "standards", + "static analysis" ], "support": { - "source": "https://github.com/spatie/backtrace/tree/1.5.3" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, "funding": [ { - "url": "https://github.com/sponsors/spatie", + "url": "https://github.com/PHPCSStandards", "type": "github" }, { - "url": "https://spatie.be/open-source/support-us", - "type": "other" + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" } ], - "time": "2023-06-28T12:59:17+00:00" + "time": "2024-03-31T21:03:09+00:00" }, { - "name": "spatie/flare-client-php", - "version": "1.4.4", + "name": "symfony/filesystem", + "version": "v7.0.6", "source": { "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "17082e780752d346c2db12ef5d6bee8e835e399c" + "url": "https://github.com/symfony/filesystem.git", + "reference": "408105dff4c104454100730bdfd1a9cdd993f04d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c", - "reference": "17082e780752d346c2db12ef5d6bee8e835e399c", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/408105dff4c104454100730bdfd1a9cdd993f04d", + "reference": "408105dff4c104454100730bdfd1a9cdd993f04d", "shasum": "" }, "require": { - "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", - "php": "^8.0", - "spatie/backtrace": "^1.5.2", - "symfony/http-foundation": "^5.2|^6.0|^7.0", - "symfony/mime": "^5.2|^6.0|^7.0", - "symfony/process": "^5.2|^6.0|^7.0", - "symfony/var-dumper": "^5.2|^6.0|^7.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.5.0", - "pestphp/pest": "^1.20|^2.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.3.x-dev" - } - }, "autoload": { - "files": [ - "src/helpers.php" - ], "psr-4": { - "Spatie\\FlareClient\\": "src" - } + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Send PHP errors to Flare", - "homepage": "https://github.com/spatie/flare-client-php", - "keywords": [ - "exception", - "flare", - "reporting", - "spatie" + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.4.4" + "source": "https://github.com/symfony/filesystem/tree/v7.0.6" }, "funding": [ { - "url": "https://github.com/spatie", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2024-01-31T14:18:45+00:00" + "time": "2024-03-21T19:37:36+00:00" }, { - "name": "spatie/ignition", - "version": "1.13.1", + "name": "symfony/options-resolver", + "version": "v7.0.0", "source": { "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "889bf1dfa59e161590f677728b47bf4a6893983b" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "700ff4096e346f54cb628ea650767c8130f1001f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/889bf1dfa59e161590f677728b47bf4a6893983b", - "reference": "889bf1dfa59e161590f677728b47bf4a6893983b", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", + "reference": "700ff4096e346f54cb628ea650767c8130f1001f", "shasum": "" }, "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^8.0", - "spatie/backtrace": "^1.5.3", - "spatie/flare-client-php": "^1.4.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "require-dev": { - "illuminate/cache": "^9.52|^10.0|^11.0", - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20|^2.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "psr/simple-cache-implementation": "*", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "vlucas/phpdotenv": "^5.5" - }, - "suggest": { - "openai-php/client": "Require get solutions from OpenAI", - "simple-cache-implementation": "To cache solutions from OpenAI" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.5.x-dev" - } - }, "autoload": { "psr-4": { - "Spatie\\Ignition\\": "src" - } + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9745,91 +11413,74 @@ ], "authors": [ { - "name": "Spatie", - "email": "info@spatie.be", - "role": "Developer" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A beautiful error page for PHP applications.", - "homepage": "https://flareapp.io/ignition", + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", "keywords": [ - "error", - "flare", - "laravel", - "page" + "config", + "configuration", + "options" ], "support": { - "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", - "forum": "https://twitter.com/flareappio", - "issues": "https://github.com/spatie/ignition/issues", - "source": "https://github.com/spatie/ignition" + "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" }, "funding": [ { - "url": "https://github.com/spatie", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2024-03-29T14:03:47+00:00" + "time": "2023-08-08T10:20:21+00:00" }, { - "name": "spatie/laravel-ignition", - "version": "2.5.1", + "name": "symfony/polyfill-php81", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9", - "reference": "0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^10.0|^11.0", - "php": "^8.1", - "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.13", - "symfony/console": "^6.2.3|^7.0", - "symfony/var-dumper": "^6.2.3|^7.0" - }, - "require-dev": { - "livewire/livewire": "^2.11|^3.3.5", - "mockery/mockery": "^1.5.1", - "openai-php/client": "^0.8.1", - "orchestra/testbench": "^8.0|^9.0", - "pestphp/pest": "^2.30", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan-deprecation-rules": "^1.1.1", - "phpstan/phpstan-phpunit": "^1.3.3", - "vlucas/phpdotenv": "^5.5" - }, - "suggest": { - "openai-php/client": "Require get solutions from OpenAI", - "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + "php": ">=7.1" }, "type": "library", "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "files": [ - "src/helpers.php" + "bootstrap.php" ], "psr-4": { - "Spatie\\LaravelIgnition\\": "src" - } + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9837,64 +11488,63 @@ ], "authors": [ { - "name": "Spatie", - "email": "info@spatie.be", - "role": "Developer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A beautiful error page for Laravel applications.", - "homepage": "https://flareapp.io/ignition", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "error", - "flare", - "laravel", - "page" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", - "forum": "https://twitter.com/flareappio", - "issues": "https://github.com/spatie/laravel-ignition/issues", - "source": "https://github.com/spatie/laravel-ignition" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" }, "funding": [ { - "url": "https://github.com/spatie", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2024-04-02T06:30:22+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/yaml", + "name": "symfony/stopwatch", "version": "v7.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" + "url": "https://github.com/symfony/stopwatch.git", + "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", - "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/983900d6fddf2b0cbaacacbbad07610854bd8112", + "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<6.4" - }, - "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/service-contracts": "^2.5|^3" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" + "Symfony\\Component\\Stopwatch\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9914,10 +11564,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Loads and dumps YAML files", + "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.3" + "source": "https://github.com/symfony/stopwatch/tree/v7.0.3" }, "funding": [ { @@ -10043,6 +11693,131 @@ } ], "time": "2024-03-03T12:36:25+00:00" + }, + { + "name": "tightenco/duster", + "version": "v2.7.5", + "source": { + "type": "git", + "url": "https://github.com/tighten/duster.git", + "reference": "b12d519e8cc59632832dbd4f9995d67ae015c600" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tighten/duster/zipball/b12d519e8cc59632832dbd4f9995d67ae015c600", + "reference": "b12d519e8cc59632832dbd4f9995d67ae015c600", + "shasum": "" + }, + "require": { + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.49", + "laravel-zero/framework": "^10.3", + "laravel/pint": "^1.13", + "nunomaduro/termwind": "^1.15", + "spatie/invade": "^1.1", + "squizlabs/php_codesniffer": "^3.8", + "tightenco/tlint": "^9.2" + }, + "bin": [ + "builds/duster" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Stauffer", + "email": "matt@tighten.com", + "homepage": "https://tighten.com", + "role": "Developer" + }, + { + "name": "Anthony Clark", + "email": "anthony@tighten.com", + "homepage": "https://tighten.com", + "role": "Developer" + } + ], + "description": "Automatic configuration for Laravel apps to apply Tighten's standard linting & code standards.", + "homepage": "https://github.com/tighten/duster", + "keywords": [ + "Code style", + "duster", + "laravel", + "php", + "tightenco" + ], + "support": { + "issues": "https://github.com/tighten/duster/issues", + "source": "https://github.com/tighten/duster" + }, + "time": "2024-04-12T19:37:39+00:00" + }, + { + "name": "tightenco/tlint", + "version": "v9.3.0", + "source": { + "type": "git", + "url": "https://github.com/tighten/tlint.git", + "reference": "1efca15053fa06d92104efd3ad1bf64c5b5b1b4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tighten/tlint/zipball/1efca15053fa06d92104efd3ad1bf64c5b5b1b4a", + "reference": "1efca15053fa06d92104efd3ad1bf64c5b5b1b4a", + "shasum": "" + }, + "require": { + "illuminate/view": "*", + "nikic/php-parser": "^4.15", + "php": ">=8.1", + "symfony/console": "^6.1||^7.0", + "symfony/process": "^6.1||^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6", + "spatie/ray": "^1.37", + "symfony/var-dumper": "^6.1", + "tightenco/duster": "^2.0" + }, + "bin": [ + "bin/tlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Tighten\\TLint\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Logan Henson", + "email": "logan@loganhenson.com", + "role": "Developer" + } + ], + "description": "Tighten linter for Laravel conventions", + "homepage": "https://github.com/tighten/tlint", + "support": { + "issues": "https://github.com/tighten/tlint/issues", + "source": "https://github.com/tighten/tlint/tree/v9.3.0" + }, + "time": "2024-03-12T14:46:18+00:00" } ], "aliases": [], diff --git a/config/cache.php b/config/cache.php index 3eb95d1..ba1b19c 100644 --- a/config/cache.php +++ b/config/cache.php @@ -102,6 +102,6 @@ | */ - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache_'), ]; diff --git a/config/database.php b/config/database.php index f8e8dcb..1f61388 100644 --- a/config/database.php +++ b/config/database.php @@ -144,7 +144,7 @@ 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'), ], 'default' => [ diff --git a/config/filesystems.php b/config/filesystems.php index 44fe9c8..40b7e78 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -39,7 +39,7 @@ 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => env('APP_URL') . '/storage', 'visibility' => 'public', 'throw' => false, ], diff --git a/config/logging.php b/config/logging.php index d526b64..2272196 100644 --- a/config/logging.php +++ b/config/logging.php @@ -89,7 +89,7 @@ 'handler_with' => [ 'host' => env('PAPERTRAIL_URL'), 'port' => env('PAPERTRAIL_PORT'), - 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://' . env('PAPERTRAIL_URL') . ':' . env('PAPERTRAIL_PORT'), ], 'processors' => [PsrLogMessageProcessor::class], ], diff --git a/config/nativephp.php b/config/nativephp.php new file mode 100644 index 0000000..8e4e4ed --- /dev/null +++ b/config/nativephp.php @@ -0,0 +1,117 @@ + env('NATIVEPHP_APP_VERSION', '1.0.0'), + + /** + * The ID of your application. This should be a unique identifier + * usually in the form of a reverse domain name. + * For example: com.nativephp.app + */ + 'app_id' => env('NATIVEPHP_APP_ID'), + + /** + * If your application allows deep linking, you can specify the scheme + * to use here. This is the scheme that will be used to open your + * application from within other applications. + * For example: "nativephp" + * + * This would allow you to open your application using a URL like: + * nativephp://some/path + */ + 'deeplink_scheme' => env('NATIVEPHP_DEEPLINK_SCHEME'), + + /** + * The author of your application. + */ + 'author' => env('NATIVEPHP_APP_AUTHOR'), + + /** + * The default service provider for your application. This provider + * takes care of bootstrapping your application and configuring + * any global hotkeys, menus, windows, etc. + */ + 'provider' => \App\Providers\NativeAppServiceProvider::class, + + /** + * A list of environment keys that should be removed from the + * .env file when the application is bundled for production. + * You may use wildcards to match multiple keys. + */ + 'cleanup_env_keys' => [ + 'AWS_*', + 'GITHUB_*', + 'DO_SPACES_*', + '*_SECRET', + 'NATIVEPHP_UPDATER_PATH', + 'NATIVEPHP_APPLE_ID', + 'NATIVEPHP_APPLE_ID_PASS', + 'NATIVEPHP_APPLE_TEAM_ID', + ], + + /** + * A list of files and folders that should be removed from the + * final app before it is bundled for production. + * You may use glob / wildcard patterns here. + */ + 'cleanup_exclude_files' => [ + 'content', + 'storage/app/framework/{sessions,testing,cache}', + 'storage/logs/laravel.log', + ], + + /** + * The NativePHP updater configuration. + */ + 'updater' => [ + /** + * Whether or not the updater is enabled. Please note that the + * updater will only work when your application is bundled + * for production. + */ + 'enabled' => env('NATIVEPHP_UPDATER_ENABLED', true), + + /** + * The updater provider to use. + * Supported: "github", "s3", "spaces" + */ + 'default' => env('NATIVEPHP_UPDATER_PROVIDER', 'spaces'), + + 'providers' => [ + 'github' => [ + 'driver' => 'github', + 'repo' => env('GITHUB_REPO'), + 'owner' => env('GITHUB_OWNER'), + 'token' => env('GITHUB_TOKEN'), + 'vPrefixedTagName' => env('GITHUB_V_PREFIXED_TAG_NAME', true), + 'private' => env('GITHUB_PRIVATE', false), + 'channel' => env('GITHUB_CHANNEL', 'latest'), + 'releaseType' => env('GITHUB_RELEASE_TYPE', 'draft'), + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'endpoint' => env('AWS_ENDPOINT'), + 'path' => env('NATIVEPHP_UPDATER_PATH', null), + ], + + 'spaces' => [ + 'driver' => 'spaces', + 'key' => env('DO_SPACES_KEY_ID'), + 'secret' => env('DO_SPACES_SECRET_ACCESS_KEY'), + 'name' => env('DO_SPACES_NAME'), + 'region' => env('DO_SPACES_REGION'), + 'path' => env('NATIVEPHP_UPDATER_PATH', null), + ], + ], + ], +]; diff --git a/config/session.php b/config/session.php index 0e22ee4..1de9fc7 100644 --- a/config/session.php +++ b/config/session.php @@ -130,7 +130,7 @@ 'cookie' => env( 'SESSION_COOKIE', - Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + Str::slug(env('APP_NAME', 'laravel'), '_') . '_session' ), /* diff --git a/config/settings.php b/config/settings.php new file mode 100644 index 0000000..e2f5601 --- /dev/null +++ b/config/settings.php @@ -0,0 +1,96 @@ + [ + Preferences::class, + ], + + /* + * The path where the settings classes will be created. + */ + 'setting_class_path' => app_path('Settings'), + + /* + * In these directories settings migrations will be stored and ran when migrating. A settings + * migration created via the make:settings-migration command will be stored in the first path or + * a custom defined path when running the command. + */ + 'migrations_paths' => [ + database_path('settings'), + ], + + /* + * When no repository was set for a settings class the following repository + * will be used for loading and saving settings. + */ + 'default_repository' => 'database', + + /* + * Settings will be stored and loaded from these repositories. + */ + 'repositories' => [ + 'database' => [ + 'type' => Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class, + 'model' => null, + 'table' => null, + 'connection' => null, + ], + 'redis' => [ + 'type' => Spatie\LaravelSettings\SettingsRepositories\RedisSettingsRepository::class, + 'connection' => null, + 'prefix' => null, + ], + ], + + /* + * The encoder and decoder will determine how settings are stored and + * retrieved in the database. By default, `json_encode` and `json_decode` + * are used. + */ + 'encoder' => null, + 'decoder' => null, + + /* + * The contents of settings classes can be cached through your application, + * settings will be stored within a provided Laravel store and can have an + * additional prefix. + */ + 'cache' => [ + 'enabled' => env('SETTINGS_CACHE_ENABLED', false), + 'store' => null, + 'prefix' => null, + 'ttl' => null, + ], + + /* + * These global casts will be automatically used whenever a property within + * your settings class isn't a default PHP type. + */ + 'global_casts' => [ + DateTimeInterface::class => Spatie\LaravelSettings\SettingsCasts\DateTimeInterfaceCast::class, + DateTimeZone::class => Spatie\LaravelSettings\SettingsCasts\DateTimeZoneCast::class, + // Spatie\DataTransferObject\DataTransferObject::class => Spatie\LaravelSettings\SettingsCasts\DtoCast::class, + Spatie\LaravelData\Data::class => Spatie\LaravelSettings\SettingsCasts\DataCast::class, + ], + + /* + * The package will look for settings in these paths and automatically + * register them. + */ + 'auto_discover_settings' => [ + app_path('Settings'), + ], + + /* + * Automatically discovered settings classes can be cached, so they don't + * need to be searched each time the application boots up. + */ + 'discovered_settings_cache_path' => base_path('bootstrap/cache'), +]; diff --git a/config/workspace-integrations.php b/config/workspace-integrations.php new file mode 100644 index 0000000..6dfd9c5 --- /dev/null +++ b/config/workspace-integrations.php @@ -0,0 +1,25 @@ + diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index 05fb5d9..0d50d6e 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -1,14 +1,11 @@ id(); + + $table->string('group'); + $table->string('name'); + $table->boolean('locked')->default(false); + $table->json('payload'); + + $table->timestamps(); + + $table->unique(['group', 'name']); + }); + } +}; diff --git a/database/migrations/2024_04_04_075745_create_messages_table.php b/database/migrations/2024_04_04_075745_create_messages_table.php index 75157bb..7841440 100644 --- a/database/migrations/2024_04_04_075745_create_messages_table.php +++ b/database/migrations/2024_04_04_075745_create_messages_table.php @@ -1,8 +1,8 @@ migrator->add('config.port', 2525); + } +}; diff --git a/duster.json b/duster.json new file mode 100644 index 0000000..5c8560c --- /dev/null +++ b/duster.json @@ -0,0 +1,24 @@ +{ + "scripts": { + "lint": { + "Prettier Blade": [ + "./node_modules/.bin/prettier", + "--check", + "resources/**/*.blade.php" + ], + "Larastan": [ + "./vendor/bin/phpstan", + "analyse", + "--memory-limit=2G" + ] + }, + "fix": { + "Prettier Blade": [ + "./node_modules/.bin/prettier", + "--write", + "resources/**/*.blade.php" + ] + } + }, + "processTimeout": 120 +} diff --git a/kill-stray-processes.sh b/kill-stray-processes.sh new file mode 100644 index 0000000..00a6f26 --- /dev/null +++ b/kill-stray-processes.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Define the port number +port="2525" + +# Find the process ID (PID) listening on the specified port +pid=$(lsof -ti :$port) + +# If a PID is found, kill the process +if [ -n "$pid" ]; then + kill $pid + echo "Process listening on port $port has been killed." +else + echo "No process found listening on port $port." +fi diff --git a/package-lock.json b/package-lock.json index df13cd3..0ace50d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,10 +8,13 @@ "@alpinejs/ui": "^3.13.8-beta.0" }, "devDependencies": { + "@shufo/prettier-plugin-blade": "^1.14.1", + "@tailwindcss/forms": "^0.5.7", "autoprefixer": "^10.4.18", "axios": "^1.6.4", "laravel-vite-plugin": "^1.0", "postcss": "^8.4.37", + "prettier": "^3.2.5", "tailwindcss": "^3.4.1", "vite": "^5.0" } @@ -33,6 +36,19 @@ "resolved": "https://registry.npmjs.org/@alpinejs/ui/-/ui-3.13.8-beta.0.tgz", "integrity": "sha512-k4roH48nYfLjeL+VRm3xBwxuTfSn6B2e1iBXphrUDNADZcehXQgXvy5wv1TtUVvy7GJGcMYhrQT+CrDTTps4sA==" }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.4.tgz", + "integrity": "sha512-VOQOexSilscN24VEY810G/PqtpFvx/z6UqDIjIWbDe2368HhDLkYN5TYwaEz/+eRCUkhJ2WaNLLmQAlxzfWj4w==", + "dev": true, + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", @@ -501,6 +517,12 @@ "node": ">= 8" } }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -511,6 +533,19 @@ "node": ">=14" } }, + "node_modules/@prettier/plugin-php": { + "version": "0.22.2", + "resolved": "https://registry.npmjs.org/@prettier/plugin-php/-/plugin-php-0.22.2.tgz", + "integrity": "sha512-md0+7tNbsP0oy+wIP3KZZc6fzx1k1jtWaMjOy/gM8yU9f2BDYEi+iHOc/UNPihYvPI28zFTbjvlhH4QXQjQwNg==", + "dev": true, + "dependencies": { + "linguist-languages": "^7.27.0", + "php-parser": "^3.1.5" + }, + "peerDependencies": { + "prettier": "^3.0.0" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.13.2", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.2.tgz", @@ -706,12 +741,91 @@ "win32" ] }, + "node_modules/@shufo/prettier-plugin-blade": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@shufo/prettier-plugin-blade/-/prettier-plugin-blade-1.14.1.tgz", + "integrity": "sha512-CPeFzNOh/wHlEFTUzt+mqOe66oXRSh51/DQzmv9DaN77I8QzLVwoKNx10bl+9PtZVc65+6kE4dg7+4iG1epqeA==", + "dev": true, + "dependencies": { + "blade-formatter": "1.41.1", + "prettier": "3.2.5" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@shufo/tailwindcss-class-sorter": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@shufo/tailwindcss-class-sorter/-/tailwindcss-class-sorter-3.0.1.tgz", + "integrity": "sha512-y9SMobvwElX2G6vdg4odJ6UL6hu/o5RlMsdwEeDLGaqHU3BLSw9CeitGgBus6kadjjDdT2wseG0Tl5yXWdc4UQ==", + "dev": true, + "dependencies": { + "escalade": "^3.1.1", + "object-hash": "^3.0.0", + "tailwindcss": "^3.3.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz", + "integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==", + "dev": true, + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + } + }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/aigle": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/aigle/-/aigle-1.14.1.tgz", + "integrity": "sha512-bCmQ65CEebspmpbWFs6ab3S27TNyVH1b5MledX8KoiGxUhsJmPUUGpaoSijhwawNnq5Lt8jbcq7Z7gUAD0nuTw==", + "dev": true, + "dependencies": { + "aigle-core": "^1.0.0" + } + }, + "node_modules/aigle-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/aigle-core/-/aigle-core-1.0.0.tgz", + "integrity": "sha512-uGFWPumk5DLvYnUphNnff+kWC8VeAnjPbbU8ovsSHflKXGX77SD7cAN/aSBCLX3xnoJAM9KdtRgxUygRnSSu7A==", + "dev": true + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -833,6 +947,72 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/blade-formatter": { + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/blade-formatter/-/blade-formatter-1.41.1.tgz", + "integrity": "sha512-J4L0hsw+r6XSnrEpHMPDldfPeaEmhHwXacs5oFh+9FgDu2Ec7p1tLxA8QXdgcXZU0ILTMkzAtusia10oP05g3Q==", + "dev": true, + "dependencies": { + "@prettier/plugin-php": "^0.22.2", + "@shufo/tailwindcss-class-sorter": "3.0.1", + "aigle": "^1.14.1", + "ajv": "^8.9.0", + "chalk": "^4.1.0", + "concat-stream": "^2.0.0", + "detect-indent": "^6.0.0", + "find-config": "^1.0.0", + "glob": "^8.0.1", + "html-attribute-sorter": "^0.4.3", + "ignore": "^5.1.8", + "js-beautify": "^1.14.8", + "lodash": "^4.17.19", + "php-parser": "3.1.5", + "prettier": "^3.2.5", + "string-replace-async": "^2.0.0", + "tailwindcss": "^3.1.8", + "vscode-oniguruma": "1.7.0", + "vscode-textmate": "^7.0.1", + "xregexp": "^5.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "blade-formatter": "bin/blade-formatter.cjs" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/blade-formatter/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/blade-formatter/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -886,6 +1066,12 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -915,6 +1101,37 @@ } ] }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -951,6 +1168,93 @@ "node": ">= 6" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -990,6 +1294,42 @@ "node": ">= 6" } }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/core-js-pure": { + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.36.1.tgz", + "integrity": "sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1025,6 +1365,15 @@ "node": ">=0.4.0" } }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -1043,6 +1392,48 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.723", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.723.tgz", @@ -1102,6 +1493,12 @@ "node": ">=6" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -1151,6 +1548,18 @@ "node": ">=8" } }, + "node_modules/find-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-config/-/find-config-1.0.0.tgz", + "integrity": "sha512-Z+suHH+7LSE40WfUeZPIxSxypCWvrzdVc60xAjUShZeT5eMWM0/FQUduq3HjluyfAHWvC/aOBkT1pTZktyF/jg==", + "dev": true, + "dependencies": { + "user-home": "^2.0.0" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/follow-redirects": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", @@ -1214,6 +1623,12 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -1237,6 +1652,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/glob": { "version": "10.3.12", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", @@ -1271,6 +1695,15 @@ "node": ">=10.13.0" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -1283,6 +1716,46 @@ "node": ">= 0.4" } }, + "node_modules/html-attribute-sorter": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/html-attribute-sorter/-/html-attribute-sorter-0.4.3.tgz", + "integrity": "sha512-HWSvaXJki44tg0uR1t+j5pRdUVpNiZcJaoB/PFhss/YoAw9cxUDLCpIBbLWQmKjBQfWk91P6LaRnredEyabrDw==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1379,6 +1852,42 @@ "jiti": "bin/jiti.js" } }, + "node_modules/js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/laravel-vite-plugin": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.0.2.tgz", @@ -1413,6 +1922,18 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/linguist-languages": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/linguist-languages/-/linguist-languages-7.27.0.tgz", + "integrity": "sha512-Wzx/22c5Jsv2ag+uKy+ITanGA5hzvBZngrNGDXLTC7ZjGM6FLCYGgomauTkxNJeP9of353OM0pWqngYA180xgw==", + "dev": true + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/lru-cache": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", @@ -1465,6 +1986,15 @@ "node": ">= 0.6" } }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, "node_modules/minimatch": { "version": "9.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", @@ -1524,6 +2054,21 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, + "node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1560,6 +2105,24 @@ "node": ">= 6" } }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -1591,6 +2154,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/php-parser": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.1.5.tgz", + "integrity": "sha512-jEY2DcbgCm5aclzBdfW86GM6VEIWcSlhTBSHN1qhJguVePlYe28GhwS0yoeLYXpM2K8y6wzLwrbq814n2PHSoQ==", + "dev": true + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -1776,12 +2345,42 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -1811,6 +2410,20 @@ "pify": "^2.3.0" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -1823,6 +2436,30 @@ "node": ">=8.10.0" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -1907,6 +2544,53 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1949,6 +2633,24 @@ "node": ">=0.10.0" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-replace-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-replace-async/-/string-replace-async-2.0.0.tgz", + "integrity": "sha512-AHMupZscUiDh07F1QziX7PLoB1DQ/pzu19vc8Xa8LwZcgnOXaw7yCgBuSYrxVEfaM2d8scc3Gtp+i+QJZV+spw==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -2067,6 +2769,18 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -2155,6 +2869,12 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -2185,6 +2905,27 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -2256,6 +2997,18 @@ "picomatch": "^2.3.1" } }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-7.0.4.tgz", + "integrity": "sha512-9hJp0xL7HW1Q5OgGe03NACo7yiCTMEk3WU/rtKXUbncLtdg6rVVNJnHwD88UhbIYU2KoxY0Dih0x+kIsmUKn2A==", + "dev": true + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2362,6 +3115,36 @@ "node": ">=8" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xregexp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-5.1.1.tgz", + "integrity": "sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==", + "dev": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.16.5" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/yaml": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", @@ -2373,6 +3156,74 @@ "engines": { "node": ">= 14" } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } } } } diff --git a/package.json b/package.json index cbd91c3..d978641 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,13 @@ "build": "vite build" }, "devDependencies": { + "@shufo/prettier-plugin-blade": "^1.14.1", + "@tailwindcss/forms": "^0.5.7", "autoprefixer": "^10.4.18", "axios": "^1.6.4", "laravel-vite-plugin": "^1.0", "postcss": "^8.4.37", + "prettier": "^3.2.5", "tailwindcss": "^3.4.1", "vite": "^5.0" }, diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..15b7967 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,18 @@ +includes: + - ./vendor/larastan/larastan/extension.neon + +parameters: + + paths: + - app/ + + # Level 9 is the highest level + level: 4 + + ignoreErrors: +# - "#^Access to an undefined property Illuminate\\\\Database\\\\Eloquent\\\\Model\\:\\:\\$id\\.$#" +# +# excludePaths: +# - ./*/*/FileToBeExcluded.php +# +# checkMissingIterableValueType: false diff --git a/pint.json b/pint.json new file mode 100644 index 0000000..eaaf095 --- /dev/null +++ b/pint.json @@ -0,0 +1,45 @@ +{ + "preset": "laravel", + "rules": { + "blank_line_between_import_groups": true, + "concat_space": { + "spacing": "one" + }, + "class_attributes_separation": { + "elements": { + "method": "one" + } + }, + "curly_braces_position": { + "control_structures_opening_brace": "same_line", + "functions_opening_brace": "next_line_unless_newline_at_signature_end", + "anonymous_functions_opening_brace": "same_line", + "classes_opening_brace": "next_line_unless_newline_at_signature_end", + "anonymous_classes_opening_brace": "next_line_unless_newline_at_signature_end", + "allow_single_line_empty_anonymous_classes": true, + "allow_single_line_anonymous_functions": false + }, + "explicit_string_variable": true, + "global_namespace_import": { + "import_classes": true, + "import_constants": true, + "import_functions": true + }, + "new_with_braces": { + "named_class": false, + "anonymous_class": false + }, + "ordered_imports": { + "sort_algorithm": "length", + "imports_order": [ + "const", + "class", + "function" + ] + }, + "php_unit_test_annotation": { + "style": "annotation" + }, + "simple_to_complex_string_variable": true + } +} diff --git a/public/index.php b/public/index.php index 947d989..74a0960 100644 --- a/public/index.php +++ b/public/index.php @@ -5,13 +5,13 @@ define('LARAVEL_START', microtime(true)); // Determine if the application is in maintenance mode... -if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) { +if (file_exists($maintenance = __DIR__ . '/../storage/framework/maintenance.php')) { require $maintenance; } // Register the Composer autoloader... -require __DIR__.'/../vendor/autoload.php'; +require __DIR__ . '/../vendor/autoload.php'; // Bootstrap Laravel and handle the request... -(require_once __DIR__.'/../bootstrap/app.php') +(require_once __DIR__ . '/../bootstrap/app.php') ->handleRequest(Request::capture()); diff --git a/resources/views/components/dialog/footer.blade.php b/resources/views/components/dialog/footer.blade.php new file mode 100644 index 0000000..5483601 --- /dev/null +++ b/resources/views/components/dialog/footer.blade.php @@ -0,0 +1,5 @@ +
+
+ {{ $slot }} +
+
diff --git a/resources/views/components/dialog/index.blade.php b/resources/views/components/dialog/index.blade.php new file mode 100644 index 0000000..0c6ec9a --- /dev/null +++ b/resources/views/components/dialog/index.blade.php @@ -0,0 +1,17 @@ +
+ {{ $slot }} +
diff --git a/resources/views/components/dialog/panel.blade.php b/resources/views/components/dialog/panel.blade.php new file mode 100644 index 0000000..884452d --- /dev/null +++ b/resources/views/components/dialog/panel.blade.php @@ -0,0 +1,56 @@ + diff --git a/resources/views/components/input/button.blade.php b/resources/views/components/input/button.blade.php new file mode 100644 index 0000000..2dc9ecf --- /dev/null +++ b/resources/views/components/input/button.blade.php @@ -0,0 +1,26 @@ +@props([ + 'level' => 'primary', + 'type' => 'button', + 'href' => false, +]) + +@php + $element = $href ? 'a' : 'button'; + + $defaultClasses = 'text-sm font-medium rounded shadow-sm transition-all disabled:opacity-50 cursor-default'; + + $levelClasses = match ($level) { + 'round' => 'rounded-full bg-indigo-600 p-1 text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 hover:scale-110 focus-visible:scale-110', + 'danger' => 'px-2 py-1 text-white bg-red-600 hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600', + 'primary' => 'px-2 py-1 text-white bg-indigo-600 hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600', + 'secondary' => 'px-2 py-1 text-neutral-500 bg-white ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus-visible:outline-gray-200 focus-visible:outline-2', + }; +@endphp + +<{{ $element }} {{ $attributes->merge([ + 'type' => $type, + 'href' => $href, + 'class' => "{$defaultClasses} {$levelClasses}", +]) }}> + {{ $slot }} + diff --git a/resources/views/components/input/group.blade.php b/resources/views/components/input/group.blade.php new file mode 100644 index 0000000..68480ae --- /dev/null +++ b/resources/views/components/input/group.blade.php @@ -0,0 +1,32 @@ +@props([ + 'label' => false, + 'model' => false, +]) + + diff --git a/resources/views/components/input/radio.blade.php b/resources/views/components/input/radio.blade.php new file mode 100644 index 0000000..2ca395c --- /dev/null +++ b/resources/views/components/input/radio.blade.php @@ -0,0 +1,51 @@ +@props(['value', 'label' => false, 'description' => false]) + +@php + $model = $attributes->wire('model')->value; +@endphp + +
whereStartsWith(['wire:key']) }} +> +
+ whereStartsWith(['wire', 'x']) }} + value="{{ $value }}" + :id="$id('input')" + type="radio" + @class([ + 'w-4 h-4 text-indigo-600 rounded-full read-only:ring-opacity-50', + 'border-gray-300 ring-gray-300 focus:ring-indigo-600' => $errors->missing( + $model), + 'border-red-400 ring-red-400 focus:ring-red-500' => $errors->has($model), + ]) + @error($model) + aria-invalid="true" + aria-description="{{ $message }}" + @enderror + > +
+ +
+ @if ($label) + + @endif + + @if ($description) +

+ {{ $description }} +

+ @endif +
+
diff --git a/resources/views/components/input/text.blade.php b/resources/views/components/input/text.blade.php new file mode 100644 index 0000000..8b446d2 --- /dev/null +++ b/resources/views/components/input/text.blade.php @@ -0,0 +1,31 @@ +@props([ + 'label' => false, +]) + +@php + $model = $attributes->wire('model')->value; +@endphp + + + + $errors->missing( + $model), + 'text-red-700 ring-red-400 placeholder:text-red-300 focus:ring-red-500' => $errors->has( + $model), + $attributes->get('class'), + ]) + @error($model) + aria-invalid="true" + aria-description="{{ $message }}" + @enderror + /> + + diff --git a/resources/views/components/layouts/app.blade.php b/resources/views/components/layouts/app.blade.php index 0ecd22b..69570d8 100644 --- a/resources/views/components/layouts/app.blade.php +++ b/resources/views/components/layouts/app.blade.php @@ -1,17 +1,25 @@ - - - - {{ $title ?? 'Page Title' }} + + + - @vite(['resources/css/app.css', 'resources/js/app.js']) + {{ $title ?? 'Page Title' }} - - - {{ $slot }} - + @vite(['resources/css/app.css', 'resources/js/app.js']) + + + + + {{ $slot }} + + + + +@livewireScriptConfig - @livewireScriptConfig diff --git a/resources/views/components/message/index.blade.php b/resources/views/components/message/index.blade.php index e2e049d..2f5cdb3 100644 --- a/resources/views/components/message/index.blade.php +++ b/resources/views/components/message/index.blade.php @@ -1,45 +1,63 @@ @use('ZBateson\MailMimeParser\Header\HeaderConsts', 'Header') -@props([ - 'message' -]) +@props(['message']) - -@php - $parsed = $message->parsed(); -@endphp - -
-
+
-
+
-
-

- {{ $parsed->getHeaderValue(Header::SUBJECT) }} - - - <{{ $parsed->getHeaderValue(Header::FROM) }}> + {{ $message->parsed->getHeaderValue(Header::SUBJECT) }} + + + <{{ $message->parsed->getHeaderValue(Header::FROM) }}>

-

- To: {{ $parsed->getHeaderValue(Header::TO) }} +

+ + To: {{ $message->parsed->getHeaderValue(Header::TO) }} + + + - {{ $message->size }} - {{ $message->created_at->format('Y/m/d g:i A') }} +

@@ -48,79 +66,95 @@ class="flex flex-col w-full px-4 overflow-y-scroll bg-white"
- - - - - -
- - {{-- tab list --}} -
+ + {{-- tab list --}} +
{{-- tab panels --}} -
- - - - - - +
+ + + + + +
diff --git a/resources/views/components/message/list-item.blade.php b/resources/views/components/message/list-item.blade.php index 20ec8bf..53ff15b 100644 --- a/resources/views/components/message/list-item.blade.php +++ b/resources/views/components/message/list-item.blade.php @@ -1,36 +1,35 @@ @use('ZBateson\MailMimeParser\Header\HeaderConsts', 'Header') -@props([ - 'message', - 'selected' => false -]) +@props(['message', 'selected' => false]) -@php - $parsed = $message->parsed() -@endphp - - -
$selected, - "hover:bg-neutral-100" => !$selected, + 'flex items-center block w-full px-4 py-5 transition border-b cursor-default', + 'shadow-inner bg-neutral-200' => $selected, + 'hover:bg-neutral-100' => !$selected, ]) >
{{-- ping --}} - @unless($message->read_at) - - - + @unless ($message->read_at) + + + @endunless {{-- bookmark --}} - @if($message->bookmarked) - + @if ($message->bookmarked) + @endif
@@ -42,7 +41,7 @@ 'text-lg font-medium text-neutral-600 transition-colors', '!text-neutral-700' => $selected, ])> - {{ $parsed->getHeaderValue(Header::FROM) ?? $parsed->getHeaderValue(Header::SENDER) }} + {{ $message->parsed->getHeaderValue(Header::FROM) ?? $message->parsed->getHeaderValue(Header::SENDER) }}

$selected, ])> - {{ $parsed->getHeaderValue(Header::SUBJECT) }} + {{ $message->parsed->getHeaderValue(Header::SUBJECT) }}

diff --git a/resources/views/components/message/panel.blade.php b/resources/views/components/message/panel.blade.php deleted file mode 100644 index f1302d6..0000000 --- a/resources/views/components/message/panel.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -
-
-
class("overflow-x-auto") }}> - {{ $slot }} -
-
-
diff --git a/resources/views/components/message/panel/headers.blade.php b/resources/views/components/message/panel/headers.blade.php new file mode 100644 index 0000000..685a1c3 --- /dev/null +++ b/resources/views/components/message/panel/headers.blade.php @@ -0,0 +1,18 @@ +@props(['message']) + + + + + + + @foreach ($message->parsed->getAllHeaders() as $header) + + + + + @endforeach + + +
{{ $header->getName() }}{{ $header->getValue() }}
+ +
diff --git a/resources/views/components/message/panel/index.blade.php b/resources/views/components/message/panel/index.blade.php new file mode 100644 index 0000000..a1cede3 --- /dev/null +++ b/resources/views/components/message/panel/index.blade.php @@ -0,0 +1,10 @@ +
+
+
class('overflow-x-auto') }}> + {{ $slot }} +
+
+
diff --git a/resources/views/components/message/panel/preview.blade.php b/resources/views/components/message/panel/preview.blade.php new file mode 100644 index 0000000..0174040 --- /dev/null +++ b/resources/views/components/message/panel/preview.blade.php @@ -0,0 +1,25 @@ +@use('ZBateson\MailMimeParser\Header\HeaderConsts', 'Header') + +@props(['message']) + + + + + + diff --git a/resources/views/components/message/tabs/raw.blade.php b/resources/views/components/message/panel/raw.blade.php similarity index 83% rename from resources/views/components/message/tabs/raw.blade.php rename to resources/views/components/message/panel/raw.blade.php index 0f5b598..b0b8ac0 100644 --- a/resources/views/components/message/tabs/raw.blade.php +++ b/resources/views/components/message/panel/raw.blade.php @@ -1,6 +1,4 @@ -@props([ - 'message' -]) +@props(['message']) diff --git a/resources/views/components/message/panel/source.blade.php b/resources/views/components/message/panel/source.blade.php new file mode 100644 index 0000000..0518c09 --- /dev/null +++ b/resources/views/components/message/panel/source.blade.php @@ -0,0 +1,7 @@ +@props(['message']) + + + +
{{ $message->parsed->getHtmlContent() }}
+ +
diff --git a/resources/views/components/message/panel/text.blade.php b/resources/views/components/message/panel/text.blade.php new file mode 100644 index 0000000..a946577 --- /dev/null +++ b/resources/views/components/message/panel/text.blade.php @@ -0,0 +1,7 @@ +@props(['message']) + + + +
{{ $message->parsed->getTextContent() ?? 'No text version provided' }}
+ +
diff --git a/resources/views/components/message/tab-button.blade.php b/resources/views/components/message/tab-button.blade.php new file mode 100644 index 0000000..f54e06a --- /dev/null +++ b/resources/views/components/message/tab-button.blade.php @@ -0,0 +1,8 @@ + diff --git a/resources/views/components/message/tabs/headers.blade.php b/resources/views/components/message/tabs/headers.blade.php deleted file mode 100644 index 91c3344..0000000 --- a/resources/views/components/message/tabs/headers.blade.php +++ /dev/null @@ -1,20 +0,0 @@ -@props([ - 'message' -]) - - - - - - - @foreach($message->parsed()->getAllHeaders() as $header) - - - - - @endforeach - - -
{{ $header->getName() }}{{ $header->getValue() }}
- -
diff --git a/resources/views/components/message/tabs/preview.blade.php b/resources/views/components/message/tabs/preview.blade.php deleted file mode 100644 index 0cd28de..0000000 --- a/resources/views/components/message/tabs/preview.blade.php +++ /dev/null @@ -1,32 +0,0 @@ -@props([ - 'message' -]) - -@php - $parsed = $message->parsed(); -@endphp - - - - - - diff --git a/resources/views/components/message/tabs/source.blade.php b/resources/views/components/message/tabs/source.blade.php deleted file mode 100644 index d9373c6..0000000 --- a/resources/views/components/message/tabs/source.blade.php +++ /dev/null @@ -1,13 +0,0 @@ -@props([ - 'message' -]) - -@php - $parsed = $message->parsed(); -@endphp - - - -
{{ $parsed->getHtmlContent() }}
- -
diff --git a/resources/views/components/message/tabs/text.blade.php b/resources/views/components/message/tabs/text.blade.php deleted file mode 100644 index 67b48e7..0000000 --- a/resources/views/components/message/tabs/text.blade.php +++ /dev/null @@ -1,13 +0,0 @@ -@props([ - 'message' -]) - -@php - $parsed = $message->parsed(); -@endphp - - - -
{{ $parsed->getTextContent() ?? 'No text version provided' }}
- -
diff --git a/resources/views/components/support/code.blade.php b/resources/views/components/support/code.blade.php new file mode 100644 index 0000000..1ab230a --- /dev/null +++ b/resources/views/components/support/code.blade.php @@ -0,0 +1 @@ +
class('whitespace-pre-line rounded bg-neutral-100 p-4 font-mono text-sm leading-normal') }}>{{ $slot }}
diff --git a/resources/views/components/support/config.blade.php b/resources/views/components/support/config.blade.php new file mode 100644 index 0000000..e212d0a --- /dev/null +++ b/resources/views/components/support/config.blade.php @@ -0,0 +1,87 @@ +@use(\App\Enums\Framework) + +@props([ + 'framework' => null, + 'port' => 2525, +]) + +
+ @switch($framework) + {{-- LARAVEL CONFIG --}} + @case (Framework::Laravel) + Add to your .env file: + + + MAIL_MAILER=smtp + MAIL_HOST=127.0.0.1 + MAIL_PORT={{ $port }} + MAIL_PASSWORD=null + MAIL_ENCRYPTION=null + + @break + + {{-- SYMFONY CONFIG --}} + @case(Framework::Symfony) + Add to your .env file: + + + MAILER_URL=smtp://127.0.0.1:{{ $port }}?encryption=null&auth_mode=login&password= + + @break + + {{-- WORDPRESS CONFIG --}} + @case(Framework::Wordpress) + + function phost($phpmailer) { +     $phpmailer->isSMTP(); +     $phpmailer->Host = '127.0.0.1'; +     $phpmailer->SMTPAuth = true; +     $phpmailer->Port = {{ $port }}; +     $phpmailer->Password = ''; + } + + add_action('phpmailer_init', 'phost'); + + @break + + {{-- YII CONFIG --}} + @case(Framework::Yii) + Add to your config file: + + + 'components' => [ +     ... +     'mail' => [ +         'class' => 'yii\swiftmailer\Mailer', +         'transport' => [ +             'class' => 'Swift_SmtpTransport', +             'host' => '127.0.0.1', +             'password' => '', +             'port' => '{{ $port }}', +             'encryption' => 'tls', +         ], +     ], +     ... + ], + + @break + + {{-- RAILS CONFIG --}} + @case(Framework::Rails) + In config/environments/*.rb specify ActionMailer defaults for your development or staging servers: + + + config.action_mailer.delivery_method = :smtp + config.action_mailer.smtp_settings = { +     :user_name => 'Mailbox-Name', +     :password => '', +     :address => '127.0.0.1', +     :domain => '127.0.0.1', +     :port => '{{ $port }}', +     :authentication => :plain + } + + @break + @endswitch + +
diff --git a/resources/views/components/support/dialog-provider.blade.php b/resources/views/components/support/dialog-provider.blade.php new file mode 100644 index 0000000..912efa7 --- /dev/null +++ b/resources/views/components/support/dialog-provider.blade.php @@ -0,0 +1,7 @@ +
+ +
diff --git a/resources/views/components/support/divider.blade.php b/resources/views/components/support/divider.blade.php new file mode 100644 index 0000000..5dcf731 --- /dev/null +++ b/resources/views/components/support/divider.blade.php @@ -0,0 +1 @@ +
diff --git a/resources/views/components/support/tab.blade.php b/resources/views/components/support/tab.blade.php new file mode 100644 index 0000000..2fb1aea --- /dev/null +++ b/resources/views/components/support/tab.blade.php @@ -0,0 +1 @@ +     diff --git a/resources/views/livewire/inbox.blade.php b/resources/views/livewire/inbox.blade.php index bb0b8a5..339489a 100644 --- a/resources/views/livewire/inbox.blade.php +++ b/resources/views/livewire/inbox.blade.php @@ -1,23 +1,24 @@ -
- -
+
-
    - @forelse($this->inbox as $message) - + @forelse ($this->inbox as $message)
  • - @endforelse
- - @if($this->message) - - - + @if ($this->message) + @else - -
- +
+ + + + + settings +
- @endif + {{-- Dialogs --}} + + +

Configuration

+ + +
+
+
diff --git a/resources/views/livewire/settings.blade.php b/resources/views/livewire/settings.blade.php new file mode 100644 index 0000000..8b3b5b9 --- /dev/null +++ b/resources/views/livewire/settings.blade.php @@ -0,0 +1,52 @@ +@use(\App\Enums\Framework) + +
+ +
+ @foreach (Framework::cases() as $framework) + + @endforeach +
+ + + + + +
+ + + + + Cancel + + + + Save + + + + +
diff --git a/routes/web.php b/routes/web.php index 33f6362..bd3fa95 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,4 +3,4 @@ use App\Livewire; use Illuminate\Support\Facades\Route; -Route::get('/{selectedMessageId?}', Livewire\Inbox::class)->name('inbox'); +Route::get('{selectedMessageId?}', Livewire\Inbox::class)->name('inbox'); diff --git a/tailwind.config.js b/tailwind.config.js index f40759a..8e928cb 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -8,5 +8,7 @@ export default { theme: { extend: {}, }, - plugins: [], + plugins: [ + require('@tailwindcss/forms'), + ], } diff --git a/tests/Pest.php b/tests/Pest.php index 50ab1e4..83fba1b 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -1,5 +1,7 @@ in('Feature'); +)->beforeEach(function () { + Server::fake(); +})->in('Feature'); /* |-------------------------------------------------------------------------- diff --git a/tlint.json b/tlint.json new file mode 100644 index 0000000..cb3befd --- /dev/null +++ b/tlint.json @@ -0,0 +1,6 @@ +{ + "preset": "tighten", + "disabled": [ + "QualifiedNamesOnlyForClassName" + ] +}