commit e4a4cfae2b6d83ca47edeb22bf98d83b58668080 Author: user Date: Fri Nov 21 04:28:08 2025 +0100 🚀 initial commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..35db1dd --- /dev/null +++ b/.env.example @@ -0,0 +1,65 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +APP_LOCALE=en +APP_FALLBACK_LOCALE=en +APP_FAKER_LOCALE=en_US + +APP_MAINTENANCE_DRIVER=file +# APP_MAINTENANCE_STORE=database + +PHP_CLI_SERVER_WORKERS=4 + +BCRYPT_ROUNDS=12 + +LOG_CHANNEL=stack +LOG_STACK=single +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=sqlite +# DB_HOST=127.0.0.1 +# DB_PORT=3306 +# DB_DATABASE=laravel +# DB_USERNAME=root +# DB_PASSWORD= + +SESSION_DRIVER=database +SESSION_LIFETIME=120 +SESSION_ENCRYPT=false +SESSION_PATH=/ +SESSION_DOMAIN=null + +BROADCAST_CONNECTION=log +FILESYSTEM_DISK=local +QUEUE_CONNECTION=database + +CACHE_STORE=database +# CACHE_PREFIX= + +MEMCACHED_HOST=127.0.0.1 + +REDIS_CLIENT=phpredis +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_SCHEME=null +MAIL_HOST=127.0.0.1 +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +VITE_APP_NAME="${APP_NAME}" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..f50f803 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +CHANGELOG.md export-ignore +README.md export-ignore diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml new file mode 100644 index 0000000..d350fa2 --- /dev/null +++ b/.gitea/workflows/deploy.yaml @@ -0,0 +1,16 @@ +name: Gitea Actions Deploy + +on: + push: + branches: + - master + +jobs: + + Deploy-Master: + if: ${{ gitea.ref == 'refs/heads/master' }} + runs-on: ubuntu-latest + steps: + - run: echo "Deploying to master branch! Triggered by ${{ gitea.event_name }}." + - run: echo "Running on ${{ runner.os }} server for branch ${{ gitea.ref }}." + - run: curl ${{ secrets.DEPLOY_PRODUCTION }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c7cf1fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/storage/pail +/vendor +.env +.env.backup +.env.production +.phpactor.json +.phpunit.result.cache +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +/auth.json +/.fleet +/.idea +/.nova +/.vscode +/.zed diff --git a/.junie/guidelines.md b/.junie/guidelines.md new file mode 100644 index 0000000..9664bb5 --- /dev/null +++ b/.junie/guidelines.md @@ -0,0 +1,56 @@ +# Livewire Flux Component Guidelines +## Usage Pattern +Components use the format: `` +## Component Reference +### Layout & Structure +- **flux:card** - Basic container with default slot +- **flux:field** - Form field wrapper with label/description support +- **flux:brand** - Logo/company name display with href navigation + +### Navigation +- **flux:breadcrumbs** - Navigation breadcrumbs + - **flux:breadcrumbs.item** - Individual breadcrumb with href/icon + +- **flux:accordion** - Collapsible content sections + - **flux:accordion.item** - Individual accordion item with heading/content + - **flux:accordion.heading** - Accordion header + - **flux:accordion.content** - Accordion body + +### Form Controls +- **flux:input** - Text input with wire:model, validation, icons, masks +- **flux:select** - Select input +- **flux:select.option** - Select options +- **flux:autocomplete** - Searchable input with dropdown items +- **flux:checkbox** - Single checkbox or grouped checkboxes +- **flux:date-picker** - Date selection with calendar, ranges, presets +- **flux:editor** - Rich text editor with toolbar + +### Interactive Elements +- **flux:button** - Button with variants (primary, outline, danger), icons, loading states +- **flux:dropdown** - Dropdown menu with positioning options +- **flux:menu** - Complex menu with items, submenus, separators, checkboxes, radio buttons +- **flux:command** - Command palette with searchable items +- **flux:context** - Right-click context menu wrapper + +### Display Components +- **flux:avatar** - User avatar with initials, images, badges, grouping +- **flux:badge** - Status/label badges with colors and variants +- **flux:callout** - Highlighted information blocks with icons and actions +- **flux:calendar** - Calendar display with date selection modes +- **flux:chart** - Data visualization with lines, areas, axes, tooltips + +### Key Props +- **wire:model** - Livewire property binding +- **variant** - Visual style options (outline, primary, filled, etc.) +- **size** - Component sizing (xs, sm, base, lg, xl, 2xl) +- **disabled/invalid** - State management +- **icon/icon:trailing** - Icon placement with variants +- **label/description** - Form field labeling +- **color** - Color theming options + +### Common Patterns +- Most form components support wire:model binding +- Many components have label/description props for field wrapping +- Icon components accept variant options (outline, solid, mini, micro) +- Size props typically offer xs, sm, base, lg, xl, 2xl options +- Variant props provide visual style alternatives diff --git a/README.md b/README.md new file mode 100644 index 0000000..f9f1d1a --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +[![Laravel Forge Site Deployment Status](https://img.shields.io/endpoint?url=https%3A%2F%2Fforge.laravel.com%2Fsite-badges%2Fb7221607-01f1-4a61-a0d9-b98c61ef1b1b&style=plastic)](https://portal.codingarena.top/welcome) + +Demo: [https://portal.codingarena.top/welcome](https://portal.codingarena.top/welcome) + +## Contributing and Proposals + +[https://budabit.club](https://budabit.club/spaces/budabit.nostr1.com/git/naddr1qvzqqqrhnypzqzklvar4enzu53t06vpzu3h465nwkzhk9p9ls4y5crwhs3lnu5pnqqgk26tww4hxg7nhv9h856t894shquqltl96k/patches) + +## Development + +### Installation + +```cp .env.example .env``` + +``` +docker run --rm \ + -u "$(id -u):$(id -g)" \ + -v $(pwd):/var/www/html \ + -w /var/www/html \ + laravelsail/php83-composer:latest \ + composer install --ignore-platform-reqs +``` +*(you need a valid Flux Pro license or send a message to [Nostr - The Ben](http://njump.me/npub1pt0kw36ue3w2g4haxq3wgm6a2fhtptmzsjlc2j2vphtcgle72qesgpjyc6))* + +#### Start docker development containers + +```vendor/bin/sail up -d``` + +### Migrate and seed the database + +```./vendor/bin/sail artisan migrate:fresh --seed``` + +### Laravel storage link + +```./vendor/bin/sail artisan storage:link``` + +#### Install node dependencies + +```vendor/bin/sail yarn``` + +#### Start just in time compiler + +```vendor/bin/sail yarn dev``` + +#### Update dependencies + +```vendor/bin/sail yarn``` + +## Security Vulnerabilities + +If you discover a security vulnerability within this project, please go to [https://budabit.club](https://budabit.club/spaces/budabit.nostr1.com/git/naddr1qvzqqqrhnypzqzklvar4enzu53t06vpzu3h465nwkzhk9p9ls4y5crwhs3lnu5pnqq2x26tww4hxg7nhv9h856t894cx7un5v9kqxpnrpc/issues/8457d40013ea6de44b5e9435e1ceec2687883f2b21165bb1c54374c0cc79a383). All security vulnerabilities will be promptly addressed. + +## License + +Open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/app/Http/Controllers/Auth/VerifyEmailController.php b/app/Http/Controllers/Auth/VerifyEmailController.php new file mode 100644 index 0000000..a300bfa --- /dev/null +++ b/app/Http/Controllers/Auth/VerifyEmailController.php @@ -0,0 +1,30 @@ +user()->hasVerifiedEmail()) { + return redirect()->intended(route('dashboard', absolute: false).'?verified=1'); + } + + if ($request->user()->markEmailAsVerified()) { + /** @var \Illuminate\Contracts\Auth\MustVerifyEmail $user */ + $user = $request->user(); + + event(new Verified($user)); + } + + return redirect()->intended(route('dashboard', absolute: false).'?verified=1'); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..8677cd5 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,8 @@ +logout(); + + Session::invalidate(); + Session::regenerateToken(); + + return redirect('/'); + } +} diff --git a/app/Models/BitcoinEvent.php b/app/Models/BitcoinEvent.php new file mode 100644 index 0000000..cbdbfd2 --- /dev/null +++ b/app/Models/BitcoinEvent.php @@ -0,0 +1,73 @@ + 'integer', + 'venue_id' => 'integer', + 'from' => 'datetime', + 'to' => 'datetime', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (! $model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('preview') + ->fit(Manipulations::FIT_CROP, 300, 300) + ->nonQueued(); + $this->addMediaConversion('thumb') + ->fit(Manipulations::FIT_CROP, 130, 130) + ->width(130) + ->height(130); + } + + public function registerMediaCollections(): void + { + $this->addMediaCollection('logo') + ->useFallbackUrl(asset('img/einundzwanzig.png')); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function venue(): BelongsTo + { + return $this->belongsTo(Venue::class); + } +} diff --git a/app/Models/BookCase.php b/app/Models/BookCase.php new file mode 100644 index 0000000..1fd949a --- /dev/null +++ b/app/Models/BookCase.php @@ -0,0 +1,83 @@ + 'integer', + 'lat' => 'double', + 'lon' => 'array', + 'digital' => 'boolean', + 'deactivated' => 'boolean', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (!$model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function scopeActive($query) + { + return $query->where('deactivated', false); + } + + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('preview') + ->fit(Manipulations::FIT_CROP, 300, 300) + ->nonQueued(); + $this->addMediaConversion('seo') + ->fit(Manipulations::FIT_CROP, 1200, 630) + ->width(1200) + ->height(630); + $this->addMediaConversion('thumb') + ->fit(Manipulations::FIT_CROP, 130, 130) + ->width(130) + ->height(130); + } + + public function registerMediaCollections(): void + { + $this->addMediaCollection('images'); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function orangePills(): HasMany + { + return $this->hasMany(OrangePill::class); + } +} diff --git a/app/Models/Category.php b/app/Models/Category.php new file mode 100644 index 0000000..b6e3a26 --- /dev/null +++ b/app/Models/Category.php @@ -0,0 +1,33 @@ + 'integer', + ]; + + public function courses(): BelongsToMany + { + return $this->belongsToMany(Course::class); + } +} diff --git a/app/Models/City.php b/app/Models/City.php new file mode 100644 index 0000000..b037c61 --- /dev/null +++ b/app/Models/City.php @@ -0,0 +1,83 @@ + 'integer', + 'country_id' => 'integer', + 'osm_relation' => 'json', + 'simplified_geojson' => 'json', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (! $model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + /** + * Get the options for generating the slug. + */ + public function getSlugOptions(): SlugOptions + { + return SlugOptions::create() + ->generateSlugsFrom(['country.code', 'name']) + ->saveSlugsTo('slug') + ->usingLanguage(Cookie::get('lang', config('app.locale'))); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function country(): BelongsTo + { + return $this->belongsTo(Country::class); + } + + public function venues(): HasMany + { + return $this->hasMany(Venue::class); + } + + public function courseEvents() + { + return $this->hasManyThrough(CourseEvent::class, Venue::class); + } + + public function meetups() + { + return $this->hasMany(Meetup::class); + } +} diff --git a/app/Models/Country.php b/app/Models/Country.php new file mode 100644 index 0000000..5998d32 --- /dev/null +++ b/app/Models/Country.php @@ -0,0 +1,34 @@ + 'integer', + 'language_codes' => 'array', + ]; + + public function cities(): HasMany + { + return $this->hasMany(City::class); + } +} diff --git a/app/Models/Course.php b/app/Models/Course.php new file mode 100644 index 0000000..e1919a0 --- /dev/null +++ b/app/Models/Course.php @@ -0,0 +1,88 @@ + 'integer', + 'lecturer_id' => 'integer', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (! $model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('preview') + ->fit(Manipulations::FIT_CROP, 300, 300) + ->nonQueued(); + $this->addMediaConversion('thumb') + ->fit(Manipulations::FIT_CROP, 130, 130) + ->width(130) + ->height(130); + } + + public function registerMediaCollections(): void + { + $this->addMediaCollection('logo') + ->singleFile() + ->useFallbackUrl(asset('img/einundzwanzig.png')); + $this->addMediaCollection('images') + ->useFallbackUrl(asset('img/einundzwanzig.png')); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function categories(): BelongsToMany + { + return $this->belongsToMany(Category::class); + } + + public function lecturer(): BelongsTo + { + return $this->belongsTo(Lecturer::class); + } + + public function courseEvents(): HasMany + { + return $this->hasMany(CourseEvent::class); + } +} diff --git a/app/Models/CourseEvent.php b/app/Models/CourseEvent.php new file mode 100644 index 0000000..903ae66 --- /dev/null +++ b/app/Models/CourseEvent.php @@ -0,0 +1,62 @@ + 'integer', + 'course_id' => 'integer', + 'venue_id' => 'integer', + 'from' => 'datetime', + 'to' => 'datetime', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (! $model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function course(): BelongsTo + { + return $this->belongsTo(Course::class); + } + + public function venue(): BelongsTo + { + return $this->belongsTo(Venue::class); + } + + public function registrations(): HasMany + { + return $this->hasMany(Registration::class); + } +} diff --git a/app/Models/EmailCampaign.php b/app/Models/EmailCampaign.php new file mode 100644 index 0000000..bcefa51 --- /dev/null +++ b/app/Models/EmailCampaign.php @@ -0,0 +1,16 @@ +hasMany(EmailTexts::class); + } +} diff --git a/app/Models/EmailTexts.php b/app/Models/EmailTexts.php new file mode 100644 index 0000000..a6d66bd --- /dev/null +++ b/app/Models/EmailTexts.php @@ -0,0 +1,18 @@ +belongsTo(EmailCampaign::class); + } +} diff --git a/app/Models/Episode.php b/app/Models/Episode.php new file mode 100644 index 0000000..da660a4 --- /dev/null +++ b/app/Models/Episode.php @@ -0,0 +1,57 @@ + 'integer', + 'podcast_id' => 'integer', + 'data' => 'array', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (! $model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function podcast(): BelongsTo + { + return $this->belongsTo(Podcast::class); + } + + public function libraryItem(): HasOne + { + return $this->hasOne(LibraryItem::class); + } +} diff --git a/app/Models/Lecturer.php b/app/Models/Lecturer.php new file mode 100644 index 0000000..aeed16f --- /dev/null +++ b/app/Models/Lecturer.php @@ -0,0 +1,104 @@ + 'integer', + 'active' => 'boolean', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (!$model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('preview') + ->fit(Manipulations::FIT_CROP, 300, 300) + ->nonQueued(); + $this->addMediaConversion('thumb') + ->fit(Manipulations::FIT_CROP, 130, 130) + ->width(130) + ->height(130); + } + + public function registerMediaCollections(): void + { + $this->addMediaCollection('avatar') + ->singleFile() + ->useFallbackUrl(asset('img/einundzwanzig.png')); + $this->addMediaCollection('images') + ->useFallbackUrl(asset('img/einundzwanzig.png')); + } + + /** + * Get the options for generating the slug. + */ + public function getSlugOptions(): SlugOptions + { + return SlugOptions::create() + ->generateSlugsFrom(['name']) + ->saveSlugsTo('slug') + ->usingLanguage(Cookie::get('lang', config('app.locale'))); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function team(): BelongsTo + { + return $this->belongsTo(Team::class); + } + + public function courses(): HasMany + { + return $this->hasMany(Course::class); + } + + public function coursesEvents(): HasManyThrough + { + return $this->hasManyThrough(CourseEvent::class, Course::class); + } + + public function libraryItems(): HasMany + { + return $this->hasMany(LibraryItem::class); + } +} diff --git a/app/Models/Library.php b/app/Models/Library.php new file mode 100644 index 0000000..c572470 --- /dev/null +++ b/app/Models/Library.php @@ -0,0 +1,54 @@ + 'integer', + 'language_codes' => 'array', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (! $model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function libraryItems(): BelongsToMany + { + return $this->belongsToMany(LibraryItem::class); + } + + public function parent(): BelongsTo + { + return $this->belongsTo(__CLASS__, 'parent_id'); + } +} diff --git a/app/Models/LibraryItem.php b/app/Models/LibraryItem.php new file mode 100644 index 0000000..621ffb8 --- /dev/null +++ b/app/Models/LibraryItem.php @@ -0,0 +1,159 @@ + 'integer', + 'lecturer_id' => 'integer', + 'library_id' => 'integer', + ]; + + public static function getFeedItems() + { + return self::query() + ->with([ + 'media', + 'lecturer', + ]) + ->where('news', true) + ->where('approved', true) + ->orderByDesc('created_at') + ->get(); + } + + protected static function booted() + { + static::creating(function ($model) { + if (!$model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function getSlugOptions(): SlugOptions + { + return SlugOptions::create() + ->generateSlugsFrom(['name']) + ->saveSlugsTo('slug') + ->usingLanguage(Cookie::get('lang', config('app.locale'))); + } + + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('preview') + ->fit(Manipulations::FIT_CROP, 300, 300) + ->nonQueued(); + $this->addMediaConversion('seo') + ->fit(Manipulations::FIT_CROP, 1200, 630) + ->nonQueued(); + $this->addMediaConversion('thumb') + ->fit(Manipulations::FIT_CROP, 130, 130) + ->width(130) + ->height(130); + } + + public function registerMediaCollections(): void + { + $this->addMediaCollection('main') + ->singleFile() + ->useFallbackUrl(asset('img/einundzwanzig.png')); + $this->addMediaCollection('single_file') + ->acceptsMimeTypes([ + 'application/pdf', 'application/zip', 'application/octet-stream', 'application/x-zip-compressed', + 'multipart/x-zip', + ]) + ->singleFile(); + $this->addMediaCollection('images') + ->useFallbackUrl(asset('img/einundzwanzig.png')); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function lecturer(): BelongsTo + { + return $this->belongsTo(Lecturer::class); + } + + public function episode(): BelongsTo + { + return $this->belongsTo(Episode::class); + } + + /* + * This string will be used in notifications on what a new comment + * was made. + */ + + public function libraries(): BelongsToMany + { + return $this->belongsToMany(Library::class); + } + + public function toFeedItem(): CustomFeedItem + { + return CustomFeedItem::create() + ->id('news/'.$this->slug) + ->title($this->name) + ->content($this->value) + ->enclosure($this->getFirstMediaUrl('main')) + ->enclosureLength($this->getFirstMedia('main')->size) + ->enclosureType($this->getFirstMedia('main')->mime_type) + ->summary($this->excerpt) + ->updated($this->updated_at) + ->image($this->getFirstMediaUrl('main')) + ->link(url()->route('article.view', ['libraryItem' => $this])) + ->authorName($this->lecturer->name); + } + + public static function searchLibraryItems($type, $value = null) + { + $query = self::query() + ->where('type', $type) + ->latest('id'); + + if ($value) { + $query->where('name', 'ilike', "%{$value}%"); + } + + return $query->get(); + } +} diff --git a/app/Models/LoginKey.php b/app/Models/LoginKey.php new file mode 100644 index 0000000..1bb9eac --- /dev/null +++ b/app/Models/LoginKey.php @@ -0,0 +1,25 @@ + 'integer', + 'city_id' => 'integer', + 'github_data' => 'json', + 'simplified_geojson' => 'array', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (!$model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function getSlugOptions(): SlugOptions + { + return SlugOptions::create() + ->generateSlugsFrom(['name']) + ->saveSlugsTo('slug') + ->usingLanguage(Cookie::get('lang', config('app.locale'))); + } + + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('preview') + ->fit(Fit::Crop, 300, 300) + ->nonQueued(); + $this->addMediaConversion('thumb') + ->fit(Fit::Crop, 130, 130) + ->width(130) + ->height(130); + } + + public function registerMediaCollections(): void + { + $this->addMediaCollection('logo') + ->singleFile() + ->useFallbackUrl(asset('img/einundzwanzig.png')); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function users() + { + return $this->belongsToMany(User::class); + } + + public function city(): BelongsTo + { + return $this->belongsTo(City::class); + } + + protected function logoSquare(): Attribute + { + $media = $this->getFirstMedia('logo'); + if ($media) { + $path = str($media->getPath())->after('storage/app/'); + } else { + $path = 'img/einundzwanzig.png'; + } + + return Attribute::make( + get: fn() => url()->route('img', + [ + 'path' => $path, + 'w' => 900, + 'h' => 900, + 'fit' => 'crop', + 'fm' => 'webp', + ]), + ); + } + + protected function nextEvent(): Attribute + { + $nextEvent = $this->meetupEvents()->where('start', '>=', now())->orderBy('start')->first(); + + return Attribute::make( + get: fn() => $nextEvent ? [ + 'start' => $nextEvent->start->toDateTimeString(), + 'portalLink' => url()->route('meetup.event.landing', ['country' => $this->city->country, 'meetupEvent' => $nextEvent]), + 'location' => $nextEvent->location, + 'description' => $nextEvent->description, + 'link' => $nextEvent->link, + 'attendees' => count($nextEvent->attendees ?? []), + 'nostr_note' => str($nextEvent->nostr_status)->after('Sent event ')->before(' to '), + ] : null, + ); + } + + public function meetupEvents(): HasMany + { + return $this->hasMany(MeetupEvent::class); + } +} diff --git a/app/Models/MeetupEvent.php b/app/Models/MeetupEvent.php new file mode 100644 index 0000000..c0003fc --- /dev/null +++ b/app/Models/MeetupEvent.php @@ -0,0 +1,51 @@ + 'integer', + 'meetup_id' => 'integer', + 'start' => 'datetime', + 'attendees' => 'array', + 'might_attendees' => 'array', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (!$model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function meetup(): BelongsTo + { + return $this->belongsTo(Meetup::class); + } +} diff --git a/app/Models/MeetupUser.php b/app/Models/MeetupUser.php new file mode 100644 index 0000000..8c31938 --- /dev/null +++ b/app/Models/MeetupUser.php @@ -0,0 +1,10 @@ + 'integer', + 'user_id' => 'integer', + 'book_case_id' => 'integer', + 'date' => 'datetime', + ]; + + protected static function booted() + { + static::creating(function ($model) { + $model->user->givePoint(new BookCaseOrangePilled($model)); + }); + static::deleted(function ($model) { + $model->user->undoPoint(new BookCaseOrangePilled($model)); + }); + } + + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('preview') + ->fit(Manipulations::FIT_CROP, 300, 300) + ->nonQueued(); + $this->addMediaConversion('thumb') + ->fit(Manipulations::FIT_CROP, 130, 130) + ->width(130) + ->height(130); + } + + public function registerMediaCollections(): void + { + $this->addMediaCollection('images'); + } + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } + + public function bookCase(): BelongsTo + { + return $this->belongsTo(BookCase::class); + } +} diff --git a/app/Models/Participant.php b/app/Models/Participant.php new file mode 100644 index 0000000..aff2edb --- /dev/null +++ b/app/Models/Participant.php @@ -0,0 +1,32 @@ + 'integer', + ]; + + public function registrations() + { + return $this->hasMany(Registration::class); + } +} diff --git a/app/Models/Podcast.php b/app/Models/Podcast.php new file mode 100644 index 0000000..7730bba --- /dev/null +++ b/app/Models/Podcast.php @@ -0,0 +1,49 @@ + 'integer', + 'data' => 'array', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (! $model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function episodes(): HasMany + { + return $this->hasMany(Episode::class); + } +} diff --git a/app/Models/ProjectProposal.php b/app/Models/ProjectProposal.php new file mode 100644 index 0000000..2987e83 --- /dev/null +++ b/app/Models/ProjectProposal.php @@ -0,0 +1,83 @@ + 'integer', + 'user_id' => 'integer', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (!$model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function getSlugOptions(): SlugOptions + { + return SlugOptions::create() + ->generateSlugsFrom(['name']) + ->saveSlugsTo('slug') + ->usingLanguage(Cookie::get('lang', config('app.locale'))); + } + + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('preview') + ->fit(Manipulations::FIT_CROP, 300, 300) + ->nonQueued(); + $this->addMediaConversion('thumb') + ->fit(Manipulations::FIT_CROP, 130, 130) + ->width(130) + ->height(130); + } + + public function registerMediaCollections(): void + { + $this->addMediaCollection('main') + ->singleFile() + ->useFallbackUrl(asset('img/einundzwanzig.png')); + } + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } + + public function votes(): HasMany + { + return $this->hasMany(Vote::class); + } +} diff --git a/app/Models/Registration.php b/app/Models/Registration.php new file mode 100644 index 0000000..0df323e --- /dev/null +++ b/app/Models/Registration.php @@ -0,0 +1,41 @@ + 'integer', + 'event_id' => 'integer', + 'participant_id' => 'integer', + 'active' => 'boolean', + ]; + + public function courseEvent(): BelongsTo + { + return $this->belongsTo(CourseEvent::class); + } + + public function participant(): BelongsTo + { + return $this->belongsTo(Participant::class); + } +} diff --git a/app/Models/Tag.php b/app/Models/Tag.php new file mode 100644 index 0000000..bbbc63c --- /dev/null +++ b/app/Models/Tag.php @@ -0,0 +1,21 @@ +morphedByMany(Course::class, 'taggable'); + } + + public function libraryItems() + { + return $this->morphedByMany(LibraryItem::class, 'taggable'); + } + + public function episodes() + { + return $this->morphedByMany(Episode::class, 'taggable'); + } +} diff --git a/app/Models/Team.php b/app/Models/Team.php new file mode 100644 index 0000000..e63d9a5 --- /dev/null +++ b/app/Models/Team.php @@ -0,0 +1,44 @@ + 'boolean', + ]; + + /** + * The attributes that are mass assignable. + * + * @var string[] + */ + protected $fillable = [ + 'name', + 'personal_team', + ]; + + /** + * The event map for the model. + * + * @var array + */ + protected $dispatchesEvents = [ + 'created' => TeamCreated::class, + 'updated' => TeamUpdated::class, + 'deleted' => TeamDeleted::class, + ]; +} diff --git a/app/Models/TeamInvitation.php b/app/Models/TeamInvitation.php new file mode 100644 index 0000000..e5c4f2b --- /dev/null +++ b/app/Models/TeamInvitation.php @@ -0,0 +1,28 @@ +belongsTo(Jetstream::teamModel()); + } +} diff --git a/app/Models/TwitterAccount.php b/app/Models/TwitterAccount.php new file mode 100644 index 0000000..72e835e --- /dev/null +++ b/app/Models/TwitterAccount.php @@ -0,0 +1,14 @@ + 'array', + ]; +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..f9d0cb3 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,104 @@ + 'datetime', + ]; + + /** + * Get the user's initials + */ + public function initials(): string + { + return Str::of($this->name) + ->explode(' ') + ->take(2) + ->map(fn ($word) => Str::substr($word, 0, 1)) + ->implode(''); + } + + public static function configureCipherSweet(EncryptedRow $encryptedRow): void + { + $map = (new JsonFieldMap()) + ->addTextField('url') + ->addTextField('read_key') + ->addTextField('wallet_id'); + + $encryptedRow + ->addOptionalTextField('public_key') + ->addOptionalTextField('lightning_address') + ->addOptionalTextField('lnurl') + ->addOptionalTextField('node_id') + ->addOptionalTextField('email') + ->addOptionalTextField('paynym') + ->addJsonField('lnbits', $map) + ->addBlindIndex('public_key', new BlindIndex('public_key_index')) + ->addBlindIndex('lightning_address', new BlindIndex('lightning_address_index')) + ->addBlindIndex('lnurl', new BlindIndex('lnurl_index')) + ->addBlindIndex('node_id', new BlindIndex('node_id_index')) + ->addBlindIndex('paynym', new BlindIndex('paynym_index')) + ->addBlindIndex('email', new BlindIndex('email_index')); + } + + public function orangePills() + { + return $this->hasMany(OrangePill::class); + } + + public function meetups() + { + return $this->belongsToMany(Meetup::class); + } + + public function reputations() + { + return $this->morphMany('QCod\Gamify\Reputation', 'subject'); + } + + public function votes() + { + return $this->hasMany(Vote::class); + } + + public function paidArticles() + { + return $this->belongsToMany(LibraryItem::class, 'library_item_user', 'user_id', 'library_item_id'); + } +} diff --git a/app/Models/Venue.php b/app/Models/Venue.php new file mode 100644 index 0000000..2b39bec --- /dev/null +++ b/app/Models/Venue.php @@ -0,0 +1,104 @@ + 'integer', + 'city_id' => 'integer', + ]; + + protected static function booted() + { + static::creating(function ($model) { + if (! $model->created_by) { + $model->created_by = auth()->id(); + } + }); + } + + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('preview') + ->fit(Manipulations::FIT_CROP, 300, 300) + ->nonQueued(); + $this->addMediaConversion('thumb') + ->fit(Manipulations::FIT_CROP, 130, 130) + ->width(130) + ->height(130); + } + + public function registerMediaCollections(): void + { + $this->addMediaCollection('images') + ->useFallbackUrl(asset('img/einundzwanzig.png')); + } + + /** + * Get the options for generating the slug. + */ + public function getSlugOptions(): SlugOptions + { + return SlugOptions::create() + ->generateSlugsFrom(['city.slug', 'name']) + ->saveSlugsTo('slug') + ->usingLanguage(Cookie::get('lang', config('app.locale'))); + } + + public function createdBy(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function city(): BelongsTo + { + return $this->belongsTo(City::class); + } + + public function lecturers() + { + return $this->hasManyDeepFromRelations($this->courses(), (new Course())->lecturer()); + } + + public function courses() + { + return $this->hasManyDeepFromRelations($this->events(), (new CourseEvent())->course()); + } + + public function courseEvents(): HasMany + { + return $this->hasMany(CourseEvent::class); + } +} diff --git a/app/Models/Vote.php b/app/Models/Vote.php new file mode 100644 index 0000000..e8816ef --- /dev/null +++ b/app/Models/Vote.php @@ -0,0 +1,41 @@ + 'integer', + 'user_id' => 'integer', + 'project_proposal_id' => 'integer', + 'value' => 'bool', + ]; + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } + + public function projectProposal(): BelongsTo + { + return $this->belongsTo(ProjectProposal::class); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ +route('country') ?? 'de'; + $parameters = ['country' => $country] + $parameters; + } + + return route($name, $parameters, $absolute); + } +} diff --git a/artisan b/artisan new file mode 100755 index 0000000..c35e31d --- /dev/null +++ b/artisan @@ -0,0 +1,18 @@ +#!/usr/bin/env php +handleCommand(new ArgvInput); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..e8f4521 --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,19 @@ +withRouting( + web: __DIR__.'/../routes/web.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware) { + $middleware->web(append: [ + ]); + }) + ->withExceptions(function (Exceptions $exceptions) { + // + })->create(); diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/bootstrap/providers.php b/bootstrap/providers.php new file mode 100644 index 0000000..7d50f93 --- /dev/null +++ b/bootstrap/providers.php @@ -0,0 +1,6 @@ +=7.1" + }, + "require-dev": { + "orchestra/testbench": "^6.0@dev", + "phpunit/phpunit": "^9.2@dev" + }, + "type": "library", + "autoload": { + "psr-4": { + "Akuechler\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexsander Küchler", + "email": "composer@alexsander-kuechler.com" + } + ], + "description": "Perform fast and efficient radius searches on your Laravel Eloquent models.", + "keywords": [ + "distance", + "framework", + "geo", + "laravel", + "lat", + "latitude", + "lng", + "lon", + "longitude", + "models", + "radius", + "search" + ], + "support": { + "issues": "https://github.com/akuechler/laravel-geoly/issues", + "source": "https://github.com/akuechler/laravel-geoly/tree/v1.0.6" + }, + "time": "2021-04-20T07:17:32+00:00" + }, + { + "name": "blade-ui-kit/blade-icons", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/driesvints/blade-icons.git", + "reference": "7b743f27476acb2ed04cb518213d78abe096e814" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/driesvints/blade-icons/zipball/7b743f27476acb2ed04cb518213d78abe096e814", + "reference": "7b743f27476acb2ed04cb518213d78abe096e814", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/view": "^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.4|^8.0", + "symfony/console": "^5.3|^6.0|^7.0", + "symfony/finder": "^5.3|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "^1.5.1", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0" + }, + "bin": [ + "bin/blade-icons-generate" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "BladeUI\\Icons\\BladeIconsServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "BladeUI\\Icons\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dries Vints", + "homepage": "https://driesvints.com" + } + ], + "description": "A package to easily make use of icons in your Laravel Blade views.", + "homepage": "https://github.com/blade-ui-kit/blade-icons", + "keywords": [ + "blade", + "icons", + "laravel", + "svg" + ], + "support": { + "issues": "https://github.com/blade-ui-kit/blade-icons/issues", + "source": "https://github.com/blade-ui-kit/blade-icons" + }, + "funding": [ + { + "url": "https://github.com/sponsors/driesvints", + "type": "github" + }, + { + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" + } + ], + "time": "2025-02-13T20:35:06+00:00" + }, + { + "name": "brick/math", + "version": "0.14.0", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", + "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", + "shasum": "" + }, + "require": { + "php": "^8.2" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpstan/phpstan": "2.1.22", + "phpunit/phpunit": "^11.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.14.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2025-08-29T12:40:03+00:00" + }, + { + "name": "calebporzio/sushi", + "version": "v2.5.3", + "source": { + "type": "git", + "url": "https://github.com/calebporzio/sushi.git", + "reference": "bf184973f943216b2aaa8dbc79631ea806038bb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/calebporzio/sushi/zipball/bf184973f943216b2aaa8dbc79631ea806038bb1", + "reference": "bf184973f943216b2aaa8dbc79631ea806038bb1", + "shasum": "" + }, + "require": { + "ext-pdo_sqlite": "*", + "ext-sqlite3": "*", + "illuminate/database": "^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0", + "illuminate/support": "^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0", + "php": "^7.1.3|^8.0" + }, + "require-dev": { + "doctrine/dbal": "^2.9 || ^3.1.4", + "orchestra/testbench": "3.8.* || 3.9.* || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0", + "phpunit/phpunit": "^7.5 || ^8.4 || ^9.0 || ^10.0 || ^11.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Sushi\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "Eloquent's missing \"array\" driver.", + "support": { + "source": "https://github.com/calebporzio/sushi/tree/v2.5.3" + }, + "funding": [ + { + "url": "https://github.com/calebporzio", + "type": "github" + } + ], + "time": "2025-02-13T21:03:57+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.4", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "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.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + } + ], + "time": "2025-08-20T19:15:30+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2025-08-10T19:31:58+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "shasum": "" + }, + "require": { + "php": "^8.2|^8.3|^8.4|^8.5" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2025-10-31T18:51:33+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:45:45+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.10.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2025-08-23T22:36:01+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "481557b130ef3790cf82b713667b43030dc9c957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:34:08+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "21dc724a0583619cd1652f673303492272778051" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.8.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-08-23T21:21:41+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:27:06+00:00" + }, + { + "name": "laravel/framework", + "version": "v12.39.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "1a6176129ef28eaf42b6b4a6250025120c3d8dac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/1a6176129ef28eaf42b6b4a6250025120c3d8dac", + "reference": "1a6176129ef28eaf42b6b4a6250025120c3d8dac", + "shasum": "" + }, + "require": { + "brick/math": "^0.11|^0.12|^0.13|^0.14", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.4", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.3.0", + "laravel/serializable-closure": "^1.3|^2.0", + "league/commonmark": "^2.7", + "league/flysystem": "^3.25.1", + "league/flysystem-local": "^3.25.1", + "league/uri": "^7.5.1", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^3.8.4", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^7.2.0", + "symfony/error-handler": "^7.2.0", + "symfony/finder": "^7.2.0", + "symfony/http-foundation": "^7.2.0", + "symfony/http-kernel": "^7.2.0", + "symfony/mailer": "^7.2.0", + "symfony/mime": "^7.2.0", + "symfony/polyfill-php83": "^1.33", + "symfony/polyfill-php84": "^1.33", + "symfony/polyfill-php85": "^1.33", + "symfony/process": "^7.2.0", + "symfony/routing": "^7.2.0", + "symfony/uid": "^7.2.0", + "symfony/var-dumper": "^7.2.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.6.1", + "voku/portable-ascii": "^2.0.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/log-implementation": "1.0|2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/json-schema": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.322.9", + "ext-gmp": "*", + "fakerphp/faker": "^1.24", + "guzzlehttp/promises": "^2.0.3", + "guzzlehttp/psr7": "^2.4", + "laravel/pint": "^1.18", + "league/flysystem-aws-s3-v3": "^3.25.1", + "league/flysystem-ftp": "^3.25.1", + "league/flysystem-path-prefixing": "^3.25.1", + "league/flysystem-read-only": "^3.25.1", + "league/flysystem-sftp-v3": "^3.25.1", + "mockery/mockery": "^1.6.10", + "opis/json-schema": "^2.4.1", + "orchestra/testbench-core": "^10.7.0", + "pda/pheanstalk": "^5.0.6|^7.0.0", + "php-http/discovery": "^1.15", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", + "predis/predis": "^2.3|^3.0", + "resend/resend-php": "^0.10.0|^1.0", + "symfony/cache": "^7.2.0", + "symfony/http-client": "^7.2.0", + "symfony/psr-http-message-bridge": "^7.2.0", + "symfony/translation": "^7.2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.322.9).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).", + "fakerphp/faker": "Required to generate fake data using the fake() helper (^1.23).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", + "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", + "mockery/mockery": "Required to use mocking (^1.6).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.5.3|^12.0.1).", + "predis/predis": "Required to use the predis connector (^2.3|^3.0).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0|^1.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "12.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/functions.php", + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Support/functions.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2025-11-18T15:16:10+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.3.7", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "a1891d362714bc40c8d23b0b1d7090f022ea27cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/a1891d362714bc40c8d23b0b1d7090f022ea27cc", + "reference": "a1891d362714bc40c8d23b0b1d7090f022ea27cc", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "illuminate/collections": "^10.0|^11.0|^12.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4", + "phpstan/phpstan": "^1.12.28", + "phpstan/phpstan-mockery": "^1.1.3" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.3.7" + }, + "time": "2025-09-19T13:47:56+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v2.0.6", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "038ce42edee619599a1debb7e81d7b3759492819" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/038ce42edee619599a1debb7e81d7b3759492819", + "reference": "038ce42edee619599a1debb7e81d7b3759492819", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2025-10-09T13:42:30+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.10.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.10.1" + }, + "time": "2025-01-27T14:24:01+00:00" + }, + { + "name": "league/commonmark", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2025-07-20T12:47:49+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.30.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277", + "reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3|^2", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2|^2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.30.2" + }, + "time": "2025-11-10T17:13:11+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.30.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "ab4f9d0d672f601b102936aa728801dd1a11968d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ab4f9d0d672f601b102936aa728801dd1a11968d", + "reference": "ab4f9d0d672f601b102936aa728801dd1a11968d", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.2" + }, + "time": "2025-11-10T11:23:37+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-09-21T08:32:55+00:00" + }, + { + "name": "league/uri", + "version": "7.6.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "f625804987a0a9112d954f9209d91fec52182344" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/f625804987a0a9112d954f9209d91fec52182344", + "reference": "f625804987a0a9112d954f9209d91fec52182344", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.6", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle WHATWG URL", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.6.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2025-11-18T12:17:23+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.6.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/ccbfb51c0445298e7e0b7f4481b942f589665368", + "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle WHATWG URL", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.6.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2025-11-18T12:17:23+00:00" + }, + { + "name": "livewire/flux", + "version": "v2.6.1", + "source": { + "type": "git", + "url": "https://github.com/livewire/flux.git", + "reference": "227b88db0a02db91666af2303ea6727a3af78c51" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/flux/zipball/227b88db0a02db91666af2303ea6727a3af78c51", + "reference": "227b88db0a02db91666af2303ea6727a3af78c51", + "shasum": "" + }, + "require": { + "illuminate/console": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "illuminate/view": "^10.0|^11.0|^12.0", + "laravel/prompts": "^0.1|^0.2|^0.3", + "livewire/livewire": "^3.5.19|^4.0", + "php": "^8.1", + "symfony/console": "^6.0|^7.0" + }, + "conflict": { + "livewire/blaze": "<0.1.0" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Flux": "Flux\\Flux" + }, + "providers": [ + "Flux\\FluxServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Flux\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "proprietary" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "The official UI component library for Livewire.", + "keywords": [ + "components", + "flux", + "laravel", + "livewire", + "ui" + ], + "support": { + "issues": "https://github.com/livewire/flux/issues", + "source": "https://github.com/livewire/flux/tree/v2.6.1" + }, + "time": "2025-10-28T21:12:05+00:00" + }, + { + "name": "livewire/flux-pro", + "version": "2.6.1", + "dist": { + "type": "zip", + "url": "https://composer.fluxui.dev/download/a0397651-df75-43ac-b21a-8a5ac8ad46b4/flux-pro-2.6.1.zip", + "reference": "12a6570b061c858739b40a9509424c4b4cc42b62", + "shasum": "10e8f4dad0b0232e5b47ce291ef1c55610be5298" + }, + "require": { + "illuminate/console": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "illuminate/view": "^10.0|^11.0|^12.0", + "laravel/prompts": "^0.1.24|^0.2|^0.3", + "livewire/flux": "2.6.1|dev-main", + "livewire/livewire": "^3.6.2|^4.0", + "php": "^8.1", + "symfony/console": "^6.0|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Flux": "FluxPro\\FluxPro" + }, + "providers": [ + "FluxPro\\FluxProServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "FluxPro\\": "src/" + } + }, + "license": [ + "proprietary" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "The pro version of Flux, the official UI component library for Livewire.", + "keywords": [ + "components", + "flux", + "laravel", + "livewire", + "ui" + ], + "time": "2025-10-28T21:23:07+00:00" + }, + { + "name": "livewire/livewire", + "version": "v3.6.4", + "source": { + "type": "git", + "url": "https://github.com/livewire/livewire.git", + "reference": "ef04be759da41b14d2d129e670533180a44987dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/livewire/zipball/ef04be759da41b14d2d129e670533180a44987dc", + "reference": "ef04be759da41b14d2d129e670533180a44987dc", + "shasum": "" + }, + "require": { + "illuminate/database": "^10.0|^11.0|^12.0", + "illuminate/routing": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "illuminate/validation": "^10.0|^11.0|^12.0", + "laravel/prompts": "^0.1.24|^0.2|^0.3", + "league/mime-type-detection": "^1.9", + "php": "^8.1", + "symfony/console": "^6.0|^7.0", + "symfony/http-kernel": "^6.2|^7.0" + }, + "require-dev": { + "calebporzio/sushi": "^2.1", + "laravel/framework": "^10.15.0|^11.0|^12.0", + "mockery/mockery": "^1.3.1", + "orchestra/testbench": "^8.21.0|^9.0|^10.0", + "orchestra/testbench-dusk": "^8.24|^9.1|^10.0", + "phpunit/phpunit": "^10.4|^11.5", + "psy/psysh": "^0.11.22|^0.12" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Livewire": "Livewire\\Livewire" + }, + "providers": [ + "Livewire\\LivewireServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Livewire\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "A front-end framework for Laravel.", + "support": { + "issues": "https://github.com/livewire/livewire/issues", + "source": "https://github.com/livewire/livewire/tree/v3.6.4" + }, + "funding": [ + { + "url": "https://github.com/livewire", + "type": "github" + } + ], + "time": "2025-07-17T05:12:15+00:00" + }, + { + "name": "livewire/volt", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/livewire/volt.git", + "reference": "79a5e2367944aad6f4af9edef31a3d688cc8875c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/volt/zipball/79a5e2367944aad6f4af9edef31a3d688cc8875c", + "reference": "79a5e2367944aad6f4af9edef31a3d688cc8875c", + "shasum": "" + }, + "require": { + "laravel/framework": "^10.38.2|^11.0|^12.0", + "livewire/livewire": "^3.6.1|^4.0", + "php": "^8.1" + }, + "require-dev": { + "laravel/folio": "^1.1", + "mockery/mockery": "^1.6", + "orchestra/testbench": "^8.15.0|^9.0|^10.0", + "pestphp/pest": "^2.9.5|^3.0", + "phpstan/phpstan": "^1.10" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Livewire\\Volt\\VoltServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "files": [ + "functions.php" + ], + "psr-4": { + "Livewire\\Volt\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "An elegantly crafted functional API for Laravel Livewire.", + "homepage": "https://github.com/livewire/volt", + "keywords": [ + "laravel", + "livewire", + "volt" + ], + "support": { + "issues": "https://github.com/livewire/volt/issues", + "source": "https://github.com/livewire/volt" + }, + "time": "2025-11-14T15:10:57+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "9712d8fa4cdf9240380b01eb4be55ad8dcf71416" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/9712d8fa4cdf9240380b01eb4be55ad8dcf71416", + "reference": "9712d8fa4cdf9240380b01eb4be55ad8dcf71416", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.3" + }, + "require-dev": { + "brianium/paratest": "^7.7", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.16", + "guzzlehttp/guzzle": "^7.5", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^12.0", + "vimeo/psalm": "^6.0" + }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/maennchen", + "type": "github" + } + ], + "time": "2025-07-17T11:15:13+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.9.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2025-03-24T10:02:05+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.10.3", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", + "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "<100.0", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3.12 || ^7.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^v3.87.1", + "kylekatarnls/multi-tester": "^2.5.3", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.22", + "phpunit/phpunit": "^10.5.53", + "squizlabs/php_codesniffer": "^3.13.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2025-09-06T13:39:36+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004", + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.5" + }, + "require-dev": { + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^2.0@stable", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.3" + }, + "time": "2025-10-30T22:57:59+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.8", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/tester": "^2.5", + "phpstan/phpstan-nette": "^2.0@stable", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.8" + }, + "time": "2025-08-06T21:43:34+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.6.2", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "3a454ca033b9e06b63282ce19562e892747449bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb", + "reference": "3a454ca033b9e06b63282ce19562e892747449bb", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2" + }, + "time": "2025-10-21T19:32:17+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.3.3", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.3.6" + }, + "require-dev": { + "illuminate/console": "^11.46.1", + "laravel/pint": "^1.25.1", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.1.3", + "phpstan/phpstan": "^1.12.32", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.3.5", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.3" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2025-11-20T02:34:59+00:00" + }, + { + "name": "outhebox/blade-flags", + "version": "1.5.4", + "source": { + "type": "git", + "url": "https://github.com/MohmmedAshraf/blade-flags.git", + "reference": "f467991314b93ed83c12dafe7ec40ab43b5a61c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MohmmedAshraf/blade-flags/zipball/f467991314b93ed83c12dafe7ec40ab43b5a61c1", + "reference": "f467991314b93ed83c12dafe7ec40ab43b5a61c1", + "shasum": "" + }, + "require": { + "blade-ui-kit/blade-icons": "^1.1", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.4|^8.0|^8.1|^8.2" + }, + "require-dev": { + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.0|^10.5|^11.5.3" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "OutheBox\\BladeFlags\\BladeFlagsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "OutheBox\\BladeFlags\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mohamed Ashraf", + "email": "cupo.ashraf@gmail.com", + "homepage": "https://github.com/MohmmedAshraf" + } + ], + "description": "A package to easily make use of country & language flags in your Laravel Blade views.", + "homepage": "https://github.com/MohmmedAshraf/blade-flags", + "keywords": [ + "blade", + "country flags", + "flags", + "language flags", + "laravel" + ], + "support": { + "issues": "https://github.com/MohmmedAshraf/blade-flags/issues", + "source": "https://github.com/MohmmedAshraf/blade-flags/tree/1.5.4" + }, + "funding": [ + { + "url": "https://github.com/MohmmedAshraf", + "type": "github" + } + ], + "time": "2025-08-30T07:16:05+00:00" + }, + { + "name": "paragonie/ciphersweet", + "version": "v4.9.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/ciphersweet.git", + "reference": "827b2510b12ab3bce2d99d7eb4e580eddc4fb7c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/ciphersweet/zipball/827b2510b12ab3bce2d99d7eb4e580eddc4fb7c1", + "reference": "827b2510b12ab3bce2d99d7eb4e580eddc4fb7c1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "paragonie/constant_time_encoding": "^2|^3", + "paragonie/sodium_compat": "^1|^2", + "php": "^8.1" + }, + "require-dev": { + "phpunit/phpunit": "^9", + "vimeo/psalm": "^4" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\CipherSweet\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + } + ], + "description": "Searchable field-level encryption library for relational databases", + "keywords": [ + "FIPS 140-3", + "NIST cryptography", + "SQL encryption", + "crm", + "cryptography", + "database encryption", + "encrypt", + "encryption", + "field-level encryption", + "libsodium", + "queryable encryption", + "searchable encryption" + ], + "support": { + "issues": "https://github.com/paragonie/ciphersweet/issues", + "source": "https://github.com/paragonie/ciphersweet/tree/v4.9.0" + }, + "time": "2025-10-25T13:48:17+00:00" + }, + { + "name": "paragonie/constant_time_encoding", + "version": "v3.1.3", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "shasum": "" + }, + "require": { + "php": "^8" + }, + "require-dev": { + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2025-09-24T15:06:41+00:00" + }, + { + "name": "paragonie/sodium_compat", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "547e2dc4d45107440e76c17ab5a46e4252460158" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/547e2dc4d45107440e76c17ab5a46e4252460158", + "reference": "547e2dc4d45107440e76c17ab5a46e4252460158", + "shasum": "" + }, + "require": { + "php": "^8.1", + "php-64bit": "*" + }, + "require-dev": { + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^7|^8|^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" + }, + "suggest": { + "ext-sodium": "Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "files": [ + "autoload.php" + ], + "psr-4": { + "ParagonIE\\Sodium\\": "namespaced/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" + ], + "support": { + "issues": "https://github.com/paragonie/sodium_compat/issues", + "source": "https://github.com/paragonie/sodium_compat/tree/v2.4.0" + }, + "time": "2025-10-06T08:47:40+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.4", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", + "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "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.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2025-08-21T11:53:16+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.14", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "95c29b3756a23855a30566b745d218bee690bef2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/95c29b3756a23855a30566b745d218bee690bef2", + "reference": "95c29b3756a23855a30566b745d218bee690bef2", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "composer/class-map-generator": "^1.6" + }, + "suggest": { + "composer/class-map-generator": "Improved tab completion performance with better class discovery.", + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "https://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.14" + }, + "time": "2025-10-27T17:15:31+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.9.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/81f941f6f729b1e3ceea61d9d014f8b6c6800440", + "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.9.1" + }, + "time": "2025-09-04T20:59:21+00:00" + }, + { + "name": "spatie/eloquent-sortable", + "version": "4.5.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/eloquent-sortable.git", + "reference": "c1c4f3a66cd41eb7458783c8a4c8e5d7924a9f20" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/eloquent-sortable/zipball/c1c4f3a66cd41eb7458783c8a4c8e5d7924a9f20", + "reference": "c1c4f3a66cd41eb7458783c8a4c8e5d7924a9f20", + "shasum": "" + }, + "require": { + "illuminate/database": "^9.31|^10.0|^11.0|^12.0", + "illuminate/support": "^9.31|^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.63|^3.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.5|^10.0|^11.5.3" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\EloquentSortable\\EloquentSortableServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\EloquentSortable\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be" + } + ], + "description": "Sortable behaviour for eloquent models", + "homepage": "https://github.com/spatie/eloquent-sortable", + "keywords": [ + "behaviour", + "eloquent", + "laravel", + "model", + "sort", + "sortable" + ], + "support": { + "issues": "https://github.com/spatie/eloquent-sortable/issues", + "source": "https://github.com/spatie/eloquent-sortable/tree/4.5.2" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-08-25T11:46:57+00:00" + }, + { + "name": "spatie/image", + "version": "3.8.6", + "source": { + "type": "git", + "url": "https://github.com/spatie/image.git", + "reference": "0872c5968a7f044fe1e960c26433e54ceaede696" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/image/zipball/0872c5968a7f044fe1e960c26433e54ceaede696", + "reference": "0872c5968a7f044fe1e960c26433e54ceaede696", + "shasum": "" + }, + "require": { + "ext-exif": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.2", + "spatie/image-optimizer": "^1.7.5", + "spatie/temporary-directory": "^2.2", + "symfony/process": "^6.4|^7.0" + }, + "require-dev": { + "ext-gd": "*", + "ext-imagick": "*", + "laravel/sail": "^1.34", + "pestphp/pest": "^2.28", + "phpstan/phpstan": "^1.10.50", + "spatie/pest-plugin-snapshots": "^2.1", + "spatie/pixelmatch-php": "^1.0", + "spatie/ray": "^1.40.1", + "symfony/var-dumper": "^6.4|7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Image\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Manipulate images with an expressive API", + "homepage": "https://github.com/spatie/image", + "keywords": [ + "image", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/image/tree/3.8.6" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-09-25T12:06:17+00:00" + }, + { + "name": "spatie/image-optimizer", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/image-optimizer.git", + "reference": "4fd22035e81d98fffced65a8c20d9ec4daa9671c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/4fd22035e81d98fffced65a8c20d9ec4daa9671c", + "reference": "4fd22035e81d98fffced65a8c20d9ec4daa9671c", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.3|^8.0", + "psr/log": "^1.0 | ^2.0 | ^3.0", + "symfony/process": "^4.2|^5.0|^6.0|^7.0" + }, + "require-dev": { + "pestphp/pest": "^1.21", + "phpunit/phpunit": "^8.5.21|^9.4.4", + "symfony/var-dumper": "^4.2|^5.0|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\ImageOptimizer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily optimize images using PHP", + "homepage": "https://github.com/spatie/image-optimizer", + "keywords": [ + "image-optimizer", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/image-optimizer/issues", + "source": "https://github.com/spatie/image-optimizer/tree/1.8.0" + }, + "time": "2024-11-04T08:24:54+00:00" + }, + { + "name": "spatie/laravel-ciphersweet", + "version": "1.7.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ciphersweet.git", + "reference": "e406f6702386b924add2c0a7785dbeddb2acb718" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ciphersweet/zipball/e406f6702386b924add2c0a7785dbeddb2acb718", + "reference": "e406f6702386b924add2c0a7785dbeddb2acb718", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^10.0|^11.0|^12.0", + "paragonie/ciphersweet": "^4.0.1", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.12.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.8", + "nunomaduro/collision": "^6.0|^8.0", + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "pestphp/pest": "^1.21|^2.34|^3.7", + "pestphp/pest-plugin-laravel": "^1.1|^2.3|^3.1", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0|^2.0", + "phpstan/phpstan-phpunit": "^1.0|^2.0", + "phpunit/phpunit": "^9.5|^10.5|^11.5.3|^12.0", + "spatie/laravel-ray": "^1.26" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "LaravelCipherSweet": "Spatie\\LaravelCipherSweet\\Facades\\LaravelCipherSweet" + }, + "providers": [ + "Spatie\\LaravelCipherSweet\\LaravelCipherSweetServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\LaravelCipherSweet\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rias Van der Veken", + "email": "rias@spatie.be", + "role": "Developer" + } + ], + "description": "Use ciphersweet in your Laravel project", + "homepage": "https://github.com/spatie/laravel-ciphersweet", + "keywords": [ + "laravel", + "laravel-ciphersweet", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/laravel-ciphersweet/tree/1.7.2" + }, + "time": "2025-09-18T10:35:25+00:00" + }, + { + "name": "spatie/laravel-medialibrary", + "version": "11.17.5", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-medialibrary.git", + "reference": "eef29bbc701d786f2f6233ca4c40deb61282ac36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/eef29bbc701d786f2f6233ca4c40deb61282ac36", + "reference": "eef29bbc701d786f2f6233ca4c40deb61282ac36", + "shasum": "" + }, + "require": { + "composer/semver": "^3.4", + "ext-exif": "*", + "ext-fileinfo": "*", + "ext-json": "*", + "illuminate/bus": "^10.2|^11.0|^12.0", + "illuminate/conditionable": "^10.2|^11.0|^12.0", + "illuminate/console": "^10.2|^11.0|^12.0", + "illuminate/database": "^10.2|^11.0|^12.0", + "illuminate/pipeline": "^10.2|^11.0|^12.0", + "illuminate/support": "^10.2|^11.0|^12.0", + "maennchen/zipstream-php": "^3.1", + "php": "^8.2", + "spatie/image": "^3.3.2", + "spatie/laravel-package-tools": "^1.16.1", + "spatie/temporary-directory": "^2.2", + "symfony/console": "^6.4.1|^7.0|^8.0" + }, + "conflict": { + "php-ffmpeg/php-ffmpeg": "<0.6.1" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.293.10", + "ext-imagick": "*", + "ext-pdo_sqlite": "*", + "ext-zip": "*", + "guzzlehttp/guzzle": "^7.8.1", + "larastan/larastan": "^2.7|^3.0", + "league/flysystem-aws-s3-v3": "^3.22", + "mockery/mockery": "^1.6.7", + "orchestra/testbench": "^7.0|^8.17|^9.0|^10.0", + "pestphp/pest": "^2.28|^3.5|^4.0", + "phpstan/extension-installer": "^1.3.1", + "spatie/laravel-ray": "^1.33", + "spatie/pdf-to-image": "^2.2|^3.0", + "spatie/pest-expectations": "^1.13", + "spatie/pest-plugin-snapshots": "^2.1" + }, + "suggest": { + "league/flysystem-aws-s3-v3": "Required to use AWS S3 file storage", + "php-ffmpeg/php-ffmpeg": "Required for generating video thumbnails", + "spatie/pdf-to-image": "Required for generating thumbnails of PDFs and SVGs" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\MediaLibrary\\MediaLibraryServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\MediaLibrary\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Associate files with Eloquent models", + "homepage": "https://github.com/spatie/laravel-medialibrary", + "keywords": [ + "cms", + "conversion", + "downloads", + "images", + "laravel", + "laravel-medialibrary", + "media", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-medialibrary/issues", + "source": "https://github.com/spatie/laravel-medialibrary/tree/11.17.5" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-11-13T11:36:18+00:00" + }, + { + "name": "spatie/laravel-package-tools", + "version": "1.92.7", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-package-tools.git", + "reference": "f09a799850b1ed765103a4f0b4355006360c49a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/f09a799850b1ed765103a4f0b4355006360c49a5", + "reference": "f09a799850b1ed765103a4f0b4355006360c49a5", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^9.28|^10.0|^11.0|^12.0", + "php": "^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "orchestra/testbench": "^7.7|^8.0|^9.0|^10.0", + "pestphp/pest": "^1.23|^2.1|^3.1", + "phpunit/php-code-coverage": "^9.0|^10.0|^11.0", + "phpunit/phpunit": "^9.5.24|^10.5|^11.5", + "spatie/pest-plugin-test-time": "^1.1|^2.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\LaravelPackageTools\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" + } + ], + "description": "Tools for creating Laravel packages", + "homepage": "https://github.com/spatie/laravel-package-tools", + "keywords": [ + "laravel-package-tools", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-package-tools/issues", + "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.7" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-07-17T15:46:43+00:00" + }, + { + "name": "spatie/laravel-permission", + "version": "6.23.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-permission.git", + "reference": "9e41247bd512b1e6c229afbc1eb528f7565ae3bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/9e41247bd512b1e6c229afbc1eb528f7565ae3bb", + "reference": "9e41247bd512b1e6c229afbc1eb528f7565ae3bb", + "shasum": "" + }, + "require": { + "illuminate/auth": "^8.12|^9.0|^10.0|^11.0|^12.0", + "illuminate/container": "^8.12|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0|^12.0", + "illuminate/database": "^8.12|^9.0|^10.0|^11.0|^12.0", + "php": "^8.0" + }, + "require-dev": { + "laravel/passport": "^11.0|^12.0", + "laravel/pint": "^1.0", + "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.4|^10.1|^11.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Permission\\PermissionServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "6.x-dev", + "dev-master": "6.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\Permission\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Permission handling for Laravel 8.0 and up", + "homepage": "https://github.com/spatie/laravel-permission", + "keywords": [ + "acl", + "laravel", + "permission", + "permissions", + "rbac", + "roles", + "security", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-permission/issues", + "source": "https://github.com/spatie/laravel-permission/tree/6.23.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-11-03T20:16:13+00:00" + }, + { + "name": "spatie/laravel-sluggable", + "version": "3.7.5", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-sluggable.git", + "reference": "e4fdd519e043a2af02b52eec2c3be2dd2e262e27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-sluggable/zipball/e4fdd519e043a2af02b52eec2c3be2dd2e262e27", + "reference": "e4fdd519e043a2af02b52eec2c3be2dd2e262e27", + "shasum": "" + }, + "require": { + "illuminate/database": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^8.0" + }, + "require-dev": { + "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0|^10.0", + "pestphp/pest": "^1.20|^2.0|^3.7", + "spatie/laravel-translatable": "^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Sluggable\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Generate slugs when saving Eloquent models", + "homepage": "https://github.com/spatie/laravel-sluggable", + "keywords": [ + "laravel-sluggable", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/laravel-sluggable/tree/3.7.5" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-04-24T09:21:00+00:00" + }, + { + "name": "spatie/laravel-tags", + "version": "4.10.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-tags.git", + "reference": "26fe2ad5490e65e2a3475c3fe8a4d9609934aa40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-tags/zipball/26fe2ad5490e65e2a3475c3fe8a4d9609934aa40", + "reference": "26fe2ad5490e65e2a3475c3fe8a4d9609934aa40", + "shasum": "" + }, + "require": { + "laravel/framework": "^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.63|^3.0", + "php": "^8.1", + "spatie/eloquent-sortable": "^4.0", + "spatie/laravel-package-tools": "^1.4", + "spatie/laravel-translatable": "^6.0" + }, + "require-dev": { + "orchestra/testbench": "^8.0|^9.0|^10.0", + "pestphp/pest": "^1.22|^2.0", + "phpunit/phpunit": "^9.5.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Tags\\TagsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\Tags\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Add tags and taggable behaviour to your Laravel app", + "homepage": "https://github.com/spatie/laravel-tags", + "keywords": [ + "laravel-tags", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-tags/issues", + "source": "https://github.com/spatie/laravel-tags/tree/4.10.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-10-13T14:16:14+00:00" + }, + { + "name": "spatie/laravel-translatable", + "version": "6.11.4", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-translatable.git", + "reference": "032d85b28de315310dab2048b857016f1194f68b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/032d85b28de315310dab2048b857016f1194f68b", + "reference": "032d85b28de315310dab2048b857016f1194f68b", + "shasum": "" + }, + "require": { + "illuminate/database": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "php": "^8.0", + "spatie/laravel-package-tools": "^1.11" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.64", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "pestphp/pest": "^1.20|^2.0|^3.0" + }, + "type": "library", + "extra": { + "aliases": { + "Translatable": "Spatie\\Translatable\\Facades\\Translatable" + }, + "laravel": { + "providers": [ + "Spatie\\Translatable\\TranslatableServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\Translatable\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + }, + { + "name": "Sebastian De Deyne", + "email": "sebastian@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A trait to make an Eloquent model hold translations", + "homepage": "https://github.com/spatie/laravel-translatable", + "keywords": [ + "eloquent", + "i8n", + "laravel-translatable", + "model", + "multilingual", + "spatie", + "translate" + ], + "support": { + "issues": "https://github.com/spatie/laravel-translatable/issues", + "source": "https://github.com/spatie/laravel-translatable/tree/6.11.4" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-02-20T15:51:22+00:00" + }, + { + "name": "spatie/temporary-directory", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/temporary-directory.git", + "reference": "580eddfe9a0a41a902cac6eeb8f066b42e65a32b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/580eddfe9a0a41a902cac6eeb8f066b42e65a32b", + "reference": "580eddfe9a0a41a902cac6eeb8f066b42e65a32b", + "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.3.0" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-01-13T13:04:43+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "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.3.0" + }, + "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-09-25T14:21:43+00:00" + }, + { + "name": "symfony/console", + "version": "v7.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", + "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2" + }, + "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", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.3.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-04T01:21:42+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "84321188c4754e64273b46b406081ad9b18e8614" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/84321188c4754e64273b46b406081ad9b18e8614", + "reference": "84321188c4754e64273b46b406081ad9b18e8614", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.3.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-29T17:24:25+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "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": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + }, + "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-09-25T14:21:43+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v7.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "bbe40bfab84323d99dab491b716ff142410a92a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/bbe40bfab84323d99dab491b716ff142410a92a8", + "reference": "bbe40bfab84323d99dab491b716ff142410a92a8", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^6.4|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v7.3.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-31T19:12:50+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-08-13T11:49:31+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "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": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + }, + "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-09-25T14:21:43+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "9f696d2f1e340484b4683f7853b273abff94421f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f", + "reference": "9f696d2f1e340484b4683f7853b273abff94421f", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-15T18:45:57+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.3.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/db488a62f98f7a81d5746f05eea63a74e55bb7c4", + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "symfony/clock": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v7.3.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-08T16:41:12+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.3.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/10b8e9b748ea95fa4539c208e2487c435d3c87ce", + "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^7.3", + "symfony/http-foundation": "^7.3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^7.1", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v7.3.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-12T11:38:40+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/fd497c45ba9c10c37864e19466b090dcb60a50ba", + "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^7.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v7.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-24T14:27:20+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v7.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-16T08:38:17+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "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": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-27T09:58:17+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-10T14:38:51+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "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": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "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": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T08:10:11+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "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": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-08T02:45:35+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "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": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-24T13:30:11+00:00" + }, + { + "name": "symfony/polyfill-php85", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "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": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-23T16:12:55+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-11T10:12:26+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/c97abe725f2a1a858deca629a6488c8fc20c3091", + "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v7.3.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-05T07:57:47+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "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": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:30:57+00:00" + }, + { + "name": "symfony/string", + "version": "v7.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "f96476035142921000338bad71e5247fbc138872" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-11T14:36:48+00:00" + }, + { + "name": "symfony/translation", + "version": "v7.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "ec25870502d0c7072d086e8ffba1420c85965174" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", + "reference": "ec25870502d0c7072d086e8ffba1420c85965174", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "nikic/php-parser": "<5.0", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v7.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-07T11:39:36+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "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": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.3.1" + }, + "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": "2025-06-27T19:55:54+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/476c4ae17f43a9a36650c69879dcf5b1e6ae724d", + "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "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": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v7.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-27T09:00:46+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" + }, + "time": "2024-12-21T16:25:41+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.2", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.3", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-04-30T23:37:27+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "https://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2024-11-21T01:49:47+00:00" + }, + { + "name": "woodsandwalker/laravel-countries", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/woodsandwalker/laravel-countries.git", + "reference": "4485a86ad1afe2a57bf7382e0c1a94a4f563b6f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/woodsandwalker/laravel-countries/zipball/4485a86ad1afe2a57bf7382e0c1a94a4f563b6f7", + "reference": "4485a86ad1afe2a57bf7382e0c1a94a4f563b6f7", + "shasum": "" + }, + "require": { + "calebporzio/sushi": "^2.5", + "illuminate/database": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^8.0|^8.1|^8.2|^8.3" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "WW\\Countries\\LaravelCountriesServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "WW\\Countries\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "James Walker", + "homepage": "https://woodsandwalker.co.uk", + "role": "Developer" + } + ], + "description": "Laravel Countries is a bundle for Laravel providing ISO 3166_2 codes for all countries along with a country model, cast and validation rule.", + "homepage": "https://github.com/woodsandwalker/laravel-countries", + "keywords": [ + "countries", + "laravel" + ], + "support": { + "issues": "https://github.com/woodsandwalker/laravel-countries/issues", + "source": "https://github.com/woodsandwalker/laravel-countries/tree/1.5.0" + }, + "time": "2025-02-25T13:47:12+00:00" + } + ], + "packages-dev": [ + { + "name": "archtechx/enums", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/archtechx/enums.git", + "reference": "81375b71c176f680880a95e7448d84258cfb5c72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/archtechx/enums/zipball/81375b71c176f680880a95e7448d84258cfb5c72", + "reference": "81375b71c176f680880a95e7448d84258cfb5c72", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "larastan/larastan": "^2.4", + "orchestra/testbench": "^8.0 || ^9.0", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0" + }, + "type": "library", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "ArchTech\\Enums\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Samuel Štancl", + "email": "samuel@archte.ch" + } + ], + "description": "Helpers for making PHP enums more lovable.", + "support": { + "issues": "https://github.com/archtechx/enums/issues", + "source": "https://github.com/archtechx/enums/tree/v1.1.2" + }, + "time": "2025-06-06T23:15:09+00:00" + }, + { + "name": "brianium/paratest", + "version": "v7.8.4", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "130a9bf0e269ee5f5b320108f794ad03e275cad4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/130a9bf0e269ee5f5b320108f794ad03e275cad4", + "reference": "130a9bf0e269ee5f5b320108f794ad03e275cad4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^1.2.0", + "jean85/pretty-package-versions": "^2.1.1", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "phpunit/php-code-coverage": "^11.0.10", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-timer": "^7.0.1", + "phpunit/phpunit": "^11.5.24", + "sebastian/environment": "^7.2.1", + "symfony/console": "^6.4.22 || ^7.3.0", + "symfony/process": "^6.4.20 || ^7.3.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "phpstan/phpstan": "^2.1.17", + "phpstan/phpstan-deprecation-rules": "^2.0.3", + "phpstan/phpstan-phpunit": "^2.0.6", + "phpstan/phpstan-strict-rules": "^2.0.4", + "squizlabs/php_codesniffer": "^3.13.2", + "symfony/filesystem": "^6.4.13 || ^7.3.0" + }, + "bin": [ + "bin/paratest", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.8.4" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2025-06-23T06:07:21+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "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/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" + }, + "time": "2025-04-07T20:06:18+00:00" + }, + { + "name": "dragon-code/contracts", + "version": "2.24.0", + "source": { + "type": "git", + "url": "https://github.com/TheDragonCode/contracts.git", + "reference": "c21ea4fc0a399bd803a2805a7f2c989749083896" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDragonCode/contracts/zipball/c21ea4fc0a399bd803a2805a7f2c989749083896", + "reference": "c21ea4fc0a399bd803a2805a7f2c989749083896", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-message": "^1.0.1 || ^2.0", + "symfony/http-kernel": "^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.23" + }, + "conflict": { + "andrey-helldar/contracts": "*" + }, + "require-dev": { + "illuminate/database": "^10.0 || ^11.0 || ^12.0", + "phpdocumentor/reflection-docblock": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "DragonCode\\Contracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://dragon-code.pro" + } + ], + "description": "A set of contracts for any project", + "keywords": [ + "contracts", + "interfaces" + ], + "support": { + "source": "https://github.com/TheDragonCode/contracts" + }, + "funding": [ + { + "url": "https://boosty.to/dragon-code", + "type": "boosty" + }, + { + "url": "https://yoomoney.ru/to/410012608840929", + "type": "yoomoney" + } + ], + "time": "2025-02-23T23:11:50+00:00" + }, + { + "name": "dragon-code/pretty-array", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/TheDragonCode/pretty-array.git", + "reference": "b94034d92172a5d14a578822d68b2a8f8b5388e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDragonCode/pretty-array/zipball/b94034d92172a5d14a578822d68b2a8f8b5388e0", + "reference": "b94034d92172a5d14a578822d68b2a8f8b5388e0", + "shasum": "" + }, + "require": { + "dragon-code/contracts": "^2.20", + "dragon-code/support": "^6.11.2", + "ext-dom": "*", + "ext-mbstring": "*", + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^10.0 || ^11.0 || ^12.0" + }, + "suggest": { + "symfony/thanks": "Give thanks (in the form of a GitHub) to your fellow PHP package maintainers" + }, + "type": "library", + "autoload": { + "psr-4": { + "DragonCode\\PrettyArray\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://dragon-code.pro" + } + ], + "description": "Simple conversion of an array to a pretty view", + "keywords": [ + "andrey helldar", + "array", + "dragon", + "dragon code", + "pretty", + "pretty array" + ], + "support": { + "issues": "https://github.com/TheDragonCode/pretty-array/issues", + "source": "https://github.com/TheDragonCode/pretty-array" + }, + "funding": [ + { + "url": "https://boosty.to/dragon-code", + "type": "boosty" + }, + { + "url": "https://yoomoney.ru/to/410012608840929", + "type": "yoomoney" + } + ], + "time": "2025-02-24T15:35:24+00:00" + }, + { + "name": "dragon-code/support", + "version": "6.16.0", + "source": { + "type": "git", + "url": "https://github.com/TheDragonCode/support.git", + "reference": "ab9b657a307e75f6ba5b2b39e1e45207dc1a065a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDragonCode/support/zipball/ab9b657a307e75f6ba5b2b39e1e45207dc1a065a", + "reference": "ab9b657a307e75f6ba5b2b39e1e45207dc1a065a", + "shasum": "" + }, + "require": { + "dragon-code/contracts": "^2.22.0", + "ext-bcmath": "*", + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.1", + "psr/http-message": "^1.0.1 || ^2.0", + "symfony/polyfill-php81": "^1.25", + "voku/portable-ascii": "^1.4.8 || ^2.0.1" + }, + "conflict": { + "andrey-helldar/support": "*" + }, + "require-dev": { + "illuminate/contracts": "^9.0 || ^10.0 || ^11.0 || ^12.0", + "phpunit/phpunit": "^9.6 || ^11.0 || ^12.0", + "symfony/var-dumper": "^6.0 || ^7.0" + }, + "suggest": { + "dragon-code/laravel-support": "Various helper files for the Laravel and Lumen frameworks", + "symfony/thanks": "Give thanks (in the form of a GitHub) to your fellow PHP package maintainers" + }, + "type": "library", + "extra": { + "dragon-code": { + "docs-generator": { + "preview": { + "brand": "php", + "vendor": "The Dragon Code" + } + } + } + }, + "autoload": { + "psr-4": { + "DragonCode\\Support\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://dragon-code.pro" + } + ], + "description": "Support package is a collection of helpers and tools for any project.", + "keywords": [ + "dragon", + "dragon-code", + "framework", + "helper", + "helpers", + "laravel", + "php", + "support", + "symfony", + "yii", + "yii2" + ], + "support": { + "issues": "https://github.com/TheDragonCode/support/issues", + "source": "https://github.com/TheDragonCode/support" + }, + "funding": [ + { + "url": "https://boosty.to/dragon-code", + "type": "boosty" + }, + { + "url": "https://yoomoney.ru/to/410012608840929", + "type": "yoomoney" + } + ], + "time": "2025-02-24T14:01:52+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.24.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "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.24.1" + }, + "time": "2024-11-21T13:46:39+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678", + "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": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "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.3.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2025-08-14T07:29:31+00:00" + }, + { + "name": "filp/whoops", + "version": "2.18.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^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.18.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-08-08T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.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.1.1" + }, + "time": "2025-04-30T06:54:44+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", + "vimeo/psalm": "^4.3 || ^5.0" + }, + "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.1.1" + }, + "time": "2025-03-19T14:43:43+00:00" + }, + { + "name": "laravel-lang/config", + "version": "1.14.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/config.git", + "reference": "0f6a41a1d5f4bde6ff59fbfd9e349ac64b737c69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/config/zipball/0f6a41a1d5f4bde6ff59fbfd9e349ac64b737c69", + "reference": "0f6a41a1d5f4bde6ff59fbfd9e349ac64b737c69", + "shasum": "" + }, + "require": { + "archtechx/enums": "^1.0", + "illuminate/config": "^10.0 || ^11.0 || ^12.0", + "illuminate/support": "^10.0 || ^11.0 || ^12.0", + "laravel-lang/locale-list": "^1.5", + "php": "^8.1" + }, + "require-dev": { + "orchestra/testbench": "^8.23 || ^9.1 || ^10.0", + "pestphp/pest": "^2.34 || ^3.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Config\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Config\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "The Laravel-Lang config package", + "keywords": [ + "Laravel-lang", + "Settings", + "config", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "localizations", + "translation", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/config/issues", + "source": "https://github.com/Laravel-Lang/config/tree/1.14.0" + }, + "time": "2025-04-11T07:31:54+00:00" + }, + { + "name": "laravel-lang/lang", + "version": "15.26.2", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/lang.git", + "reference": "4f49e4a77ced9ace7955db2159234e4a9c0b22a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/4f49e4a77ced9ace7955db2159234e4a9c0b22a3", + "reference": "4f49e4a77ced9ace7955db2159234e4a9c0b22a3", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel-lang/publisher": "^16.0", + "php": "^8.2" + }, + "conflict": { + "laravel/framework": "<11.0.7" + }, + "require-dev": { + "dragon-code/codestyler": "^6.0", + "laravel-lang/status-generator": "^2.11", + "phpunit/phpunit": "^11.0 || ^12.0", + "symfony/var-dumper": "^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Lang\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Lang\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + } + ], + "description": "List of 126 languages for Laravel Framework, Laravel Jetstream, Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova, Laravel Spark and Laravel UI", + "keywords": [ + "lang", + "languages", + "laravel", + "lpm" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/lang/issues", + "source": "https://github.com/Laravel-Lang/lang" + }, + "time": "2025-10-29T12:19:07+00:00" + }, + { + "name": "laravel-lang/locale-list", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/locale-list.git", + "reference": "98227230d737b32279f8376a3149be43965513c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/locale-list/zipball/98227230d737b32279f8376a3149be43965513c6", + "reference": "98227230d737b32279f8376a3149be43965513c6", + "shasum": "" + }, + "require": { + "archtechx/enums": "^0.3.2 || ^1.0", + "php": "^8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "LaravelLang\\LocaleList\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "List of localizations available in Laravel Lang projects", + "keywords": [ + "Laravel-lang", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "translation", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/locale-list/issues", + "source": "https://github.com/Laravel-Lang/locale-list" + }, + "time": "2025-11-16T18:22:05+00:00" + }, + { + "name": "laravel-lang/locales", + "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/locales.git", + "reference": "8c1d2383ced70a919b3c2f430589be6c81663087" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/locales/zipball/8c1d2383ced70a919b3c2f430589be6c81663087", + "reference": "8c1d2383ced70a919b3c2f430589be6c81663087", + "shasum": "" + }, + "require": { + "archtechx/enums": "^0.3.2 || ^1.0", + "dragon-code/support": "^6.11.3", + "ext-json": "*", + "illuminate/collections": "^10.0 || ^11.0 || ^12.0", + "laravel-lang/config": "^1.12", + "laravel-lang/locale-list": "^1.5", + "laravel-lang/native-country-names": "^1.5", + "laravel-lang/native-currency-names": "^1.6", + "laravel-lang/native-locale-names": "^2.5", + "php": "^8.1" + }, + "require-dev": { + "orchestra/testbench": "^8.0 || ^9.0 || ^10.0", + "pestphp/pest": "^2.24.1 || ^3.0", + "symfony/var-dumper": "^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Locales\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Locales\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "Basic functionality for working with localizations", + "keywords": [ + "laravel", + "locale", + "locales", + "localization", + "translation", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/locales/issues", + "source": "https://github.com/Laravel-Lang/locales" + }, + "time": "2025-02-24T20:38:10+00:00" + }, + { + "name": "laravel-lang/native-country-names", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/native-country-names.git", + "reference": "22a9d18d9094fdf0b3384f37feefd3c7d91f1db9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/native-country-names/zipball/22a9d18d9094fdf0b3384f37feefd3c7d91f1db9", + "reference": "22a9d18d9094fdf0b3384f37feefd3c7d91f1db9", + "shasum": "" + }, + "require": { + "dragon-code/support": "^6.11", + "ext-json": "*", + "illuminate/collections": "^10.0 || ^11.0 || ^12.0", + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0 || ^11.0 || ^12.0", + "laravel-lang/locale-list": "^1.5", + "pestphp/pest": "^2.24.3 || ^3.0", + "punic/punic": "^3.8", + "symfony/console": "^6.3 || ^7.0", + "symfony/process": "^6.3 || ^7.0", + "symfony/var-dumper": "^6.3 || ^7.0", + "vlucas/phpdotenv": "^5.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "LaravelLang\\NativeCountryNames\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "The project contains native translations of country names", + "keywords": [ + "Laravel-lang", + "countries", + "country", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "territories", + "territory", + "translation", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/native-country-names/issues", + "source": "https://github.com/Laravel-Lang/native-country-names" + }, + "time": "2025-11-18T07:59:31+00:00" + }, + { + "name": "laravel-lang/native-currency-names", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/native-currency-names.git", + "reference": "cc871b6d2574b4397728b78e4522e6cfd53cdb79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/native-currency-names/zipball/cc871b6d2574b4397728b78e4522e6cfd53cdb79", + "reference": "cc871b6d2574b4397728b78e4522e6cfd53cdb79", + "shasum": "" + }, + "require": { + "dragon-code/support": "^6.11", + "ext-json": "*", + "illuminate/collections": "^10.0 || ^11.0 || ^12.0", + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0 || ^11.0 || ^12.0", + "laravel-lang/locale-list": "^1.2", + "pestphp/pest": "^2.24.3 || ^3.0", + "punic/punic": "^3.8", + "symfony/console": "^6.3 || ^7.0", + "symfony/process": "^6.3 || ^7.0", + "symfony/var-dumper": "^6.3 || ^7.0", + "vlucas/phpdotenv": "^5.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "LaravelLang\\NativeCurrencyNames\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "The project contains native translations of currency names", + "keywords": [ + "Laravel-lang", + "currency", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "translation", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/native-currency-names/issues", + "source": "https://github.com/Laravel-Lang/native-currency-names" + }, + "time": "2025-11-18T07:53:26+00:00" + }, + { + "name": "laravel-lang/native-locale-names", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/native-locale-names.git", + "reference": "6f5c0662287b61d078501eba9cdfff305a0d2266" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/native-locale-names/zipball/6f5c0662287b61d078501eba9cdfff305a0d2266", + "reference": "6f5c0662287b61d078501eba9cdfff305a0d2266", + "shasum": "" + }, + "require": { + "dragon-code/support": "^6.11", + "ext-json": "*", + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.31 || ^11.0 || ^12.0", + "laravel-lang/locale-list": "^1.2", + "pestphp/pest": "^2.24.3", + "punic/punic": "^3.8", + "symfony/console": "^6.3 || ^7.0", + "symfony/process": "^6.3 || ^7.0", + "symfony/var-dumper": "^6.3 || ^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "LaravelLang\\NativeLocaleNames\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "The project contains native translations of locale names", + "keywords": [ + "Laravel-lang", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "translation", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/native-locale-names/issues", + "source": "https://github.com/Laravel-Lang/native-locale-names" + }, + "time": "2025-11-16T20:54:01+00:00" + }, + { + "name": "laravel-lang/publisher", + "version": "16.7.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/publisher.git", + "reference": "af47a0807f753818d72808250a1166e98172047c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/publisher/zipball/af47a0807f753818d72808250a1166e98172047c", + "reference": "af47a0807f753818d72808250a1166e98172047c", + "shasum": "" + }, + "require": { + "composer/semver": "^3.4", + "dragon-code/pretty-array": "^4.1", + "dragon-code/support": "^6.11.3", + "ext-json": "*", + "illuminate/collections": "^10.0 || ^11.0 || ^12.0", + "illuminate/console": "^10.0 || ^11.0 || ^12.0", + "illuminate/support": "^10.0 || ^11.0 || ^12.0", + "laravel-lang/config": "^1.12", + "laravel-lang/locales": "^2.10", + "league/commonmark": "^2.4.1", + "league/config": "^1.2", + "php": "^8.1" + }, + "conflict": { + "laravel-lang/attributes": "<2.0", + "laravel-lang/http-statuses": "<3.0", + "laravel-lang/lang": "<11.0" + }, + "require-dev": { + "laravel-lang/json-fallback": "^2.2", + "orchestra/testbench": "^8.14 || ^9.0 || ^10.0", + "phpunit/phpunit": "^10.4.2 || ^11.0 || ^12.0", + "symfony/var-dumper": "^6.3.6 || ^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Publisher\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Publisher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "Localization publisher for your Laravel application", + "keywords": [ + "Laravel-lang", + "breeze", + "cashier", + "fortify", + "framework", + "i18n", + "jetstream", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "localizations", + "lpm", + "lumen", + "nova", + "publisher", + "spark", + "trans", + "translation", + "translations", + "validations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/publisher/issues", + "source": "https://github.com/Laravel-Lang/publisher" + }, + "time": "2025-07-14T17:58:53+00:00" + }, + { + "name": "laravel-lang/starter-kits", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/starter-kits.git", + "reference": "0570716d62df4e718573bc9dfb3b621246629b40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/starter-kits/zipball/0570716d62df4e718573bc9dfb3b621246629b40", + "reference": "0570716d62df4e718573bc9dfb3b621246629b40", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel-lang/publisher": "^16.6", + "php": "^8.1" + }, + "require-dev": { + "laravel-lang/status-generator": "^2.13", + "phpunit/phpunit": "^11.0 || ^12.0", + "symfony/var-dumper": "^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\StarterKits\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\StarterKits\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "Translations for Laravel Starter Kits", + "keywords": [ + "i18n", + "lang", + "languages", + "laravel", + "starter-kit", + "starter-kits", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/starter-kits/issues", + "source": "https://github.com/Laravel-Lang/starter-kits/tree/1.6.0" + }, + "time": "2025-11-17T02:59:45+00:00" + }, + { + "name": "laravel/pail", + "version": "v1.2.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "8cc3d575c1f0e57eeb923f366a37528c50d2385a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/8cc3d575c1f0e57eeb923f366a37528c50d2385a", + "reference": "8cc3d575c1f0e57eeb923f366a37528c50d2385a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0|^12.0", + "illuminate/contracts": "^10.24|^11.0|^12.0", + "illuminate/log": "^10.24|^11.0|^12.0", + "illuminate/process": "^10.24|^11.0|^12.0", + "illuminate/support": "^10.24|^11.0|^12.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0|^12.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.13|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0", + "phpstan/phpstan": "^1.12.27", + "symfony/var-dumper": "^6.3|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Pail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", + "keywords": [ + "dev", + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2025-06-05T13:55:57+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.25.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/5016e263f95d97670d71b9a987bd8996ade6d8d9", + "reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.87.2", + "illuminate/view": "^11.46.0", + "larastan/larastan": "^3.7.1", + "laravel-zero/framework": "^11.45.0", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^2.3.1", + "pestphp/pest": "^2.36.0" + }, + "bin": [ + "builds/pint" + ], + "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": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2025-09-19T02:57:12+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.48.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "ef122b223f5fca5e5d88bda5127c846710886329" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/ef122b223f5fca5e5d88bda5127c846710886329", + "reference": "ef122b223f5fca5e5d88bda5127c846710886329", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.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|^10.0", + "phpstan/phpstan": "^2.0" + }, + "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": "2025-11-17T22:05:34+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.12", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2024-05-16T03:13:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v8.8.3", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.18.1", + "nunomaduro/termwind": "^2.3.1", + "php": "^8.2.0", + "symfony/console": "^7.3.0" + }, + "conflict": { + "laravel/framework": "<11.44.2 || >=13.0.0", + "phpunit/phpunit": "<11.5.15 || >=13.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.8.3", + "larastan/larastan": "^3.4.2", + "laravel/framework": "^11.44.2 || ^12.18", + "laravel/pint": "^1.22.1", + "laravel/sail": "^1.43.1", + "laravel/sanctum": "^4.1.1", + "laravel/tinker": "^2.10.1", + "orchestra/testbench-core": "^9.12.0 || ^10.4", + "pestphp/pest": "^3.8.2 || ^4.0.0", + "sebastian/environment": "^7.2.1 || ^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "dev", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2025-11-20T02:55:25+00:00" + }, + { + "name": "pestphp/pest", + "version": "v3.8.4", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest.git", + "reference": "72cf695554420e21858cda831d5db193db102574" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest/zipball/72cf695554420e21858cda831d5db193db102574", + "reference": "72cf695554420e21858cda831d5db193db102574", + "shasum": "" + }, + "require": { + "brianium/paratest": "^7.8.4", + "nunomaduro/collision": "^8.8.2", + "nunomaduro/termwind": "^2.3.1", + "pestphp/pest-plugin": "^3.0.0", + "pestphp/pest-plugin-arch": "^3.1.1", + "pestphp/pest-plugin-mutate": "^3.0.5", + "php": "^8.2.0", + "phpunit/phpunit": "^11.5.33" + }, + "conflict": { + "filp/whoops": "<2.16.0", + "phpunit/phpunit": ">11.5.33", + "sebastian/exporter": "<6.0.0", + "webmozart/assert": "<1.11.0" + }, + "require-dev": { + "pestphp/pest-dev-tools": "^3.4.0", + "pestphp/pest-plugin-type-coverage": "^3.6.1", + "symfony/process": "^7.3.0" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Mutate\\Plugins\\Mutate", + "Pest\\Plugins\\Configuration", + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], + "psr-4": { + "Pest\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "The elegant PHP Testing Framework.", + "keywords": [ + "framework", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v3.8.4" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-08-20T19:12:42+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "e79b26c65bc11c41093b10150c1341cc5cdbea83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e79b26c65bc11c41093b10150c1341cc5cdbea83", + "reference": "e79b26c65bc11c41093b10150c1341cc5cdbea83", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.2" + }, + "conflict": { + "pestphp/pest": "<3.0.0" + }, + "require-dev": { + "composer/composer": "^2.7.9", + "pestphp/pest": "^3.0.0", + "pestphp/pest-dev-tools": "^3.0.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Pest\\Plugin\\Manager" + }, + "autoload": { + "psr-4": { + "Pest\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest plugin manager", + "keywords": [ + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin/tree/v3.0.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2024-09-08T23:21:41+00:00" + }, + { + "name": "pestphp/pest-plugin-arch", + "version": "v3.1.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "db7bd9cb1612b223e16618d85475c6f63b9c8daa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/db7bd9cb1612b223e16618d85475c6f63b9c8daa", + "reference": "db7bd9cb1612b223e16618d85475c6f63b9c8daa", + "shasum": "" + }, + "require": { + "pestphp/pest-plugin": "^3.0.0", + "php": "^8.2", + "ta-tikoma/phpunit-architecture-test": "^0.8.4" + }, + "require-dev": { + "pestphp/pest": "^3.8.1", + "pestphp/pest-dev-tools": "^3.4.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Arch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Arch plugin for Pest PHP.", + "keywords": [ + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v3.1.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-04-16T22:59:48+00:00" + }, + { + "name": "pestphp/pest-plugin-laravel", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "6801be82fd92b96e82dd72e563e5674b1ce365fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/6801be82fd92b96e82dd72e563e5674b1ce365fc", + "reference": "6801be82fd92b96e82dd72e563e5674b1ce365fc", + "shasum": "" + }, + "require": { + "laravel/framework": "^11.39.1|^12.9.2", + "pestphp/pest": "^3.8.2", + "php": "^8.2.0" + }, + "require-dev": { + "laravel/dusk": "^8.2.13|dev-develop", + "orchestra/testbench": "^9.9.0|^10.2.1", + "pestphp/pest-dev-tools": "^3.4.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Laravel\\Plugin" + ] + }, + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Laravel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Laravel Plugin", + "keywords": [ + "framework", + "laravel", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-04-21T07:40:53+00:00" + }, + { + "name": "pestphp/pest-plugin-mutate", + "version": "v3.0.5", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-mutate.git", + "reference": "e10dbdc98c9e2f3890095b4fe2144f63a5717e08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-mutate/zipball/e10dbdc98c9e2f3890095b4fe2144f63a5717e08", + "reference": "e10dbdc98c9e2f3890095b4fe2144f63a5717e08", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.2.0", + "pestphp/pest-plugin": "^3.0.0", + "php": "^8.2", + "psr/simple-cache": "^3.0.0" + }, + "require-dev": { + "pestphp/pest": "^3.0.8", + "pestphp/pest-dev-tools": "^3.0.0", + "pestphp/pest-plugin-type-coverage": "^3.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Pest\\Mutate\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sandro Gehri", + "email": "sandrogehri@gmail.com" + } + ], + "description": "Mutates your code to find untested cases", + "keywords": [ + "framework", + "mutate", + "mutation", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-mutate/tree/v3.0.5" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/gehrisandro", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-09-22T07:54:40+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "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.6.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "90a04bcbf03784066f16038e87e23a0a83cee3c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/90a04bcbf03784066f16038e87e23a0a83cee3c2", + "reference": "90a04bcbf03784066f16038e87e23a0a83cee3c2", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.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" + }, + { + "name": "Jaap van Otterdijk", + "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.6.4" + }, + "time": "2025-11-17T21:13:10+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "8cbe6100e8971efbf8e2e7da3a202ba83eafd5a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/8cbe6100e8971efbf8e2e7da3a202ba83eafd5a3", + "reference": "8cbe6100e8971efbf8e2e7da3a202ba83eafd5a3", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.18|^2.0" + }, + "require-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.11.0" + }, + "time": "2025-11-19T20:28:58+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "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/2.3.0" + }, + "time": "2025-08-30T15:50:23+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "11.0.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", + "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.4.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-text-template": "^4.0.1", + "sebastian/code-unit-reverse-lookup": "^4.0.1", + "sebastian/complexity": "^4.0.1", + "sebastian/environment": "^7.2.0", + "sebastian/lines-of-code": "^3.0.1", + "sebastian/version": "^5.0.2", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^11.5.2" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.0.x-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 provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.11" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2025-08-27T14:37:49+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.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": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-27T05:02:59+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.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": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:07:44+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:08:43+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.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": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:09:35+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "11.5.33", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "5965e9ff57546cb9137c0ff6aa78cb7442b05cf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5965e9ff57546cb9137c0ff6aa78cb7442b05cf6", + "reference": "5965e9ff57546cb9137c0ff6aa78cb7442b05cf6", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0.10", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-invoker": "^5.0.1", + "phpunit/php-text-template": "^4.0.1", + "phpunit/php-timer": "^7.0.1", + "sebastian/cli-parser": "^3.0.2", + "sebastian/code-unit": "^3.0.3", + "sebastian/comparator": "^6.3.2", + "sebastian/diff": "^6.0.2", + "sebastian/environment": "^7.2.1", + "sebastian/exporter": "^6.3.0", + "sebastian/global-state": "^7.0.2", + "sebastian/object-enumerator": "^6.0.1", + "sebastian/type": "^5.1.3", + "sebastian/version": "^5.0.2", + "staabm/side-effects-detector": "^1.0.5" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.33" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2025-08-16T05:19:02+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.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 for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:41:36+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.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 PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-19T07:56:08+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:45:54+00:00" + }, + { + "name": "sebastian/comparator", + "version": "6.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85c77556683e6eee4323e4c5468641ca0237e2e8", + "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.4" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2025-08-10T08:07:46+00:00" + }, + { + "name": "sebastian/complexity", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:49:50+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:53:05+00:00" + }, + { + "name": "sebastian/environment", + "version": "7.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/7.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" + } + ], + "time": "2025-05-21T11:55:47+00:00" + }, + { + "name": "sebastian/exporter", + "version": "6.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2025-09-24T06:12:51+00:00" + }, + { + "name": "sebastian/global-state", + "version": "7.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:57:36+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.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 for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:58:38+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:00:13+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:01:32+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "6.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-13T04:42:22+00:00" + }, + { + "name": "sebastian/type", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-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", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" + } + ], + "time": "2025-08-09T06:55:48+00:00" + }, + { + "name": "sebastian/version", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.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", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-09T05:16:32+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "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": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/90208e2fc6f68f613eae7ca25a2458a931b1bacc", + "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-27T09:00:46+00:00" + }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.8.5", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "cf6fb197b676ba716837c886baca842e4db29005" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/cf6fb197b676ba716837c886baca842e4db29005", + "reference": "cf6fb197b676ba716837c886baca842e4db29005", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18.0 || ^5.0.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" + }, + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.5" + }, + "time": "2025-04-20T20:23:40+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-11-17T20:03:58+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", + "php": "^7.2 || ^8.0" + }, + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.12.1" + }, + "time": "2025-10-29T15:56:20+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.2" + }, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..324b513 --- /dev/null +++ b/config/app.php @@ -0,0 +1,126 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | the application so that it's available within Artisan commands. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. The timezone + | is set to "UTC" by default as it is suitable for most use cases. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by Laravel's translation / localization methods. This option can be + | set to any locale for which you plan to have translation strings. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), + + 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is utilized by Laravel's encryption services and should be set + | to a random, 32 character string to ensure that all encrypted values + | are secure. You should do this prior to deploying the application. + | + */ + + 'cipher' => 'AES-256-CBC', + + 'key' => env('APP_KEY'), + + 'previous_keys' => [ + ...array_filter( + explode(',', env('APP_PREVIOUS_KEYS', '')) + ), + ], + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..0ba5d5d --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => env('AUTH_GUARD', 'web'), + 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | which utilizes session storage plus the Eloquent user provider. + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | If you have multiple user tables or models you may configure multiple + | providers to represent the model / table. These providers may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => env('AUTH_MODEL', App\Models\User::class), + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | These configuration options specify the behavior of Laravel's password + | reset functionality, including the table utilized for token storage + | and the user provider that is invoked to actually retrieve users. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | window expires and users are asked to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), + +]; diff --git a/config/blade-flags.php b/config/blade-flags.php new file mode 100644 index 0000000..2625cb6 --- /dev/null +++ b/config/blade-flags.php @@ -0,0 +1,57 @@ + 'flag', + + /* + |----------------------------------------------------------------- + | Fallback Icon + |----------------------------------------------------------------- + | + | This config option allows you to define a fallback + | icon when an icon in this set cannot be found. + | + */ + + 'fallback' => 'country-xx', + + /* + |----------------------------------------------------------------- + | Default Set Classes + |----------------------------------------------------------------- + | + | This config option allows you to define some classes which + | will be applied by default to all icons within this set. + | + */ + + 'class' => '', + + /* + |----------------------------------------------------------------- + | Default Set Attributes + |----------------------------------------------------------------- + | + | This config option allows you to define some attributes which + | will be applied by default to all icons within this set. + | + */ + + 'attributes' => [ + 'width' => 100, + 'height' => 50, + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..925f7d2 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,108 @@ + env('CACHE_STORE', 'database'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "array", "database", "file", "memcached", + | "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_CACHE_CONNECTION'), + 'table' => env('DB_CACHE_TABLE', 'cache'), + 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), + 'lock_table' => env('DB_CACHE_LOCK_TABLE'), + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_CACHE_CONNECTION', 'cache'), + 'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'), + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, and DynamoDB cache + | stores, there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/config/ciphersweet.php b/config/ciphersweet.php new file mode 100644 index 0000000..188019c --- /dev/null +++ b/config/ciphersweet.php @@ -0,0 +1,54 @@ + env('CIPHERSWEET_BACKEND', 'nacl'), + + /** + * Set backend-specific options here. "custom" points to a factory class that returns a + * backend from its `__invoke` method. Please see the docs for more details. + */ + 'backends' => [ + // 'custom' => CustomBackendFactory::class, + ], + + /** + * Select which key provider your application will use. The default option + * is to read a string literal out of .env, but it's also possible to + * provide the key in a file or use random keys for testing. + * + * Supported: "file", "random", "string", "custom" + */ + 'provider' => env('CIPHERSWEET_PROVIDER', 'string'), + + /** + * Set provider-specific options here. "string" will read the key directly + * from your .env file. "file" will read the contents of the specified file + * to use as your key. "custom" points to a factory class that returns a + * provider from its `__invoke` method. Please see the docs for more details. + */ + 'providers' => [ + 'file' => [ + 'path' => env('CIPHERSWEET_FILE_PATH'), + ], + 'string' => [ + 'key' => env('CIPHERSWEET_KEY'), + ], + // 'custom' => CustomKeyProviderFactory::class, + ], + + /* + * The provided code snippet checks whether the $permitEmpty property is set to false + * for a given field. If it is not set to false, it throws an EmptyFieldException indicating + * that the field is not defined in the row. This ensures that the code enforces the requirement for + * the field to have a value and alerts the user if it is empty or undefined. + * Supported: "true", "false" + */ + 'permit_empty' => env('CIPHERSWEET_PERMIT_EMPTY', FALSE) +]; diff --git a/config/countries.php b/config/countries.php new file mode 100644 index 0000000..99ad73a --- /dev/null +++ b/config/countries.php @@ -0,0 +1,10 @@ + [] +]; \ No newline at end of file diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..8910562 --- /dev/null +++ b/config/database.php @@ -0,0 +1,174 @@ + env('DB_CONNECTION', 'sqlite'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Below are all of the database connections defined for your application. + | An example configuration is provided for each database system which + | is supported by Laravel. You're free to add / remove connections. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DB_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + 'busy_timeout' => null, + 'journal_mode' => null, + 'synchronous' => null, + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'mariadb' => [ + 'driver' => 'mariadb', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run on the database. + | + */ + + 'migrations' => [ + 'table' => 'migrations', + 'update_date_on_publish' => true, + ], + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as Memcached. You may define your connection settings here. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + 'persistent' => env('REDIS_PERSISTENT', false), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..3d671bd --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,80 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. + | + | Supported drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app/private'), + 'serve' => true, + 'throw' => false, + 'report' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + 'report' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + 'report' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..8d94292 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,132 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => env('LOG_DEPRECATIONS_TRACE', false), + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Laravel + | utilizes the Monolog PHP logging library, which includes a variety + | of powerful log handlers and formatters that you're free to use. + | + | Available drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", "custom", "stack" + | + */ + + 'channels' => [ + + 'stack' => [ + 'driver' => 'stack', + 'channels' => explode(',', env('LOG_STACK', 'single')), + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => env('LOG_DAILY_DAYS', 14), + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'), + 'emoji' => env('LOG_SLACK_EMOJI', ':boom:'), + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER), + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..756305b --- /dev/null +++ b/config/mail.php @@ -0,0 +1,116 @@ + env('MAIL_MAILER', 'log'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers that can be used + | when delivering an email. You may specify which one you're using for + | your mailers below. You may also add additional mailers if needed. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "resend", "log", "array", + | "failover", "roundrobin" + | + */ + + 'mailers' => [ + + 'smtp' => [ + 'transport' => 'smtp', + 'scheme' => env('MAIL_SCHEME'), + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', '127.0.0.1'), + 'port' => env('MAIL_PORT', 2525), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'), + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'resend' => [ + 'transport' => 'resend', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all emails sent by your application to be sent from + | the same address. Here you may specify a name and address that is + | used globally for all emails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + +]; diff --git a/config/permission.php b/config/permission.php new file mode 100644 index 0000000..f39f6b5 --- /dev/null +++ b/config/permission.php @@ -0,0 +1,202 @@ + [ + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * Eloquent model should be used to retrieve your permissions. Of course, it + * is often just the "Permission" model but you may use whatever you like. + * + * The model you want to use as a Permission model needs to implement the + * `Spatie\Permission\Contracts\Permission` contract. + */ + + 'permission' => Spatie\Permission\Models\Permission::class, + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your roles. Of course, it + * is often just the "Role" model but you may use whatever you like. + * + * The model you want to use as a Role model needs to implement the + * `Spatie\Permission\Contracts\Role` contract. + */ + + 'role' => Spatie\Permission\Models\Role::class, + + ], + + 'table_names' => [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'roles' => 'roles', + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your permissions. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'permissions' => 'permissions', + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your models permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_permissions' => 'model_has_permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models roles. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_roles' => 'model_has_roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'role_has_permissions' => 'role_has_permissions', + ], + + 'column_names' => [ + /* + * Change this if you want to name the related pivots other than defaults + */ + 'role_pivot_key' => null, // default 'role_id', + 'permission_pivot_key' => null, // default 'permission_id', + + /* + * Change this if you want to name the related model primary key other than + * `model_id`. + * + * For example, this would be nice if your primary keys are all UUIDs. In + * that case, name this `model_uuid`. + */ + + 'model_morph_key' => 'model_id', + + /* + * Change this if you want to use the teams feature and your related model's + * foreign key is other than `team_id`. + */ + + 'team_foreign_key' => 'team_id', + ], + + /* + * When set to true, the method for checking permissions will be registered on the gate. + * Set this to false if you want to implement custom logic for checking permissions. + */ + + 'register_permission_check_method' => true, + + /* + * When set to true, Laravel\Octane\Events\OperationTerminated event listener will be registered + * this will refresh permissions on every TickTerminated, TaskTerminated and RequestTerminated + * NOTE: This should not be needed in most cases, but an Octane/Vapor combination benefited from it. + */ + 'register_octane_reset_listener' => false, + + /* + * Events will fire when a role or permission is assigned/unassigned: + * \Spatie\Permission\Events\RoleAttached + * \Spatie\Permission\Events\RoleDetached + * \Spatie\Permission\Events\PermissionAttached + * \Spatie\Permission\Events\PermissionDetached + * + * To enable, set to true, and then create listeners to watch these events. + */ + 'events_enabled' => false, + + /* + * Teams Feature. + * When set to true the package implements teams using the 'team_foreign_key'. + * If you want the migrations to register the 'team_foreign_key', you must + * set this to true before doing the migration. + * If you already did the migration then you must make a new migration to also + * add 'team_foreign_key' to 'roles', 'model_has_roles', and 'model_has_permissions' + * (view the latest version of this package's migration file) + */ + + 'teams' => false, + + /* + * The class to use to resolve the permissions team id + */ + 'team_resolver' => \Spatie\Permission\DefaultTeamResolver::class, + + /* + * Passport Client Credentials Grant + * When set to true the package will use Passports Client to check permissions + */ + + 'use_passport_client_credentials' => false, + + /* + * When set to true, the required permission names are added to exception messages. + * This could be considered an information leak in some contexts, so the default + * setting is false here for optimum safety. + */ + + 'display_permission_in_exception' => false, + + /* + * When set to true, the required role names are added to exception messages. + * This could be considered an information leak in some contexts, so the default + * setting is false here for optimum safety. + */ + + 'display_role_in_exception' => false, + + /* + * By default wildcard permission lookups are disabled. + * See documentation to understand supported syntax. + */ + + 'enable_wildcard_permission' => false, + + /* + * The class to use for interpreting wildcard permissions. + * If you need to modify delimiters, override the class and specify its name here. + */ + // 'wildcard_permission' => Spatie\Permission\WildcardPermission::class, + + /* Cache-specific settings */ + + 'cache' => [ + + /* + * By default all permissions are cached for 24 hours to speed up performance. + * When permissions or roles are updated the cache is flushed automatically. + */ + + 'expiration_time' => \DateInterval::createFromDateString('24 hours'), + + /* + * The cache key used to store all permissions. + */ + + 'key' => 'spatie.permission.cache', + + /* + * You may optionally indicate a specific cache driver to use for permission and + * role caching using any of the `store` drivers listed in the cache.php config + * file. Using 'default' here means to use the `default` set in cache.php. + */ + + 'store' => 'default', + ], +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..116bd8d --- /dev/null +++ b/config/queue.php @@ -0,0 +1,112 @@ + env('QUEUE_CONNECTION', 'database'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection options for every queue backend + | used by your application. An example configuration is provided for + | each backend supported by Laravel. You're also free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_QUEUE_CONNECTION'), + 'table' => env('DB_QUEUE_TABLE', 'jobs'), + 'queue' => env('DB_QUEUE', 'default'), + 'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90), + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), + 'queue' => env('BEANSTALKD_QUEUE', 'default'), + 'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90), + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_QUEUE_CONNECTION', 'default'), + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90), + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control how and where failed jobs are stored. Laravel ships with + | support for storing failed jobs in a simple file or in a database. + | + | Supported drivers: "database-uuids", "dynamodb", "file", "null" + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..27a3617 --- /dev/null +++ b/config/services.php @@ -0,0 +1,38 @@ + [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'resend' => [ + 'key' => env('RESEND_KEY'), + ], + + 'slack' => [ + 'notifications' => [ + 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), + 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), + ], + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..ba0aa60 --- /dev/null +++ b/config/session.php @@ -0,0 +1,217 @@ + env('SESSION_DRIVER', 'database'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to expire immediately when the browser is closed then you may + | indicate that via the expire_on_close configuration option. + | + */ + + 'lifetime' => (int) env('SESSION_LIFETIME', 120), + + 'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false), + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it's stored. All encryption is performed + | automatically by Laravel and you may use the session like normal. + | + */ + + 'encrypt' => env('SESSION_ENCRYPT', false), + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When utilizing the "file" session driver, the session files are placed + | on disk. The default storage location is defined here; however, you + | are free to provide another location where they should be stored. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table to + | be used to store sessions. Of course, a sensible default is defined + | for you; however, you're welcome to change this to another table. + | + */ + + 'table' => env('SESSION_TABLE', 'sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using one of the framework's cache driven session backends, you may + | define the cache store which should be used to store the session data + | between requests. This must match one of your defined cache stores. + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the session cookie that is created by + | the framework. Typically, you should not need to change this value + | since doing so does not grant a meaningful security improvement. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application, but you're free to change this when necessary. + | + */ + + 'path' => env('SESSION_PATH', '/'), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | This value determines the domain and subdomains the session cookie is + | available to. By default, the cookie will be available to the root + | domain and all subdomains. Typically, this shouldn't be changed. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. It's unlikely you should disable this option. + | + */ + + 'http_only' => env('SESSION_HTTP_ONLY', true), + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" to permit secure cross-site requests. + | + | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => env('SESSION_SAME_SITE', 'lax'), + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => env('SESSION_PARTITIONED_COOKIE', false), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,44 @@ + + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..5daa2b9 --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,45 @@ +id(); + $table->string('name'); + $table->string('public_key') + ->unique() + ->nullable(); + $table->string('email') + ->unique() + ->nullable(); + $table->timestamp('email_verified_at') + ->nullable(); + $table->string('password') + ->nullable(); + $table->rememberToken(); + $table->foreignId('current_team_id') + ->nullable(); + $table->string('profile_photo_path', 2048) + ->nullable(); + $table->boolean('is_lecturer') + ->default(false); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..4f42fe6 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,28 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('password_resets'); + } +}; diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..249da81 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..e828ad8 --- /dev/null +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/database/migrations/2020_05_21_300000_create_permission_tables.php b/database/migrations/2020_05_21_300000_create_permission_tables.php new file mode 100644 index 0000000..ce4d9d2 --- /dev/null +++ b/database/migrations/2020_05_21_300000_create_permission_tables.php @@ -0,0 +1,136 @@ +engine('InnoDB'); + $table->bigIncrements('id'); // permission id + $table->string('name'); // For MyISAM use string('name', 225); // (or 166 for InnoDB with Redundant/Compact row format) + $table->string('guard_name'); // For MyISAM use string('guard_name', 25); + $table->timestamps(); + + $table->unique(['name', 'guard_name']); + }); + + Schema::create($tableNames['roles'], static function (Blueprint $table) use ($teams, $columnNames) { + // $table->engine('InnoDB'); + $table->bigIncrements('id'); // role id + if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing + $table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable(); + $table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index'); + } + $table->string('name'); // For MyISAM use string('name', 225); // (or 166 for InnoDB with Redundant/Compact row format) + $table->string('guard_name'); // For MyISAM use string('guard_name', 25); + $table->timestamps(); + if ($teams || config('permission.testing')) { + $table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']); + } else { + $table->unique(['name', 'guard_name']); + } + }); + + Schema::create($tableNames['model_has_permissions'], static function (Blueprint $table) use ($tableNames, $columnNames, $pivotPermission, $teams) { + $table->unsignedBigInteger($pivotPermission); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index'); + + $table->foreign($pivotPermission) + ->references('id') // permission id + ->on($tableNames['permissions']) + ->onDelete('cascade'); + if ($teams) { + $table->unsignedBigInteger($columnNames['team_foreign_key']); + $table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index'); + + $table->primary([$columnNames['team_foreign_key'], $pivotPermission, $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary'); + } else { + $table->primary([$pivotPermission, $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary'); + } + + }); + + Schema::create($tableNames['model_has_roles'], static function (Blueprint $table) use ($tableNames, $columnNames, $pivotRole, $teams) { + $table->unsignedBigInteger($pivotRole); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index'); + + $table->foreign($pivotRole) + ->references('id') // role id + ->on($tableNames['roles']) + ->onDelete('cascade'); + if ($teams) { + $table->unsignedBigInteger($columnNames['team_foreign_key']); + $table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index'); + + $table->primary([$columnNames['team_foreign_key'], $pivotRole, $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary'); + } else { + $table->primary([$pivotRole, $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary'); + } + }); + + Schema::create($tableNames['role_has_permissions'], static function (Blueprint $table) use ($tableNames, $pivotRole, $pivotPermission) { + $table->unsignedBigInteger($pivotPermission); + $table->unsignedBigInteger($pivotRole); + + $table->foreign($pivotPermission) + ->references('id') // permission id + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->foreign($pivotRole) + ->references('id') // role id + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary([$pivotPermission, $pivotRole], 'role_has_permissions_permission_id_role_id_primary'); + }); + + app('cache') + ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null) + ->forget(config('permission.cache.key')); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + $tableNames = config('permission.table_names'); + + if (empty($tableNames)) { + throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.'); + } + + Schema::drop($tableNames['role_has_permissions']); + Schema::drop($tableNames['model_has_roles']); + Schema::drop($tableNames['model_has_permissions']); + Schema::drop($tableNames['roles']); + Schema::drop($tableNames['permissions']); + } +}; diff --git a/database/migrations/2022_12_01_145948_create_countries_table.php b/database/migrations/2022_12_01_145948_create_countries_table.php new file mode 100644 index 0000000..5a06384 --- /dev/null +++ b/database/migrations/2022_12_01_145948_create_countries_table.php @@ -0,0 +1,31 @@ +id(); + $table->string('name'); + $table->string('code'); + $table->json('language_codes') + ->default('[]'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('countries'); + } +}; diff --git a/database/migrations/2022_12_01_145949_create_cities_table.php b/database/migrations/2022_12_01_145949_create_cities_table.php new file mode 100644 index 0000000..bef706a --- /dev/null +++ b/database/migrations/2022_12_01_145949_create_cities_table.php @@ -0,0 +1,39 @@ +id(); + $table->foreignId('country_id') + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + $table->string('name') + ->unique(); + $table->string('slug') + ->unique(); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cities'); + } +}; diff --git a/database/migrations/2022_12_01_145950_create_lecturers_table.php b/database/migrations/2022_12_01_145950_create_lecturers_table.php new file mode 100644 index 0000000..2c1650a --- /dev/null +++ b/database/migrations/2022_12_01_145950_create_lecturers_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('name')->unique(); + $table->string('slug')->unique(); + $table->boolean('active')->default(true); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('lecturers'); + } +}; diff --git a/database/migrations/2022_12_01_145951_create_participants_table.php b/database/migrations/2022_12_01_145951_create_participants_table.php new file mode 100644 index 0000000..9e9b4af --- /dev/null +++ b/database/migrations/2022_12_01_145951_create_participants_table.php @@ -0,0 +1,33 @@ +id(); + $table->string('first_name'); + $table->string('last_name'); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('participants'); + } +}; diff --git a/database/migrations/2022_12_01_145952_create_categories_table.php b/database/migrations/2022_12_01_145952_create_categories_table.php new file mode 100644 index 0000000..7050ef1 --- /dev/null +++ b/database/migrations/2022_12_01_145952_create_categories_table.php @@ -0,0 +1,33 @@ +id(); + $table->string('name'); + $table->string('slug')->unique(); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('categories'); + } +}; diff --git a/database/migrations/2022_12_01_145953_create_courses_table.php b/database/migrations/2022_12_01_145953_create_courses_table.php new file mode 100644 index 0000000..aee6a89 --- /dev/null +++ b/database/migrations/2022_12_01_145953_create_courses_table.php @@ -0,0 +1,33 @@ +id(); + $table->foreignId('lecturer_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->string('name'); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('courses'); + } +}; diff --git a/database/migrations/2022_12_01_145954_create_venues_table.php b/database/migrations/2022_12_01_145954_create_venues_table.php new file mode 100644 index 0000000..e581665 --- /dev/null +++ b/database/migrations/2022_12_01_145954_create_venues_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignId('city_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->string('name')->unique(); + $table->string('slug')->unique(); + $table->string('street'); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('venues'); + } +}; diff --git a/database/migrations/2022_12_01_145955_create_course_events_table.php b/database/migrations/2022_12_01_145955_create_course_events_table.php new file mode 100644 index 0000000..29a33b4 --- /dev/null +++ b/database/migrations/2022_12_01_145955_create_course_events_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignId('course_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->foreignId('venue_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->dateTime('from'); + $table->dateTime('to'); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('course_events'); + } +}; diff --git a/database/migrations/2022_12_01_145956_create_registrations_table.php b/database/migrations/2022_12_01_145956_create_registrations_table.php new file mode 100644 index 0000000..6ac3fd5 --- /dev/null +++ b/database/migrations/2022_12_01_145956_create_registrations_table.php @@ -0,0 +1,34 @@ +id(); + $table->foreignId('course_event_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate()->primary(); + $table->foreignId('participant_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate()->primary(); + $table->boolean('active')->default(true); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('registrations'); + } +}; diff --git a/database/migrations/2022_12_01_145957_create_category_course_table.php b/database/migrations/2022_12_01_145957_create_category_course_table.php new file mode 100644 index 0000000..a35a1d1 --- /dev/null +++ b/database/migrations/2022_12_01_145957_create_category_course_table.php @@ -0,0 +1,31 @@ +foreignId('category_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->foreignId('course_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('category_course'); + } +}; diff --git a/database/migrations/2022_12_01_180529_create_login_keys_table.php b/database/migrations/2022_12_01_180529_create_login_keys_table.php new file mode 100644 index 0000000..7f9e753 --- /dev/null +++ b/database/migrations/2022_12_01_180529_create_login_keys_table.php @@ -0,0 +1,30 @@ +id(); + $table->string('k1'); + $table->foreignId('user_id') + ->index(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('login_keys'); + } +}; diff --git a/database/migrations/2022_12_01_210526_add_geo_fields_to_cities_table.php b/database/migrations/2022_12_01_210526_add_geo_fields_to_cities_table.php new file mode 100644 index 0000000..921803e --- /dev/null +++ b/database/migrations/2022_12_01_210526_add_geo_fields_to_cities_table.php @@ -0,0 +1,29 @@ +double('longitude'); + $table->double('latitude'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('cities', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2022_12_01_214707_create_media_table.php b/database/migrations/2022_12_01_214707_create_media_table.php new file mode 100644 index 0000000..93a1b42 --- /dev/null +++ b/database/migrations/2022_12_01_214707_create_media_table.php @@ -0,0 +1,32 @@ +bigIncrements('id'); + + $table->morphs('model'); + $table->uuid('uuid')->nullable()->unique(); + $table->string('collection_name'); + $table->string('name'); + $table->string('file_name'); + $table->string('mime_type')->nullable(); + $table->string('disk'); + $table->string('conversions_disk')->nullable(); + $table->unsignedBigInteger('size'); + $table->json('manipulations'); + $table->json('custom_properties'); + $table->json('generated_conversions'); + $table->json('responsive_images'); + $table->unsignedInteger('order_column')->nullable()->index(); + + $table->nullableTimestamps(); + }); + } +}; diff --git a/database/migrations/2022_12_02_133043_add_timezone_field_to_users_table.php b/database/migrations/2022_12_02_133043_add_timezone_field_to_users_table.php new file mode 100644 index 0000000..725db3f --- /dev/null +++ b/database/migrations/2022_12_02_133043_add_timezone_field_to_users_table.php @@ -0,0 +1,29 @@ +string('timezone') + ->default('Europe/Berlin'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2022_12_02_162000_create_trix_tables.php b/database/migrations/2022_12_02_162000_create_trix_tables.php new file mode 100644 index 0000000..780bf3f --- /dev/null +++ b/database/migrations/2022_12_02_162000_create_trix_tables.php @@ -0,0 +1,44 @@ +increments('id'); + $table->string('draft_id') + ->index(); + $table->string('attachment'); + $table->string('disk'); + $table->timestamps(); + }); + + Schema::create('nova_trix_attachments', function (Blueprint $table) { + $table->increments('id'); + $table->string('attachable_type'); + $table->unsignedInteger('attachable_id'); + $table->string('attachment'); + $table->string('disk'); + $table->string('url') + ->index(); + $table->timestamps(); + + $table->index(['attachable_type', 'attachable_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2022_12_02_162124_add_description_field_to_lecturers_table.php b/database/migrations/2022_12_02_162124_add_description_field_to_lecturers_table.php new file mode 100644 index 0000000..b1be83a --- /dev/null +++ b/database/migrations/2022_12_02_162124_add_description_field_to_lecturers_table.php @@ -0,0 +1,30 @@ +longText('description') + ->fulltext() + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('lecturers', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2022_12_03_180232_add_description_field_to_courses_table.php b/database/migrations/2022_12_03_180232_add_description_field_to_courses_table.php new file mode 100644 index 0000000..c27c1fc --- /dev/null +++ b/database/migrations/2022_12_03_180232_add_description_field_to_courses_table.php @@ -0,0 +1,30 @@ +longText('description') + ->fulltext() + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('courses', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2022_12_03_183452_add_link_field_to_course_events_table.php b/database/migrations/2022_12_03_183452_add_link_field_to_course_events_table.php new file mode 100644 index 0000000..4643838 --- /dev/null +++ b/database/migrations/2022_12_03_183452_add_link_field_to_course_events_table.php @@ -0,0 +1,28 @@ +string('link'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('course_events', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2022_12_04_154911_create_podcasts_table.php b/database/migrations/2022_12_04_154911_create_podcasts_table.php new file mode 100644 index 0000000..bb98f1a --- /dev/null +++ b/database/migrations/2022_12_04_154911_create_podcasts_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('guid') + ->unique(); + $table->boolean('locked') + ->default(true); + $table->string('title'); + $table->string('link'); + $table->string('language_code'); + $table->json('data') + ->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('podcasts'); + } +}; diff --git a/database/migrations/2022_12_04_154912_create_episodes_table.php b/database/migrations/2022_12_04_154912_create_episodes_table.php new file mode 100644 index 0000000..51df01a --- /dev/null +++ b/database/migrations/2022_12_04_154912_create_episodes_table.php @@ -0,0 +1,38 @@ +id(); + $table->string('guid') + ->unique(); + $table->foreignId('podcast_id') + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + $table->json('data'); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('episodes'); + } +}; diff --git a/database/migrations/2022_12_04_170737_create_tag_tables.php b/database/migrations/2022_12_04_170737_create_tag_tables.php new file mode 100644 index 0000000..1f6e1c7 --- /dev/null +++ b/database/migrations/2022_12_04_170737_create_tag_tables.php @@ -0,0 +1,37 @@ +id(); + + $table->json('name'); + $table->json('slug'); + $table->string('type') + ->nullable(); + $table->integer('order_column') + ->nullable(); + + $table->string('icon') + ->default('tag'); + + $table->timestamps(); + }); + + Schema::create('taggables', function (Blueprint $table) { + $table->foreignId('tag_id') + ->constrained() + ->cascadeOnDelete(); + + $table->morphs('taggable'); + + $table->unique(['tag_id', 'taggable_id', 'taggable_type']); + }); + } +}; diff --git a/database/migrations/2022_12_05_160932_create_libraries_table.php b/database/migrations/2022_12_05_160932_create_libraries_table.php new file mode 100644 index 0000000..752e1af --- /dev/null +++ b/database/migrations/2022_12_05_160932_create_libraries_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name')->unique(); + $table->boolean('is_public') + ->default(true); + $table->json('language_codes') + ->default('[]'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('libraries'); + } +}; diff --git a/database/migrations/2022_12_05_160933_create_library_items_table.php b/database/migrations/2022_12_05_160933_create_library_items_table.php new file mode 100644 index 0000000..78e1b41 --- /dev/null +++ b/database/migrations/2022_12_05_160933_create_library_items_table.php @@ -0,0 +1,46 @@ +id(); + $table->foreignId('lecturer_id') + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + $table->foreignId('episode_id') + ->nullable() + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + $table->unsignedInteger('order_column'); + $table->string('name'); + $table->string('type'); + $table->string('language_code'); + $table->longText('value') + ->nullable(); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('library_items'); + } +}; diff --git a/database/migrations/2022_12_05_175957_create_library_library_item_table.php b/database/migrations/2022_12_05_175957_create_library_library_item_table.php new file mode 100644 index 0000000..40891f5 --- /dev/null +++ b/database/migrations/2022_12_05_175957_create_library_library_item_table.php @@ -0,0 +1,37 @@ +foreignId('library_id') + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + $table->foreignId('library_item_id') + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('library_library_item'); + } +}; diff --git a/database/migrations/2022_12_06_222651_create_book_cases_table.php b/database/migrations/2022_12_06_222651_create_book_cases_table.php new file mode 100644 index 0000000..b20322f --- /dev/null +++ b/database/migrations/2022_12_06_222651_create_book_cases_table.php @@ -0,0 +1,48 @@ +id(); + $table->string('title'); + $table->double('latitude'); + $table->double('longitude'); + $table->text('address') + ->nullable(); + $table->string('type'); + $table->string('open') + ->nullable(); + $table->text('comment') + ->nullable(); + $table->text('contact') + ->nullable(); + $table->text('bcz') + ->nullable(); + $table->boolean('digital'); + $table->string('icontype'); + $table->boolean('deactivated'); + $table->string('deactreason'); + $table->string('entrytype'); + $table->text('homepage') + ->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('book_cases'); + } +}; diff --git a/database/migrations/2022_12_07_095709_create_orange_pills_table.php b/database/migrations/2022_12_07_095709_create_orange_pills_table.php new file mode 100644 index 0000000..13a528b --- /dev/null +++ b/database/migrations/2022_12_07_095709_create_orange_pills_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignId('user_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->foreignId('book_case_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->dateTime('date'); + $table->unsignedInteger('amount'); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('orange_pills'); + } +}; diff --git a/database/migrations/2022_12_12_155928_create_meetups_table.php b/database/migrations/2022_12_12_155928_create_meetups_table.php new file mode 100644 index 0000000..ed8a7dc --- /dev/null +++ b/database/migrations/2022_12_12_155928_create_meetups_table.php @@ -0,0 +1,34 @@ +id(); + $table->foreignId('city_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->string('name')->unique(); + $table->string('link'); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('meetups'); + } +}; diff --git a/database/migrations/2022_12_12_155929_create_meetup_events_table.php b/database/migrations/2022_12_12_155929_create_meetup_events_table.php new file mode 100644 index 0000000..dc9a41e --- /dev/null +++ b/database/migrations/2022_12_12_155929_create_meetup_events_table.php @@ -0,0 +1,42 @@ +id(); + $table->foreignId('meetup_id') + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + $table->dateTime('start'); + $table->string('location') + ->nullable(); + $table->text('description') + ->nullable(); + $table->string('link') + ->nullable(); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('meetup_events'); + } +}; diff --git a/database/migrations/2022_12_12_171115_create_bitcoin_events_table.php b/database/migrations/2022_12_12_171115_create_bitcoin_events_table.php new file mode 100644 index 0000000..f4e56d1 --- /dev/null +++ b/database/migrations/2022_12_12_171115_create_bitcoin_events_table.php @@ -0,0 +1,42 @@ +id(); + $table->foreignId('venue_id') + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + $table->dateTime('from'); + $table->dateTime('to'); + $table->string('title'); + $table->text('description') + ->nullable(); + $table->string('link') + ->nullable(); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('bitcoin_events'); + } +}; diff --git a/database/migrations/2022_12_14_123437_create_created_by_fields_on_all_tables.php b/database/migrations/2022_12_14_123437_create_created_by_fields_on_all_tables.php new file mode 100644 index 0000000..2f75b7d --- /dev/null +++ b/database/migrations/2022_12_14_123437_create_created_by_fields_on_all_tables.php @@ -0,0 +1,101 @@ +foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('venues', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('lecturers', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('meetups', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('meetup_events', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('bitcoin_events', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('courses', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('course_events', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('libraries', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('library_items', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('podcasts', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('episodes', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + Schema::table('book_cases', function (Blueprint $table) { + $table->foreignId('created_by') + ->constrained('users') + ->cascadeOnDelete() + ->cascadeOnUpdate(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2022_12_15_144111_add_show_worldwide_field_to_bitcoin_events_table.php b/database/migrations/2022_12_15_144111_add_show_worldwide_field_to_bitcoin_events_table.php new file mode 100644 index 0000000..7718d4a --- /dev/null +++ b/database/migrations/2022_12_15_144111_add_show_worldwide_field_to_bitcoin_events_table.php @@ -0,0 +1,29 @@ +boolean('show_worldwide') + ->default(false); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('bitcoin_events', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2022_12_15_145559_create_statuses_table.php b/database/migrations/2022_12_15_145559_create_statuses_table.php new file mode 100644 index 0000000..7553a33 --- /dev/null +++ b/database/migrations/2022_12_15_145559_create_statuses_table.php @@ -0,0 +1,24 @@ +increments('id'); + $table->string('name'); + $table->text('reason')->nullable(); + $table->morphs('model'); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('statuses'); + } +}; diff --git a/database/migrations/2022_12_15_152415_create_seo_table.php b/database/migrations/2022_12_15_152415_create_seo_table.php new file mode 100644 index 0000000..08d8c17 --- /dev/null +++ b/database/migrations/2022_12_15_152415_create_seo_table.php @@ -0,0 +1,30 @@ +id(); + + $table->morphs('model'); + + $table->longText('description')->nullable(); + $table->string('title')->nullable(); + $table->string('image')->nullable(); + $table->string('author')->nullable(); + $table->string('robots')->nullable(); + + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('seo'); + } +}; diff --git a/database/migrations/2022_12_17_181802_add_english_name_to_countries_table.php b/database/migrations/2022_12_17_181802_add_english_name_to_countries_table.php new file mode 100644 index 0000000..807bcc8 --- /dev/null +++ b/database/migrations/2022_12_17_181802_add_english_name_to_countries_table.php @@ -0,0 +1,29 @@ +string('english_name') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('countries', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2022_12_17_183136_add_coordinates_to_countries_table.php b/database/migrations/2022_12_17_183136_add_coordinates_to_countries_table.php new file mode 100644 index 0000000..8705b44 --- /dev/null +++ b/database/migrations/2022_12_17_183136_add_coordinates_to_countries_table.php @@ -0,0 +1,31 @@ +double('longitude') + ->nullable(); + $table->double('latitude') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('countries', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2022_12_18_122532_add_current_language_to_users_table.php b/database/migrations/2022_12_18_122532_add_current_language_to_users_table.php new file mode 100644 index 0000000..2367c03 --- /dev/null +++ b/database/migrations/2022_12_18_122532_add_current_language_to_users_table.php @@ -0,0 +1,29 @@ +string('current_language') + ->default('de'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2022_12_18_201051_add_indexes_to_tables.php b/database/migrations/2022_12_18_201051_add_indexes_to_tables.php new file mode 100644 index 0000000..14a6984 --- /dev/null +++ b/database/migrations/2022_12_18_201051_add_indexes_to_tables.php @@ -0,0 +1,31 @@ +index([ + 'name', + 'code', + 'longitude', + 'latitude', + ]); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2023_01_14_185805_add_reputation_field_on_user_table.php b/database/migrations/2023_01_14_185805_add_reputation_field_on_user_table.php new file mode 100644 index 0000000..ce6c78c --- /dev/null +++ b/database/migrations/2023_01_14_185805_add_reputation_field_on_user_table.php @@ -0,0 +1,28 @@ +unsignedInteger('reputation')->default(0)->after('remember_token'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('reputation'); + }); + } +}; diff --git a/database/migrations/2023_01_14_185805_create_gamify_tables.php b/database/migrations/2023_01_14_185805_create_gamify_tables.php new file mode 100644 index 0000000..10d0458 --- /dev/null +++ b/database/migrations/2023_01_14_185805_create_gamify_tables.php @@ -0,0 +1,54 @@ +increments('id'); + $table->string('name'); + $table->mediumInteger('point', false)->default(0); + $table->integer('subject_id')->nullable(); + $table->string('subject_type')->nullable(); + $table->unsignedInteger('payee_id')->nullable(); + $table->text('meta')->nullable(); + $table->timestamps(); + }); + + // badges table + Schema::create('badges', function (Blueprint $table) { + $table->increments('id'); + $table->string('name'); + $table->string('description')->nullable(); + $table->string('icon')->nullable(); + $table->tinyInteger('level')->default(config('gamify.badge_default_level', 1)); + $table->timestamps(); + }); + + // user_badges pivot + Schema::create('user_badges', function (Blueprint $table) { + $table->primary(['user_id', 'badge_id']); + $table->unsignedInteger('user_id'); + $table->unsignedInteger('badge_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('user_badges'); + Schema::dropIfExists('badges'); + Schema::dropIfExists('reputations'); + } +}; diff --git a/database/migrations/2023_01_14_191356_add_slug_column_to_meetups_table.php b/database/migrations/2023_01_14_191356_add_slug_column_to_meetups_table.php new file mode 100644 index 0000000..d7ec061 --- /dev/null +++ b/database/migrations/2023_01_14_191356_add_slug_column_to_meetups_table.php @@ -0,0 +1,30 @@ +string('slug') + ->nullable() + ->after('id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('meetups', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_15_133129_add_landing_page_fields_to_lecturers_table.php b/database/migrations/2023_01_15_133129_add_landing_page_fields_to_lecturers_table.php new file mode 100644 index 0000000..9f55850 --- /dev/null +++ b/database/migrations/2023_01_15_133129_add_landing_page_fields_to_lecturers_table.php @@ -0,0 +1,31 @@ +text('subtitle') + ->nullable(); + $table->text('intro') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('lecturers', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_15_142052_add_landing_page_fields_to_meetups_table.php b/database/migrations/2023_01_15_142052_add_landing_page_fields_to_meetups_table.php new file mode 100644 index 0000000..c62d0b8 --- /dev/null +++ b/database/migrations/2023_01_15_142052_add_landing_page_fields_to_meetups_table.php @@ -0,0 +1,29 @@ +text('intro') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('meetups', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_15_191946_create_twitter_accounts_table.php b/database/migrations/2023_01_15_191946_create_twitter_accounts_table.php new file mode 100644 index 0000000..fada4a7 --- /dev/null +++ b/database/migrations/2023_01_15_191946_create_twitter_accounts_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('twitter_id'); + $table->string('nickname'); + $table->string('token'); + $table->unsignedInteger('expires_in'); + $table->json('data'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('twitter_accounts'); + } +}; diff --git a/database/migrations/2023_01_15_203928_add_refresh_token_field_to_twitter_accounts_table.php b/database/migrations/2023_01_15_203928_add_refresh_token_field_to_twitter_accounts_table.php new file mode 100644 index 0000000..5830958 --- /dev/null +++ b/database/migrations/2023_01_15_203928_add_refresh_token_field_to_twitter_accounts_table.php @@ -0,0 +1,32 @@ +text('token') + ->nullable() + ->change(); + $table->text('refresh_token') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('twitter_accounts', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_16_143622_add_links_to_meetups_table.php b/database/migrations/2023_01_16_143622_add_links_to_meetups_table.php new file mode 100644 index 0000000..3ec3122 --- /dev/null +++ b/database/migrations/2023_01_16_143622_add_links_to_meetups_table.php @@ -0,0 +1,32 @@ +renameColumn('link', 'telegram_link'); + $table->string('webpage') + ->nullable(); + $table->string('twitter_username') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('meetups', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_16_144114_change_telegram_link_on_meetups_table.php b/database/migrations/2023_01_16_144114_change_telegram_link_on_meetups_table.php new file mode 100644 index 0000000..007f3bc --- /dev/null +++ b/database/migrations/2023_01_16_144114_change_telegram_link_on_meetups_table.php @@ -0,0 +1,28 @@ +string('telegram_link') + ->nullable() + ->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2023_01_16_175457_add_github_data_field_meetups_table.php b/database/migrations/2023_01_16_175457_add_github_data_field_meetups_table.php new file mode 100644 index 0000000..4c4d148 --- /dev/null +++ b/database/migrations/2023_01_16_175457_add_github_data_field_meetups_table.php @@ -0,0 +1,27 @@ +json('github_data') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2023_01_18_142300_add_ln_addresses_to_users_table.php b/database/migrations/2023_01_18_142300_add_ln_addresses_to_users_table.php new file mode 100644 index 0000000..aa70bd9 --- /dev/null +++ b/database/migrations/2023_01_18_142300_add_ln_addresses_to_users_table.php @@ -0,0 +1,33 @@ +string('lightning_address') + ->nullable(); + $table->text('lnurl') + ->nullable(); + $table->string('node_id') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_18_165507_add_social_links_to_lecturers_table.php b/database/migrations/2023_01_18_165507_add_social_links_to_lecturers_table.php new file mode 100644 index 0000000..240ab68 --- /dev/null +++ b/database/migrations/2023_01_18_165507_add_social_links_to_lecturers_table.php @@ -0,0 +1,31 @@ +string('twitter_username') + ->nullable(); + $table->string('website') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('lecturers', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_18_172630_update_ln_address_on_users_table.php b/database/migrations/2023_01_18_172630_update_ln_address_on_users_table.php new file mode 100644 index 0000000..e2b3abc --- /dev/null +++ b/database/migrations/2023_01_18_172630_update_ln_address_on_users_table.php @@ -0,0 +1,28 @@ +text('lightning_address') + ->nullable() + ->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2023_01_19_133503_add_parent_id_field_to_libraries_table.php b/database/migrations/2023_01_19_133503_add_parent_id_field_to_libraries_table.php new file mode 100644 index 0000000..52b9ef2 --- /dev/null +++ b/database/migrations/2023_01_19_133503_add_parent_id_field_to_libraries_table.php @@ -0,0 +1,30 @@ +unsignedBigInteger('parent_id') + ->nullable() + ->after('id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('libraries', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_20_121955_add_slug_field_to_library_items_table.php b/database/migrations/2023_01_20_121955_add_slug_field_to_library_items_table.php new file mode 100644 index 0000000..759ecc6 --- /dev/null +++ b/database/migrations/2023_01_20_121955_add_slug_field_to_library_items_table.php @@ -0,0 +1,31 @@ +string('slug') + ->unique() + ->nullable() + ->after('id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('library_items', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_20_125736_add_meta_fields_to_library_items_table.php b/database/migrations/2023_01_20_125736_add_meta_fields_to_library_items_table.php new file mode 100644 index 0000000..93fd1a0 --- /dev/null +++ b/database/migrations/2023_01_20_125736_add_meta_fields_to_library_items_table.php @@ -0,0 +1,35 @@ +text('subtitle') + ->nullable(); + $table->text('excerpt') + ->nullable(); + $table->string('main_image_caption') + ->nullable(); + $table->string('read_time') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('library_items', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_20_170112_add_matrix_group_field_to_meetups_table.php b/database/migrations/2023_01_20_170112_add_matrix_group_field_to_meetups_table.php new file mode 100644 index 0000000..b3925d1 --- /dev/null +++ b/database/migrations/2023_01_20_170112_add_matrix_group_field_to_meetups_table.php @@ -0,0 +1,29 @@ +string('matrix_group') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('meetups', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_24_135922_add_ln_addresses_to_lecturers_table.php b/database/migrations/2023_01_24_135922_add_ln_addresses_to_lecturers_table.php new file mode 100644 index 0000000..83557c3 --- /dev/null +++ b/database/migrations/2023_01_24_135922_add_ln_addresses_to_lecturers_table.php @@ -0,0 +1,33 @@ +text('lightning_address') + ->nullable(); + $table->text('lnurl') + ->nullable(); + $table->string('node_id') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('lecturers', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_28_115414_add_osm_fields_to_cities_table.php b/database/migrations/2023_01_28_115414_add_osm_fields_to_cities_table.php new file mode 100644 index 0000000..0c539d1 --- /dev/null +++ b/database/migrations/2023_01_28_115414_add_osm_fields_to_cities_table.php @@ -0,0 +1,35 @@ +json('osm_relation') + ->nullable(); + $table->json('simplified_geojson') + ->nullable(); + $table->unsignedBigInteger('population') + ->nullable(); + $table->string('population_date') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('cities', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_03_151808_create_blind_indexes_table.php b/database/migrations/2023_02_03_151808_create_blind_indexes_table.php new file mode 100644 index 0000000..23d65ad --- /dev/null +++ b/database/migrations/2023_02_03_151808_create_blind_indexes_table.php @@ -0,0 +1,20 @@ +morphs('indexable'); + $table->string('name'); + $table->string('value'); + + $table->index(['name', 'value']); + $table->unique(['indexable_type', 'indexable_id', 'name']); + }); + } +}; diff --git a/database/migrations/2023_02_03_152818_prepare_cyphersweet_on_models.php b/database/migrations/2023_02_03_152818_prepare_cyphersweet_on_models.php new file mode 100644 index 0000000..2aa868b --- /dev/null +++ b/database/migrations/2023_02_03_152818_prepare_cyphersweet_on_models.php @@ -0,0 +1,30 @@ +text('public_key')->nullable()->change(); + $table->text('email')->nullable()->change(); + $table->text('node_id')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_06_162858_add_attend_fields_to_meetup_events_table.php b/database/migrations/2023_02_06_162858_add_attend_fields_to_meetup_events_table.php new file mode 100644 index 0000000..e808618 --- /dev/null +++ b/database/migrations/2023_02_06_162858_add_attend_fields_to_meetup_events_table.php @@ -0,0 +1,31 @@ +json('attendees') + ->nullable(); + $table->json('might_attendees') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('meetup_events', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_08_132434_add_community_field_to_meetups_table.php b/database/migrations/2023_02_08_132434_add_community_field_to_meetups_table.php new file mode 100644 index 0000000..f62c1ba --- /dev/null +++ b/database/migrations/2023_02_08_132434_add_community_field_to_meetups_table.php @@ -0,0 +1,29 @@ +string('community') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('meetups', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_09_205710_add_approved_field_to_library_items_table.php b/database/migrations/2023_02_09_205710_add_approved_field_to_library_items_table.php new file mode 100644 index 0000000..85b4156 --- /dev/null +++ b/database/migrations/2023_02_09_205710_add_approved_field_to_library_items_table.php @@ -0,0 +1,29 @@ +boolean('approved') + ->default(true); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('library_items', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_11_151546_add_news_flag_to_library_items_table.php b/database/migrations/2023_02_11_151546_add_news_flag_to_library_items_table.php new file mode 100644 index 0000000..7d3f775 --- /dev/null +++ b/database/migrations/2023_02_11_151546_add_news_flag_to_library_items_table.php @@ -0,0 +1,29 @@ +boolean('news') + ->default(false); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('library_items', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_11_154505_add_tweet_field_to_library_items_table.php b/database/migrations/2023_02_11_154505_add_tweet_field_to_library_items_table.php new file mode 100644 index 0000000..98f49ad --- /dev/null +++ b/database/migrations/2023_02_11_154505_add_tweet_field_to_library_items_table.php @@ -0,0 +1,29 @@ +string('tweet') + ->default(false); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('library_items', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_11_155505_change_tweet_field_to_library_items_table.php b/database/migrations/2023_02_11_155505_change_tweet_field_to_library_items_table.php new file mode 100644 index 0000000..d236c99 --- /dev/null +++ b/database/migrations/2023_02_11_155505_change_tweet_field_to_library_items_table.php @@ -0,0 +1,32 @@ +text('nostr') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2023_02_16_141618_add_nostr_field_to_lecturers_table.php b/database/migrations/2023_02_16_141618_add_nostr_field_to_lecturers_table.php new file mode 100644 index 0000000..21f297c --- /dev/null +++ b/database/migrations/2023_02_16_141618_add_nostr_field_to_lecturers_table.php @@ -0,0 +1,29 @@ +string('nostr') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('lecturers', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_16_183823_add_comment_field_to_orange_pills_table.php b/database/migrations/2023_02_16_183823_add_comment_field_to_orange_pills_table.php new file mode 100644 index 0000000..0101312 --- /dev/null +++ b/database/migrations/2023_02_16_183823_add_comment_field_to_orange_pills_table.php @@ -0,0 +1,29 @@ +text('comment') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('orange_pills', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_19_000000_rename_password_resets_table.php b/database/migrations/2023_02_19_000000_rename_password_resets_table.php new file mode 100644 index 0000000..c3f9489 --- /dev/null +++ b/database/migrations/2023_02_19_000000_rename_password_resets_table.php @@ -0,0 +1,23 @@ +text('nostr') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('library_items', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_24_090531_add_nostr_fields_to_tables.php b/database/migrations/2023_02_24_090531_add_nostr_fields_to_tables.php new file mode 100644 index 0000000..3945d26 --- /dev/null +++ b/database/migrations/2023_02_24_090531_add_nostr_fields_to_tables.php @@ -0,0 +1,51 @@ +renameColumn('nostr', 'nostr_status'); + }); + Schema::table('bitcoin_events', function (Blueprint $table) { + $table->text('nostr_status') + ->nullable(); + }); + Schema::table('course_events', function (Blueprint $table) { + $table->text('nostr_status') + ->nullable(); + }); + Schema::table('courses', function (Blueprint $table) { + $table->text('nostr_status') + ->nullable(); + }); + Schema::table('meetup_events', function (Blueprint $table) { + $table->text('nostr_status') + ->nullable(); + }); + Schema::table('meetups', function (Blueprint $table) { + $table->text('nostr_status') + ->nullable(); + }); + Schema::table('orange_pills', function (Blueprint $table) { + $table->text('nostr_status') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('tables', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_24_104336_add_nostr_fields_to_users_table.php b/database/migrations/2023_02_24_104336_add_nostr_fields_to_users_table.php new file mode 100644 index 0000000..b32549c --- /dev/null +++ b/database/migrations/2023_02_24_104336_add_nostr_fields_to_users_table.php @@ -0,0 +1,28 @@ +string('nostr') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_25_180846_add_change_field_to_users_table.php b/database/migrations/2023_02_25_180846_add_change_field_to_users_table.php new file mode 100644 index 0000000..7e07250 --- /dev/null +++ b/database/migrations/2023_02_25_180846_add_change_field_to_users_table.php @@ -0,0 +1,28 @@ +string('change') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_02_25_181435_add_change_time_field_to_users_table.php b/database/migrations/2023_02_25_181435_add_change_time_field_to_users_table.php new file mode 100644 index 0000000..e310cf3 --- /dev/null +++ b/database/migrations/2023_02_25_181435_add_change_time_field_to_users_table.php @@ -0,0 +1,28 @@ +dateTime('change_time') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_03_10_190300_create_project_proposals_table.php b/database/migrations/2023_03_10_190300_create_project_proposals_table.php new file mode 100644 index 0000000..8819e92 --- /dev/null +++ b/database/migrations/2023_03_10_190300_create_project_proposals_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignId('user_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->string('name')->unique(); + $table->unsignedInteger('support_in_sats'); + $table->text('description'); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('project_proposals'); + } +}; diff --git a/database/migrations/2023_03_10_190301_create_votes_table.php b/database/migrations/2023_03_10_190301_create_votes_table.php new file mode 100644 index 0000000..d7fa138 --- /dev/null +++ b/database/migrations/2023_03_10_190301_create_votes_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignId('user_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->foreignId('project_proposal_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->unsignedInteger('value'); + $table->text('reason')->nullable(); + $table->timestamps(); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('votes'); + } +}; diff --git a/database/migrations/2023_03_10_201640_add_created_by_field_to_project_proposals_and_votes_table.php b/database/migrations/2023_03_10_201640_add_created_by_field_to_project_proposals_and_votes_table.php new file mode 100644 index 0000000..631446a --- /dev/null +++ b/database/migrations/2023_03_10_201640_add_created_by_field_to_project_proposals_and_votes_table.php @@ -0,0 +1,36 @@ +foreignId('created_by') + ->nullable() + ->constrained('users') + ->onDelete('set null'); + }); + Schema::table('votes', function (Blueprint $table) { + $table->foreignId('created_by') + ->nullable() + ->constrained('users') + ->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('project_proposals', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_03_10_202305_alter_support_in_sats_field_on_project_proposals_table.php b/database/migrations/2023_03_10_202305_alter_support_in_sats_field_on_project_proposals_table.php new file mode 100644 index 0000000..c2e5a19 --- /dev/null +++ b/database/migrations/2023_03_10_202305_alter_support_in_sats_field_on_project_proposals_table.php @@ -0,0 +1,28 @@ +unsignedBigInteger('support_in_sats') + ->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('project_proposals', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_03_10_230904_add_slug_field_to_project_proposals_table.php b/database/migrations/2023_03_10_230904_add_slug_field_to_project_proposals_table.php new file mode 100644 index 0000000..894eab9 --- /dev/null +++ b/database/migrations/2023_03_10_230904_add_slug_field_to_project_proposals_table.php @@ -0,0 +1,29 @@ +string('slug') + ->unique() + ->after('id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('project_proposals', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_03_13_130046_add_lnbits_field_to_users_table.php b/database/migrations/2023_03_13_130046_add_lnbits_field_to_users_table.php new file mode 100644 index 0000000..9334068 --- /dev/null +++ b/database/migrations/2023_03_13_130046_add_lnbits_field_to_users_table.php @@ -0,0 +1,28 @@ +json('lnbits') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_03_13_133526_add_value_to_be_paid_field_to_library_items_table.php b/database/migrations/2023_03_13_133526_add_value_to_be_paid_field_to_library_items_table.php new file mode 100644 index 0000000..b0c0106 --- /dev/null +++ b/database/migrations/2023_03_13_133526_add_value_to_be_paid_field_to_library_items_table.php @@ -0,0 +1,28 @@ +text('value_to_be_paid') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('library_items', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_03_13_134313_add_sats_field_to_library_items_table.php b/database/migrations/2023_03_13_134313_add_sats_field_to_library_items_table.php new file mode 100644 index 0000000..7c07df0 --- /dev/null +++ b/database/migrations/2023_03_13_134313_add_sats_field_to_library_items_table.php @@ -0,0 +1,28 @@ +unsignedBigInteger('sats') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('library_items', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_03_13_145545_create_library_item_user_pivot_table.php b/database/migrations/2023_03_13_145545_create_library_item_user_pivot_table.php new file mode 100644 index 0000000..294fdeb --- /dev/null +++ b/database/migrations/2023_03_13_145545_create_library_item_user_pivot_table.php @@ -0,0 +1,33 @@ +unsignedBigInteger('library_item_id')->index(); + $table->foreign('library_item_id')->references('id')->on('library_items')->onDelete('cascade'); + $table->unsignedBigInteger('user_id')->index(); + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); + $table->primary(['library_item_id', 'user_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('library_item_user'); + } +} diff --git a/database/migrations/2023_03_14_105504_alter_lnbits_field_on_users_table.php b/database/migrations/2023_03_14_105504_alter_lnbits_field_on_users_table.php new file mode 100644 index 0000000..427cea5 --- /dev/null +++ b/database/migrations/2023_03_14_105504_alter_lnbits_field_on_users_table.php @@ -0,0 +1,27 @@ +json('lnbits') + ->default('{"read_key":null,"url":null,"wallet_id":null}') + ->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2023_03_17_103513_add_paynym_field_to_users_table.php b/database/migrations/2023_03_17_103513_add_paynym_field_to_users_table.php new file mode 100644 index 0000000..f0985e4 --- /dev/null +++ b/database/migrations/2023_03_17_103513_add_paynym_field_to_users_table.php @@ -0,0 +1,28 @@ +text('paynym') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_03_17_104340_add_paynym_field_to_lecturers_table.php b/database/migrations/2023_03_17_104340_add_paynym_field_to_lecturers_table.php new file mode 100644 index 0000000..3c2a69f --- /dev/null +++ b/database/migrations/2023_03_17_104340_add_paynym_field_to_lecturers_table.php @@ -0,0 +1,28 @@ +text('paynym') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('lecturers', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_08_07_134026_add_visible_on_map_field_to_meetups_table.php b/database/migrations/2023_08_07_134026_add_visible_on_map_field_to_meetups_table.php new file mode 100644 index 0000000..0485856 --- /dev/null +++ b/database/migrations/2023_08_07_134026_add_visible_on_map_field_to_meetups_table.php @@ -0,0 +1,27 @@ +boolean('visible_on_map')->default(true); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('meetups', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_10_30_102650_add_simplex_field_to_meetups_table.php b/database/migrations/2023_10_30_102650_add_simplex_field_to_meetups_table.php new file mode 100644 index 0000000..49e1d83 --- /dev/null +++ b/database/migrations/2023_10_30_102650_add_simplex_field_to_meetups_table.php @@ -0,0 +1,27 @@ +text('simplex')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('meetups', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_11_11_095930_create_email_campaigns_table.php b/database/migrations/2023_11_11_095930_create_email_campaigns_table.php new file mode 100644 index 0000000..48daca1 --- /dev/null +++ b/database/migrations/2023_11_11_095930_create_email_campaigns_table.php @@ -0,0 +1,28 @@ +id(); + $table->string('name'); + $table->string('list_file_name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('email_campaigns'); + } +}; diff --git a/database/migrations/2023_11_11_100150_create_email_texts_table.php b/database/migrations/2023_11_11_100150_create_email_texts_table.php new file mode 100644 index 0000000..ef82a02 --- /dev/null +++ b/database/migrations/2023_11_11_100150_create_email_texts_table.php @@ -0,0 +1,30 @@ +id(); + $table->foreignId('email_campaign_id')->constrained(); + $table->string('sender_md5'); + $table->string('subject'); + $table->longText('text'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('email_texts'); + } +}; diff --git a/database/migrations/2023_11_11_101728_add_fields_to_email_campaigns_table.php b/database/migrations/2023_11_11_101728_add_fields_to_email_campaigns_table.php new file mode 100644 index 0000000..c901f3e --- /dev/null +++ b/database/migrations/2023_11_11_101728_add_fields_to_email_campaigns_table.php @@ -0,0 +1,28 @@ +text('subject_prompt')->nullable(); + $table->text('text_prompt')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('email_campaigns', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_12_08_201800_create_features_table.php b/database/migrations/2023_12_08_201800_create_features_table.php new file mode 100644 index 0000000..b389d15 --- /dev/null +++ b/database/migrations/2023_12_08_201800_create_features_table.php @@ -0,0 +1,34 @@ +bigIncrements('id'); + $table->string('title')->nullable(); + $table->string('feature')->unique(); + $table->text('description')->nullable(); + $table->timestamp('active_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('features'); + } +} diff --git a/database/migrations/2023_17_01_175957_create_meetup_user_table.php b/database/migrations/2023_17_01_175957_create_meetup_user_table.php new file mode 100644 index 0000000..d986f2a --- /dev/null +++ b/database/migrations/2023_17_01_175957_create_meetup_user_table.php @@ -0,0 +1,39 @@ +foreignId('meetup_id') + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + $table->foreignId('user_id') + ->constrained() + ->cascadeOnDelete() + ->cascadeOnUpdate(); + $table->boolean('is_leader') + ->default(false); + }); + + Schema::enableForeignKeyConstraints(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('meetup_user'); + } +}; diff --git a/database/migrations/2024_09_24_151929_add_signal_field_to_meetups_table.php b/database/migrations/2024_09_24_151929_add_signal_field_to_meetups_table.php new file mode 100644 index 0000000..bd4797e --- /dev/null +++ b/database/migrations/2024_09_24_151929_add_signal_field_to_meetups_table.php @@ -0,0 +1,27 @@ +string('signal', 255 * 2)->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('meetups', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2025_07_11_165453_create_jobs_table.php b/database/migrations/2025_07_11_165453_create_jobs_table.php new file mode 100644 index 0000000..6098d9b --- /dev/null +++ b/database/migrations/2025_07_11_165453_create_jobs_table.php @@ -0,0 +1,32 @@ +bigIncrements('id'); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jobs'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..5b566ca --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,21 @@ +create([ + 'name' => 'Test User', + 'email' => 'test@example.com', + ]); + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..773fc7c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,82 @@ +services: + laravel.test: + build: + context: './vendor/laravel/sail/runtimes/8.4' + dockerfile: Dockerfile + args: + WWWGROUP: '${WWWGROUP}' + image: 'sail-8.4/app' + extra_hosts: + - 'host.docker.internal:host-gateway' + ports: + - '${APP_PORT:-80}:80' + - '${VITE_PORT:-5173}:${VITE_PORT:-5173}' + environment: + WWWUSER: '${WWWUSER}' + LARAVEL_SAIL: 1 + XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}' + XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}' + IGNITION_LOCAL_SITES_PATH: '${PWD}' + volumes: + - '.:/var/www/html' + networks: + - sail + depends_on: + - pgsql + - redis + - mailpit + pgsql: + image: 'postgres:17' + ports: + - '${FORWARD_DB_PORT:-5432}:5432' + environment: + PGPASSWORD: '${DB_PASSWORD:-secret}' + POSTGRES_DB: '${DB_DATABASE}' + POSTGRES_USER: '${DB_USERNAME}' + POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}' + volumes: + - 'sail-pgsql:/var/lib/postgresql/data' + - './vendor/laravel/sail/database/pgsql/create-testing-database.sql:/docker-entrypoint-initdb.d/10-create-testing-database.sql' + networks: + - sail + healthcheck: + test: + - CMD + - pg_isready + - '-q' + - '-d' + - '${DB_DATABASE}' + - '-U' + - '${DB_USERNAME}' + retries: 3 + timeout: 5s + redis: + image: 'redis:alpine' + ports: + - '${FORWARD_REDIS_PORT:-6379}:6379' + volumes: + - 'sail-redis:/data' + networks: + - sail + healthcheck: + test: + - CMD + - redis-cli + - ping + retries: 3 + timeout: 5s + mailpit: + image: 'axllent/mailpit:latest' + ports: + - '${FORWARD_MAILPIT_PORT:-1025}:1025' + - '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025' + networks: + - sail +networks: + sail: + driver: bridge +volumes: + sail-pgsql: + driver: local + sail-redis: + driver: local diff --git a/lang/de.json b/lang/de.json new file mode 100644 index 0000000..eb1a9f9 --- /dev/null +++ b/lang/de.json @@ -0,0 +1,145 @@ +{ + "(and :count more error)": "(und :count weiterer Fehler)", + "(and :count more errors)": "(und :count weiterer Fehler)|(und :count weitere Fehler)|(und :count weitere Fehler)", + "2FA Recovery Codes": "2FA-Wiederherstellungscodes", + "A decryption key is required.": "Ein Entschlüsselungsschlüssel ist nötig.", + "A new verification link has been sent to the email address you provided during registration.": "Ein neuer Bestätigungslink wurde an die E-Mail-Adresse gesendet, die Sie bei der Registrierung angegeben haben.", + "A new verification link has been sent to your email address.": "Ein neuer Bestätigungslink wurde an Ihre E-Mail-Adresse versendet.", + "A reset link will be sent if the account exists.": "Wenn das Konto existiert, wird ein Link zum Zurücksetzen gesendet.", + "All rights reserved.": "Alle Rechte vorbehalten.", + "Already have an account?": "Haben Sie bereits ein Konto?", + "Appearance": "Darstellung", + "Are you sure you want to delete your account?": "Möchten Sie Ihr Konto wirklich löschen?", + "Authentication Code": "Authentifizierungscode", + "Back": "Zurück", + "Cancel": "Abbrechen", + "Click here to re-send the verification email.": "Klicken Sie hier, um eine neue Verifizierungs-E-Mail zu erhalten.", + "Close": "Schließen", + "Confirm": "Bestätigen", + "Confirm Password": "Passwort bestätigen", + "Confirm password": "Passwort bestätigen", + "Continue": "Weiter", + "Create account": "Konto erstellen", + "Create an account": "Ein Konto erstellen", + "Current password": "Aktuelles Passwort", + "Dark": "Dunkel", + "Dashboard": "Dashboard", + "Delete account": "Konto löschen", + "Delete your account and all of its resources": "Löschen Sie Ihr Konto und alle zugehörigen Ressourcen", + "Disable 2FA": "2FA deaktivieren", + "Disabled": "Deaktiviert", + "Documentation": "Dokumentation", + "Don't have an account?": "Sie haben noch kein Konto?", + "Each recovery code can be used once to access your account and will be removed after use. If you need more, click Regenerate Codes above.": "Jeder Wiederherstellungscode kann einmal für den Zugriff auf Ihr Konto verwendet werden und wird nach der Verwendung gelöscht. Wenn Sie weitere Codes benötigen, klicken Sie oben auf „Codes neu generieren“.", + "Email": "E-Mail", + "Email Address": "E-Mail-Adresse", + "Email address": "E-Mail-Adresse", + "Email password reset link": "Link zum Zurücksetzen des Passworts per E-Mail", + "Enable 2FA": "2FA aktivieren", + "Enable Two-Factor Authentication": "Zwei-Faktor-Authentisierung aktivieren", + "Enabled": "Aktiviert", + "Encrypted environment file already exists.": "Verschlüsselte Umgebungsdatei ist bereits vorhanden.", + "Encrypted environment file not found.": "Verschlüsselte Umgebungsdatei nicht gefunden.", + "Ensure your account is using a long, random password to stay secure": "Stellen Sie sicher, dass Ihr Konto ein langes, zufälliges Passwort verwendet, um sicher zu bleiben", + "Enter the 6-digit code from your authenticator app.": "Geben Sie den 6-stelligen Code aus Ihrer Authentifizierungs-App ein.", + "Enter the authentication code provided by your authenticator application.": "Geben Sie den von Ihrer Authentifizierungsanwendung bereitgestellten Authentifizierungscode ein.", + "Enter your details below to create your account": "Geben Sie unten Ihre Daten ein, um Ihr Konto zu erstellen", + "Enter your email and password below to log in": "Geben Sie unten Ihre E-Mail-Adresse und Ihr Passwort ein, um sich anzumelden", + "Enter your email to receive a password reset link": "Geben Sie Ihre E-Mail-Adresse ein, um einen Link zum Zurücksetzen des Passworts zu erhalten", + "Environment file already exists.": "Umgebungsdatei ist bereits vorhanden.", + "Environment file not found.": "Umgebungsdatei nicht gefunden.", + "errors": "Fehler", + "Forbidden": "Verboten", + "Forgot password": "Passwort vergessen", + "Forgot your password?": "Passwort vergessen?", + "Full name": "Vollständiger Name", + "Go to page :page": "Gehe zur Seite :page", + "Hello!": "Hallo!", + "Hide Recovery Codes": "Wiederherstellungscodes ausblenden", + "If you did not create an account, no further action is required.": "Wenn Sie kein Konto erstellt haben, sind keine weiteren Handlungen nötig.", + "If you did not request a password reset, no further action is required.": "Wenn Sie kein Zurücksetzen des Passworts beantragt haben, sind keine weiteren Handlungen nötig.", + "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Sollten Sie Schwierigkeiten haben, die Schaltfläche \":actionText\" zu klicken, kopieren Sie den nachfolgenden Link\n in Ihre Adresszeile des Browsers.", + "Invalid filename.": "Ungültiger Dateiname.", + "Invalid JSON was returned from the route.": "Von der Route wurde ein ungültiger JSON-Code zurückgegeben.", + "length": "Länge", + "Light": "Hell", + "Location": "Standort", + "Log in": "Anmelden", + "log in": "anmelden", + "Log in to your account": "Melden Sie sich bei Ihrem Konto an", + "Log Out": "Abmelden", + "Log out": "Abmelden", + "Login": "Anmelden", + "login using a recovery code": "Mit einem Wiederherstellungscode anmelden", + "login using an authentication code": "Anmelden mit einem Authentifizierungscode", + "Logout": "Abmelden", + "Manage your profile and account settings": "Verwalten Sie Ihr Profil und Ihre Kontoeinstellungen", + "Manage your two-factor authentication settings": "Verwalten Sie Ihre Einstellungen für die Zwei-Faktor-Authentifizierung", + "Name": "Name", + "New password": "Neues Passwort", + "Not Found": "Nicht gefunden", + "of": "von", + "Once your account is deleted, all of its resources and data will also be permanently deleted. Please confirm you would like to permanently delete your account.": "Sobald Ihr Konto gelöscht ist, werden auch alle zugehörigen Ressourcen und Daten dauerhaft gelöscht. Bitte bestätigen Sie, dass Sie Ihr Konto dauerhaft löschen möchten.", + "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Sobald Ihr Konto gelöscht wurde, werden alle Ressourcen und Daten dauerhaft gelöscht. Bitte geben Sie Ihr Passwort zur Bestätigung ein, dass Sie Ihr Konto dauerhaft löschen möchten.", + "or you can": "oder Sie können", + "or, enter the code manually": "oder geben Sie den Code manuell ein", + "Or, return to": "Oder kehren Sie zurück zu", + "Page Expired": "Seite abgelaufen", + "Pagination Navigation": "Seiten-Navigation", + "Password": "Passwort", + "Payment Required": "Zahlung erforderlich", + "Platform": "Plattform", + "Please click the button below to verify your email address.": "Bitte klicken Sie auf die Schaltfläche, um Ihre E-Mail-Adresse zu bestätigen.", + "Please confirm access to your account by entering one of your emergency recovery codes.": "Bitte bestätigen Sie den Zugriff auf Ihr Konto, indem Sie einen Ihrer Notfall-Wiederherstellungscodes eingeben.", + "Please enter your new password below": "Bitte geben Sie nachstehend Ihr neues Passwort ein.", + "Please verify your email address by clicking on the link we just emailed to you.": "Bitte bestätigen Sie Ihre E-Mail-Adresse, indem Sie auf den Link klicken, den wir Ihnen gerade per E-Mail gesendet haben.", + "Profile": "Profil", + "Recovery Code": "Wiederherstellungscode", + "Recovery codes let you regain access if you lose your 2FA device. Store them in a secure password manager.": "Mit Wiederherstellungscodes können Sie wieder Zugriff erhalten, wenn Sie Ihr 2FA-Gerät verlieren. Speichern Sie diese in einem sicheren Passwort-Manager.", + "Regards,": "Mit freundlichen Grüßen,", + "Regenerate Codes": "Codes neu generieren", + "Register": "Registrieren", + "Remember me": "Angemeldet bleiben", + "Repository": "Repository", + "Resend verification email": "Bestätigungs-E-Mail erneut senden", + "Reset Password": "Passwort zurücksetzen", + "Reset password": "Passwort zurücksetzen", + "Reset Password Notification": "Benachrichtigung zum Zurücksetzen des Passworts", + "results": "Ergebnissen", + "Save": "Speichern", + "Saved.": "Gespeichert.", + "Search": "Suche", + "Server Error": "Interner Fehler", + "Service Unavailable": "Service nicht verfügbar", + "Settings": "Einstellungen", + "Showing": "Zeige", + "Sign up": "Anmelden", + "System": "System", + "The given data was invalid.": "Die gegebenen Daten waren ungültig.", + "The response is not a streamed response.": "Die Antwort ist keine gestreamte Antwort.", + "The response is not a view.": "Die Antwort ist keine Ansicht.", + "This action is unauthorized.": "Diese Aktion ist nicht autorisiert.", + "This is a secure area of the application. Please confirm your password before continuing.": "Dies ist ein sicherer Bereich der Anwendung. Bitte bestätigen Sie Ihr Passwort, bevor Sie fortfahren.", + "This password reset link will expire in :count minutes.": "Dieser Link zum Zurücksetzen des Passworts läuft in :count Minuten ab.", + "to": "bis", + "To finish enabling two-factor authentication, scan the QR code or enter the setup key in your authenticator app.": "Um die Zwei-Faktor-Authentifizierung zu aktivieren, scannen Sie den QR-Code oder geben Sie den Einrichtungsschlüssel in Ihre Authentifizierungs-App ein.", + "Toggle navigation": "Navigation umschalten", + "Too Many Requests": "Zu viele Anfragen", + "Two Factor Authentication": "Zwei-Faktor-Authentifizierung", + "Two-Factor Auth": "Zwei-Faktor-Authentifizierung", + "Two-Factor Authentication Enabled": "Zwei-Faktor-Authentifizierung aktiviert", + "Two-factor authentication is now enabled. Scan the QR code or enter the setup key in your authenticator app.": "Die Zwei-Faktor-Authentifizierung ist nun aktiviert. Scannen Sie den QR-Code oder geben Sie den Setup-Schlüssel in Ihrer Authentifizierungs-App ein.", + "Unauthorized": "Nicht autorisiert", + "Update password": "Passwort aktualisieren", + "Update the appearance settings for your account": "Aktualisieren Sie die Darstellungseinstellungen für Ihr Konto", + "Update your account's appearance settings": "Aktualisieren Sie die Darstellungseinstellungen Ihres Kontos", + "Update your name and email address": "Aktualisieren Sie Ihren Namen und Ihre E-Mail-Adresse", + "Verify Authentication Code": "Authentifizierungscode überprüfen", + "Verify Email Address": "E-Mail-Adresse bestätigen", + "View Recovery Codes": "Wiederherstellungscodes anzeigen", + "When you enable two-factor authentication, you will be prompted for a secure pin during login. This pin can be retrieved from a TOTP-supported application on your phone.": "Wenn Sie die Zwei-Faktor-Authentifizierung aktivieren, werden Sie bei der Anmeldung zur Eingabe einer Sicherheits-PIN aufgefordert. Diese PIN können Sie über eine TOTP-unterstützte Anwendung auf Ihrem Smartphone abrufen.", + "Whoops!": "Ups!", + "With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.": "Wenn die Zwei-Faktor-Authentifizierung aktiviert ist, werden Sie bei der Anmeldung zur Eingabe einer sicheren, zufällig generierten PIN aufgefordert, die Sie über die TOTP-unterstützte Anwendung auf Ihrem Smartphone abrufen können.", + "You are receiving this email because we received a password reset request for your account.": "Sie erhalten diese E-Mail, weil wir einen Antrag auf eine Zurücksetzung Ihres Passworts bekommen haben.", + "Your email address is unverified.": "Ihre E-Mail-Adresse ist nicht verifiziert." +} \ No newline at end of file diff --git a/lang/de/auth.php b/lang/de/auth.php new file mode 100644 index 0000000..b9b93be --- /dev/null +++ b/lang/de/auth.php @@ -0,0 +1,9 @@ + 'Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.', + 'password' => 'Das Passwort ist falsch.', + 'throttle' => 'Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.', +]; diff --git a/lang/de/countries.php b/lang/de/countries.php new file mode 100644 index 0000000..4d8bd4b --- /dev/null +++ b/lang/de/countries.php @@ -0,0 +1,251 @@ + 'Afghanistan', + 'EG' => 'Ägypten', + 'AX' => 'Ålandinseln', + 'AL' => 'Albanien', + 'DZ' => 'Algerien', + 'AS' => 'Amerikanisch-Samoa', + 'VI' => 'Amerikanische Jungferninseln', + 'UM' => 'Amerikanische Überseeinseln', + 'AD' => 'Andorra', + 'AO' => 'Angola', + 'AI' => 'Anguilla', + 'AQ' => 'Antarktis', + 'AG' => 'Antigua und Barbuda', + 'GQ' => 'Äquatorialguinea', + 'AR' => 'Argentinien', + 'AM' => 'Armenien', + 'AW' => 'Aruba', + 'AZ' => 'Aserbaidschan', + 'ET' => 'Äthiopien', + 'AU' => 'Australien', + 'BS' => 'Bahamas', + 'BH' => 'Bahrain', + 'BD' => 'Bangladesch', + 'BB' => 'Barbados', + 'BY' => 'Belarus', + 'BE' => 'Belgien', + 'BZ' => 'Belize', + 'BJ' => 'Benin', + 'BM' => 'Bermuda', + 'BT' => 'Bhutan', + 'BO' => 'Bolivien', + 'BQ' => 'Bonaire, Sint Eustatius und Saba', + 'BA' => 'Bosnien und Herzegowina', + 'BW' => 'Botsuana', + 'BV' => 'Bouvetinsel', + 'BR' => 'Brasilien', + 'VG' => 'Britische Jungferninseln', + 'IO' => 'Britisches Territorium im Indischen Ozean', + 'BN' => 'Brunei Darussalam', + 'BG' => 'Bulgarien', + 'BF' => 'Burkina Faso', + 'BI' => 'Burundi', + 'CV' => 'Cabo Verde', + 'CL' => 'Chile', + 'CN' => 'China', + 'CK' => 'Cookinseln', + 'CR' => 'Costa Rica', + 'CI' => 'Côte d’Ivoire', + 'CW' => 'Curaçao', + 'DK' => 'Dänemark', + 'DE' => 'Deutschland', + 'DM' => 'Dominica', + 'DO' => 'Dominikanische Republik', + 'DJ' => 'Dschibuti', + 'EC' => 'Ecuador', + 'SV' => 'El Salvador', + 'ER' => 'Eritrea', + 'EE' => 'Estland', + 'SZ' => 'Eswatini', + 'FK' => 'Falklandinseln', + 'FO' => 'Färöer', + 'FJ' => 'Fidschi', + 'FI' => 'Finnland', + 'FR' => 'Frankreich', + 'GF' => 'Französisch-Guayana', + 'PF' => 'Französisch-Polynesien', + 'TF' => 'Französische Süd- und Antarktisgebiete', + 'GA' => 'Gabun', + 'GM' => 'Gambia', + 'GE' => 'Georgien', + 'GH' => 'Ghana', + 'GI' => 'Gibraltar', + 'GD' => 'Grenada', + 'GR' => 'Griechenland', + 'GL' => 'Grönland', + 'GP' => 'Guadeloupe', + 'GU' => 'Guam', + 'GT' => 'Guatemala', + 'GG' => 'Guernsey', + 'GN' => 'Guinea', + 'GW' => 'Guinea-Bissau', + 'GY' => 'Guyana', + 'HT' => 'Haiti', + 'HM' => 'Heard und McDonaldinseln', + 'HN' => 'Honduras', + 'IN' => 'Indien', + 'ID' => 'Indonesien', + 'IQ' => 'Irak', + 'IR' => 'Iran', + 'IE' => 'Irland', + 'IS' => 'Island', + 'IM' => 'Isle of Man', + 'IL' => 'Israel', + 'IT' => 'Italien', + 'JM' => 'Jamaika', + 'JP' => 'Japan', + 'YE' => 'Jemen', + 'JE' => 'Jersey', + 'JO' => 'Jordanien', + 'KY' => 'Kaimaninseln', + 'KH' => 'Kambodscha', + 'CM' => 'Kamerun', + 'CA' => 'Kanada', + 'KZ' => 'Kasachstan', + 'QA' => 'Katar', + 'KE' => 'Kenia', + 'KG' => 'Kirgisistan', + 'KI' => 'Kiribati', + 'CC' => 'Kokosinseln', + 'CO' => 'Kolumbien', + 'KM' => 'Komoren', + 'CG' => 'Kongo-Brazzaville', + 'CD' => 'Kongo-Kinshasa', + 'HR' => 'Kroatien', + 'CU' => 'Kuba', + 'KW' => 'Kuwait', + 'LA' => 'Laos', + 'LS' => 'Lesotho', + 'LV' => 'Lettland', + 'LB' => 'Libanon', + 'LR' => 'Liberia', + 'LY' => 'Libyen', + 'LI' => 'Liechtenstein', + 'LT' => 'Litauen', + 'LU' => 'Luxemburg', + 'MG' => 'Madagaskar', + 'MW' => 'Malawi', + 'MY' => 'Malaysia', + 'MV' => 'Malediven', + 'ML' => 'Mali', + 'MT' => 'Malta', + 'MA' => 'Marokko', + 'MH' => 'Marshallinseln', + 'MQ' => 'Martinique', + 'MR' => 'Mauretanien', + 'MU' => 'Mauritius', + 'YT' => 'Mayotte', + 'MX' => 'Mexiko', + 'FM' => 'Mikronesien', + 'MC' => 'Monaco', + 'MN' => 'Mongolei', + 'ME' => 'Montenegro', + 'MS' => 'Montserrat', + 'MZ' => 'Mosambik', + 'MM' => 'Myanmar', + 'NA' => 'Namibia', + 'NR' => 'Nauru', + 'NP' => 'Nepal', + 'NC' => 'Neukaledonien', + 'NZ' => 'Neuseeland', + 'NI' => 'Nicaragua', + 'NL' => 'Niederlande', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NU' => 'Niue', + 'KP' => 'Nordkorea', + 'MP' => 'Nördliche Marianen', + 'MK' => 'Nordmazedonien', + 'NF' => 'Norfolkinsel', + 'NO' => 'Norwegen', + 'OM' => 'Oman', + 'AT' => 'Österreich', + 'PK' => 'Pakistan', + 'PS' => 'Palästinensische Autonomiegebiete', + 'PW' => 'Palau', + 'PA' => 'Panama', + 'PG' => 'Papua-Neuguinea', + 'PY' => 'Paraguay', + 'PE' => 'Peru', + 'PH' => 'Philippinen', + 'PN' => 'Pitcairninseln', + 'PL' => 'Polen', + 'PT' => 'Portugal', + 'PR' => 'Puerto Rico', + 'MD' => 'Republik Moldau', + 'RE' => 'Réunion', + 'RW' => 'Ruanda', + 'RO' => 'Rumänien', + 'RU' => 'Russland', + 'SB' => 'Salomonen', + 'ZM' => 'Sambia', + 'WS' => 'Samoa', + 'SM' => 'San Marino', + 'ST' => 'São Tomé und Príncipe', + 'SA' => 'Saudi-Arabien', + 'SE' => 'Schweden', + 'CH' => 'Schweiz', + 'SN' => 'Senegal', + 'RS' => 'Serbien', + 'SC' => 'Seychellen', + 'SL' => 'Sierra Leone', + 'ZW' => 'Simbabwe', + 'SG' => 'Singapur', + 'SX' => 'Sint Maarten', + 'SK' => 'Slowakei', + 'SI' => 'Slowenien', + 'SO' => 'Somalia', + 'HK' => 'Sonderverwaltungsregion Hongkong', + 'MO' => 'Sonderverwaltungsregion Macau', + 'ES' => 'Spanien', + 'SJ' => 'Spitzbergen und Jan Mayen', + 'LK' => 'Sri Lanka', + 'BL' => 'St. Barthélemy', + 'SH' => 'St. Helena', + 'KN' => 'St. Kitts und Nevis', + 'LC' => 'St. Lucia', + 'MF' => 'St. Martin', + 'PM' => 'St. Pierre und Miquelon', + 'VC' => 'St. Vincent und die Grenadinen', + 'ZA' => 'Südafrika', + 'SD' => 'Sudan', + 'GS' => 'Südgeorgien und die Südlichen Sandwichinseln', + 'KR' => 'Südkorea', + 'SS' => 'Südsudan', + 'SR' => 'Suriname', + 'SY' => 'Syrien', + 'TJ' => 'Tadschikistan', + 'TW' => 'Taiwan', + 'TZ' => 'Tansania', + 'TH' => 'Thailand', + 'TL' => 'Timor-Leste', + 'TG' => 'Togo', + 'TK' => 'Tokelau', + 'TO' => 'Tonga', + 'TT' => 'Trinidad und Tobago', + 'TD' => 'Tschad', + 'CZ' => 'Tschechien', + 'TN' => 'Tunesien', + 'TR' => 'Türkei', + 'TM' => 'Turkmenistan', + 'TC' => 'Turks- und Caicosinseln', + 'TV' => 'Tuvalu', + 'UG' => 'Uganda', + 'UA' => 'Ukraine', + 'HU' => 'Ungarn', + 'UY' => 'Uruguay', + 'UZ' => 'Usbekistan', + 'VU' => 'Vanuatu', + 'VA' => 'Vatikanstadt', + 'VE' => 'Venezuela', + 'AE' => 'Vereinigte Arabische Emirate', + 'US' => 'Vereinigte Staaten', + 'GB' => 'Vereinigtes Königreich', + 'VN' => 'Vietnam', + 'WF' => 'Wallis und Futuna', + 'CX' => 'Weihnachtsinsel', + 'EH' => 'Westsahara', + 'CF' => 'Zentralafrikanische Republik', + 'CY' => 'Zypern', +); diff --git a/lang/de/pagination.php b/lang/de/pagination.php new file mode 100644 index 0000000..c912b5d --- /dev/null +++ b/lang/de/pagination.php @@ -0,0 +1,8 @@ + 'Weiter »', + 'previous' => '« Zurück', +]; diff --git a/lang/de/passwords.php b/lang/de/passwords.php new file mode 100644 index 0000000..9634bdd --- /dev/null +++ b/lang/de/passwords.php @@ -0,0 +1,11 @@ + 'Das Passwort wurde zurückgesetzt!', + 'sent' => 'E-Mail zum Zurücksetzen des Passworts wurde gesendet!', + 'throttled' => 'Bitte warten Sie, bevor Sie es erneut versuchen.', + 'token' => 'Der Passwort-Wiederherstellungsschlüssel ist ungültig oder abgelaufen.', + 'user' => 'Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.', +]; diff --git a/lang/de/validation.php b/lang/de/validation.php new file mode 100644 index 0000000..f1544ff --- /dev/null +++ b/lang/de/validation.php @@ -0,0 +1,158 @@ + ':Attribute muss akzeptiert werden.', + 'accepted_if' => ':Attribute muss akzeptiert werden, wenn :other :value ist.', + 'active_url' => ':Attribute ist keine gültige Internet-Adresse.', + 'after' => ':Attribute muss ein Datum nach :date sein.', + 'after_or_equal' => ':Attribute muss ein Datum nach :date oder gleich :date sein.', + 'alpha' => ':Attribute darf nur aus Buchstaben bestehen.', + 'alpha_dash' => ':Attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen.', + 'alpha_num' => ':Attribute darf nur aus Buchstaben und Zahlen bestehen.', + 'any_of' => ':Attribute ist ungültig.', + 'array' => ':Attribute muss ein Array sein.', + 'ascii' => 'Die :attribute darf nur alphanumerische Single-Byte-Zeichen und -Symbole enthalten.', + 'before' => ':Attribute muss ein Datum vor :date sein.', + 'before_or_equal' => ':Attribute muss ein Datum vor :date oder gleich :date sein.', + 'between' => [ + 'array' => ':Attribute muss zwischen :min & :max Elemente haben.', + 'file' => ':Attribute muss zwischen :min & :max Kilobytes groß sein.', + 'numeric' => ':Attribute muss zwischen :min & :max liegen.', + 'string' => ':Attribute muss zwischen :min & :max Zeichen lang sein.', + ], + 'boolean' => ':Attribute muss entweder \'true\' oder \'false\' sein.', + 'can' => 'Das Feld :attribute enthält einen nicht autorisierten Wert.', + 'confirmed' => ':Attribute stimmt nicht mit der Bestätigung überein.', + 'contains' => 'Dem Feld :attribute fehlt ein erforderlicher Wert.', + 'current_password' => 'Das Passwort ist falsch.', + 'date' => ':Attribute muss ein gültiges Datum sein.', + 'date_equals' => ':Attribute muss ein Datum gleich :date sein.', + 'date_format' => ':Attribute entspricht nicht dem gültigen Format für :format.', + 'decimal' => 'Die :attribute muss :decimal Dezimalstellen haben.', + 'declined' => ':Attribute muss abgelehnt werden.', + 'declined_if' => ':Attribute muss abgelehnt werden wenn :other :value ist.', + 'different' => ':Attribute und :other müssen sich unterscheiden.', + 'digits' => ':Attribute muss :digits Stellen haben.', + 'digits_between' => ':Attribute muss zwischen :min und :max Stellen haben.', + 'dimensions' => ':Attribute hat ungültige Bildabmessungen.', + 'distinct' => ':Attribute beinhaltet einen bereits vorhandenen Wert.', + 'doesnt_contain' => ':Attribute darf keines der folgenden enthalten: :values.', + 'doesnt_end_with' => ':Attribute darf nicht mit einem der folgenden enden: :values.', + 'doesnt_start_with' => ':Attribute darf nicht mit einem der folgenden beginnen: :values.', + 'email' => ':Attribute muss eine gültige E-Mail-Adresse sein.', + 'ends_with' => ':Attribute muss eine der folgenden Endungen aufweisen: :values', + 'enum' => 'Der ausgewählte Wert ist ungültig.', + 'exists' => 'Der gewählte Wert für :attribute ist ungültig.', + 'extensions' => 'Das Feld :attribute muss eine der folgenden Erweiterungen haben: :values.', + 'file' => ':Attribute muss eine Datei sein.', + 'filled' => ':Attribute muss ausgefüllt sein.', + 'gt' => [ + 'array' => ':Attribute muss mehr als :value Elemente haben.', + 'file' => ':Attribute muss größer als :value Kilobytes sein.', + 'numeric' => ':Attribute muss größer als :value sein.', + 'string' => ':Attribute muss länger als :value Zeichen sein.', + ], + 'gte' => [ + 'array' => ':Attribute muss mindestens :value Elemente haben.', + 'file' => ':Attribute muss größer oder gleich :value Kilobytes sein.', + 'numeric' => ':Attribute muss größer oder gleich :value sein.', + 'string' => ':Attribute muss mindestens :value Zeichen lang sein.', + ], + 'hex_color' => 'Das Feld :attribute muss eine gültige Hexadezimalfarbe sein.', + 'image' => ':Attribute muss ein Bild sein.', + 'in' => 'Der gewählte Wert für :attribute ist ungültig.', + 'in_array' => 'Der gewählte Wert für :attribute kommt nicht in :other vor.', + 'in_array_keys' => 'Das Feld :Attribute muss mindestens einen der folgenden Schlüssel enthalten: :Values.', + 'integer' => ':Attribute muss eine ganze Zahl sein.', + 'ip' => ':Attribute muss eine gültige IP-Adresse sein.', + 'ipv4' => ':Attribute muss eine gültige IPv4-Adresse sein.', + 'ipv6' => ':Attribute muss eine gültige IPv6-Adresse sein.', + 'json' => ':Attribute muss ein gültiger JSON-String sein.', + 'list' => ':Attribute muss eine Liste sein.', + 'lowercase' => ':Attribute muss in Kleinbuchstaben sein.', + 'lt' => [ + 'array' => ':Attribute muss weniger als :value Elemente haben.', + 'file' => ':Attribute muss kleiner als :value Kilobytes sein.', + 'numeric' => ':Attribute muss kleiner als :value sein.', + 'string' => ':Attribute muss kürzer als :value Zeichen sein.', + ], + 'lte' => [ + 'array' => ':Attribute darf maximal :value Elemente haben.', + 'file' => ':Attribute muss kleiner oder gleich :value Kilobytes sein.', + 'numeric' => ':Attribute muss kleiner oder gleich :value sein.', + 'string' => ':Attribute darf maximal :value Zeichen lang sein.', + ], + 'mac_address' => 'Der Wert muss eine gültige MAC-Adresse sein.', + 'max' => [ + 'array' => ':Attribute darf maximal :max Elemente haben.', + 'file' => ':Attribute darf maximal :max Kilobytes groß sein.', + 'numeric' => ':Attribute darf maximal :max sein.', + 'string' => ':Attribute darf maximal :max Zeichen haben.', + ], + 'max_digits' => ':Attribute darf maximal :max Ziffern lang sein.', + 'mimes' => ':Attribute muss den Dateityp :values haben.', + 'mimetypes' => ':Attribute muss den Dateityp :values haben.', + 'min' => [ + 'array' => ':Attribute muss mindestens :min Elemente haben.', + 'file' => ':Attribute muss mindestens :min Kilobytes groß sein.', + 'numeric' => ':Attribute muss mindestens :min sein.', + 'string' => ':Attribute muss mindestens :min Zeichen lang sein.', + ], + 'min_digits' => ':Attribute muss mindestens :min Ziffern lang sein.', + 'missing' => 'Das Feld :attribute muss fehlen.', + 'missing_if' => 'Das Feld :attribute muss fehlen, wenn :other gleich :value ist.', + 'missing_unless' => 'Das Feld :attribute muss fehlen, es sei denn, :other ist :value.', + 'missing_with' => 'Das Feld :attribute muss fehlen, wenn :values vorhanden ist.', + 'missing_with_all' => 'Das Feld :attribute muss fehlen, wenn :values vorhanden sind.', + 'multiple_of' => ':Attribute muss ein Vielfaches von :value sein.', + 'not_in' => 'Der gewählte Wert für :attribute ist ungültig.', + 'not_regex' => ':Attribute hat ein ungültiges Format.', + 'numeric' => ':Attribute muss eine Zahl sein.', + 'password' => [ + 'letters' => ':Attribute muss mindestens einen Buchstaben beinhalten.', + 'mixed' => ':Attribute muss mindestens einen Großbuchstaben und einen Kleinbuchstaben beinhalten.', + 'numbers' => ':Attribute muss mindestens eine Zahl beinhalten.', + 'symbols' => ':Attribute muss mindestens ein Sonderzeichen beinhalten.', + 'uncompromised' => ':Attribute wurde in einem Datenleck gefunden. Bitte wählen Sie ein anderes :attribute.', + ], + 'present' => ':Attribute muss vorhanden sein.', + 'present_if' => 'Das Feld :attribute muss vorhanden sein, wenn :other gleich :value ist.', + 'present_unless' => 'Das Feld :attribute muss vorhanden sein, es sei denn, :other ist :value.', + 'present_with' => 'Das Feld :attribute muss vorhanden sein, wenn :values vorhanden ist.', + 'present_with_all' => 'Das Feld :attribute muss vorhanden sein, wenn :values vorhanden sind.', + 'prohibited' => ':Attribute ist unzulässig.', + 'prohibited_if' => ':Attribute ist unzulässig, wenn :other :value ist.', + 'prohibited_if_accepted' => 'Das Feld :attribute ist unzulässig, wenn :other gewählt ist.', + 'prohibited_if_declined' => 'Das Feld :attribute ist unzulässig, wenn :other abgelehnt ist.', + 'prohibited_unless' => ':Attribute ist unzulässig, wenn :other nicht :values ist.', + 'prohibits' => ':Attribute verbietet die Angabe von :other.', + 'regex' => ':Attribute Format ist ungültig.', + 'required' => ':Attribute muss ausgefüllt werden.', + 'required_array_keys' => 'Dieses Feld muss Einträge enthalten für: :values.', + 'required_if' => ':Attribute muss ausgefüllt werden, wenn :other den Wert :value hat.', + 'required_if_accepted' => ':Attribute muss ausgefüllt werden, wenn :other gewählt ist.', + 'required_if_declined' => 'Das Feld :attribute ist erforderlich, wenn :other abgelehnt wird.', + 'required_unless' => ':Attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.', + 'required_with' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', + 'required_with_all' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', + 'required_without' => ':Attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.', + 'required_without_all' => ':Attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.', + 'same' => ':Attribute und :other müssen übereinstimmen.', + 'size' => [ + 'array' => ':Attribute muss genau :size Elemente haben.', + 'file' => ':Attribute muss :size Kilobyte groß sein.', + 'numeric' => ':Attribute muss gleich :size sein.', + 'string' => ':Attribute muss :size Zeichen lang sein.', + ], + 'starts_with' => ':Attribute muss mit einem der folgenden Anfänge aufweisen: :values', + 'string' => ':Attribute muss ein String sein.', + 'timezone' => ':Attribute muss eine gültige Zeitzone sein.', + 'ulid' => 'Die :attribute muss eine gültige ULID sein.', + 'unique' => ':Attribute ist bereits vergeben.', + 'uploaded' => ':Attribute konnte nicht hochgeladen werden.', + 'uppercase' => ':Attribute muss in Großbuchstaben sein.', + 'url' => ':Attribute muss eine URL sein.', + 'uuid' => ':Attribute muss ein UUID sein.', +]; diff --git a/lang/en.json b/lang/en.json new file mode 100644 index 0000000..450a754 --- /dev/null +++ b/lang/en.json @@ -0,0 +1,145 @@ +{ + "(and :count more error)": "(and :count more error)", + "(and :count more errors)": "(and :count more error)|(and :count more errors)|(and :count more errors)", + "2FA Recovery Codes": "2FA Recovery Codes", + "A decryption key is required.": "A decryption key is required.", + "A new verification link has been sent to the email address you provided during registration.": "A new verification link has been sent to the email address you provided during registration.", + "A new verification link has been sent to your email address.": "A new verification link has been sent to your email address.", + "A reset link will be sent if the account exists.": "A reset link will be sent if the account exists.", + "All rights reserved.": "All rights reserved.", + "Already have an account?": "Already have an account?", + "Appearance": "Appearance", + "Are you sure you want to delete your account?": "Are you sure you want to delete your account?", + "Authentication Code": "Authentication Code", + "Back": "Back", + "Cancel": "Cancel", + "Click here to re-send the verification email.": "Click here to re-send the verification email.", + "Close": "Close", + "Confirm": "Confirm", + "Confirm Password": "Confirm Password", + "Confirm password": "Confirm password", + "Continue": "Continue", + "Create account": "Create account", + "Create an account": "Create an account", + "Current password": "Current password", + "Dark": "Dark", + "Dashboard": "Dashboard", + "Delete account": "Delete account", + "Delete your account and all of its resources": "Delete your account and all of its resources", + "Disable 2FA": "Disable 2FA", + "Disabled": "Disabled", + "Documentation": "Documentation", + "Don't have an account?": "Don't have an account?", + "Each recovery code can be used once to access your account and will be removed after use. If you need more, click Regenerate Codes above.": "Each recovery code can be used once to access your account and will be removed after use. If you need more, click Regenerate Codes above.", + "Email": "Email", + "Email Address": "Email Address", + "Email address": "Email address", + "Email password reset link": "Email password reset link", + "Enable 2FA": "Enable 2FA", + "Enable Two-Factor Authentication": "Enable Two-Factor Authentication", + "Enabled": "Enabled", + "Encrypted environment file already exists.": "Encrypted environment file already exists.", + "Encrypted environment file not found.": "Encrypted environment file not found.", + "Ensure your account is using a long, random password to stay secure": "Ensure your account is using a long, random password to stay secure", + "Enter the 6-digit code from your authenticator app.": "Enter the 6-digit code from your authenticator app.", + "Enter the authentication code provided by your authenticator application.": "Enter the authentication code provided by your authenticator application.", + "Enter your details below to create your account": "Enter your details below to create your account", + "Enter your email and password below to log in": "Enter your email and password below to log in", + "Enter your email to receive a password reset link": "Enter your email to receive a password reset link", + "Environment file already exists.": "Environment file already exists.", + "Environment file not found.": "Environment file not found.", + "errors": "errors", + "Forbidden": "Forbidden", + "Forgot password": "Forgot password", + "Forgot your password?": "Forgot your password?", + "Full name": "Full name", + "Go to page :page": "Go to page :page", + "Hello!": "Hello!", + "Hide Recovery Codes": "Hide Recovery Codes", + "If you did not create an account, no further action is required.": "If you did not create an account, no further action is required.", + "If you did not request a password reset, no further action is required.": "If you did not request a password reset, no further action is required.", + "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:", + "Invalid filename.": "Invalid filename.", + "Invalid JSON was returned from the route.": "Invalid JSON was returned from the route.", + "length": "length", + "Light": "Light", + "Location": "Location", + "Log in": "Log in", + "log in": "log in", + "Log in to your account": "Log in to your account", + "Log Out": "Log Out", + "Log out": "Log out", + "Login": "Login", + "login using a recovery code": "login using a recovery code", + "login using an authentication code": "login using an authentication code", + "Logout": "Logout", + "Manage your profile and account settings": "Manage your profile and account settings", + "Manage your two-factor authentication settings": "Manage your two-factor authentication settings", + "Name": "Name", + "New password": "New password", + "Not Found": "Not Found", + "of": "of", + "Once your account is deleted, all of its resources and data will also be permanently deleted. Please confirm you would like to permanently delete your account.": "Once your account is deleted, all of its resources and data will also be permanently deleted. Please confirm you would like to permanently delete your account.", + "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.", + "or you can": "or you can", + "or, enter the code manually": "or, enter the code manually", + "Or, return to": "Or, return to", + "Page Expired": "Page Expired", + "Pagination Navigation": "Pagination Navigation", + "Password": "Password", + "Payment Required": "Payment Required", + "Platform": "Platform", + "Please click the button below to verify your email address.": "Please click the button below to verify your email address.", + "Please confirm access to your account by entering one of your emergency recovery codes.": "Please confirm access to your account by entering one of your emergency recovery codes.", + "Please enter your new password below": "Please enter your new password below", + "Please verify your email address by clicking on the link we just emailed to you.": "Please verify your email address by clicking on the link we just emailed to you.", + "Profile": "Profile", + "Recovery Code": "Recovery Code", + "Recovery codes let you regain access if you lose your 2FA device. Store them in a secure password manager.": "Recovery codes let you regain access if you lose your 2FA device. Store them in a secure password manager.", + "Regards,": "Regards,", + "Regenerate Codes": "Regenerate Codes", + "Register": "Register", + "Remember me": "Remember me", + "Repository": "Repository", + "Resend verification email": "Resend verification email", + "Reset Password": "Reset Password", + "Reset password": "Reset password", + "Reset Password Notification": "Reset Password Notification", + "results": "results", + "Save": "Save", + "Saved.": "Saved.", + "Search": "Search", + "Server Error": "Server Error", + "Service Unavailable": "Service Unavailable", + "Settings": "Settings", + "Showing": "Showing", + "Sign up": "Sign up", + "System": "System", + "The given data was invalid.": "The given data was invalid.", + "The response is not a streamed response.": "The response is not a streamed response.", + "The response is not a view.": "The response is not a view.", + "This action is unauthorized.": "This action is unauthorized.", + "This is a secure area of the application. Please confirm your password before continuing.": "This is a secure area of the application. Please confirm your password before continuing.", + "This password reset link will expire in :count minutes.": "This password reset link will expire in :count minutes.", + "to": "to", + "To finish enabling two-factor authentication, scan the QR code or enter the setup key in your authenticator app.": "To finish enabling two-factor authentication, scan the QR code or enter the setup key in your authenticator app.", + "Toggle navigation": "Toggle navigation", + "Too Many Requests": "Too Many Requests", + "Two Factor Authentication": "Two Factor Authentication", + "Two-Factor Auth": "Two-Factor Auth", + "Two-Factor Authentication Enabled": "Two-Factor Authentication Enabled", + "Two-factor authentication is now enabled. Scan the QR code or enter the setup key in your authenticator app.": "Two-factor authentication is now enabled. Scan the QR code or enter the setup key in your authenticator app.", + "Unauthorized": "Unauthorized", + "Update password": "Update password", + "Update the appearance settings for your account": "Update the appearance settings for your account", + "Update your account's appearance settings": "Update your account's appearance settings", + "Update your name and email address": "Update your name and email address", + "Verify Authentication Code": "Verify Authentication Code", + "Verify Email Address": "Verify Email Address", + "View Recovery Codes": "View Recovery Codes", + "When you enable two-factor authentication, you will be prompted for a secure pin during login. This pin can be retrieved from a TOTP-supported application on your phone.": "When you enable two-factor authentication, you will be prompted for a secure pin during login. This pin can be retrieved from a TOTP-supported application on your phone.", + "Whoops!": "Whoops!", + "With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.": "With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.", + "You are receiving this email because we received a password reset request for your account.": "You are receiving this email because we received a password reset request for your account.", + "Your email address is unverified.": "Your email address is unverified." +} \ No newline at end of file diff --git a/lang/en/auth.php b/lang/en/auth.php new file mode 100644 index 0000000..ad725d8 --- /dev/null +++ b/lang/en/auth.php @@ -0,0 +1,9 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', +]; diff --git a/lang/en/pagination.php b/lang/en/pagination.php new file mode 100644 index 0000000..f4cedde --- /dev/null +++ b/lang/en/pagination.php @@ -0,0 +1,8 @@ + 'Next »', + 'previous' => '« Previous', +]; diff --git a/lang/en/passwords.php b/lang/en/passwords.php new file mode 100644 index 0000000..f3b65ba --- /dev/null +++ b/lang/en/passwords.php @@ -0,0 +1,11 @@ + 'Your password has been reset.', + 'sent' => 'We have emailed your password reset link.', + 'throttled' => 'Please wait before retrying.', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that email address.', +]; diff --git a/lang/en/validation.php b/lang/en/validation.php new file mode 100644 index 0000000..1dd841f --- /dev/null +++ b/lang/en/validation.php @@ -0,0 +1,158 @@ + 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'any_of' => 'The :attribute field is invalid.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_contain' => 'The :attribute field must not contain any of the following: :values.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'in_array_keys' => 'The :attribute field must contain at least one of the following keys: :values.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', + ], + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', + ], + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_if_accepted' => 'The :attribute field is prohibited when :other is accepted.', + 'prohibited_if_declined' => 'The :attribute field is prohibited when :other is declined.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', + ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', + 'string' => 'The :attribute field must be a string.', + 'timezone' => 'The :attribute field must be a valid timezone.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'uuid' => 'The :attribute field must be a valid UUID.', +]; diff --git a/package.json b/package.json new file mode 100644 index 0000000..aeb9543 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "dev": "vite" + }, + "dependencies": { + "@tailwindcss/vite": "^4.0.7", + "autoprefixer": "^10.4.20", + "axios": "^1.7.4", + "concurrently": "^9.0.1", + "laravel-vite-plugin": "^1.0", + "tailwindcss": "^4.0.7", + "vite": "^6.0" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.9.5", + "@tailwindcss/oxide-linux-x64-gnu": "^4.0.1", + "lightningcss-linux-x64-gnu": "^1.29.1" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..c09b5bc --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,32 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..b574a59 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,25 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Handle X-XSRF-Token Header + RewriteCond %{HTTP:x-xsrf-token} . + RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png new file mode 100644 index 0000000..b1d79ac Binary files /dev/null and b/public/android-chrome-192x192.png differ diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png new file mode 100644 index 0000000..537891f Binary files /dev/null and b/public/android-chrome-512x512.png differ diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000..120c7b5 Binary files /dev/null and b/public/apple-touch-icon.png differ diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png new file mode 100644 index 0000000..1c664ba Binary files /dev/null and b/public/favicon-16x16.png differ diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png new file mode 100644 index 0000000..9d50fb5 Binary files /dev/null and b/public/favicon-32x32.png differ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..c0afeb7 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..e4e710e --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/img/btc.png b/public/img/btc.png new file mode 100644 index 0000000..cf1f8e2 Binary files /dev/null and b/public/img/btc.png differ diff --git a/public/img/btc_marker.png b/public/img/btc_marker.png new file mode 100644 index 0000000..61f3f22 Binary files /dev/null and b/public/img/btc_marker.png differ diff --git a/public/img/einundzwanzig-square.svg b/public/img/einundzwanzig-square.svg new file mode 100644 index 0000000..2822537 --- /dev/null +++ b/public/img/einundzwanzig-square.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..ee8f07e --- /dev/null +++ b/public/index.php @@ -0,0 +1,20 @@ +handleRequest(Request::capture()); diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/site.webmanifest b/public/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/public/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ad.svg b/public/vendor/blade-flags/country-ad.svg new file mode 100644 index 0000000..717386f --- /dev/null +++ b/public/vendor/blade-flags/country-ad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ae.svg b/public/vendor/blade-flags/country-ae.svg new file mode 100644 index 0000000..0b62672 --- /dev/null +++ b/public/vendor/blade-flags/country-ae.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-af.svg b/public/vendor/blade-flags/country-af.svg new file mode 100644 index 0000000..720b04b --- /dev/null +++ b/public/vendor/blade-flags/country-af.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ag.svg b/public/vendor/blade-flags/country-ag.svg new file mode 100644 index 0000000..2baa0c4 --- /dev/null +++ b/public/vendor/blade-flags/country-ag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ai.svg b/public/vendor/blade-flags/country-ai.svg new file mode 100644 index 0000000..39dce08 --- /dev/null +++ b/public/vendor/blade-flags/country-ai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-al.svg b/public/vendor/blade-flags/country-al.svg new file mode 100644 index 0000000..b22e166 --- /dev/null +++ b/public/vendor/blade-flags/country-al.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-am.svg b/public/vendor/blade-flags/country-am.svg new file mode 100644 index 0000000..a42c60b --- /dev/null +++ b/public/vendor/blade-flags/country-am.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ao.svg b/public/vendor/blade-flags/country-ao.svg new file mode 100644 index 0000000..872cb17 --- /dev/null +++ b/public/vendor/blade-flags/country-ao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-aq.svg b/public/vendor/blade-flags/country-aq.svg new file mode 100644 index 0000000..a228162 --- /dev/null +++ b/public/vendor/blade-flags/country-aq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ar.svg b/public/vendor/blade-flags/country-ar.svg new file mode 100644 index 0000000..a34c657 --- /dev/null +++ b/public/vendor/blade-flags/country-ar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-as.svg b/public/vendor/blade-flags/country-as.svg new file mode 100644 index 0000000..cc31434 --- /dev/null +++ b/public/vendor/blade-flags/country-as.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-at.svg b/public/vendor/blade-flags/country-at.svg new file mode 100644 index 0000000..829fc01 --- /dev/null +++ b/public/vendor/blade-flags/country-at.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-au.svg b/public/vendor/blade-flags/country-au.svg new file mode 100644 index 0000000..fbb20da --- /dev/null +++ b/public/vendor/blade-flags/country-au.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-aw.svg b/public/vendor/blade-flags/country-aw.svg new file mode 100644 index 0000000..4e53f3e --- /dev/null +++ b/public/vendor/blade-flags/country-aw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ax.svg b/public/vendor/blade-flags/country-ax.svg new file mode 100644 index 0000000..9294e85 --- /dev/null +++ b/public/vendor/blade-flags/country-ax.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-az.svg b/public/vendor/blade-flags/country-az.svg new file mode 100644 index 0000000..2975128 --- /dev/null +++ b/public/vendor/blade-flags/country-az.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ba.svg b/public/vendor/blade-flags/country-ba.svg new file mode 100644 index 0000000..9b05886 --- /dev/null +++ b/public/vendor/blade-flags/country-ba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bb.svg b/public/vendor/blade-flags/country-bb.svg new file mode 100644 index 0000000..c5fe44e --- /dev/null +++ b/public/vendor/blade-flags/country-bb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bd.svg b/public/vendor/blade-flags/country-bd.svg new file mode 100644 index 0000000..f2b708d --- /dev/null +++ b/public/vendor/blade-flags/country-bd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-be.svg b/public/vendor/blade-flags/country-be.svg new file mode 100644 index 0000000..1c5364f --- /dev/null +++ b/public/vendor/blade-flags/country-be.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bf.svg b/public/vendor/blade-flags/country-bf.svg new file mode 100644 index 0000000..9a8846c --- /dev/null +++ b/public/vendor/blade-flags/country-bf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bg.svg b/public/vendor/blade-flags/country-bg.svg new file mode 100644 index 0000000..456bc19 --- /dev/null +++ b/public/vendor/blade-flags/country-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bh.svg b/public/vendor/blade-flags/country-bh.svg new file mode 100644 index 0000000..cdc4463 --- /dev/null +++ b/public/vendor/blade-flags/country-bh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bi.svg b/public/vendor/blade-flags/country-bi.svg new file mode 100644 index 0000000..9485daa --- /dev/null +++ b/public/vendor/blade-flags/country-bi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bj.svg b/public/vendor/blade-flags/country-bj.svg new file mode 100644 index 0000000..fde7c90 --- /dev/null +++ b/public/vendor/blade-flags/country-bj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bl.svg b/public/vendor/blade-flags/country-bl.svg new file mode 100644 index 0000000..0f31104 --- /dev/null +++ b/public/vendor/blade-flags/country-bl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bm.svg b/public/vendor/blade-flags/country-bm.svg new file mode 100644 index 0000000..0453d9f --- /dev/null +++ b/public/vendor/blade-flags/country-bm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bn.svg b/public/vendor/blade-flags/country-bn.svg new file mode 100644 index 0000000..5c668de --- /dev/null +++ b/public/vendor/blade-flags/country-bn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bo.svg b/public/vendor/blade-flags/country-bo.svg new file mode 100644 index 0000000..6581e85 --- /dev/null +++ b/public/vendor/blade-flags/country-bo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bq.svg b/public/vendor/blade-flags/country-bq.svg new file mode 100644 index 0000000..a2fbf25 --- /dev/null +++ b/public/vendor/blade-flags/country-bq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-br.svg b/public/vendor/blade-flags/country-br.svg new file mode 100644 index 0000000..d70ef6f --- /dev/null +++ b/public/vendor/blade-flags/country-br.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bs.svg b/public/vendor/blade-flags/country-bs.svg new file mode 100644 index 0000000..4e983b1 --- /dev/null +++ b/public/vendor/blade-flags/country-bs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bt.svg b/public/vendor/blade-flags/country-bt.svg new file mode 100644 index 0000000..d1223f9 --- /dev/null +++ b/public/vendor/blade-flags/country-bt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bv.svg b/public/vendor/blade-flags/country-bv.svg new file mode 100644 index 0000000..f4a293e --- /dev/null +++ b/public/vendor/blade-flags/country-bv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bw.svg b/public/vendor/blade-flags/country-bw.svg new file mode 100644 index 0000000..d2dfb48 --- /dev/null +++ b/public/vendor/blade-flags/country-bw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-by.svg b/public/vendor/blade-flags/country-by.svg new file mode 100644 index 0000000..567959a --- /dev/null +++ b/public/vendor/blade-flags/country-by.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-bz.svg b/public/vendor/blade-flags/country-bz.svg new file mode 100644 index 0000000..89247ae --- /dev/null +++ b/public/vendor/blade-flags/country-bz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ca.svg b/public/vendor/blade-flags/country-ca.svg new file mode 100644 index 0000000..e2f2b72 --- /dev/null +++ b/public/vendor/blade-flags/country-ca.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cc.svg b/public/vendor/blade-flags/country-cc.svg new file mode 100644 index 0000000..d85a3da --- /dev/null +++ b/public/vendor/blade-flags/country-cc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cd.svg b/public/vendor/blade-flags/country-cd.svg new file mode 100644 index 0000000..ddeaf9e --- /dev/null +++ b/public/vendor/blade-flags/country-cd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cf.svg b/public/vendor/blade-flags/country-cf.svg new file mode 100644 index 0000000..5002f17 --- /dev/null +++ b/public/vendor/blade-flags/country-cf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cg.svg b/public/vendor/blade-flags/country-cg.svg new file mode 100644 index 0000000..f4de327 --- /dev/null +++ b/public/vendor/blade-flags/country-cg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ch.svg b/public/vendor/blade-flags/country-ch.svg new file mode 100644 index 0000000..db55226 --- /dev/null +++ b/public/vendor/blade-flags/country-ch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ci.svg b/public/vendor/blade-flags/country-ci.svg new file mode 100644 index 0000000..7d0c269 --- /dev/null +++ b/public/vendor/blade-flags/country-ci.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ck.svg b/public/vendor/blade-flags/country-ck.svg new file mode 100644 index 0000000..9979c8a --- /dev/null +++ b/public/vendor/blade-flags/country-ck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cl.svg b/public/vendor/blade-flags/country-cl.svg new file mode 100644 index 0000000..05ff9fd --- /dev/null +++ b/public/vendor/blade-flags/country-cl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cm.svg b/public/vendor/blade-flags/country-cm.svg new file mode 100644 index 0000000..54896c4 --- /dev/null +++ b/public/vendor/blade-flags/country-cm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cn.svg b/public/vendor/blade-flags/country-cn.svg new file mode 100644 index 0000000..0b23b53 --- /dev/null +++ b/public/vendor/blade-flags/country-cn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-co.svg b/public/vendor/blade-flags/country-co.svg new file mode 100644 index 0000000..f366371 --- /dev/null +++ b/public/vendor/blade-flags/country-co.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cp.svg b/public/vendor/blade-flags/country-cp.svg new file mode 100644 index 0000000..ba80ac8 --- /dev/null +++ b/public/vendor/blade-flags/country-cp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cr.svg b/public/vendor/blade-flags/country-cr.svg new file mode 100644 index 0000000..1c15c3c --- /dev/null +++ b/public/vendor/blade-flags/country-cr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cu.svg b/public/vendor/blade-flags/country-cu.svg new file mode 100644 index 0000000..d3917b1 --- /dev/null +++ b/public/vendor/blade-flags/country-cu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cv.svg b/public/vendor/blade-flags/country-cv.svg new file mode 100644 index 0000000..0b1c2a9 --- /dev/null +++ b/public/vendor/blade-flags/country-cv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cw.svg b/public/vendor/blade-flags/country-cw.svg new file mode 100644 index 0000000..8395f84 --- /dev/null +++ b/public/vendor/blade-flags/country-cw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cx.svg b/public/vendor/blade-flags/country-cx.svg new file mode 100644 index 0000000..a57282d --- /dev/null +++ b/public/vendor/blade-flags/country-cx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cy.svg b/public/vendor/blade-flags/country-cy.svg new file mode 100644 index 0000000..a723715 --- /dev/null +++ b/public/vendor/blade-flags/country-cy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-cz.svg b/public/vendor/blade-flags/country-cz.svg new file mode 100644 index 0000000..444a752 --- /dev/null +++ b/public/vendor/blade-flags/country-cz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-de.svg b/public/vendor/blade-flags/country-de.svg new file mode 100644 index 0000000..da4db40 --- /dev/null +++ b/public/vendor/blade-flags/country-de.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-dg.svg b/public/vendor/blade-flags/country-dg.svg new file mode 100644 index 0000000..75cb251 --- /dev/null +++ b/public/vendor/blade-flags/country-dg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-dj.svg b/public/vendor/blade-flags/country-dj.svg new file mode 100644 index 0000000..9a28a03 --- /dev/null +++ b/public/vendor/blade-flags/country-dj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-dk.svg b/public/vendor/blade-flags/country-dk.svg new file mode 100644 index 0000000..582780e --- /dev/null +++ b/public/vendor/blade-flags/country-dk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-dm.svg b/public/vendor/blade-flags/country-dm.svg new file mode 100644 index 0000000..3453ac4 --- /dev/null +++ b/public/vendor/blade-flags/country-dm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-do.svg b/public/vendor/blade-flags/country-do.svg new file mode 100644 index 0000000..89d5d35 --- /dev/null +++ b/public/vendor/blade-flags/country-do.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-dz.svg b/public/vendor/blade-flags/country-dz.svg new file mode 100644 index 0000000..d38e3d7 --- /dev/null +++ b/public/vendor/blade-flags/country-dz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ea.svg b/public/vendor/blade-flags/country-ea.svg new file mode 100644 index 0000000..5962850 --- /dev/null +++ b/public/vendor/blade-flags/country-ea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ec.svg b/public/vendor/blade-flags/country-ec.svg new file mode 100644 index 0000000..b5dc137 --- /dev/null +++ b/public/vendor/blade-flags/country-ec.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ee.svg b/public/vendor/blade-flags/country-ee.svg new file mode 100644 index 0000000..a335499 --- /dev/null +++ b/public/vendor/blade-flags/country-ee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-eg.svg b/public/vendor/blade-flags/country-eg.svg new file mode 100644 index 0000000..7e1b867 --- /dev/null +++ b/public/vendor/blade-flags/country-eg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-eh.svg b/public/vendor/blade-flags/country-eh.svg new file mode 100644 index 0000000..8c52ba8 --- /dev/null +++ b/public/vendor/blade-flags/country-eh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-er.svg b/public/vendor/blade-flags/country-er.svg new file mode 100644 index 0000000..ed4809c --- /dev/null +++ b/public/vendor/blade-flags/country-er.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-es.svg b/public/vendor/blade-flags/country-es.svg new file mode 100644 index 0000000..5962850 --- /dev/null +++ b/public/vendor/blade-flags/country-es.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-et.svg b/public/vendor/blade-flags/country-et.svg new file mode 100644 index 0000000..513ef71 --- /dev/null +++ b/public/vendor/blade-flags/country-et.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-eu.svg b/public/vendor/blade-flags/country-eu.svg new file mode 100644 index 0000000..2fe5a40 --- /dev/null +++ b/public/vendor/blade-flags/country-eu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-fi.svg b/public/vendor/blade-flags/country-fi.svg new file mode 100644 index 0000000..12abad0 --- /dev/null +++ b/public/vendor/blade-flags/country-fi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-fj.svg b/public/vendor/blade-flags/country-fj.svg new file mode 100644 index 0000000..dc7ef02 --- /dev/null +++ b/public/vendor/blade-flags/country-fj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-fk.svg b/public/vendor/blade-flags/country-fk.svg new file mode 100644 index 0000000..a7cce9f --- /dev/null +++ b/public/vendor/blade-flags/country-fk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-fm.svg b/public/vendor/blade-flags/country-fm.svg new file mode 100644 index 0000000..3a2d7c6 --- /dev/null +++ b/public/vendor/blade-flags/country-fm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-fo.svg b/public/vendor/blade-flags/country-fo.svg new file mode 100644 index 0000000..e37757a --- /dev/null +++ b/public/vendor/blade-flags/country-fo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-fr.svg b/public/vendor/blade-flags/country-fr.svg new file mode 100644 index 0000000..ba80ac8 --- /dev/null +++ b/public/vendor/blade-flags/country-fr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ga.svg b/public/vendor/blade-flags/country-ga.svg new file mode 100644 index 0000000..1dc184f --- /dev/null +++ b/public/vendor/blade-flags/country-ga.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gb-eng.svg b/public/vendor/blade-flags/country-gb-eng.svg new file mode 100644 index 0000000..d0d0914 --- /dev/null +++ b/public/vendor/blade-flags/country-gb-eng.svg @@ -0,0 +1 @@ + diff --git a/public/vendor/blade-flags/country-gb-nir.svg b/public/vendor/blade-flags/country-gb-nir.svg new file mode 100644 index 0000000..7ea206a --- /dev/null +++ b/public/vendor/blade-flags/country-gb-nir.svg @@ -0,0 +1 @@ + diff --git a/public/vendor/blade-flags/country-gb-sct.svg b/public/vendor/blade-flags/country-gb-sct.svg new file mode 100644 index 0000000..2d248a0 --- /dev/null +++ b/public/vendor/blade-flags/country-gb-sct.svg @@ -0,0 +1 @@ + diff --git a/public/vendor/blade-flags/country-gb-wls.svg b/public/vendor/blade-flags/country-gb-wls.svg new file mode 100644 index 0000000..eba8a83 --- /dev/null +++ b/public/vendor/blade-flags/country-gb-wls.svg @@ -0,0 +1 @@ + diff --git a/public/vendor/blade-flags/country-gb.svg b/public/vendor/blade-flags/country-gb.svg new file mode 100644 index 0000000..b5b9ab8 --- /dev/null +++ b/public/vendor/blade-flags/country-gb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gd.svg b/public/vendor/blade-flags/country-gd.svg new file mode 100644 index 0000000..e84e549 --- /dev/null +++ b/public/vendor/blade-flags/country-gd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ge.svg b/public/vendor/blade-flags/country-ge.svg new file mode 100644 index 0000000..c2bb068 --- /dev/null +++ b/public/vendor/blade-flags/country-ge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gf.svg b/public/vendor/blade-flags/country-gf.svg new file mode 100644 index 0000000..1aba849 --- /dev/null +++ b/public/vendor/blade-flags/country-gf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gg.svg b/public/vendor/blade-flags/country-gg.svg new file mode 100644 index 0000000..b026d31 --- /dev/null +++ b/public/vendor/blade-flags/country-gg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gh.svg b/public/vendor/blade-flags/country-gh.svg new file mode 100644 index 0000000..eae250f --- /dev/null +++ b/public/vendor/blade-flags/country-gh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gi.svg b/public/vendor/blade-flags/country-gi.svg new file mode 100644 index 0000000..5e28d59 --- /dev/null +++ b/public/vendor/blade-flags/country-gi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gl.svg b/public/vendor/blade-flags/country-gl.svg new file mode 100644 index 0000000..da92751 --- /dev/null +++ b/public/vendor/blade-flags/country-gl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gm.svg b/public/vendor/blade-flags/country-gm.svg new file mode 100644 index 0000000..2dc61a3 --- /dev/null +++ b/public/vendor/blade-flags/country-gm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gn.svg b/public/vendor/blade-flags/country-gn.svg new file mode 100644 index 0000000..31ec0e7 --- /dev/null +++ b/public/vendor/blade-flags/country-gn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gp.svg b/public/vendor/blade-flags/country-gp.svg new file mode 100644 index 0000000..c594818 --- /dev/null +++ b/public/vendor/blade-flags/country-gp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gq.svg b/public/vendor/blade-flags/country-gq.svg new file mode 100644 index 0000000..a436ede --- /dev/null +++ b/public/vendor/blade-flags/country-gq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gr.svg b/public/vendor/blade-flags/country-gr.svg new file mode 100644 index 0000000..99af0d9 --- /dev/null +++ b/public/vendor/blade-flags/country-gr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gs.svg b/public/vendor/blade-flags/country-gs.svg new file mode 100644 index 0000000..7af7c7d --- /dev/null +++ b/public/vendor/blade-flags/country-gs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gt.svg b/public/vendor/blade-flags/country-gt.svg new file mode 100644 index 0000000..63bf68b --- /dev/null +++ b/public/vendor/blade-flags/country-gt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gu.svg b/public/vendor/blade-flags/country-gu.svg new file mode 100644 index 0000000..8d18f27 --- /dev/null +++ b/public/vendor/blade-flags/country-gu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gw.svg b/public/vendor/blade-flags/country-gw.svg new file mode 100644 index 0000000..129bbf1 --- /dev/null +++ b/public/vendor/blade-flags/country-gw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-gy.svg b/public/vendor/blade-flags/country-gy.svg new file mode 100644 index 0000000..d4eafbe --- /dev/null +++ b/public/vendor/blade-flags/country-gy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-hk.svg b/public/vendor/blade-flags/country-hk.svg new file mode 100644 index 0000000..6754652 --- /dev/null +++ b/public/vendor/blade-flags/country-hk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-hm.svg b/public/vendor/blade-flags/country-hm.svg new file mode 100644 index 0000000..fbb20da --- /dev/null +++ b/public/vendor/blade-flags/country-hm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-hn.svg b/public/vendor/blade-flags/country-hn.svg new file mode 100644 index 0000000..02bd975 --- /dev/null +++ b/public/vendor/blade-flags/country-hn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-hr.svg b/public/vendor/blade-flags/country-hr.svg new file mode 100644 index 0000000..2f4b984 --- /dev/null +++ b/public/vendor/blade-flags/country-hr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ht.svg b/public/vendor/blade-flags/country-ht.svg new file mode 100644 index 0000000..d9397c9 --- /dev/null +++ b/public/vendor/blade-flags/country-ht.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-hu.svg b/public/vendor/blade-flags/country-hu.svg new file mode 100644 index 0000000..6fb2d38 --- /dev/null +++ b/public/vendor/blade-flags/country-hu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ic.svg b/public/vendor/blade-flags/country-ic.svg new file mode 100644 index 0000000..173e168 --- /dev/null +++ b/public/vendor/blade-flags/country-ic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-id.svg b/public/vendor/blade-flags/country-id.svg new file mode 100644 index 0000000..4581d3f --- /dev/null +++ b/public/vendor/blade-flags/country-id.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ie.svg b/public/vendor/blade-flags/country-ie.svg new file mode 100644 index 0000000..586cc8b --- /dev/null +++ b/public/vendor/blade-flags/country-ie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-il.svg b/public/vendor/blade-flags/country-il.svg new file mode 100644 index 0000000..1849de8 --- /dev/null +++ b/public/vendor/blade-flags/country-il.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-im.svg b/public/vendor/blade-flags/country-im.svg new file mode 100644 index 0000000..2ea75d7 --- /dev/null +++ b/public/vendor/blade-flags/country-im.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-in.svg b/public/vendor/blade-flags/country-in.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/country-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-io.svg b/public/vendor/blade-flags/country-io.svg new file mode 100644 index 0000000..75cb251 --- /dev/null +++ b/public/vendor/blade-flags/country-io.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-iq.svg b/public/vendor/blade-flags/country-iq.svg new file mode 100644 index 0000000..825ec7d --- /dev/null +++ b/public/vendor/blade-flags/country-iq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ir.svg b/public/vendor/blade-flags/country-ir.svg new file mode 100644 index 0000000..01bee48 --- /dev/null +++ b/public/vendor/blade-flags/country-ir.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-is.svg b/public/vendor/blade-flags/country-is.svg new file mode 100644 index 0000000..eb52aa9 --- /dev/null +++ b/public/vendor/blade-flags/country-is.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-it.svg b/public/vendor/blade-flags/country-it.svg new file mode 100644 index 0000000..d999fb9 --- /dev/null +++ b/public/vendor/blade-flags/country-it.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-je.svg b/public/vendor/blade-flags/country-je.svg new file mode 100644 index 0000000..5be5522 --- /dev/null +++ b/public/vendor/blade-flags/country-je.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-jm.svg b/public/vendor/blade-flags/country-jm.svg new file mode 100644 index 0000000..b084549 --- /dev/null +++ b/public/vendor/blade-flags/country-jm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-jo.svg b/public/vendor/blade-flags/country-jo.svg new file mode 100644 index 0000000..4981f4c --- /dev/null +++ b/public/vendor/blade-flags/country-jo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-jp.svg b/public/vendor/blade-flags/country-jp.svg new file mode 100644 index 0000000..0b751fd --- /dev/null +++ b/public/vendor/blade-flags/country-jp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ke.svg b/public/vendor/blade-flags/country-ke.svg new file mode 100644 index 0000000..06241da --- /dev/null +++ b/public/vendor/blade-flags/country-ke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-kg.svg b/public/vendor/blade-flags/country-kg.svg new file mode 100644 index 0000000..b7434ff --- /dev/null +++ b/public/vendor/blade-flags/country-kg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-kh.svg b/public/vendor/blade-flags/country-kh.svg new file mode 100644 index 0000000..af61a19 --- /dev/null +++ b/public/vendor/blade-flags/country-kh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ki.svg b/public/vendor/blade-flags/country-ki.svg new file mode 100644 index 0000000..580fa5b --- /dev/null +++ b/public/vendor/blade-flags/country-ki.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-km.svg b/public/vendor/blade-flags/country-km.svg new file mode 100644 index 0000000..6a2c598 --- /dev/null +++ b/public/vendor/blade-flags/country-km.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-kn.svg b/public/vendor/blade-flags/country-kn.svg new file mode 100644 index 0000000..510cc9e --- /dev/null +++ b/public/vendor/blade-flags/country-kn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-kp.svg b/public/vendor/blade-flags/country-kp.svg new file mode 100644 index 0000000..6479f2f --- /dev/null +++ b/public/vendor/blade-flags/country-kp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-kr.svg b/public/vendor/blade-flags/country-kr.svg new file mode 100644 index 0000000..1974f20 --- /dev/null +++ b/public/vendor/blade-flags/country-kr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-kw.svg b/public/vendor/blade-flags/country-kw.svg new file mode 100644 index 0000000..55fcb5b --- /dev/null +++ b/public/vendor/blade-flags/country-kw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ky.svg b/public/vendor/blade-flags/country-ky.svg new file mode 100644 index 0000000..7eef372 --- /dev/null +++ b/public/vendor/blade-flags/country-ky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-kz.svg b/public/vendor/blade-flags/country-kz.svg new file mode 100644 index 0000000..707d877 --- /dev/null +++ b/public/vendor/blade-flags/country-kz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-la.svg b/public/vendor/blade-flags/country-la.svg new file mode 100644 index 0000000..de25394 --- /dev/null +++ b/public/vendor/blade-flags/country-la.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-lb.svg b/public/vendor/blade-flags/country-lb.svg new file mode 100644 index 0000000..2597dc9 --- /dev/null +++ b/public/vendor/blade-flags/country-lb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-lc.svg b/public/vendor/blade-flags/country-lc.svg new file mode 100644 index 0000000..04c0afe --- /dev/null +++ b/public/vendor/blade-flags/country-lc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-li.svg b/public/vendor/blade-flags/country-li.svg new file mode 100644 index 0000000..280ad06 --- /dev/null +++ b/public/vendor/blade-flags/country-li.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-lk.svg b/public/vendor/blade-flags/country-lk.svg new file mode 100644 index 0000000..190daa1 --- /dev/null +++ b/public/vendor/blade-flags/country-lk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-lr.svg b/public/vendor/blade-flags/country-lr.svg new file mode 100644 index 0000000..e2877b0 --- /dev/null +++ b/public/vendor/blade-flags/country-lr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ls.svg b/public/vendor/blade-flags/country-ls.svg new file mode 100644 index 0000000..ab13409 --- /dev/null +++ b/public/vendor/blade-flags/country-ls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-lt.svg b/public/vendor/blade-flags/country-lt.svg new file mode 100644 index 0000000..017ced0 --- /dev/null +++ b/public/vendor/blade-flags/country-lt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-lu.svg b/public/vendor/blade-flags/country-lu.svg new file mode 100644 index 0000000..5ea00b9 --- /dev/null +++ b/public/vendor/blade-flags/country-lu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-lv.svg b/public/vendor/blade-flags/country-lv.svg new file mode 100644 index 0000000..c2bdedb --- /dev/null +++ b/public/vendor/blade-flags/country-lv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ly.svg b/public/vendor/blade-flags/country-ly.svg new file mode 100644 index 0000000..96ee022 --- /dev/null +++ b/public/vendor/blade-flags/country-ly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ma.svg b/public/vendor/blade-flags/country-ma.svg new file mode 100644 index 0000000..f77da5f --- /dev/null +++ b/public/vendor/blade-flags/country-ma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mc.svg b/public/vendor/blade-flags/country-mc.svg new file mode 100644 index 0000000..46d1196 --- /dev/null +++ b/public/vendor/blade-flags/country-mc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-md.svg b/public/vendor/blade-flags/country-md.svg new file mode 100644 index 0000000..7629cae --- /dev/null +++ b/public/vendor/blade-flags/country-md.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-me.svg b/public/vendor/blade-flags/country-me.svg new file mode 100644 index 0000000..688ac68 --- /dev/null +++ b/public/vendor/blade-flags/country-me.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mf.svg b/public/vendor/blade-flags/country-mf.svg new file mode 100644 index 0000000..ba80ac8 --- /dev/null +++ b/public/vendor/blade-flags/country-mf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mg.svg b/public/vendor/blade-flags/country-mg.svg new file mode 100644 index 0000000..31d7dd7 --- /dev/null +++ b/public/vendor/blade-flags/country-mg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mh.svg b/public/vendor/blade-flags/country-mh.svg new file mode 100644 index 0000000..5e2e73e --- /dev/null +++ b/public/vendor/blade-flags/country-mh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mk.svg b/public/vendor/blade-flags/country-mk.svg new file mode 100644 index 0000000..a963c67 --- /dev/null +++ b/public/vendor/blade-flags/country-mk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ml.svg b/public/vendor/blade-flags/country-ml.svg new file mode 100644 index 0000000..04ef2d1 --- /dev/null +++ b/public/vendor/blade-flags/country-ml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mm.svg b/public/vendor/blade-flags/country-mm.svg new file mode 100644 index 0000000..694fc01 --- /dev/null +++ b/public/vendor/blade-flags/country-mm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mn.svg b/public/vendor/blade-flags/country-mn.svg new file mode 100644 index 0000000..a4de678 --- /dev/null +++ b/public/vendor/blade-flags/country-mn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mo.svg b/public/vendor/blade-flags/country-mo.svg new file mode 100644 index 0000000..501fa56 --- /dev/null +++ b/public/vendor/blade-flags/country-mo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mp.svg b/public/vendor/blade-flags/country-mp.svg new file mode 100644 index 0000000..5ef1850 --- /dev/null +++ b/public/vendor/blade-flags/country-mp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mq.svg b/public/vendor/blade-flags/country-mq.svg new file mode 100644 index 0000000..454b0ab --- /dev/null +++ b/public/vendor/blade-flags/country-mq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mr.svg b/public/vendor/blade-flags/country-mr.svg new file mode 100644 index 0000000..5dbd610 --- /dev/null +++ b/public/vendor/blade-flags/country-mr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ms.svg b/public/vendor/blade-flags/country-ms.svg new file mode 100644 index 0000000..cb3ab68 --- /dev/null +++ b/public/vendor/blade-flags/country-ms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mt.svg b/public/vendor/blade-flags/country-mt.svg new file mode 100644 index 0000000..2caa926 --- /dev/null +++ b/public/vendor/blade-flags/country-mt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mu.svg b/public/vendor/blade-flags/country-mu.svg new file mode 100644 index 0000000..cee3b03 --- /dev/null +++ b/public/vendor/blade-flags/country-mu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mv.svg b/public/vendor/blade-flags/country-mv.svg new file mode 100644 index 0000000..11a5b97 --- /dev/null +++ b/public/vendor/blade-flags/country-mv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mw.svg b/public/vendor/blade-flags/country-mw.svg new file mode 100644 index 0000000..1bf197c --- /dev/null +++ b/public/vendor/blade-flags/country-mw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mx.svg b/public/vendor/blade-flags/country-mx.svg new file mode 100644 index 0000000..3b6db27 --- /dev/null +++ b/public/vendor/blade-flags/country-mx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-my.svg b/public/vendor/blade-flags/country-my.svg new file mode 100644 index 0000000..8f1fb67 --- /dev/null +++ b/public/vendor/blade-flags/country-my.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-mz.svg b/public/vendor/blade-flags/country-mz.svg new file mode 100644 index 0000000..bf9c78b --- /dev/null +++ b/public/vendor/blade-flags/country-mz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-na.svg b/public/vendor/blade-flags/country-na.svg new file mode 100644 index 0000000..25249a1 --- /dev/null +++ b/public/vendor/blade-flags/country-na.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-nc.svg b/public/vendor/blade-flags/country-nc.svg new file mode 100644 index 0000000..fe77888 --- /dev/null +++ b/public/vendor/blade-flags/country-nc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ne.svg b/public/vendor/blade-flags/country-ne.svg new file mode 100644 index 0000000..35dfdac --- /dev/null +++ b/public/vendor/blade-flags/country-ne.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-nf.svg b/public/vendor/blade-flags/country-nf.svg new file mode 100644 index 0000000..9d73aa1 --- /dev/null +++ b/public/vendor/blade-flags/country-nf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ng.svg b/public/vendor/blade-flags/country-ng.svg new file mode 100644 index 0000000..a71382b --- /dev/null +++ b/public/vendor/blade-flags/country-ng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ni.svg b/public/vendor/blade-flags/country-ni.svg new file mode 100644 index 0000000..ffd120b --- /dev/null +++ b/public/vendor/blade-flags/country-ni.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-nl.svg b/public/vendor/blade-flags/country-nl.svg new file mode 100644 index 0000000..db317e5 --- /dev/null +++ b/public/vendor/blade-flags/country-nl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-no.svg b/public/vendor/blade-flags/country-no.svg new file mode 100644 index 0000000..645b5d9 --- /dev/null +++ b/public/vendor/blade-flags/country-no.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-np.svg b/public/vendor/blade-flags/country-np.svg new file mode 100644 index 0000000..540f31c --- /dev/null +++ b/public/vendor/blade-flags/country-np.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-nr.svg b/public/vendor/blade-flags/country-nr.svg new file mode 100644 index 0000000..eb66aad --- /dev/null +++ b/public/vendor/blade-flags/country-nr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-nu.svg b/public/vendor/blade-flags/country-nu.svg new file mode 100644 index 0000000..2532095 --- /dev/null +++ b/public/vendor/blade-flags/country-nu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-nz.svg b/public/vendor/blade-flags/country-nz.svg new file mode 100644 index 0000000..cdac72c --- /dev/null +++ b/public/vendor/blade-flags/country-nz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-om.svg b/public/vendor/blade-flags/country-om.svg new file mode 100644 index 0000000..75ef7cc --- /dev/null +++ b/public/vendor/blade-flags/country-om.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pa.svg b/public/vendor/blade-flags/country-pa.svg new file mode 100644 index 0000000..046069c --- /dev/null +++ b/public/vendor/blade-flags/country-pa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pe.svg b/public/vendor/blade-flags/country-pe.svg new file mode 100644 index 0000000..b2611da --- /dev/null +++ b/public/vendor/blade-flags/country-pe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pf.svg b/public/vendor/blade-flags/country-pf.svg new file mode 100644 index 0000000..6fa2f3d --- /dev/null +++ b/public/vendor/blade-flags/country-pf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pg.svg b/public/vendor/blade-flags/country-pg.svg new file mode 100644 index 0000000..f8a1f47 --- /dev/null +++ b/public/vendor/blade-flags/country-pg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ph.svg b/public/vendor/blade-flags/country-ph.svg new file mode 100644 index 0000000..444a3a8 --- /dev/null +++ b/public/vendor/blade-flags/country-ph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pk.svg b/public/vendor/blade-flags/country-pk.svg new file mode 100644 index 0000000..5bed4ef --- /dev/null +++ b/public/vendor/blade-flags/country-pk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pl.svg b/public/vendor/blade-flags/country-pl.svg new file mode 100644 index 0000000..251d2e9 --- /dev/null +++ b/public/vendor/blade-flags/country-pl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pm.svg b/public/vendor/blade-flags/country-pm.svg new file mode 100644 index 0000000..6dff360 --- /dev/null +++ b/public/vendor/blade-flags/country-pm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pn.svg b/public/vendor/blade-flags/country-pn.svg new file mode 100644 index 0000000..ac99018 --- /dev/null +++ b/public/vendor/blade-flags/country-pn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pr.svg b/public/vendor/blade-flags/country-pr.svg new file mode 100644 index 0000000..0ae8632 --- /dev/null +++ b/public/vendor/blade-flags/country-pr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ps.svg b/public/vendor/blade-flags/country-ps.svg new file mode 100644 index 0000000..915c239 --- /dev/null +++ b/public/vendor/blade-flags/country-ps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pt.svg b/public/vendor/blade-flags/country-pt.svg new file mode 100644 index 0000000..62197b7 --- /dev/null +++ b/public/vendor/blade-flags/country-pt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-pw.svg b/public/vendor/blade-flags/country-pw.svg new file mode 100644 index 0000000..3d41664 --- /dev/null +++ b/public/vendor/blade-flags/country-pw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-py.svg b/public/vendor/blade-flags/country-py.svg new file mode 100644 index 0000000..8536fc7 --- /dev/null +++ b/public/vendor/blade-flags/country-py.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-qa.svg b/public/vendor/blade-flags/country-qa.svg new file mode 100644 index 0000000..1d8ae2a --- /dev/null +++ b/public/vendor/blade-flags/country-qa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-re.svg b/public/vendor/blade-flags/country-re.svg new file mode 100644 index 0000000..847866f --- /dev/null +++ b/public/vendor/blade-flags/country-re.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ro.svg b/public/vendor/blade-flags/country-ro.svg new file mode 100644 index 0000000..da39248 --- /dev/null +++ b/public/vendor/blade-flags/country-ro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-rs.svg b/public/vendor/blade-flags/country-rs.svg new file mode 100644 index 0000000..0fafa09 --- /dev/null +++ b/public/vendor/blade-flags/country-rs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ru.svg b/public/vendor/blade-flags/country-ru.svg new file mode 100644 index 0000000..6d445fe --- /dev/null +++ b/public/vendor/blade-flags/country-ru.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-rw.svg b/public/vendor/blade-flags/country-rw.svg new file mode 100644 index 0000000..6b5ea23 --- /dev/null +++ b/public/vendor/blade-flags/country-rw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sa.svg b/public/vendor/blade-flags/country-sa.svg new file mode 100644 index 0000000..f329d8b --- /dev/null +++ b/public/vendor/blade-flags/country-sa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sb.svg b/public/vendor/blade-flags/country-sb.svg new file mode 100644 index 0000000..bdb171a --- /dev/null +++ b/public/vendor/blade-flags/country-sb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sc.svg b/public/vendor/blade-flags/country-sc.svg new file mode 100644 index 0000000..084e96f --- /dev/null +++ b/public/vendor/blade-flags/country-sc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sd.svg b/public/vendor/blade-flags/country-sd.svg new file mode 100644 index 0000000..9f6fdb8 --- /dev/null +++ b/public/vendor/blade-flags/country-sd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-se.svg b/public/vendor/blade-flags/country-se.svg new file mode 100644 index 0000000..eb7e84b --- /dev/null +++ b/public/vendor/blade-flags/country-se.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sg.svg b/public/vendor/blade-flags/country-sg.svg new file mode 100644 index 0000000..95cb9e3 --- /dev/null +++ b/public/vendor/blade-flags/country-sg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sh-ac.svg b/public/vendor/blade-flags/country-sh-ac.svg new file mode 100644 index 0000000..85995e7 --- /dev/null +++ b/public/vendor/blade-flags/country-sh-ac.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sh-ta.svg b/public/vendor/blade-flags/country-sh-ta.svg new file mode 100644 index 0000000..3f78d34 --- /dev/null +++ b/public/vendor/blade-flags/country-sh-ta.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sh.svg b/public/vendor/blade-flags/country-sh.svg new file mode 100644 index 0000000..9de918a --- /dev/null +++ b/public/vendor/blade-flags/country-sh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-si.svg b/public/vendor/blade-flags/country-si.svg new file mode 100644 index 0000000..fb09422 --- /dev/null +++ b/public/vendor/blade-flags/country-si.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sj.svg b/public/vendor/blade-flags/country-sj.svg new file mode 100644 index 0000000..645b5d9 --- /dev/null +++ b/public/vendor/blade-flags/country-sj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sk.svg b/public/vendor/blade-flags/country-sk.svg new file mode 100644 index 0000000..ef459d7 --- /dev/null +++ b/public/vendor/blade-flags/country-sk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sl.svg b/public/vendor/blade-flags/country-sl.svg new file mode 100644 index 0000000..85110f1 --- /dev/null +++ b/public/vendor/blade-flags/country-sl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sm.svg b/public/vendor/blade-flags/country-sm.svg new file mode 100644 index 0000000..320c18b --- /dev/null +++ b/public/vendor/blade-flags/country-sm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sn.svg b/public/vendor/blade-flags/country-sn.svg new file mode 100644 index 0000000..4e89471 --- /dev/null +++ b/public/vendor/blade-flags/country-sn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-so.svg b/public/vendor/blade-flags/country-so.svg new file mode 100644 index 0000000..b4e233f --- /dev/null +++ b/public/vendor/blade-flags/country-so.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sr.svg b/public/vendor/blade-flags/country-sr.svg new file mode 100644 index 0000000..9ec22f2 --- /dev/null +++ b/public/vendor/blade-flags/country-sr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ss.svg b/public/vendor/blade-flags/country-ss.svg new file mode 100644 index 0000000..9e19326 --- /dev/null +++ b/public/vendor/blade-flags/country-ss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-st.svg b/public/vendor/blade-flags/country-st.svg new file mode 100644 index 0000000..e4ee058 --- /dev/null +++ b/public/vendor/blade-flags/country-st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sv.svg b/public/vendor/blade-flags/country-sv.svg new file mode 100644 index 0000000..0684eee --- /dev/null +++ b/public/vendor/blade-flags/country-sv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sx.svg b/public/vendor/blade-flags/country-sx.svg new file mode 100644 index 0000000..b87e0b1 --- /dev/null +++ b/public/vendor/blade-flags/country-sx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sy.svg b/public/vendor/blade-flags/country-sy.svg new file mode 100644 index 0000000..2baf7a3 --- /dev/null +++ b/public/vendor/blade-flags/country-sy.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-sz.svg b/public/vendor/blade-flags/country-sz.svg new file mode 100644 index 0000000..797fba7 --- /dev/null +++ b/public/vendor/blade-flags/country-sz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tc.svg b/public/vendor/blade-flags/country-tc.svg new file mode 100644 index 0000000..bad0c4b --- /dev/null +++ b/public/vendor/blade-flags/country-tc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-td.svg b/public/vendor/blade-flags/country-td.svg new file mode 100644 index 0000000..77094c2 --- /dev/null +++ b/public/vendor/blade-flags/country-td.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tf.svg b/public/vendor/blade-flags/country-tf.svg new file mode 100644 index 0000000..513ba22 --- /dev/null +++ b/public/vendor/blade-flags/country-tf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tg.svg b/public/vendor/blade-flags/country-tg.svg new file mode 100644 index 0000000..299cc7b --- /dev/null +++ b/public/vendor/blade-flags/country-tg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-th.svg b/public/vendor/blade-flags/country-th.svg new file mode 100644 index 0000000..a696f0f --- /dev/null +++ b/public/vendor/blade-flags/country-th.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tj.svg b/public/vendor/blade-flags/country-tj.svg new file mode 100644 index 0000000..9dcc48d --- /dev/null +++ b/public/vendor/blade-flags/country-tj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tk.svg b/public/vendor/blade-flags/country-tk.svg new file mode 100644 index 0000000..3d547d0 --- /dev/null +++ b/public/vendor/blade-flags/country-tk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tl.svg b/public/vendor/blade-flags/country-tl.svg new file mode 100644 index 0000000..a907d6b --- /dev/null +++ b/public/vendor/blade-flags/country-tl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tm.svg b/public/vendor/blade-flags/country-tm.svg new file mode 100644 index 0000000..965fd06 --- /dev/null +++ b/public/vendor/blade-flags/country-tm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tn.svg b/public/vendor/blade-flags/country-tn.svg new file mode 100644 index 0000000..d480c13 --- /dev/null +++ b/public/vendor/blade-flags/country-tn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-to.svg b/public/vendor/blade-flags/country-to.svg new file mode 100644 index 0000000..de9ade8 --- /dev/null +++ b/public/vendor/blade-flags/country-to.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tr.svg b/public/vendor/blade-flags/country-tr.svg new file mode 100644 index 0000000..3c94d30 --- /dev/null +++ b/public/vendor/blade-flags/country-tr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tt.svg b/public/vendor/blade-flags/country-tt.svg new file mode 100644 index 0000000..714e07c --- /dev/null +++ b/public/vendor/blade-flags/country-tt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tv.svg b/public/vendor/blade-flags/country-tv.svg new file mode 100644 index 0000000..1e9c007 --- /dev/null +++ b/public/vendor/blade-flags/country-tv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tw.svg b/public/vendor/blade-flags/country-tw.svg new file mode 100644 index 0000000..67b99f4 --- /dev/null +++ b/public/vendor/blade-flags/country-tw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-tz.svg b/public/vendor/blade-flags/country-tz.svg new file mode 100644 index 0000000..d2ecdf2 --- /dev/null +++ b/public/vendor/blade-flags/country-tz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ua.svg b/public/vendor/blade-flags/country-ua.svg new file mode 100644 index 0000000..234f47c --- /dev/null +++ b/public/vendor/blade-flags/country-ua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ug.svg b/public/vendor/blade-flags/country-ug.svg new file mode 100644 index 0000000..378d726 --- /dev/null +++ b/public/vendor/blade-flags/country-ug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-uk.svg b/public/vendor/blade-flags/country-uk.svg new file mode 100644 index 0000000..b5b9ab8 --- /dev/null +++ b/public/vendor/blade-flags/country-uk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-um.svg b/public/vendor/blade-flags/country-um.svg new file mode 100644 index 0000000..f009919 --- /dev/null +++ b/public/vendor/blade-flags/country-um.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-united_nations.svg b/public/vendor/blade-flags/country-united_nations.svg new file mode 100644 index 0000000..c7759a9 --- /dev/null +++ b/public/vendor/blade-flags/country-united_nations.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-us.svg b/public/vendor/blade-flags/country-us.svg new file mode 100644 index 0000000..f009919 --- /dev/null +++ b/public/vendor/blade-flags/country-us.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-uy.svg b/public/vendor/blade-flags/country-uy.svg new file mode 100644 index 0000000..343ddd5 --- /dev/null +++ b/public/vendor/blade-flags/country-uy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-uz.svg b/public/vendor/blade-flags/country-uz.svg new file mode 100644 index 0000000..b58d173 --- /dev/null +++ b/public/vendor/blade-flags/country-uz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-va.svg b/public/vendor/blade-flags/country-va.svg new file mode 100644 index 0000000..5dd2210 --- /dev/null +++ b/public/vendor/blade-flags/country-va.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-vc.svg b/public/vendor/blade-flags/country-vc.svg new file mode 100644 index 0000000..01707fc --- /dev/null +++ b/public/vendor/blade-flags/country-vc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ve.svg b/public/vendor/blade-flags/country-ve.svg new file mode 100644 index 0000000..06ed4eb --- /dev/null +++ b/public/vendor/blade-flags/country-ve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-vg.svg b/public/vendor/blade-flags/country-vg.svg new file mode 100644 index 0000000..e49edc2 --- /dev/null +++ b/public/vendor/blade-flags/country-vg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-vi.svg b/public/vendor/blade-flags/country-vi.svg new file mode 100644 index 0000000..e27415d --- /dev/null +++ b/public/vendor/blade-flags/country-vi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-vn.svg b/public/vendor/blade-flags/country-vn.svg new file mode 100644 index 0000000..2416c3e --- /dev/null +++ b/public/vendor/blade-flags/country-vn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-vu.svg b/public/vendor/blade-flags/country-vu.svg new file mode 100644 index 0000000..079390f --- /dev/null +++ b/public/vendor/blade-flags/country-vu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-wf.svg b/public/vendor/blade-flags/country-wf.svg new file mode 100644 index 0000000..d59b75d --- /dev/null +++ b/public/vendor/blade-flags/country-wf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ws.svg b/public/vendor/blade-flags/country-ws.svg new file mode 100644 index 0000000..e6e2ddc --- /dev/null +++ b/public/vendor/blade-flags/country-ws.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-xk.svg b/public/vendor/blade-flags/country-xk.svg new file mode 100644 index 0000000..092f46d --- /dev/null +++ b/public/vendor/blade-flags/country-xk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-xx.svg b/public/vendor/blade-flags/country-xx.svg new file mode 100644 index 0000000..cf2a5fe --- /dev/null +++ b/public/vendor/blade-flags/country-xx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-ye.svg b/public/vendor/blade-flags/country-ye.svg new file mode 100644 index 0000000..d4d0468 --- /dev/null +++ b/public/vendor/blade-flags/country-ye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-yt.svg b/public/vendor/blade-flags/country-yt.svg new file mode 100644 index 0000000..38e5394 --- /dev/null +++ b/public/vendor/blade-flags/country-yt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-yu.svg b/public/vendor/blade-flags/country-yu.svg new file mode 100644 index 0000000..17b890c --- /dev/null +++ b/public/vendor/blade-flags/country-yu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-za.svg b/public/vendor/blade-flags/country-za.svg new file mode 100644 index 0000000..9cd11ba --- /dev/null +++ b/public/vendor/blade-flags/country-za.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-zm.svg b/public/vendor/blade-flags/country-zm.svg new file mode 100644 index 0000000..5bc9a14 --- /dev/null +++ b/public/vendor/blade-flags/country-zm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/country-zw.svg b/public/vendor/blade-flags/country-zw.svg new file mode 100644 index 0000000..7cb8f05 --- /dev/null +++ b/public/vendor/blade-flags/country-zw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-af.svg b/public/vendor/blade-flags/language-af.svg new file mode 100644 index 0000000..9cd11ba --- /dev/null +++ b/public/vendor/blade-flags/language-af.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ak.svg b/public/vendor/blade-flags/language-ak.svg new file mode 100644 index 0000000..eae250f --- /dev/null +++ b/public/vendor/blade-flags/language-ak.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-am.svg b/public/vendor/blade-flags/language-am.svg new file mode 100644 index 0000000..513ef71 --- /dev/null +++ b/public/vendor/blade-flags/language-am.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ar-iq.svg b/public/vendor/blade-flags/language-ar-iq.svg new file mode 100644 index 0000000..359e221 --- /dev/null +++ b/public/vendor/blade-flags/language-ar-iq.svg @@ -0,0 +1 @@ + diff --git a/public/vendor/blade-flags/language-ar.svg b/public/vendor/blade-flags/language-ar.svg new file mode 100644 index 0000000..0b62672 --- /dev/null +++ b/public/vendor/blade-flags/language-ar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-as.svg b/public/vendor/blade-flags/language-as.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-as.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ay.svg b/public/vendor/blade-flags/language-ay.svg new file mode 100644 index 0000000..6581e85 --- /dev/null +++ b/public/vendor/blade-flags/language-ay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-az.svg b/public/vendor/blade-flags/language-az.svg new file mode 100644 index 0000000..2975128 --- /dev/null +++ b/public/vendor/blade-flags/language-az.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-be.svg b/public/vendor/blade-flags/language-be.svg new file mode 100644 index 0000000..567959a --- /dev/null +++ b/public/vendor/blade-flags/language-be.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-bg.svg b/public/vendor/blade-flags/language-bg.svg new file mode 100644 index 0000000..456bc19 --- /dev/null +++ b/public/vendor/blade-flags/language-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-bho.svg b/public/vendor/blade-flags/language-bho.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-bho.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-bi.svg b/public/vendor/blade-flags/language-bi.svg new file mode 100644 index 0000000..079390f --- /dev/null +++ b/public/vendor/blade-flags/language-bi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-bm.svg b/public/vendor/blade-flags/language-bm.svg new file mode 100644 index 0000000..04ef2d1 --- /dev/null +++ b/public/vendor/blade-flags/language-bm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-bn.svg b/public/vendor/blade-flags/language-bn.svg new file mode 100644 index 0000000..f2b708d --- /dev/null +++ b/public/vendor/blade-flags/language-bn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-bs.svg b/public/vendor/blade-flags/language-bs.svg new file mode 100644 index 0000000..9b05886 --- /dev/null +++ b/public/vendor/blade-flags/language-bs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ca.svg b/public/vendor/blade-flags/language-ca.svg new file mode 100644 index 0000000..97f1765 --- /dev/null +++ b/public/vendor/blade-flags/language-ca.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ceb.svg b/public/vendor/blade-flags/language-ceb.svg new file mode 100644 index 0000000..444a3a8 --- /dev/null +++ b/public/vendor/blade-flags/language-ceb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ch.svg b/public/vendor/blade-flags/language-ch.svg new file mode 100644 index 0000000..8d18f27 --- /dev/null +++ b/public/vendor/blade-flags/language-ch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-chm.svg b/public/vendor/blade-flags/language-chm.svg new file mode 100644 index 0000000..6d445fe --- /dev/null +++ b/public/vendor/blade-flags/language-chm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-co.svg b/public/vendor/blade-flags/language-co.svg new file mode 100644 index 0000000..ba80ac8 --- /dev/null +++ b/public/vendor/blade-flags/language-co.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-cs.svg b/public/vendor/blade-flags/language-cs.svg new file mode 100644 index 0000000..444a752 --- /dev/null +++ b/public/vendor/blade-flags/language-cs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-cy.svg b/public/vendor/blade-flags/language-cy.svg new file mode 100644 index 0000000..b2572c6 --- /dev/null +++ b/public/vendor/blade-flags/language-cy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-da.svg b/public/vendor/blade-flags/language-da.svg new file mode 100644 index 0000000..582780e --- /dev/null +++ b/public/vendor/blade-flags/language-da.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-de.svg b/public/vendor/blade-flags/language-de.svg new file mode 100644 index 0000000..da4db40 --- /dev/null +++ b/public/vendor/blade-flags/language-de.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-dv.svg b/public/vendor/blade-flags/language-dv.svg new file mode 100644 index 0000000..11a5b97 --- /dev/null +++ b/public/vendor/blade-flags/language-dv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-dz.svg b/public/vendor/blade-flags/language-dz.svg new file mode 100644 index 0000000..d1223f9 --- /dev/null +++ b/public/vendor/blade-flags/language-dz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-el.svg b/public/vendor/blade-flags/language-el.svg new file mode 100644 index 0000000..99af0d9 --- /dev/null +++ b/public/vendor/blade-flags/language-el.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-en-au.svg b/public/vendor/blade-flags/language-en-au.svg new file mode 100644 index 0000000..fbb20da --- /dev/null +++ b/public/vendor/blade-flags/language-en-au.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-en-ca.svg b/public/vendor/blade-flags/language-en-ca.svg new file mode 100644 index 0000000..e2f2b72 --- /dev/null +++ b/public/vendor/blade-flags/language-en-ca.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-en-in.svg b/public/vendor/blade-flags/language-en-in.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-en-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-en-ng.svg b/public/vendor/blade-flags/language-en-ng.svg new file mode 100644 index 0000000..a71382b --- /dev/null +++ b/public/vendor/blade-flags/language-en-ng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-en-nz.svg b/public/vendor/blade-flags/language-en-nz.svg new file mode 100644 index 0000000..cdac72c --- /dev/null +++ b/public/vendor/blade-flags/language-en-nz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-en-us.svg b/public/vendor/blade-flags/language-en-us.svg new file mode 100644 index 0000000..f009919 --- /dev/null +++ b/public/vendor/blade-flags/language-en-us.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-en-za.svg b/public/vendor/blade-flags/language-en-za.svg new file mode 100644 index 0000000..9cd11ba --- /dev/null +++ b/public/vendor/blade-flags/language-en-za.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-en.svg b/public/vendor/blade-flags/language-en.svg new file mode 100644 index 0000000..b5b9ab8 --- /dev/null +++ b/public/vendor/blade-flags/language-en.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-es.svg b/public/vendor/blade-flags/language-es.svg new file mode 100644 index 0000000..5962850 --- /dev/null +++ b/public/vendor/blade-flags/language-es.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-et.svg b/public/vendor/blade-flags/language-et.svg new file mode 100644 index 0000000..a335499 --- /dev/null +++ b/public/vendor/blade-flags/language-et.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-eu.svg b/public/vendor/blade-flags/language-eu.svg new file mode 100644 index 0000000..dc51d78 --- /dev/null +++ b/public/vendor/blade-flags/language-eu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-fa.svg b/public/vendor/blade-flags/language-fa.svg new file mode 100644 index 0000000..01bee48 --- /dev/null +++ b/public/vendor/blade-flags/language-fa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-fi.svg b/public/vendor/blade-flags/language-fi.svg new file mode 100644 index 0000000..12abad0 --- /dev/null +++ b/public/vendor/blade-flags/language-fi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-fil.svg b/public/vendor/blade-flags/language-fil.svg new file mode 100644 index 0000000..444a3a8 --- /dev/null +++ b/public/vendor/blade-flags/language-fil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-fj.svg b/public/vendor/blade-flags/language-fj.svg new file mode 100644 index 0000000..dc7ef02 --- /dev/null +++ b/public/vendor/blade-flags/language-fj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-fo.svg b/public/vendor/blade-flags/language-fo.svg new file mode 100644 index 0000000..e37757a --- /dev/null +++ b/public/vendor/blade-flags/language-fo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-fr.svg b/public/vendor/blade-flags/language-fr.svg new file mode 100644 index 0000000..ba80ac8 --- /dev/null +++ b/public/vendor/blade-flags/language-fr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ga.svg b/public/vendor/blade-flags/language-ga.svg new file mode 100644 index 0000000..586cc8b --- /dev/null +++ b/public/vendor/blade-flags/language-ga.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-gl.svg b/public/vendor/blade-flags/language-gl.svg new file mode 100644 index 0000000..5962850 --- /dev/null +++ b/public/vendor/blade-flags/language-gl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-gn.svg b/public/vendor/blade-flags/language-gn.svg new file mode 100644 index 0000000..8536fc7 --- /dev/null +++ b/public/vendor/blade-flags/language-gn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-gu.svg b/public/vendor/blade-flags/language-gu.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-gu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-gv.svg b/public/vendor/blade-flags/language-gv.svg new file mode 100644 index 0000000..2ea75d7 --- /dev/null +++ b/public/vendor/blade-flags/language-gv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ha.svg b/public/vendor/blade-flags/language-ha.svg new file mode 100644 index 0000000..35dfdac --- /dev/null +++ b/public/vendor/blade-flags/language-ha.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-haw.svg b/public/vendor/blade-flags/language-haw.svg new file mode 100644 index 0000000..f009919 --- /dev/null +++ b/public/vendor/blade-flags/language-haw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-he.svg b/public/vendor/blade-flags/language-he.svg new file mode 100644 index 0000000..1849de8 --- /dev/null +++ b/public/vendor/blade-flags/language-he.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-hi.svg b/public/vendor/blade-flags/language-hi.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-hi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ho.svg b/public/vendor/blade-flags/language-ho.svg new file mode 100644 index 0000000..f8a1f47 --- /dev/null +++ b/public/vendor/blade-flags/language-ho.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-hr.svg b/public/vendor/blade-flags/language-hr.svg new file mode 100644 index 0000000..2f4b984 --- /dev/null +++ b/public/vendor/blade-flags/language-hr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ht.svg b/public/vendor/blade-flags/language-ht.svg new file mode 100644 index 0000000..d9397c9 --- /dev/null +++ b/public/vendor/blade-flags/language-ht.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-hu.svg b/public/vendor/blade-flags/language-hu.svg new file mode 100644 index 0000000..6fb2d38 --- /dev/null +++ b/public/vendor/blade-flags/language-hu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-hy.svg b/public/vendor/blade-flags/language-hy.svg new file mode 100644 index 0000000..a42c60b --- /dev/null +++ b/public/vendor/blade-flags/language-hy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-id.svg b/public/vendor/blade-flags/language-id.svg new file mode 100644 index 0000000..4581d3f --- /dev/null +++ b/public/vendor/blade-flags/language-id.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ig.svg b/public/vendor/blade-flags/language-ig.svg new file mode 100644 index 0000000..a71382b --- /dev/null +++ b/public/vendor/blade-flags/language-ig.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ilo.svg b/public/vendor/blade-flags/language-ilo.svg new file mode 100644 index 0000000..444a3a8 --- /dev/null +++ b/public/vendor/blade-flags/language-ilo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-is.svg b/public/vendor/blade-flags/language-is.svg new file mode 100644 index 0000000..eb52aa9 --- /dev/null +++ b/public/vendor/blade-flags/language-is.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-it.svg b/public/vendor/blade-flags/language-it.svg new file mode 100644 index 0000000..d999fb9 --- /dev/null +++ b/public/vendor/blade-flags/language-it.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ja.svg b/public/vendor/blade-flags/language-ja.svg new file mode 100644 index 0000000..0b751fd --- /dev/null +++ b/public/vendor/blade-flags/language-ja.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-jv.svg b/public/vendor/blade-flags/language-jv.svg new file mode 100644 index 0000000..4581d3f --- /dev/null +++ b/public/vendor/blade-flags/language-jv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ka.svg b/public/vendor/blade-flags/language-ka.svg new file mode 100644 index 0000000..c2bb068 --- /dev/null +++ b/public/vendor/blade-flags/language-ka.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-kk.svg b/public/vendor/blade-flags/language-kk.svg new file mode 100644 index 0000000..707d877 --- /dev/null +++ b/public/vendor/blade-flags/language-kk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-kl.svg b/public/vendor/blade-flags/language-kl.svg new file mode 100644 index 0000000..da92751 --- /dev/null +++ b/public/vendor/blade-flags/language-kl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-km.svg b/public/vendor/blade-flags/language-km.svg new file mode 100644 index 0000000..af61a19 --- /dev/null +++ b/public/vendor/blade-flags/language-km.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-kn.svg b/public/vendor/blade-flags/language-kn.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-kn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ko.svg b/public/vendor/blade-flags/language-ko.svg new file mode 100644 index 0000000..1974f20 --- /dev/null +++ b/public/vendor/blade-flags/language-ko.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-kri.svg b/public/vendor/blade-flags/language-kri.svg new file mode 100644 index 0000000..85110f1 --- /dev/null +++ b/public/vendor/blade-flags/language-kri.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ku.svg b/public/vendor/blade-flags/language-ku.svg new file mode 100644 index 0000000..f2194f4 --- /dev/null +++ b/public/vendor/blade-flags/language-ku.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ky.svg b/public/vendor/blade-flags/language-ky.svg new file mode 100644 index 0000000..b7434ff --- /dev/null +++ b/public/vendor/blade-flags/language-ky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-la.svg b/public/vendor/blade-flags/language-la.svg new file mode 100644 index 0000000..5dd2210 --- /dev/null +++ b/public/vendor/blade-flags/language-la.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-lb.svg b/public/vendor/blade-flags/language-lb.svg new file mode 100644 index 0000000..5ea00b9 --- /dev/null +++ b/public/vendor/blade-flags/language-lb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-lg.svg b/public/vendor/blade-flags/language-lg.svg new file mode 100644 index 0000000..378d726 --- /dev/null +++ b/public/vendor/blade-flags/language-lg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ln.svg b/public/vendor/blade-flags/language-ln.svg new file mode 100644 index 0000000..ddeaf9e --- /dev/null +++ b/public/vendor/blade-flags/language-ln.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-lo.svg b/public/vendor/blade-flags/language-lo.svg new file mode 100644 index 0000000..de25394 --- /dev/null +++ b/public/vendor/blade-flags/language-lo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-lt.svg b/public/vendor/blade-flags/language-lt.svg new file mode 100644 index 0000000..017ced0 --- /dev/null +++ b/public/vendor/blade-flags/language-lt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-lu.svg b/public/vendor/blade-flags/language-lu.svg new file mode 100644 index 0000000..ddeaf9e --- /dev/null +++ b/public/vendor/blade-flags/language-lu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-lv.svg b/public/vendor/blade-flags/language-lv.svg new file mode 100644 index 0000000..c2bdedb --- /dev/null +++ b/public/vendor/blade-flags/language-lv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-mg.svg b/public/vendor/blade-flags/language-mg.svg new file mode 100644 index 0000000..31d7dd7 --- /dev/null +++ b/public/vendor/blade-flags/language-mg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-mh.svg b/public/vendor/blade-flags/language-mh.svg new file mode 100644 index 0000000..5e2e73e --- /dev/null +++ b/public/vendor/blade-flags/language-mh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-mi.svg b/public/vendor/blade-flags/language-mi.svg new file mode 100644 index 0000000..cdac72c --- /dev/null +++ b/public/vendor/blade-flags/language-mi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-mk.svg b/public/vendor/blade-flags/language-mk.svg new file mode 100644 index 0000000..a963c67 --- /dev/null +++ b/public/vendor/blade-flags/language-mk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ml.svg b/public/vendor/blade-flags/language-ml.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-ml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-mn.svg b/public/vendor/blade-flags/language-mn.svg new file mode 100644 index 0000000..a4de678 --- /dev/null +++ b/public/vendor/blade-flags/language-mn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-mr.svg b/public/vendor/blade-flags/language-mr.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-mr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-mrj.svg b/public/vendor/blade-flags/language-mrj.svg new file mode 100644 index 0000000..6d445fe --- /dev/null +++ b/public/vendor/blade-flags/language-mrj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ms.svg b/public/vendor/blade-flags/language-ms.svg new file mode 100644 index 0000000..8f1fb67 --- /dev/null +++ b/public/vendor/blade-flags/language-ms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-mt.svg b/public/vendor/blade-flags/language-mt.svg new file mode 100644 index 0000000..2caa926 --- /dev/null +++ b/public/vendor/blade-flags/language-mt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-my.svg b/public/vendor/blade-flags/language-my.svg new file mode 100644 index 0000000..694fc01 --- /dev/null +++ b/public/vendor/blade-flags/language-my.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-na.svg b/public/vendor/blade-flags/language-na.svg new file mode 100644 index 0000000..eb66aad --- /dev/null +++ b/public/vendor/blade-flags/language-na.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-nb.svg b/public/vendor/blade-flags/language-nb.svg new file mode 100644 index 0000000..645b5d9 --- /dev/null +++ b/public/vendor/blade-flags/language-nb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-nd.svg b/public/vendor/blade-flags/language-nd.svg new file mode 100644 index 0000000..7cb8f05 --- /dev/null +++ b/public/vendor/blade-flags/language-nd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ne.svg b/public/vendor/blade-flags/language-ne.svg new file mode 100644 index 0000000..540f31c --- /dev/null +++ b/public/vendor/blade-flags/language-ne.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-nl.svg b/public/vendor/blade-flags/language-nl.svg new file mode 100644 index 0000000..db317e5 --- /dev/null +++ b/public/vendor/blade-flags/language-nl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-nn.svg b/public/vendor/blade-flags/language-nn.svg new file mode 100644 index 0000000..645b5d9 --- /dev/null +++ b/public/vendor/blade-flags/language-nn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-no.svg b/public/vendor/blade-flags/language-no.svg new file mode 100644 index 0000000..645b5d9 --- /dev/null +++ b/public/vendor/blade-flags/language-no.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-nr.svg b/public/vendor/blade-flags/language-nr.svg new file mode 100644 index 0000000..9cd11ba --- /dev/null +++ b/public/vendor/blade-flags/language-nr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ny.svg b/public/vendor/blade-flags/language-ny.svg new file mode 100644 index 0000000..1bf197c --- /dev/null +++ b/public/vendor/blade-flags/language-ny.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-pa.svg b/public/vendor/blade-flags/language-pa.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-pa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-pap.svg b/public/vendor/blade-flags/language-pap.svg new file mode 100644 index 0000000..4e53f3e --- /dev/null +++ b/public/vendor/blade-flags/language-pap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-pl.svg b/public/vendor/blade-flags/language-pl.svg new file mode 100644 index 0000000..251d2e9 --- /dev/null +++ b/public/vendor/blade-flags/language-pl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ps.svg b/public/vendor/blade-flags/language-ps.svg new file mode 100644 index 0000000..720b04b --- /dev/null +++ b/public/vendor/blade-flags/language-ps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-pt-br.svg b/public/vendor/blade-flags/language-pt-br.svg new file mode 100644 index 0000000..d70ef6f --- /dev/null +++ b/public/vendor/blade-flags/language-pt-br.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-pt.svg b/public/vendor/blade-flags/language-pt.svg new file mode 100644 index 0000000..62197b7 --- /dev/null +++ b/public/vendor/blade-flags/language-pt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-rn.svg b/public/vendor/blade-flags/language-rn.svg new file mode 100644 index 0000000..9485daa --- /dev/null +++ b/public/vendor/blade-flags/language-rn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ro.svg b/public/vendor/blade-flags/language-ro.svg new file mode 100644 index 0000000..da39248 --- /dev/null +++ b/public/vendor/blade-flags/language-ro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ru.svg b/public/vendor/blade-flags/language-ru.svg new file mode 100644 index 0000000..6d445fe --- /dev/null +++ b/public/vendor/blade-flags/language-ru.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-rw.svg b/public/vendor/blade-flags/language-rw.svg new file mode 100644 index 0000000..6b5ea23 --- /dev/null +++ b/public/vendor/blade-flags/language-rw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sd.svg b/public/vendor/blade-flags/language-sd.svg new file mode 100644 index 0000000..5bed4ef --- /dev/null +++ b/public/vendor/blade-flags/language-sd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sg.svg b/public/vendor/blade-flags/language-sg.svg new file mode 100644 index 0000000..5002f17 --- /dev/null +++ b/public/vendor/blade-flags/language-sg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-si.svg b/public/vendor/blade-flags/language-si.svg new file mode 100644 index 0000000..190daa1 --- /dev/null +++ b/public/vendor/blade-flags/language-si.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sk.svg b/public/vendor/blade-flags/language-sk.svg new file mode 100644 index 0000000..ef459d7 --- /dev/null +++ b/public/vendor/blade-flags/language-sk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sl.svg b/public/vendor/blade-flags/language-sl.svg new file mode 100644 index 0000000..fb09422 --- /dev/null +++ b/public/vendor/blade-flags/language-sl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sm.svg b/public/vendor/blade-flags/language-sm.svg new file mode 100644 index 0000000..e6e2ddc --- /dev/null +++ b/public/vendor/blade-flags/language-sm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sn.svg b/public/vendor/blade-flags/language-sn.svg new file mode 100644 index 0000000..7cb8f05 --- /dev/null +++ b/public/vendor/blade-flags/language-sn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-so.svg b/public/vendor/blade-flags/language-so.svg new file mode 100644 index 0000000..b4e233f --- /dev/null +++ b/public/vendor/blade-flags/language-so.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sq.svg b/public/vendor/blade-flags/language-sq.svg new file mode 100644 index 0000000..b22e166 --- /dev/null +++ b/public/vendor/blade-flags/language-sq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sr.svg b/public/vendor/blade-flags/language-sr.svg new file mode 100644 index 0000000..0fafa09 --- /dev/null +++ b/public/vendor/blade-flags/language-sr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ss.svg b/public/vendor/blade-flags/language-ss.svg new file mode 100644 index 0000000..797fba7 --- /dev/null +++ b/public/vendor/blade-flags/language-ss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-st.svg b/public/vendor/blade-flags/language-st.svg new file mode 100644 index 0000000..ab13409 --- /dev/null +++ b/public/vendor/blade-flags/language-st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-su.svg b/public/vendor/blade-flags/language-su.svg new file mode 100644 index 0000000..4581d3f --- /dev/null +++ b/public/vendor/blade-flags/language-su.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sv.svg b/public/vendor/blade-flags/language-sv.svg new file mode 100644 index 0000000..eb7e84b --- /dev/null +++ b/public/vendor/blade-flags/language-sv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-sw.svg b/public/vendor/blade-flags/language-sw.svg new file mode 100644 index 0000000..06241da --- /dev/null +++ b/public/vendor/blade-flags/language-sw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ta.svg b/public/vendor/blade-flags/language-ta.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-ta.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-te.svg b/public/vendor/blade-flags/language-te.svg new file mode 100644 index 0000000..3acdb94 --- /dev/null +++ b/public/vendor/blade-flags/language-te.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-tg.svg b/public/vendor/blade-flags/language-tg.svg new file mode 100644 index 0000000..9dcc48d --- /dev/null +++ b/public/vendor/blade-flags/language-tg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-th.svg b/public/vendor/blade-flags/language-th.svg new file mode 100644 index 0000000..a696f0f --- /dev/null +++ b/public/vendor/blade-flags/language-th.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-tk.svg b/public/vendor/blade-flags/language-tk.svg new file mode 100644 index 0000000..965fd06 --- /dev/null +++ b/public/vendor/blade-flags/language-tk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-tl.svg b/public/vendor/blade-flags/language-tl.svg new file mode 100644 index 0000000..444a3a8 --- /dev/null +++ b/public/vendor/blade-flags/language-tl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-tn.svg b/public/vendor/blade-flags/language-tn.svg new file mode 100644 index 0000000..d2dfb48 --- /dev/null +++ b/public/vendor/blade-flags/language-tn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-to.svg b/public/vendor/blade-flags/language-to.svg new file mode 100644 index 0000000..de9ade8 --- /dev/null +++ b/public/vendor/blade-flags/language-to.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-tr.svg b/public/vendor/blade-flags/language-tr.svg new file mode 100644 index 0000000..3c94d30 --- /dev/null +++ b/public/vendor/blade-flags/language-tr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ty.svg b/public/vendor/blade-flags/language-ty.svg new file mode 100644 index 0000000..6fa2f3d --- /dev/null +++ b/public/vendor/blade-flags/language-ty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-uk.svg b/public/vendor/blade-flags/language-uk.svg new file mode 100644 index 0000000..234f47c --- /dev/null +++ b/public/vendor/blade-flags/language-uk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-ur.svg b/public/vendor/blade-flags/language-ur.svg new file mode 100644 index 0000000..5bed4ef --- /dev/null +++ b/public/vendor/blade-flags/language-ur.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-uz.svg b/public/vendor/blade-flags/language-uz.svg new file mode 100644 index 0000000..b58d173 --- /dev/null +++ b/public/vendor/blade-flags/language-uz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-vi.svg b/public/vendor/blade-flags/language-vi.svg new file mode 100644 index 0000000..2416c3e --- /dev/null +++ b/public/vendor/blade-flags/language-vi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-xh.svg b/public/vendor/blade-flags/language-xh.svg new file mode 100644 index 0000000..9cd11ba --- /dev/null +++ b/public/vendor/blade-flags/language-xh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-xx.svg b/public/vendor/blade-flags/language-xx.svg new file mode 100644 index 0000000..cf2a5fe --- /dev/null +++ b/public/vendor/blade-flags/language-xx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-yi.svg b/public/vendor/blade-flags/language-yi.svg new file mode 100644 index 0000000..ed3d388 --- /dev/null +++ b/public/vendor/blade-flags/language-yi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-yo.svg b/public/vendor/blade-flags/language-yo.svg new file mode 100644 index 0000000..a71382b --- /dev/null +++ b/public/vendor/blade-flags/language-yo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-yua.svg b/public/vendor/blade-flags/language-yua.svg new file mode 100644 index 0000000..3b6db27 --- /dev/null +++ b/public/vendor/blade-flags/language-yua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-zh-TW.svg b/public/vendor/blade-flags/language-zh-TW.svg new file mode 100644 index 0000000..0b23b53 --- /dev/null +++ b/public/vendor/blade-flags/language-zh-TW.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-zh.svg b/public/vendor/blade-flags/language-zh.svg new file mode 100644 index 0000000..0b23b53 --- /dev/null +++ b/public/vendor/blade-flags/language-zh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vendor/blade-flags/language-zu.svg b/public/vendor/blade-flags/language-zu.svg new file mode 100644 index 0000000..9cd11ba --- /dev/null +++ b/public/vendor/blade-flags/language-zu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/css/app.css b/resources/css/app.css new file mode 100644 index 0000000..f100001 --- /dev/null +++ b/resources/css/app.css @@ -0,0 +1,66 @@ +@import 'tailwindcss'; +@import '../../vendor/livewire/flux/dist/flux.css'; + +@source '../views'; +@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; +@source '../../vendor/livewire/flux-pro/stubs/**/*.blade.php'; +@source '../../vendor/livewire/flux/stubs/**/*.blade.php'; + +@custom-variant dark (&:where(.dark, .dark *)); + +@theme { + --font-sans: 'Inconsolata', monospace; + + --color-zinc-50: #fafafa; + --color-zinc-100: #f5f5f5; + --color-zinc-200: #e5e5e5; + --color-zinc-300: #d4d4d4; + --color-zinc-400: #a3a3a3; + --color-zinc-500: #737373; + --color-zinc-600: #525252; + --color-zinc-700: #404040; + --color-zinc-800: #262626; + --color-zinc-900: #171717; + --color-zinc-950: #0a0a0a; + + --color-accent: var(--color-neutral-800); + --color-accent-content: var(--color-neutral-800); + --color-accent-foreground: var(--color-white); +} + +@layer theme { + .dark { + --color-accent: var(--color-white); + --color-accent-content: var(--color-white); + --color-accent-foreground: var(--color-neutral-800); + } +} + +@layer base { + + *, + ::after, + ::before, + ::backdrop, + ::file-selector-button { + border-color: var(--color-gray-200, currentColor); + } +} + +[data-flux-field]:not(ui-radio, ui-checkbox) { + @apply grid gap-2; +} + +[data-flux-label] { + @apply !mb-0 !leading-tight; +} + +input:focus[data-flux-control], +textarea:focus[data-flux-control], +select:focus[data-flux-control] { + @apply outline-hidden ring-2 ring-accent ring-offset-2 ring-offset-accent-foreground; +} + +/* \[:where(&)\]:size-4 { + @apply size-4; +} */ diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/components/action-message.blade.php b/resources/views/components/action-message.blade.php new file mode 100644 index 0000000..d313ee6 --- /dev/null +++ b/resources/views/components/action-message.blade.php @@ -0,0 +1,14 @@ +@props([ + 'on', +]) + +
merge(['class' => 'text-sm']) }} +> + {{ $slot->isEmpty() ? __('Saved.') : $slot }} +
diff --git a/resources/views/components/app-logo-icon.blade.php b/resources/views/components/app-logo-icon.blade.php new file mode 100644 index 0000000..7f0a613 --- /dev/null +++ b/resources/views/components/app-logo-icon.blade.php @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/resources/views/components/app-logo.blade.php b/resources/views/components/app-logo.blade.php new file mode 100644 index 0000000..ec6bb4b --- /dev/null +++ b/resources/views/components/app-logo.blade.php @@ -0,0 +1,7 @@ +
+ +
+
+ {{ config('app.name') }} +
diff --git a/resources/views/components/auth-header.blade.php b/resources/views/components/auth-header.blade.php new file mode 100644 index 0000000..e596a3f --- /dev/null +++ b/resources/views/components/auth-header.blade.php @@ -0,0 +1,9 @@ +@props([ + 'title', + 'description', +]) + +
+ {{ $title }} + {{ $description }} +
diff --git a/resources/views/components/auth-session-status.blade.php b/resources/views/components/auth-session-status.blade.php new file mode 100644 index 0000000..98e0011 --- /dev/null +++ b/resources/views/components/auth-session-status.blade.php @@ -0,0 +1,9 @@ +@props([ + 'status', +]) + +@if ($status) +
merge(['class' => 'font-medium text-sm text-green-600']) }}> + {{ $status }} +
+@endif diff --git a/resources/views/components/layouts/app.blade.php b/resources/views/components/layouts/app.blade.php new file mode 100644 index 0000000..3d15107 --- /dev/null +++ b/resources/views/components/layouts/app.blade.php @@ -0,0 +1,5 @@ + + + {{ $slot }} + + diff --git a/resources/views/components/layouts/app/header.blade.php b/resources/views/components/layouts/app/header.blade.php new file mode 100644 index 0000000..addf191 --- /dev/null +++ b/resources/views/components/layouts/app/header.blade.php @@ -0,0 +1,137 @@ + + + + @include('partials.head') + + + + + + + + + + + + {{ __('Dashboard') }} + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + {{ auth()->user()->initials() }} + + + +
+ {{ auth()->user()->name }} + {{ auth()->user()->email }} +
+
+
+
+ + + + + {{ __('Settings') }} + + + + +
+ @csrf + + {{ __('Log Out') }} + +
+
+
+
+ + + + + + + + + + + + + {{ __('Dashboard') }} + + + + + + + + + {{ __('Repository') }} + + + + {{ __('Documentation') }} + + + + +{{ $slot }} + +@fluxScripts + + + + + diff --git a/resources/views/components/layouts/app/sidebar.blade.php b/resources/views/components/layouts/app/sidebar.blade.php new file mode 100644 index 0000000..6b59dcc --- /dev/null +++ b/resources/views/components/layouts/app/sidebar.blade.php @@ -0,0 +1,182 @@ + + + + @include('partials.head') + + + + + + + + + + + + {{ __('Dashboard') }} + + + {{ __('Meetups') }} + {{ __('Karte') }} + + {{-- + + --}} + + + + + + + {{ __('Repository') }} + + + + + + + + + + + @auth + + @endauth + + + +@auth + + + + + + + + + + + + + + + + +
+
+ + + {{ auth()->user()->initials() }} + + + +
+ {{ auth()->user()->name }} + + @if(strlen(auth()->user()->name) > 12) + {{ Str::substr(auth()->user()->name, 0, 4) }} + ...{{ Str::substr(auth()->user()->name, -4) }} + @else + {{ auth()->user()->name }} + @endif + +
+
+
+
+ + + + + {{ __('Settings') }} + + + + +
+ @csrf + + {{ __('Log Out') }} + +
+
+
+
+@endauth + +{{ $slot }} + +@fluxScripts + + + + + diff --git a/resources/views/components/layouts/auth.blade.php b/resources/views/components/layouts/auth.blade.php new file mode 100644 index 0000000..56d6cb6 --- /dev/null +++ b/resources/views/components/layouts/auth.blade.php @@ -0,0 +1,3 @@ + + {{ $slot }} + diff --git a/resources/views/components/layouts/auth/card.blade.php b/resources/views/components/layouts/auth/card.blade.php new file mode 100644 index 0000000..0e2b4d3 --- /dev/null +++ b/resources/views/components/layouts/auth/card.blade.php @@ -0,0 +1,26 @@ + + + + @include('partials.head') + + + + @fluxScripts + + diff --git a/resources/views/components/layouts/auth/simple.blade.php b/resources/views/components/layouts/auth/simple.blade.php new file mode 100644 index 0000000..a884abb --- /dev/null +++ b/resources/views/components/layouts/auth/simple.blade.php @@ -0,0 +1,18 @@ + + + + @include('partials.head') + + + + + +{{ $slot }} +@fluxScripts + + + diff --git a/resources/views/components/layouts/auth/split.blade.php b/resources/views/components/layouts/auth/split.blade.php new file mode 100644 index 0000000..e2990c3 --- /dev/null +++ b/resources/views/components/layouts/auth/split.blade.php @@ -0,0 +1,43 @@ + + + + @include('partials.head') + + +
+ + +
+ @fluxScripts + + diff --git a/resources/views/components/placeholder-pattern.blade.php b/resources/views/components/placeholder-pattern.blade.php new file mode 100644 index 0000000..8a434f0 --- /dev/null +++ b/resources/views/components/placeholder-pattern.blade.php @@ -0,0 +1,12 @@ +@props([ + 'id' => uniqid(), +]) + + + + + + + + + diff --git a/resources/views/components/settings/layout.blade.php b/resources/views/components/settings/layout.blade.php new file mode 100644 index 0000000..8753ebb --- /dev/null +++ b/resources/views/components/settings/layout.blade.php @@ -0,0 +1,20 @@ +
+
+ + {{ __('Profile') }} + {{--{{ __('Password') }}--}} + {{ __('Appearance') }} + +
+ + + +
+ {{ $heading ?? '' }} + {{ $subheading ?? '' }} + +
+ {{ $slot }} +
+
+
diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php new file mode 100644 index 0000000..0c42403 --- /dev/null +++ b/resources/views/dashboard.blade.php @@ -0,0 +1,25 @@ + +
+
+
+
+ Meine nächsten Meetup Termine +
+ +
+
+ Nächstes Bitcoin Event +
+ +
+
+ Meine Einundzwanzig Meetups +
+ +
+
+ {{--
+ +
--}} +
+
diff --git a/resources/views/flux/icon/book-open-text.blade.php b/resources/views/flux/icon/book-open-text.blade.php new file mode 100644 index 0000000..bff20a3 --- /dev/null +++ b/resources/views/flux/icon/book-open-text.blade.php @@ -0,0 +1,47 @@ +{{-- Credit: Lucide (https://lucide.dev) --}} + +@props([ + 'variant' => 'outline', +]) + +@php + if ($variant === 'solid') { + throw new \Exception('The "solid" variant is not supported in Lucide.'); + } + + $classes = Flux::classes('shrink-0')->add( + match ($variant) { + 'outline' => '[:where(&)]:size-6', + 'solid' => '[:where(&)]:size-6', + 'mini' => '[:where(&)]:size-5', + 'micro' => '[:where(&)]:size-4', + }, + ); + + $strokeWidth = match ($variant) { + 'outline' => 2, + 'mini' => 2.25, + 'micro' => 2.5, + }; +@endphp + +class($classes) }} + data-flux-icon + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 24 24" + fill="none" + stroke="currentColor" + stroke-width="{{ $strokeWidth }}" + stroke-linecap="round" + stroke-linejoin="round" + aria-hidden="true" + data-slot="icon" +> + + + + + + + diff --git a/resources/views/flux/icon/chevrons-up-down.blade.php b/resources/views/flux/icon/chevrons-up-down.blade.php new file mode 100644 index 0000000..bf1ba2b --- /dev/null +++ b/resources/views/flux/icon/chevrons-up-down.blade.php @@ -0,0 +1,43 @@ +{{-- Credit: Lucide (https://lucide.dev) --}} + +@props([ + 'variant' => 'outline', +]) + +@php + if ($variant === 'solid') { + throw new \Exception('The "solid" variant is not supported in Lucide.'); + } + + $classes = Flux::classes('shrink-0')->add( + match ($variant) { + 'outline' => '[:where(&)]:size-6', + 'solid' => '[:where(&)]:size-6', + 'mini' => '[:where(&)]:size-5', + 'micro' => '[:where(&)]:size-4', + }, + ); + + $strokeWidth = match ($variant) { + 'outline' => 2, + 'mini' => 2.25, + 'micro' => 2.5, + }; +@endphp + +class($classes) }} + data-flux-icon + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 24 24" + fill="none" + stroke="currentColor" + stroke-width="{{ $strokeWidth }}" + stroke-linecap="round" + stroke-linejoin="round" + aria-hidden="true" + data-slot="icon" +> + + + diff --git a/resources/views/flux/icon/folder-git-2.blade.php b/resources/views/flux/icon/folder-git-2.blade.php new file mode 100644 index 0000000..292171b --- /dev/null +++ b/resources/views/flux/icon/folder-git-2.blade.php @@ -0,0 +1,45 @@ +{{-- Credit: Lucide (https://lucide.dev) --}} + +@props([ + 'variant' => 'outline', +]) + +@php + if ($variant === 'solid') { + throw new \Exception('The "solid" variant is not supported in Lucide.'); + } + + $classes = Flux::classes('shrink-0')->add( + match ($variant) { + 'outline' => '[:where(&)]:size-6', + 'solid' => '[:where(&)]:size-6', + 'mini' => '[:where(&)]:size-5', + 'micro' => '[:where(&)]:size-4', + }, + ); + + $strokeWidth = match ($variant) { + 'outline' => 2, + 'mini' => 2.25, + 'micro' => 2.5, + }; +@endphp + +class($classes) }} + data-flux-icon + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 24 24" + fill="none" + stroke="currentColor" + stroke-width="{{ $strokeWidth }}" + stroke-linecap="round" + stroke-linejoin="round" + aria-hidden="true" + data-slot="icon" +> + + + + + diff --git a/resources/views/flux/icon/layout-grid.blade.php b/resources/views/flux/icon/layout-grid.blade.php new file mode 100644 index 0000000..88c5698 --- /dev/null +++ b/resources/views/flux/icon/layout-grid.blade.php @@ -0,0 +1,45 @@ +{{-- Credit: Lucide (https://lucide.dev) --}} + +@props([ + 'variant' => 'outline', +]) + +@php + if ($variant === 'solid') { + throw new \Exception('The "solid" variant is not supported in Lucide.'); + } + + $classes = Flux::classes('shrink-0')->add( + match ($variant) { + 'outline' => '[:where(&)]:size-6', + 'solid' => '[:where(&)]:size-6', + 'mini' => '[:where(&)]:size-5', + 'micro' => '[:where(&)]:size-4', + }, + ); + + $strokeWidth = match ($variant) { + 'outline' => 2, + 'mini' => 2.25, + 'micro' => 2.5, + }; +@endphp + +class($classes) }} + data-flux-icon + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 24 24" + fill="none" + stroke="currentColor" + stroke-width="{{ $strokeWidth }}" + stroke-linecap="round" + stroke-linejoin="round" + aria-hidden="true" + data-slot="icon" +> + + + + + diff --git a/resources/views/flux/navlist/group.blade.php b/resources/views/flux/navlist/group.blade.php new file mode 100644 index 0000000..5e691a2 --- /dev/null +++ b/resources/views/flux/navlist/group.blade.php @@ -0,0 +1,51 @@ +@props([ + 'expandable' => false, + 'expanded' => true, + 'heading' => null, +]) + + + +class('group/disclosure') }} + @if ($expanded === true) open @endif + data-flux-navlist-group +> + + + + + + + +
class('block space-y-[2px]') }}> +
+
{{ $heading }}
+
+ +
+ {{ $slot }} +
+
+ + + +
class('block space-y-[2px]') }}> + {{ $slot }} +
+ + diff --git a/resources/views/livewire/auth/confirm-password.blade.php b/resources/views/livewire/auth/confirm-password.blade.php new file mode 100644 index 0000000..be99b69 --- /dev/null +++ b/resources/views/livewire/auth/confirm-password.blade.php @@ -0,0 +1,58 @@ +validate([ + 'password' => ['required', 'string'], + ]); + + if (! Auth::guard('web')->validate([ + 'email' => Auth::user()->email, + 'password' => $this->password, + ])) { + throw ValidationException::withMessages([ + 'password' => __('auth.password'), + ]); + } + + session(['auth.password_confirmed_at' => time()]); + + $this->redirectIntended(default: route_with_country('dashboard', absolute: false), navigate: true); + } +}; ?> + +
+ + + + + +
+ + + + {{ __('Confirm') }} + +
diff --git a/resources/views/livewire/auth/forgot-password.blade.php b/resources/views/livewire/auth/forgot-password.blade.php new file mode 100644 index 0000000..f223342 --- /dev/null +++ b/resources/views/livewire/auth/forgot-password.blade.php @@ -0,0 +1,49 @@ +validate([ + 'email' => ['required', 'string', 'email'], + ]); + + Password::sendResetLink($this->only('email')); + + session()->flash('status', __('A reset link will be sent if the account exists.')); + } +}; ?> + +
+ + + + + +
+ + + + {{ __('Email password reset link') }} + + +
+ {{ __('Or, return to') }} + {{ __('log in') }} +
+
diff --git a/resources/views/livewire/auth/login.blade.php b/resources/views/livewire/auth/login.blade.php new file mode 100644 index 0000000..811121a --- /dev/null +++ b/resources/views/livewire/auth/login.blade.php @@ -0,0 +1,207 @@ +environment('production')) { + Flux::toast(text: 'Login work in progress', variant: 'danger'); + return; + } + Auth::loginUsingId(1, true); + Session::regenerate(); + $this->redirectIntended(default: route_with_country('dashboard', absolute: false), navigate: true); + return; + + $this->validate(); + + $this->ensureIsNotRateLimited(); + + if (!Auth::attempt(['email' => $this->email, 'password' => $this->password], $this->remember)) { + RateLimiter::hit($this->throttleKey()); + + throw ValidationException::withMessages([ + 'email' => __('auth.failed'), + ]); + } + + RateLimiter::clear($this->throttleKey()); + Session::regenerate(); + + $this->redirectIntended(default: route_with_country('dashboard', absolute: false), navigate: true); + } + + /** + * Ensure the authentication request is not rate limited. + */ + protected function ensureIsNotRateLimited(): void + { + if (!RateLimiter::tooManyAttempts($this->throttleKey(), 5)) { + return; + } + + event(new Lockout(request())); + + $seconds = RateLimiter::availableIn($this->throttleKey()); + + throw ValidationException::withMessages([ + 'email' => __('auth.throttle', [ + 'seconds' => $seconds, + 'minutes' => ceil($seconds / 60), + ]), + ]); + } + + /** + * Get the authentication rate limiting throttle key. + */ + protected function throttleKey(): string + { + return Str::transliterate(Str::lower($this->email).'|'.request()->ip()); + } +}; ?> + +
+
+
+ + + + + {{ __('Willkommen zurück') }} + + + {{--
+ + + + + + + + + + Continue with Google + + + + + + + + + + + + + + + + Continue with GitHub + +
--}} + + + {{----}} + + + + + +
+ + {{----}} + + + {{-- +
+ Password + @if (Route::has('password.request')) + + Forgot password? + + @endif +
+ +
--}} + + + {{----}} + + + Log in + + + + {{--@if (Route::has('register')) + + First time around here? Sign up for free + + @endif--}} +
+
+ + +
+
+ + +
+ Bitcoin, not blockchain. Bitcoin, not crypto. +
+ + +
+ +
+
Gigi
+
bitcoiner and software engineer
+
+
+
+
+
diff --git a/resources/views/livewire/auth/register.blade.php b/resources/views/livewire/auth/register.blade.php new file mode 100644 index 0000000..1fe90c8 --- /dev/null +++ b/resources/views/livewire/auth/register.blade.php @@ -0,0 +1,99 @@ +validate([ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:' . User::class], + 'password' => ['required', 'string', 'confirmed', Rules\Password::defaults()], + ]); + + $validated['password'] = Hash::make($validated['password']); + + event(new Registered(($user = User::create($validated)))); + + Auth::login($user); + + $this->redirectIntended(route_with_country('dashboard', absolute: false), navigate: true); + } +}; ?> + +
+ + + + + +
+ + + + + + + + + + + + +
+ + {{ __('Create account') }} + +
+ + +
+ {{ __('Already have an account?') }} + {{ __('Log in') }} +
+
diff --git a/resources/views/livewire/auth/reset-password.blade.php b/resources/views/livewire/auth/reset-password.blade.php new file mode 100644 index 0000000..d6bcd98 --- /dev/null +++ b/resources/views/livewire/auth/reset-password.blade.php @@ -0,0 +1,115 @@ +token = $token; + + $this->email = request()->string('email'); + } + + /** + * Reset the password for the given user. + */ + public function resetPassword(): void + { + $this->validate([ + 'token' => ['required'], + 'email' => ['required', 'string', 'email'], + 'password' => ['required', 'string', 'confirmed', Rules\Password::defaults()], + ]); + + // Here we will attempt to reset the user's password. If it is successful we + // will update the password on an actual user model and persist it to the + // database. Otherwise we will parse the error and return the response. + $status = Password::reset( + $this->only('email', 'password', 'password_confirmation', 'token'), + function ($user) { + $user->forceFill([ + 'password' => Hash::make($this->password), + 'remember_token' => Str::random(60), + ])->save(); + + event(new PasswordReset($user)); + } + ); + + // If the password was successfully reset, we will redirect the user back to + // the application's home authenticated view. If there is an error we can + // redirect them back to where they came from with their error message. + if ($status != Password::PasswordReset) { + $this->addError('email', __($status)); + + return; + } + + Session::flash('status', __($status)); + + $this->redirectRoute('login', navigate: true); + } +}; ?> + +
+ + + + + +
+ + + + + + + + + +
+ + {{ __('Reset password') }} + +
+ +
diff --git a/resources/views/livewire/auth/verify-email.blade.php b/resources/views/livewire/auth/verify-email.blade.php new file mode 100644 index 0000000..aef1b0c --- /dev/null +++ b/resources/views/livewire/auth/verify-email.blade.php @@ -0,0 +1,57 @@ +hasVerifiedEmail()) { + $this->redirectIntended(default: route_with_country('dashboard', absolute: false), navigate: true); + + return; + } + + Auth::user()->sendEmailVerificationNotification(); + + Session::flash('status', 'verification-link-sent'); + } + + /** + * Log the current user out of the application. + */ + public function logout(Logout $logout): void + { + $logout(); + + $this->redirect('/', navigate: true); + } +}; ?> + +
+ + {{ __('Please verify your email address by clicking on the link we just emailed to you.') }} + + + @if (session('status') == 'verification-link-sent') + + {{ __('A new verification link has been sent to the email address you provided during registration.') }} + + @endif + +
+ + {{ __('Resend verification email') }} + + + + {{ __('Log out') }} + +
+
diff --git a/resources/views/livewire/country/chooser.blade.php b/resources/views/livewire/country/chooser.blade.php new file mode 100644 index 0000000..6b756e6 --- /dev/null +++ b/resources/views/livewire/country/chooser.blade.php @@ -0,0 +1,35 @@ +currentRoute = request()->route()->getName(); + $this->country = request()->route('country'); + } + + public function updatedCountry() + { + $this->redirectRoute($this->currentRoute, ['country' => $this->country]); + } +}; ?> + +
+ + + + + @foreach(\WW\Countries\Models\Country::all() as $country) + +
+ {{ str($country->iso_code)->lower() }} + {{ $country->name }} +
+
+ @endforeach +
+
diff --git a/resources/views/livewire/meetups/edit.blade.php b/resources/views/livewire/meetups/edit.blade.php new file mode 100644 index 0000000..3026e39 --- /dev/null +++ b/resources/views/livewire/meetups/edit.blade.php @@ -0,0 +1,284 @@ +meetup = $meetup; + + // Basic Information + $this->name = $meetup->name ?? ''; + $this->city_id = $meetup->city_id; + $this->slug = $meetup->slug ?? ''; + $this->intro = $meetup->intro; + + // Links and Social Media + $this->telegram_link = $meetup->telegram_link; + $this->webpage = $meetup->webpage; + $this->twitter_username = $meetup->twitter_username; + $this->matrix_group = $meetup->matrix_group; + $this->nostr = $meetup->nostr; + $this->nostr_status = $meetup->nostr_status; + $this->simplex = $meetup->simplex; + $this->signal = $meetup->signal; + + // Additional Information + $this->community = $meetup->community; + $this->github_data = $meetup->github_data ? json_encode($meetup->github_data, JSON_PRETTY_PRINT) : null; + $this->visible_on_map = (bool) $meetup->visible_on_map; + + // System fields + $this->created_by = $meetup->created_by; + $this->created_at = $meetup->created_at?->format('Y-m-d H:i:s'); + $this->updated_at = $meetup->updated_at?->format('Y-m-d H:i:s'); + } + + public function updateMeetup(): void + { + $validated = $this->validate([ + 'name' => ['required', 'string', 'max:255', Rule::unique('meetups')->ignore($this->meetup->id)], + 'city_id' => ['nullable', 'exists:cities,id'], + 'intro' => ['nullable', 'string'], + 'telegram_link' => ['nullable', 'url', 'max:255'], + 'webpage' => ['nullable', 'url', 'max:255'], + 'twitter_username' => ['nullable', 'string', 'max:255'], + 'matrix_group' => ['nullable', 'string', 'max:255'], + 'nostr' => ['nullable', 'string', 'max:255'], + 'simplex' => ['nullable', 'string', 'max:255'], + 'signal' => ['nullable', 'string', 'max:255'], + 'community' => ['nullable', 'string', 'max:255'], + ]); + + // Convert github_data string back to array if provided + if (!empty($validated['github_data'])) { + $decoded = json_decode($validated['github_data'], true); + if (json_last_error() === JSON_ERROR_NONE) { + $validated['github_data'] = $decoded; + } else { + $validated['github_data'] = null; + } + } else { + $validated['github_data'] = null; + } + + $this->meetup->update($validated); + + $this->dispatch('meetup-updated', name: $this->meetup->name); + + session()->flash('status', __('Meetup erfolgreich aktualisiert!')); + } + + public function with(): array + { + return [ + 'cities' => City::orderBy('name')->get(), + ]; + } +}; ?> + +
+ {{ __('Meetup bearbeiten') }}: {{ $meetup->name }} + +
+ + + + {{ __('Grundlegende Informationen') }} + +
+ + {{ __('ID') }} + + {{ __('System-generierte ID (nur lesbar)') }} + + + + {{ __('Name') }} * + + {{ __('Der Anzeigename für dieses Meetup') }} + + + + + {{ __('Stadt') }} + + + + + @foreach($cities as $city) + {{ $city->name }} + @endforeach + + {{ __('Die nächstgrößte Stadt oder Ort') }} + + +
+ + + {{ __('Einführung') }} + + {{ __('Kurze Beschreibung des Meetups') }} + + +
+ + + + {{ __('Links & Soziale Medien') }} + + +
+ + {{ __('Webseite') }} + + {{ __('Offizielle Webseite oder Landingpage') }} + + + + + {{ __('Telegram Link') }} + + {{ __('Link zur Telegram-Gruppe oder zum Kanal') }} + + +
+ + +
+ + {{ __('Twitter Benutzername') }} + + {{ __('Twitter-Handle ohne @ Symbol') }} + + + + + {{ __('Matrix Gruppe') }} + + {{ __('Matrix-Raum Bezeichner oder Link') }} + + +
+ + +
+ + {{ __('Nostr') }} + + {{ __('Nostr öffentlicher Schlüssel oder Bezeichner') }} + + +
+ + +
+ + {{ __('SimpleX') }} + + {{ __('SimpleX Chat Kontaktinformationen') }} + + + + + {{ __('Signal') }} + + {{ __('Signal Kontakt- oder Gruppeninformationen') }} + + +
+
+ + + + {{ __('Zusätzliche Informationen') }} + +
+ + {{ __('Gemeinschaft') }} + + einundzwanzig + bitcoin + + {{ __('Gemeinschafts- oder Organisationsname') }} + + +
+
+ + + + {{ __('Systeminformationen') }} + +
+ + {{ __('Erstellt von') }} + + {{ __('Ersteller des Meetups') }} + + + + {{ __('Erstellt am') }} + + {{ __('Wann dieses Meetup erstellt wurde') }} + + + + {{ __('Aktualisiert am') }} + + {{ __('Letzte Änderungszeit') }} + +
+
+ + +
+ + {{ __('Abbrechen') }} + + +
+ @if (session('status')) + + {{ session('status') }} + + @endif + + + {{ __('Meetup aktualisieren') }} + +
+
+
+
diff --git a/resources/views/livewire/meetups/index.blade.php b/resources/views/livewire/meetups/index.blade.php new file mode 100644 index 0000000..7078f0a --- /dev/null +++ b/resources/views/livewire/meetups/index.blade.php @@ -0,0 +1,130 @@ +sortBy === $column) { + $this->sortDirection = $this->sortDirection === 'asc' ? 'desc' : 'asc'; + } else { + $this->sortBy = $column; + $this->sortDirection = 'asc'; + } + } + + public function with(): array + { + return [ + 'meetups' => Meetup::with(['city.country', 'createdBy']) + ->whereHas('city.country', fn($query) => $query->where('countries.code', request()->route('country'))) + ->when($this->search, fn($query) + => $query->where('name', 'ilike', '%'.$this->search.'%'), + ) + ->when($this->sortBy === 'city', + fn($query) + => $query + ->orderBy('cities.name', $this->sortDirection) + ->join('cities', 'meetups.city_id', '=', 'cities.id'), + fn($query) => $query->orderBy($this->sortBy, $this->sortDirection), + ) + ->paginate(15), + ]; + } +}; ?> + +
+ {{ __('Meetups') }} +
+ +
+ + + + {{ __('Name') }} + + {{ __('Links') }} + {{ __('Aktionen') }} + + + + @foreach ($meetups as $meetup) + + + {{ $meetup->name }} + @if($meetup->city) +
+
{{ $meetup->city->name }}
+ @if($meetup->city->country) + +
{{ $meetup->city->country->name }}
+ @endif +
+ @endif +
+ + +
+ @if($meetup->telegram_link) + + + + @endif + @if($meetup->webpage) + + + + @endif + @if($meetup->twitter_username) + + + + @endif + @if($meetup->matrix_group) + + + + @endif + @if($meetup->nostr) + + + + @endif + @if($meetup->simplex) + + + + @endif + @if($meetup->signal) + + + + @endif +
+
+ + + + {{ __('Bearbeiten') }} + + +
+ @endforeach +
+
+
diff --git a/resources/views/livewire/meetups/map.blade.php b/resources/views/livewire/meetups/map.blade.php new file mode 100644 index 0000000..a131e9b --- /dev/null +++ b/resources/views/livewire/meetups/map.blade.php @@ -0,0 +1,92 @@ + Meetup::with(['city:id,longitude,latitude']) + ->select([ + 'meetups.id', + 'meetups.city_id', + 'meetups.name', + ]) + ->get(), + ]; + } +}; ?> + +
+ + @php + $attribution = '© OpenStreetMap contributors'; + @endphp +
+ Zoom = STRG+Scroll +
+
+
+
+
diff --git a/resources/views/livewire/settings/appearance.blade.php b/resources/views/livewire/settings/appearance.blade.php new file mode 100644 index 0000000..892582d --- /dev/null +++ b/resources/views/livewire/settings/appearance.blade.php @@ -0,0 +1,19 @@ + + +
+ @include('partials.settings-heading') + + + + {{ __('Light') }} + {{ __('Dark') }} + {{ __('System') }} + + +
diff --git a/resources/views/livewire/settings/delete-user-form.blade.php b/resources/views/livewire/settings/delete-user-form.blade.php new file mode 100644 index 0000000..8d90079 --- /dev/null +++ b/resources/views/livewire/settings/delete-user-form.blade.php @@ -0,0 +1,58 @@ +validate([ + 'password' => ['required', 'string', 'current_password'], + ]); + + tap(Auth::user(), $logout(...))->delete(); + + $this->redirect('/', navigate: true); + } +}; ?> + +
+
+ {{ __('Delete account') }} + {{ __('Delete your account and all of its resources') }} +
+ + + + {{ __('Delete account') }} + + + + +
+
+ {{ __('Are you sure you want to delete your account?') }} + + + {{ __('Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.') }} + +
+ + + +
+ + {{ __('Cancel') }} + + + {{ __('Delete account') }} +
+ +
+
diff --git a/resources/views/livewire/settings/password.blade.php b/resources/views/livewire/settings/password.blade.php new file mode 100644 index 0000000..002805f --- /dev/null +++ b/resources/views/livewire/settings/password.blade.php @@ -0,0 +1,78 @@ +validate([ + 'current_password' => ['required', 'string', 'current_password'], + 'password' => ['required', 'string', Password::defaults(), 'confirmed'], + ]); + } catch (ValidationException $e) { + $this->reset('current_password', 'password', 'password_confirmation'); + + throw $e; + } + + Auth::user()->update([ + 'password' => Hash::make($validated['password']), + ]); + + $this->reset('current_password', 'password', 'password_confirmation'); + + $this->dispatch('password-updated'); + } +}; ?> + +
+ @include('partials.settings-heading') + + +
+ + + + +
+
+ {{ __('Save') }} +
+ + + {{ __('Saved.') }} + +
+ +
+
diff --git a/resources/views/livewire/settings/profile.blade.php b/resources/views/livewire/settings/profile.blade.php new file mode 100644 index 0000000..d7fc65f --- /dev/null +++ b/resources/views/livewire/settings/profile.blade.php @@ -0,0 +1,114 @@ +name = Auth::user()->name; + $this->email = Auth::user()->email; + } + + /** + * Update the profile information for the currently authenticated user. + */ + public function updateProfileInformation(): void + { + $user = Auth::user(); + + $validated = $this->validate([ + 'name' => ['required', 'string', 'max:255'], + + 'email' => [ + 'required', + 'string', + 'lowercase', + 'email', + 'max:255', + Rule::unique(User::class)->ignore($user->id) + ], + ]); + + $user->fill($validated); + + if ($user->isDirty('email')) { + $user->email_verified_at = null; + } + + $user->save(); + + $this->dispatch('profile-updated', name: $user->name); + } + + /** + * Send an email verification notification to the current user. + */ + public function resendVerificationNotification(): void + { + $user = Auth::user(); + + if ($user->hasVerifiedEmail()) { + $this->redirectIntended(default: route_with_country('dashboard', absolute: false)); + + return; + } + + $user->sendEmailVerificationNotification(); + + Session::flash('status', 'verification-link-sent'); + } +}; ?> + +
+ @include('partials.settings-heading') + + +
+ + + {{--
+ + + @if (auth()->user() instanceof \Illuminate\Contracts\Auth\MustVerifyEmail &&! auth()->user()->hasVerifiedEmail()) +
+ + {{ __('Your email address is unverified.') }} + + + {{ __('Click here to re-send the verification email.') }} + + + + @if (session('status') === 'verification-link-sent') + + {{ __('A new verification link has been sent to your email address.') }} + + @endif +
+ @endif +
--}} + +
+
+ {{ __('Save') }} +
+ + + {{ __('Saved.') }} + +
+ + + +
+
diff --git a/resources/views/livewire/welcome.blade.php b/resources/views/livewire/welcome.blade.php new file mode 100644 index 0000000..13f4873 --- /dev/null +++ b/resources/views/livewire/welcome.blade.php @@ -0,0 +1,78 @@ +redirect(route_with_country('meetups.index'), navigate: true); + } + + public function goToMap(): void + { + $this->redirect(route_with_country('meetups.map'), navigate: true); + } +}; ?> + +
+
+
+ + + + + {{ __('Bitcoin Meetups') }} + + +
+ + + + + + + {{ __('Alle Meetups anzeigen') }} + + + + + + + + + {{ __('Kartenansicht öffnen') }} + +
+
+
+ + +
+
+ +
+ {{ __('Verbinde dich mit Bitcoinern in deiner Nähe') }} +
+ + +
+
+
{{ __('Bitcoin Meetups') }}
+
{{ __('Finde deine lokale Community') }}
+
+
+
+
+
diff --git a/resources/views/partials/head.blade.php b/resources/views/partials/head.blade.php new file mode 100644 index 0000000..3cb30ee --- /dev/null +++ b/resources/views/partials/head.blade.php @@ -0,0 +1,24 @@ + + + +{{ $title ?? config('app.name') }} + + + + + + + + + + + + + + +@vite(['resources/css/app.css', 'resources/js/app.js']) +@fluxAppearance diff --git a/resources/views/partials/settings-heading.blade.php b/resources/views/partials/settings-heading.blade.php new file mode 100644 index 0000000..925ace9 --- /dev/null +++ b/resources/views/partials/settings-heading.blade.php @@ -0,0 +1,5 @@ +
+ {{ __('Settings') }} + {{ __('Manage your profile and account settings') }} + +
diff --git a/routes/auth.php b/routes/auth.php new file mode 100644 index 0000000..3563c0f --- /dev/null +++ b/routes/auth.php @@ -0,0 +1,36 @@ +group(function () { + Volt::route('login', 'auth.login') + ->name('login'); + + Volt::route('register', 'auth.register') + ->name('register'); + + Volt::route('forgot-password', 'auth.forgot-password') + ->name('password.request'); + + Volt::route('reset-password/{token}', 'auth.reset-password') + ->name('password.reset'); + }); + +Route::middleware('auth') + ->group(function () { + Volt::route('verify-email', 'auth.verify-email') + ->name('verification.notice'); + + Route::get('verify-email/{id}/{hash}', VerifyEmailController::class) + ->middleware(['signed', 'throttle:6,1']) + ->name('verification.verify'); + + Volt::route('confirm-password', 'auth.confirm-password') + ->name('password.confirm'); + }); + +Route::post('logout', App\Livewire\Actions\Logout::class) + ->name('logout'); diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 0000000..3c9adf1 --- /dev/null +++ b/routes/console.php @@ -0,0 +1,8 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 0000000..16f7dcf --- /dev/null +++ b/routes/web.php @@ -0,0 +1,36 @@ +name('welcome'); + +Route::middleware([]) + ->prefix('/{country:code}') + ->group(function () { + Route::view('dashboard', 'dashboard') + ->middleware(['auth', 'verified']) + ->name('dashboard'); + + Volt::route('meetups', 'meetups.index')->name('meetups.index'); + Volt::route('map', 'meetups.map')->name('meetups.map'); + }); + +Route::middleware(['auth']) + ->prefix('/{country:code}') + ->group(function () { + Volt::route('meetup-edit/{meetup}', 'meetups.edit')->name('meetups.edit'); + }); + +Route::middleware(['auth']) + ->group(function () { + Route::redirect('settings', 'settings/profile'); + + Volt::route('settings/profile', 'settings.profile')->name('settings.profile'); + Volt::route('settings/password', 'settings.password')->name('settings.password'); + Volt::route('settings/appearance', 'settings.appearance')->name('settings.appearance'); + }); + +require __DIR__.'/auth.php'; diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..fedb287 --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,4 @@ +* +!private/ +!public/ +!.gitignore diff --git a/storage/app/private/.gitignore b/storage/app/private/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/private/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/storage/framework/.gitignore @@ -0,0 +1,9 @@ +compiled.php +config.php +down +events.scanned.php +maintenance.php +routes.php +routes.scanned.php +schedule-* +services.json diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/Feature/Auth/AuthenticationTest.php b/tests/Feature/Auth/AuthenticationTest.php new file mode 100644 index 0000000..12f2139 --- /dev/null +++ b/tests/Feature/Auth/AuthenticationTest.php @@ -0,0 +1,48 @@ +get('/login'); + + $response->assertStatus(200); +}); + +test('users can authenticate using the login screen', function () { + $user = User::factory()->create(); + + $response = LivewireVolt::test('auth.login') + ->set('email', $user->email) + ->set('password', 'password') + ->call('login'); + + $response + ->assertHasNoErrors() + ->assertRedirect(route('dashboard', absolute: false)); + + $this->assertAuthenticated(); +}); + +test('users can not authenticate with invalid password', function () { + $user = User::factory()->create(); + + $response = LivewireVolt::test('auth.login') + ->set('email', $user->email) + ->set('password', 'wrong-password') + ->call('login'); + + $response->assertHasErrors('email'); + + $this->assertGuest(); +}); + +test('users can logout', function () { + $user = User::factory()->create(); + + $response = $this->actingAs($user)->post('/logout'); + + $response->assertRedirect('/'); + + $this->assertGuest(); +}); \ No newline at end of file diff --git a/tests/Feature/Auth/EmailVerificationTest.php b/tests/Feature/Auth/EmailVerificationTest.php new file mode 100644 index 0000000..a2294e8 --- /dev/null +++ b/tests/Feature/Auth/EmailVerificationTest.php @@ -0,0 +1,47 @@ +unverified()->create(); + + $response = $this->actingAs($user)->get('/verify-email'); + + $response->assertStatus(200); +}); + +test('email can be verified', function () { + $user = User::factory()->unverified()->create(); + + Event::fake(); + + $verificationUrl = URL::temporarySignedRoute( + 'verification.verify', + now()->addMinutes(60), + ['id' => $user->id, 'hash' => sha1($user->email)] + ); + + $response = $this->actingAs($user)->get($verificationUrl); + + Event::assertDispatched(Verified::class); + + expect($user->fresh()->hasVerifiedEmail())->toBeTrue(); + $response->assertRedirect(route('dashboard', absolute: false).'?verified=1'); +}); + +test('email is not verified with invalid hash', function () { + $user = User::factory()->unverified()->create(); + + $verificationUrl = URL::temporarySignedRoute( + 'verification.verify', + now()->addMinutes(60), + ['id' => $user->id, 'hash' => sha1('wrong-email')] + ); + + $this->actingAs($user)->get($verificationUrl); + + expect($user->fresh()->hasVerifiedEmail())->toBeFalse(); +}); \ No newline at end of file diff --git a/tests/Feature/Auth/PasswordConfirmationTest.php b/tests/Feature/Auth/PasswordConfirmationTest.php new file mode 100644 index 0000000..7edf020 --- /dev/null +++ b/tests/Feature/Auth/PasswordConfirmationTest.php @@ -0,0 +1,38 @@ +create(); + + $response = $this->actingAs($user)->get('/confirm-password'); + + $response->assertStatus(200); +}); + +test('password can be confirmed', function () { + $user = User::factory()->create(); + + $this->actingAs($user); + + $response = Volt::test('auth.confirm-password') + ->set('password', 'password') + ->call('confirmPassword'); + + $response + ->assertHasNoErrors() + ->assertRedirect(route('dashboard', absolute: false)); +}); + +test('password is not confirmed with invalid password', function () { + $user = User::factory()->create(); + + $this->actingAs($user); + + $response = Volt::test('auth.confirm-password') + ->set('password', 'wrong-password') + ->call('confirmPassword'); + + $response->assertHasErrors(['password']); +}); \ No newline at end of file diff --git a/tests/Feature/Auth/PasswordResetTest.php b/tests/Feature/Auth/PasswordResetTest.php new file mode 100644 index 0000000..53e2f62 --- /dev/null +++ b/tests/Feature/Auth/PasswordResetTest.php @@ -0,0 +1,66 @@ +get('/forgot-password'); + + $response->assertStatus(200); +}); + +test('reset password link can be requested', function () { + Notification::fake(); + + $user = User::factory()->create(); + + Volt::test('auth.forgot-password') + ->set('email', $user->email) + ->call('sendPasswordResetLink'); + + Notification::assertSentTo($user, ResetPassword::class); +}); + +test('reset password screen can be rendered', function () { + Notification::fake(); + + $user = User::factory()->create(); + + Volt::test('auth.forgot-password') + ->set('email', $user->email) + ->call('sendPasswordResetLink'); + + Notification::assertSentTo($user, ResetPassword::class, function ($notification) { + $response = $this->get('/reset-password/'.$notification->token); + + $response->assertStatus(200); + + return true; + }); +}); + +test('password can be reset with valid token', function () { + Notification::fake(); + + $user = User::factory()->create(); + + Volt::test('auth.forgot-password') + ->set('email', $user->email) + ->call('sendPasswordResetLink'); + + Notification::assertSentTo($user, ResetPassword::class, function ($notification) use ($user) { + $response = Volt::test('auth.reset-password', ['token' => $notification->token]) + ->set('email', $user->email) + ->set('password', 'password') + ->set('password_confirmation', 'password') + ->call('resetPassword'); + + $response + ->assertHasNoErrors() + ->assertRedirect(route('login', absolute: false)); + + return true; + }); +}); \ No newline at end of file diff --git a/tests/Feature/Auth/RegistrationTest.php b/tests/Feature/Auth/RegistrationTest.php new file mode 100644 index 0000000..3db4e72 --- /dev/null +++ b/tests/Feature/Auth/RegistrationTest.php @@ -0,0 +1,24 @@ +get('/register'); + + $response->assertStatus(200); +}); + +test('new users can register', function () { + $response = Volt::test('auth.register') + ->set('name', 'Test User') + ->set('email', 'test@example.com') + ->set('password', 'password') + ->set('password_confirmation', 'password') + ->call('register'); + + $response + ->assertHasNoErrors() + ->assertRedirect(route('dashboard', absolute: false)); + + $this->assertAuthenticated(); +}); \ No newline at end of file diff --git a/tests/Feature/DashboardTest.php b/tests/Feature/DashboardTest.php new file mode 100644 index 0000000..437eb09 --- /dev/null +++ b/tests/Feature/DashboardTest.php @@ -0,0 +1,16 @@ +get('/dashboard'); + $response->assertRedirect('/login'); +}); + +test('authenticated users can visit the dashboard', function () { + $user = User::factory()->create(); + $this->actingAs($user); + + $response = $this->get('/dashboard'); + $response->assertStatus(200); +}); \ No newline at end of file diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..b63b781 --- /dev/null +++ b/tests/Feature/ExampleTest.php @@ -0,0 +1,7 @@ +get('/'); + + $response->assertStatus(200); +}); \ No newline at end of file diff --git a/tests/Feature/Livewire/Country/ChooserTest.php b/tests/Feature/Livewire/Country/ChooserTest.php new file mode 100644 index 0000000..69990f8 --- /dev/null +++ b/tests/Feature/Livewire/Country/ChooserTest.php @@ -0,0 +1,9 @@ +assertSee(''); +}); diff --git a/tests/Feature/Livewire/Meetup.indexTest.php b/tests/Feature/Livewire/Meetup.indexTest.php new file mode 100644 index 0000000..8d12730 --- /dev/null +++ b/tests/Feature/Livewire/Meetup.indexTest.php @@ -0,0 +1,9 @@ +assertSee(''); +}); diff --git a/tests/Feature/Livewire/Meetups/EditTest.php b/tests/Feature/Livewire/Meetups/EditTest.php new file mode 100644 index 0000000..b0e5d03 --- /dev/null +++ b/tests/Feature/Livewire/Meetups/EditTest.php @@ -0,0 +1,9 @@ +assertSee(''); +}); diff --git a/tests/Feature/Livewire/Meetups/MapTest.php b/tests/Feature/Livewire/Meetups/MapTest.php new file mode 100644 index 0000000..b94bf86 --- /dev/null +++ b/tests/Feature/Livewire/Meetups/MapTest.php @@ -0,0 +1,9 @@ +assertSee(''); +}); diff --git a/tests/Feature/Livewire/WelcomeTest.php b/tests/Feature/Livewire/WelcomeTest.php new file mode 100644 index 0000000..01900e7 --- /dev/null +++ b/tests/Feature/Livewire/WelcomeTest.php @@ -0,0 +1,9 @@ +assertSee(''); +}); diff --git a/tests/Feature/Settings/PasswordUpdateTest.php b/tests/Feature/Settings/PasswordUpdateTest.php new file mode 100644 index 0000000..2af6939 --- /dev/null +++ b/tests/Feature/Settings/PasswordUpdateTest.php @@ -0,0 +1,39 @@ +create([ + 'password' => Hash::make('password'), + ]); + + $this->actingAs($user); + + $response = Volt::test('settings.password') + ->set('current_password', 'password') + ->set('password', 'new-password') + ->set('password_confirmation', 'new-password') + ->call('updatePassword'); + + $response->assertHasNoErrors(); + + expect(Hash::check('new-password', $user->refresh()->password))->toBeTrue(); +}); + +test('correct password must be provided to update password', function () { + $user = User::factory()->create([ + 'password' => Hash::make('password'), + ]); + + $this->actingAs($user); + + $response = Volt::test('settings.password') + ->set('current_password', 'wrong-password') + ->set('password', 'new-password') + ->set('password_confirmation', 'new-password') + ->call('updatePassword'); + + $response->assertHasErrors(['current_password']); +}); \ No newline at end of file diff --git a/tests/Feature/Settings/ProfileUpdateTest.php b/tests/Feature/Settings/ProfileUpdateTest.php new file mode 100644 index 0000000..44ec58d --- /dev/null +++ b/tests/Feature/Settings/ProfileUpdateTest.php @@ -0,0 +1,75 @@ +actingAs($user = User::factory()->create()); + + $this->get('/settings/profile')->assertOk(); +}); + +test('profile information can be updated', function () { + $user = User::factory()->create(); + + $this->actingAs($user); + + $response = Volt::test('settings.profile') + ->set('name', 'Test User') + ->set('email', 'test@example.com') + ->call('updateProfileInformation'); + + $response->assertHasNoErrors(); + + $user->refresh(); + + expect($user->name)->toEqual('Test User'); + expect($user->email)->toEqual('test@example.com'); + expect($user->email_verified_at)->toBeNull(); +}); + +test('email verification status is unchanged when email address is unchanged', function () { + $user = User::factory()->create(); + + $this->actingAs($user); + + $response = Volt::test('settings.profile') + ->set('name', 'Test User') + ->set('email', $user->email) + ->call('updateProfileInformation'); + + $response->assertHasNoErrors(); + + expect($user->refresh()->email_verified_at)->not->toBeNull(); +}); + +test('user can delete their account', function () { + $user = User::factory()->create(); + + $this->actingAs($user); + + $response = Volt::test('settings.delete-user-form') + ->set('password', 'password') + ->call('deleteUser'); + + $response + ->assertHasNoErrors() + ->assertRedirect('/'); + + expect($user->fresh())->toBeNull(); + expect(auth()->check())->toBeFalse(); +}); + +test('correct password must be provided to delete account', function () { + $user = User::factory()->create(); + + $this->actingAs($user); + + $response = Volt::test('settings.delete-user-form') + ->set('password', 'wrong-password') + ->call('deleteUser'); + + $response->assertHasErrors(['password']); + + expect($user->fresh())->not->toBeNull(); +}); \ No newline at end of file diff --git a/tests/Pest.php b/tests/Pest.php new file mode 100644 index 0000000..40d096b --- /dev/null +++ b/tests/Pest.php @@ -0,0 +1,47 @@ +extend(Tests\TestCase::class) + ->use(Illuminate\Foundation\Testing\RefreshDatabase::class) + ->in('Feature'); + +/* +|-------------------------------------------------------------------------- +| Expectations +|-------------------------------------------------------------------------- +| +| When you're writing tests, you often need to check that values meet certain conditions. The +| "expect()" function gives you access to a set of "expectations" methods that you can use +| to assert different things. Of course, you may extend the Expectation API at any time. +| +*/ + +expect()->extend('toBeOne', function () { + return $this->toBe(1); +}); + +/* +|-------------------------------------------------------------------------- +| Functions +|-------------------------------------------------------------------------- +| +| While Pest is very powerful out-of-the-box, you may have some testing code specific to your +| project that you don't want to repeat in every file. Here you can also expose helpers as +| global functions to help you to reduce the number of lines of code in your test files. +| +*/ + +function something() +{ + // .. +} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..fe1ffc2 --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,10 @@ +toBeTrue(); +}); \ No newline at end of file diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..75a8c16 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,18 @@ +import { + defineConfig +} from 'vite'; +import laravel from 'laravel-vite-plugin'; +import tailwindcss from "@tailwindcss/vite"; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + tailwindcss(), + ], + server: { + cors: true, + }, +}); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..e84e0c7 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1085 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@emnapi/core@^1.5.0", "@emnapi/core@^1.6.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.7.1.tgz#3a79a02dbc84f45884a1806ebb98e5746bdfaac4" + integrity sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg== + dependencies: + "@emnapi/wasi-threads" "1.1.0" + tslib "^2.4.0" + +"@emnapi/runtime@^1.5.0", "@emnapi/runtime@^1.6.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.7.1.tgz#a73784e23f5d57287369c808197288b52276b791" + integrity sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.1.0", "@emnapi/wasi-threads@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf" + integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== + dependencies: + tslib "^2.4.0" + +"@esbuild/aix-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c" + integrity sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA== + +"@esbuild/android-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz#8aa4965f8d0a7982dc21734bf6601323a66da752" + integrity sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg== + +"@esbuild/android-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz#300712101f7f50f1d2627a162e6e09b109b6767a" + integrity sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg== + +"@esbuild/android-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz#87dfb27161202bdc958ef48bb61b09c758faee16" + integrity sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg== + +"@esbuild/darwin-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz#79197898ec1ff745d21c071e1c7cc3c802f0c1fd" + integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg== + +"@esbuild/darwin-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz#146400a8562133f45c4d2eadcf37ddd09718079e" + integrity sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA== + +"@esbuild/freebsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz#1c5f9ba7206e158fd2b24c59fa2d2c8bb47ca0fe" + integrity sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg== + +"@esbuild/freebsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz#ea631f4a36beaac4b9279fa0fcc6ca29eaeeb2b3" + integrity sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ== + +"@esbuild/linux-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz#e1066bce58394f1b1141deec8557a5f0a22f5977" + integrity sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ== + +"@esbuild/linux-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz#452cd66b20932d08bdc53a8b61c0e30baf4348b9" + integrity sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw== + +"@esbuild/linux-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz#b24f8acc45bcf54192c7f2f3be1b53e6551eafe0" + integrity sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA== + +"@esbuild/linux-loong64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz#f9cfffa7fc8322571fbc4c8b3268caf15bd81ad0" + integrity sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng== + +"@esbuild/linux-mips64el@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz#575a14bd74644ffab891adc7d7e60d275296f2cd" + integrity sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw== + +"@esbuild/linux-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz#75b99c70a95fbd5f7739d7692befe60601591869" + integrity sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA== + +"@esbuild/linux-riscv64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz#2e3259440321a44e79ddf7535c325057da875cd6" + integrity sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w== + +"@esbuild/linux-s390x@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz#17676cabbfe5928da5b2a0d6df5d58cd08db2663" + integrity sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg== + +"@esbuild/linux-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz#0583775685ca82066d04c3507f09524d3cd7a306" + integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw== + +"@esbuild/netbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz#f04c4049cb2e252fe96b16fed90f70746b13f4a4" + integrity sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg== + +"@esbuild/netbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz#77da0d0a0d826d7c921eea3d40292548b258a076" + integrity sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ== + +"@esbuild/openbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz#6296f5867aedef28a81b22ab2009c786a952dccd" + integrity sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A== + +"@esbuild/openbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz#f8d23303360e27b16cf065b23bbff43c14142679" + integrity sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw== + +"@esbuild/openharmony-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz#49e0b768744a3924be0d7fd97dd6ce9b2923d88d" + integrity sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg== + +"@esbuild/sunos-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz#a6ed7d6778d67e528c81fb165b23f4911b9b13d6" + integrity sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w== + +"@esbuild/win32-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz#9ac14c378e1b653af17d08e7d3ce34caef587323" + integrity sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg== + +"@esbuild/win32-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz#918942dcbbb35cc14fca39afb91b5e6a3d127267" + integrity sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ== + +"@esbuild/win32-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5" + integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.4": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.24": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@napi-rs/wasm-runtime@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz#dcfea99a75f06209a235f3d941e3460a51e9b14c" + integrity sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw== + dependencies: + "@emnapi/core" "^1.5.0" + "@emnapi/runtime" "^1.5.0" + "@tybys/wasm-util" "^0.10.1" + +"@rollup/rollup-android-arm-eabi@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz#7e478b66180c5330429dd161bf84dad66b59c8eb" + integrity sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w== + +"@rollup/rollup-android-arm64@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz#2b025510c53a5e3962d3edade91fba9368c9d71c" + integrity sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w== + +"@rollup/rollup-darwin-arm64@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz#3577c38af68ccf34c03e84f476bfd526abca10a0" + integrity sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA== + +"@rollup/rollup-darwin-x64@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz#2bf5f2520a1f3b551723d274b9669ba5b75ed69c" + integrity sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ== + +"@rollup/rollup-freebsd-arm64@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz#4bb9cc80252564c158efc0710153c71633f1927c" + integrity sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w== + +"@rollup/rollup-freebsd-x64@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz#2301289094d49415a380cf942219ae9d8b127440" + integrity sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q== + +"@rollup/rollup-linux-arm-gnueabihf@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz#1d03d776f2065e09fc141df7d143476e94acca88" + integrity sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw== + +"@rollup/rollup-linux-arm-musleabihf@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz#8623de0e040b2fd52a541c602688228f51f96701" + integrity sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg== + +"@rollup/rollup-linux-arm64-gnu@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz#ce2d1999bc166277935dde0301cde3dd0417fb6e" + integrity sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w== + +"@rollup/rollup-linux-arm64-musl@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz#88c2523778444da952651a2219026416564a4899" + integrity sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A== + +"@rollup/rollup-linux-loong64-gnu@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz#578ca2220a200ac4226c536c10c8cc6e4f276714" + integrity sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g== + +"@rollup/rollup-linux-ppc64-gnu@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz#aa338d3effd4168a20a5023834a74ba2c3081293" + integrity sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw== + +"@rollup/rollup-linux-riscv64-gnu@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz#16ba582f9f6cff58119aa242782209b1557a1508" + integrity sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g== + +"@rollup/rollup-linux-riscv64-musl@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz#e404a77ebd6378483888b8064c703adb011340ab" + integrity sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A== + +"@rollup/rollup-linux-s390x-gnu@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz#92ad52d306227c56bec43d96ad2164495437ffe6" + integrity sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg== + +"@rollup/rollup-linux-x64-gnu@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz#fd0dea3bb9aa07e7083579f25e1c2285a46cb9fa" + integrity sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w== + +"@rollup/rollup-linux-x64-gnu@4.9.5": + version "4.9.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz#85946ee4d068bd12197aeeec2c6f679c94978a49" + integrity sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA== + +"@rollup/rollup-linux-x64-musl@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz#37a3efb09f18d555f8afc490e1f0444885de8951" + integrity sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q== + +"@rollup/rollup-openharmony-arm64@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz#c489bec9f4f8320d42c9b324cca220c90091c1f7" + integrity sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw== + +"@rollup/rollup-win32-arm64-msvc@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz#152832b5f79dc22d1606fac3db946283601b7080" + integrity sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw== + +"@rollup/rollup-win32-ia32-msvc@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz#54d91b2bb3bf3e9f30d32b72065a4e52b3a172a5" + integrity sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA== + +"@rollup/rollup-win32-x64-gnu@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz#df9df03e61a003873efec8decd2034e7f135c71e" + integrity sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg== + +"@rollup/rollup-win32-x64-msvc@4.53.3": + version "4.53.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz#38ae84f4c04226c1d56a3b17296ef1e0460ecdfe" + integrity sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ== + +"@tailwindcss/node@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.1.17.tgz#ec40a37293246f4eeab2dac00e4425af9272f600" + integrity sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg== + dependencies: + "@jridgewell/remapping" "^2.3.4" + enhanced-resolve "^5.18.3" + jiti "^2.6.1" + lightningcss "1.30.2" + magic-string "^0.30.21" + source-map-js "^1.2.1" + tailwindcss "4.1.17" + +"@tailwindcss/oxide-android-arm64@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.17.tgz#17f0dc901f88a979c5bff618181bce596dff596d" + integrity sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ== + +"@tailwindcss/oxide-darwin-arm64@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.17.tgz#63e12e62b83f6949dbb10b5a7f6e441606835efc" + integrity sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg== + +"@tailwindcss/oxide-darwin-x64@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.17.tgz#6dad270d2777508f55e2b73eca0eaef625bc45a7" + integrity sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog== + +"@tailwindcss/oxide-freebsd-x64@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.17.tgz#e7628b4602ac7d73c11a9922ecb83c24337eff55" + integrity sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g== + +"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.17.tgz#4d96a6fe4c7ed20e7a013101ee46f46caca2233e" + integrity sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ== + +"@tailwindcss/oxide-linux-arm64-gnu@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.17.tgz#adc3c01cd73610870bfc21db5713571e08fb2210" + integrity sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ== + +"@tailwindcss/oxide-linux-arm64-musl@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.17.tgz#39ceda30407af56a1ee125b2c5ce856c6d29250f" + integrity sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg== + +"@tailwindcss/oxide-linux-x64-gnu@4.1.17", "@tailwindcss/oxide-linux-x64-gnu@^4.0.1": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.17.tgz#a3d4bd876c04d09856af0c394f5095fbc8a2b14c" + integrity sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ== + +"@tailwindcss/oxide-linux-x64-musl@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.17.tgz#bdc20aa4fb2d28cc928f2cfffff7a9cd03a51d5b" + integrity sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ== + +"@tailwindcss/oxide-wasm32-wasi@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.17.tgz#7c0804748935928751838f86ff4f879c38f8a6d7" + integrity sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg== + dependencies: + "@emnapi/core" "^1.6.0" + "@emnapi/runtime" "^1.6.0" + "@emnapi/wasi-threads" "^1.1.0" + "@napi-rs/wasm-runtime" "^1.0.7" + "@tybys/wasm-util" "^0.10.1" + tslib "^2.4.0" + +"@tailwindcss/oxide-win32-arm64-msvc@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.17.tgz#7222fc2ceee9d45ebe5aebf38707ee9833a20475" + integrity sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A== + +"@tailwindcss/oxide-win32-x64-msvc@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.17.tgz#ac79087f451dfcd5c3099589027a5732b045a3bf" + integrity sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw== + +"@tailwindcss/oxide@4.1.17": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.1.17.tgz#6c063b40a022f4fbdac557c0586cfb9ae08a3dfe" + integrity sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA== + optionalDependencies: + "@tailwindcss/oxide-android-arm64" "4.1.17" + "@tailwindcss/oxide-darwin-arm64" "4.1.17" + "@tailwindcss/oxide-darwin-x64" "4.1.17" + "@tailwindcss/oxide-freebsd-x64" "4.1.17" + "@tailwindcss/oxide-linux-arm-gnueabihf" "4.1.17" + "@tailwindcss/oxide-linux-arm64-gnu" "4.1.17" + "@tailwindcss/oxide-linux-arm64-musl" "4.1.17" + "@tailwindcss/oxide-linux-x64-gnu" "4.1.17" + "@tailwindcss/oxide-linux-x64-musl" "4.1.17" + "@tailwindcss/oxide-wasm32-wasi" "4.1.17" + "@tailwindcss/oxide-win32-arm64-msvc" "4.1.17" + "@tailwindcss/oxide-win32-x64-msvc" "4.1.17" + +"@tailwindcss/vite@^4.0.7": + version "4.1.17" + resolved "https://registry.yarnpkg.com/@tailwindcss/vite/-/vite-4.1.17.tgz#c316b3817b21e175c37261249550790b1b909f93" + integrity sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA== + dependencies: + "@tailwindcss/node" "4.1.17" + "@tailwindcss/oxide" "4.1.17" + tailwindcss "4.1.17" + +"@tybys/wasm-util@^0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" + integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== + dependencies: + tslib "^2.4.0" + +"@types/estree@1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +autoprefixer@^10.4.20: + version "10.4.22" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.22.tgz#90b27ab55ec0cf0684210d1f056f7d65dac55f16" + integrity sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg== + dependencies: + browserslist "^4.27.0" + caniuse-lite "^1.0.30001754" + fraction.js "^5.3.4" + normalize-range "^0.1.2" + picocolors "^1.1.1" + postcss-value-parser "^4.2.0" + +axios@^1.7.4: + version "1.13.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" + integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + +baseline-browser-mapping@^2.8.25: + version "2.8.30" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.30.tgz#5c7420acc2fd20f3db820a40c6521590a671d137" + integrity sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA== + +browserslist@^4.27.0: + version "4.28.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.0.tgz#9cefece0a386a17a3cd3d22ebf67b9deca1b5929" + integrity sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ== + dependencies: + baseline-browser-mapping "^2.8.25" + caniuse-lite "^1.0.30001754" + electron-to-chromium "^1.5.249" + node-releases "^2.0.27" + update-browserslist-db "^1.1.4" + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +caniuse-lite@^1.0.30001754: + version "1.0.30001756" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz#fe80104631102f88e58cad8aa203a2c3e5ec9ebd" + integrity sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A== + +chalk@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concurrently@^9.0.1: + version "9.2.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.2.1.tgz#248ea21b95754947be2dad9c3e4b60f18ca4e44f" + integrity sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng== + dependencies: + chalk "4.1.2" + rxjs "7.8.2" + shell-quote "1.8.3" + supports-color "8.1.1" + tree-kill "1.2.2" + yargs "17.7.2" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detect-libc@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +electron-to-chromium@^1.5.249: + version "1.5.259" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.259.tgz#d4393167ec14c5a046cebaec3ddf3377944ce965" + integrity sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enhanced-resolve@^5.18.3: + version "5.18.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44" + integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +esbuild@^0.25.0: + version "0.25.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5" + integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.12" + "@esbuild/android-arm" "0.25.12" + "@esbuild/android-arm64" "0.25.12" + "@esbuild/android-x64" "0.25.12" + "@esbuild/darwin-arm64" "0.25.12" + "@esbuild/darwin-x64" "0.25.12" + "@esbuild/freebsd-arm64" "0.25.12" + "@esbuild/freebsd-x64" "0.25.12" + "@esbuild/linux-arm" "0.25.12" + "@esbuild/linux-arm64" "0.25.12" + "@esbuild/linux-ia32" "0.25.12" + "@esbuild/linux-loong64" "0.25.12" + "@esbuild/linux-mips64el" "0.25.12" + "@esbuild/linux-ppc64" "0.25.12" + "@esbuild/linux-riscv64" "0.25.12" + "@esbuild/linux-s390x" "0.25.12" + "@esbuild/linux-x64" "0.25.12" + "@esbuild/netbsd-arm64" "0.25.12" + "@esbuild/netbsd-x64" "0.25.12" + "@esbuild/openbsd-arm64" "0.25.12" + "@esbuild/openbsd-x64" "0.25.12" + "@esbuild/openharmony-arm64" "0.25.12" + "@esbuild/sunos-x64" "0.25.12" + "@esbuild/win32-arm64" "0.25.12" + "@esbuild/win32-ia32" "0.25.12" + "@esbuild/win32-x64" "0.25.12" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +fdir@^6.4.4, fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + +follow-redirects@^1.15.6: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +form-data@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +fraction.js@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-5.3.4.tgz#8c0fcc6a9908262df4ed197427bdeef563e0699a" + integrity sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +jiti@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.6.1.tgz#178ef2fc9a1a594248c20627cd820187a4d78d92" + integrity sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ== + +laravel-vite-plugin@^1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/laravel-vite-plugin/-/laravel-vite-plugin-1.3.0.tgz#04a9b109281414b80f4355cd4cef94d98bd7dec4" + integrity sha512-P5qyG56YbYxM8OuYmK2OkhcKe0AksNVJUjq9LUZ5tOekU9fBn9LujYyctI4t9XoLjuMvHJXXpCoPntY1oKltuA== + dependencies: + picocolors "^1.0.0" + vite-plugin-full-reload "^1.1.0" + +lightningcss-android-arm64@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz#6966b7024d39c94994008b548b71ab360eb3a307" + integrity sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A== + +lightningcss-darwin-arm64@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz#a5fa946d27c029e48c7ff929e6e724a7de46eb2c" + integrity sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA== + +lightningcss-darwin-x64@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz#5ce87e9cd7c4f2dcc1b713f5e8ee185c88d9b7cd" + integrity sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ== + +lightningcss-freebsd-x64@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz#6ae1d5e773c97961df5cff57b851807ef33692a5" + integrity sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA== + +lightningcss-linux-arm-gnueabihf@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz#62c489610c0424151a6121fa99d77731536cdaeb" + integrity sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA== + +lightningcss-linux-arm64-gnu@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz#2a3661b56fe95a0cafae90be026fe0590d089298" + integrity sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A== + +lightningcss-linux-arm64-musl@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz#d7ddd6b26959245e026bc1ad9eb6aa983aa90e6b" + integrity sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA== + +lightningcss-linux-x64-gnu@1.30.2, lightningcss-linux-x64-gnu@^1.29.1: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz#5a89814c8e63213a5965c3d166dff83c36152b1a" + integrity sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w== + +lightningcss-linux-x64-musl@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz#808c2e91ce0bf5d0af0e867c6152e5378c049728" + integrity sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA== + +lightningcss-win32-arm64-msvc@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz#ab4a8a8a2e6a82a4531e8bbb6bf0ff161ee6625a" + integrity sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ== + +lightningcss-win32-x64-msvc@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz#f01f382c8e0a27e1c018b0bee316d210eac43b6e" + integrity sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw== + +lightningcss@1.30.2: + version "1.30.2" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.30.2.tgz#4ade295f25d140f487d37256f4cd40dc607696d0" + integrity sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ== + dependencies: + detect-libc "^2.0.3" + optionalDependencies: + lightningcss-android-arm64 "1.30.2" + lightningcss-darwin-arm64 "1.30.2" + lightningcss-darwin-x64 "1.30.2" + lightningcss-freebsd-x64 "1.30.2" + lightningcss-linux-arm-gnueabihf "1.30.2" + lightningcss-linux-arm64-gnu "1.30.2" + lightningcss-linux-arm64-musl "1.30.2" + lightningcss-linux-x64-gnu "1.30.2" + lightningcss-linux-x64-musl "1.30.2" + lightningcss-win32-arm64-msvc "1.30.2" + lightningcss-win32-x64-msvc "1.30.2" + +magic-string@^0.30.21: + version "0.30.21" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +node-releases@^2.0.27: + version "2.0.27" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" + integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.2, picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.5.3: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +rollup@^4.34.9: + version "4.53.3" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.53.3.tgz#dbc8cd8743b38710019fb8297e8d7a76e3faa406" + integrity sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.53.3" + "@rollup/rollup-android-arm64" "4.53.3" + "@rollup/rollup-darwin-arm64" "4.53.3" + "@rollup/rollup-darwin-x64" "4.53.3" + "@rollup/rollup-freebsd-arm64" "4.53.3" + "@rollup/rollup-freebsd-x64" "4.53.3" + "@rollup/rollup-linux-arm-gnueabihf" "4.53.3" + "@rollup/rollup-linux-arm-musleabihf" "4.53.3" + "@rollup/rollup-linux-arm64-gnu" "4.53.3" + "@rollup/rollup-linux-arm64-musl" "4.53.3" + "@rollup/rollup-linux-loong64-gnu" "4.53.3" + "@rollup/rollup-linux-ppc64-gnu" "4.53.3" + "@rollup/rollup-linux-riscv64-gnu" "4.53.3" + "@rollup/rollup-linux-riscv64-musl" "4.53.3" + "@rollup/rollup-linux-s390x-gnu" "4.53.3" + "@rollup/rollup-linux-x64-gnu" "4.53.3" + "@rollup/rollup-linux-x64-musl" "4.53.3" + "@rollup/rollup-openharmony-arm64" "4.53.3" + "@rollup/rollup-win32-arm64-msvc" "4.53.3" + "@rollup/rollup-win32-ia32-msvc" "4.53.3" + "@rollup/rollup-win32-x64-gnu" "4.53.3" + "@rollup/rollup-win32-x64-msvc" "4.53.3" + fsevents "~2.3.2" + +rxjs@7.8.2: + version "7.8.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + +shell-quote@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +tailwindcss@4.1.17, tailwindcss@^4.0.7: + version "4.1.17" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.1.17.tgz#e6dcb7a9c60cef7522169b5f207ffec2fd652286" + integrity sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q== + +tapable@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" + integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== + +tinyglobby@^0.2.13: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +tslib@^2.1.0, tslib@^2.4.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +update-browserslist-db@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz#7802aa2ae91477f255b86e0e46dbc787a206ad4a" + integrity sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +vite-plugin-full-reload@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vite-plugin-full-reload/-/vite-plugin-full-reload-1.2.0.tgz#bc4bfdc842abb4d24309ca802be8b955fce1c0c6" + integrity sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA== + dependencies: + picocolors "^1.0.0" + picomatch "^2.3.1" + +vite@^6.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/vite/-/vite-6.4.1.tgz#afbe14518cdd6887e240a4b0221ab6d0ce733f96" + integrity sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g== + dependencies: + esbuild "^0.25.0" + fdir "^6.4.4" + picomatch "^4.0.2" + postcss "^8.5.3" + rollup "^4.34.9" + tinyglobby "^0.2.13" + optionalDependencies: + fsevents "~2.3.3" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + 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"